From e6aecabde68b2d3d4ac53c21e34e7ffb915a88af Mon Sep 17 00:00:00 2001 From: Splinter1984 Date: Mon, 21 Mar 2022 23:20:15 +0800 Subject: [PATCH] correct merge --- .gitignore | 2 + rasms.repos | 2 +- .../printer/include/printer_base.hpp | 33 +++ .../printer/src/gz_printer_plugin.cpp | 15 ++ .../scene_monitor/CMakeLists.txt | 14 +- .../config/component_state_node.param.yaml | 11 + .../scene_monitor/include/component.hpp | 5 +- .../include/component_pose_estimation.hpp | 23 ++ .../include/component_spawner.hpp | 36 ++++ .../include/component_state_monitor.hpp | 28 ++- .../launch/scene_monitor.launch.py | 27 ++- .../scene_monitor/package.xml | 7 +- .../include/pose_estimation.hpp | 0 .../pose_estimation/src/pose_estimation.cpp | 0 .../scene_monitor/src/component.cpp | 1 - .../src/component_pose_estimation.cpp | 55 +++++ .../scene_monitor/src/component_spawner.cpp | 109 ++++++++++ .../src/component_state_monitor.cpp | 203 +++++++++++++++++- .../src/component_state_monitor_node.cpp | 2 +- .../printer/printer_component_base.hpp | 31 +++ .../src/printer_component.cpp | 36 ++++ .../scene_monitor_interfaces/CMakeLists.txt | 8 +- .../scene_monitor_interfaces/package.xml | 2 + .../srv/PrintPart.srv | 6 + .../models/output_shaft_211118/frames.json | 36 ++++ .../meshes/output_shaft_211118.dae | 51 +++++ .../models/output_shaft_211118/model.config | 11 + .../models/output_shaft_211118/model.sdf | 39 ++++ sdf_models/models/pin_13d007/frames.json | 36 ++++ .../models/pin_13d007/meshes/pin_13d007.dae | 51 +++++ sdf_models/models/pin_13d007/model.config | 11 + sdf_models/models/pin_13d007/model.sdf | 39 ++++ sdf_models/models/pin_13d008/frames.json | 36 ++++ .../models/pin_13d008/meshes/pin_13d008.dae | 51 +++++ sdf_models/models/pin_13d008/model.config | 11 + sdf_models/models/pin_13d008/model.sdf | 39 ++++ 36 files changed, 1040 insertions(+), 27 deletions(-) create mode 100644 .gitignore create mode 100644 robossembler_scene_monitor/printer/include/printer_base.hpp create mode 100644 robossembler_scene_monitor/printer/src/gz_printer_plugin.cpp create mode 100644 robossembler_scene_monitor/scene_monitor/config/component_state_node.param.yaml create mode 100644 robossembler_scene_monitor/scene_monitor/include/component_pose_estimation.hpp create mode 100644 robossembler_scene_monitor/scene_monitor/include/component_spawner.hpp rename robossembler_scene_monitor/scene_monitor/{utils => plugins}/pose_estimation/include/pose_estimation.hpp (100%) rename robossembler_scene_monitor/scene_monitor/{utils => plugins}/pose_estimation/src/pose_estimation.cpp (100%) create mode 100644 robossembler_scene_monitor/scene_monitor/src/component_pose_estimation.cpp create mode 100644 robossembler_scene_monitor/scene_monitor/src/component_spawner.cpp create mode 100644 robossembler_scene_monitor/scene_monitor_components/include/printer/printer_component_base.hpp create mode 100644 robossembler_scene_monitor/scene_monitor_components/src/printer_component.cpp create mode 100644 robossembler_scene_monitor/scene_monitor_interfaces/srv/PrintPart.srv create mode 100644 sdf_models/models/output_shaft_211118/frames.json create mode 100644 sdf_models/models/output_shaft_211118/meshes/output_shaft_211118.dae create mode 100644 sdf_models/models/output_shaft_211118/model.config create mode 100644 sdf_models/models/output_shaft_211118/model.sdf create mode 100644 sdf_models/models/pin_13d007/frames.json create mode 100644 sdf_models/models/pin_13d007/meshes/pin_13d007.dae create mode 100644 sdf_models/models/pin_13d007/model.config create mode 100644 sdf_models/models/pin_13d007/model.sdf create mode 100644 sdf_models/models/pin_13d008/frames.json create mode 100644 sdf_models/models/pin_13d008/meshes/pin_13d008.dae create mode 100644 sdf_models/models/pin_13d008/model.config create mode 100644 sdf_models/models/pin_13d008/model.sdf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8408aba --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +ref +*.blend1 diff --git a/rasms.repos b/rasms.repos index 5ea5a83..f6542c5 100644 --- a/rasms.repos +++ b/rasms.repos @@ -10,4 +10,4 @@ repositories: plansys2: type: git url: https://github.com/IntelligentRoboticsLabs/ros2_planning_system - version: foxy-devel \ No newline at end of file + version: master \ No newline at end of file diff --git a/robossembler_scene_monitor/printer/include/printer_base.hpp b/robossembler_scene_monitor/printer/include/printer_base.hpp new file mode 100644 index 0000000..82a96ee --- /dev/null +++ b/robossembler_scene_monitor/printer/include/printer_base.hpp @@ -0,0 +1,33 @@ +#pragma once + +#include +#include +// #include + +namespace printer +{ + +template +class PrinterBase: public rclcpp::Node +{ + + inline const Derived& derived() const& noexcept + { + return *static_cast(this); + } + +public: + explicit PrinterBase(const rclcpp::NodeOptions& options); + virtual ~PrinterBase() = default; + // virtual void print(const std::string& frame_name, + // const geometry_msgs::msg::Pose& placement_pose, + // const std::string& package_name); + // virtual ~Printer(); + +protected: + std::string _printer_name; + // geometry_msgs::msg::Pose _printer_pose; + +}; + +} // namespace printer \ No newline at end of file diff --git a/robossembler_scene_monitor/printer/src/gz_printer_plugin.cpp b/robossembler_scene_monitor/printer/src/gz_printer_plugin.cpp new file mode 100644 index 0000000..b8beabd --- /dev/null +++ b/robossembler_scene_monitor/printer/src/gz_printer_plugin.cpp @@ -0,0 +1,15 @@ +#include "printer_base.hpp" + +namespace printer_plugins +{ + +class GZPrinter : public printer_base::Printer +{ +public: + void init(const std::string &printer_name) override + { + this->_printer_name = printer_name; + } +}; + +}// namespace printer_plugins \ No newline at end of file diff --git a/robossembler_scene_monitor/scene_monitor/CMakeLists.txt b/robossembler_scene_monitor/scene_monitor/CMakeLists.txt index 2ae81e6..ce4f3d4 100644 --- a/robossembler_scene_monitor/scene_monitor/CMakeLists.txt +++ b/robossembler_scene_monitor/scene_monitor/CMakeLists.txt @@ -13,12 +13,21 @@ endif() find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) find_package(ament_index_cpp REQUIRED) -# find_package(tf2_ros REQUIRED) +# find_package(visualization_msgs REQUIRED) +find_package(gazebo_msgs REQUIRED) find_package(geometry_msgs REQUIRED) +find_package(tf2 REQUIRED) +find_package(std_msgs REQUIRED) +find_package(tf2_ros REQUIRED) find_package(scene_monitor_interfaces REQUIRED) find_package(nlohmann_json REQUIRED) set(dependencies + # visualization_msgs + std_msgs + tf2 + tf2_ros + gazebo_msgs rclcpp geometry_msgs ament_index_cpp @@ -29,6 +38,8 @@ set(dependencies include_directories(include) add_library(component_state_lib SHARED + src/component_pose_estimation.cpp + src/component_spawner.cpp src/component.cpp src/component_state_monitor.cpp ) @@ -41,6 +52,7 @@ ament_target_dependencies(component_state_monitor_node ${dependencies}) install(DIRECTORY launch + config DESTINATION share/${PROJECT_NAME} ) diff --git a/robossembler_scene_monitor/scene_monitor/config/component_state_node.param.yaml b/robossembler_scene_monitor/scene_monitor/config/component_state_node.param.yaml new file mode 100644 index 0000000..7e7853d --- /dev/null +++ b/robossembler_scene_monitor/scene_monitor/config/component_state_node.param.yaml @@ -0,0 +1,11 @@ +component_state_monitor_node: + ros__parameters: + models-package: "sdf_models" + printers_names: ["printerA"] + printers: + printerA: + position: [0.5, 0.5, 0.0] + orientation: [0.0, 0.0, 0.0, 0.0] + # printerB: + # position: [2.0, 2.0, 2.0] + # orientation: [2.0, 2.0, 2.0, 2.0] \ No newline at end of file diff --git a/robossembler_scene_monitor/scene_monitor/include/component.hpp b/robossembler_scene_monitor/scene_monitor/include/component.hpp index 4fd2d9f..b2800a5 100644 --- a/robossembler_scene_monitor/scene_monitor/include/component.hpp +++ b/robossembler_scene_monitor/scene_monitor/include/component.hpp @@ -1,7 +1,9 @@ #pragma once #include +#include #include + #include "scene_monitor_interfaces/msg/grasp_pose.hpp" #include "nlohmann_json/json.hpp" @@ -19,6 +21,7 @@ Description: Posted: - model is posted with another */ + enum ComponentState { Initialized, @@ -45,7 +48,6 @@ public: void updateState(const ComponentState &state); - private: std::string _frame_name; @@ -53,6 +55,7 @@ private: geometry_msgs::msg::Pose _placement; std::map _grasp_poses; + geometry_msgs::msg::Pose _current_pose; }; } \ No newline at end of file diff --git a/robossembler_scene_monitor/scene_monitor/include/component_pose_estimation.hpp b/robossembler_scene_monitor/scene_monitor/include/component_pose_estimation.hpp new file mode 100644 index 0000000..eaa79a7 --- /dev/null +++ b/robossembler_scene_monitor/scene_monitor/include/component_pose_estimation.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include +#include + +namespace component_state_monitor +{ + +using GetEntityStateSrv = gazebo_msgs::srv::GetEntityState; + +class ComponentPoseEstimation: public rclcpp::Node +{ + +public: + ComponentPoseEstimation(); + geometry_msgs::msg::Pose framePose(const std::string& frame_id); + +private: + rclcpp::Client::SharedPtr _client; + geometry_msgs::msg::Pose _pose; +}; + +}// end namespace component_state_monitor \ No newline at end of file diff --git a/robossembler_scene_monitor/scene_monitor/include/component_spawner.hpp b/robossembler_scene_monitor/scene_monitor/include/component_spawner.hpp new file mode 100644 index 0000000..d590717 --- /dev/null +++ b/robossembler_scene_monitor/scene_monitor/include/component_spawner.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include +#include + +#include +#include + +#include "component.hpp" + +namespace component_state_monitor +{ + +using SpawnEntitySrv = gazebo_msgs::srv::SpawnEntity; + +class ComponentSpawner: public rclcpp::Node +{ + +public: + ComponentSpawner(); + ~ComponentSpawner(); + + bool spawnComponent(const component_state_monitor::Component& component, + const geometry_msgs::msg::Pose& printer_pose, + const std::string& printer_name); + + void handleResponse(SpawnEntitySrv::Response::SharedPtr response); + +private: + rclcpp::Client::SharedPtr _spawn_component_client; + bool _result; + +}; + + +} // namespace component_state_monitor \ No newline at end of file diff --git a/robossembler_scene_monitor/scene_monitor/include/component_state_monitor.hpp b/robossembler_scene_monitor/scene_monitor/include/component_state_monitor.hpp index 9858517..3b1cf2c 100644 --- a/robossembler_scene_monitor/scene_monitor/include/component_state_monitor.hpp +++ b/robossembler_scene_monitor/scene_monitor/include/component_state_monitor.hpp @@ -4,18 +4,28 @@ #include #include #include +#include +#include +#include +#include +#include #include "scene_monitor_interfaces/srv/get_part.hpp" #include "scene_monitor_interfaces/srv/get_grasp_pose.hpp" #include "scene_monitor_interfaces/srv/get_grasp_poses.hpp" +#include "scene_monitor_interfaces/srv/print_part.hpp" #include "component.hpp" +#include "component_spawner.hpp" +#include "component_pose_estimation.hpp" namespace component_state_monitor { -using GetPartSrv = scene_monitor_interfaces::srv::GetPart; + +using GetPartSrv = scene_monitor_interfaces::srv::GetPart; using GetGraspPoseSrv = scene_monitor_interfaces::srv::GetGraspPose; using GetGraspPosesSrv = scene_monitor_interfaces::srv::GetGraspPoses; +using PrintPartSrv = scene_monitor_interfaces::srv::PrintPart; class ComponentStateMonitor: public rclcpp::Node { @@ -35,13 +45,29 @@ private: std::shared_ptr response); void getGraspPose(const std::shared_ptr request, std::shared_ptr response); + void printComponent(const std::shared_ptr request, + std::shared_ptr response); + + void makeTransform(const Component& component, const std::string& parent); + void makeTransform(const std::string& frame_name, const geometry_msgs::msg::Pose& frame_pose, + const std::string& parent); + void updateVizMarker(const Component& component); + void updateComponents(); std::map _loaded_components; rclcpp::Service::SharedPtr _get_part_service; rclcpp::Service::SharedPtr _get_grasp_pose_service; rclcpp::Service::SharedPtr _get_grasp_poses_service; + rclcpp::Service::SharedPtr _print_part_service; std::string _models_package; + std::map _loaded_printers; + ComponentSpawner _component_spawner_node; + ComponentPoseEstimation _pose_estimation_node; + + std::shared_ptr _tf2_broadcaster; + std::shared_ptr _transform_listener; + std::unique_ptr _tf2_buffer; rclcpp::TimerBase::SharedPtr _timer; }; diff --git a/robossembler_scene_monitor/scene_monitor/launch/scene_monitor.launch.py b/robossembler_scene_monitor/scene_monitor/launch/scene_monitor.launch.py index 8e69521..f10f4a0 100644 --- a/robossembler_scene_monitor/scene_monitor/launch/scene_monitor.launch.py +++ b/robossembler_scene_monitor/scene_monitor/launch/scene_monitor.launch.py @@ -1,17 +1,26 @@ +import os +from ament_index_python.packages import get_package_share_directory from launch import LaunchDescription from launch_ros.actions import Node def generate_launch_description(): ld = LaunchDescription() + + component_state_params = os.path.join( + get_package_share_directory('robossembler_scene_monitor'), + 'config', 'component_state_node.param.yaml') + component_state_monitor_node = Node( - package="robossembler_scene_monitor", - executable="component_state_monitor_node", - name="component_state_monitor_node", - output="screen", - emulate_tty=True, - parameters=[ - {"models-package": "sdf_models"} - ] - ) + package="robossembler_scene_monitor", + executable="component_state_monitor_node", + name="component_state_monitor_node", + output="screen", + emulate_tty=True, + parameters=[ + component_state_params + ] + ) + ld.add_action(component_state_monitor_node) + return ld \ No newline at end of file diff --git a/robossembler_scene_monitor/scene_monitor/package.xml b/robossembler_scene_monitor/scene_monitor/package.xml index 66e74a0..d3e02cc 100644 --- a/robossembler_scene_monitor/scene_monitor/package.xml +++ b/robossembler_scene_monitor/scene_monitor/package.xml @@ -10,12 +10,15 @@ ament_cmake rclcpp - - + tf2 + tf2_ros + std_msgs + geometry_msgs scene_monitor_interfaces nlohmann_json + printer_plugins ament_lint_auto ament_lint_common diff --git a/robossembler_scene_monitor/scene_monitor/utils/pose_estimation/include/pose_estimation.hpp b/robossembler_scene_monitor/scene_monitor/plugins/pose_estimation/include/pose_estimation.hpp similarity index 100% rename from robossembler_scene_monitor/scene_monitor/utils/pose_estimation/include/pose_estimation.hpp rename to robossembler_scene_monitor/scene_monitor/plugins/pose_estimation/include/pose_estimation.hpp diff --git a/robossembler_scene_monitor/scene_monitor/utils/pose_estimation/src/pose_estimation.cpp b/robossembler_scene_monitor/scene_monitor/plugins/pose_estimation/src/pose_estimation.cpp similarity index 100% rename from robossembler_scene_monitor/scene_monitor/utils/pose_estimation/src/pose_estimation.cpp rename to robossembler_scene_monitor/scene_monitor/plugins/pose_estimation/src/pose_estimation.cpp diff --git a/robossembler_scene_monitor/scene_monitor/src/component.cpp b/robossembler_scene_monitor/scene_monitor/src/component.cpp index 7cc87ea..d6ba169 100644 --- a/robossembler_scene_monitor/scene_monitor/src/component.cpp +++ b/robossembler_scene_monitor/scene_monitor/src/component.cpp @@ -95,7 +95,6 @@ namespace component_state_monitor return; } - _frame_name = input.at("label"); _placement = construct_pose(input.at("placement")); auto grasp_poses = input.at("features").at("grasp-poses"); diff --git a/robossembler_scene_monitor/scene_monitor/src/component_pose_estimation.cpp b/robossembler_scene_monitor/scene_monitor/src/component_pose_estimation.cpp new file mode 100644 index 0000000..9aec13e --- /dev/null +++ b/robossembler_scene_monitor/scene_monitor/src/component_pose_estimation.cpp @@ -0,0 +1,55 @@ +#include "component_pose_estimation.hpp" + +namespace component_state_monitor +{ + +using namespace std::chrono_literals; + +ComponentPoseEstimation::ComponentPoseEstimation(): Node("component_pose_estimation_node") +{ + _client = create_client("/get_entity_state"); + while (!_client->wait_for_service(1s)) + { + if (!rclcpp::ok()) + { + RCLCPP_WARN(this->get_logger(), "Interruped while waiting for the server."); + rclcpp::shutdown(); + return; + } + + RCLCPP_WARN(this->get_logger(), "Server not available, waiting again..."); + } +} + +geometry_msgs::msg::Pose ComponentPoseEstimation::framePose(const std::string& frame_id) +{ + auto request = std::make_shared(); + request->name = frame_id; + RCLCPP_INFO(this->get_logger(), "Provided service call with frame name [%s]", request->name.c_str()); + + auto future = _client->async_send_request(request); + + if (rclcpp::spin_until_future_complete(this->get_node_base_interface(), future) != rclcpp::executor::FutureReturnCode::SUCCESS) + { + RCLCPP_ERROR(this->get_logger(), "Could not build future"); + return geometry_msgs::msg::Pose(); + } + + auto result = future.get(); + if (!result->success) + { + RCLCPP_WARN(this->get_logger(), "Get bad response from service call"); + return geometry_msgs::msg::Pose(); + } + + _pose = result->state.pose; + + RCLCPP_INFO(this->get_logger(), "Get success response status"); + RCLCPP_INFO(this->get_logger(), "update frame (%s) with \npose.x: %f pose.y: %f pose.z: \n%f opientation.x: %f orientation.y: %f orientation.z: %f orientation.w: %f", + frame_id.c_str(), _pose.position.x, _pose.position.y, _pose.position.z, + _pose.orientation.x, _pose.orientation.y, _pose.orientation.z, _pose.orientation.w); + + return _pose; +} + +}// end namespace component_state_monitor \ No newline at end of file diff --git a/robossembler_scene_monitor/scene_monitor/src/component_spawner.cpp b/robossembler_scene_monitor/scene_monitor/src/component_spawner.cpp new file mode 100644 index 0000000..eedc471 --- /dev/null +++ b/robossembler_scene_monitor/scene_monitor/src/component_spawner.cpp @@ -0,0 +1,109 @@ +#include "component_spawner.hpp" + +#include +#include +#include + +#include + +namespace component_state_monitor +{ + +using namespace std::chrono_literals; + +ComponentSpawner::ComponentSpawner(): Node("component_spawner_node") +{ + _spawn_component_client = create_client("/spawn_entity"); + + while (!_spawn_component_client->wait_for_service(1s)) + { + if (!rclcpp::ok()) + { + RCLCPP_WARN(this->get_logger(), "Interruped while waiting for the server."); + rclcpp::shutdown(); + return; + } + + RCLCPP_WARN(this->get_logger(), "Server not available, waiting again..."); + } +} + +ComponentSpawner::~ComponentSpawner() {} + +bool ComponentSpawner::spawnComponent(const component_state_monitor::Component& component, + const geometry_msgs::msg::Pose& printer_pose, + const std::string& package_name) +{ + auto request = std::make_shared(); + request->name = component.getFrameName(); + RCLCPP_INFO(this->get_logger(), "Provided service call with frame name (%s)", request->name.c_str()); + + std::string package_share_directory = ament_index_cpp::get_package_share_directory(package_name); + std::filesystem::path sdf_path = package_share_directory + "/models/" + component.getFrameName() + "/model.sdf"; + + RCLCPP_INFO(this->get_logger(), "Start read frame (%s) frame_path (%s)", component.getFrameName().c_str(), sdf_path.c_str()); + + std::ifstream sdf_file(sdf_path); + std::stringstream buffer; + + if (sdf_file.is_open()) { + buffer << sdf_file.rdbuf(); + sdf_file.close(); + } else { + + RCLCPP_WARN(this->get_logger(), "Failed while try to open file (%s)", sdf_path.c_str()); + _result = false; + return _result; + } + + std::string xml = buffer.str(); + + geometry_msgs::msg::Pose spawn_pose; + auto placement_pose = component.getPlacementPose(); + + spawn_pose.position.x = printer_pose.position.x + placement_pose.position.x; + spawn_pose.position.y = printer_pose.position.y + placement_pose.position.y; + spawn_pose.position.z = printer_pose.position.z + placement_pose.position.z; + + spawn_pose.orientation.x = printer_pose.orientation.x + placement_pose.orientation.x; + spawn_pose.orientation.y = printer_pose.orientation.y + placement_pose.orientation.y; + spawn_pose.orientation.z = printer_pose.orientation.z + placement_pose.orientation.z; + spawn_pose.orientation.w = printer_pose.orientation.w + placement_pose.orientation.w; + + request->initial_pose = spawn_pose; + request->xml = xml; + RCLCPP_INFO(this->get_logger(), "Connecting to '/spawn_entity' service..."); + + auto future = _spawn_component_client->async_send_request(request); + if (rclcpp::spin_until_future_complete(this->get_node_base_interface(), future) != rclcpp::executor::FutureReturnCode::SUCCESS) + { + RCLCPP_ERROR(this->get_logger(), "Could not build future"); + return false; + } + + auto result = future.get(); + if (!result->success) + { + RCLCPP_WARN(this->get_logger(), "Get bad response from service call"); + return false; + } + + return true; +} + +void ComponentSpawner::handleResponse(SpawnEntitySrv::Response::SharedPtr response) +{ + RCLCPP_INFO(this->get_logger(), "Handle Response call"); + + if (!response->success) + { + RCLCPP_WARN(this->get_logger(), "Get failure response from service with msg: `%s`", response->status_message.c_str()); + _result = false; + return; + } + + RCLCPP_INFO(this->get_logger(), "Get success response status with msg: `%s`", response->status_message.c_str()); + _result= true; +} + +} \ No newline at end of file diff --git a/robossembler_scene_monitor/scene_monitor/src/component_state_monitor.cpp b/robossembler_scene_monitor/scene_monitor/src/component_state_monitor.cpp index 68f7ca7..e895a27 100644 --- a/robossembler_scene_monitor/scene_monitor/src/component_state_monitor.cpp +++ b/robossembler_scene_monitor/scene_monitor/src/component_state_monitor.cpp @@ -13,6 +13,7 @@ namespace component_state_monitor ComponentStateMonitor::ComponentStateMonitor(): Node("component_state_monitor_node") { this->declare_parameter("models-package", "sdf_models"); + this->declare_parameter>("printers_names", std::vector{}); RCLCPP_INFO(this->get_logger(), "Initialize [get_part] service"); _get_part_service = this->create_service("scene_monitor/get_part", @@ -29,15 +30,124 @@ namespace component_state_monitor std::bind(&ComponentStateMonitor::getGraspPose, this, std::placeholders::_1, std::placeholders::_2)); + RCLCPP_INFO(this->get_logger(), "Initialize [print_part] service"); + _print_part_service = this->create_service("scene_monitor/print_part", + std::bind(&ComponentStateMonitor::printComponent, this, + std::placeholders::_1, std::placeholders::_2)); + + _tf2_broadcaster = std::make_shared(this); + + _tf2_buffer = std::make_unique(this->get_clock()); + _transform_listener = std::make_shared(*_tf2_buffer); + initializeParameters(); initializeComponents(_models_package); + // _viz_marker_pub = this->create_publisher("scene_monitor_viz_markers", 10); + + _timer = this->create_wall_timer( + 20ms, std::bind(&ComponentStateMonitor::updateComponents, this) + ); + } + + void ComponentStateMonitor::updateComponents() + { + for (const auto& component: _loaded_components) + { + if (component.second.getCurrentState() == ComponentState::Printed) + { + makeTransform(component.second, "world"); + auto grasp_poses = component.second.getGraspPoses(); + for (const auto& grasp_pose: grasp_poses) + { + makeTransform(grasp_pose.label, grasp_pose.placement_pose, component.first); + } + } + } + } + + void ComponentStateMonitor::makeTransform(const Component& component, const std::string& parent) + { + rclcpp::Time now = this->get_clock()->now(); + geometry_msgs::msg::TransformStamped t; + + t.header.stamp = now; + t.header.frame_id = parent; + t.child_frame_id = component.getFrameName(); + + auto fp = _pose_estimation_node.framePose(component.getFrameName()); + + t.transform.translation.x = fp.position.x; + t.transform.translation.y = fp.position.y; + t.transform.translation.z = fp.position.z; + + t.transform.rotation.x = fp.orientation.x; + t.transform.rotation.y = fp.orientation.y; + t.transform.rotation.z = fp.orientation.z; + t.transform.rotation.w = fp.orientation.w; + + _tf2_broadcaster->sendTransform(t); + } + + void ComponentStateMonitor::makeTransform(const std::string& frame_name, const geometry_msgs::msg::Pose& frame_pose, + const std::string& parent) + { + rclcpp::Time now = this->get_clock()->now(); + geometry_msgs::msg::TransformStamped t; + + t.header.stamp = now; + t.header.frame_id = parent; + t.child_frame_id = frame_name; + + t.transform.translation.x = frame_pose.position.x; + t.transform.translation.y = frame_pose.position.y; + t.transform.translation.z = frame_pose.position.z; + + t.transform.rotation.x = frame_pose.orientation.x; + t.transform.rotation.y = frame_pose.orientation.y; + t.transform.rotation.z = frame_pose.orientation.z; + t.transform.rotation.w = frame_pose.orientation.w; + + _tf2_broadcaster->sendTransform(t); } void ComponentStateMonitor::initializeParameters() { this->get_parameter("models-package", _models_package); RCLCPP_INFO(this->get_logger(), "Initialize with models-package (%s)", _models_package.c_str()); + + std::vector printers; + this->get_parameter("printers_names", printers); + + for (const auto& printer: printers) + { + std::vector position; + std::vector orientation; + + this->declare_parameter>("printers." + printer + ".position", std::vector{0.0, 0.0, 0.0}); + this->declare_parameter>("printers." + printer + ".orientation", std::vector{0.0, 0.0, 0.0, 0.0}); + + this->get_parameter("printers." + printer + ".position", position); + RCLCPP_INFO(this->get_logger(), "Initialize with printer (%s) position (%f, %f, %f)", + printer.c_str(), position.at(0), position.at(1), position.at(2)); + + this->get_parameter("printers." + printer + ".orientation", orientation); + RCLCPP_INFO(this->get_logger(), "Initialize with printer (%s) orientation (%f, %f, %f, %f)", + printer.c_str(), orientation.at(0), orientation.at(1), orientation.at(2), orientation.at(3)); + + geometry_msgs::msg::Pose tmp_pose; + tmp_pose.position.x = position.at(0); + tmp_pose.position.y = position.at(1); + tmp_pose.position.z = position.at(2); + + tmp_pose.orientation.x = orientation.at(0); + tmp_pose.orientation.y = orientation.at(1); + tmp_pose.orientation.y = orientation.at(2); + tmp_pose.orientation.z = orientation.at(3); + + _loaded_printers.insert({printer, tmp_pose}); + // makeTransform(printer, tmp_pose, "world"); + } } ComponentStateMonitor::~ComponentStateMonitor() {} @@ -70,6 +180,7 @@ namespace component_state_monitor std::shared_ptr response) { RCLCPP_INFO(this->get_logger(), "[get_grasp_poses] Incoming request"); + if (_loaded_components.find(request->frame_id) != _loaded_components.end()) { auto component = _loaded_components.at(request->frame_id); @@ -90,22 +201,100 @@ namespace component_state_monitor std::shared_ptr response) { RCLCPP_INFO(this->get_logger(), "[get_grasp_pose] Incoming request"); + if (_loaded_components.find(request->frame_id) != _loaded_components.end()) { auto component = _loaded_components.at(request->frame_id); - response->grasp_pose = component.getGraspPose(request->grasp_pose_name); - response->success = true; - response->message = "succesfully received a response from service [get_grasp_pose]"; + + if (component.getCurrentState() == ComponentState::Printed) + { + // std_msgs::msg::Header header; + // header.frame_id = request->frame_id; + + // geometry_msgs::msg::PoseStamped target_pose; + // target_pose.header = header; + // target_pose.pose = component.getGraspPose(header.frame_id).placement_pose; + + // std::string world = "world"; + // geometry_msgs::msg::PoseStamped target_pose_req = + // _tf2_buffer->transform(target_pose, world); + geometry_msgs::msg::TransformStamped transformStamped = _tf2_buffer->lookupTransform( + "world", request->grasp_pose_name, tf2::TimePointZero + ); + + auto grasp_pose = component.getGraspPose(request->grasp_pose_name); + + grasp_pose.placement_pose.position.x = transformStamped.transform.translation.x; + grasp_pose.placement_pose.position.y = transformStamped.transform.translation.y; + grasp_pose.placement_pose.position.z = transformStamped.transform.translation.z; + + grasp_pose.placement_pose.orientation.x = transformStamped.transform.rotation.x; + grasp_pose.placement_pose.orientation.y = transformStamped.transform.rotation.y; + grasp_pose.placement_pose.orientation.z = transformStamped.transform.rotation.z; + grasp_pose.placement_pose.orientation.w = transformStamped.transform.rotation.w; + + response->grasp_pose = grasp_pose; + response->success = true; + response->message = "succesfully received a response from service [get_grasp_pose]"; + } else { + + RCLCPP_WARN(this->get_logger(), "[get_grasp_pose] Frame with name (%s) not printed", request->frame_id.c_str()); + response->success = false; + response->message = "Frame not printed"; + } } else { RCLCPP_WARN(this->get_logger(), "[get_grasp_pose] Frame with name (%s) not loaded in component_state_monitor", request->frame_id.c_str()); response->success = false; - response->message = "could not found frame (%s) in component_state_monitor"; + response->message = "could not found frame in component_state_monitor"; } RCLCPP_INFO(this->get_logger(), "[get_grasp_pose] Sending back response"); } + void ComponentStateMonitor::printComponent(const std::shared_ptr request, + std::shared_ptr response) + { + RCLCPP_INFO(this->get_logger(), "[print_part] Incoming request"); + + if (_loaded_components.find(request->frame_id) != _loaded_components.end()) + { + auto component = _loaded_components.at(request->frame_id); + if (_loaded_printers.find(request->printer_id) != _loaded_printers.end()) + { + auto printer_pose = _loaded_printers.at(request->printer_id); + + if (_component_spawner_node.spawnComponent(component, printer_pose, _models_package)) + { + RCLCPP_INFO(this->get_logger(), "[print_part] Succesfully spawn frame (%s) at printer (%s)", + request->frame_id.c_str(), request->printer_id.c_str()); + response->success = true; + response->message = "succesfully received a response from service [print_part]"; + + _loaded_components.at(request->frame_id).updateState(ComponentState::Printed); + + } else { + RCLCPP_WARN(this->get_logger(), "[print_part] Failed to spawn frame (%s) at printer (%s)", + request->frame_id.c_str(), request->printer_id.c_str()); + response->success = false; + response->message = "printer not available"; + } + } else { + RCLCPP_WARN(this->get_logger(), "[print_part] Failed to spawn frame (%s) at printer (%s)", + request->frame_id.c_str(), request->printer_id.c_str()); + response->success = false; + response->message = "could not found printer in component_state_monitor"; + } + } else { + RCLCPP_WARN(this->get_logger(), "[print_part] Failed to spawn frame (%s) at printer (%s)", + request->frame_id.c_str(), request->printer_id.c_str()); + response->success = false; + response->message = "could not found frame in component_state_monitor"; + } + + RCLCPP_INFO(this->get_logger(), "[print_part] Sending back response"); + } + void ComponentStateMonitor::initializeComponents(const std::string& package_name) { RCLCPP_INFO(this->get_logger(), "Start read package (%s)", package_name.c_str()); @@ -129,10 +318,9 @@ namespace component_state_monitor std::string frame_directory_name = entry.path().string(); std::string frame_name = frame_directory_name.substr(frame_directory_name.find_last_of("/")+1, frame_directory_name.size()-1); - RCLCPP_INFO(this->get_logger(), "Start read frame (%s)", frame_name.c_str()); std::filesystem::path json_path = entry.path().string() + "/frames.json"; - Component component; + Component component(frame_name); if (!std::filesystem::exists(json_path)) { @@ -150,9 +338,10 @@ namespace component_state_monitor component.initializeFromJson(input); } + component.updateState(ComponentState::Initialized); _loaded_components.insert({component.getFrameName(), component}); RCLCPP_INFO(this->get_logger(), "Successfully initialize component (%s)", component.getFrameName().c_str()); } } -} \ No newline at end of file +} // end namespace component_state_monitor \ No newline at end of file diff --git a/robossembler_scene_monitor/scene_monitor/src/component_state_monitor_node.cpp b/robossembler_scene_monitor/scene_monitor/src/component_state_monitor_node.cpp index f3a4764..fe91579 100644 --- a/robossembler_scene_monitor/scene_monitor/src/component_state_monitor_node.cpp +++ b/robossembler_scene_monitor/scene_monitor/src/component_state_monitor_node.cpp @@ -6,7 +6,7 @@ int main(int argc, char **argv) { rclcpp::init(argc, argv); - rclcpp::executors::SingleThreadedExecutor exec; + rclcpp::executors::MultiThreadedExecutor exec; auto component_state_monitor_node = std::make_shared(); diff --git a/robossembler_scene_monitor/scene_monitor_components/include/printer/printer_component_base.hpp b/robossembler_scene_monitor/scene_monitor_components/include/printer/printer_component_base.hpp new file mode 100644 index 0000000..4a42672 --- /dev/null +++ b/robossembler_scene_monitor/scene_monitor_components/include/printer/printer_component_base.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include +#include + +#include + +namespace printer +{ + +using SpawnEntitySrv = gazebo_msgs::srv::SpawnEntity; +class PrinterBase: public rclcpp::Node +{ + +public: + explicit PrinterBase(const rclcpp::NodeOptions& options); + // virtual ~PrinterBase() = default; + + void PrintComponent(const std::string& printer_id, + const std::string& component_id); + + void handleResponse(SpawnEntitySrv::Response::SharedPtr& response); + +protected: + + rclcpp::Client::SharedPtr _client; + rclcpp::TimerBase::SharedPtr _timer; + +}; + +}// end namespace printer \ No newline at end of file diff --git a/robossembler_scene_monitor/scene_monitor_components/src/printer_component.cpp b/robossembler_scene_monitor/scene_monitor_components/src/printer_component.cpp new file mode 100644 index 0000000..6c05ba8 --- /dev/null +++ b/robossembler_scene_monitor/scene_monitor_components/src/printer_component.cpp @@ -0,0 +1,36 @@ +#include "printer/printer_component_base.hpp" + +namespace printer +{ + +using namespace std::chrono_literals; +PrinterBase::PrinterBase(const rclcpp::NodeOptions& options): Node("printer_component", options) +{ + _client = create_client("printer_client"); + while (!_client->wait_for_service(1s)) + { + if (!rclcpp::ok()) + { + RCLCPP_WARN(this->get_logger(), "Interruped while waiting for the server."); + rclcpp::shutdown(); + return; + } + + RCLCPP_WARN(this->get_logger(), "Server not available, waiting again..."); + } +} + +void PrinterBase::PrintComponent(const std::string& printer_id, + const std::string& component_id) +{ + +} + +} // end namespace printer + +#include "rclcpp_components/register_node_macro.hpp" + +// Register the component with class_loader. +// This acts as a sort of entry point, allowing the component to be discoverable when its library +// is being loaded into a running process. +RCLCPP_COMPONENTS_REGISTER_NODE(printer::PrinterBase) \ No newline at end of file diff --git a/robossembler_scene_monitor/scene_monitor_interfaces/CMakeLists.txt b/robossembler_scene_monitor/scene_monitor_interfaces/CMakeLists.txt index 7160727..a2d72bc 100644 --- a/robossembler_scene_monitor/scene_monitor_interfaces/CMakeLists.txt +++ b/robossembler_scene_monitor/scene_monitor_interfaces/CMakeLists.txt @@ -6,9 +6,9 @@ if(NOT CMAKE_C_STANDARD) set(CMAKE_C_STANDARD 99) endif() -# Default to C++14 +# Default to C++17 if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD 14) endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") @@ -19,12 +19,14 @@ endif() find_package(ament_cmake REQUIRED) find_package(rosidl_default_generators REQUIRED) find_package(geometry_msgs REQUIRED) +find_package(std_msgs REQUIRED) set(msg_files "msg/GraspPose.msg" ) set(srv_files + "srv/PrintPart.srv" "srv/GetGraspPose.srv" "srv/GetGraspPoses.srv" "srv/GetPart.srv" @@ -33,7 +35,7 @@ set(srv_files rosidl_generate_interfaces(${PROJECT_NAME} ${msg_files} ${srv_files} - DEPENDENCIES geometry_msgs + DEPENDENCIES geometry_msgs std_msgs ) if(BUILD_TESTING) diff --git a/robossembler_scene_monitor/scene_monitor_interfaces/package.xml b/robossembler_scene_monitor/scene_monitor_interfaces/package.xml index ac2a21e..49f90e8 100644 --- a/robossembler_scene_monitor/scene_monitor_interfaces/package.xml +++ b/robossembler_scene_monitor/scene_monitor_interfaces/package.xml @@ -11,6 +11,8 @@ rosidl_default_generators rosidl_default_runtime + geometry_msgs + std_msgs ament_lint_auto ament_lint_common diff --git a/robossembler_scene_monitor/scene_monitor_interfaces/srv/PrintPart.srv b/robossembler_scene_monitor/scene_monitor_interfaces/srv/PrintPart.srv new file mode 100644 index 0000000..aaa2397 --- /dev/null +++ b/robossembler_scene_monitor/scene_monitor_interfaces/srv/PrintPart.srv @@ -0,0 +1,6 @@ +string frame_id +string printer_id +--- +#result definition +bool success # indicate successful run of triggered service +string message # informational, e.g. for error messages \ No newline at end of file diff --git a/sdf_models/models/output_shaft_211118/frames.json b/sdf_models/models/output_shaft_211118/frames.json new file mode 100644 index 0000000..692d1a2 --- /dev/null +++ b/sdf_models/models/output_shaft_211118/frames.json @@ -0,0 +1,36 @@ +{ + "features": { + "grasp-poses": { + "Gripper_for_Part__Feature057": { + "placement": { + "position": { + "x": -7.2e-18, + "y": -0.0405, + "z": 3.9e-18 + }, + "orientation": { + "x": -0.1745956924081881, + "y": 0.1745956924081881, + "z": -0.969036990204714, + "w": 1.6022436365319073 + } + }, + "distance": 42.78237402995835 + } + } + }, + "label": "output_shaft_211118", + "placement": { + "position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "orientation": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "w": 0.0 + } + } +} \ No newline at end of file diff --git a/sdf_models/models/output_shaft_211118/meshes/output_shaft_211118.dae b/sdf_models/models/output_shaft_211118/meshes/output_shaft_211118.dae new file mode 100644 index 0000000..e3ca157 --- /dev/null +++ b/sdf_models/models/output_shaft_211118/meshes/output_shaft_211118.dae @@ -0,0 +1,51 @@ + + + 2022-03-09T21:43:30.158515 + 2022-03-09T21:43:30.158515 + Z_UP + + + + + + 0.028 1e-18 -0.009 0.026 1e-18 -0.011 0.028 -0.002153841 -0.008738476 0.026 -0.002632472 -0.01068036 0.028 -0.004182509 -0.007969104 0.026 -0.005111955 -0.009740016 0.028 -0.005968104 -0.006736597 0.026 -0.007294349 -0.008233618 0.028 -0.007406855 -0.005112583 0.026 -0.009052823 -0.006248712 0.028 -0.008415146 -0.003191444 0.026 -0.01028518 -0.003900654 0.028 -0.00893438 -0.00108483 0.026 -0.0109198 -0.001325903 0.028 -0.00893438 0.00108483 0.026 -0.0109198 0.001325903 0.028 -0.008415146 0.003191444 0.026 -0.01028518 0.003900654 0.028 -0.007406855 0.005112583 0.026 -0.009052823 0.006248712 0.028 -0.005968104 0.006736597 0.026 -0.007294349 0.008233618 0.028 -0.004182509 0.007969104 0.026 -0.005111955 0.009740016 0.026 -0.002632472 0.01068036 0.028 -0.002153841 0.008738476 0.028 0 0.009 0.026 0 0.011 0 1e-18 -0.011 0 -0.002632472 -0.01068036 0 -0.005111955 -0.009740016 0 -0.007294349 -0.008233618 0 -0.009052823 -0.006248712 0 -0.01028518 -0.003900654 0 -0.0109198 -0.001325903 0 -0.0109198 0.001325903 0 -0.01028518 0.003900654 0 -0.009052823 0.006248712 0 -0.007294349 0.008233618 0 -0.005111955 0.009740016 0 -0.002632472 0.01068036 0 0 0.011 0.03 0.001520651 0.01442004 0.0295 0 0.015 0.03 0 0.0145 0.0295 0.003589735 0.01456413 0.03 0.003024531 0.01418105 0.03 0.004495054 0.01378566 0.0295 0.006970848 0.01328184 0.03 0.006360889 0.01303031 0.03 0.008104139 0.01202385 0.0295 0.00994684 0.01122766 0.03 0.009691207 0.01078566 0.03 0.0117278 0.008526943 0.0295 0.01234476 0.008520971 0.03 0.01324845 0.005893099 0.0295 0.01402524 0.005319073 0.03 0.01418626 0.003 0.0295 0.01489063 0.00180805 0.03 0.01446503 0.001006465 0.0295 0.01489063 -0.00180805 0.03 0.01446503 -0.001006465 0.03 0.01418626 -0.003 0.0295 0.01402524 -0.005319073 0.03 0.01324845 -0.005893099 0.0295 0.01234476 -0.008520971 0.03 0.0117278 -0.008526943 0.0295 0.00994684 -0.01122766 0.03 0.009691207 -0.01078566 0.03 0.008104139 -0.01202385 0.0295 0.006970848 -0.01328184 0.03 0.006360889 -0.01303031 0.03 0.004495054 -0.01378566 0.0295 0.003589735 -0.01456413 0.03 0.003024531 -0.01418105 0.03 0.001520651 -0.01442004 0.0295 2e-18 -0.015 0.03 2e-18 -0.0145 0.04580385 -0.003726479 -0.01245445 0.03 -0.003726479 -0.01245445 0.03 -0.002503919 -0.01275658 0.03 -0.001257862 -0.012939 0.051 -0.004446262 -0.012216 0.051 -0.0065 -0.01125833 0.051 -0.002257426 -0.0128025 0.051 0 -0.013 0.03 0 -0.013 0.006 0.003560335 -0.01559885 0.005 0 -0.016 0.005 0.003560335 -0.01559885 0.006 0 -0.016 0.006 0.00694214 -0.0144155 0.005 0.00694214 -0.0144155 0.006 0.009975837 -0.0125093 0.005 0.009975837 -0.0125093 0.006 0.0125093 -0.009975837 0.005 0.0125093 -0.009975837 0.006 0.0144155 -0.00694214 0.005 0.0144155 -0.00694214 0.006 0.01559885 -0.003560335 0.005 0.01559885 -0.003560335 0.006 0.016 -9.797174e-19 0.005 0.016 -2.939152e-18 0.005 0.01559885 0.003560335 0.006 0.01559885 0.003560335 0.006 0.0144155 0.00694214 0.005 0.0144155 0.00694214 0.006 0.0125093 0.009975837 0.005 0.0125093 0.009975837 0.006 0.009975837 0.0125093 0.005 0.009975837 0.0125093 0.006 0.00694214 0.0144155 0.005 0.00694214 0.0144155 0.006 0.003560335 0.01559885 0.005 0.003560335 0.01559885 0.006 2e-18 0.016 0.005 2e-18 0.016 0 0.018 -0.0015 0 0.01764103 -0.001456413 0.005 0.018 -0.0015 0.005 0.01764103 -0.001456413 0 0.01730292 -0.001328184 0.005 0.01730292 -0.001328184 0 0.01700532 -0.001122766 0.005 0.01700532 -0.001122766 0 0.01676552 -0.0008520971 0.005 0.01676552 -0.0008520971 0 0.01659748 -0.0005319073 0.005 0.01659748 -0.0005319073 0 0.01651094 -0.000180805 0.005 0.01651094 -0.000180805 0 0.01651094 0.000180805 0.005 0.01651094 0.000180805 0 0.01659748 0.0005319073 0.005 0.01659748 0.0005319073 0.005 0.01676552 0.0008520971 0 0.01676552 0.0008520971 0 0.01700532 0.001122766 0.005 0.01700532 0.001122766 0 0.01730292 0.001328184 0.005 0.01730292 0.001328184 0 0.01764103 0.001456413 0.005 0.01764103 0.001456413 0 0.018 0.0015 0.005 0.018 0.0015 0 0.009 -0.01708846 0 0.008641027 -0.01704487 0.005 0.009 -0.01708846 0.005 0.008641027 -0.01704487 0 0.008302915 -0.01691664 0.005 0.008302915 -0.01691664 0 0.008005316 -0.01671122 0.005 0.008005316 -0.01671122 0 0.007765524 -0.01644055 0.005 0.007765524 -0.01644055 0 0.007597476 -0.01612036 0.005 0.007597476 -0.01612036 0 0.007510937 -0.01576926 0.005 0.007510937 -0.01576926 0 0.007510937 -0.01540765 0.005 0.007510937 -0.01540765 0 0.007597476 -0.01505655 0.005 0.007597476 -0.01505655 0.005 0.007765524 -0.01473636 0 0.007765524 -0.01473636 0 0.008005316 -0.01446569 0.005 0.008005316 -0.01446569 0 0.008302915 -0.01426027 0.005 0.008302915 -0.01426027 0 0.008641027 -0.01413204 0.005 0.008641027 -0.01413204 0 0.009 -0.01408846 0.005 0.009 -0.01408846 0 -0.009 -0.01708846 0 -0.009358973 -0.01704487 0.005 -0.009 -0.01708846 0.005 -0.009358973 -0.01704487 0 -0.009697085 -0.01691664 0.005 -0.009697085 -0.01691664 0 -0.009994684 -0.01671122 0.005 -0.009994684 -0.01671122 0 -0.01023448 -0.01644055 0.005 -0.01023448 -0.01644055 0 -0.01040252 -0.01612036 0.005 -0.01040252 -0.01612036 0 -0.01048906 -0.01576926 0.005 -0.01048906 -0.01576926 0 -0.01048906 -0.01540765 0.005 -0.01048906 -0.01540765 0 -0.01040252 -0.01505655 0.005 -0.01040252 -0.01505655 0.005 -0.01023448 -0.01473636 0 -0.01023448 -0.01473636 0 -0.009994684 -0.01446569 0.005 -0.009994684 -0.01446569 0 -0.009697085 -0.01426027 0.005 -0.009697085 -0.01426027 0 -0.009358973 -0.01413204 0.005 -0.009358973 -0.01413204 0 -0.009 -0.01408846 0.005 -0.009 -0.01408846 0 -0.018 -0.0015 0 -0.01835897 -0.001456413 0.005 -0.018 -0.0015 0.005 -0.01835897 -0.001456413 0 -0.01869708 -0.001328184 0.005 -0.01869708 -0.001328184 0 -0.01899468 -0.001122766 0.005 -0.01899468 -0.001122766 0 -0.01923448 -0.0008520971 0.005 -0.01923448 -0.0008520971 0 -0.01940252 -0.0005319073 0.005 -0.01940252 -0.0005319073 0 -0.01948906 -0.000180805 0.005 -0.01948906 -0.000180805 0 -0.01948906 0.000180805 0.005 -0.01948906 0.000180805 0 -0.01940252 0.0005319073 0.005 -0.01940252 0.0005319073 0.005 -0.01923448 0.0008520971 0 -0.01923448 0.0008520971 0 -0.01899468 0.001122766 0.005 -0.01899468 0.001122766 0 -0.01869708 0.001328184 0.005 -0.01869708 0.001328184 0 -0.01835897 0.001456413 0.005 -0.01835897 0.001456413 0 -0.018 0.0015 0.005 -0.018 0.0015 0 -0.009 0.01408846 0 -0.009358973 0.01413204 0.005 -0.009 0.01408846 0.005 -0.009358973 0.01413204 0 -0.009697085 0.01426027 0.005 -0.009697085 0.01426027 0 -0.009994684 0.01446569 0.005 -0.009994684 0.01446569 0 -0.01023448 0.01473636 0.005 -0.01023448 0.01473636 0 -0.01040252 0.01505655 0.005 -0.01040252 0.01505655 0 -0.01048906 0.01540765 0.005 -0.01048906 0.01540765 0 -0.01048906 0.01576926 0.005 -0.01048906 0.01576926 0 -0.01040252 0.01612036 0.005 -0.01040252 0.01612036 0.005 -0.01023448 0.01644055 0 -0.01023448 0.01644055 0 -0.009994684 0.01671122 0.005 -0.009994684 0.01671122 0 -0.009697085 0.01691664 0.005 -0.009697085 0.01691664 0 -0.009358973 0.01704487 0.005 -0.009358973 0.01704487 0 -0.009 0.01708846 0.005 -0.009 0.01708846 0 0.009 0.01408846 0 0.008641027 0.01413204 0.005 0.009 0.01408846 0.005 0.008641027 0.01413204 0 0.008302915 0.01426027 0.005 0.008302915 0.01426027 0 0.008005316 0.01446569 0.005 0.008005316 0.01446569 0 0.007765524 0.01473636 0.005 0.007765524 0.01473636 0 0.007597476 0.01505655 0.005 0.007597476 0.01505655 0 0.007510937 0.01540765 0.005 0.007510937 0.01540765 0 0.007510937 0.01576926 0.005 0.007510937 0.01576926 0 0.007597476 0.01612036 0.005 0.007597476 0.01612036 0.005 0.007765524 0.01644055 0 0.007765524 0.01644055 0 0.008005316 0.01671122 0.005 0.008005316 0.01671122 0 0.008302915 0.01691664 0.005 0.008302915 0.01691664 0 0.008641027 0.01704487 0.005 0.008641027 0.01704487 0 0.009 0.01708846 0.005 0.009 0.01708846 0.006 0 0.015 0.006 0.003589735 0.01456413 0.006 0.006970848 0.01328184 0.006 0.00994684 0.01122766 0.006 0.01234476 0.008520971 0.006 0.01402524 0.005319073 0.006 0.01489063 0.00180805 0.006 0.01489063 -0.00180805 0.006 0.01402524 -0.005319073 0.006 0.01234476 -0.008520971 0.006 0.00994684 -0.01122766 0.006 0.006970848 -0.01328184 0.006 0.003589735 -0.01456413 0.006 2e-18 -0.015 0.051 1e-18 -0.009 0.051 -0.002153841 -0.008738476 0.051 -0.004182509 -0.007969104 0.051 -0.005968104 -0.006736597 0.051 -0.007406855 -0.005112583 0.051 -0.008415146 -0.003191444 0.051 -0.00893438 -0.00108483 0.051 -0.00893438 0.00108483 0.051 -0.008415146 0.003191444 0.051 -0.007406855 0.005112583 0.051 -0.005968104 0.006736597 0.051 -0.004182509 0.007969104 0.051 -0.002153841 0.008738476 0.051 0 0.009 0.028 0.002153841 0.008738476 0.051 0.002153841 0.008738476 0.051 0.004182509 0.007969104 0.028 0.004182509 0.007969104 0.028 0.005968104 0.006736597 0.051 0.005968104 0.006736597 0.028 0.007406855 0.005112583 0.051 0.007406855 0.005112583 0.051 0.008415146 0.003191444 0.028 0.008415146 0.003191444 0.028 0.00893438 0.00108483 0.051 0.00893438 0.00108483 0.028 0.00893438 -0.00108483 0.051 0.00893438 -0.00108483 0.028 0.008415146 -0.003191444 0.051 0.008415146 -0.003191444 0.051 0.007406855 -0.005112583 0.028 0.007406855 -0.005112583 0.051 0.005968104 -0.006736597 0.028 0.005968104 -0.006736597 0.051 0.004182509 -0.007969104 0.028 0.004182509 -0.007969104 0.028 0.002153841 -0.008738476 0.051 0.002153841 -0.008738476 0.03 0.01264911 -0.003 0.03 0.01183444 -0.005380161 0.03 0.01057657 -0.007558841 0.03 0.008922632 -0.009454451 0.03 0.008922632 0.009454451 0.03 0.01057657 0.007558841 0.03 0.01183444 0.005380161 0.03 0.01264911 0.003 0.03 -0.003726479 0.01245445 0.03 -0.003024531 0.01418105 0.03 -0.004495054 0.01378566 0.03 -0.001257862 0.012939 0.03 -0.001520651 0.01442004 0.03 0.001257862 0.012939 0.03 0.003726479 0.01245445 0.03 -0.008922632 0.009454451 0.03 -0.009691207 0.01078566 0.03 -0.0117278 0.008526943 0.03 -0.01057657 0.007558841 0.03 -0.01324845 0.005893099 0.03 -0.01183444 0.005380161 0.03 -0.01264911 0.003 0.03 -0.01418626 0.003 0.03 -0.01324845 -0.005893099 0.03 -0.01264911 -0.003 0.03 -0.01418626 -0.003 0.03 -0.01183444 -0.005380161 0.03 -0.0117278 -0.008526943 0.03 -0.01057657 -0.007558841 0.03 -0.008922632 -0.009454451 0.03 -0.009691207 -0.01078566 0.051 -0.008698698 -0.009660883 0.051 -0.01051722 -0.007641208 0.051 -0.01187609 -0.005287576 0.051 -0.01271592 -0.002702852 0.051 -0.013 -1e-17 0.051 0.002257426 -0.0128025 0.051 -0.01271592 0.002702852 0.051 0.004446262 -0.012216 0.051 -0.01187609 0.005287576 0.051 0.0065 -0.01125833 0.051 -0.01051722 0.007641208 0.051 0.008698698 -0.009660883 0.051 -0.008698698 0.009660883 0.051 0.01051722 -0.007641208 0.051 -0.0065 0.01125833 0.051 0.01187609 -0.005287576 0.051 -0.004017221 0.01236373 0.051 0.01271592 -0.002702852 0.051 -0.00135887 0.01292878 0.051 0.013 -1e-18 0.051 0.00135887 0.01292878 0.051 0.01271592 0.002702852 0.051 0.004017221 0.01236373 0.051 0.01187609 0.005287576 0.051 0.0065 0.01125833 0.051 0.01051722 0.007641208 0.051 0.008698698 0.009660883 0.006 -0.003589735 -0.01456413 0.0295 -0.003589735 -0.01456413 0.006 -0.006970848 -0.01328184 0.0295 -0.006970848 -0.01328184 0.006 -0.00994684 -0.01122766 0.0295 -0.00994684 -0.01122766 0.006 -0.01234476 -0.008520971 0.0295 -0.01234476 -0.008520971 0.006 -0.01402524 -0.005319073 0.0295 -0.01402524 -0.005319073 0.006 -0.01489063 -0.00180805 0.0295 -0.01489063 -0.00180805 0.006 -0.01489063 0.00180805 0.0295 -0.01489063 0.00180805 0.006 -0.01402524 0.005319073 0.0295 -0.01402524 0.005319073 0.006 -0.01234476 0.008520971 0.0295 -0.01234476 0.008520971 0.006 -0.00994684 0.01122766 0.0295 -0.00994684 0.01122766 0.006 -0.006970848 0.01328184 0.0295 -0.006970848 0.01328184 0.006 -0.003589735 0.01456413 0.0295 -0.003589735 0.01456413 0.04580385 0.009691207 0.01078566 0.04580385 0.008922632 0.009454451 0.04580385 0.01418626 0.003 0.04580385 0.01264911 0.003 0.04580385 -0.009691207 -0.01078566 0.04580385 -0.008922632 -0.009454451 0.04580385 -0.01264911 -0.003 0.04580385 -0.01418626 -0.003 0.04580385 -0.01418626 0.003 0.04580385 -0.01264911 0.003 0.04580385 -0.009691207 0.01078566 0.04580385 -0.008922632 0.009454451 0.04580385 -0.004495054 0.01378566 0.04580385 -0.003726479 0.01245445 0.04580385 0.004495054 0.01378566 0.04580385 0.003726479 0.01245445 0.04580385 0.004495054 -0.01378566 0.03 0.003726479 -0.01245445 0.04580385 0.003726479 -0.01245445 0.04580385 -0.004495054 -0.01378566 0.03 -0.004495054 -0.01378566 0.04580385 0.01418626 -0.003 0.04580385 0.01264911 -0.003 0.04580385 0.009691207 -0.01078566 0.04580385 0.008922632 -0.009454451 0.005 -0.009424486 -0.01876643 0.005 -0.01298113 -0.01650728 0.005 -0.008641027 -0.01704487 0.005 -0.005488444 -0.0202701 0.005 -0.008302915 -0.01691664 0.005 -0.01601518 -0.01358359 0.005 -0.008005316 -0.01671122 0.005 -0.007597476 -0.01612036 0.005 -0.005 -0.0175 0.005 -0.007510937 -0.01576926 0.005 -0.007765524 -0.01644055 0.005 -0.0125093 -0.009975837 0.005 -0.01840451 -0.01011307 0.005 -0.009975837 -0.0125093 0.005 -0.008641027 -0.01413204 0.005 -0.008302915 -0.01426027 0.005 -0.008005316 -0.01446569 0.005 -0.00694214 -0.0144155 0.005 -0.007765524 -0.01473636 0.005 -0.007597476 -0.01505655 0.005 -0.007510937 -0.01540765 0.005 -0.0144155 -0.00694214 0.005 -0.02005292 -0.006235414 0.005 -0.02089406 -0.002106742 0.005 -0.003560335 -0.01559885 0.005 -0.01559885 -0.003560335 0.005 -0.01764103 -0.001456413 0.005 -0.02089406 0.002106742 0.005 -0.01730292 -0.001328184 0.005 -0.01700532 -0.001122766 0.005 -0.01676552 -0.0008520971 0.005 -0.01651094 0.000180805 0.005 -0.016 9.797174e-19 0.005 -0.01659748 0.0005319073 0.005 -0.01651094 -0.000180805 0.005 -0.01659748 -0.0005319073 0.005 -0.01676552 0.0008520971 0.005 -0.02005292 0.006235414 0.005 0.005 -0.0175 0.005 -0.01559885 0.003560335 0.005 -0.01700532 0.001122766 0.005 -0.01764103 0.001456413 0.005 -0.01730292 0.001328184 0.005 0.005488444 -0.0202701 0.005 0.009424486 -0.01876643 0.005 0.009358973 -0.01704487 0.005 -0.0144155 0.00694214 0.005 -0.01840451 0.01011307 0.005 0.009697085 -0.01691664 0.005 0.009994684 -0.01671122 0.005 0.01040252 -0.01505655 0.005 0.01298113 -0.01650728 0.005 0.01023448 -0.01473636 0.005 0.01048906 -0.01540765 0.005 0.01048906 -0.01576926 0.005 0.01040252 -0.01612036 0.005 0.01023448 -0.01644055 0.005 0.009358973 -0.01413204 0.005 0.009697085 -0.01426027 0.005 0.009994684 -0.01446569 0.005 -0.0125093 0.009975837 0.005 -0.01601518 0.01358359 0.005 0.01601518 -0.01358359 0.005 -0.009975837 0.0125093 0.005 -0.01298113 0.01650728 0.005 -0.008641027 0.01413204 0.005 -0.008302915 0.01426027 0.005 -0.00694214 0.0144155 0.005 -0.007765524 0.01473636 0.005 -0.007597476 0.01505655 0.005 -0.008005316 0.01446569 0.005 -0.007510937 0.01540765 0.005 -0.007510937 0.01576926 0.005 0.01840451 -0.01011307 0.005 -0.009424486 0.01876643 0.005 -0.008641027 0.01704487 0.005 -0.008302915 0.01691664 0.005 -0.007765524 0.01644055 0.005 -0.005 0.0175 0.005 -0.008005316 0.01671122 0.005 -0.007597476 0.01612036 0.005 -0.003560335 0.01559885 0.005 0.02005292 -0.006235414 0.005 -0.005488444 0.0202701 0.005 0.01835897 -0.001456413 0.005 0.02089406 -0.002106742 0.005 0.01899468 -0.001122766 0.005 0.01923448 -0.0008520971 0.005 0.01869708 -0.001328184 0.005 0.01940252 -0.0005319073 0.005 0.01948906 -0.000180805 0.005 0.005 0.0175 0.005 0.02089406 0.002106742 0.005 0.01869708 0.001328184 0.005 0.01835897 0.001456413 0.005 0.01899468 0.001122766 0.005 0.01923448 0.0008520971 0.005 0.01940252 0.0005319073 0.005 0.01948906 0.000180805 0.005 0.009358973 0.01413204 0.005 0.009697085 0.01426027 0.005 0.009994684 0.01446569 0.005 0.01023448 0.01473636 0.005 0.005488444 0.0202701 0.005 0.02005292 0.006235414 0.005 0.009424486 0.01876643 0.005 0.009358973 0.01704487 0.005 0.009697085 0.01691664 0.005 0.009994684 0.01671122 0.005 0.01840451 0.01011307 0.005 0.01298113 0.01650728 0.005 0.01023448 0.01644055 0.005 0.01040252 0.01612036 0.005 0.01048906 0.01576926 0.005 0.01048906 0.01540765 0.005 0.01040252 0.01505655 0.005 0.01601518 0.01358359 0 -0.009614789 0.01923034 0 -0.01326566 0.01691958 0 -0.008641027 0.01704487 0 -0.01638079 0.01392551 0 -0.005575611 0.02076445 0 -0.008302915 0.01691664 0 -0.005 0.0175 0 -0.008005316 0.01671122 0 -0.007765524 0.01644055 0 -0.007597476 0.01612036 0 -0.007510937 0.01576926 0 -0.007510937 0.01540765 0 -0.007597476 0.01505655 0 -0.02139119 0.002160351 0 -0.02052728 0.006393806 0 -0.02139119 -0.002160351 0 -0.01764103 0.001456413 0 -0.01730292 0.001328184 0 -0.008641027 0.01413204 0 -0.01883436 0.01036904 0 -0.007765524 0.01473636 0 -0.008005316 0.01446569 0 -0.008302915 0.01426027 0 -0.01700532 0.001122766 0 -0.01676552 0.0008520971 0 -0.02052728 -0.006393806 0 -0.01730292 -0.001328184 0 -0.01764103 -0.001456413 0 -0.01659748 0.0005319073 0 -0.01651094 0.000180805 0 -0.01651094 -0.000180805 0 0.005 0.0175 0 -0.01659748 -0.0005319073 0 -0.01676552 -0.0008520971 0 0.009614789 0.01923034 0 0.005575611 0.02076445 0 0.002632472 0.01068036 0 0.009358973 0.01704487 0 0.009697085 0.01691664 0 0.009994684 0.01671122 0 -0.01883436 -0.01036904 0 -0.01700532 -0.001122766 0 0.005111955 0.009740016 0 0.01326566 0.01691958 0 0.01023448 0.01644055 0 0.01040252 0.01612036 0 0.01048906 0.01576926 0 0.01048906 0.01540765 0 0.01040252 0.01505655 0 -0.01638079 -0.01392551 0 0.009697085 0.01426027 0 0.007294349 0.008233618 0 0.009358973 0.01413204 0 0.01638079 0.01392551 0 0.01023448 0.01473636 0 0.009994684 0.01446569 0 0.009052823 0.006248712 0 -0.01326566 -0.01691958 0 -0.008641027 -0.01413204 0 -0.008302915 -0.01426027 0 -0.008005316 -0.01446569 0 -0.007765524 -0.01473636 0 -0.007597476 -0.01505655 0 0.01883436 0.01036904 0 0.01028518 0.003900654 0 -0.009614789 -0.01923034 0 -0.008302915 -0.01691664 0 -0.008641027 -0.01704487 0 -0.005 -0.0175 0 -0.007510937 -0.01540765 0 -0.007510937 -0.01576926 0 -0.007597476 -0.01612036 0 -0.007765524 -0.01644055 0 -0.008005316 -0.01671122 0 0.02052728 0.006393806 0 -0.005575611 -0.02076445 0 0.0109198 0.001325903 0 0.0109198 -0.001325903 0 0.01835897 0.001456413 0 0.01028518 -0.003900654 0 0.02139119 0.002160351 0 0.01869708 0.001328184 0 0.01899468 0.001122766 0 0.01923448 0.0008520971 0 0.01940252 0.0005319073 0 0.01948906 0.000180805 0 0.01948906 -0.000180805 0 0.005 -0.0175 0 0.002632472 -0.01068036 0 0.005111955 -0.009740016 0 0.007294349 -0.008233618 0 0.009358973 -0.01413204 0 0.02139119 -0.002160351 0 0.01940252 -0.0005319073 0 0.01923448 -0.0008520971 0 0.01899468 -0.001122766 0 0.01869708 -0.001328184 0 0.01835897 -0.001456413 0 0.009697085 -0.01426027 0 0.009052823 -0.006248712 0 0.005575611 -0.02076445 0 0.02052728 -0.006393806 0 0.009994684 -0.01671122 0 0.009614789 -0.01923034 0 0.009697085 -0.01691664 0 0.009358973 -0.01704487 0 0.01883436 -0.01036904 0 0.01040252 -0.01505655 0 0.01326566 -0.01691958 0 0.01048906 -0.01540765 0 0.01048906 -0.01576926 0 0.01040252 -0.01612036 0 0.01023448 -0.01644055 0 0.009994684 -0.01446569 0 0.01638079 -0.01392551 0 0.01023448 -0.01473636 0.0045 -0.005575611 -0.02076445 0.0045 -0.009614789 -0.01923034 0.0045 -0.01326566 -0.01691958 0.0045 -0.01638079 -0.01392551 0.0045 -0.01883436 -0.01036904 0.0045 -0.02052728 -0.006393806 0.0045 -0.02139119 -0.002160351 0.0045 -0.02139119 0.002160351 0.0045 -0.02052728 0.006393806 0.0045 -0.01883436 0.01036904 0.0045 -0.01638079 0.01392551 0.0045 -0.01326566 0.01691958 0.0045 -0.009614789 0.01923034 0.0045 -0.005575611 0.02076445 0.0045 0.005575611 0.02076445 0.0045 0.009614789 0.01923034 0.0045 0.01326566 0.01691958 0.0045 0.01638079 0.01392551 0.0045 0.01883436 0.01036904 0.0045 0.02052728 0.006393806 0.0045 0.02139119 0.002160351 0.0045 0.02139119 -0.002160351 0.0045 0.02052728 -0.006393806 0.0045 0.01883436 -0.01036904 0.0045 0.01638079 -0.01392551 0.0045 0.01326566 -0.01691958 0.0045 0.009614789 -0.01923034 0.0045 0.005575611 -0.02076445 0.006 -0.009975837 -0.0125093 0.006 -0.0125093 -0.009975837 0.006 -0.0144155 -0.00694214 0.006 -0.00694214 -0.0144155 0.006 -0.01559885 -0.003560335 0.006 -0.003560335 -0.01559885 0.006 -0.016 2.939152e-18 0.006 -0.01559885 0.003560335 0.006 -0.0144155 0.00694214 0.006 -0.0125093 0.009975837 0.006 -0.009975837 0.0125093 0.006 -0.00694214 0.0144155 0.006 -0.003560335 0.01559885 0.03 0.001257862 -0.012939 0.03 0.002503919 -0.01275658 0.03 -0.003024531 -0.01418105 0.03 -0.001520651 -0.01442004 0.051 0.00725 -0.01255737 0.051 0.0145 0 0.03 -0.008104139 -0.01202385 0.051 -0.00725 -0.01255737 0.03 -0.006360889 -0.01303031 0.051 0.00725 0.01255737 0.03 -0.006360889 0.01303031 0.051 -0.00725 0.01255737 0.03 -0.008104139 0.01202385 0.03 -0.01446503 0.001006465 0.051 -0.0145 -1.1e-17 0.03 -0.01446503 -0.001006465 0.026 0.002632472 0.01068036 0.026 0.005111955 0.009740016 0.026 0.007294349 0.008233618 0.026 0.009052823 0.006248712 0.026 0.01028518 0.003900654 0.026 0.0109198 0.001325903 0.026 0.0109198 -0.001325903 0.026 0.01028518 -0.003900654 0.026 0.009052823 -0.006248712 0.026 0.007294349 -0.008233618 0.026 0.005111955 -0.009740016 0.026 0.002632472 -0.01068036 + + + + + + + + + + -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 -0 0.8660254 -0.5 -0 0.8660254 -0.5 0 0 1 0 0 1 -0 -0.8660254 0.5 -0 -0.8660254 0.5 0 0 -1 0 0 -1 -0 -3.7e-16 1 -0 -3.7e-16 1 0 -0.8660254 -0.5 0 -0.8660254 -0.5 -0 0.8660254 0.5 -0 0.8660254 0.5 0 -0.8660254 0.5 0 -0.8660254 0.5 0 -0.8660254 -0.5 0 -0.8660254 -0.5 0 0.8660254 -0.5 0 0.8660254 -0.5 -0 3.7e-16 -1 -0 3.7e-16 -1 -0 0.8660254 0.5 -0 0.8660254 0.5 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 -1 0 -0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 1 -0 -0 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 0 -0.9848078 -0.1736482 0 -0.9848078 -0.1736482 0 -0.9848078 -0.1736482 -0 0.9848078 -0.1736482 -0 0.9848078 -0.1736482 -0 0.9848078 -0.1736482 0 -2.0747e-13 -1 0 -2.0747e-13 -1 -0 0.9848078 0.1736482 -0 0.9848078 0.1736482 -0 0.9848078 0.1736482 -0 -0.9848078 0.1736482 -0 -0.9848078 0.1736482 -0 -0.9848078 0.1736482 -0 -0 1 -0 -0 1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.7071068 -0 0.7071068 0.5 -0.75 0.4330127 0.5 -0.75 0.4330127 0.5 0.75 -0.4330127 0.5 0.75 -0.4330127 0.5 -3.2e-16 0.8660254 0.5 -3.2e-16 0.8660254 0.5 0 -0.8660254 0.5 0 -0.8660254 0.5 0.75 0.4330127 0.5 0.75 0.4330127 0.5 -0.75 -0.4330127 0.5 -0.75 -0.4330127 0.5 0.75 -0.4330127 0.5 0.75 -0.4330127 0.5 -0.75 0.4330127 0.5 -0.75 0.4330127 0.5 3.2e-16 -0.8660254 0.5 3.2e-16 -0.8660254 0.5 -0 0.8660254 0.5 -0 0.8660254 0.5 -0.75 -0.4330127 0.5 -0.75 -0.4330127 0.5 0.75 0.4330127 0.5 0.75 0.4330127 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 + + + + + + + + + + + + + + +

0 0 1 0 2 0 2 1 3 1 4 1 1 2 3 2 2 2 4 3 5 3 6 3 3 4 5 4 4 4 6 5 7 5 8 5 5 6 7 6 6 6 8 7 9 7 10 7 7 8 9 8 8 8 10 9 11 9 12 9 9 10 11 10 10 10 12 11 13 11 14 11 11 12 13 12 12 12 14 13 15 13 16 13 13 14 15 14 14 14 16 15 17 15 18 15 15 16 17 16 16 16 18 17 19 17 20 17 17 18 19 18 18 18 20 19 21 19 22 19 19 20 21 20 20 20 21 21 23 21 22 21 22 22 24 22 25 22 25 23 24 23 26 23 23 24 24 24 22 24 24 25 27 25 26 25 28 26 29 26 1 26 1 27 29 27 3 27 3 28 30 28 5 28 29 29 30 29 3 29 5 30 31 30 7 30 30 31 31 31 5 31 7 32 32 32 9 32 31 33 32 33 7 33 9 34 33 34 11 34 32 35 33 35 9 35 11 36 34 36 13 36 33 37 34 37 11 37 13 38 35 38 15 38 34 39 35 39 13 39 15 40 36 40 17 40 35 41 36 41 15 41 17 42 37 42 19 42 36 43 37 43 17 43 19 44 38 44 21 44 37 45 38 45 19 45 21 46 39 46 23 46 38 47 39 47 21 47 23 48 40 48 24 48 39 49 40 49 23 49 24 50 41 50 27 50 40 51 41 51 24 51 42 52 43 52 44 52 45 53 42 53 46 53 45 54 43 54 42 54 47 55 45 55 46 55 48 56 47 56 49 56 48 57 45 57 47 57 50 58 48 58 49 58 51 59 50 59 52 59 51 60 48 60 50 60 53 61 51 61 52 61 54 62 51 62 53 62 55 63 54 63 53 63 56 64 54 64 55 64 57 65 56 65 55 65 58 66 56 66 57 66 59 67 58 67 57 67 60 68 59 68 61 68 60 69 58 69 59 69 62 70 60 70 61 70 63 71 60 71 62 71 64 72 63 72 62 72 65 73 64 73 66 73 65 74 63 74 64 74 67 75 66 75 68 75 67 76 65 76 66 76 69 77 67 77 68 77 70 78 69 78 71 78 70 79 67 79 69 79 72 80 70 80 71 80 73 81 70 81 72 81 73 82 72 82 74 82 75 83 73 83 74 83 76 84 75 84 77 84 76 85 73 85 75 85 78 86 79 86 80 86 78 87 80 87 81 87 82 88 83 88 78 88 84 89 78 89 81 89 84 90 82 90 78 90 85 91 81 91 86 91 85 92 84 92 81 92 87 93 88 93 89 93 87 94 90 94 88 94 91 95 89 95 92 95 91 96 87 96 89 96 93 97 92 97 94 97 93 98 91 98 92 98 95 99 94 99 96 99 95 100 93 100 94 100 97 101 96 101 98 101 97 102 95 102 96 102 99 103 98 103 100 103 99 104 97 104 98 104 101 105 100 105 102 105 101 106 102 106 103 106 101 107 99 107 100 107 104 108 101 108 103 108 105 109 103 109 106 109 105 110 104 110 103 110 107 111 106 111 108 111 107 112 105 112 106 112 109 113 108 113 110 113 109 114 107 114 108 114 111 115 110 115 112 115 111 116 109 116 110 116 113 117 112 117 114 117 113 118 111 118 112 118 115 119 114 119 116 119 115 120 113 120 114 120 117 121 118 121 119 121 119 122 118 122 120 122 120 123 121 123 122 123 118 124 121 124 120 124 122 125 123 125 124 125 121 126 123 126 122 126 124 127 125 127 126 127 123 128 125 128 124 128 126 129 127 129 128 129 125 130 127 130 126 130 128 131 129 131 130 131 127 132 129 132 128 132 130 133 131 133 132 133 129 134 131 134 130 134 132 135 133 135 134 135 134 136 133 136 135 136 131 137 133 137 132 137 133 138 136 138 135 138 135 139 137 139 138 139 136 140 137 140 135 140 138 141 139 141 140 141 137 142 139 142 138 142 140 143 141 143 142 143 139 144 141 144 140 144 142 145 143 145 144 145 141 146 143 146 142 146 145 147 146 147 147 147 147 148 146 148 148 148 148 149 149 149 150 149 146 150 149 150 148 150 150 151 151 151 152 151 149 152 151 152 150 152 152 153 153 153 154 153 151 154 153 154 152 154 154 155 155 155 156 155 153 156 155 156 154 156 156 157 157 157 158 157 155 158 157 158 156 158 158 159 159 159 160 159 157 160 159 160 158 160 160 161 161 161 162 161 162 162 161 162 163 162 159 163 161 163 160 163 161 164 164 164 163 164 163 165 165 165 166 165 164 166 165 166 163 166 166 167 167 167 168 167 165 168 167 168 166 168 168 169 169 169 170 169 167 170 169 170 168 170 170 171 171 171 172 171 169 172 171 172 170 172 173 173 174 173 175 173 175 174 174 174 176 174 176 175 177 175 178 175 174 176 177 176 176 176 178 177 179 177 180 177 177 178 179 178 178 178 180 179 181 179 182 179 179 180 181 180 180 180 182 181 183 181 184 181 181 182 183 182 182 182 184 183 185 183 186 183 183 184 185 184 184 184 186 185 187 185 188 185 185 186 187 186 186 186 188 187 189 187 190 187 190 188 189 188 191 188 187 189 189 189 188 189 189 190 192 190 191 190 191 191 193 191 194 191 192 192 193 192 191 192 194 193 195 193 196 193 193 194 195 194 194 194 196 195 197 195 198 195 195 196 197 196 196 196 198 197 199 197 200 197 197 198 199 198 198 198 201 199 202 199 203 199 203 200 202 200 204 200 204 201 205 201 206 201 202 202 205 202 204 202 206 203 207 203 208 203 205 204 207 204 206 204 208 205 209 205 210 205 207 206 209 206 208 206 210 207 211 207 212 207 209 208 211 208 210 208 212 209 213 209 214 209 211 210 213 210 212 210 214 211 215 211 216 211 213 212 215 212 214 212 216 213 217 213 218 213 218 214 217 214 219 214 215 215 217 215 216 215 217 216 220 216 219 216 219 217 221 217 222 217 220 218 221 218 219 218 222 219 223 219 224 219 221 220 223 220 222 220 224 221 225 221 226 221 223 222 225 222 224 222 226 223 227 223 228 223 225 224 227 224 226 224 229 225 230 225 231 225 231 226 230 226 232 226 232 227 233 227 234 227 230 228 233 228 232 228 234 229 235 229 236 229 233 230 235 230 234 230 236 231 237 231 238 231 235 232 237 232 236 232 238 233 239 233 240 233 237 234 239 234 238 234 240 235 241 235 242 235 239 236 241 236 240 236 242 237 243 237 244 237 241 238 243 238 242 238 244 239 245 239 246 239 246 240 245 240 247 240 243 241 245 241 244 241 245 242 248 242 247 242 247 243 249 243 250 243 248 244 249 244 247 244 250 245 251 245 252 245 249 246 251 246 250 246 252 247 253 247 254 247 251 248 253 248 252 248 254 249 255 249 256 249 253 250 255 250 254 250 257 251 258 251 259 251 259 252 258 252 260 252 260 253 261 253 262 253 258 254 261 254 260 254 262 255 263 255 264 255 261 256 263 256 262 256 264 257 265 257 266 257 263 258 265 258 264 258 266 259 267 259 268 259 265 260 267 260 266 260 268 261 269 261 270 261 267 262 269 262 268 262 270 263 271 263 272 263 269 264 271 264 270 264 272 265 273 265 274 265 274 266 273 266 275 266 271 267 273 267 272 267 273 268 276 268 275 268 275 269 277 269 278 269 276 270 277 270 275 270 278 271 279 271 280 271 277 272 279 272 278 272 280 273 281 273 282 273 279 274 281 274 280 274 282 275 283 275 284 275 281 276 283 276 282 276 285 277 43 277 45 277 286 278 45 278 48 278 286 279 285 279 45 279 287 280 48 280 51 280 287 281 286 281 48 281 288 282 51 282 54 282 288 283 287 283 51 283 289 284 54 284 56 284 289 285 288 285 54 285 290 286 289 286 56 286 291 287 56 287 58 287 291 288 58 288 60 288 291 289 290 289 56 289 292 290 60 290 63 290 292 291 291 291 60 291 293 292 63 292 65 292 293 293 292 293 63 293 294 294 65 294 67 294 294 295 293 295 65 295 295 296 294 296 67 296 296 297 67 297 70 297 296 298 70 298 73 298 296 299 295 299 67 299 297 300 73 300 76 300 297 301 296 301 73 301 298 302 297 302 76 302 0 303 2 303 299 303 299 304 2 304 300 304 300 305 4 305 301 305 2 306 4 306 300 306 301 307 6 307 302 307 4 308 6 308 301 308 302 309 8 309 303 309 6 310 8 310 302 310 303 311 10 311 304 311 304 312 10 312 305 312 8 313 10 313 303 313 305 314 12 314 306 314 10 315 12 315 305 315 12 316 14 316 306 316 306 317 16 317 307 317 14 318 16 318 306 318 307 319 18 319 308 319 308 320 18 320 309 320 16 321 18 321 307 321 309 322 20 322 310 322 18 323 20 323 309 323 20 324 22 324 310 324 310 325 25 325 311 325 311 326 25 326 312 326 22 327 25 327 310 327 25 328 26 328 312 328 26 329 313 329 312 329 312 330 313 330 314 330 314 331 313 331 315 331 313 332 316 332 315 332 315 333 317 333 318 333 316 334 317 334 315 334 318 335 319 335 320 335 320 336 319 336 321 336 317 337 319 337 318 337 319 338 322 338 321 338 321 339 323 339 324 339 322 340 323 340 321 340 324 341 325 341 326 341 323 342 325 342 324 342 326 343 327 343 328 343 328 344 327 344 329 344 325 345 327 345 326 345 329 346 330 346 331 346 327 347 330 347 329 347 331 348 332 348 333 348 330 349 332 349 331 349 332 350 334 350 333 350 333 351 335 351 336 351 336 352 335 352 299 352 334 353 335 353 333 353 335 354 0 354 299 354 64 355 62 355 337 355 64 356 337 356 338 356 66 357 339 357 340 357 66 358 338 358 339 358 66 359 64 359 338 359 68 360 66 360 340 360 53 361 52 361 341 361 53 362 341 362 342 362 55 363 342 363 343 363 55 364 53 364 342 364 344 365 55 365 343 365 57 366 55 366 344 366 345 367 346 367 347 367 348 368 44 368 349 368 348 369 349 369 346 369 348 370 346 370 345 370 350 371 42 371 44 371 350 372 44 372 348 372 46 373 42 373 350 373 351 374 47 374 46 374 351 375 46 375 350 375 352 376 353 376 354 376 355 377 354 377 356 377 355 378 352 378 354 378 357 379 355 379 356 379 358 380 356 380 359 380 358 381 357 381 356 381 360 382 361 382 362 382 363 383 361 383 360 383 364 384 363 384 360 384 365 385 363 385 364 385 366 386 365 386 364 386 367 387 366 387 364 387 368 388 302 388 369 388 83 389 302 389 368 389 369 390 303 390 370 390 302 391 303 391 369 391 82 392 301 392 83 392 83 393 301 393 302 393 370 394 304 394 371 394 303 395 304 395 370 395 84 396 300 396 82 396 82 397 300 397 301 397 371 398 305 398 372 398 304 399 305 399 371 399 373 400 299 400 85 400 85 401 299 401 84 401 84 402 299 402 300 402 372 403 306 403 374 403 305 404 306 404 372 404 375 405 336 405 373 405 373 406 336 406 299 406 374 407 307 407 376 407 306 408 307 408 374 408 375 409 333 409 336 409 377 410 333 410 375 410 376 411 308 411 378 411 307 412 308 412 376 412 377 413 331 413 333 413 379 414 331 414 377 414 308 415 309 415 378 415 309 416 380 416 378 416 379 417 381 417 331 417 331 418 381 418 329 418 309 419 382 419 380 419 310 420 382 420 309 420 381 421 383 421 329 421 329 422 383 422 328 422 310 423 384 423 382 423 311 424 384 424 310 424 383 425 385 425 328 425 328 426 385 426 326 426 311 427 386 427 384 427 312 428 386 428 311 428 385 429 387 429 326 429 326 430 387 430 324 430 314 431 388 431 312 431 312 432 388 432 386 432 324 433 389 433 321 433 387 434 389 434 324 434 315 435 390 435 314 435 314 436 390 436 388 436 321 437 391 437 320 437 389 438 391 438 321 438 318 439 392 439 315 439 315 440 392 440 390 440 320 441 393 441 318 441 391 442 393 442 320 442 393 443 394 443 318 443 318 444 394 444 392 444 395 445 298 445 76 445 395 446 76 446 396 446 397 447 396 447 398 447 397 448 395 448 396 448 399 449 398 449 400 449 399 450 397 450 398 450 401 451 400 451 402 451 401 452 399 452 400 452 403 453 402 453 404 453 403 454 401 454 402 454 405 455 404 455 406 455 405 456 403 456 404 456 407 457 406 457 408 457 407 458 405 458 406 458 409 459 408 459 410 459 409 460 407 460 408 460 411 461 410 461 412 461 411 462 409 462 410 462 413 463 412 463 414 463 413 464 411 464 412 464 415 465 414 465 416 465 415 466 413 466 414 466 417 467 416 467 418 467 417 468 415 468 416 468 285 469 418 469 43 469 285 470 417 470 418 470 52 471 419 471 341 471 419 472 420 472 341 472 421 473 344 473 422 473 421 474 57 474 344 474 367 475 423 475 366 475 423 476 424 476 366 476 361 477 425 477 426 477 361 478 426 478 362 478 359 479 427 479 358 479 427 480 428 480 358 480 429 481 353 481 352 481 430 482 429 482 352 482 347 483 431 483 345 483 431 484 432 484 345 484 433 485 47 485 351 485 434 486 433 486 351 486 72 487 435 487 436 487 435 488 437 488 436 488 438 489 439 489 79 489 78 490 438 490 79 490 62 491 440 491 337 491 440 492 441 492 337 492 442 493 68 493 340 493 443 494 442 494 340 494 444 495 180 495 445 495 180 496 182 496 445 496 444 497 178 497 180 497 182 498 184 498 445 498 444 499 176 499 178 499 184 500 186 500 445 500 444 501 175 501 176 501 186 502 188 502 445 502 444 503 446 503 175 503 188 504 190 504 445 504 447 505 448 505 444 505 444 506 448 506 446 506 445 507 191 507 449 507 190 508 191 508 445 508 447 509 450 509 448 509 451 510 452 510 453 510 454 511 452 511 451 511 450 512 452 512 454 512 447 513 452 513 450 513 449 514 455 514 456 514 194 515 457 515 191 515 196 516 457 516 194 516 198 517 457 517 196 517 200 518 457 518 198 518 458 519 457 519 200 519 459 520 457 520 458 520 191 521 457 521 449 521 449 522 457 522 455 522 460 523 461 523 459 523 462 524 461 524 460 524 463 525 461 525 462 525 464 526 461 526 463 526 453 527 461 527 464 527 452 528 461 528 453 528 459 529 461 529 457 529 456 530 465 530 466 530 455 531 465 531 456 531 208 532 210 532 467 532 467 533 206 533 208 533 210 534 212 534 467 534 466 535 204 535 467 535 467 536 204 536 206 536 212 537 214 537 467 537 466 538 203 538 204 538 452 539 468 539 461 539 466 540 469 540 203 540 465 541 469 541 466 541 469 542 470 542 203 542 216 543 471 543 214 543 218 544 471 544 216 544 214 545 471 545 467 545 469 546 472 546 470 546 218 547 219 547 471 547 469 548 473 548 472 548 219 549 222 549 471 549 469 550 474 550 473 550 222 551 224 551 471 551 224 552 226 552 471 552 452 553 88 553 468 553 475 554 476 554 477 554 478 555 476 555 475 555 479 556 476 556 478 556 474 557 476 557 479 557 469 558 476 558 474 558 476 559 480 559 477 559 226 560 481 560 471 560 228 561 481 561 226 561 482 562 89 562 88 562 480 563 483 563 484 563 228 564 483 564 481 564 476 565 483 565 480 565 485 566 483 566 228 566 486 567 483 567 485 567 484 568 483 568 486 568 487 569 152 569 482 569 152 570 154 570 482 570 488 571 150 571 487 571 487 572 150 572 152 572 154 573 156 573 482 573 488 574 148 574 150 574 156 575 158 575 482 575 488 576 147 576 148 576 488 577 489 577 147 577 160 578 92 578 158 578 482 579 92 579 89 579 158 580 92 580 482 580 481 581 490 581 491 581 483 582 490 582 481 582 160 583 162 583 92 583 488 584 492 584 489 584 162 585 163 585 92 585 488 586 493 586 492 586 163 587 166 587 92 587 166 588 168 588 92 588 494 589 495 589 496 589 497 590 495 590 494 590 498 591 495 591 497 591 499 592 495 592 498 592 500 593 495 593 499 593 493 594 495 594 500 594 488 595 495 595 493 595 170 596 94 596 168 596 172 597 94 597 170 597 501 598 94 598 172 598 502 599 94 599 501 599 503 600 94 600 502 600 496 601 94 601 503 601 168 602 94 602 92 602 490 603 504 603 491 603 504 604 505 604 491 604 496 605 506 605 94 605 495 606 506 606 496 606 506 607 96 607 94 607 504 608 507 608 505 608 505 609 238 609 508 609 507 610 238 610 505 610 236 611 238 611 507 611 507 612 234 612 236 612 238 613 240 613 508 613 507 614 232 614 234 614 240 615 242 615 508 615 507 616 231 616 232 616 242 617 244 617 508 617 507 618 509 618 231 618 244 619 246 619 508 619 507 620 510 620 509 620 246 621 247 621 508 621 247 622 250 622 508 622 507 623 511 623 510 623 512 624 511 624 513 624 514 625 511 625 512 625 510 626 511 626 514 626 511 627 515 627 513 627 511 628 516 628 515 628 96 629 517 629 98 629 506 630 517 630 96 630 250 631 518 631 508 631 252 632 518 632 250 632 254 633 518 633 252 633 256 634 518 634 254 634 519 635 518 635 256 635 520 636 518 636 519 636 521 637 522 637 523 637 524 638 522 638 521 638 511 639 522 639 516 639 516 640 522 640 524 640 525 641 522 641 511 641 98 642 526 642 100 642 517 643 526 643 98 643 522 644 527 644 523 644 520 645 527 645 518 645 523 646 527 646 520 646 124 647 126 647 100 647 100 648 122 648 124 648 126 649 102 649 100 649 525 650 116 650 522 650 126 651 128 651 102 651 100 652 120 652 122 652 128 653 130 653 102 653 526 654 119 654 100 654 100 655 119 655 120 655 130 656 132 656 102 656 526 657 528 657 119 657 132 658 134 658 102 658 134 659 135 659 102 659 526 660 529 660 528 660 530 661 529 661 531 661 532 662 529 662 530 662 528 663 529 663 532 663 529 664 533 664 531 664 135 665 103 665 102 665 138 666 103 666 135 666 140 667 103 667 138 667 142 668 103 668 140 668 529 669 534 669 533 669 142 670 144 670 103 670 112 671 535 671 114 671 114 672 535 672 116 672 264 673 266 673 112 673 110 674 262 674 112 674 112 675 262 675 264 675 266 676 268 676 112 676 110 677 260 677 262 677 268 678 270 678 112 678 529 679 536 679 534 679 537 680 536 680 538 680 539 681 536 681 537 681 540 682 536 682 539 682 541 683 536 683 540 683 542 684 536 684 541 684 534 685 536 685 542 685 110 686 259 686 260 686 112 687 272 687 535 687 270 688 272 688 112 688 110 689 543 689 259 689 272 690 274 690 535 690 110 691 544 691 543 691 274 692 275 692 535 692 110 693 545 693 544 693 275 694 278 694 535 694 110 695 546 695 545 695 280 696 547 696 278 696 278 697 547 697 535 697 103 698 548 698 106 698 144 699 548 699 103 699 536 700 548 700 538 700 538 701 548 701 144 701 282 702 549 702 280 702 284 703 549 703 282 703 550 704 549 704 284 704 551 705 549 705 550 705 552 706 549 706 551 706 280 707 549 707 547 707 106 708 553 708 108 708 548 709 553 709 106 709 552 710 554 710 549 710 555 711 554 711 552 711 556 712 554 712 555 712 557 713 554 713 556 713 558 714 554 714 557 714 559 715 554 715 558 715 546 716 554 716 559 716 108 717 560 717 110 717 110 718 560 718 546 718 553 719 560 719 108 719 546 720 560 720 554 720 535 721 522 721 116 721 452 722 482 722 88 722 561 723 249 723 562 723 249 724 248 724 562 724 561 725 251 725 249 725 248 726 245 726 562 726 561 727 253 727 251 727 245 728 243 728 562 728 561 729 255 729 253 729 243 730 241 730 562 730 561 731 563 731 255 731 562 732 239 732 564 732 241 733 239 733 562 733 565 734 566 734 561 734 561 735 566 735 563 735 239 736 237 736 564 736 237 737 235 737 564 737 235 738 233 738 564 738 565 739 567 739 566 739 566 740 567 740 568 740 568 741 567 741 569 741 569 742 567 742 570 742 570 743 567 743 571 743 571 744 567 744 572 744 572 745 567 745 573 745 221 746 220 746 574 746 574 747 223 747 221 747 220 748 217 748 574 748 575 749 225 749 574 749 574 750 225 750 223 750 217 751 215 751 574 751 575 752 227 752 225 752 215 753 213 753 574 753 213 754 576 754 574 754 575 755 577 755 227 755 213 756 211 756 576 756 575 757 578 757 577 757 211 758 209 758 576 758 209 759 207 759 576 759 207 760 205 760 576 760 205 761 202 761 576 761 229 762 38 762 230 762 230 763 38 763 233 763 579 764 38 764 229 764 564 765 37 765 580 765 233 766 37 766 564 766 38 767 37 767 233 767 579 768 39 768 38 768 581 769 39 769 582 769 582 770 39 770 583 770 583 771 39 771 579 771 575 772 36 772 578 772 37 773 36 773 580 773 580 774 36 774 575 774 578 775 36 775 584 775 584 776 36 776 585 776 202 777 586 777 576 777 201 778 586 778 202 778 587 779 586 779 588 779 588 780 586 780 201 780 581 781 40 781 39 781 573 782 40 782 581 782 567 783 40 783 573 783 36 784 35 784 585 784 585 785 35 785 589 785 589 786 35 786 590 786 590 787 35 787 591 787 592 788 41 788 567 788 567 789 41 789 40 789 35 790 34 790 591 790 591 791 34 791 593 791 593 792 34 792 594 792 277 793 276 793 592 793 595 794 279 794 596 794 596 795 279 795 592 795 592 796 279 796 277 796 276 797 273 797 592 797 595 798 281 798 279 798 273 799 271 799 592 799 595 800 283 800 281 800 592 801 597 801 41 801 271 802 269 802 592 802 595 803 598 803 283 803 592 804 267 804 597 804 269 805 267 805 592 805 595 806 599 806 598 806 267 807 265 807 597 807 595 808 600 808 599 808 586 809 33 809 601 809 587 810 33 810 586 810 594 811 33 811 602 811 602 812 33 812 587 812 34 813 33 813 594 813 258 814 603 814 261 814 265 815 603 815 597 815 261 816 603 816 263 816 263 817 603 817 265 817 600 818 604 818 605 818 605 819 604 819 606 819 606 820 604 820 607 820 607 821 604 821 608 821 608 822 604 822 609 822 595 823 604 823 600 823 33 824 32 824 601 824 32 825 610 825 601 825 611 826 612 826 613 826 613 827 612 827 257 827 258 828 612 828 603 828 257 829 612 829 258 829 609 830 614 830 615 830 615 831 614 831 616 831 616 832 614 832 611 832 604 833 614 833 609 833 611 834 617 834 612 834 614 835 617 835 611 835 193 836 192 836 610 836 610 837 195 837 193 837 32 838 195 838 610 838 31 839 195 839 32 839 610 840 189 840 618 840 192 841 189 841 610 841 31 842 197 842 195 842 189 843 187 843 618 843 31 844 199 844 197 844 187 845 185 845 618 845 30 846 619 846 31 846 31 847 619 847 199 847 185 848 183 848 618 848 30 849 620 849 619 849 183 850 181 850 618 850 30 851 621 851 620 851 181 852 179 852 618 852 30 853 622 853 621 853 622 854 29 854 623 854 30 855 29 855 622 855 614 856 624 856 617 856 617 857 624 857 625 857 173 858 626 858 174 858 174 859 626 859 177 859 177 860 626 860 179 860 627 861 626 861 628 861 628 862 626 862 173 862 179 863 626 863 618 863 623 864 629 864 630 864 630 865 629 865 631 865 631 866 629 866 632 866 632 867 629 867 633 867 633 868 629 868 634 868 634 869 629 869 627 869 28 870 629 870 29 870 29 871 629 871 623 871 624 872 635 872 625 872 629 873 636 873 627 873 627 874 636 874 626 874 625 875 136 875 637 875 137 876 136 876 625 876 635 877 139 877 625 877 625 878 139 878 137 878 136 879 133 879 637 879 635 880 141 880 139 880 133 881 131 881 637 881 635 882 143 882 141 882 131 883 129 883 637 883 637 884 129 884 638 884 635 885 639 885 143 885 129 886 127 886 638 886 127 887 125 887 638 887 638 888 125 888 640 888 125 889 123 889 640 889 123 890 121 890 640 890 635 891 641 891 639 891 639 892 641 892 642 892 642 893 641 893 643 893 643 894 641 894 644 894 644 895 641 895 645 895 641 896 646 896 645 896 641 897 647 897 646 897 28 898 648 898 629 898 649 899 648 899 28 899 650 900 164 900 649 900 165 901 164 901 650 901 650 902 167 902 165 902 649 903 161 903 648 903 164 904 161 904 649 904 651 905 169 905 650 905 650 906 169 906 167 906 161 907 159 907 648 907 651 908 171 908 169 908 159 909 157 909 648 909 651 910 652 910 171 910 641 911 653 911 647 911 647 912 653 912 654 912 654 913 653 913 655 913 655 914 653 914 656 914 656 915 653 915 657 915 657 916 653 916 658 916 157 917 155 917 648 917 651 918 659 918 652 918 660 919 659 919 651 919 155 920 153 920 648 920 153 921 151 921 648 921 151 922 149 922 648 922 149 923 661 923 648 923 121 924 662 924 640 924 117 925 662 925 118 925 118 926 662 926 121 926 658 927 662 927 117 927 653 928 662 928 658 928 663 929 664 929 665 929 665 930 664 930 666 930 666 931 664 931 145 931 149 932 664 932 661 932 145 933 664 933 146 933 146 934 664 934 149 934 640 935 667 935 660 935 662 936 667 936 640 936 668 937 669 937 670 937 670 938 669 938 671 938 671 939 669 939 672 939 672 940 669 940 673 940 673 941 669 941 663 941 663 942 669 942 664 942 674 943 675 943 676 943 676 944 675 944 668 944 668 945 675 945 669 945 667 946 675 946 660 946 660 947 675 947 659 947 659 948 675 948 674 948 626 949 636 949 677 949 626 950 677 950 678 950 618 951 678 951 679 951 618 952 626 952 678 952 610 953 679 953 680 953 610 954 618 954 679 954 601 955 680 955 681 955 601 956 681 956 682 956 601 957 610 957 680 957 586 958 601 958 682 958 576 959 682 959 683 959 576 960 683 960 684 960 576 961 586 961 682 961 574 962 576 962 684 962 575 963 684 963 685 963 575 964 685 964 686 964 575 965 574 965 684 965 580 966 575 966 686 966 564 967 686 967 687 967 564 968 580 968 686 968 562 969 687 969 688 969 562 970 564 970 687 970 561 971 688 971 689 971 561 972 562 972 688 972 565 973 689 973 690 973 565 974 561 974 689 974 595 975 596 975 691 975 595 976 691 976 692 976 604 977 692 977 693 977 604 978 693 978 694 978 604 979 595 979 692 979 614 980 604 980 694 980 624 981 694 981 695 981 624 982 614 982 694 982 635 983 695 983 696 983 635 984 696 984 697 984 635 985 624 985 695 985 641 986 697 986 698 986 641 987 635 987 697 987 653 988 641 988 698 988 662 989 698 989 699 989 662 990 699 990 700 990 662 991 653 991 698 991 667 992 700 992 701 992 667 993 662 993 700 993 675 994 667 994 701 994 669 995 701 995 702 995 669 996 675 996 701 996 664 997 702 997 703 997 664 998 669 998 702 998 661 999 703 999 704 999 661 1000 664 1000 703 1000 283 1001 598 1001 284 1001 284 1002 598 1002 550 1002 550 1003 599 1003 551 1003 598 1004 599 1004 550 1004 551 1005 600 1005 552 1005 552 1006 600 1006 555 1006 599 1007 600 1007 551 1007 600 1008 605 1008 555 1008 555 1009 606 1009 556 1009 605 1010 606 1010 555 1010 556 1011 607 1011 557 1011 606 1012 607 1012 556 1012 557 1013 608 1013 558 1013 607 1014 608 1014 557 1014 558 1015 609 1015 559 1015 608 1016 609 1016 558 1016 559 1017 615 1017 546 1017 609 1018 615 1018 559 1018 546 1019 616 1019 545 1019 545 1020 616 1020 544 1020 615 1021 616 1021 546 1021 616 1022 611 1022 544 1022 544 1023 613 1023 543 1023 611 1024 613 1024 544 1024 543 1025 257 1025 259 1025 613 1026 257 1026 543 1026 255 1027 563 1027 256 1027 256 1028 563 1028 519 1028 519 1029 566 1029 520 1029 563 1030 566 1030 519 1030 520 1031 568 1031 523 1031 523 1032 568 1032 521 1032 566 1033 568 1033 520 1033 568 1034 569 1034 521 1034 521 1035 570 1035 524 1035 569 1036 570 1036 521 1036 524 1037 571 1037 516 1037 570 1038 571 1038 524 1038 516 1039 572 1039 515 1039 571 1040 572 1040 516 1040 515 1041 573 1041 513 1041 572 1042 573 1042 515 1042 513 1043 581 1043 512 1043 573 1044 581 1044 513 1044 512 1045 582 1045 514 1045 514 1046 582 1046 510 1046 581 1047 582 1047 512 1047 582 1048 583 1048 510 1048 510 1049 579 1049 509 1049 583 1050 579 1050 510 1050 509 1051 229 1051 231 1051 579 1052 229 1052 509 1052 227 1053 577 1053 228 1053 228 1054 577 1054 485 1054 485 1055 578 1055 486 1055 577 1056 578 1056 485 1056 486 1057 584 1057 484 1057 484 1058 584 1058 480 1058 578 1059 584 1059 486 1059 584 1060 585 1060 480 1060 480 1061 589 1061 477 1061 585 1062 589 1062 480 1062 477 1063 590 1063 475 1063 589 1064 590 1064 477 1064 475 1065 591 1065 478 1065 590 1066 591 1066 475 1066 478 1067 593 1067 479 1067 591 1068 593 1068 478 1068 479 1069 594 1069 474 1069 593 1070 594 1070 479 1070 474 1071 602 1071 473 1071 473 1072 602 1072 472 1072 594 1073 602 1073 474 1073 602 1074 587 1074 472 1074 472 1075 588 1075 470 1075 587 1076 588 1076 472 1076 470 1077 201 1077 203 1077 588 1078 201 1078 470 1078 199 1079 619 1079 200 1079 200 1080 619 1080 458 1080 458 1081 620 1081 459 1081 619 1082 620 1082 458 1082 459 1083 621 1083 460 1083 460 1084 621 1084 462 1084 620 1085 621 1085 459 1085 621 1086 622 1086 462 1086 462 1087 623 1087 463 1087 622 1088 623 1088 462 1088 463 1089 630 1089 464 1089 623 1090 630 1090 463 1090 464 1091 631 1091 453 1091 630 1092 631 1092 464 1092 453 1093 632 1093 451 1093 631 1094 632 1094 453 1094 451 1095 633 1095 454 1095 632 1096 633 1096 451 1096 454 1097 634 1097 450 1097 450 1098 634 1098 448 1098 633 1099 634 1099 454 1099 634 1100 627 1100 448 1100 448 1101 628 1101 446 1101 627 1102 628 1102 448 1102 446 1103 173 1103 175 1103 628 1104 173 1104 446 1104 171 1105 652 1105 172 1105 172 1106 652 1106 501 1106 501 1107 659 1107 502 1107 652 1108 659 1108 501 1108 502 1109 674 1109 503 1109 503 1110 674 1110 496 1110 659 1111 674 1111 502 1111 674 1112 676 1112 496 1112 496 1113 668 1113 494 1113 676 1114 668 1114 496 1114 494 1115 670 1115 497 1115 668 1116 670 1116 494 1116 497 1117 671 1117 498 1117 670 1118 671 1118 497 1118 498 1119 672 1119 499 1119 671 1120 672 1120 498 1120 499 1121 673 1121 500 1121 672 1122 673 1122 499 1122 500 1123 663 1123 493 1123 493 1124 663 1124 492 1124 673 1125 663 1125 500 1125 663 1126 665 1126 492 1126 492 1127 666 1127 489 1127 665 1128 666 1128 492 1128 489 1129 145 1129 147 1129 666 1130 145 1130 489 1130 143 1131 639 1131 144 1131 144 1132 639 1132 538 1132 538 1133 642 1133 537 1133 639 1134 642 1134 538 1134 537 1135 643 1135 539 1135 539 1136 643 1136 540 1136 642 1137 643 1137 537 1137 643 1138 644 1138 540 1138 540 1139 645 1139 541 1139 644 1140 645 1140 540 1140 541 1141 646 1141 542 1141 645 1142 646 1142 541 1142 542 1143 647 1143 534 1143 646 1144 647 1144 542 1144 534 1145 654 1145 533 1145 647 1146 654 1146 534 1146 533 1147 655 1147 531 1147 654 1148 655 1148 533 1148 531 1149 656 1149 530 1149 530 1150 656 1150 532 1150 655 1151 656 1151 531 1151 656 1152 657 1152 532 1152 532 1153 658 1153 528 1153 657 1154 658 1154 532 1154 528 1155 117 1155 119 1155 658 1156 117 1156 528 1156 705 1157 399 1157 706 1157 706 1158 401 1158 707 1158 399 1159 401 1159 706 1159 708 1160 397 1160 705 1160 705 1161 397 1161 399 1161 401 1162 403 1162 707 1162 403 1163 709 1163 707 1163 710 1164 395 1164 708 1164 708 1165 395 1165 397 1165 403 1166 405 1166 709 1166 405 1167 711 1167 709 1167 90 1168 298 1168 710 1168 710 1169 298 1169 395 1169 405 1170 407 1170 711 1170 90 1171 87 1171 298 1171 407 1172 712 1172 711 1172 87 1173 297 1173 298 1173 407 1174 409 1174 712 1174 87 1175 91 1175 297 1175 409 1176 713 1176 712 1176 91 1177 296 1177 297 1177 409 1178 411 1178 713 1178 91 1179 93 1179 296 1179 411 1180 714 1180 713 1180 93 1181 295 1181 296 1181 411 1182 413 1182 714 1182 93 1183 95 1183 295 1183 413 1184 715 1184 714 1184 95 1185 294 1185 295 1185 413 1186 415 1186 715 1186 95 1187 97 1187 294 1187 415 1188 716 1188 715 1188 97 1189 293 1189 294 1189 415 1190 417 1190 716 1190 97 1191 99 1191 293 1191 417 1192 717 1192 716 1192 99 1193 292 1193 293 1193 417 1194 285 1194 717 1194 99 1195 101 1195 292 1195 285 1196 115 1196 717 1196 101 1197 291 1197 292 1197 101 1198 104 1198 291 1198 285 1199 113 1199 115 1199 286 1200 113 1200 285 1200 104 1201 290 1201 291 1201 290 1202 105 1202 289 1202 104 1203 105 1203 290 1203 286 1204 111 1204 113 1204 287 1205 111 1205 286 1205 289 1206 107 1206 288 1206 105 1207 107 1207 289 1207 288 1208 109 1208 287 1208 287 1209 109 1209 111 1209 107 1210 109 1210 288 1210 717 1211 115 1211 116 1211 717 1212 116 1212 525 1212 716 1213 525 1213 511 1213 716 1214 717 1214 525 1214 715 1215 511 1215 507 1215 715 1216 716 1216 511 1216 714 1217 507 1217 504 1217 714 1218 715 1218 507 1218 713 1219 504 1219 490 1219 713 1220 714 1220 504 1220 712 1221 490 1221 483 1221 712 1222 713 1222 490 1222 711 1223 483 1223 476 1223 711 1224 476 1224 469 1224 711 1225 712 1225 483 1225 709 1226 711 1226 469 1226 707 1227 469 1227 465 1227 707 1228 709 1228 469 1228 706 1229 465 1229 455 1229 706 1230 707 1230 465 1230 705 1231 455 1231 457 1231 705 1232 706 1232 455 1232 708 1233 457 1233 461 1233 708 1234 705 1234 457 1234 710 1235 461 1235 468 1235 710 1236 708 1236 461 1236 90 1237 468 1237 88 1237 90 1238 710 1238 468 1238 422 1239 344 1239 343 1239 389 1240 387 1240 422 1240 391 1241 343 1241 342 1241 391 1242 422 1242 343 1242 391 1243 389 1243 422 1243 393 1244 391 1244 342 1244 420 1245 342 1245 341 1245 420 1246 393 1246 342 1246 394 1247 393 1247 420 1247 392 1248 394 1248 420 1248 425 1249 361 1249 363 1249 371 1250 372 1250 425 1250 370 1251 425 1251 363 1251 370 1252 371 1252 425 1252 369 1253 363 1253 365 1253 369 1254 370 1254 363 1254 424 1255 365 1255 366 1255 424 1256 369 1256 365 1256 368 1257 369 1257 424 1257 83 1258 368 1258 424 1258 430 1259 352 1259 355 1259 380 1260 382 1260 430 1260 378 1261 430 1261 355 1261 378 1262 380 1262 430 1262 376 1263 355 1263 357 1263 376 1264 378 1264 355 1264 428 1265 357 1265 358 1265 428 1266 376 1266 357 1266 374 1267 376 1267 428 1267 372 1268 374 1268 428 1268 434 1269 351 1269 350 1269 390 1270 392 1270 434 1270 388 1271 350 1271 348 1271 388 1272 434 1272 350 1272 388 1273 390 1273 434 1273 386 1274 388 1274 348 1274 432 1275 348 1275 345 1275 432 1276 386 1276 348 1276 384 1277 386 1277 432 1277 382 1278 384 1278 432 1278 85 1279 86 1279 718 1279 373 1280 85 1280 718 1280 437 1281 718 1281 719 1281 437 1282 719 1282 436 1282 437 1283 373 1283 718 1283 375 1284 373 1284 437 1284 377 1285 375 1285 437 1285 443 1286 340 1286 339 1286 379 1287 377 1287 443 1287 381 1288 339 1288 338 1288 381 1289 443 1289 339 1289 381 1290 379 1290 443 1290 383 1291 381 1291 338 1291 441 1292 338 1292 337 1292 441 1293 383 1293 338 1293 385 1294 383 1294 441 1294 387 1295 385 1295 441 1295 720 1296 79 1296 439 1296 720 1297 80 1297 79 1297 721 1298 81 1298 80 1298 721 1299 80 1299 720 1299 77 1300 718 1300 86 1300 77 1301 86 1301 81 1301 77 1302 81 1302 721 1302 75 1303 719 1303 718 1303 75 1304 718 1304 77 1304 74 1305 436 1305 719 1305 74 1306 719 1306 75 1306 72 1307 436 1307 74 1307 704 1308 487 1308 482 1308 704 1309 482 1309 648 1309 704 1310 648 1310 661 1310 452 1311 677 1311 629 1311 629 1312 677 1312 636 1312 447 1313 677 1313 452 1313 482 1314 452 1314 648 1314 648 1315 452 1315 629 1315 690 1316 527 1316 522 1316 690 1317 522 1317 567 1317 690 1318 567 1318 565 1318 535 1319 691 1319 592 1319 592 1320 691 1320 596 1320 547 1321 691 1321 535 1321 522 1322 592 1322 567 1322 535 1323 592 1323 522 1323 435 1324 72 1324 71 1324 722 1325 71 1325 69 1325 722 1326 435 1326 71 1326 442 1327 69 1327 68 1327 442 1328 722 1328 69 1328 440 1329 62 1329 61 1329 723 1330 61 1330 59 1330 723 1331 440 1331 61 1331 421 1332 59 1332 57 1332 421 1333 723 1333 59 1333 423 1334 367 1334 724 1334 725 1335 724 1335 726 1335 725 1336 423 1336 724 1336 438 1337 726 1337 439 1337 438 1338 725 1338 726 1338 419 1339 52 1339 50 1339 727 1340 50 1340 49 1340 727 1341 419 1341 50 1341 433 1342 49 1342 47 1342 433 1343 727 1343 49 1343 431 1344 347 1344 728 1344 729 1345 728 1345 730 1345 729 1346 431 1346 728 1346 429 1347 730 1347 353 1347 429 1348 729 1348 730 1348 427 1349 359 1349 731 1349 732 1350 731 1350 733 1350 732 1351 427 1351 731 1351 426 1352 733 1352 362 1352 426 1353 732 1353 733 1353 721 1354 76 1354 77 1354 396 1355 721 1355 720 1355 396 1356 76 1356 721 1356 439 1357 396 1357 720 1357 398 1358 439 1358 726 1358 398 1359 396 1359 439 1359 724 1360 398 1360 726 1360 400 1361 724 1361 367 1361 400 1362 398 1362 724 1362 364 1363 400 1363 367 1363 402 1364 400 1364 364 1364 360 1365 402 1365 364 1365 404 1366 402 1366 360 1366 362 1367 404 1367 360 1367 406 1368 404 1368 362 1368 733 1369 406 1369 362 1369 731 1370 406 1370 733 1370 408 1371 406 1371 731 1371 359 1372 408 1372 731 1372 410 1373 408 1373 359 1373 356 1374 410 1374 359 1374 412 1375 356 1375 354 1375 412 1376 410 1376 356 1376 414 1377 354 1377 353 1377 414 1378 412 1378 354 1378 730 1379 414 1379 353 1379 416 1380 730 1380 728 1380 416 1381 414 1381 730 1381 347 1382 416 1382 728 1382 418 1383 416 1383 347 1383 418 1384 347 1384 346 1384 349 1385 418 1385 346 1385 43 1386 418 1386 349 1386 43 1387 349 1387 44 1387 678 1388 677 1388 447 1388 678 1389 447 1389 444 1389 679 1390 444 1390 445 1390 679 1391 678 1391 444 1391 680 1392 445 1392 449 1392 680 1393 679 1393 445 1393 681 1394 449 1394 456 1394 681 1395 680 1395 449 1395 682 1396 456 1396 466 1396 682 1397 681 1397 456 1397 683 1398 466 1398 467 1398 683 1399 682 1399 466 1399 471 1400 683 1400 467 1400 684 1401 683 1401 471 1401 481 1402 684 1402 471 1402 685 1403 684 1403 481 1403 491 1404 685 1404 481 1404 686 1405 685 1405 491 1405 505 1406 686 1406 491 1406 687 1407 686 1407 505 1407 508 1408 687 1408 505 1408 688 1409 687 1409 508 1409 518 1410 688 1410 508 1410 689 1411 688 1411 518 1411 527 1412 689 1412 518 1412 690 1413 689 1413 527 1413 692 1414 691 1414 547 1414 692 1415 547 1415 549 1415 693 1416 549 1416 554 1416 693 1417 692 1417 549 1417 694 1418 554 1418 560 1418 694 1419 693 1419 554 1419 695 1420 560 1420 553 1420 695 1421 694 1421 560 1421 696 1422 553 1422 548 1422 696 1423 695 1423 553 1423 697 1424 548 1424 536 1424 697 1425 696 1425 548 1425 529 1426 697 1426 536 1426 698 1427 697 1427 529 1427 526 1428 698 1428 529 1428 699 1429 698 1429 526 1429 517 1430 699 1430 526 1430 700 1431 699 1431 517 1431 506 1432 700 1432 517 1432 701 1433 700 1433 506 1433 495 1434 701 1434 506 1434 702 1435 701 1435 495 1435 488 1436 702 1436 495 1436 703 1437 702 1437 488 1437 487 1438 703 1438 488 1438 704 1439 703 1439 487 1439 725 1440 83 1440 423 1440 423 1441 83 1441 424 1441 438 1442 78 1442 83 1442 438 1443 83 1443 725 1443 732 1444 372 1444 427 1444 427 1445 372 1445 428 1445 426 1446 425 1446 372 1446 426 1447 372 1447 732 1447 729 1448 382 1448 431 1448 431 1449 382 1449 432 1449 429 1450 430 1450 382 1450 429 1451 382 1451 729 1451 727 1452 392 1452 419 1452 419 1453 392 1453 420 1453 433 1454 434 1454 392 1454 433 1455 392 1455 727 1455 723 1456 387 1456 440 1456 440 1457 387 1457 441 1457 421 1458 422 1458 387 1458 421 1459 387 1459 723 1459 722 1460 377 1460 435 1460 435 1461 377 1461 437 1461 442 1462 443 1462 377 1462 442 1463 377 1463 722 1463 41 1464 597 1464 27 1464 27 1465 597 1465 734 1465 734 1466 603 1466 735 1466 597 1467 603 1467 734 1467 735 1468 612 1468 736 1468 603 1469 612 1469 735 1469 736 1470 617 1470 737 1470 612 1471 617 1471 736 1471 737 1472 625 1472 738 1472 617 1473 625 1473 737 1473 738 1474 637 1474 739 1474 625 1475 637 1475 738 1475 739 1476 638 1476 740 1476 637 1477 638 1477 739 1477 740 1478 640 1478 741 1478 638 1479 640 1479 740 1479 741 1480 660 1480 742 1480 640 1481 660 1481 741 1481 742 1482 651 1482 743 1482 660 1483 651 1483 742 1483 743 1484 650 1484 744 1484 651 1485 650 1485 743 1485 744 1486 649 1486 745 1486 650 1487 649 1487 744 1487 745 1488 28 1488 1 1488 649 1489 28 1489 745 1489 26 1490 27 1490 313 1490 313 1491 734 1491 316 1491 27 1492 734 1492 313 1492 316 1493 735 1493 317 1493 734 1494 735 1494 316 1494 317 1495 736 1495 319 1495 735 1496 736 1496 317 1496 319 1497 737 1497 322 1497 736 1498 737 1498 319 1498 322 1499 738 1499 323 1499 737 1500 738 1500 322 1500 323 1501 739 1501 325 1501 738 1502 739 1502 323 1502 739 1503 740 1503 325 1503 325 1504 741 1504 327 1504 740 1505 741 1505 325 1505 327 1506 742 1506 330 1506 741 1507 742 1507 327 1507 330 1508 743 1508 332 1508 332 1509 743 1509 334 1509 742 1510 743 1510 330 1510 743 1511 744 1511 334 1511 334 1512 745 1512 335 1512 335 1513 745 1513 0 1513 744 1514 745 1514 334 1514 745 1515 1 1515 0 1515

+
+
+
+
+ + + + + + + + + + +
diff --git a/sdf_models/models/output_shaft_211118/model.config b/sdf_models/models/output_shaft_211118/model.config new file mode 100644 index 0000000..4a92ed2 --- /dev/null +++ b/sdf_models/models/output_shaft_211118/model.config @@ -0,0 +1,11 @@ + + + output_shaft_211118 + Version + model.sdf + + Author + Email + + Comment + diff --git a/sdf_models/models/output_shaft_211118/model.sdf b/sdf_models/models/output_shaft_211118/model.sdf new file mode 100644 index 0000000..99ec299 --- /dev/null +++ b/sdf_models/models/output_shaft_211118/model.sdf @@ -0,0 +1,39 @@ + + + + 0.000000 0.021391 0.020764 0.000000 0.000000 0.000000 + false + false + + 0.021818 0.000000 0.000000 0.000000 0.000000 0.000000 + + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 0.020176 + + 0.000004 + -0.000000 + -0.000000 + 0.000007 + 0.000000 + 0.000007 + + + + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + + + model://output_shaft_211118/meshes/output_shaft_211118.dae + + + + + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + + + model://output_shaft_211118/meshes/output_shaft_211118.dae + + + + + + diff --git a/sdf_models/models/pin_13d007/frames.json b/sdf_models/models/pin_13d007/frames.json new file mode 100644 index 0000000..c5889df --- /dev/null +++ b/sdf_models/models/pin_13d007/frames.json @@ -0,0 +1,36 @@ +{ + "features": { + "grasp-poses": { + "Gripper_for_Part__Feature101": { + "placement": { + "position": { + "x": 0.016868083435990104, + "y": -0.032499999999999994, + "z": -0.006282337239951061 + }, + "orientation": { + "x": 0.365072162647178, + "y": 0.6583017226394415, + "z": -0.6583017226394415, + "w": 2.4415155878685884 + } + }, + "distance": 2.9902227596730917 + } + } + }, + "label": "pin_13d007", + "placement": { + "position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "orientation": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "w": 0.0 + } + } +} \ No newline at end of file diff --git a/sdf_models/models/pin_13d007/meshes/pin_13d007.dae b/sdf_models/models/pin_13d007/meshes/pin_13d007.dae new file mode 100644 index 0000000..ddcaced --- /dev/null +++ b/sdf_models/models/pin_13d007/meshes/pin_13d007.dae @@ -0,0 +1,51 @@ + + + 2022-03-03T17:24:28.233191 + 2022-03-03T17:24:28.233191 + Z_UP + + + + + + -8 18.64331 1.355045 5 18.30034 1.469625 5 18.64331 1.355045 -8 18.30034 1.469625 -8 18.9489 1.161714 5 18.9489 1.161714 -8 19.19935 0.9008695 5 19.19935 0.9008695 5 19.38009 0.5876692 -8 19.38009 0.5876692 -8 19.48062 0.2403158 5 19.48062 0.2403158 5 19.49511 -0.121004 -8 19.49511 -0.121004 -8 19.42271 -0.4752914 5 19.42271 -0.4752914 -8 19.26762 -0.8019566 5 19.26762 -0.8019566 -8 19.03887 -1.082015 5 19.03887 -1.082015 -8 18.74974 -1.299191 5 18.74974 -1.299191 5 18.41703 -1.440862 -8 18.41703 -1.440862 -8 18.06009 -1.498796 5 18.06009 -1.498796 -8 17.69966 -1.469625 5 17.69966 -1.469625 -8 17.35669 -1.355045 5 17.35669 -1.355045 -8 17.0511 -1.161714 5 17.0511 -1.161714 5 16.80065 -0.9008695 -8 16.80065 -0.9008695 5 16.61991 -0.5876692 -8 16.61991 -0.5876692 5 16.51938 -0.2403158 -8 16.51938 -0.2403158 -8 16.50489 0.121004 5 16.50489 0.121004 5 16.57729 0.4752914 -8 16.57729 0.4752914 5 16.73238 0.8019566 -8 16.73238 0.8019566 -8 16.96113 1.082015 5 16.96113 1.082015 -8 17.25026 1.299191 5 17.25026 1.299191 -8 17.58297 1.440862 5 17.58297 1.440862 5 17.93991 1.498796 -8 17.93991 1.498796 + + + + + + + + + + -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 + + + + + + + + + + + + + + +

0 0 1 0 2 0 0 1 3 1 1 1 4 2 2 2 5 2 4 3 0 3 2 3 6 4 7 4 8 4 6 5 5 5 7 5 6 6 4 6 5 6 9 7 6 7 8 7 10 8 11 8 12 8 10 9 8 9 11 9 10 10 9 10 8 10 13 11 10 11 12 11 14 12 12 12 15 12 14 13 13 13 12 13 16 14 15 14 17 14 16 15 14 15 15 15 18 16 17 16 19 16 18 17 16 17 17 17 20 18 21 18 22 18 20 19 19 19 21 19 20 20 18 20 19 20 23 21 20 21 22 21 24 22 22 22 25 22 24 23 23 23 22 23 26 24 25 24 27 24 26 25 24 25 25 25 28 26 26 26 27 26 28 27 27 27 29 27 30 28 31 28 32 28 30 29 29 29 31 29 30 30 28 30 29 30 33 31 32 31 34 31 33 32 30 32 32 32 35 33 34 33 36 33 35 34 33 34 34 34 37 35 35 35 36 35 38 36 39 36 40 36 38 37 36 37 39 37 38 38 37 38 36 38 41 39 40 39 42 39 41 40 38 40 40 40 43 41 41 41 42 41 44 42 42 42 45 42 44 43 43 43 42 43 46 44 45 44 47 44 46 45 44 45 45 45 48 46 49 46 50 46 48 47 47 47 49 47 48 48 46 48 47 48 51 49 48 49 50 49 3 50 50 50 1 50 3 51 51 51 50 51 2 52 1 52 50 52 2 53 50 53 49 53 34 54 39 54 36 54 31 55 34 55 32 55 11 56 8 56 7 56 11 57 7 57 5 57 11 58 5 58 2 58 25 59 29 59 27 59 19 60 17 60 15 60 19 61 15 61 12 61 21 62 49 62 47 62 21 63 47 63 45 63 21 64 45 64 42 64 21 65 42 65 40 65 21 66 40 66 39 66 21 67 31 67 29 67 21 68 25 68 22 68 21 69 12 69 11 69 21 70 39 70 34 70 21 71 19 71 12 71 21 72 2 72 49 72 21 73 34 73 31 73 21 74 11 74 2 74 21 75 29 75 25 75 3 76 0 76 51 76 41 77 37 77 38 77 6 78 9 78 4 78 4 79 9 79 0 79 37 80 28 80 35 80 35 81 28 81 33 81 33 82 28 82 30 82 41 83 28 83 37 83 10 84 13 84 9 84 51 85 13 85 48 85 0 86 13 86 51 86 9 87 13 87 0 87 28 88 24 88 26 88 14 89 16 89 13 89 24 90 20 90 23 90 18 91 20 91 16 91 48 92 20 92 46 92 46 93 20 93 44 93 44 94 20 94 43 94 43 95 20 95 41 95 13 96 20 96 48 96 41 97 20 97 28 97 28 98 20 98 24 98 16 99 20 99 13 99

+
+
+
+
+ + + + + + + + + + +
diff --git a/sdf_models/models/pin_13d007/model.config b/sdf_models/models/pin_13d007/model.config new file mode 100644 index 0000000..c17de25 --- /dev/null +++ b/sdf_models/models/pin_13d007/model.config @@ -0,0 +1,11 @@ + + + pin_13d007 + Version + model.sdf + + Author + Email + + Comment + diff --git a/sdf_models/models/pin_13d007/model.sdf b/sdf_models/models/pin_13d007/model.sdf new file mode 100644 index 0000000..60817d1 --- /dev/null +++ b/sdf_models/models/pin_13d007/model.sdf @@ -0,0 +1,39 @@ + + + + 0.008000 -0.016505 0.001499 0.000000 0.000000 0.000000 + false + false + + -0.001500 0.018000 0.000000 -1.570796 1.369209 -1.570796 + + 0.000000 0.000000 0.000000 -1.570796 1.369209 -1.570796 + 0.000092 + + 0.000000 + -0.000000 + -0.000000 + 0.000000 + 0.000000 + 0.000000 + + + + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + + + model://pin_13d007\meshes\pin_13d007.dae + + + + + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + + + model://pin_13d007\meshes\pin_13d007.dae + + + + + + diff --git a/sdf_models/models/pin_13d008/frames.json b/sdf_models/models/pin_13d008/frames.json new file mode 100644 index 0000000..da73577 --- /dev/null +++ b/sdf_models/models/pin_13d008/frames.json @@ -0,0 +1,36 @@ +{ + "features": { + "grasp-poses": { + "Gripper_for_Part__Feature102": { + "placement": { + "position": { + "x": 0.013874705362934565, + "y": -0.032499999999999994, + "z": 0.011467020148747559 + }, + "orientation": { + "x": 0.365072162647178, + "y": 0.6583017226394415, + "z": -0.6583017226394415, + "w": 2.4415155878685884 + } + }, + "distance": 2.9902227596730926 + } + } + }, + "label": "pin_13d008", + "placement": { + "position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "orientation": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "w": 0.0 + } + } +} \ No newline at end of file diff --git a/sdf_models/models/pin_13d008/meshes/pin_13d008.dae b/sdf_models/models/pin_13d008/meshes/pin_13d008.dae new file mode 100644 index 0000000..9aa9786 --- /dev/null +++ b/sdf_models/models/pin_13d008/meshes/pin_13d008.dae @@ -0,0 +1,51 @@ + + + 2022-03-03T17:24:28.081730 + 2022-03-03T17:24:28.081730 + Z_UP + + + + + + -8 9.643314 16.9435 5 9.300337 17.05808 5 9.643314 16.9435 -8 9.300337 17.05808 -8 9.948904 16.75017 5 9.948904 16.75017 -8 10.19935 16.48933 5 10.19935 16.48933 5 10.38009 16.17613 -8 10.38009 16.17613 -8 10.48062 15.82877 5 10.48062 15.82877 5 10.49511 15.46745 -8 10.49511 15.46745 -8 10.42271 15.11317 5 10.42271 15.11317 -8 10.26762 14.7865 5 10.26762 14.7865 -8 10.03887 14.50644 5 10.03887 14.50644 -8 9.749736 14.28927 5 9.749736 14.28927 5 9.417033 14.1476 -8 9.417033 14.1476 -8 9.060094 14.08966 5 9.060094 14.08966 -8 8.699663 14.11883 5 8.699663 14.11883 -8 8.356686 14.23341 5 8.356686 14.23341 -8 8.051096 14.42674 5 8.051096 14.42674 5 7.800653 14.68759 -8 7.800653 14.68759 5 7.619911 15.00079 -8 7.619911 15.00079 5 7.519376 15.34814 -8 7.519376 15.34814 -8 7.504889 15.70946 5 7.504889 15.70946 5 7.577292 16.06375 -8 7.577292 16.06375 5 7.732378 16.39041 -8 7.732378 16.39041 -8 7.961134 16.67047 5 7.961134 16.67047 -8 8.250264 16.88765 5 8.250264 16.88765 -8 8.582967 17.02932 5 8.582967 17.02932 5 8.939906 17.08725 -8 8.939906 17.08725 + + + + + + + + + + -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 -1.332268e-15 0.200225 0.9797499 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 1 2.531565e-16 1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 -1 -2.531565e-16 -1.308068e-15 + + + + + + + + + + + + + + +

0 0 1 0 2 0 0 1 3 1 1 1 4 2 2 2 5 2 4 3 0 3 2 3 6 4 7 4 8 4 6 5 5 5 7 5 6 6 4 6 5 6 9 7 6 7 8 7 10 8 11 8 12 8 10 9 8 9 11 9 10 10 9 10 8 10 13 11 10 11 12 11 14 12 12 12 15 12 14 13 13 13 12 13 16 14 15 14 17 14 16 15 14 15 15 15 18 16 17 16 19 16 18 17 16 17 17 17 20 18 21 18 22 18 20 19 19 19 21 19 20 20 18 20 19 20 23 21 20 21 22 21 24 22 22 22 25 22 24 23 23 23 22 23 26 24 25 24 27 24 26 25 24 25 25 25 28 26 26 26 27 26 28 27 27 27 29 27 30 28 31 28 32 28 30 29 29 29 31 29 30 30 28 30 29 30 33 31 32 31 34 31 33 32 30 32 32 32 35 33 34 33 36 33 35 34 33 34 34 34 37 35 35 35 36 35 38 36 39 36 40 36 38 37 36 37 39 37 38 38 37 38 36 38 41 39 40 39 42 39 41 40 38 40 40 40 43 41 41 41 42 41 44 42 42 42 45 42 44 43 43 43 42 43 46 44 45 44 47 44 46 45 44 45 45 45 48 46 49 46 50 46 48 47 47 47 49 47 48 48 46 48 47 48 51 49 48 49 50 49 3 50 50 50 1 50 3 51 51 51 50 51 2 52 1 52 50 52 2 53 50 53 49 53 32 54 42 54 40 54 32 55 40 55 39 55 32 56 39 56 36 56 32 57 36 57 34 57 29 58 47 58 45 58 29 59 45 59 42 59 29 60 32 60 31 60 29 61 42 61 32 61 25 62 29 62 27 62 17 63 15 63 12 63 17 64 12 64 11 64 21 65 49 65 47 65 21 66 25 66 22 66 21 67 19 67 17 67 21 68 11 68 8 68 21 69 8 69 7 69 21 70 7 70 5 70 21 71 5 71 2 71 21 72 2 72 49 72 21 73 47 73 29 73 21 74 29 74 25 74 21 75 17 75 11 75 3 76 0 76 51 76 51 77 0 77 48 77 43 78 33 78 41 78 41 79 33 79 38 79 38 80 33 80 37 80 37 81 33 81 35 81 46 82 28 82 44 82 44 83 28 83 43 83 33 84 28 84 30 84 43 85 28 85 33 85 28 86 24 86 26 86 14 87 16 87 13 87 13 88 16 88 10 88 24 89 20 89 23 89 18 90 20 90 16 90 10 91 20 91 9 91 9 92 20 92 6 92 6 93 20 93 4 93 4 94 20 94 0 94 48 95 20 95 46 95 0 96 20 96 48 96 16 97 20 97 10 97 46 98 20 98 28 98 28 99 20 99 24 99

+
+
+
+
+ + + + + + + + + + +
diff --git a/sdf_models/models/pin_13d008/model.config b/sdf_models/models/pin_13d008/model.config new file mode 100644 index 0000000..831fcd7 --- /dev/null +++ b/sdf_models/models/pin_13d008/model.config @@ -0,0 +1,11 @@ + + + pin_13d008 + Version + model.sdf + + Author + Email + + Comment + diff --git a/sdf_models/models/pin_13d008/model.sdf b/sdf_models/models/pin_13d008/model.sdf new file mode 100644 index 0000000..063c7a9 --- /dev/null +++ b/sdf_models/models/pin_13d008/model.sdf @@ -0,0 +1,39 @@ + + + + 0.008000 -0.007505 -0.014090 0.000000 0.000000 0.000000 + false + false + + -0.001500 0.009000 0.015588 -1.570796 1.369209 -1.570796 + + 0.000000 0.000000 0.000000 -1.570796 1.369209 -1.570796 + 0.000092 + + 0.000000 + -0.000000 + -0.000000 + 0.000000 + 0.000000 + 0.000000 + + + + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + + + model://pin_13d008\meshes\pin_13d008.dae + + + + + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + + + model://pin_13d008\meshes\pin_13d008.dae + + + + + +