From c9c407cc2b3982ba4883ed139b7ec30668626d53 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 18 Sep 2019 15:10:36 +0200 Subject: [PATCH 01/53] Rewrote UI for ObjectManipulation without using of OptionsGrope --- src/slic3r/GUI/GUI_ObjectList.cpp | 3 +- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 346 +++++++++++++++++++++- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 10 +- src/slic3r/GUI/wxExtensions.cpp | 2 + 4 files changed, 354 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 51098647f..c67f0d304 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2217,7 +2217,8 @@ void ObjectList::part_selection_changed() wxGetApp().obj_manipul()->get_og()->set_name(" " + og_name + " "); if (item) { - wxGetApp().obj_manipul()->get_og()->set_value("object_name", m_objects_model->GetName(item)); + // wxGetApp().obj_manipul()->get_og()->set_value("object_name", m_objects_model->GetName(item)); + wxGetApp().obj_manipul()->update_item_name(m_objects_model->GetName(item)); wxGetApp().obj_manipul()->update_warning_icon_state(get_mesh_errors_list(obj_idx, volume_id)); } } diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 2295ac0b6..963ae53ab 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -112,7 +112,295 @@ void msw_rescale_word_local_combo(wxBitmapComboBox* combo) combo->SetValue(selection); } +static void set_font_and_background_style(wxWindow* win, const wxFont& font) +{ + win->SetFont(font); + win->SetBackgroundStyle(wxBG_STYLE_PAINT); +} +ObjectManipulation::ObjectManipulation(wxWindow* parent) : + OG_Settings(parent, true) +#ifndef __APPLE__ + , m_focused_option("") +#endif // __APPLE__ +{ + const int border = wxOSX ? 0 : 4; + const int em = wxGetApp().em_unit(); + m_main_grid_sizer = new wxFlexGridSizer(2, 3, 3); // "Name/label", "String name / Editors" + m_main_grid_sizer->SetFlexibleDirection(wxBOTH); + + // Add "Name" label with warning icon + auto sizer = new wxBoxSizer(wxHORIZONTAL); + + m_fix_throught_netfab_bitmap = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap); + if (is_windows10()) + m_fix_throught_netfab_bitmap->Bind(wxEVT_CONTEXT_MENU, [this](wxCommandEvent& e) + { + // if object/sub-object has no errors + if (m_fix_throught_netfab_bitmap->GetBitmap().GetRefData() == wxNullBitmap.GetRefData()) + return; + + wxGetApp().obj_list()->fix_through_netfabb(); + update_warning_icon_state(wxGetApp().obj_list()->get_mesh_errors_list()); + }); + + sizer->Add(m_fix_throught_netfab_bitmap); + + auto name_label = new wxStaticText(m_parent, wxID_ANY, _(L("Name"))+":"); + set_font_and_background_style(name_label, wxGetApp().normal_font()); + name_label->SetToolTip(_(L("Object name"))); + sizer->Add(name_label); + + m_main_grid_sizer->Add(sizer); + + // Add name of the item + const wxSize name_size = wxSize(20 * em, wxDefaultCoord); + m_item_name = new wxStaticText(m_parent, wxID_ANY, "", wxDefaultPosition, name_size, wxST_ELLIPSIZE_MIDDLE); + set_font_and_background_style(m_item_name, wxGetApp().bold_font()); + + m_main_grid_sizer->Add(m_item_name, 0, wxEXPAND); + + // Add labels grid sizer + m_labels_grid_sizer = new wxFlexGridSizer(1, 3, 3); // "Name/label", "String name / Editors" + m_labels_grid_sizer->SetFlexibleDirection(wxBOTH); + + // Add world local combobox + m_word_local_combo = create_word_local_combo(parent); + m_word_local_combo->Bind(wxEVT_COMBOBOX, ([this](wxCommandEvent& evt) { + this->set_world_coordinates(evt.GetSelection() != 1); + }), m_word_local_combo->GetId()); + + // Small trick to correct layouting in different view_mode : + // Show empty string of a same height as a m_word_local_combo, when m_word_local_combo is hidden + sizer = new wxBoxSizer(wxHORIZONTAL); + m_empty_str = new wxStaticText(parent, wxID_ANY, ""); + sizer->Add(m_word_local_combo); + sizer->Add(m_empty_str); + sizer->SetMinSize(wxSize(-1, m_word_local_combo->GetBestHeight(-1))); + m_labels_grid_sizer->Add(sizer); + + // Text trick to grid sizer layout: + // Height of labels should be equivalent to the edit boxes + int height = wxTextCtrl(parent, wxID_ANY, "Br").GetBestHeight(-1); + + auto add_label = [this, height](wxStaticText** label, std::string name, wxSizer* resive_sizer = nullptr) + { + *label = new wxStaticText(m_parent, wxID_ANY, _(name) + ":"); + set_font_and_background_style(m_move_Label, wxGetApp().normal_font()); + + wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); + sizer->SetMinSize(wxSize(-1, height)); + sizer->Add(*label, 0, wxALIGN_CENTER_VERTICAL); + + if (resive_sizer) + resive_sizer->Add(sizer); + else + m_labels_grid_sizer->Add(sizer); + }; + + // Add labels + add_label(&m_move_Label, L("Position")); + add_label(&m_rotate_Label, L("Rotation")); + + // additional sizer for lock and labels "Scale" & "Size" + sizer = new wxBoxSizer(wxHORIZONTAL); + + m_lock_bnt = new LockButton(parent, wxID_ANY); + m_lock_bnt->Bind(wxEVT_BUTTON, [this](wxCommandEvent& event) { + event.Skip(); + wxTheApp->CallAfter([this]() { set_uniform_scaling(m_lock_bnt->IsLocked()); }); + }); + sizer->Add(m_lock_bnt, 0, wxALIGN_CENTER_VERTICAL); + + auto v_sizer = new wxGridSizer(1, 3, 3); + + add_label(&m_scale_Label, L("Scale"), v_sizer); + wxStaticText* size_Label {nullptr}; + add_label(&size_Label, L("Size"), v_sizer); + + sizer->Add(v_sizer, 0, wxLEFT, border); + m_labels_grid_sizer->Add(sizer); + m_main_grid_sizer->Add(m_labels_grid_sizer, 0, wxEXPAND); + + + // Add editors grid sizer + m_editors_grid_sizer = new wxFlexGridSizer(5, 3, 3); // "Name/label", "String name / Editors" + m_editors_grid_sizer->SetFlexibleDirection(wxBOTH); + + // Add Axes labels with icons + static const char axes[] = { 'X', 'Y', 'Z' }; + for (size_t axis_idx = 0; axis_idx < sizeof(axes); axis_idx++) { + const char label = axes[axis_idx]; + + wxStaticText* axis_name = new wxStaticText(m_parent, wxID_ANY, wxString(label)); + set_font_and_background_style(axis_name, wxGetApp().bold_font()); + + sizer = new wxBoxSizer(wxHORIZONTAL); + sizer->Add(axis_name, 0, wxALIGN_CENTER_VERTICAL/* | wxLEFT*/ | wxRIGHT, border); + + // We will add a button to toggle mirroring to each axis: + auto btn = new ScalableButton(parent, wxID_ANY, "mirroring_off", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER | wxTRANSPARENT_WINDOW); + btn->SetToolTip(wxString::Format(_(L("Toggle %c axis mirroring")), (int)label)); + btn->SetBitmapDisabled_(m_mirror_bitmap_hidden); + + m_mirror_buttons[axis_idx].first = btn; + m_mirror_buttons[axis_idx].second = mbShown; + + sizer->AddStretchSpacer(2); + sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL); + + btn->Bind(wxEVT_BUTTON, [this, axis_idx](wxCommandEvent&) { + Axis axis = (Axis)(axis_idx + X); + if (m_mirror_buttons[axis_idx].second == mbHidden) + return; + + GLCanvas3D* canvas = wxGetApp().plater()->canvas3D(); + Selection& selection = canvas->get_selection(); + + if (selection.is_single_volume() || selection.is_single_modifier()) { + GLVolume* volume = const_cast(selection.get_volume(*selection.get_volume_idxs().begin())); + volume->set_volume_mirror(axis, -volume->get_volume_mirror(axis)); + } + else if (selection.is_single_full_instance()) { + for (unsigned int idx : selection.get_volume_idxs()) { + GLVolume* volume = const_cast(selection.get_volume(idx)); + volume->set_instance_mirror(axis, -volume->get_instance_mirror(axis)); + } + } + else + return; + + // Update mirroring at the GLVolumes. + selection.synchronize_unselected_instances(Selection::SYNC_ROTATION_GENERAL); + selection.synchronize_unselected_volumes(); + // Copy mirroring values from GLVolumes into Model (ModelInstance / ModelVolume), trigger background processing. + canvas->do_mirror(L("Set Mirror")); + UpdateAndShow(true); + }); + + m_editors_grid_sizer->Add(sizer, 0, wxALIGN_CENTER_HORIZONTAL); + } + + m_editors_grid_sizer->AddStretchSpacer(1); + m_editors_grid_sizer->AddStretchSpacer(1); + + // add EditBoxes + auto add_edit_boxes = [this, em, parent](std::string opt_key, int axis) + { + wxTextCtrl* editor = new wxTextCtrl(parent, wxID_ANY, wxEmptyString, + wxDefaultPosition, wxSize(5 * em, wxDefaultCoord), + wxTE_PROCESS_ENTER); + + set_font_and_background_style(editor, wxGetApp().normal_font()); +#ifdef __WXOSX__ + editor->OSXDisableAllSmartSubstitutions(); +#endif // __WXOSX__ + m_editors_grid_sizer->Add(editor, 1, wxEXPAND); + }; + + // add Units + auto add_unit_text = [this, parent](std::string unit) + { + wxStaticText* unit_text = new wxStaticText(parent, wxID_ANY, _(unit)); + + set_font_and_background_style(unit_text, wxGetApp().normal_font()); + m_editors_grid_sizer->Add(unit_text, 0, wxALIGN_CENTER_VERTICAL); + }; + + for (size_t axis_idx = 0; axis_idx < sizeof(axes); axis_idx++) + add_edit_boxes("position", axis_idx); + add_unit_text(L("mm")); + + // Add drop to bed button + m_drop_to_bed_button = new ScalableButton(parent, wxID_ANY, ScalableBitmap(parent, "drop_to_bed")); + m_drop_to_bed_button->SetToolTip(_(L("Drop to bed"))); + m_drop_to_bed_button->Bind(wxEVT_BUTTON, [=](wxCommandEvent& e) { + // ??? + GLCanvas3D* canvas = wxGetApp().plater()->canvas3D(); + Selection& selection = canvas->get_selection(); + + if (selection.is_single_volume() || selection.is_single_modifier()) { + const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); + + const Geometry::Transformation& instance_trafo = volume->get_instance_transformation(); + Vec3d diff = m_cache.position - instance_trafo.get_matrix(true).inverse() * Vec3d(0., 0., get_volume_min_z(volume)); + + Plater::TakeSnapshot snapshot(wxGetApp().plater(), _(L("Drop to bed"))); + change_position_value(0, diff.x()); + change_position_value(1, diff.y()); + change_position_value(2, diff.z()); + } + }); + m_editors_grid_sizer->Add(m_drop_to_bed_button); + + for (size_t axis_idx = 0; axis_idx < sizeof(axes); axis_idx++) + add_edit_boxes("rotation", axis_idx); + add_unit_text("°"); + + // Add reset rotation button + m_reset_rotation_button = new ScalableButton(parent, wxID_ANY, ScalableBitmap(parent, "undo")); + m_reset_rotation_button->SetToolTip(_(L("Reset rotation"))); + m_reset_rotation_button->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { + GLCanvas3D* canvas = wxGetApp().plater()->canvas3D(); + Selection& selection = canvas->get_selection(); + + if (selection.is_single_volume() || selection.is_single_modifier()) { + GLVolume* volume = const_cast(selection.get_volume(*selection.get_volume_idxs().begin())); + volume->set_volume_rotation(Vec3d::Zero()); + } + else if (selection.is_single_full_instance()) { + for (unsigned int idx : selection.get_volume_idxs()) { + GLVolume* volume = const_cast(selection.get_volume(idx)); + volume->set_instance_rotation(Vec3d::Zero()); + } + } + else + return; + + // Update rotation at the GLVolumes. + selection.synchronize_unselected_instances(Selection::SYNC_ROTATION_GENERAL); + selection.synchronize_unselected_volumes(); + // Copy rotation values from GLVolumes into Model (ModelInstance / ModelVolume), trigger background processing. + canvas->do_rotate(L("Reset Rotation")); + + UpdateAndShow(true); + }); + m_editors_grid_sizer->Add(m_reset_rotation_button); + + for (size_t axis_idx = 0; axis_idx < sizeof(axes); axis_idx++) + add_edit_boxes("scale", axis_idx); + add_unit_text("%"); + + // Add reset scale button + m_reset_scale_button = new ScalableButton(parent, wxID_ANY, ScalableBitmap(parent, "undo")); + m_reset_scale_button->SetToolTip(_(L("Reset scale"))); + m_reset_scale_button->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { + Plater::TakeSnapshot snapshot(wxGetApp().plater(), _(L("Reset scale"))); + change_scale_value(0, 100.); + change_scale_value(1, 100.); + change_scale_value(2, 100.); + }); + m_editors_grid_sizer->Add(m_reset_scale_button); + + for (size_t axis_idx = 0; axis_idx < sizeof(axes); axis_idx++) + add_edit_boxes("size", axis_idx); + add_unit_text("mm"); + m_editors_grid_sizer->AddStretchSpacer(1); + + m_main_grid_sizer->Add(m_editors_grid_sizer, 1, wxEXPAND); + + m_og->sizer->Clear(true); + m_og->sizer->Add(m_main_grid_sizer, 1, wxEXPAND | wxALL, border); + + m_manifold_warning_bmp = ScalableBitmap(parent, "exclamation"); + + // Load bitmaps to be used for the mirroring buttons: + m_mirror_bitmap_on = ScalableBitmap(parent, "mirroring_on"); + m_mirror_bitmap_off = ScalableBitmap(parent, "mirroring_off"); + m_mirror_bitmap_hidden = ScalableBitmap(parent, "mirroring_transparent.png"); +} + +/* ObjectManipulation::ObjectManipulation(wxWindow* parent) : OG_Settings(parent, true) #ifndef __APPLE__ @@ -180,7 +468,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : line = Line{ "", "" }; def.label = ""; def.type = coString; - def.width = field_width - mirror_btn_width;//field_width/*50*/; + def.width = field_width - mirror_btn_width; // Load bitmaps to be used for the mirroring buttons: m_mirror_bitmap_on = ScalableBitmap(parent, "mirroring_on"); @@ -254,7 +542,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : ConfigOptionDef def; def.type = coFloat; def.set_default_value(new ConfigOptionFloat(0.0)); - def.width = field_width/*50*/; + def.width = field_width; if (option_name == "Scale") { // Add "uniform scaling" button in front of "Scale" option @@ -395,7 +683,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : win->SetMinSize(create_scaled_bitmap(m_parent, "one_layer_lock_on.png").GetSize()); }; } - +*/ void ObjectManipulation::Show(const bool show) @@ -407,9 +695,9 @@ void ObjectManipulation::Show(const bool show) if (show && wxGetApp().get_mode() != comSimple) { // Show the label and the name of the STL in simple mode only. // Label "Name: " - m_og->get_grid_sizer()->Show(size_t(0), false); + /*m_og->get_grid_sizer()*/m_main_grid_sizer->Show(size_t(0), false); // The actual name of the STL. - m_og->get_grid_sizer()->Show(size_t(1), false); + /*m_og->get_grid_sizer()*/m_main_grid_sizer->Show(size_t(1), false); } } @@ -417,6 +705,7 @@ void ObjectManipulation::Show(const bool show) // Show the "World Coordinates" / "Local Coordintes" Combo in Advanced / Expert mode only. bool show_world_local_combo = wxGetApp().plater()->canvas3D()->get_selection().is_single_full_instance() && wxGetApp().get_mode() != comSimple; m_word_local_combo->Show(show_world_local_combo); + m_empty_str->Show(!show_world_local_combo); } } @@ -687,6 +976,11 @@ void ObjectManipulation::emulate_kill_focus() } #endif // __APPLE__ +void ObjectManipulation::update_item_name(const wxString& item_name) +{ + m_item_name->SetLabel(item_name); +} + void ObjectManipulation::update_warning_icon_state(const wxString& tooltip) { m_fix_throught_netfab_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp.bmp()); @@ -923,6 +1217,8 @@ void ObjectManipulation::set_uniform_scaling(const bool new_value) void ObjectManipulation::msw_rescale() { + const int em = wxGetApp().em_unit(); + m_item_name->SetMinSize(wxSize(20*em, wxDefaultCoord)); msw_rescale_word_local_combo(m_word_local_combo); m_manifold_warning_bmp.msw_rescale(); @@ -936,10 +1232,50 @@ void ObjectManipulation::msw_rescale() m_reset_scale_button->msw_rescale(); m_reset_rotation_button->msw_rescale(); m_drop_to_bed_button->msw_rescale(); + m_lock_bnt->msw_rescale(); for (int id = 0; id < 3; ++id) m_mirror_buttons[id].first->msw_rescale(); + // rescale label-heights + // Text trick to grid sizer layout: + // Height of labels should be equivalent to the edit boxes + const int height = wxTextCtrl(parent(), wxID_ANY, "Br").GetBestHeight(-1); + int cells_cnt = m_labels_grid_sizer->GetEffectiveRowsCount(); + for (int i = 0; i < cells_cnt; i++) + { + const wxSizerItem* item = m_labels_grid_sizer->GetItem(i); + if (item->IsSizer()) + { + const wxSizerItem* label_item = item->GetSizer()->GetItem(size_t(0)); + if (label_item->IsWindow()) + { + if (dynamic_cast(label_item->GetWindow())) + item->GetSizer()->SetMinSize(wxSize(-1, height)); + if (dynamic_cast(label_item->GetWindow())) + item->GetSizer()->SetMinSize(wxSize(-1, m_word_local_combo->GetBestHeight(-1))); + else if (dynamic_cast(label_item->GetWindow())) // case when we have lock_btn and labels "Scale" and "Size" + { + const wxSizerItem* l_item = item->GetSizer()->GetItem(1); // sizer with labels "Scale" and "Size" + if (l_item->IsSizer()) { + for (int id : {0,1}) { + l_item->GetSizer()->GetItem(id)->GetSizer()->SetMinSize(wxSize(-1, height)); + } + } + } + } + } + } + + // rescale edit-boxes + cells_cnt = m_editors_grid_sizer->GetCols() * m_editors_grid_sizer->GetEffectiveRowsCount(); + for (int i = 0; i < cells_cnt; i++) + { + const wxSizerItem* item = m_editors_grid_sizer->GetItem(i); + if (item->IsWindow() && dynamic_cast(item->GetWindow())) + item->GetWindow()->SetMinSize(wxSize(5 * em, -1)); + } + get_og()->msw_rescale(); } diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index e4e190b5b..8ef6ca263 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -53,6 +53,9 @@ class ObjectManipulation : public OG_Settings wxStaticText* m_scale_Label = nullptr; wxStaticText* m_rotate_Label = nullptr; + wxStaticText* m_item_name = nullptr; + wxStaticText* m_empty_str = nullptr; + // Non-owning pointers to the reset buttons, so we can hide and show them. ScalableButton* m_reset_scale_button = nullptr; ScalableButton* m_reset_rotation_button = nullptr; @@ -81,7 +84,7 @@ class ObjectManipulation : public OG_Settings Vec3d m_new_rotation; Vec3d m_new_scale; Vec3d m_new_size; - bool m_new_enabled; + bool m_new_enabled {true}; bool m_uniform_scale {true}; // Does the object manipulation panel work in World or Local coordinates? bool m_world_coordinates = true; @@ -96,6 +99,10 @@ class ObjectManipulation : public OG_Settings std::string m_focused_option; #endif // __APPLE__ + wxFlexGridSizer* m_main_grid_sizer; + wxFlexGridSizer* m_labels_grid_sizer; + wxFlexGridSizer* m_editors_grid_sizer; + public: ObjectManipulation(wxWindow* parent); ~ObjectManipulation() {} @@ -122,6 +129,7 @@ public: void emulate_kill_focus(); #endif // __APPLE__ + void update_item_name(const wxString &item_name); void update_warning_icon_state(const wxString& tooltip); void msw_rescale(); diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index bf5500cf4..79b398f2e 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -2987,6 +2987,8 @@ void LockButton::msw_rescale() m_bmp_lock_closed_f.msw_rescale(); m_bmp_lock_open.msw_rescale(); m_bmp_lock_open_f.msw_rescale(); + + update_button_bitmaps(); } void LockButton::update_button_bitmaps() From 67d7809418a5ae6bdf339077a79847045d3a2c0e Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 19 Sep 2019 08:44:19 +0200 Subject: [PATCH 02/53] Fixed font size and layouts for ObjectManipulation panel under OSX --- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 963ae53ab..f75d32359 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -183,7 +183,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : // Height of labels should be equivalent to the edit boxes int height = wxTextCtrl(parent, wxID_ANY, "Br").GetBestHeight(-1); - auto add_label = [this, height](wxStaticText** label, std::string name, wxSizer* resive_sizer = nullptr) + auto add_label = [this, height](wxStaticText** label, const std::string& name, wxSizer* resive_sizer = nullptr) { *label = new wxStaticText(m_parent, wxID_ANY, _(name) + ":"); set_font_and_background_style(m_move_Label, wxGetApp().normal_font()); @@ -217,6 +217,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : add_label(&m_scale_Label, L("Scale"), v_sizer); wxStaticText* size_Label {nullptr}; add_label(&size_Label, L("Size"), v_sizer); + if (wxOSX) set_font_and_background_style(size_Label, wxGetApp().normal_font()); sizer->Add(v_sizer, 0, wxLEFT, border); m_labels_grid_sizer->Add(sizer); @@ -236,7 +237,11 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : set_font_and_background_style(axis_name, wxGetApp().bold_font()); sizer = new wxBoxSizer(wxHORIZONTAL); - sizer->Add(axis_name, 0, wxALIGN_CENTER_VERTICAL/* | wxLEFT*/ | wxRIGHT, border); + // Under OSX we use font, smaller than default font, so + // there is a next trick for an equivalent layout of coordinates combobox and axes labels in they own sizers + if (wxOSX) + sizer->SetMinSize(-1, m_word_local_combo->GetBestHeight(-1)); + sizer->Add(axis_name, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, border); // We will add a button to toggle mirroring to each axis: auto btn = new ScalableButton(parent, wxID_ANY, "mirroring_off", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER | wxTRANSPARENT_WINDOW); @@ -811,6 +816,7 @@ void ObjectManipulation::update_if_dirty() if (label_cache != new_label_localized) { label_cache = new_label_localized; widget->SetLabel(new_label_localized); + if (wxOSX) set_font_and_background_style(widget, wxGetApp().normal_font()); } }; update_label(m_cache.move_label_string, m_new_move_label_string, m_move_Label); From 6faf67d90cdb31f05758cf12f68a97ad1b01c607 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 25 Sep 2019 11:25:05 +0200 Subject: [PATCH 03/53] Add binding for ManipulationEditors --- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 209 ++++++++++++++++++---- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 26 ++- 2 files changed, 199 insertions(+), 36 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index f75d32359..9b4795a3e 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -124,6 +124,13 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : , m_focused_option("") #endif // __APPLE__ { + m_manifold_warning_bmp = ScalableBitmap(parent, "exclamation"); + + // Load bitmaps to be used for the mirroring buttons: + m_mirror_bitmap_on = ScalableBitmap(parent, "mirroring_on"); + m_mirror_bitmap_off = ScalableBitmap(parent, "mirroring_off"); + m_mirror_bitmap_hidden = ScalableBitmap(parent, "mirroring_transparent.png"); + const int border = wxOSX ? 0 : 4; const int em = wxGetApp().em_unit(); m_main_grid_sizer = new wxFlexGridSizer(2, 3, 3); // "Name/label", "String name / Editors" @@ -225,8 +232,8 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : // Add editors grid sizer - m_editors_grid_sizer = new wxFlexGridSizer(5, 3, 3); // "Name/label", "String name / Editors" - m_editors_grid_sizer->SetFlexibleDirection(wxBOTH); + wxFlexGridSizer* editors_grid_sizer = new wxFlexGridSizer(5, 3, 3); // "Name/label", "String name / Editors" + editors_grid_sizer->SetFlexibleDirection(wxBOTH); // Add Axes labels with icons static const char axes[] = { 'X', 'Y', 'Z' }; @@ -283,33 +290,28 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : UpdateAndShow(true); }); - m_editors_grid_sizer->Add(sizer, 0, wxALIGN_CENTER_HORIZONTAL); + editors_grid_sizer->Add(sizer, 0, wxALIGN_CENTER_HORIZONTAL); } - m_editors_grid_sizer->AddStretchSpacer(1); - m_editors_grid_sizer->AddStretchSpacer(1); + editors_grid_sizer->AddStretchSpacer(1); + editors_grid_sizer->AddStretchSpacer(1); // add EditBoxes - auto add_edit_boxes = [this, em, parent](std::string opt_key, int axis) + auto add_edit_boxes = [this, editors_grid_sizer](const std::string& opt_key, int axis) { - wxTextCtrl* editor = new wxTextCtrl(parent, wxID_ANY, wxEmptyString, - wxDefaultPosition, wxSize(5 * em, wxDefaultCoord), - wxTE_PROCESS_ENTER); + ManipulationEditor* editor = new ManipulationEditor(this, opt_key, axis); + m_editors.push_back(editor); - set_font_and_background_style(editor, wxGetApp().normal_font()); -#ifdef __WXOSX__ - editor->OSXDisableAllSmartSubstitutions(); -#endif // __WXOSX__ - m_editors_grid_sizer->Add(editor, 1, wxEXPAND); + editors_grid_sizer->Add(editor, 1, wxEXPAND); }; // add Units - auto add_unit_text = [this, parent](std::string unit) + auto add_unit_text = [this, parent, editors_grid_sizer](std::string unit) { wxStaticText* unit_text = new wxStaticText(parent, wxID_ANY, _(unit)); set_font_and_background_style(unit_text, wxGetApp().normal_font()); - m_editors_grid_sizer->Add(unit_text, 0, wxALIGN_CENTER_VERTICAL); + editors_grid_sizer->Add(unit_text, 0, wxALIGN_CENTER_VERTICAL); }; for (size_t axis_idx = 0; axis_idx < sizeof(axes); axis_idx++) @@ -336,7 +338,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : change_position_value(2, diff.z()); } }); - m_editors_grid_sizer->Add(m_drop_to_bed_button); + editors_grid_sizer->Add(m_drop_to_bed_button); for (size_t axis_idx = 0; axis_idx < sizeof(axes); axis_idx++) add_edit_boxes("rotation", axis_idx); @@ -370,7 +372,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : UpdateAndShow(true); }); - m_editors_grid_sizer->Add(m_reset_rotation_button); + editors_grid_sizer->Add(m_reset_rotation_button); for (size_t axis_idx = 0; axis_idx < sizeof(axes); axis_idx++) add_edit_boxes("scale", axis_idx); @@ -385,24 +387,17 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : change_scale_value(1, 100.); change_scale_value(2, 100.); }); - m_editors_grid_sizer->Add(m_reset_scale_button); + editors_grid_sizer->Add(m_reset_scale_button); for (size_t axis_idx = 0; axis_idx < sizeof(axes); axis_idx++) add_edit_boxes("size", axis_idx); add_unit_text("mm"); - m_editors_grid_sizer->AddStretchSpacer(1); + editors_grid_sizer->AddStretchSpacer(1); - m_main_grid_sizer->Add(m_editors_grid_sizer, 1, wxEXPAND); + m_main_grid_sizer->Add(editors_grid_sizer, 1, wxEXPAND); m_og->sizer->Clear(true); m_og->sizer->Add(m_main_grid_sizer, 1, wxEXPAND | wxALL, border); - - m_manifold_warning_bmp = ScalableBitmap(parent, "exclamation"); - - // Load bitmaps to be used for the mirroring buttons: - m_mirror_bitmap_on = ScalableBitmap(parent, "mirroring_on"); - m_mirror_bitmap_off = ScalableBitmap(parent, "mirroring_off"); - m_mirror_bitmap_hidden = ScalableBitmap(parent, "mirroring_transparent.png"); } /* @@ -823,6 +818,7 @@ void ObjectManipulation::update_if_dirty() update_label(m_cache.rotate_label_string, m_new_rotate_label_string, m_rotate_Label); update_label(m_cache.scale_label_string, m_new_scale_label_string, m_scale_Label); + /* char axis[2] = "x"; for (int i = 0; i < 3; ++ i, ++ axis[0]) { auto update = [this, i, &axis](Vec3d &cached, Vec3d &cached_rounded, const char *key, const Vec3d &new_value) { @@ -840,6 +836,34 @@ void ObjectManipulation::update_if_dirty() update(m_cache.size, m_cache.size_rounded, "size_", m_new_size); update(m_cache.rotation, m_cache.rotation_rounded, "rotation_", m_new_rotation); } + */ + + enum ManipulationEditorKey + { + mePosition = 0, + meRotation, + meScale, + meSize + }; + + for (int i = 0; i < 3; ++ i) { + auto update = [this, i](Vec3d &cached, Vec3d &cached_rounded, ManipulationEditorKey key_id, const Vec3d &new_value) { + wxString new_text = double_to_string(new_value(i), 2); + double new_rounded; + new_text.ToDouble(&new_rounded); + if (std::abs(cached_rounded(i) - new_rounded) > EPSILON) { + cached_rounded(i) = new_rounded; + const int id = key_id*3+i; + if (id >= 0) m_editors[id]->set_value(new_text); + } + cached(i) = new_value(i); + }; + update(m_cache.position, m_cache.position_rounded, mePosition, m_new_position); + update(m_cache.scale, m_cache.scale_rounded, meScale, m_new_scale); + update(m_cache.size, m_cache.size_rounded, meSize, m_new_size); + update(m_cache.rotation, m_cache.rotation_rounded, meRotation, m_new_rotation); + } + if (selection.requires_uniform_scale()) { m_lock_bnt->SetLock(true); @@ -1151,6 +1175,21 @@ void ObjectManipulation::on_change(t_config_option_key opt_key, const boost::any change_size_value(axis, new_value); } +void ObjectManipulation::on_change(const std::string& opt_key, int axis, double new_value) +{ + if (!m_cache.is_valid()) + return; + + if (opt_key == "position") + change_position_value(axis, new_value); + else if (opt_key == "rotation") + change_rotation_value(axis, new_value); + else if (opt_key == "scale") + change_scale_value(axis, new_value); + else if (opt_key == "size") + change_size_value(axis, new_value); +} + void ObjectManipulation::on_fill_empty_value(const std::string& opt_key) { // needed to hide the visual hints in 3D scene @@ -1274,16 +1313,116 @@ void ObjectManipulation::msw_rescale() } // rescale edit-boxes - cells_cnt = m_editors_grid_sizer->GetCols() * m_editors_grid_sizer->GetEffectiveRowsCount(); - for (int i = 0; i < cells_cnt; i++) - { - const wxSizerItem* item = m_editors_grid_sizer->GetItem(i); - if (item->IsWindow() && dynamic_cast(item->GetWindow())) - item->GetWindow()->SetMinSize(wxSize(5 * em, -1)); - } + for (ManipulationEditor* editor : m_editors) + editor->msw_rescale(); get_og()->msw_rescale(); } +static const char axes[] = { 'x', 'y', 'z' }; +ManipulationEditor::ManipulationEditor(ObjectManipulation* parent, + const std::string& opt_key, + int axis) : + wxTextCtrl(parent->parent(), wxID_ANY, wxEmptyString, wxDefaultPosition, + wxSize(5*int(wxGetApp().em_unit()), wxDefaultCoord), wxTE_PROCESS_ENTER), + m_opt_key(opt_key), + m_axis(axis) +{ + set_font_and_background_style(this, wxGetApp().normal_font()); +#ifdef __WXOSX__ + this->OSXDisableAllSmartSubstitutions(); +#endif // __WXOSX__ + + // A name used to call handle_sidebar_focus_event() + m_full_opt_name = m_opt_key+"_"+axes[axis]; + + // Reset m_enter_pressed flag to _false_, when value is editing + this->Bind(wxEVT_TEXT, [this](wxEvent&) { m_enter_pressed = false; }, this->GetId()); + + this->Bind(wxEVT_TEXT_ENTER, [this, parent](wxEvent&) + { + m_enter_pressed = true; + parent->on_change(m_opt_key, m_axis, get_value()); + }, this->GetId()); + + this->Bind(wxEVT_KILL_FOCUS, [this, parent/*, edit_fn*/](wxFocusEvent& e) + { + if (!m_enter_pressed) { + parent->on_change(m_opt_key, m_axis, get_value()); + + // if the change does not come from the user pressing the ENTER key + // we need to hide the visual hints in 3D scene + wxGetApp().plater()->canvas3D()->handle_sidebar_focus_event(m_full_opt_name, false); +// #ifndef __WXGTK__ +// /* Update data for next editor selection. +// * But under GTK it looks like there is no information about selected control at e.GetWindow(), +// * so we'll take it from wxEVT_LEFT_DOWN event +// * */ +// LayerRangeEditor* new_editor = dynamic_cast(e.GetWindow()); +// if (new_editor) +// new_editor->set_focus_data(); +// #endif // not __WXGTK__ + } + + e.Skip(); + }, this->GetId()); + + this->Bind(wxEVT_SET_FOCUS, [this](wxFocusEvent& e) + { + // needed to show the visual hints in 3D scene + wxGetApp().plater()->canvas3D()->handle_sidebar_focus_event(m_full_opt_name, true); + e.Skip(); + }, this->GetId()); + +// #ifdef __WXGTK__ // Workaround! To take information about selectable range +// this->Bind(wxEVT_LEFT_DOWN, [this](wxEvent& e) +// { +// set_focus_data(); +// e.Skip(); +// }, this->GetId()); +// #endif //__WXGTK__ + + this->Bind(wxEVT_CHAR, ([this](wxKeyEvent& event) + { + // select all text using Ctrl+A + if (wxGetKeyState(wxKeyCode('A')) && wxGetKeyState(WXK_CONTROL)) + this->SetSelection(-1, -1); //select all + event.Skip(); + })); +} + +void ManipulationEditor::msw_rescale() +{ + const int em = wxGetApp().em_unit(); + SetMinSize(wxSize(5 * em, wxDefaultCoord)); +} + +double ManipulationEditor::get_value() +{ + wxString str = GetValue(); + + double value; + // Replace the first occurence of comma in decimal number. + str.Replace(",", ".", false); + if (str == ".") + value = 0.0; + + if ((str.IsEmpty() || !str.ToCDouble(&value)) && !m_valid_value.IsEmpty()) { + str = m_valid_value; + SetValue(str); + str.ToCDouble(&value); + } + + return value; +} + +void ManipulationEditor::set_value(const wxString& new_value) +{ + if (new_value.IsEmpty()) + return; + m_valid_value = new_value; + SetValue(m_valid_value); +} + } //namespace GUI } //namespace Slic3r diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index 8ef6ca263..d0fe33dab 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -16,6 +16,28 @@ namespace GUI { class Selection; +class ObjectManipulation; +class ManipulationEditor : public wxTextCtrl +{ + std::string m_opt_key; + int m_axis; + bool m_enter_pressed { false }; + wxString m_valid_value {wxEmptyString}; + + std::string m_full_opt_name; + +public: + ManipulationEditor(ObjectManipulation* parent, const std::string& opt_key, int axis); + ~ManipulationEditor() {} + + void msw_rescale(); + void set_value(const wxString& new_value); + +private: + double get_value(); +}; + + class ObjectManipulation : public OG_Settings { struct Cache @@ -101,7 +123,8 @@ class ObjectManipulation : public OG_Settings wxFlexGridSizer* m_main_grid_sizer; wxFlexGridSizer* m_labels_grid_sizer; - wxFlexGridSizer* m_editors_grid_sizer; + + std::vector m_editors; public: ObjectManipulation(wxWindow* parent); @@ -132,6 +155,7 @@ public: void update_item_name(const wxString &item_name); void update_warning_icon_state(const wxString& tooltip); void msw_rescale(); + void on_change(const std::string& opt_key, int axis, double new_value); private: void reset_settings_value(); From f6996b7dda5aeb8671165e57a4ad8de63e7628f4 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 25 Sep 2019 12:45:39 +0200 Subject: [PATCH 04/53] Try to fix Linux build --- src/admesh/stl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/admesh/stl.h b/src/admesh/stl.h index 43999d365..a6989ca6e 100644 --- a/src/admesh/stl.h +++ b/src/admesh/stl.h @@ -90,7 +90,7 @@ struct stl_neighbors { struct stl_stats { stl_stats() { memset(&header, 0, 81); } - char header[81] = ""; + char header[81];// = ""; stl_type type = (stl_type)0; uint32_t number_of_facets = 0; stl_vertex max = stl_vertex::Zero(); From 1a03b664b97fe129230cec75ebcc7c0e0c03d8df Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 25 Sep 2019 15:04:39 +0200 Subject: [PATCH 05/53] Some changes for alignments in manipulation panel --- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 67 ++++++++++------------- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 6 +- 2 files changed, 35 insertions(+), 38 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 9b4795a3e..747cec0f9 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -179,18 +179,25 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : // Small trick to correct layouting in different view_mode : // Show empty string of a same height as a m_word_local_combo, when m_word_local_combo is hidden - sizer = new wxBoxSizer(wxHORIZONTAL); + m_word_local_combo_sizer = new wxBoxSizer(wxHORIZONTAL); m_empty_str = new wxStaticText(parent, wxID_ANY, ""); - sizer->Add(m_word_local_combo); - sizer->Add(m_empty_str); - sizer->SetMinSize(wxSize(-1, m_word_local_combo->GetBestHeight(-1))); - m_labels_grid_sizer->Add(sizer); + m_word_local_combo_sizer->Add(m_word_local_combo); + m_word_local_combo_sizer->Add(m_empty_str); + m_word_local_combo_sizer->SetMinSize(wxSize(-1, m_word_local_combo->GetBestHeight(-1))); + m_labels_grid_sizer->Add(m_word_local_combo_sizer); // Text trick to grid sizer layout: // Height of labels should be equivalent to the edit boxes int height = wxTextCtrl(parent, wxID_ANY, "Br").GetBestHeight(-1); +#ifdef __WXGTK__ + // On Linux button with bitmap has bigger height then regular button or regular TextCtrl + // It can cause a wrong alignment on show/hide of a reset buttons + const int bmp_btn_height = ScalableButton(parent, wxID_ANY, "undo") .GetBestHeight(-1); + if (bmp_btn_height > height) + height = bmp_btn_height; +#endif //__WXGTK__ - auto add_label = [this, height](wxStaticText** label, const std::string& name, wxSizer* resive_sizer = nullptr) + auto add_label = [this, height](wxStaticText** label, const std::string& name, wxSizer* reciver = nullptr) { *label = new wxStaticText(m_parent, wxID_ANY, _(name) + ":"); set_font_and_background_style(m_move_Label, wxGetApp().normal_font()); @@ -199,10 +206,12 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : sizer->SetMinSize(wxSize(-1, height)); sizer->Add(*label, 0, wxALIGN_CENTER_VERTICAL); - if (resive_sizer) - resive_sizer->Add(sizer); + if (reciver) + reciver->Add(sizer); else m_labels_grid_sizer->Add(sizer); + + m_rescalable_sizers.push_back(sizer); }; // Add labels @@ -302,16 +311,22 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : ManipulationEditor* editor = new ManipulationEditor(this, opt_key, axis); m_editors.push_back(editor); - editors_grid_sizer->Add(editor, 1, wxEXPAND); + editors_grid_sizer->Add(editor, 0, wxALIGN_CENTER_VERTICAL); }; // add Units - auto add_unit_text = [this, parent, editors_grid_sizer](std::string unit) + auto add_unit_text = [this, parent, editors_grid_sizer, height](std::string unit) { wxStaticText* unit_text = new wxStaticText(parent, wxID_ANY, _(unit)); + set_font_and_background_style(unit_text, wxGetApp().normal_font()); - set_font_and_background_style(unit_text, wxGetApp().normal_font()); - editors_grid_sizer->Add(unit_text, 0, wxALIGN_CENTER_VERTICAL); + // Unit text should be the same height as labels + wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); + sizer->SetMinSize(wxSize(-1, height)); + sizer->Add(unit_text, 0, wxALIGN_CENTER_VERTICAL); + + editors_grid_sizer->Add(sizer); + m_rescalable_sizers.push_back(sizer); }; for (size_t axis_idx = 0; axis_idx < sizeof(axes); axis_idx++) @@ -1265,6 +1280,7 @@ void ObjectManipulation::msw_rescale() const int em = wxGetApp().em_unit(); m_item_name->SetMinSize(wxSize(20*em, wxDefaultCoord)); msw_rescale_word_local_combo(m_word_local_combo); + m_word_local_combo_sizer->SetMinSize(wxSize(-1, m_word_local_combo->GetBestHeight(-1))); m_manifold_warning_bmp.msw_rescale(); const wxString& tooltip = m_fix_throught_netfab_bitmap->GetToolTipText(); @@ -1286,31 +1302,8 @@ void ObjectManipulation::msw_rescale() // Text trick to grid sizer layout: // Height of labels should be equivalent to the edit boxes const int height = wxTextCtrl(parent(), wxID_ANY, "Br").GetBestHeight(-1); - int cells_cnt = m_labels_grid_sizer->GetEffectiveRowsCount(); - for (int i = 0; i < cells_cnt; i++) - { - const wxSizerItem* item = m_labels_grid_sizer->GetItem(i); - if (item->IsSizer()) - { - const wxSizerItem* label_item = item->GetSizer()->GetItem(size_t(0)); - if (label_item->IsWindow()) - { - if (dynamic_cast(label_item->GetWindow())) - item->GetSizer()->SetMinSize(wxSize(-1, height)); - if (dynamic_cast(label_item->GetWindow())) - item->GetSizer()->SetMinSize(wxSize(-1, m_word_local_combo->GetBestHeight(-1))); - else if (dynamic_cast(label_item->GetWindow())) // case when we have lock_btn and labels "Scale" and "Size" - { - const wxSizerItem* l_item = item->GetSizer()->GetItem(1); // sizer with labels "Scale" and "Size" - if (l_item->IsSizer()) { - for (int id : {0,1}) { - l_item->GetSizer()->GetItem(id)->GetSizer()->SetMinSize(wxSize(-1, height)); - } - } - } - } - } - } + for (wxBoxSizer* sizer : m_rescalable_sizers) + sizer->SetMinSize(wxSize(-1, height)); // rescale edit-boxes for (ManipulationEditor* editor : m_editors) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index d0fe33dab..e25aab678 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -124,7 +124,11 @@ class ObjectManipulation : public OG_Settings wxFlexGridSizer* m_main_grid_sizer; wxFlexGridSizer* m_labels_grid_sizer; - std::vector m_editors; + // sizers, used for msw_rescale + wxBoxSizer* m_word_local_combo_sizer; + std::vector m_rescalable_sizers; + + std::vector m_editors; public: ObjectManipulation(wxWindow* parent); From c07a193b4ef28b08f939feba4164966f2defc43d Mon Sep 17 00:00:00 2001 From: YuSanka Date: Mon, 30 Sep 2019 14:03:50 +0200 Subject: [PATCH 06/53] Implemented BitmapChoiseRenderer --- src/slic3r/GUI/Plater.cpp | 19 +++-- src/slic3r/GUI/Plater.hpp | 1 + src/slic3r/GUI/wxExtensions.cpp | 136 +++++++++++++++++++++++++++++++- src/slic3r/GUI/wxExtensions.hpp | 34 ++++++++ 4 files changed, 183 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index b172ad489..53287eedf 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -521,12 +521,7 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent) : const std::vector &init_matrix = (project_config.option("wiping_volumes_matrix"))->values; const std::vector &init_extruders = (project_config.option("wiping_volumes_extruders"))->values; - const DynamicPrintConfig* config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; - std::vector extruder_colours = (config->option("extruder_colour"))->values; - const std::vector& filament_colours = (wxGetApp().plater()->get_plater_config()->option("filament_colour"))->values; - for (size_t i=0; i extruder_colours = wxGetApp().plater()->get_extruder_colors_from_plater_config(); WipingDialog dlg(parent, cast(init_matrix), cast(init_extruders), extruder_colours); @@ -4891,6 +4886,18 @@ const DynamicPrintConfig* Plater::get_plater_config() const return p->config; } +std::vector Plater::get_extruder_colors_from_plater_config() const +{ + const Slic3r::DynamicPrintConfig* config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; + std::vector extruder_colors = (config->option("extruder_colour"))->values; + const std::vector& filament_colours = (p->config->option("filament_colour"))->values; + for (size_t i = 0; i < extruder_colors.size(); ++i) + if (extruder_colors[i] == "" && i < filament_colours.size()) + extruder_colors[i] = filament_colours[i]; + + return extruder_colors; +} + wxString Plater::get_project_filename(const wxString& extension) const { return p->get_project_filename(extension); diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 93df68738..f19ac9e77 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -215,6 +215,7 @@ public: // On activating the parent window. void on_activate(); const DynamicPrintConfig* get_plater_config() const; + std::vector get_extruder_colors_from_plater_config() const; void update_object_menu(); diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 59406b6e9..8e4e3520a 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -7,6 +7,7 @@ #include "libslic3r/Model.hpp" #include +#include #include #include #include @@ -20,6 +21,7 @@ #include "libslic3r/GCode/PreviewData.hpp" #include "I18N.hpp" #include "GUI_Utils.hpp" +#include "PresetBundle.hpp" #include "../Utils/MacDarkMode.hpp" using Slic3r::GUI::from_u8; @@ -1840,7 +1842,7 @@ void ObjectDataViewModel::DeleteWarningIcon(const wxDataViewItem& item, const bo } //----------------------------------------------------------------------------- -// PrusaDataViewBitmapText +// DataViewBitmapText //----------------------------------------------------------------------------- wxIMPLEMENT_DYNAMIC_CLASS(DataViewBitmapText, wxObject) @@ -1966,6 +1968,138 @@ bool BitmapTextRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value return true; } +// ---------------------------------------------------------------------------- +// BitmapChoiseRenderer +// ---------------------------------------------------------------------------- + +bool BitmapChoiseRenderer::SetValue(const wxVariant& value) +{ + m_value << value; + return true; +} +bool BitmapChoiseRenderer::GetValue(wxVariant& value) const +{ + value << m_value; + return true; +} +bool BitmapChoiseRenderer::Render(wxRect rect, wxDC* dc, int state) +{ + int xoffset = 0; + + const wxBitmap& icon = m_value.GetBitmap(); + if (icon.IsOk()) + { + dc->DrawBitmap(icon, rect.x, rect.y + (rect.height - icon.GetHeight()) / 2); + xoffset = icon.GetWidth() + 4; + } + + RenderText(m_value.GetText(), xoffset, rect, dc, state); + + return true; +} + +wxSize BitmapChoiseRenderer::GetSize() const +{ + if (!m_value.GetText().empty()) + { + wxSize size = GetTextExtent(m_value.GetText()); + + if (m_value.GetBitmap().IsOk()) + size.x += m_value.GetBitmap().GetWidth() + 4; + return size; + } + return wxSize(80, 20); + + /* from wxDataViewChoiceRenderer + wxSize sz; + + for ( wxArrayString::const_iterator i = m_choices.begin(); i != m_choices.end(); ++i ) + sz.IncTo(GetTextExtent(*i)); + + // Allow some space for the right-side button, which is approximately the + // size of a scrollbar (and getting pixel-exact value would be complicated). + // Also add some whitespace between the text and the button: + sz.x += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X); + sz.x += GetTextExtent("M").x; + + return sz; + */ +} + +static void update_extruder_color_icons_in_cache() +{ + // Create the bitmap with color bars. + std::vector bmps; + std::vector colors = Slic3r::GUI::wxGetApp().plater()->get_extruder_colors_from_plater_config(); + + unsigned char rgb[3]; + + /* It's supposed that standard size of an icon is 36px*16px for 100% scaled display. + * So set sizes for solid_colored icons used for filament preset + * and scale them in respect to em_unit value + */ + const double em = Slic3r::GUI::wxGetApp().em_unit(); + const int icon_width = lround(3.6 * em); + const int icon_height = lround(1.6 * em); + + for (const std::string& color : colors) + { + wxBitmap* bitmap = m_bitmap_cache->find(color); + if (bitmap == nullptr) { + // Paint the color icon. + Slic3r::PresetBundle::parse_color(color, rgb); + bitmap = m_bitmap_cache->insert(color, m_bitmap_cache->mksolid(icon_width, icon_height, rgb)); + } + bmps.emplace_back(bitmap); + } +} + + +wxWindow* BitmapChoiseRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelRect, const wxVariant& value) +{ + wxDataViewCtrl* const dv_ctrl = GetOwner()->GetOwner(); + ObjectDataViewModel* const model = dynamic_cast(dv_ctrl->GetModel()); + + if (!(model->GetItemType(dv_ctrl->GetSelection()) & (itVolume | itObject))) + return nullptr; + + DataViewBitmapText data; + data << value; + +// m_was_unusable_symbol = false; + + wxPoint position = labelRect.GetPosition(); + if (data.GetBitmap().IsOk()) { + const int bmp_width = data.GetBitmap().GetWidth(); + position.x += bmp_width; + labelRect.SetWidth(labelRect.GetWidth() - bmp_width); + } + + auto c_editor = new wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, //data.GetText(), + labelRect.GetTopLeft(), wxSize(labelRect.GetWidth(), -1), + 0, nullptr , wxCB_READONLY); + + c_editor->Move(labelRect.GetRight() - c_editor->GetRect().width, wxDefaultCoord); + c_editor->SetStringSelection(data.GetText()); + return c_editor; +} + +bool BitmapChoiseRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value) +{ + wxBitmapComboBox* c = (wxBitmapComboBox*)ctrl; + int selection = c->GetSelection(); + if (selection < 0) + return false; + + DataViewBitmapText bmpText; + + bmpText.SetText(c->GetString(selection)); + bmpText.SetBitmap(c->GetItemBitmap(selection)); + + value << bmpText; + return true; +} + // ---------------------------------------------------------------------------- // DoubleSlider // ---------------------------------------------------------------------------- diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index 54d1bf7cb..3d90e966c 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -563,6 +563,40 @@ private: }; +// ---------------------------------------------------------------------------- +// BitmapChoiseRenderer +// ---------------------------------------------------------------------------- + +class BitmapChoiseRenderer : public wxDataViewCustomRenderer +{ +public: + BitmapChoiseRenderer(wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT + + , int align = wxDVR_DEFAULT_ALIGNMENT + ) : wxDataViewCustomRenderer(wxT("DataViewBitmapText"), mode, align) {} + + bool SetValue(const wxVariant& value); + bool GetValue(wxVariant& value) const; +#if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING && wxUSE_ACCESSIBILITY + virtual wxString GetAccessibleDescription() const override; +#endif // wxUSE_ACCESSIBILITY && ENABLE_NONCUSTOM_DATA_VIEW_RENDERING + + virtual bool Render(wxRect cell, wxDC* dc, int state); + virtual wxSize GetSize() const; + + bool HasEditorCtrl() const override { return true; } + wxWindow* CreateEditorCtrl(wxWindow* parent, + wxRect labelRect, + const wxVariant& value) override; + bool GetValueFromEditorCtrl(wxWindow* ctrl, + wxVariant& value) override; + +private: + DataViewBitmapText m_value; + wxArrayString m_choices; +}; + + // ---------------------------------------------------------------------------- // MyCustomRenderer // ---------------------------------------------------------------------------- From 272479826f868725fd8523af4e72400fd761beff Mon Sep 17 00:00:00 2001 From: bubnikv Date: Mon, 30 Sep 2019 16:25:26 +0200 Subject: [PATCH 07/53] Refactoring of the G-code preview for lower memory allocation and for separation of concerns: The final G-code preview no more uses ExtrusionPaths structure to hold the G-code path data extracted by parsing the G-code. Instead, the ExtrusionPath class has been trimmed down back to the original size before the G-code preview was introduced, and a new GCodePreviewData::Extrusion::Path class was created to hold the additional path data as the extruder ID, color change ID and fan speed. --- src/libslic3r/ExtrusionEntity.hpp | 27 +++++++++------------------ src/libslic3r/GCode/Analyzer.cpp | 14 +++++++++----- src/libslic3r/GCode/PreviewData.cpp | 6 +++--- src/libslic3r/GCode/PreviewData.hpp | 26 ++++++++++++++++++++++++-- src/slic3r/GUI/3DScene.cpp | 13 +++++++++---- src/slic3r/GUI/3DScene.hpp | 1 + src/slic3r/GUI/GLCanvas3D.cpp | 18 +++++++++--------- 7 files changed, 64 insertions(+), 41 deletions(-) diff --git a/src/libslic3r/ExtrusionEntity.hpp b/src/libslic3r/ExtrusionEntity.hpp index f5ac72def..b22d85b65 100644 --- a/src/libslic3r/ExtrusionEntity.hpp +++ b/src/libslic3r/ExtrusionEntity.hpp @@ -14,7 +14,7 @@ class ExtrusionEntityCollection; class Extruder; // Each ExtrusionRole value identifies a distinct set of { extruder, speed } -enum ExtrusionRole { +enum ExtrusionRole : uint8_t { erNone, erPerimeter, erExternalPerimeter, @@ -117,25 +117,16 @@ public: float width; // Height of the extrusion, used for visualization purposes. float height; - // Feedrate of the extrusion, used for visualization purposes. - float feedrate; - // Id of the extruder, used for visualization purposes. - unsigned int extruder_id; - // Id of the color, used for visualization purposes in the color printing case. - unsigned int cp_color_id; - // Fan speed for the extrusion, used for visualization purposes. - float fan_speed; - ExtrusionPath(ExtrusionRole role) : mm3_per_mm(-1), width(-1), height(-1), feedrate(0.0f), extruder_id(0), cp_color_id(0), fan_speed(0.0f), m_role(role) {}; - ExtrusionPath(ExtrusionRole role, double mm3_per_mm, float width, float height) : mm3_per_mm(mm3_per_mm), width(width), height(height), feedrate(0.0f), extruder_id(0), cp_color_id(0), fan_speed(0.0f), m_role(role) {}; - ExtrusionPath(const ExtrusionPath& rhs) : polyline(rhs.polyline), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), feedrate(rhs.feedrate), extruder_id(rhs.extruder_id), cp_color_id(rhs.cp_color_id), fan_speed(rhs.fan_speed), m_role(rhs.m_role) {} - ExtrusionPath(ExtrusionPath&& rhs) : polyline(std::move(rhs.polyline)), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), feedrate(rhs.feedrate), extruder_id(rhs.extruder_id), cp_color_id(rhs.cp_color_id), fan_speed(rhs.fan_speed), m_role(rhs.m_role) {} - ExtrusionPath(const Polyline &polyline, const ExtrusionPath &rhs) : polyline(polyline), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), feedrate(rhs.feedrate), extruder_id(rhs.extruder_id), cp_color_id(rhs.cp_color_id), fan_speed(rhs.fan_speed), m_role(rhs.m_role) {} - ExtrusionPath(Polyline &&polyline, const ExtrusionPath &rhs) : polyline(std::move(polyline)), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), feedrate(rhs.feedrate), extruder_id(rhs.extruder_id), cp_color_id(rhs.cp_color_id), fan_speed(rhs.fan_speed), m_role(rhs.m_role) {} -// ExtrusionPath(ExtrusionRole role, const Flow &flow) : m_role(role), mm3_per_mm(flow.mm3_per_mm()), width(flow.width), height(flow.height), feedrate(0.0f), extruder_id(0) {}; + ExtrusionPath(ExtrusionRole role) : mm3_per_mm(-1), width(-1), height(-1), m_role(role) {}; + ExtrusionPath(ExtrusionRole role, double mm3_per_mm, float width, float height) : mm3_per_mm(mm3_per_mm), width(width), height(height), m_role(role) {}; + ExtrusionPath(const ExtrusionPath& rhs) : polyline(rhs.polyline), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), m_role(rhs.m_role) {} + ExtrusionPath(ExtrusionPath&& rhs) : polyline(std::move(rhs.polyline)), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), m_role(rhs.m_role) {} + ExtrusionPath(const Polyline &polyline, const ExtrusionPath &rhs) : polyline(polyline), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), m_role(rhs.m_role) {} + ExtrusionPath(Polyline &&polyline, const ExtrusionPath &rhs) : polyline(std::move(polyline)), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), m_role(rhs.m_role) {} - ExtrusionPath& operator=(const ExtrusionPath& rhs) { m_role = rhs.m_role; this->mm3_per_mm = rhs.mm3_per_mm; this->width = rhs.width; this->height = rhs.height; this->feedrate = rhs.feedrate, this->extruder_id = rhs.extruder_id, this->cp_color_id = rhs.cp_color_id, this->fan_speed = rhs.fan_speed, this->polyline = rhs.polyline; return *this; } - ExtrusionPath& operator=(ExtrusionPath&& rhs) { m_role = rhs.m_role; this->mm3_per_mm = rhs.mm3_per_mm; this->width = rhs.width; this->height = rhs.height; this->feedrate = rhs.feedrate, this->extruder_id = rhs.extruder_id, this->cp_color_id = rhs.cp_color_id, this->fan_speed = rhs.fan_speed, this->polyline = std::move(rhs.polyline); return *this; } + ExtrusionPath& operator=(const ExtrusionPath& rhs) { m_role = rhs.m_role; this->mm3_per_mm = rhs.mm3_per_mm; this->width = rhs.width; this->height = rhs.height; this->polyline = rhs.polyline; return *this; } + ExtrusionPath& operator=(ExtrusionPath&& rhs) { m_role = rhs.m_role; this->mm3_per_mm = rhs.mm3_per_mm; this->width = rhs.width; this->height = rhs.height; this->polyline = std::move(rhs.polyline); return *this; } ExtrusionEntity* clone() const override { return new ExtrusionPath(*this); } // Create a new object, initialize it with this object using the move semantics. diff --git a/src/libslic3r/GCode/Analyzer.cpp b/src/libslic3r/GCode/Analyzer.cpp index fa4414da9..136959d71 100644 --- a/src/libslic3r/GCode/Analyzer.cpp +++ b/src/libslic3r/GCode/Analyzer.cpp @@ -866,7 +866,7 @@ void GCodeAnalyzer::_calc_gcode_preview_extrusion_layers(GCodePreviewData& previ } // if layer not found, create and return it - layers.emplace_back(z, ExtrusionPaths()); + layers.emplace_back(z, GCodePreviewData::Extrusion::Paths()); return layers.back(); } @@ -875,14 +875,18 @@ void GCodeAnalyzer::_calc_gcode_preview_extrusion_layers(GCodePreviewData& previ // if the polyline is valid, create the extrusion path from it and store it if (polyline.is_valid()) { - ExtrusionPath path(data.extrusion_role, data.mm3_per_mm, data.width, data.height); + auto& paths = get_layer_at_z(preview_data.extrusion.layers, z).paths; + paths.emplace_back(GCodePreviewData::Extrusion::Path()); + GCodePreviewData::Extrusion::Path &path = paths.back(); path.polyline = polyline; + path.extrusion_role = data.extrusion_role; + path.mm3_per_mm = data.mm3_per_mm; + path.width = data.width; + path.height = data.height; path.feedrate = data.feedrate; path.extruder_id = data.extruder_id; - path.fan_speed = data.fan_speed; path.cp_color_id = data.cp_color_id; - - get_layer_at_z(preview_data.extrusion.layers, z).paths.push_back(path); + path.fan_speed = data.fan_speed; } } }; diff --git a/src/libslic3r/GCode/PreviewData.cpp b/src/libslic3r/GCode/PreviewData.cpp index c6cfcc8af..53c13a2f2 100644 --- a/src/libslic3r/GCode/PreviewData.cpp +++ b/src/libslic3r/GCode/PreviewData.cpp @@ -23,7 +23,7 @@ std::vector GCodePreviewData::Color::as_bytes() const return ret; } -GCodePreviewData::Extrusion::Layer::Layer(float z, const ExtrusionPaths& paths) +GCodePreviewData::Extrusion::Layer::Layer(float z, const Paths& paths) : z(z) , paths(paths) { @@ -171,8 +171,8 @@ size_t GCodePreviewData::Extrusion::memory_used() const size_t out = sizeof(*this); out += SLIC3R_STDVEC_MEMSIZE(this->layers, Layer); for (const Layer &layer : this->layers) { - out += SLIC3R_STDVEC_MEMSIZE(layer.paths, ExtrusionPath); - for (const ExtrusionPath &path : layer.paths) + out += SLIC3R_STDVEC_MEMSIZE(layer.paths, Path); + for (const Path &path : layer.paths) out += SLIC3R_STDVEC_MEMSIZE(path.polyline.points, Point); } return out; diff --git a/src/libslic3r/GCode/PreviewData.hpp b/src/libslic3r/GCode/PreviewData.hpp index 7f5b691e1..70b6edffd 100644 --- a/src/libslic3r/GCode/PreviewData.hpp +++ b/src/libslic3r/GCode/PreviewData.hpp @@ -87,12 +87,34 @@ public: static const std::string Default_Extrusion_Role_Names[erCount]; static const EViewType Default_View_Type; + class Path + { + public: + Polyline polyline; + ExtrusionRole extrusion_role; + // Volumetric velocity. mm^3 of plastic per mm of linear head motion. Used by the G-code generator. + float mm3_per_mm; + // Width of the extrusion, used for visualization purposes. + float width; + // Height of the extrusion, used for visualization purposes. + float height; + // Feedrate of the extrusion, used for visualization purposes. + float feedrate; + // Id of the extruder, used for visualization purposes. + uint32_t extruder_id; + // Id of the color, used for visualization purposes in the color printing case. + uint32_t cp_color_id; + // Fan speed for the extrusion, used for visualization purposes. + float fan_speed; + }; + using Paths = std::vector; + struct Layer { float z; - ExtrusionPaths paths; + Paths paths; - Layer(float z, const ExtrusionPaths& paths); + Layer(float z, const Paths& paths); }; typedef std::vector LayersList; diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 8094cdde1..0e127a868 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -1717,13 +1717,18 @@ static void thick_point_to_verts(const Vec3crd& point, point_to_indexed_vertex_array(point, width, height, volume.indexed_vertex_array); } +void _3DScene::extrusionentity_to_verts(const Polyline &polyline, float width, float height, float print_z, GLVolume& volume) +{ + if (polyline.size() >= 2) { + size_t num_segments = polyline.size() - 1; + thick_lines_to_verts(polyline.lines(), std::vector(num_segments, width), std::vector(num_segments, height), false, print_z, volume); + } +} + // Fill in the qverts and tverts with quads and triangles for the extrusion_path. void _3DScene::extrusionentity_to_verts(const ExtrusionPath &extrusion_path, float print_z, GLVolume &volume) { - Lines lines = extrusion_path.polyline.lines(); - std::vector widths(lines.size(), extrusion_path.width); - std::vector heights(lines.size(), extrusion_path.height); - thick_lines_to_verts(lines, widths, heights, false, print_z, volume); + extrusionentity_to_verts(extrusion_path.polyline, extrusion_path.width, extrusion_path.height, print_z, volume); } // Fill in the qverts and tverts with quads and triangles for the extrusion_path. diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index 8c1d68f77..8c5040eee 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -656,6 +656,7 @@ public: static void thick_lines_to_verts(const Lines& lines, const std::vector& widths, const std::vector& heights, bool closed, double top_z, GLVolume& volume); static void thick_lines_to_verts(const Lines3& lines, const std::vector& widths, const std::vector& heights, bool closed, GLVolume& volume); + static void extrusionentity_to_verts(const Polyline &polyline, float width, float height, float print_z, GLVolume& volume); static void extrusionentity_to_verts(const ExtrusionPath& extrusion_path, float print_z, GLVolume& volume); static void extrusionentity_to_verts(const ExtrusionPath& extrusion_path, float print_z, const Point& copy, GLVolume& volume); static void extrusionentity_to_verts(const ExtrusionLoop& extrusion_loop, float print_z, const Point& copy, GLVolume& volume); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 9f5dd16e7..ff70fd451 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -4987,13 +4987,13 @@ void GLCanvas3D::_load_gcode_extrusion_paths(const GCodePreviewData& preview_dat // helper functions to select data in dependence of the extrusion view type struct Helper { - static float path_filter(GCodePreviewData::Extrusion::EViewType type, const ExtrusionPath& path) + static float path_filter(GCodePreviewData::Extrusion::EViewType type, const GCodePreviewData::Extrusion::Path& path) { switch (type) { case GCodePreviewData::Extrusion::FeatureType: // The role here is used for coloring. - return (float)path.role(); + return (float)path.extrusion_role; case GCodePreviewData::Extrusion::Height: return path.height; case GCodePreviewData::Extrusion::Width: @@ -5071,15 +5071,15 @@ void GLCanvas3D::_load_gcode_extrusion_paths(const GCodePreviewData& preview_dat { std::vector num_paths_per_role(size_t(erCount), 0); for (const GCodePreviewData::Extrusion::Layer &layer : preview_data.extrusion.layers) - for (const ExtrusionPath &path : layer.paths) - ++ num_paths_per_role[size_t(path.role())]; + for (const GCodePreviewData::Extrusion::Path &path : layer.paths) + ++ num_paths_per_role[size_t(path.extrusion_role)]; std::vector> roles_values; roles_values.assign(size_t(erCount), std::vector()); for (size_t i = 0; i < roles_values.size(); ++ i) roles_values[i].reserve(num_paths_per_role[i]); for (const GCodePreviewData::Extrusion::Layer& layer : preview_data.extrusion.layers) - for (const ExtrusionPath& path : layer.paths) - roles_values[size_t(path.role())].emplace_back(Helper::path_filter(preview_data.extrusion.view_type, path)); + for (const GCodePreviewData::Extrusion::Path &path : layer.paths) + roles_values[size_t(path.extrusion_role)].emplace_back(Helper::path_filter(preview_data.extrusion.view_type, path)); roles_filters.reserve(size_t(erCount)); size_t num_buffers = 0; for (std::vector &values : roles_values) { @@ -5107,9 +5107,9 @@ void GLCanvas3D::_load_gcode_extrusion_paths(const GCodePreviewData& preview_dat // populates volumes for (const GCodePreviewData::Extrusion::Layer& layer : preview_data.extrusion.layers) { - for (const ExtrusionPath& path : layer.paths) + for (const GCodePreviewData::Extrusion::Path& path : layer.paths) { - std::vector> &filters = roles_filters[size_t(path.role())]; + std::vector> &filters = roles_filters[size_t(path.extrusion_role)]; auto key = std::make_pair(Helper::path_filter(preview_data.extrusion.view_type, path), nullptr); auto it_filter = std::lower_bound(filters.begin(), filters.end(), key); assert(it_filter != filters.end() && key.first == it_filter->first); @@ -5119,7 +5119,7 @@ void GLCanvas3D::_load_gcode_extrusion_paths(const GCodePreviewData& preview_dat vol.offsets.push_back(vol.indexed_vertex_array.quad_indices.size()); vol.offsets.push_back(vol.indexed_vertex_array.triangle_indices.size()); - _3DScene::extrusionentity_to_verts(path, layer.z, vol); + _3DScene::extrusionentity_to_verts(path.polyline, path.width, path.height, layer.z, vol); } // Ensure that no volume grows over the limits. If the volume is too large, allocate a new one. for (std::vector> &filters : roles_filters) { From 38d8854a48991c5720e7cc31b5ea2b46f21b00e9 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Tue, 1 Oct 2019 12:48:58 +0200 Subject: [PATCH 08/53] Print::validate() - check for empty print has been moved at the beginning of the function This prevents a crash when the print is empty and the wipe tower enabled - validation of the wipe tower attempted to access extruders().front(), which was empty. No other checks need to be done with the empty print anyway. --- src/libslic3r/Print.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index f5601276f..a5800b007 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1114,6 +1114,9 @@ std::string Print::validate() const if (m_objects.empty()) return L("All objects are outside of the print volume."); + if (extruders().empty()) + return L("The supplied settings will cause an empty print."); + if (m_config.complete_objects) { // Check horizontal clearance. { @@ -1271,10 +1274,7 @@ std::string Print::validate() const } { - // find the smallest nozzle diameter std::vector extruders = this->extruders(); - if (extruders.empty()) - return L("The supplied settings will cause an empty print."); // Find the smallest used nozzle diameter and the number of unique nozzle diameters. double min_nozzle_diameter = std::numeric_limits::max(); From 6a07b231e19c976e86f186bdba0ff0b59a35bdc6 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Tue, 1 Oct 2019 13:41:22 +0200 Subject: [PATCH 09/53] Fixed a crash with a layer range modifier containing no slicing layer. --- src/libslic3r/PrintObject.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index c4f77b6d7..575ae60e3 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1659,25 +1659,26 @@ void PrintObject::_slice(const std::vector &layer_height_profile) // Trim volumes in a single layer, one by the other, possibly apply upscaling. { Polygons processed; - for (SlicedVolume &sliced_volume : sliced_volumes) { - ExPolygons slices = std::move(sliced_volume.expolygons_by_layer[layer_id]); - if (upscale) - slices = offset_ex(std::move(slices), delta); - if (! processed.empty()) - // Trim by the slices of already processed regions. - slices = diff_ex(to_polygons(std::move(slices)), processed); - if (size_t(&sliced_volume - &sliced_volumes.front()) + 1 < sliced_volumes.size()) - // Collect the already processed regions to trim the to be processed regions. - polygons_append(processed, slices); - sliced_volume.expolygons_by_layer[layer_id] = std::move(slices); - } + for (SlicedVolume &sliced_volume : sliced_volumes) + if (! sliced_volume.expolygons_by_layer.empty()) { + ExPolygons slices = std::move(sliced_volume.expolygons_by_layer[layer_id]); + if (upscale) + slices = offset_ex(std::move(slices), delta); + if (! processed.empty()) + // Trim by the slices of already processed regions. + slices = diff_ex(to_polygons(std::move(slices)), processed); + if (size_t(&sliced_volume - &sliced_volumes.front()) + 1 < sliced_volumes.size()) + // Collect the already processed regions to trim the to be processed regions. + polygons_append(processed, slices); + sliced_volume.expolygons_by_layer[layer_id] = std::move(slices); + } } // Collect and union volumes of a single region. for (int region_id = 0; region_id < (int)this->region_volumes.size(); ++ region_id) { ExPolygons expolygons; size_t num_volumes = 0; for (SlicedVolume &sliced_volume : sliced_volumes) - if (sliced_volume.region_id == region_id && ! sliced_volume.expolygons_by_layer[layer_id].empty()) { + if (sliced_volume.region_id == region_id && ! sliced_volume.expolygons_by_layer.empty() && ! sliced_volume.expolygons_by_layer[layer_id].empty()) { ++ num_volumes; append(expolygons, std::move(sliced_volume.expolygons_by_layer[layer_id])); } From 45b81f180534b060177d379f1a2df9241288a449 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 1 Oct 2019 14:27:29 +0200 Subject: [PATCH 10/53] Fixed "unhandled unknown exception", when try to change an extruder count. Side effect after https://github.com/prusa3d/PrusaSlicer/commit/86b258f727212fde4cf4a7a5160bfe7d2b7e0972. --- src/slic3r/GUI/Tab.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 803a5cf08..d3f331442 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1808,7 +1808,10 @@ void TabPrinter::build_fff() optgroup->append_single_option_line("single_extruder_multi_material"); optgroup->m_on_change = [this, optgroup](t_config_option_key opt_key, boost::any value) { - size_t extruders_count = boost::any_cast(optgroup->get_value("extruders_count")); + // optgroup->get_value() return int for def.type == coInt, + // Thus, there should be boost::any_cast ! + // Otherwise, boost::any_cast causes an "unhandled unknown exception" + size_t extruders_count = size_t(boost::any_cast(optgroup->get_value("extruders_count"))); wxTheApp->CallAfter([this, opt_key, value, extruders_count]() { if (opt_key == "extruders_count" || opt_key == "single_extruder_multi_material") { extruders_count_changed(extruders_count); From b6f447980aaf027da04221a9c200e1de65438f7e Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 1 Oct 2019 14:44:07 +0200 Subject: [PATCH 11/53] Add upper limit on 1.0 to sla display gamma parameter. --- src/libslic3r/PrintConfig.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 1ce00f269..78dd60a4b 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2392,6 +2392,7 @@ void PrintConfigDef::init_sla_params() "the threshold in the middle. This behaviour eliminates " "antialiasing without losing holes in polygons."); def->min = 0; + def->max = 1; def->mode = comExpert; def->set_default_value(new ConfigOptionFloat(1.0)); From 710adca6fef4eeebc53ee5ac8a7528c469887e0f Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 1 Oct 2019 14:57:37 +0200 Subject: [PATCH 12/53] Don't disable pad around object parameters if supports are disabled. --- src/slic3r/GUI/ConfigManipulation.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index c9cdff162..9ca08809b 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -354,8 +354,7 @@ void ConfigManipulation::toggle_print_sla_options(DynamicPrintConfig* config) toggle_field("pad_wall_slope", pad_en); toggle_field("pad_around_object", pad_en); - bool has_suppad = pad_en && supports_en; - bool zero_elev = config->opt_bool("pad_around_object") && has_suppad; + bool zero_elev = config->opt_bool("pad_around_object") && pad_en; toggle_field("support_object_elevation", supports_en && !zero_elev); toggle_field("pad_object_gap", zero_elev); From e4247f9856de0a928bce6bc1f86e4f47858feb90 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 24 Sep 2019 14:54:33 +0200 Subject: [PATCH 13/53] libslic3r core enhancements * ClipperUtils extended with ExPolygon to clipper paths conversion and improved PolyTree traversal * Added ExPolygon constructor with Polygon argument * Removed BoundingBox warnings on clang * Removed Geometry warnings on clang --- src/libslic3r/BoundingBox.hpp | 55 ++++++++--- src/libslic3r/ClipperUtils.cpp | 172 ++++++++++++++++++++++++++++----- src/libslic3r/ClipperUtils.hpp | 14 ++- src/libslic3r/ExPolygon.hpp | 3 + src/libslic3r/Geometry.hpp | 5 + 5 files changed, 210 insertions(+), 39 deletions(-) diff --git a/src/libslic3r/BoundingBox.hpp b/src/libslic3r/BoundingBox.hpp index b1ebdcfbc..4fbe72163 100644 --- a/src/libslic3r/BoundingBox.hpp +++ b/src/libslic3r/BoundingBox.hpp @@ -15,7 +15,7 @@ public: PointClass max; bool defined; - BoundingBoxBase() : defined(false), min(PointClass::Zero()), max(PointClass::Zero()) {} + BoundingBoxBase() : min(PointClass::Zero()), max(PointClass::Zero()), defined(false) {} BoundingBoxBase(const PointClass &pmin, const PointClass &pmax) : min(pmin), max(pmax), defined(pmin(0) < pmax(0) && pmin(1) < pmax(1)) {} BoundingBoxBase(const std::vector& points) : min(PointClass::Zero()), max(PointClass::Zero()) @@ -59,7 +59,7 @@ template class BoundingBox3Base : public BoundingBoxBase { public: - BoundingBox3Base() : BoundingBoxBase() {}; + BoundingBox3Base() : BoundingBoxBase() {} BoundingBox3Base(const PointClass &pmin, const PointClass &pmax) : BoundingBoxBase(pmin, pmax) { if (pmin(2) >= pmax(2)) BoundingBoxBase::defined = false; } @@ -100,6 +100,33 @@ public: } }; +// Will prevent warnings caused by non existing definition of template in hpp +extern template void BoundingBoxBase::scale(double factor); +extern template void BoundingBoxBase::scale(double factor); +extern template void BoundingBoxBase::scale(double factor); +extern template void BoundingBoxBase::offset(coordf_t delta); +extern template void BoundingBoxBase::offset(coordf_t delta); +extern template void BoundingBoxBase::merge(const Point &point); +extern template void BoundingBoxBase::merge(const Vec2d &point); +extern template void BoundingBoxBase::merge(const Points &points); +extern template void BoundingBoxBase::merge(const Pointfs &points); +extern template void BoundingBoxBase::merge(const BoundingBoxBase &bb); +extern template void BoundingBoxBase::merge(const BoundingBoxBase &bb); +extern template Point BoundingBoxBase::size() const; +extern template Vec2d BoundingBoxBase::size() const; +extern template double BoundingBoxBase::radius() const; +extern template double BoundingBoxBase::radius() const; +extern template Point BoundingBoxBase::center() const; +extern template Vec2d BoundingBoxBase::center() const; +extern template void BoundingBox3Base::merge(const Vec3d &point); +extern template void BoundingBox3Base::merge(const Pointf3s &points); +extern template void BoundingBox3Base::merge(const BoundingBox3Base &bb); +extern template Vec3d BoundingBox3Base::size() const; +extern template double BoundingBox3Base::radius() const; +extern template void BoundingBox3Base::offset(coordf_t delta); +extern template Vec3d BoundingBox3Base::center() const; +extern template coordf_t BoundingBox3Base::max_size() const; + class BoundingBox : public BoundingBoxBase { public: @@ -113,9 +140,9 @@ public: // to encompass the original bounding box. void align_to_grid(const coord_t cell_size); - BoundingBox() : BoundingBoxBase() {}; - BoundingBox(const Point &pmin, const Point &pmax) : BoundingBoxBase(pmin, pmax) {}; - BoundingBox(const Points &points) : BoundingBoxBase(points) {}; + BoundingBox() : BoundingBoxBase() {} + BoundingBox(const Point &pmin, const Point &pmax) : BoundingBoxBase(pmin, pmax) {} + BoundingBox(const Points &points) : BoundingBoxBase(points) {} BoundingBox(const Lines &lines); friend BoundingBox get_extents_rotated(const Points &points, double angle); @@ -124,25 +151,25 @@ public: class BoundingBox3 : public BoundingBox3Base { public: - BoundingBox3() : BoundingBox3Base() {}; - BoundingBox3(const Vec3crd &pmin, const Vec3crd &pmax) : BoundingBox3Base(pmin, pmax) {}; - BoundingBox3(const Points3& points) : BoundingBox3Base(points) {}; + BoundingBox3() : BoundingBox3Base() {} + BoundingBox3(const Vec3crd &pmin, const Vec3crd &pmax) : BoundingBox3Base(pmin, pmax) {} + BoundingBox3(const Points3& points) : BoundingBox3Base(points) {} }; class BoundingBoxf : public BoundingBoxBase { public: - BoundingBoxf() : BoundingBoxBase() {}; - BoundingBoxf(const Vec2d &pmin, const Vec2d &pmax) : BoundingBoxBase(pmin, pmax) {}; - BoundingBoxf(const std::vector &points) : BoundingBoxBase(points) {}; + BoundingBoxf() : BoundingBoxBase() {} + BoundingBoxf(const Vec2d &pmin, const Vec2d &pmax) : BoundingBoxBase(pmin, pmax) {} + BoundingBoxf(const std::vector &points) : BoundingBoxBase(points) {} }; class BoundingBoxf3 : public BoundingBox3Base { public: - BoundingBoxf3() : BoundingBox3Base() {}; - BoundingBoxf3(const Vec3d &pmin, const Vec3d &pmax) : BoundingBox3Base(pmin, pmax) {}; - BoundingBoxf3(const std::vector &points) : BoundingBox3Base(points) {}; + BoundingBoxf3() : BoundingBox3Base() {} + BoundingBoxf3(const Vec3d &pmin, const Vec3d &pmax) : BoundingBox3Base(pmin, pmax) {} + BoundingBoxf3(const std::vector &points) : BoundingBox3Base(points) {} BoundingBoxf3 transformed(const Transform3d& matrix) const; }; diff --git a/src/libslic3r/ClipperUtils.cpp b/src/libslic3r/ClipperUtils.cpp index c3183bd8e..b863b4712 100644 --- a/src/libslic3r/ClipperUtils.cpp +++ b/src/libslic3r/ClipperUtils.cpp @@ -194,6 +194,19 @@ ClipperLib::Paths Slic3rMultiPoints_to_ClipperPaths(const Polygons &input) return retval; } +ClipperLib::Paths Slic3rMultiPoints_to_ClipperPaths(const ExPolygons &input) +{ + ClipperLib::Paths retval; + for (auto &ep : input) { + retval.emplace_back(Slic3rMultiPoint_to_ClipperPath(ep.contour)); + + for (auto &h : ep.holes) + retval.emplace_back(Slic3rMultiPoint_to_ClipperPath(h)); + } + + return retval; +} + ClipperLib::Paths Slic3rMultiPoints_to_ClipperPaths(const Polylines &input) { ClipperLib::Paths retval; @@ -472,14 +485,16 @@ ExPolygons offset2_ex(const ExPolygons &expolygons, const float delta1, return union_ex(polys); } -template -T -_clipper_do(const ClipperLib::ClipType clipType, const Polygons &subject, - const Polygons &clip, const ClipperLib::PolyFillType fillType, const bool safety_offset_) +template +T _clipper_do(const ClipperLib::ClipType clipType, + TSubj && subject, + TClip && clip, + const ClipperLib::PolyFillType fillType, + const bool safety_offset_) { // read input - ClipperLib::Paths input_subject = Slic3rMultiPoints_to_ClipperPaths(subject); - ClipperLib::Paths input_clip = Slic3rMultiPoints_to_ClipperPaths(clip); + ClipperLib::Paths input_subject = Slic3rMultiPoints_to_ClipperPaths(std::forward(subject)); + ClipperLib::Paths input_clip = Slic3rMultiPoints_to_ClipperPaths(std::forward(clip)); // perform safety offset if (safety_offset_) { @@ -648,12 +663,26 @@ _clipper_ln(ClipperLib::ClipType clipType, const Lines &subject, const Polygons return retval; } -ClipperLib::PolyTree -union_pt(const Polygons &subject, bool safety_offset_) +ClipperLib::PolyTree union_pt(const Polygons &subject, bool safety_offset_) { return _clipper_do(ClipperLib::ctUnion, subject, Polygons(), ClipperLib::pftEvenOdd, safety_offset_); } +ClipperLib::PolyTree union_pt(const ExPolygons &subject, bool safety_offset_) +{ + return _clipper_do(ClipperLib::ctUnion, subject, Polygons(), ClipperLib::pftEvenOdd, safety_offset_); +} + +ClipperLib::PolyTree union_pt(Polygons &&subject, bool safety_offset_) +{ + return _clipper_do(ClipperLib::ctUnion, std::move(subject), Polygons(), ClipperLib::pftEvenOdd, safety_offset_); +} + +ClipperLib::PolyTree union_pt(ExPolygons &&subject, bool safety_offset_) +{ + return _clipper_do(ClipperLib::ctUnion, std::move(subject), Polygons(), ClipperLib::pftEvenOdd, safety_offset_); +} + Polygons union_pt_chained(const Polygons &subject, bool safety_offset_) { @@ -664,28 +693,123 @@ union_pt_chained(const Polygons &subject, bool safety_offset_) return retval; } -void traverse_pt(ClipperLib::PolyNodes &nodes, Polygons* retval) +static ClipperLib::PolyNodes order_nodes(const ClipperLib::PolyNodes &nodes) +{ + // collect ordering points + Points ordering_points; + ordering_points.reserve(nodes.size()); + for (const ClipperLib::PolyNode *node : nodes) + ordering_points.emplace_back(Point(node->Contour.front().X, node->Contour.front().Y)); + + // perform the ordering + ClipperLib::PolyNodes ordered_nodes = chain_clipper_polynodes(ordering_points, nodes); + + return ordered_nodes; +} + +enum class e_ordering { + ORDER_POLYNODES, + DONT_ORDER_POLYNODES +}; + +template +void foreach_node(const ClipperLib::PolyNodes &nodes, + std::function fn); + +template<> void foreach_node( + const ClipperLib::PolyNodes & nodes, + std::function fn) +{ + for (auto &n : nodes) fn(n); +} + +template<> void foreach_node( + const ClipperLib::PolyNodes & nodes, + std::function fn) +{ + auto ordered_nodes = order_nodes(nodes); + for (auto &n : ordered_nodes) fn(n); +} + +template +void _traverse_pt(const ClipperLib::PolyNodes &nodes, Polygons *retval) { /* use a nearest neighbor search to order these children TODO: supply start_near to chained_path() too? */ - // collect ordering points - Points ordering_points; - ordering_points.reserve(nodes.size()); - for (ClipperLib::PolyNode *pn : nodes) - ordering_points.emplace_back(Point(pn->Contour.front().X, pn->Contour.front().Y)); - - // perform the ordering - ClipperLib::PolyNodes ordered_nodes = chain_clipper_polynodes(ordering_points, nodes); - // push results recursively - for (ClipperLib::PolyNode *pn : ordered_nodes) { + foreach_node(nodes, [&retval](const ClipperLib::PolyNode *node) { // traverse the next depth - traverse_pt(pn->Childs, retval); - retval->emplace_back(ClipperPath_to_Slic3rPolygon(pn->Contour)); - if (pn->IsHole()) - retval->back().reverse(); // ccw - } + _traverse_pt(node->Childs, retval); + retval->emplace_back(ClipperPath_to_Slic3rPolygon(node->Contour)); + if (node->IsHole()) retval->back().reverse(); // ccw + }); +} + +template +void _traverse_pt(const ClipperLib::PolyNode *tree, ExPolygons *retval) +{ + if (!retval || !tree) return; + + ExPolygons &retv = *retval; + + std::function hole_fn; + + auto contour_fn = [&retv, &hole_fn](const ClipperLib::PolyNode *pptr) { + ExPolygon poly; + poly.contour.points = ClipperPath_to_Slic3rPolygon(pptr->Contour); + auto fn = std::bind(hole_fn, std::placeholders::_1, poly); + foreach_node(pptr->Childs, fn); + retv.push_back(poly); + }; + + hole_fn = [&contour_fn](const ClipperLib::PolyNode *pptr, ExPolygon& poly) + { + poly.holes.emplace_back(); + poly.holes.back().points = ClipperPath_to_Slic3rPolygon(pptr->Contour); + foreach_node(pptr->Childs, contour_fn); + }; + + contour_fn(tree); +} + +template +void _traverse_pt(const ClipperLib::PolyNodes &nodes, ExPolygons *retval) +{ + // Here is the actual traverse + foreach_node(nodes, [&retval](const ClipperLib::PolyNode *node) { + _traverse_pt(node, retval); + }); +} + +void traverse_pt(const ClipperLib::PolyNode *tree, ExPolygons *retval) +{ + _traverse_pt(tree, retval); +} + +void traverse_pt_unordered(const ClipperLib::PolyNode *tree, ExPolygons *retval) +{ + _traverse_pt(tree, retval); +} + +void traverse_pt(const ClipperLib::PolyNodes &nodes, Polygons *retval) +{ + _traverse_pt(nodes, retval); +} + +void traverse_pt(const ClipperLib::PolyNodes &nodes, ExPolygons *retval) +{ + _traverse_pt(nodes, retval); +} + +void traverse_pt_unordered(const ClipperLib::PolyNodes &nodes, Polygons *retval) +{ + _traverse_pt(nodes, retval); +} + +void traverse_pt_unordered(const ClipperLib::PolyNodes &nodes, ExPolygons *retval) +{ + _traverse_pt(nodes, retval); } Polygons simplify_polygons(const Polygons &subject, bool preserve_collinear) diff --git a/src/libslic3r/ClipperUtils.hpp b/src/libslic3r/ClipperUtils.hpp index 0e58d7fac..d8f8a8f94 100644 --- a/src/libslic3r/ClipperUtils.hpp +++ b/src/libslic3r/ClipperUtils.hpp @@ -34,6 +34,7 @@ Slic3r::ExPolygons PolyTreeToExPolygons(ClipperLib::PolyTree& polytree); ClipperLib::Path Slic3rMultiPoint_to_ClipperPath(const Slic3r::MultiPoint &input); ClipperLib::Paths Slic3rMultiPoints_to_ClipperPaths(const Polygons &input); +ClipperLib::Paths Slic3rMultiPoints_to_ClipperPaths(const ExPolygons &input); ClipperLib::Paths Slic3rMultiPoints_to_ClipperPaths(const Polylines &input); Slic3r::Polygon ClipperPath_to_Slic3rPolygon(const ClipperLib::Path &input); Slic3r::Polyline ClipperPath_to_Slic3rPolyline(const ClipperLib::Path &input); @@ -215,8 +216,19 @@ inline Slic3r::ExPolygons union_ex(const Slic3r::Surfaces &subject, bool safety_ ClipperLib::PolyTree union_pt(const Slic3r::Polygons &subject, bool safety_offset_ = false); +ClipperLib::PolyTree union_pt(const Slic3r::ExPolygons &subject, bool safety_offset_ = false); +ClipperLib::PolyTree union_pt(Slic3r::Polygons &&subject, bool safety_offset_ = false); +ClipperLib::PolyTree union_pt(Slic3r::ExPolygons &&subject, bool safety_offset_ = false); + Slic3r::Polygons union_pt_chained(const Slic3r::Polygons &subject, bool safety_offset_ = false); -void traverse_pt(ClipperLib::PolyNodes &nodes, Slic3r::Polygons* retval); + +void traverse_pt(const ClipperLib::PolyNodes &nodes, Slic3r::Polygons *retval); +void traverse_pt(const ClipperLib::PolyNodes &nodes, Slic3r::ExPolygons *retval); +void traverse_pt(const ClipperLib::PolyNode *tree, Slic3r::ExPolygons *retval); + +void traverse_pt_unordered(const ClipperLib::PolyNodes &nodes, Slic3r::Polygons *retval); +void traverse_pt_unordered(const ClipperLib::PolyNodes &nodes, Slic3r::ExPolygons *retval); +void traverse_pt_unordered(const ClipperLib::PolyNode *tree, Slic3r::ExPolygons *retval); /* OTHER */ Slic3r::Polygons simplify_polygons(const Slic3r::Polygons &subject, bool preserve_collinear = false); diff --git a/src/libslic3r/ExPolygon.hpp b/src/libslic3r/ExPolygon.hpp index afbc0931e..a7ef2784c 100644 --- a/src/libslic3r/ExPolygon.hpp +++ b/src/libslic3r/ExPolygon.hpp @@ -24,6 +24,9 @@ public: ExPolygon& operator=(const ExPolygon &other) { contour = other.contour; holes = other.holes; return *this; } ExPolygon& operator=(ExPolygon &&other) { contour = std::move(other.contour); holes = std::move(other.holes); return *this; } + inline explicit ExPolygon(const Polygon &p): contour(p) {} + inline explicit ExPolygon(Polygon &&p): contour(std::move(p)) {} + Polygon contour; Polygons holes; diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index a574209d8..394a6e502 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -14,6 +14,11 @@ using boost::polygon::voronoi_builder; using boost::polygon::voronoi_diagram; +namespace ClipperLib { +class PolyNode; +using PolyNodes = std::vector; +} + namespace Slic3r { namespace Geometry { // Generic result of an orientation predicate. From 9d775d0a43edebd6bc7f2c8b598f5fa1a8998bcd Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 24 Sep 2019 15:07:22 +0200 Subject: [PATCH 14/53] Make loading of obj files into TriangleMesh possible. --- src/libslic3r/Format/OBJ.cpp | 72 +++++++++++++++++++++--------------- src/libslic3r/Format/OBJ.hpp | 2 + 2 files changed, 45 insertions(+), 29 deletions(-) diff --git a/src/libslic3r/Format/OBJ.cpp b/src/libslic3r/Format/OBJ.cpp index 85ca73551..aa389781a 100644 --- a/src/libslic3r/Format/OBJ.cpp +++ b/src/libslic3r/Format/OBJ.cpp @@ -15,39 +15,41 @@ namespace Slic3r { -bool load_obj(const char *path, Model *model, const char *object_name_in) +bool load_obj(const char *path, TriangleMesh *meshptr) { + if(meshptr == nullptr) return false; + // Parse the OBJ file. ObjParser::ObjData data; if (! ObjParser::objparse(path, data)) { -// die "Failed to parse $file\n" if !-e $path; + // die "Failed to parse $file\n" if !-e $path; return false; } - + // Count the faces and verify, that all faces are triangular. size_t num_faces = 0; - size_t num_quads = 0; + size_t num_quads = 0; for (size_t i = 0; i < data.vertices.size(); ) { size_t j = i; for (; j < data.vertices.size() && data.vertices[j].coordIdx != -1; ++ j) ; if (i == j) continue; - size_t face_vertices = j - i; - if (face_vertices != 3 && face_vertices != 4) { + size_t face_vertices = j - i; + if (face_vertices != 3 && face_vertices != 4) { // Non-triangular and non-quad faces are not supported as of now. return false; } - if (face_vertices == 4) - ++ num_quads; - ++ num_faces; + if (face_vertices == 4) + ++ num_quads; + ++ num_faces; i = j + 1; } - + // Convert ObjData into STL. - TriangleMesh mesh; + TriangleMesh &mesh = *meshptr; stl_file &stl = mesh.stl; stl.stats.type = inmemory; - stl.stats.number_of_facets = int(num_faces + num_quads); + stl.stats.number_of_facets = uint32_t(num_faces + num_quads); stl.stats.original_num_facets = int(num_faces + num_quads); // stl_allocate clears all the allocated data to zero, all normals are set to zeros as well. stl_allocate(&stl); @@ -68,14 +70,14 @@ bool load_obj(const char *path, Model *model, const char *object_name_in) ++ num_normals; } } - if (data.vertices[i].coordIdx != -1) { - // This is a quad. Produce the other triangle. - stl_facet &facet2 = stl.facet_start[i_face++]; + if (data.vertices[i].coordIdx != -1) { + // This is a quad. Produce the other triangle. + stl_facet &facet2 = stl.facet_start[i_face++]; facet2.vertex[0] = facet.vertex[0]; facet2.vertex[1] = facet.vertex[2]; - const ObjParser::ObjVertex &vertex = data.vertices[i++]; - memcpy(facet2.vertex[2].data(), &data.coordinates[vertex.coordIdx * 4], 3 * sizeof(float)); - if (vertex.normalIdx != -1) { + const ObjParser::ObjVertex &vertex = data.vertices[i++]; + memcpy(facet2.vertex[2].data(), &data.coordinates[vertex.coordIdx * 4], 3 * sizeof(float)); + if (vertex.normalIdx != -1) { normal(0) += data.normals[vertex.normalIdx*3]; normal(1) += data.normals[vertex.normalIdx*3+1]; normal(2) += data.normals[vertex.normalIdx*3+2]; @@ -96,25 +98,37 @@ bool load_obj(const char *path, Model *model, const char *object_name_in) if (len > EPSILON) facet.normal = normal / len; } - } + } stl_get_size(&stl); mesh.repair(); if (mesh.facets_count() == 0) { - // die "This STL file couldn't be read because it's empty.\n" + // die "This OBJ file couldn't be read because it's empty.\n" return false; } - - std::string object_name; - if (object_name_in == nullptr) { - const char *last_slash = strrchr(path, DIR_SEPARATOR); - object_name.assign((last_slash == nullptr) ? path : last_slash + 1); - } else - object_name.assign(object_name_in); - - model->add_object(object_name.c_str(), path, std::move(mesh)); + return true; } +bool load_obj(const char *path, Model *model, const char *object_name_in) +{ + TriangleMesh mesh; + + bool ret = load_obj(path, &mesh); + + if (ret) { + std::string object_name; + if (object_name_in == nullptr) { + const char *last_slash = strrchr(path, DIR_SEPARATOR); + object_name.assign((last_slash == nullptr) ? path : last_slash + 1); + } else + object_name.assign(object_name_in); + + model->add_object(object_name.c_str(), path, std::move(mesh)); + } + + return ret; +} + bool store_obj(const char *path, TriangleMesh *mesh) { //FIXME returning false even if write failed. diff --git a/src/libslic3r/Format/OBJ.hpp b/src/libslic3r/Format/OBJ.hpp index 36aa17951..3eb8b4139 100644 --- a/src/libslic3r/Format/OBJ.hpp +++ b/src/libslic3r/Format/OBJ.hpp @@ -5,8 +5,10 @@ namespace Slic3r { class TriangleMesh; class Model; +class ModelObject; // Load an OBJ file into a provided model. +extern bool load_obj(const char *path, TriangleMesh *mesh); extern bool load_obj(const char *path, Model *model, const char *object_name = nullptr); extern bool store_obj(const char *path, TriangleMesh *mesh); From e675a5d5c6022b1a75da02b38d22cf08b6bc5c6f Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 24 Sep 2019 15:15:49 +0200 Subject: [PATCH 15/53] Reworked pad creation algorithm with new parameters: * brim size * force pad around object everywhere --- sandboxes/slabasebed/slabasebed.cpp | 10 +- src/libslic3r/CMakeLists.txt | 5 +- src/libslic3r/MTUtils.hpp | 34 +- src/libslic3r/PrintConfig.cpp | 18 + src/libslic3r/PrintConfig.hpp | 9 +- src/libslic3r/SLA/SLAAutoSupports.cpp | 30 +- src/libslic3r/SLA/SLAAutoSupports.hpp | 12 +- src/libslic3r/SLA/SLABasePool.cpp | 922 ------------------------ src/libslic3r/SLA/SLABasePool.hpp | 92 --- src/libslic3r/SLA/SLABoilerPlate.hpp | 67 +- src/libslic3r/SLA/SLACommon.hpp | 2 + src/libslic3r/SLA/SLAPad.cpp | 865 ++++++++++++++++++++++ src/libslic3r/SLA/SLAPad.hpp | 93 +++ src/libslic3r/SLA/SLASpatIndex.hpp | 9 +- src/libslic3r/SLA/SLASupportTree.cpp | 461 +++++------- src/libslic3r/SLA/SLASupportTree.hpp | 24 +- src/libslic3r/SLA/SLASupportTreeIGL.cpp | 44 +- src/libslic3r/SLAPrint.cpp | 117 ++- src/libslic3r/SLAPrint.hpp | 4 +- src/libslic3r/Tesselate.hpp | 15 +- src/slic3r/GUI/3DScene.cpp | 4 +- src/slic3r/GUI/ConfigManipulation.cpp | 3 + src/slic3r/GUI/GLCanvas3D.cpp | 6 +- src/slic3r/GUI/MainFrame.cpp | 2 +- src/slic3r/GUI/Plater.cpp | 6 +- src/slic3r/GUI/Preset.cpp | 2 + src/slic3r/GUI/Tab.cpp | 2 + 27 files changed, 1410 insertions(+), 1448 deletions(-) delete mode 100644 src/libslic3r/SLA/SLABasePool.cpp delete mode 100644 src/libslic3r/SLA/SLABasePool.hpp create mode 100644 src/libslic3r/SLA/SLAPad.cpp create mode 100644 src/libslic3r/SLA/SLAPad.hpp diff --git a/sandboxes/slabasebed/slabasebed.cpp b/sandboxes/slabasebed/slabasebed.cpp index b8b94d86f..1996a1eb8 100644 --- a/sandboxes/slabasebed/slabasebed.cpp +++ b/sandboxes/slabasebed/slabasebed.cpp @@ -16,9 +16,9 @@ const std::string USAGE_STR = { namespace Slic3r { namespace sla { -Contour3D create_base_pool(const Polygons &ground_layer, +Contour3D create_pad(const Polygons &ground_layer, const ExPolygons &holes = {}, - const PoolConfig& cfg = PoolConfig()); + const PadConfig& cfg = PadConfig()); Contour3D walls(const Polygon& floor_plate, const Polygon& ceiling, double floor_z_mm, double ceiling_z_mm, @@ -45,7 +45,7 @@ int main(const int argc, const char *argv[]) { model.align_to_origin(); ExPolygons ground_slice; - sla::base_plate(model, ground_slice, 0.1f); + sla::pad_plate(model, ground_slice, 0.1f); if(ground_slice.empty()) return EXIT_FAILURE; ground_slice = offset_ex(ground_slice, 0.5); @@ -56,10 +56,10 @@ int main(const int argc, const char *argv[]) { bench.start(); - sla::PoolConfig cfg; + sla::PadConfig cfg; cfg.min_wall_height_mm = 0; cfg.edge_radius_mm = 0; - mesh = sla::create_base_pool(to_polygons(ground_slice), {}, cfg); + mesh = sla::create_pad(to_polygons(ground_slice), {}, cfg); bench.stop(); diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 5232be2b6..6aa197417 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -176,8 +176,8 @@ add_library(libslic3r STATIC miniz_extension.cpp SLA/SLACommon.hpp SLA/SLABoilerPlate.hpp - SLA/SLABasePool.hpp - SLA/SLABasePool.cpp + SLA/SLAPad.hpp + SLA/SLAPad.cpp SLA/SLASupportTree.hpp SLA/SLASupportTree.cpp SLA/SLASupportTreeIGL.cpp @@ -215,6 +215,7 @@ target_link_libraries(libslic3r qhull semver tbb + ${CMAKE_DL_LIBS} ) if(WIN32) diff --git a/src/libslic3r/MTUtils.hpp b/src/libslic3r/MTUtils.hpp index 212752883..63ff6fb09 100644 --- a/src/libslic3r/MTUtils.hpp +++ b/src/libslic3r/MTUtils.hpp @@ -252,22 +252,15 @@ template struct remove_cvref template using remove_cvref_t = typename remove_cvref::type; -template class C, class T> -class Container : public C> -{ -public: - explicit Container(size_t count, T &&initval) - : C>(count, initval) - {} -}; - template using DefaultContainer = std::vector; /// Exactly like Matlab https://www.mathworks.com/help/matlab/ref/linspace.html -template class C = DefaultContainer> -inline C> linspace(const T &start, const T &stop, const I &n) +template class Container = DefaultContainer> +inline Container> linspace(const T &start, + const T &stop, + const I &n) { - Container vals(n, T()); + Container> vals(n, T()); T stride = (stop - start) / n; size_t i = 0; @@ -282,10 +275,13 @@ inline C> linspace(const T &start, const T &stop, const I &n) /// in the closest multiple of 'stride' less than or equal to 'end' and /// leaving 'stride' space between each value. /// Very similar to Matlab [start:stride:end] notation. -template class C = DefaultContainer> -inline C> grid(const T &start, const T &stop, const T &stride) +template class Container = DefaultContainer> +inline Container> grid(const T &start, + const T &stop, + const T &stride) { - Container vals(size_t(std::ceil((stop - start) / stride)), T()); + Container> + vals(size_t(std::ceil((stop - start) / stride)), T()); int i = 0; std::generate(vals.begin(), vals.end(), [&i, start, stride] { @@ -387,10 +383,12 @@ unscaled(const Eigen::Matrix &v) noexcept return v.template cast() * SCALING_FACTOR; } -template inline std::vector reserve_vector(size_t capacity) +template // Arbitrary allocator can be used +inline IntegerOnly> reserve_vector(I capacity) { - std::vector ret; - ret.reserve(capacity); + std::vector ret; + if (capacity > I(0)) ret.reserve(size_t(capacity)); + return ret; } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 78dd60a4b..148ffe141 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2694,6 +2694,17 @@ void PrintConfigDef::init_sla_params() def->max = 30; def->mode = comExpert; def->set_default_value(new ConfigOptionFloat(0.)); + + def = this->add("pad_brim_size", coFloat); + def->label = L("Pad brim size"); + def->tooltip = L("How far should the pad extend around the contained geometry"); + def->category = L("Pad"); + // def->tooltip = L(""); + def->sidetext = L("mm"); + def->min = 0; + def->max = 30; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(1.6)); def = this->add("pad_max_merge_distance", coFloat); def->label = L("Max merge distance"); @@ -2734,6 +2745,13 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("Create pad around object and ignore the support elevation"); def->mode = comSimple; def->set_default_value(new ConfigOptionBool(false)); + + def = this->add("pad_around_object_everywhere", coBool); + def->label = L("Pad around object everywhere"); + def->category = L("Pad"); + def->tooltip = L("Force pad around object everywhere"); + def->mode = comSimple; + def->set_default_value(new ConfigOptionBool(false)); def = this->add("pad_object_gap", coFloat); def->label = L("Pad object gap"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 6a19edf84..e4ffe9199 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1022,6 +1022,9 @@ public: // The height of the pad from the bottom to the top not considering the pit ConfigOptionFloat pad_wall_height /*= 5*/; + + // How far should the pad extend around the contained geometry + ConfigOptionFloat pad_brim_size; // The greatest distance where two individual pads are merged into one. The // distance is measured roughly from the centroids of the pads. @@ -1042,7 +1045,9 @@ public: // ///////////////////////////////////////////////////////////////////////// // Disable the elevation (ignore its value) and use the zero elevation mode - ConfigOptionBool pad_around_object; + ConfigOptionBool pad_around_object; + + ConfigOptionBool pad_around_object_everywhere; // This is the gap between the object bottom and the generated pad ConfigOptionFloat pad_object_gap; @@ -1082,10 +1087,12 @@ protected: OPT_PTR(pad_enable); OPT_PTR(pad_wall_thickness); OPT_PTR(pad_wall_height); + OPT_PTR(pad_brim_size); OPT_PTR(pad_max_merge_distance); // OPT_PTR(pad_edge_radius); OPT_PTR(pad_wall_slope); OPT_PTR(pad_around_object); + OPT_PTR(pad_around_object_everywhere); OPT_PTR(pad_object_gap); OPT_PTR(pad_object_connector_stride); OPT_PTR(pad_object_connector_width); diff --git a/src/libslic3r/SLA/SLAAutoSupports.cpp b/src/libslic3r/SLA/SLAAutoSupports.cpp index 36378df39..65f590143 100644 --- a/src/libslic3r/SLA/SLAAutoSupports.cpp +++ b/src/libslic3r/SLA/SLAAutoSupports.cpp @@ -16,6 +16,7 @@ #include namespace Slic3r { +namespace sla { /*float SLAAutoSupports::approximate_geodesic_distance(const Vec3d& p1, const Vec3d& p2, Vec3d& n1, Vec3d& n2) { @@ -48,9 +49,16 @@ float SLAAutoSupports::distance_limit(float angle) const return 1./(2.4*get_required_density(angle)); }*/ -SLAAutoSupports::SLAAutoSupports(const TriangleMesh& mesh, const sla::EigenMesh3D& emesh, const std::vector& slices, const std::vector& heights, - const Config& config, std::function throw_on_cancel, std::function statusfn) -: m_config(config), m_emesh(emesh), m_throw_on_cancel(throw_on_cancel), m_statusfn(statusfn) +SLAAutoSupports::SLAAutoSupports(const sla::EigenMesh3D & emesh, + const std::vector &slices, + const std::vector & heights, + const Config & config, + std::function throw_on_cancel, + std::function statusfn) + : m_config(config) + , m_emesh(emesh) + , m_throw_on_cancel(throw_on_cancel) + , m_statusfn(statusfn) { process(slices, heights); project_onto_mesh(m_output); @@ -505,6 +513,21 @@ void SLAAutoSupports::uniformly_cover(const ExPolygons& islands, Structure& stru } } +void remove_bottom_points(std::vector &pts, double gnd_lvl, double tolerance) +{ + // get iterator to the reorganized vector end + auto endit = + std::remove_if(pts.begin(), pts.end(), + [tolerance, gnd_lvl](const sla::SupportPoint &sp) { + double diff = std::abs(gnd_lvl - + double(sp.pos(Z))); + return diff <= tolerance; + }); + + // erase all elements after the new end + pts.erase(endit, pts.end()); +} + #ifdef SLA_AUTOSUPPORTS_DEBUG void SLAAutoSupports::output_structures(const std::vector& structures) { @@ -533,4 +556,5 @@ void SLAAutoSupports::output_expolygons(const ExPolygons& expolys, const std::st } #endif +} // namespace sla } // namespace Slic3r diff --git a/src/libslic3r/SLA/SLAAutoSupports.hpp b/src/libslic3r/SLA/SLAAutoSupports.hpp index 38f21e6cf..d2f50f0a4 100644 --- a/src/libslic3r/SLA/SLAAutoSupports.hpp +++ b/src/libslic3r/SLA/SLAAutoSupports.hpp @@ -11,20 +11,22 @@ // #define SLA_AUTOSUPPORTS_DEBUG namespace Slic3r { +namespace sla { class SLAAutoSupports { public: struct Config { - float density_relative; - float minimal_distance; - float head_diameter; + float density_relative {1.f}; + float minimal_distance {1.f}; + float head_diameter {0.4f}; /////////////// inline float support_force() const { return 7.7f / density_relative; } // a force one point can support (arbitrary force unit) inline float tear_pressure() const { return 1.f; } // pressure that the display exerts (the force unit per mm2) }; - SLAAutoSupports(const TriangleMesh& mesh, const sla::EigenMesh3D& emesh, const std::vector& slices, + SLAAutoSupports(const sla::EigenMesh3D& emesh, const std::vector& slices, const std::vector& heights, const Config& config, std::function throw_on_cancel, std::function statusfn); + const std::vector& output() { return m_output; } struct MyLayer; @@ -199,7 +201,9 @@ private: std::function m_statusfn; }; +void remove_bottom_points(std::vector &pts, double gnd_lvl, double tolerance); +} // namespace sla } // namespace Slic3r diff --git a/src/libslic3r/SLA/SLABasePool.cpp b/src/libslic3r/SLA/SLABasePool.cpp deleted file mode 100644 index 53dfef404..000000000 --- a/src/libslic3r/SLA/SLABasePool.cpp +++ /dev/null @@ -1,922 +0,0 @@ -#include "SLABasePool.hpp" -#include "SLABoilerPlate.hpp" - -#include "boost/log/trivial.hpp" -#include "SLABoostAdapter.hpp" -#include "ClipperUtils.hpp" -#include "Tesselate.hpp" -#include "MTUtils.hpp" - -// For debugging: -// #include -// #include -// #include "SVG.hpp" - -namespace Slic3r { namespace sla { - -/// This function will return a triangulation of a sheet connecting an upper -/// and a lower plate given as input polygons. It will not triangulate the -/// plates themselves only the sheet. The caller has to specify the lower and -/// upper z levels in world coordinates as well as the offset difference -/// between the sheets. If the lower_z_mm is higher than upper_z_mm or the -/// offset difference is negative, the resulting triangle orientation will be -/// reversed. -/// -/// IMPORTANT: This is not a universal triangulation algorithm. It assumes -/// that the lower and upper polygons are offsetted versions of the same -/// original polygon. In general, it assumes that one of the polygons is -/// completely inside the other. The offset difference is the reference -/// distance from the inner polygon's perimeter to the outer polygon's -/// perimeter. The real distance will be variable as the clipper offset has -/// different strategies (rounding, etc...). This algorithm should have -/// O(2n + 3m) complexity where n is the number of upper vertices and m is the -/// number of lower vertices. -Contour3D walls(const Polygon& lower, const Polygon& upper, - double lower_z_mm, double upper_z_mm, - double offset_difference_mm, ThrowOnCancel thr) -{ - Contour3D ret; - - if(upper.points.size() < 3 || lower.size() < 3) return ret; - - // The concept of the algorithm is relatively simple. It will try to find - // the closest vertices from the upper and the lower polygon and use those - // as starting points. Then it will create the triangles sequentially using - // an edge from the upper polygon and a vertex from the lower or vice versa, - // depending on the resulting triangle's quality. - // The quality is measured by a scalar value. So far it looks like it is - // enough to derive it from the slope of the triangle's two edges connecting - // the upper and the lower part. A reference slope is calculated from the - // height and the offset difference. - - // Offset in the index array for the ceiling - const auto offs = upper.points.size(); - - // Shorthand for the vertex arrays - auto& upoints = upper.points, &lpoints = lower.points; - auto& rpts = ret.points; auto& ind = ret.indices; - - // If the Z levels are flipped, or the offset difference is negative, we - // will interpret that as the triangles normals should be inverted. - bool inverted = upper_z_mm < lower_z_mm || offset_difference_mm < 0; - - // Copy the points into the mesh, convert them from 2D to 3D - rpts.reserve(upoints.size() + lpoints.size()); - ind.reserve(2 * upoints.size() + 2 * lpoints.size()); - for (auto &p : upoints) - rpts.emplace_back(unscaled(p.x()), unscaled(p.y()), upper_z_mm); - for (auto &p : lpoints) - rpts.emplace_back(unscaled(p.x()), unscaled(p.y()), lower_z_mm); - - // Create pointing indices into vertex arrays. u-upper, l-lower - size_t uidx = 0, lidx = offs, unextidx = 1, lnextidx = offs + 1; - - // Simple squared distance calculation. - auto distfn = [](const Vec3d& p1, const Vec3d& p2) { - auto p = p1 - p2; return p.transpose() * p; - }; - - // We need to find the closest point on lower polygon to the first point on - // the upper polygon. These will be our starting points. - double distmin = std::numeric_limits::max(); - for(size_t l = lidx; l < rpts.size(); ++l) { - thr(); - double d = distfn(rpts[l], rpts[uidx]); - if(d < distmin) { lidx = l; distmin = d; } - } - - // Set up lnextidx to be ahead of lidx in cyclic mode - lnextidx = lidx + 1; - if(lnextidx == rpts.size()) lnextidx = offs; - - // This will be the flip switch to toggle between upper and lower triangle - // creation mode - enum class Proceed { - UPPER, // A segment from the upper polygon and one vertex from the lower - LOWER // A segment from the lower polygon and one vertex from the upper - } proceed = Proceed::UPPER; - - // Flags to help evaluating loop termination. - bool ustarted = false, lstarted = false; - - // The variables for the fitness values, one for the actual and one for the - // previous. - double current_fit = 0, prev_fit = 0; - - // Every triangle of the wall has two edges connecting the upper plate with - // the lower plate. From the length of these two edges and the zdiff we - // can calculate the momentary squared offset distance at a particular - // position on the wall. The average of the differences from the reference - // (squared) offset distance will give us the driving fitness value. - const double offsdiff2 = std::pow(offset_difference_mm, 2); - const double zdiff2 = std::pow(upper_z_mm - lower_z_mm, 2); - - // Mark the current vertex iterator positions. If the iterators return to - // the same position, the loop can be terminated. - size_t uendidx = uidx, lendidx = lidx; - - do { thr(); // check throw if canceled - - prev_fit = current_fit; - - switch(proceed) { // proceed depending on the current state - case Proceed::UPPER: - if(!ustarted || uidx != uendidx) { // there are vertices remaining - // Get the 3D vertices in order - const Vec3d& p_up1 = rpts[uidx]; - const Vec3d& p_low = rpts[lidx]; - const Vec3d& p_up2 = rpts[unextidx]; - - // Calculate fitness: the average of the two connecting edges - double a = offsdiff2 - (distfn(p_up1, p_low) - zdiff2); - double b = offsdiff2 - (distfn(p_up2, p_low) - zdiff2); - current_fit = (std::abs(a) + std::abs(b)) / 2; - - if(current_fit > prev_fit) { // fit is worse than previously - proceed = Proceed::LOWER; - } else { // good to go, create the triangle - inverted - ? ind.emplace_back(int(unextidx), int(lidx), int(uidx)) - : ind.emplace_back(int(uidx), int(lidx), int(unextidx)); - - // Increment the iterators, rotate if necessary - ++uidx; ++unextidx; - if(unextidx == offs) unextidx = 0; - if(uidx == offs) uidx = 0; - - ustarted = true; // mark the movement of the iterators - // so that the comparison to uendidx can be made correctly - } - } else proceed = Proceed::LOWER; - - break; - case Proceed::LOWER: - // Mode with lower segment, upper vertex. Same structure: - if(!lstarted || lidx != lendidx) { - const Vec3d& p_low1 = rpts[lidx]; - const Vec3d& p_low2 = rpts[lnextidx]; - const Vec3d& p_up = rpts[uidx]; - - double a = offsdiff2 - (distfn(p_up, p_low1) - zdiff2); - double b = offsdiff2 - (distfn(p_up, p_low2) - zdiff2); - current_fit = (std::abs(a) + std::abs(b)) / 2; - - if(current_fit > prev_fit) { - proceed = Proceed::UPPER; - } else { - inverted - ? ind.emplace_back(int(uidx), int(lnextidx), int(lidx)) - : ind.emplace_back(int(lidx), int(lnextidx), int(uidx)); - - ++lidx; ++lnextidx; - if(lnextidx == rpts.size()) lnextidx = offs; - if(lidx == rpts.size()) lidx = offs; - - lstarted = true; - } - } else proceed = Proceed::UPPER; - - break; - } // end of switch - } while(!ustarted || !lstarted || uidx != uendidx || lidx != lendidx); - - return ret; -} - -/// Offsetting with clipper and smoothing the edges into a curvature. -void offset(ExPolygon& sh, coord_t distance, bool edgerounding = true) { - using ClipperLib::ClipperOffset; - using ClipperLib::jtRound; - using ClipperLib::jtMiter; - using ClipperLib::etClosedPolygon; - using ClipperLib::Paths; - using ClipperLib::Path; - - auto&& ctour = Slic3rMultiPoint_to_ClipperPath(sh.contour); - auto&& holes = Slic3rMultiPoints_to_ClipperPaths(sh.holes); - - // If the input is not at least a triangle, we can not do this algorithm - if(ctour.size() < 3 || - std::any_of(holes.begin(), holes.end(), - [](const Path& p) { return p.size() < 3; }) - ) { - BOOST_LOG_TRIVIAL(error) << "Invalid geometry for offsetting!"; - return; - } - - auto jointype = edgerounding? jtRound : jtMiter; - - ClipperOffset offs; - offs.ArcTolerance = scaled(0.01); - Paths result; - offs.AddPath(ctour, jointype, etClosedPolygon); - offs.AddPaths(holes, jointype, etClosedPolygon); - offs.Execute(result, static_cast(distance)); - - // Offsetting reverts the orientation and also removes the last vertex - // so boost will not have a closed polygon. - - bool found_the_contour = false; - sh.holes.clear(); - for(auto& r : result) { - if(ClipperLib::Orientation(r)) { - // We don't like if the offsetting generates more than one contour - // but throwing would be an overkill. Instead, we should warn the - // caller about the inability to create correct geometries - if(!found_the_contour) { - auto rr = ClipperPath_to_Slic3rPolygon(r); - sh.contour.points.swap(rr.points); - found_the_contour = true; - } else { - BOOST_LOG_TRIVIAL(warning) - << "Warning: offsetting result is invalid!"; - } - } else { - // TODO If there are multiple contours we can't be sure which hole - // belongs to the first contour. (But in this case the situation is - // bad enough to let it go...) - sh.holes.emplace_back(ClipperPath_to_Slic3rPolygon(r)); - } - } -} - -void offset(Polygon &sh, coord_t distance, bool edgerounding = true) -{ - using ClipperLib::ClipperOffset; - using ClipperLib::jtRound; - using ClipperLib::jtMiter; - using ClipperLib::etClosedPolygon; - using ClipperLib::Paths; - using ClipperLib::Path; - - auto &&ctour = Slic3rMultiPoint_to_ClipperPath(sh); - - // If the input is not at least a triangle, we can not do this algorithm - if (ctour.size() < 3) { - BOOST_LOG_TRIVIAL(error) << "Invalid geometry for offsetting!"; - return; - } - - ClipperOffset offs; - offs.ArcTolerance = 0.01 * scaled(1.); - Paths result; - offs.AddPath(ctour, edgerounding ? jtRound : jtMiter, etClosedPolygon); - offs.Execute(result, static_cast(distance)); - - // Offsetting reverts the orientation and also removes the last vertex - // so boost will not have a closed polygon. - - bool found_the_contour = false; - for (auto &r : result) { - if (ClipperLib::Orientation(r)) { - // We don't like if the offsetting generates more than one contour - // but throwing would be an overkill. Instead, we should warn the - // caller about the inability to create correct geometries - if (!found_the_contour) { - auto rr = ClipperPath_to_Slic3rPolygon(r); - sh.points.swap(rr.points); - found_the_contour = true; - } else { - BOOST_LOG_TRIVIAL(warning) - << "Warning: offsetting result is invalid!"; - } - } - } -} - -/// Unification of polygons (with clipper) preserving holes as well. -ExPolygons unify(const ExPolygons& shapes) { - using ClipperLib::ptSubject; - - ExPolygons retv; - - bool closed = true; - bool valid = true; - - ClipperLib::Clipper clipper; - - for(auto& path : shapes) { - auto clipperpath = Slic3rMultiPoint_to_ClipperPath(path.contour); - - if(!clipperpath.empty()) - valid &= clipper.AddPath(clipperpath, ptSubject, closed); - - auto clipperholes = Slic3rMultiPoints_to_ClipperPaths(path.holes); - - for(auto& hole : clipperholes) { - if(!hole.empty()) - valid &= clipper.AddPath(hole, ptSubject, closed); - } - } - - if(!valid) BOOST_LOG_TRIVIAL(warning) << "Unification of invalid shapes!"; - - ClipperLib::PolyTree result; - clipper.Execute(ClipperLib::ctUnion, result, ClipperLib::pftNonZero); - - retv.reserve(static_cast(result.Total())); - - // Now we will recursively traverse the polygon tree and serialize it - // into an ExPolygon with holes. The polygon tree has the clipper-ish - // PolyTree structure which alternates its nodes as contours and holes - - // A "declaration" of function for traversing leafs which are holes - std::function processHole; - - // Process polygon which calls processHoles which than calls processPoly - // again until no leafs are left. - auto processPoly = [&retv, &processHole](ClipperLib::PolyNode *pptr) { - ExPolygon poly; - poly.contour.points = ClipperPath_to_Slic3rPolygon(pptr->Contour); - for(auto h : pptr->Childs) { processHole(h, poly); } - retv.push_back(poly); - }; - - // Body of the processHole function - processHole = [&processPoly](ClipperLib::PolyNode *pptr, ExPolygon& poly) - { - poly.holes.emplace_back(); - poly.holes.back().points = ClipperPath_to_Slic3rPolygon(pptr->Contour); - for(auto c : pptr->Childs) processPoly(c); - }; - - // Wrapper for traversing. - auto traverse = [&processPoly] (ClipperLib::PolyNode *node) - { - for(auto ch : node->Childs) { - processPoly(ch); - } - }; - - // Here is the actual traverse - traverse(&result); - - return retv; -} - -Polygons unify(const Polygons& shapes) { - using ClipperLib::ptSubject; - - bool closed = true; - bool valid = true; - - ClipperLib::Clipper clipper; - - for(auto& path : shapes) { - auto clipperpath = Slic3rMultiPoint_to_ClipperPath(path); - - if(!clipperpath.empty()) - valid &= clipper.AddPath(clipperpath, ptSubject, closed); - } - - if(!valid) BOOST_LOG_TRIVIAL(warning) << "Unification of invalid shapes!"; - - ClipperLib::Paths result; - clipper.Execute(ClipperLib::ctUnion, result, ClipperLib::pftNonZero); - - Polygons ret; - for (ClipperLib::Path &p : result) { - Polygon pp = ClipperPath_to_Slic3rPolygon(p); - if (!pp.is_clockwise()) ret.emplace_back(std::move(pp)); - } - - return ret; -} - -// Function to cut tiny connector cavities for a given polygon. The input poly -// will be offsetted by "padding" and small rectangle shaped cavities will be -// inserted along the perimeter in every "stride" distance. The stick rectangles -// will have a with about "stick_width". The input dimensions are in world -// measure, not the scaled clipper units. -void breakstick_holes(ExPolygon& poly, - double padding, - double stride, - double stick_width, - double penetration) -{ - // SVG svg("bridgestick_plate.svg"); - // svg.draw(poly); - - auto transf = [stick_width, penetration, padding, stride](Points &pts) { - // The connector stick will be a small rectangle with dimensions - // stick_width x (penetration + padding) to have some penetration - // into the input polygon. - - Points out; - out.reserve(2 * pts.size()); // output polygon points - - // stick bottom and right edge dimensions - double sbottom = scaled(stick_width); - double sright = scaled(penetration + padding); - - // scaled stride distance - double sstride = scaled(stride); - double t = 0; - - // process pairs of vertices as an edge, start with the last and - // first point - for (size_t i = pts.size() - 1, j = 0; j < pts.size(); i = j, ++j) { - // Get vertices and the direction vectors - const Point &a = pts[i], &b = pts[j]; - Vec2d dir = b.cast() - a.cast(); - double nrm = dir.norm(); - dir /= nrm; - Vec2d dirp(-dir(Y), dir(X)); - - // Insert start point - out.emplace_back(a); - - // dodge the start point, do not make sticks on the joins - while (t < sbottom) t += sbottom; - double tend = nrm - sbottom; - - while (t < tend) { // insert the stick on the polygon perimeter - - // calculate the stick rectangle vertices and insert them - // into the output. - Point p1 = a + (t * dir).cast(); - Point p2 = p1 + (sright * dirp).cast(); - Point p3 = p2 + (sbottom * dir).cast(); - Point p4 = p3 + (sright * -dirp).cast(); - out.insert(out.end(), {p1, p2, p3, p4}); - - // continue along the perimeter - t += sstride; - } - - t = t - nrm; - - // Insert edge endpoint - out.emplace_back(b); - } - - // move the new points - out.shrink_to_fit(); - pts.swap(out); - }; - - if(stride > 0.0 && stick_width > 0.0 && padding > 0.0) { - transf(poly.contour.points); - for (auto &h : poly.holes) transf(h.points); - } - - // svg.draw(poly); - // svg.Close(); -} - -/// This method will create a rounded edge around a flat polygon in 3d space. -/// 'base_plate' parameter is the target plate. -/// 'radius' is the radius of the edges. -/// 'degrees' is tells how much of a circle should be created as the rounding. -/// It should be in degrees, not radians. -/// 'ceilheight_mm' is the Z coordinate of the flat polygon in 3D space. -/// 'dir' Is the direction of the round edges: inward or outward -/// 'thr' Throws if a cancel signal was received -/// 'last_offset' An auxiliary output variable to save the last offsetted -/// version of 'base_plate' -/// 'last_height' An auxiliary output to save the last z coordinate of the -/// offsetted base_plate. In other words, where the rounded edges end. -Contour3D round_edges(const ExPolygon& base_plate, - double radius_mm, - double degrees, - double ceilheight_mm, - bool dir, - ThrowOnCancel thr, - ExPolygon& last_offset, double& last_height) -{ - auto ob = base_plate; - auto ob_prev = ob; - double wh = ceilheight_mm, wh_prev = wh; - Contour3D curvedwalls; - - int steps = 30; - double stepx = radius_mm / steps; - coord_t s = dir? 1 : -1; - degrees = std::fmod(degrees, 180); - - // we use sin for x distance because we interpret the angle starting from - // PI/2 - int tos = degrees < 90? - int(radius_mm*std::cos(degrees * PI / 180 - PI/2) / stepx) : steps; - - for(int i = 1; i <= tos; ++i) { - thr(); - - ob = base_plate; - - double r2 = radius_mm * radius_mm; - double xx = i*stepx; - double x2 = xx*xx; - double stepy = std::sqrt(r2 - x2); - - offset(ob, s * scaled(xx)); - wh = ceilheight_mm - radius_mm + stepy; - - Contour3D pwalls; - double prev_x = xx - (i - 1) * stepx; - pwalls = walls(ob.contour, ob_prev.contour, wh, wh_prev, s*prev_x, thr); - - curvedwalls.merge(pwalls); - ob_prev = ob; - wh_prev = wh; - } - - if(degrees > 90) { - double tox = radius_mm - radius_mm*std::cos(degrees * PI / 180 - PI/2); - int tos = int(tox / stepx); - - for(int i = 1; i <= tos; ++i) { - thr(); - ob = base_plate; - - double r2 = radius_mm * radius_mm; - double xx = radius_mm - i*stepx; - double x2 = xx*xx; - double stepy = std::sqrt(r2 - x2); - offset(ob, s * scaled(xx)); - wh = ceilheight_mm - radius_mm - stepy; - - Contour3D pwalls; - double prev_x = xx - radius_mm + (i - 1)*stepx; - pwalls = - walls(ob_prev.contour, ob.contour, wh_prev, wh, s*prev_x, thr); - - curvedwalls.merge(pwalls); - ob_prev = ob; - wh_prev = wh; - } - } - - last_offset = std::move(ob); - last_height = wh; - - return curvedwalls; -} - -inline Point centroid(Points& pp) { - Point c; - switch(pp.size()) { - case 0: break; - case 1: c = pp.front(); break; - case 2: c = (pp[0] + pp[1]) / 2; break; - default: { - auto MAX = std::numeric_limits::max(); - auto MIN = std::numeric_limits::min(); - Point min = {MAX, MAX}, max = {MIN, MIN}; - - for(auto& p : pp) { - if(p(0) < min(0)) min(0) = p(0); - if(p(1) < min(1)) min(1) = p(1); - if(p(0) > max(0)) max(0) = p(0); - if(p(1) > max(1)) max(1) = p(1); - } - c(0) = min(0) + (max(0) - min(0)) / 2; - c(1) = min(1) + (max(1) - min(1)) / 2; - - // TODO: fails for non convex cluster -// c = std::accumulate(pp.begin(), pp.end(), Point{0, 0}); -// x(c) /= coord_t(pp.size()); y(c) /= coord_t(pp.size()); - break; - } - } - - return c; -} - -inline Point centroid(const Polygon& poly) { - return poly.centroid(); -} - -/// A fake concave hull that is constructed by connecting separate shapes -/// with explicit bridges. Bridges are generated from each shape's centroid -/// to the center of the "scene" which is the centroid calculated from the shape -/// centroids (a star is created...) -Polygons concave_hull(const Polygons& polys, double maxd_mm, ThrowOnCancel thr) -{ - namespace bgi = boost::geometry::index; - using SpatElement = std::pair; - using SpatIndex = bgi::rtree< SpatElement, bgi::rstar<16, 4> >; - - if(polys.empty()) return Polygons(); - - const double max_dist = scaled(maxd_mm); - - Polygons punion = unify(polys); // could be redundant - - if(punion.size() == 1) return punion; - - // We get the centroids of all the islands in the 2D slice - Points centroids; centroids.reserve(punion.size()); - std::transform(punion.begin(), punion.end(), std::back_inserter(centroids), - [](const Polygon& poly) { return centroid(poly); }); - - SpatIndex ctrindex; - unsigned idx = 0; - for(const Point &ct : centroids) ctrindex.insert(std::make_pair(ct, idx++)); - - // Centroid of the centroids of islands. This is where the additional - // connector sticks are routed. - Point cc = centroid(centroids); - - punion.reserve(punion.size() + centroids.size()); - - idx = 0; - std::transform(centroids.begin(), centroids.end(), - std::back_inserter(punion), - [¢roids, &ctrindex, cc, max_dist, &idx, thr] - (const Point& c) - { - thr(); - double dx = x(c) - x(cc), dy = y(c) - y(cc); - double l = std::sqrt(dx * dx + dy * dy); - double nx = dx / l, ny = dy / l; - - Point& ct = centroids[idx]; - - std::vector result; - ctrindex.query(bgi::nearest(ct, 2), std::back_inserter(result)); - - double dist = max_dist; - for (const SpatElement &el : result) - if (el.second != idx) { - dist = Line(el.first, ct).length(); - break; - } - - idx++; - - if (dist >= max_dist) return Polygon(); - - Polygon r; - auto& ctour = r.points; - - ctour.reserve(3); - ctour.emplace_back(cc); - - Point d(scaled(nx), scaled(ny)); - ctour.emplace_back(c + Point( -y(d), x(d) )); - ctour.emplace_back(c + Point( y(d), -x(d) )); - offset(r, scaled(1.)); - - return r; - }); - - // This is unavoidable... - punion = unify(punion); - - return punion; -} - -void base_plate(const TriangleMesh & mesh, - ExPolygons & output, - const std::vector &heights, - ThrowOnCancel thrfn) -{ - if (mesh.empty()) return; - // m.require_shared_vertices(); // TriangleMeshSlicer needs this - TriangleMeshSlicer slicer(&mesh); - - std::vector out; out.reserve(heights.size()); - slicer.slice(heights, 0.f, &out, thrfn); - - size_t count = 0; for(auto& o : out) count += o.size(); - - // Now we have to unify all slice layers which can be an expensive operation - // so we will try to simplify the polygons - ExPolygons tmp; tmp.reserve(count); - for(ExPolygons& o : out) - for(ExPolygon& e : o) { - auto&& exss = e.simplify(scaled(0.1)); - for(ExPolygon& ep : exss) tmp.emplace_back(std::move(ep)); - } - - ExPolygons utmp = unify(tmp); - - for(auto& o : utmp) { - auto&& smp = o.simplify(scaled(0.1)); - output.insert(output.end(), smp.begin(), smp.end()); - } -} - -void base_plate(const TriangleMesh &mesh, - ExPolygons & output, - float h, - float layerh, - ThrowOnCancel thrfn) -{ - auto bb = mesh.bounding_box(); - float gnd = float(bb.min(Z)); - std::vector heights = {float(bb.min(Z))}; - - for(float hi = gnd + layerh; hi <= gnd + h; hi += layerh) - heights.emplace_back(hi); - - base_plate(mesh, output, heights, thrfn); -} - -Contour3D create_base_pool(const Polygons &ground_layer, - const ExPolygons &obj_self_pad = {}, - const PoolConfig& cfg = PoolConfig()) -{ - // for debugging: - // Benchmark bench; - // bench.start(); - - double mergedist = 2*(1.8*cfg.min_wall_thickness_mm + 4*cfg.edge_radius_mm)+ - cfg.max_merge_distance_mm; - - // Here we get the base polygon from which the pad has to be generated. - // We create an artificial concave hull from this polygon and that will - // serve as the bottom plate of the pad. We will offset this concave hull - // and then offset back the result with clipper with rounding edges ON. This - // trick will create a nice rounded pad shape. - Polygons concavehs = concave_hull(ground_layer, mergedist, cfg.throw_on_cancel); - - const double thickness = cfg.min_wall_thickness_mm; - const double wingheight = cfg.min_wall_height_mm; - const double fullheight = wingheight + thickness; - const double slope = cfg.wall_slope; - const double wingdist = wingheight / std::tan(slope); - const double bottom_offs = (thickness + wingheight) / std::tan(slope); - - // scaled values - const coord_t s_thickness = scaled(thickness); - const coord_t s_eradius = scaled(cfg.edge_radius_mm); - const coord_t s_safety_dist = 2*s_eradius + coord_t(0.8*s_thickness); - const coord_t s_wingdist = scaled(wingdist); - const coord_t s_bottom_offs = scaled(bottom_offs); - - auto& thrcl = cfg.throw_on_cancel; - - Contour3D pool; - - for(Polygon& concaveh : concavehs) { - if(concaveh.points.empty()) return pool; - - // Here lies the trick that does the smoothing only with clipper offset - // calls. The offset is configured to round edges. Inner edges will - // be rounded because we offset twice: ones to get the outer (top) plate - // and again to get the inner (bottom) plate - auto outer_base = concaveh; - offset(outer_base, s_safety_dist + s_wingdist + s_thickness); - - ExPolygon bottom_poly; bottom_poly.contour = outer_base; - offset(bottom_poly, -s_bottom_offs); - - // Punching a hole in the top plate for the cavity - ExPolygon top_poly; - ExPolygon middle_base; - ExPolygon inner_base; - top_poly.contour = outer_base; - - if(wingheight > 0) { - inner_base.contour = outer_base; - offset(inner_base, -(s_thickness + s_wingdist + s_eradius)); - - middle_base.contour = outer_base; - offset(middle_base, -s_thickness); - top_poly.holes.emplace_back(middle_base.contour); - auto& tph = top_poly.holes.back().points; - std::reverse(tph.begin(), tph.end()); - } - - ExPolygon ob; ob.contour = outer_base; double wh = 0; - - // now we will calculate the angle or portion of the circle from - // pi/2 that will connect perfectly with the bottom plate. - // this is a tangent point calculation problem and the equation can - // be found for example here: - // http://www.ambrsoft.com/TrigoCalc/Circles2/CirclePoint/CirclePointDistance.htm - // the y coordinate would be: - // y = cy + (r^2*py - r*px*sqrt(px^2 + py^2 - r^2) / (px^2 + py^2) - // where px and py are the coordinates of the point outside the circle - // cx and cy are the circle center, r is the radius - // We place the circle center to (0, 0) in the calculation the make - // things easier. - // to get the angle we use arcsin function and subtract 90 degrees then - // flip the sign to get the right input to the round_edge function. - double r = cfg.edge_radius_mm; - double cy = 0; - double cx = 0; - double px = thickness + wingdist; - double py = r - fullheight; - - double pxcx = px - cx; - double pycy = py - cy; - double b_2 = pxcx*pxcx + pycy*pycy; - double r_2 = r*r; - double D = std::sqrt(b_2 - r_2); - double vy = (r_2*pycy - r*pxcx*D) / b_2; - double phi = -(std::asin(vy/r) * 180 / PI - 90); - - - // Generate the smoothed edge geometry - if(s_eradius > 0) pool.merge(round_edges(ob, - r, - phi, - 0, // z position of the input plane - true, - thrcl, - ob, wh)); - - // Now that we have the rounded edge connecting the top plate with - // the outer side walls, we can generate and merge the sidewall geometry - pool.merge(walls(ob.contour, bottom_poly.contour, wh, -fullheight, - bottom_offs, thrcl)); - - if(wingheight > 0) { - // Generate the smoothed edge geometry - wh = 0; - ob = middle_base; - if(s_eradius) pool.merge(round_edges(middle_base, - r, - phi - 90, // from tangent lines - 0, // z position of the input plane - false, - thrcl, - ob, wh)); - - // Next is the cavity walls connecting to the top plate's - // artificially created hole. - pool.merge(walls(inner_base.contour, ob.contour, -wingheight, - wh, -wingdist, thrcl)); - } - - if (cfg.embed_object) { - ExPolygons bttms = diff_ex(to_polygons(bottom_poly), - to_polygons(obj_self_pad)); - - assert(!bttms.empty()); - - std::sort(bttms.begin(), bttms.end(), - [](const ExPolygon& e1, const ExPolygon& e2) { - return e1.contour.area() > e2.contour.area(); - }); - - if(wingheight > 0) inner_base.holes = bttms.front().holes; - else top_poly.holes = bttms.front().holes; - - auto straight_walls = - [&pool](const Polygon &cntr, coord_t z_low, coord_t z_high) { - - auto lines = cntr.lines(); - - for (auto &l : lines) { - auto s = coord_t(pool.points.size()); - auto& pts = pool.points; - pts.emplace_back(unscale(l.a.x(), l.a.y(), z_low)); - pts.emplace_back(unscale(l.b.x(), l.b.y(), z_low)); - pts.emplace_back(unscale(l.a.x(), l.a.y(), z_high)); - pts.emplace_back(unscale(l.b.x(), l.b.y(), z_high)); - - pool.indices.emplace_back(s, s + 1, s + 3); - pool.indices.emplace_back(s, s + 3, s + 2); - } - }; - - coord_t z_lo = -scaled(fullheight), z_hi = -scaled(wingheight); - for (ExPolygon &ep : bttms) { - pool.merge(triangulate_expolygon_3d(ep, -fullheight, true)); - for (auto &h : ep.holes) straight_walls(h, z_lo, z_hi); - } - - // Skip the outer contour, triangulate the holes - for (auto it = std::next(bttms.begin()); it != bttms.end(); ++it) { - pool.merge(triangulate_expolygon_3d(*it, -wingheight)); - straight_walls(it->contour, z_lo, z_hi); - } - - } else { - // Now we need to triangulate the top and bottom plates as well as - // the cavity bottom plate which is the same as the bottom plate - // but it is elevated by the thickness. - - pool.merge(triangulate_expolygon_3d(bottom_poly, -fullheight, true)); - } - - pool.merge(triangulate_expolygon_3d(top_poly)); - - if(wingheight > 0) - pool.merge(triangulate_expolygon_3d(inner_base, -wingheight)); - - } - - return pool; -} - -void create_base_pool(const Polygons &ground_layer, TriangleMesh& out, - const ExPolygons &holes, const PoolConfig& cfg) -{ - - - // For debugging: - // bench.stop(); - // std::cout << "Pad creation time: " << bench.getElapsedSec() << std::endl; - // std::fstream fout("pad_debug.obj", std::fstream::out); - // if(fout.good()) pool.to_obj(fout); - - out.merge(mesh(create_base_pool(ground_layer, holes, cfg))); -} - -} -} diff --git a/src/libslic3r/SLA/SLABasePool.hpp b/src/libslic3r/SLA/SLABasePool.hpp deleted file mode 100644 index eec426bbf..000000000 --- a/src/libslic3r/SLA/SLABasePool.hpp +++ /dev/null @@ -1,92 +0,0 @@ -#ifndef SLABASEPOOL_HPP -#define SLABASEPOOL_HPP - -#include -#include -#include - -namespace Slic3r { - -class ExPolygon; -class Polygon; -using ExPolygons = std::vector; -using Polygons = std::vector; - -class TriangleMesh; - -namespace sla { - -using ThrowOnCancel = std::function; - -/// Calculate the polygon representing the silhouette from the specified height -void base_plate(const TriangleMesh& mesh, // input mesh - ExPolygons& output, // Output will be merged with - float samplingheight = 0.1f, // The height range to sample - float layerheight = 0.05f, // The sampling height - ThrowOnCancel thrfn = [](){}); // Will be called frequently - -void base_plate(const TriangleMesh& mesh, // input mesh - ExPolygons& output, // Output will be merged with - const std::vector&, // Exact Z levels to sample - ThrowOnCancel thrfn = [](){}); // Will be called frequently - -// Function to cut tiny connector cavities for a given polygon. The input poly -// will be offsetted by "padding" and small rectangle shaped cavities will be -// inserted along the perimeter in every "stride" distance. The stick rectangles -// will have a with about "stick_width". The input dimensions are in world -// measure, not the scaled clipper units. -void breakstick_holes(ExPolygon &poly, - double padding, - double stride, - double stick_width, - double penetration = 0.0); - -Polygons concave_hull(const Polygons& polys, double max_dist_mm = 50, - ThrowOnCancel throw_on_cancel = [](){}); - -struct PoolConfig { - double min_wall_thickness_mm = 2; - double min_wall_height_mm = 5; - double max_merge_distance_mm = 50; - double edge_radius_mm = 1; - double wall_slope = std::atan(1.0); // Universal constant for Pi/4 - struct EmbedObject { - double object_gap_mm = 0.5; - double stick_stride_mm = 10; - double stick_width_mm = 0.3; - double stick_penetration_mm = 0.1; - bool enabled = false; - operator bool() const { return enabled; } - } embed_object; - - ThrowOnCancel throw_on_cancel = [](){}; - - inline PoolConfig() {} - inline PoolConfig(double wt, double wh, double md, double er, double slope): - min_wall_thickness_mm(wt), - min_wall_height_mm(wh), - max_merge_distance_mm(md), - edge_radius_mm(er), - wall_slope(slope) {} -}; - -/// Calculate the pool for the mesh for SLA printing -void create_base_pool(const Polygons& base_plate, - TriangleMesh& output_mesh, - const ExPolygons& holes, - const PoolConfig& = PoolConfig()); - -/// Returns the elevation needed for compensating the pad. -inline double get_pad_elevation(const PoolConfig& cfg) { - return cfg.min_wall_thickness_mm; -} - -inline double get_pad_fullheight(const PoolConfig& cfg) { - return cfg.min_wall_height_mm + cfg.min_wall_thickness_mm; -} - -} - -} - -#endif // SLABASEPOOL_HPP diff --git a/src/libslic3r/SLA/SLABoilerPlate.hpp b/src/libslic3r/SLA/SLABoilerPlate.hpp index 86e90f3b7..d7ce26bb2 100644 --- a/src/libslic3r/SLA/SLABoilerPlate.hpp +++ b/src/libslic3r/SLA/SLABoilerPlate.hpp @@ -8,35 +8,19 @@ #include #include +#include "SLACommon.hpp" +#include "SLASpatIndex.hpp" + namespace Slic3r { namespace sla { -/// Get x and y coordinates (because we are eigenizing...) -inline coord_t x(const Point& p) { return p(0); } -inline coord_t y(const Point& p) { return p(1); } -inline coord_t& x(Point& p) { return p(0); } -inline coord_t& y(Point& p) { return p(1); } - -inline coordf_t x(const Vec3d& p) { return p(0); } -inline coordf_t y(const Vec3d& p) { return p(1); } -inline coordf_t z(const Vec3d& p) { return p(2); } -inline coordf_t& x(Vec3d& p) { return p(0); } -inline coordf_t& y(Vec3d& p) { return p(1); } -inline coordf_t& z(Vec3d& p) { return p(2); } - -inline coord_t& x(Vec3crd& p) { return p(0); } -inline coord_t& y(Vec3crd& p) { return p(1); } -inline coord_t& z(Vec3crd& p) { return p(2); } -inline coord_t x(const Vec3crd& p) { return p(0); } -inline coord_t y(const Vec3crd& p) { return p(1); } -inline coord_t z(const Vec3crd& p) { return p(2); } - /// Intermediate struct for a 3D mesh struct Contour3D { Pointf3s points; std::vector indices; - void merge(const Contour3D& ctr) { + Contour3D& merge(const Contour3D& ctr) + { auto s3 = coord_t(points.size()); auto s = indices.size(); @@ -44,21 +28,27 @@ struct Contour3D { indices.insert(indices.end(), ctr.indices.begin(), ctr.indices.end()); for(size_t n = s; n < indices.size(); n++) { - auto& idx = indices[n]; x(idx) += s3; y(idx) += s3; z(idx) += s3; + auto& idx = indices[n]; idx.x() += s3; idx.y() += s3; idx.z() += s3; } + + return *this; } - void merge(const Pointf3s& triangles) { + Contour3D& merge(const Pointf3s& triangles) + { const size_t offs = points.size(); points.insert(points.end(), triangles.begin(), triangles.end()); indices.reserve(indices.size() + points.size() / 3); - - for(int i = (int)offs; i < (int)points.size(); i += 3) + + for(int i = int(offs); i < int(points.size()); i += 3) indices.emplace_back(i, i + 1, i + 2); + + return *this; } // Write the index triangle structure to OBJ file for debugging purposes. - void to_obj(std::ostream& stream) { + void to_obj(std::ostream& stream) + { for(auto& p : points) { stream << "v " << p.transpose() << "\n"; } @@ -72,6 +62,31 @@ struct Contour3D { using ClusterEl = std::vector; using ClusteredPoints = std::vector; +// Clustering a set of points by the given distance. +ClusteredPoints cluster(const std::vector& indices, + std::function pointfn, + double dist, + unsigned max_points); + +ClusteredPoints cluster(const PointSet& points, + double dist, + unsigned max_points); + +ClusteredPoints cluster( + const std::vector& indices, + std::function pointfn, + std::function predicate, + unsigned max_points); + + +// Calculate the normals for the selected points (from 'points' set) on the +// mesh. This will call squared distance for each point. +PointSet normals(const PointSet& points, + const EigenMesh3D& mesh, + double eps = 0.05, // min distance from edges + std::function throw_on_cancel = [](){}, + const std::vector& selected_points = {}); + /// Mesh from an existing contour. inline TriangleMesh mesh(const Contour3D& ctour) { return {ctour.points, ctour.indices}; diff --git a/src/libslic3r/SLA/SLACommon.hpp b/src/libslic3r/SLA/SLACommon.hpp index d8e258035..3a3f8bdcc 100644 --- a/src/libslic3r/SLA/SLACommon.hpp +++ b/src/libslic3r/SLA/SLACommon.hpp @@ -175,6 +175,8 @@ public: } }; +using PointSet = Eigen::MatrixXd; + } // namespace sla } // namespace Slic3r diff --git a/src/libslic3r/SLA/SLAPad.cpp b/src/libslic3r/SLA/SLAPad.cpp new file mode 100644 index 000000000..f102f33ff --- /dev/null +++ b/src/libslic3r/SLA/SLAPad.cpp @@ -0,0 +1,865 @@ +#include "SLAPad.hpp" +#include "SLABoilerPlate.hpp" +#include "SLASpatIndex.hpp" + +#include "boost/log/trivial.hpp" +#include "SLABoostAdapter.hpp" +#include "ClipperUtils.hpp" +#include "Tesselate.hpp" +#include "MTUtils.hpp" + +// For debugging: +// #include +// #include +#include "SVG.hpp" + +#include "I18N.hpp" +#include + +//! macro used to mark string used at localization, +//! return same string +#define L(s) Slic3r::I18N::translate(s) + +namespace Slic3r { namespace sla { + +namespace { + +/// This function will return a triangulation of a sheet connecting an upper +/// and a lower plate given as input polygons. It will not triangulate the +/// plates themselves only the sheet. The caller has to specify the lower and +/// upper z levels in world coordinates as well as the offset difference +/// between the sheets. If the lower_z_mm is higher than upper_z_mm or the +/// offset difference is negative, the resulting triangle orientation will be +/// reversed. +/// +/// IMPORTANT: This is not a universal triangulation algorithm. It assumes +/// that the lower and upper polygons are offsetted versions of the same +/// original polygon. In general, it assumes that one of the polygons is +/// completely inside the other. The offset difference is the reference +/// distance from the inner polygon's perimeter to the outer polygon's +/// perimeter. The real distance will be variable as the clipper offset has +/// different strategies (rounding, etc...). This algorithm should have +/// O(2n + 3m) complexity where n is the number of upper vertices and m is the +/// number of lower vertices. +Contour3D walls( + const Polygon &lower, + const Polygon &upper, + double lower_z_mm, + double upper_z_mm, + double offset_difference_mm, + ThrowOnCancel thr = [] {}) +{ + Contour3D ret; + + if(upper.points.size() < 3 || lower.size() < 3) return ret; + + // The concept of the algorithm is relatively simple. It will try to find + // the closest vertices from the upper and the lower polygon and use those + // as starting points. Then it will create the triangles sequentially using + // an edge from the upper polygon and a vertex from the lower or vice versa, + // depending on the resulting triangle's quality. + // The quality is measured by a scalar value. So far it looks like it is + // enough to derive it from the slope of the triangle's two edges connecting + // the upper and the lower part. A reference slope is calculated from the + // height and the offset difference. + + // Offset in the index array for the ceiling + const auto offs = upper.points.size(); + + // Shorthand for the vertex arrays + auto& upts = upper.points, &lpts = lower.points; + auto& rpts = ret.points; auto& ind = ret.indices; + + // If the Z levels are flipped, or the offset difference is negative, we + // will interpret that as the triangles normals should be inverted. + bool inverted = upper_z_mm < lower_z_mm || offset_difference_mm < 0; + + // Copy the points into the mesh, convert them from 2D to 3D + rpts.reserve(upts.size() + lpts.size()); + ind.reserve(2 * upts.size() + 2 * lpts.size()); + for (auto &p : upts) + rpts.emplace_back(unscaled(p.x()), unscaled(p.y()), upper_z_mm); + for (auto &p : lpts) + rpts.emplace_back(unscaled(p.x()), unscaled(p.y()), lower_z_mm); + + // Create pointing indices into vertex arrays. u-upper, l-lower + size_t uidx = 0, lidx = offs, unextidx = 1, lnextidx = offs + 1; + + // Simple squared distance calculation. + auto distfn = [](const Vec3d& p1, const Vec3d& p2) { + auto p = p1 - p2; return p.transpose() * p; + }; + + // We need to find the closest point on lower polygon to the first point on + // the upper polygon. These will be our starting points. + double distmin = std::numeric_limits::max(); + for(size_t l = lidx; l < rpts.size(); ++l) { + thr(); + double d = distfn(rpts[l], rpts[uidx]); + if(d < distmin) { lidx = l; distmin = d; } + } + + // Set up lnextidx to be ahead of lidx in cyclic mode + lnextidx = lidx + 1; + if(lnextidx == rpts.size()) lnextidx = offs; + + // This will be the flip switch to toggle between upper and lower triangle + // creation mode + enum class Proceed { + UPPER, // A segment from the upper polygon and one vertex from the lower + LOWER // A segment from the lower polygon and one vertex from the upper + } proceed = Proceed::UPPER; + + // Flags to help evaluating loop termination. + bool ustarted = false, lstarted = false; + + // The variables for the fitness values, one for the actual and one for the + // previous. + double current_fit = 0, prev_fit = 0; + + // Every triangle of the wall has two edges connecting the upper plate with + // the lower plate. From the length of these two edges and the zdiff we + // can calculate the momentary squared offset distance at a particular + // position on the wall. The average of the differences from the reference + // (squared) offset distance will give us the driving fitness value. + const double offsdiff2 = std::pow(offset_difference_mm, 2); + const double zdiff2 = std::pow(upper_z_mm - lower_z_mm, 2); + + // Mark the current vertex iterator positions. If the iterators return to + // the same position, the loop can be terminated. + size_t uendidx = uidx, lendidx = lidx; + + do { thr(); // check throw if canceled + + prev_fit = current_fit; + + switch(proceed) { // proceed depending on the current state + case Proceed::UPPER: + if(!ustarted || uidx != uendidx) { // there are vertices remaining + // Get the 3D vertices in order + const Vec3d& p_up1 = rpts[uidx]; + const Vec3d& p_low = rpts[lidx]; + const Vec3d& p_up2 = rpts[unextidx]; + + // Calculate fitness: the average of the two connecting edges + double a = offsdiff2 - (distfn(p_up1, p_low) - zdiff2); + double b = offsdiff2 - (distfn(p_up2, p_low) - zdiff2); + current_fit = (std::abs(a) + std::abs(b)) / 2; + + if(current_fit > prev_fit) { // fit is worse than previously + proceed = Proceed::LOWER; + } else { // good to go, create the triangle + inverted + ? ind.emplace_back(int(unextidx), int(lidx), int(uidx)) + : ind.emplace_back(int(uidx), int(lidx), int(unextidx)); + + // Increment the iterators, rotate if necessary + ++uidx; ++unextidx; + if(unextidx == offs) unextidx = 0; + if(uidx == offs) uidx = 0; + + ustarted = true; // mark the movement of the iterators + // so that the comparison to uendidx can be made correctly + } + } else proceed = Proceed::LOWER; + + break; + case Proceed::LOWER: + // Mode with lower segment, upper vertex. Same structure: + if(!lstarted || lidx != lendidx) { + const Vec3d& p_low1 = rpts[lidx]; + const Vec3d& p_low2 = rpts[lnextidx]; + const Vec3d& p_up = rpts[uidx]; + + double a = offsdiff2 - (distfn(p_up, p_low1) - zdiff2); + double b = offsdiff2 - (distfn(p_up, p_low2) - zdiff2); + current_fit = (std::abs(a) + std::abs(b)) / 2; + + if(current_fit > prev_fit) { + proceed = Proceed::UPPER; + } else { + inverted + ? ind.emplace_back(int(uidx), int(lnextidx), int(lidx)) + : ind.emplace_back(int(lidx), int(lnextidx), int(uidx)); + + ++lidx; ++lnextidx; + if(lnextidx == rpts.size()) lnextidx = offs; + if(lidx == rpts.size()) lidx = offs; + + lstarted = true; + } + } else proceed = Proceed::UPPER; + + break; + } // end of switch + } while(!ustarted || !lstarted || uidx != uendidx || lidx != lendidx); + + return ret; +} + +// Same as walls() but with identical higher and lower polygons. +Contour3D inline straight_walls(const Polygon &plate, + double lo_z, + double hi_z, + ThrowOnCancel thr) +{ + return walls(plate, plate, lo_z, hi_z, .0 /*offset_diff*/, thr); +} + +// As it shows, the current offset_ex in ClipperUtils hangs if used in jtRound +// mode +ClipperLib::Paths fast_offset(const ClipperLib::Paths &paths, + coord_t delta, + ClipperLib::JoinType jointype) +{ + using ClipperLib::ClipperOffset; + using ClipperLib::etClosedPolygon; + using ClipperLib::Paths; + using ClipperLib::Path; + + ClipperOffset offs; + offs.ArcTolerance = scaled(0.01); + + for (auto &p : paths) + // If the input is not at least a triangle, we can not do this algorithm + if(p.size() < 3) { + BOOST_LOG_TRIVIAL(error) << "Invalid geometry for offsetting!"; + return {}; + } + + offs.AddPaths(paths, jointype, etClosedPolygon); + + Paths result; + offs.Execute(result, static_cast(delta)); + + return result; +} + + +// Function to cut tiny connector cavities for a given polygon. The input poly +// will be offsetted by "padding" and small rectangle shaped cavities will be +// inserted along the perimeter in every "stride" distance. The stick rectangles +// will have a with about "stick_width". The input dimensions are in world +// measure, not the scaled clipper units. +void breakstick_holes(Points& pts, + double padding, + double stride, + double stick_width, + double penetration) +{ + if(stride <= EPSILON || stick_width <= EPSILON || padding <= EPSILON) + return; + + // SVG svg("bridgestick_plate.svg"); + // svg.draw(poly); + + // The connector stick will be a small rectangle with dimensions + // stick_width x (penetration + padding) to have some penetration + // into the input polygon. + + Points out; + out.reserve(2 * pts.size()); // output polygon points + + // stick bottom and right edge dimensions + double sbottom = scaled(stick_width); + double sright = scaled(penetration + padding); + + // scaled stride distance + double sstride = scaled(stride); + double t = 0; + + // process pairs of vertices as an edge, start with the last and + // first point + for (size_t i = pts.size() - 1, j = 0; j < pts.size(); i = j, ++j) { + // Get vertices and the direction vectors + const Point &a = pts[i], &b = pts[j]; + Vec2d dir = b.cast() - a.cast(); + double nrm = dir.norm(); + dir /= nrm; + Vec2d dirp(-dir(Y), dir(X)); + + // Insert start point + out.emplace_back(a); + + // dodge the start point, do not make sticks on the joins + while (t < sbottom) t += sbottom; + double tend = nrm - sbottom; + + while (t < tend) { // insert the stick on the polygon perimeter + + // calculate the stick rectangle vertices and insert them + // into the output. + Point p1 = a + (t * dir).cast(); + Point p2 = p1 + (sright * dirp).cast(); + Point p3 = p2 + (sbottom * dir).cast(); + Point p4 = p3 + (sright * -dirp).cast(); + out.insert(out.end(), {p1, p2, p3, p4}); + + // continue along the perimeter + t += sstride; + } + + t = t - nrm; + + // Insert edge endpoint + out.emplace_back(b); + } + + // move the new points + out.shrink_to_fit(); + pts.swap(out); +} + +void breakstick_holes(Points &pts, const PadConfig::EmbedObject &c) +{ + breakstick_holes(pts, c.object_gap_mm, c.stick_stride_mm, + c.stick_width_mm, c.stick_penetration_mm); +} + +ExPolygons breakstick_holes(const ExPolygons &input, + const PadConfig::EmbedObject &cfg) +{ + ExPolygons ret = offset_ex(input, scaled(cfg.object_gap_mm), ClipperLib::jtMiter, 1); + + for (ExPolygon &p : ret) { + breakstick_holes(p.contour.points, cfg); + for (auto &h : p.holes) breakstick_holes(h.points, cfg); + } + + return ret; +} + +/// A fake concave hull that is constructed by connecting separate shapes +/// with explicit bridges. Bridges are generated from each shape's centroid +/// to the center of the "scene" which is the centroid calculated from the shape +/// centroids (a star is created...) +class ConcaveHull { + Polygons m_polys; + + Point centroid(const Points& pp) const + { + Point c; + switch(pp.size()) { + case 0: break; + case 1: c = pp.front(); break; + case 2: c = (pp[0] + pp[1]) / 2; break; + default: { + auto MAX = std::numeric_limits::max(); + auto MIN = std::numeric_limits::min(); + Point min = {MAX, MAX}, max = {MIN, MIN}; + + for(auto& p : pp) { + if(p(0) < min(0)) min(0) = p(0); + if(p(1) < min(1)) min(1) = p(1); + if(p(0) > max(0)) max(0) = p(0); + if(p(1) > max(1)) max(1) = p(1); + } + c(0) = min(0) + (max(0) - min(0)) / 2; + c(1) = min(1) + (max(1) - min(1)) / 2; + break; + } + } + + return c; + } + + inline Point centroid(const Polygon &poly) const { return poly.centroid(); } + + Points calculate_centroids() const + { + // We get the centroids of all the islands in the 2D slice + Points centroids = reserve_vector(m_polys.size()); + std::transform(m_polys.begin(), m_polys.end(), + std::back_inserter(centroids), + [this](const Polygon &poly) { return centroid(poly); }); + + return centroids; + } + + void merge_polygons() { m_polys = union_(m_polys); } + + void add_connector_rectangles(const Points ¢roids, + coord_t max_dist, + ThrowOnCancel thr) + { + namespace bgi = boost::geometry::index; + using PointIndexElement = std::pair; + using PointIndex = bgi::rtree>; + + // Centroid of the centroids of islands. This is where the additional + // connector sticks are routed. + Point cc = centroid(centroids); + + PointIndex ctrindex; + unsigned idx = 0; + for(const Point &ct : centroids) + ctrindex.insert(std::make_pair(ct, idx++)); + + m_polys.reserve(m_polys.size() + centroids.size()); + + idx = 0; + for (const Point &c : centroids) { + thr(); + + double dx = c.x() - cc.x(), dy = c.y() - cc.y(); + double l = std::sqrt(dx * dx + dy * dy); + double nx = dx / l, ny = dy / l; + + const Point &ct = centroids[idx]; + + std::vector result; + ctrindex.query(bgi::nearest(ct, 2), std::back_inserter(result)); + + double dist = max_dist; + for (const PointIndexElement &el : result) + if (el.second != idx) { + dist = Line(el.first, ct).length(); + break; + } + + idx++; + + if (dist >= max_dist) return; + + Polygon r; + r.points.reserve(3); + r.points.emplace_back(cc); + + Point d(scaled(nx), scaled(ny)); + r.points.emplace_back(c + Point(-d.y(), d.x())); + r.points.emplace_back(c + Point(d.y(), -d.x())); + offset(r, scaled(1.)); + + m_polys.emplace_back(r); + } + } + +public: + + ConcaveHull(const ExPolygons& polys, double merge_dist, ThrowOnCancel thr) + : ConcaveHull{to_polygons(polys), merge_dist, thr} {} + + ConcaveHull(const Polygons& polys, double mergedist, ThrowOnCancel thr) + { + if(polys.empty()) return; + + m_polys = polys; + merge_polygons(); + + if(m_polys.size() == 1) return; + + Points centroids = calculate_centroids(); + + add_connector_rectangles(centroids, scaled(mergedist), thr); + + merge_polygons(); + } + + // const Polygons & polygons() const { return m_polys; } + + ExPolygons to_expolygons() const + { + auto ret = reserve_vector(m_polys.size()); + for (const Polygon &p : m_polys) ret.emplace_back(ExPolygon(p)); + return ret; + } + + void offset_waffle_style(coord_t delta) { + ClipperLib::Paths paths = Slic3rMultiPoints_to_ClipperPaths(m_polys); + paths = fast_offset(paths, 2 * delta, ClipperLib::jtRound); + paths = fast_offset(paths, -delta, ClipperLib::jtRound); + m_polys = ClipperPaths_to_Slic3rPolygons(paths); + } + + static inline coord_t get_waffle_offset(const PadConfig &c) + { + return scaled(c.brim_size_mm + c.wing_distance() + c.wall_thickness_mm); + } + + static inline double get_merge_distance(const PadConfig &c) + { + return 2. * (1.8 * c.wall_thickness_mm) + c.max_merge_dist_mm; + } +}; + +// Part of the pad configuration that is used for 3D geometry generation +struct PadConfig3D { + double thickness, height, wing_height, slope; + + explicit PadConfig3D(const PadConfig &cfg2d) + : thickness{cfg2d.wall_thickness_mm} + , height{cfg2d.full_height()} + , wing_height{cfg2d.wall_height_mm} + , slope{cfg2d.wall_slope} + {} + + inline double bottom_offset() const + { + return (thickness + wing_height) / std::tan(slope); + } +}; + +// Outer part of the skeleton is used to generate the waffled edges of the pad. +// Inner parts will not be waffled or offsetted. Inner parts are only used if +// pad is generated around the object and correspond to holes and inner polygons +// in the model blueprint. +struct PadSkeleton { ExPolygons inner, outer; }; + +PadSkeleton divide_blueprint(const ExPolygons &bp) +{ + ClipperLib::PolyTree ptree = union_pt(bp); + + PadSkeleton ret; + ret.inner.reserve(size_t(ptree.Total())); + ret.outer.reserve(size_t(ptree.Total())); + + for (ClipperLib::PolyTree::PolyNode *node : ptree.Childs) { + ExPolygon poly(ClipperPath_to_Slic3rPolygon(node->Contour)); + for (ClipperLib::PolyTree::PolyNode *child : node->Childs) { + if (child->IsHole()) { + poly.holes.emplace_back( + ClipperPath_to_Slic3rPolygon(child->Contour)); + + traverse_pt_unordered(child->Childs, &ret.inner); + } + else traverse_pt_unordered(child, &ret.inner); + } + + ret.outer.emplace_back(poly); + } + + return ret; +} + +// A helper class for storing polygons and maintaining a spatial index of their +// bounding boxes. +class Intersector { + BoxIndex m_index; + ExPolygons m_polys; + +public: + + // Add a new polygon to the index + void add(const ExPolygon &ep) + { + m_polys.emplace_back(ep); + m_index.insert(BoundingBox{ep}, unsigned(m_index.size())); + } + + // Check an arbitrary polygon for intersection with the indexed polygons + bool intersects(const ExPolygon &poly) + { + // Create a suitable query bounding box. + auto bb = poly.contour.bounding_box(); + + std::vector qres = m_index.query(bb, BoxIndex::qtIntersects); + + // Now check intersections on the actual polygons (not just the boxes) + bool is_overlap = false; + auto qit = qres.begin(); + while (!is_overlap && qit != qres.end()) + is_overlap = is_overlap || poly.overlaps(m_polys[(qit++)->second]); + + return is_overlap; + } +}; + +// This dummy intersector to implement the "force pad everywhere" feature +struct DummyIntersector +{ + inline void add(const ExPolygon &) {} + inline bool intersects(const ExPolygon &) { return true; } +}; + +template +class _AroundPadSkeleton : public PadSkeleton +{ + // A spatial index used to be able to efficiently find intersections of + // support polygons with the model polygons. + _Intersector m_intersector; + +public: + _AroundPadSkeleton(const ExPolygons &support_blueprint, + const ExPolygons &model_blueprint, + const PadConfig & cfg, + ThrowOnCancel thr) + { + // We need to merge the support and the model contours in a special + // way in which the model contours have to be substracted from the + // support contours. The pad has to have a hole in which the model can + // fit perfectly (thus the substraction -- diff_ex). Also, the pad has + // to be eliminated from areas where there is no need for a pad, due + // to missing supports. + + add_supports_to_index(support_blueprint); + + ConcaveHull fullcvh = + wafflized_concave_hull(support_blueprint, model_blueprint, cfg, thr); + + auto model_bp_sticks = + breakstick_holes(model_blueprint, cfg.embed_object); + + ExPolygons fullpad = diff_ex(fullcvh.to_expolygons(), model_bp_sticks); + + remove_redundant_parts(fullpad); + + PadSkeleton divided = divide_blueprint(fullpad); + outer = std::move(divided.outer); + inner = std::move(divided.inner); + } + +private: + + // Add the support blueprint to the search index to be queried later + void add_supports_to_index(const ExPolygons &supp_bp) + { + for (auto &ep : supp_bp) m_intersector.add(ep); + } + + // Create the wafflized pad around all object in the scene. This pad doesnt + // have any holes yet. + ConcaveHull wafflized_concave_hull(const ExPolygons &supp_bp, + const ExPolygons &model_bp, + const PadConfig &cfg, + ThrowOnCancel thr) + { + auto allin = reserve_vector(supp_bp.size() + model_bp.size()); + + for (auto &ep : supp_bp) allin.emplace_back(ep.contour); + for (auto &ep : model_bp) allin.emplace_back(ep.contour); + + ConcaveHull ret{allin, ConcaveHull::get_merge_distance(cfg), thr}; + ret.offset_waffle_style(ConcaveHull::get_waffle_offset(cfg)); + + return ret; + } + + // To remove parts of the pad skeleton which do not host any supports + void remove_redundant_parts(ExPolygons &parts) + { + auto endit = std::remove_if(parts.begin(), parts.end(), + [this](const ExPolygon &p) { + return !m_intersector.intersects(p); + }); + + parts.erase(endit, parts.end()); + } +}; + +using AroundPadSkeleton = _AroundPadSkeleton; +using BrimPadSkeleton = _AroundPadSkeleton; + +class BelowPadSkeleton : public PadSkeleton +{ +public: + BelowPadSkeleton(const ExPolygons &support_blueprint, + const ExPolygons &model_blueprint, + const PadConfig & cfg, + ThrowOnCancel thr) + { + outer.reserve(support_blueprint.size() + model_blueprint.size()); + + for (auto &ep : support_blueprint) outer.emplace_back(ep.contour); + for (auto &ep : model_blueprint) outer.emplace_back(ep.contour); + + ConcaveHull ochull{outer, ConcaveHull::get_merge_distance(cfg), thr}; + + ochull.offset_waffle_style(ConcaveHull::get_waffle_offset(cfg)); + outer = ochull.to_expolygons(); + } +}; + +// Offset the contour only, leave the holes untouched +template +ExPolygon offset_contour_only(const ExPolygon &poly, coord_t delta, Args...args) +{ + ExPolygons tmp = offset_ex(poly.contour, delta, args...); + + if (tmp.empty()) return {}; + + Polygons holes = poly.holes; + for (auto &h : holes) h.reverse(); + + tmp = diff_ex(to_polygons(tmp), holes); + + if (tmp.empty()) return {}; + + return tmp.front(); +} + +bool add_cavity(Contour3D &pad, ExPolygon &top_poly, const PadConfig3D &cfg, + ThrowOnCancel thr) +{ + auto logerr = []{BOOST_LOG_TRIVIAL(error)<<"Could not create pad cavity";}; + + double wing_distance = cfg.wing_height / std::tan(cfg.slope); + coord_t delta_inner = -scaled(cfg.thickness + wing_distance); + coord_t delta_middle = -scaled(cfg.thickness); + ExPolygon inner_base = offset_contour_only(top_poly, delta_inner); + ExPolygon middle_base = offset_contour_only(top_poly, delta_middle); + + if (inner_base.empty() || middle_base.empty()) { logerr(); return false; } + + ExPolygons pdiff = diff_ex(top_poly, middle_base.contour); + + if (pdiff.size() != 1) { logerr(); return false; } + + top_poly = pdiff.front(); + + double z_min = -cfg.wing_height, z_max = 0; + double offset_difference = -wing_distance; + pad.merge(walls(inner_base.contour, middle_base.contour, z_min, z_max, + offset_difference, thr)); + + pad.merge(triangulate_expolygon_3d(inner_base, z_min, NORMALS_UP)); + + return true; +} + +Contour3D create_outer_pad_geometry(const ExPolygons & skeleton, + const PadConfig3D &cfg, + ThrowOnCancel thr) +{ + Contour3D ret; + + for (const ExPolygon &pad_part : skeleton) { + ExPolygon top_poly{pad_part}; + ExPolygon bottom_poly = + offset_contour_only(pad_part, -scaled(cfg.bottom_offset())); + + if (bottom_poly.empty()) continue; + + double z_min = -cfg.height, z_max = 0; + ret.merge(walls(top_poly.contour, bottom_poly.contour, z_max, z_min, + cfg.bottom_offset(), thr)); + + if (cfg.wing_height > 0. && add_cavity(ret, top_poly, cfg, thr)) + z_max = -cfg.wing_height; + + for (auto &h : bottom_poly.holes) + ret.merge(straight_walls(h, z_max, z_min, thr)); + + ret.merge(triangulate_expolygon_3d(bottom_poly, z_min, NORMALS_DOWN)); + ret.merge(triangulate_expolygon_3d(top_poly, NORMALS_UP)); + } + + return ret; +} + +Contour3D create_inner_pad_geometry(const ExPolygons & skeleton, + const PadConfig3D &cfg, + ThrowOnCancel thr) +{ + Contour3D ret; + + double z_max = 0., z_min = -cfg.height; + for (const ExPolygon &pad_part : skeleton) { + ret.merge(straight_walls(pad_part.contour, z_max, z_min,thr)); + + for (auto &h : pad_part.holes) + ret.merge(straight_walls(h, z_max, z_min, thr)); + + ret.merge(triangulate_expolygon_3d(pad_part, z_min, NORMALS_DOWN)); + ret.merge(triangulate_expolygon_3d(pad_part, z_max, NORMALS_UP)); + } + + return ret; +} + +Contour3D create_pad_geometry(const PadSkeleton &skelet, + const PadConfig & cfg, + ThrowOnCancel thr) +{ +#ifndef NDEBUG + SVG svg("pad_skeleton.svg"); + svg.draw(skelet.outer, "green"); + svg.draw(skelet.inner, "blue"); + svg.Close(); +#endif + + PadConfig3D cfg3d(cfg); + return create_outer_pad_geometry(skelet.outer, cfg3d, thr) + .merge(create_inner_pad_geometry(skelet.inner, cfg3d, thr)); +} + +Contour3D create_pad_geometry(const ExPolygons &supp_bp, + const ExPolygons &model_bp, + const PadConfig & cfg, + ThrowOnCancel thr) +{ + PadSkeleton skelet; + + if (cfg.embed_object.enabled) { + if (cfg.embed_object.everywhere) + skelet = BrimPadSkeleton(supp_bp, model_bp, cfg, thr); + else + skelet = AroundPadSkeleton(supp_bp, model_bp, cfg, thr); + } else + skelet = BelowPadSkeleton(supp_bp, model_bp, cfg, thr); + + return create_pad_geometry(skelet, cfg, thr); +} + +} // namespace + +void pad_blueprint(const TriangleMesh & mesh, + ExPolygons & output, + const std::vector &heights, + ThrowOnCancel thrfn) +{ + if (mesh.empty()) return; + TriangleMeshSlicer slicer(&mesh); + + auto out = reserve_vector(heights.size()); + slicer.slice(heights, 0.f, &out, thrfn); + + size_t count = 0; + for(auto& o : out) count += o.size(); + + // Unification is expensive, a simplify also speeds up the pad generation + auto tmp = reserve_vector(count); + for(ExPolygons& o : out) + for(ExPolygon& e : o) { + auto&& exss = e.simplify(scaled(0.1)); + for(ExPolygon& ep : exss) tmp.emplace_back(std::move(ep)); + } + + ExPolygons utmp = union_ex(tmp); + + for(auto& o : utmp) { + auto&& smp = o.simplify(scaled(0.1)); + output.insert(output.end(), smp.begin(), smp.end()); + } +} + +void pad_blueprint(const TriangleMesh &mesh, + ExPolygons & output, + float h, + float layerh, + ThrowOnCancel thrfn) +{ + float gnd = float(mesh.bounding_box().min(Z)); + + std::vector slicegrid = grid(gnd, gnd + h, layerh); + pad_blueprint(mesh, output, slicegrid, thrfn); +} + +void create_pad(const ExPolygons &sup_blueprint, + const ExPolygons &model_blueprint, + TriangleMesh & out, + const PadConfig & cfg, + ThrowOnCancel thr) +{ + Contour3D t = create_pad_geometry(sup_blueprint, model_blueprint, cfg, thr); + out.merge(mesh(std::move(t))); +} + +std::string PadConfig::validate() const +{ + if (bottom_offset() > brim_size_mm + wing_distance()) + return L("Pad brim size is too low for the current slope."); + + return ""; +} + +}} // namespace Slic3r::sla diff --git a/src/libslic3r/SLA/SLAPad.hpp b/src/libslic3r/SLA/SLAPad.hpp new file mode 100644 index 000000000..96b5834c2 --- /dev/null +++ b/src/libslic3r/SLA/SLAPad.hpp @@ -0,0 +1,93 @@ +#ifndef SLABASEPOOL_HPP +#define SLABASEPOOL_HPP + +#include +#include +#include + +namespace Slic3r { + +class ExPolygon; +class Polygon; +using ExPolygons = std::vector; +using Polygons = std::vector; + +class TriangleMesh; + +namespace sla { + +using ThrowOnCancel = std::function; + +/// Calculate the polygon representing the silhouette. +void pad_blueprint( + const TriangleMesh &mesh, // input mesh + ExPolygons & output, // Output will be merged with + const std::vector &, // Exact Z levels to sample + ThrowOnCancel thrfn = [] {}); // Function that throws if cancel was requested + +void pad_blueprint( + const TriangleMesh &mesh, + ExPolygons & output, + float samplingheight = 0.1f, // The height range to sample + float layerheight = 0.05f, // The sampling height + ThrowOnCancel thrfn = [] {}); + +struct PadConfig { + double wall_thickness_mm = 1.; + double wall_height_mm = 1.; + double max_merge_dist_mm = 50; + double wall_slope = std::atan(1.0); // Universal constant for Pi/4 + double brim_size_mm = 1.6; + + struct EmbedObject { + double object_gap_mm = 1.; + double stick_stride_mm = 10.; + double stick_width_mm = 0.5; + double stick_penetration_mm = 0.1; + bool enabled = false; + bool everywhere = false; + operator bool() const { return enabled; } + } embed_object; + + inline PadConfig() = default; + inline PadConfig(double thickness, + double height, + double mergedist, + double slope) + : wall_thickness_mm(thickness) + , wall_height_mm(height) + , max_merge_dist_mm(mergedist) + , wall_slope(slope) + {} + + inline double bottom_offset() const + { + return (wall_thickness_mm + wall_height_mm) / std::tan(wall_slope); + } + + inline double wing_distance() const + { + return wall_height_mm / std::tan(wall_slope); + } + + inline double full_height() const + { + return wall_height_mm + wall_thickness_mm; + } + + /// Returns the elevation needed for compensating the pad. + inline double required_elevation() const { return wall_thickness_mm; } + + std::string validate() const; +}; + +void create_pad(const ExPolygons &support_contours, + const ExPolygons &model_contours, + TriangleMesh & output_mesh, + const PadConfig & = PadConfig(), + ThrowOnCancel throw_on_cancel = []{}); + +} // namespace sla +} // namespace Slic3r + +#endif // SLABASEPOOL_HPP diff --git a/src/libslic3r/SLA/SLASpatIndex.hpp b/src/libslic3r/SLA/SLASpatIndex.hpp index 90dcdc362..20b6fcd58 100644 --- a/src/libslic3r/SLA/SLASpatIndex.hpp +++ b/src/libslic3r/SLA/SLASpatIndex.hpp @@ -39,14 +39,19 @@ public: insert(std::make_pair(v, unsigned(idx))); } - std::vector query(std::function); - std::vector nearest(const Vec3d&, unsigned k); + std::vector query(std::function) const; + std::vector nearest(const Vec3d&, unsigned k) const; + std::vector query(const Vec3d &v, unsigned k) const // wrapper + { + return nearest(v, k); + } // For testing size_t size() const; bool empty() const { return size() == 0; } void foreach(std::function fn); + void foreach(std::function fn) const; }; using BoxIndexEl = std::pair; diff --git a/src/libslic3r/SLA/SLASupportTree.cpp b/src/libslic3r/SLA/SLASupportTree.cpp index 99f7bc8b3..dda858453 100644 --- a/src/libslic3r/SLA/SLASupportTree.cpp +++ b/src/libslic3r/SLA/SLASupportTree.cpp @@ -7,7 +7,7 @@ #include "SLASupportTree.hpp" #include "SLABoilerPlate.hpp" #include "SLASpatIndex.hpp" -#include "SLABasePool.hpp" +#include "SLAPad.hpp" #include #include @@ -17,6 +17,8 @@ #include #include #include +#include +#include #include //! macro used to mark string used at localization, @@ -91,27 +93,34 @@ template struct _ccr {}; template<> struct _ccr { - using Mutex = SpinMutex; + using SpinningMutex = tbb::spin_mutex; + using LockingMutex = tbb::mutex; template static inline void enumerate(It from, It to, Fn fn) { - using TN = size_t; - auto iN = to - from; - TN N = iN < 0 ? 0 : TN(iN); + auto iN = to - from; + size_t N = iN < 0 ? 0 : size_t(iN); - tbb::parallel_for(TN(0), N, [from, fn](TN n) { fn(*(from + n), n); }); + tbb::parallel_for(size_t(0), N, [from, fn](size_t n) { + fn(*(from + decltype(iN)(n)), n); + }); } }; template<> struct _ccr { - struct Mutex { inline void lock() {} inline void unlock() {} }; +private: + struct _Mtx { inline void lock() {} inline void unlock() {} }; + +public: + using SpinningMutex = _Mtx; + using LockingMutex = _Mtx; template static inline void enumerate(It from, It to, Fn fn) { - for (auto it = from; it != to; ++it) fn(*it, it - from); + for (auto it = from; it != to; ++it) fn(*it, size_t(it - from)); } }; @@ -132,6 +141,8 @@ template double distance(const Vec& pp1, const Vec& pp2) { return distance(p); } +namespace { + Contour3D sphere(double rho, Portion portion = make_portion(0.0, 2.0*PI), double fa=(2*PI/360)) { @@ -175,10 +186,11 @@ Contour3D sphere(double rho, Portion portion = make_portion(0.0, 2.0*PI), Vec2d b = Eigen::Rotation2Dd(ring[i]) * Eigen::Vector2d(0, r); vertices.emplace_back(Vec3d(b(0), b(1), z)); - if(sbegin == 0) - facets.emplace_back((i == 0) ? Vec3crd(coord_t(ring.size()), 0, 1) : - Vec3crd(id - 1, 0, id)); - ++ id; + if (sbegin == 0) + facets.emplace_back((i == 0) ? + Vec3crd(coord_t(ring.size()), 0, 1) : + Vec3crd(id - 1, 0, id)); + ++id; } // General case: insert and form facets for each step, @@ -229,7 +241,7 @@ Contour3D sphere(double rho, Portion portion = make_portion(0.0, 2.0*PI), // h: Height // ssteps: how many edges will create the base circle // sp: starting point -Contour3D cylinder(double r, double h, size_t ssteps, const Vec3d sp = {0,0,0}) +Contour3D cylinder(double r, double h, size_t ssteps, const Vec3d &sp = {0,0,0}) { Contour3D ret; @@ -289,6 +301,8 @@ Contour3D cylinder(double r, double h, size_t ssteps, const Vec3d sp = {0,0,0}) return ret; } +const constexpr long ID_UNSET = -1; + struct Head { Contour3D mesh; @@ -300,25 +314,25 @@ struct Head { double r_pin_mm = 0.5; double width_mm = 2; double penetration_mm = 0.5; - + // For identification purposes. This will be used as the index into the // container holding the head structures. See SLASupportTree::Impl - long id = -1; + long id = ID_UNSET; // If there is a pillar connecting to this head, then the id will be set. - long pillar_id = -1; + long pillar_id = ID_UNSET; - inline void invalidate() { id = -1; } + inline void invalidate() { id = ID_UNSET; } inline bool is_valid() const { return id >= 0; } Head(double r_big_mm, double r_small_mm, double length_mm, double penetration, - Vec3d direction = {0, 0, -1}, // direction (normal to the dull end ) - Vec3d offset = {0, 0, 0}, // displacement + const Vec3d &direction = {0, 0, -1}, // direction (normal to the dull end) + const Vec3d &offset = {0, 0, 0}, // displacement const size_t circlesteps = 45): - steps(circlesteps), dir(direction), tr(offset), + steps(circlesteps), dir(direction), tr(offset), r_back_mm(r_big_mm), r_pin_mm(r_small_mm), width_mm(length_mm), penetration_mm(penetration) { @@ -347,7 +361,7 @@ struct Head { auto&& s1 = sphere(r_big_mm, make_portion(0, PI/2 + phi), detail); auto&& s2 = sphere(r_small_mm, make_portion(PI/2 + phi, PI), detail); - for(auto& p : s2.points) z(p) += h; + for(auto& p : s2.points) p.z() += h; mesh.merge(s1); mesh.merge(s2); @@ -373,7 +387,7 @@ struct Head { // To simplify further processing, we translate the mesh so that the // last vertex of the pointing sphere (the pinpoint) will be at (0,0,0) - for(auto& p : mesh.points) z(p) -= (h + r_small_mm - penetration_mm); + for(auto& p : mesh.points) p.z() -= (h + r_small_mm - penetration_mm); } void transform() @@ -393,11 +407,6 @@ struct Head { return 2 * r_pin_mm + width_mm + 2*r_back_mm - penetration_mm; } - static double fullwidth(const SupportConfig& cfg) { - return 2 * cfg.head_front_radius_mm + cfg.head_width_mm + - 2 * cfg.head_back_radius_mm - cfg.head_penetration_mm; - } - Vec3d junction_point() const { return tr + ( 2 * r_pin_mm + width_mm + r_back_mm - penetration_mm)*dir; } @@ -414,7 +423,7 @@ struct Junction { size_t steps = 45; Vec3d pos; - long id = -1; + long id = ID_UNSET; Junction(const Vec3d& tr, double r_mm, size_t stepnum = 45): r(r_mm), steps(stepnum), pos(tr) @@ -432,11 +441,11 @@ struct Pillar { Vec3d endpt; double height = 0; - long id = -1; + long id = ID_UNSET; // If the pillar connects to a head, this is the id of that head bool starts_from_head = true; // Could start from a junction as well - long start_junction_id = -1; + long start_junction_id = ID_UNSET; // How many bridges are connected to this pillar unsigned bridges = 0; @@ -461,22 +470,24 @@ struct Pillar { } } - Pillar(const Junction& junc, const Vec3d& endp): - Pillar(junc.pos, endp, junc.r, junc.steps){} + Pillar(const Junction &junc, const Vec3d &endp) + : Pillar(junc.pos, endp, junc.r, junc.steps) + {} - Pillar(const Head& head, const Vec3d& endp, double radius = 1): - Pillar(head.junction_point(), endp, head.request_pillar_radius(radius), - head.steps) + Pillar(const Head &head, const Vec3d &endp, double radius = 1) + : Pillar(head.junction_point(), endp, + head.request_pillar_radius(radius), head.steps) + {} + + inline Vec3d startpoint() const { - } - - inline Vec3d startpoint() const { return {endpt(X), endpt(Y), endpt(Z) + height}; } inline const Vec3d& endpoint() const { return endpt; } - Pillar& add_base(double baseheight = 3, double radius = 2) { + Pillar& add_base(double baseheight = 3, double radius = 2) + { if(baseheight <= 0) return *this; if(baseheight > height) baseheight = height; @@ -523,8 +534,6 @@ struct Pillar { indices.emplace_back(offs, offs + last, lcenter); return *this; } - - bool has_base() const { return !base.points.empty(); } }; // A Bridge between two pillars (with junction endpoints) @@ -532,9 +541,9 @@ struct Bridge { Contour3D mesh; double r = 0.8; - long id = -1; - long start_jid = -1; - long end_jid = -1; + long id = ID_UNSET; + long start_jid = ID_UNSET; + long end_jid = ID_UNSET; // We should reduce the radius a tiny bit to help the convex hull algorithm Bridge(const Vec3d& j1, const Vec3d& j2, @@ -550,17 +559,13 @@ struct Bridge { auto quater = Quaternion::FromTwoVectors(Vec3d{0,0,1}, dir); for(auto& p : mesh.points) p = quater * p + j1; } - - Bridge(const Junction& j1, const Junction& j2, double r_mm = 0.8): - Bridge(j1.pos, j2.pos, r_mm, j1.steps) {} - }; // A bridge that spans from model surface to model surface with small connecting // edges on the endpoints. Used for headless support points. struct CompactBridge { Contour3D mesh; - long id = -1; + long id = ID_UNSET; CompactBridge(const Vec3d& sp, const Vec3d& ep, @@ -594,123 +599,28 @@ struct CompactBridge { // A wrapper struct around the base pool (pad) struct Pad { TriangleMesh tmesh; - PoolConfig cfg; + PadConfig cfg; double zlevel = 0; Pad() = default; - Pad(const TriangleMesh& support_mesh, - const ExPolygons& modelbase, - double ground_level, - const PoolConfig& pcfg) : - cfg(pcfg), - zlevel(ground_level + - sla::get_pad_fullheight(pcfg) - - sla::get_pad_elevation(pcfg)) + Pad(const TriangleMesh &support_mesh, + const ExPolygons & model_contours, + double ground_level, + const PadConfig & pcfg, + ThrowOnCancel thr) + : cfg(pcfg) + , zlevel(ground_level + pcfg.full_height() - pcfg.required_elevation()) { - Polygons basep; - auto &thr = cfg.throw_on_cancel; - thr(); - // Get a sample for the pad from the support mesh - { - ExPolygons platetmp; + ExPolygons sup_contours; - float zstart = float(zlevel); - float zend = zstart + float(get_pad_fullheight(pcfg) + EPSILON); + float zstart = float(zlevel); + float zend = zstart + float(pcfg.full_height() + EPSILON); - base_plate(support_mesh, platetmp, grid(zstart, zend, 0.1f), thr); - - // We don't need no... holes control... - for (const ExPolygon &bp : platetmp) - basep.emplace_back(std::move(bp.contour)); - } - - if(pcfg.embed_object) { - - // If the zero elevation mode is ON, we need to process the model - // base silhouette. Create the offsetted version and punch the - // breaksticks across its perimeter. - - ExPolygons modelbase_offs = modelbase; - - if (pcfg.embed_object.object_gap_mm > 0.0) - modelbase_offs - = offset_ex(modelbase_offs, - float(scaled(pcfg.embed_object.object_gap_mm))); - - // Create a spatial index of the support silhouette polygons. - // This will be used to check for intersections with the model - // silhouette polygons. If there is no intersection, then a certain - // part of the pad is redundant as it does not host any supports. - BoxIndex bindex; - { - unsigned idx = 0; - for(auto &bp : basep) { - auto bb = bp.bounding_box(); - bb.offset(float(scaled(pcfg.min_wall_thickness_mm))); - bindex.insert(bb, idx++); - } - } - - ExPolygons concaveh = offset_ex( - concave_hull(basep, pcfg.max_merge_distance_mm, thr), - scaled(pcfg.min_wall_thickness_mm)); - - // Punching the breaksticks across the offsetted polygon perimeters - auto pad_stickholes = reserve_vector(modelbase.size()); - for(auto& poly : modelbase_offs) { - - bool overlap = false; - for (const ExPolygon &p : concaveh) - overlap = overlap || poly.overlaps(p); - - auto bb = poly.contour.bounding_box(); - bb.offset(scaled(pcfg.min_wall_thickness_mm)); - - std::vector qres = - bindex.query(bb, BoxIndex::qtIntersects); - - if (!qres.empty() || overlap) { - - // The model silhouette polygon 'poly' HAS an intersection - // with the support silhouettes. Include this polygon - // in the pad holes with the breaksticks and merge the - // original (offsetted) version with the rest of the pad - // base plate. - - basep.emplace_back(poly.contour); - - // The holes of 'poly' will become positive parts of the - // pad, so they has to be checked for intersections as well - // and erased if there is no intersection with the supports - auto it = poly.holes.begin(); - while(it != poly.holes.end()) { - if (bindex.query(it->bounding_box(), - BoxIndex::qtIntersects).empty()) - it = poly.holes.erase(it); - else - ++it; - } - - // Punch the breaksticks - sla::breakstick_holes( - poly, - pcfg.embed_object.object_gap_mm, // padding - pcfg.embed_object.stick_stride_mm, - pcfg.embed_object.stick_width_mm, - pcfg.embed_object.stick_penetration_mm); - - pad_stickholes.emplace_back(poly); - } - } - - create_base_pool(basep, tmesh, pad_stickholes, cfg); - } else { - for (const ExPolygon &bp : modelbase) basep.emplace_back(bp.contour); - create_base_pool(basep, tmesh, {}, cfg); - } + pad_blueprint(support_mesh, sup_contours, grid(zstart, zend, 0.1f), thr); + create_pad(sup_contours, model_contours, tmesh, pcfg); tmesh.translate(0, 0, float(zlevel)); if (!tmesh.empty()) tmesh.require_shared_vertices(); @@ -720,43 +630,18 @@ struct Pad { }; // The minimum distance for two support points to remain valid. -static const double /*constexpr*/ D_SP = 0.1; +const double /*constexpr*/ D_SP = 0.1; + +} // namespace enum { // For indexing Eigen vectors as v(X), v(Y), v(Z) instead of numbers X, Y, Z }; -// Calculate the normals for the selected points (from 'points' set) on the -// mesh. This will call squared distance for each point. -PointSet normals(const PointSet& points, - const EigenMesh3D& mesh, - double eps = 0.05, // min distance from edges - std::function throw_on_cancel = [](){}, - const std::vector& selected_points = {}); - inline Vec2d to_vec2(const Vec3d& v3) { return {v3(X), v3(Y)}; } -bool operator==(const PointIndexEl& e1, const PointIndexEl& e2) { - return e1.second == e2.second; -} - -// Clustering a set of points by the given distance. -ClusteredPoints cluster(const std::vector& indices, - std::function pointfn, - double dist, - unsigned max_points); - -ClusteredPoints cluster(const PointSet& points, - double dist, - unsigned max_points); - -ClusteredPoints cluster( - const std::vector& indices, - std::function pointfn, - std::function predicate, - unsigned max_points); // This class will hold the support tree meshes with some additional bookkeeping // as well. Various parts of the support geometry are stored separately and are @@ -775,20 +660,20 @@ class SLASupportTree::Impl { // For heads it is beneficial to use the same IDs as for the support points. std::vector m_heads; std::vector m_head_indices; - std::vector m_pillars; std::vector m_junctions; std::vector m_bridges; - std::vector m_compact_bridges; + std::vector m_compact_bridges; + Pad m_pad; + Controller m_ctl; - Pad m_pad; - - using Mutex = ccr::Mutex; + using Mutex = ccr::SpinningMutex; + mutable TriangleMesh m_meshcache; mutable Mutex m_mutex; - mutable TriangleMesh meshcache; mutable bool meshcache_valid = false; - mutable double model_height = 0; // the full height of the model + mutable bool m_meshcache_valid = false; + mutable double m_model_height = 0; // the full height of the model public: double ground_level = 0; @@ -807,7 +692,7 @@ public: if (id >= m_head_indices.size()) m_head_indices.resize(id + 1); m_head_indices[id] = m_heads.size() - 1; - meshcache_valid = false; + m_meshcache_valid = false; return m_heads.back(); } @@ -825,7 +710,7 @@ public: pillar.start_junction_id = head.id; pillar.starts_from_head = true; - meshcache_valid = false; + m_meshcache_valid = false; return m_pillars.back(); } @@ -854,22 +739,10 @@ public: Pillar& pillar = m_pillars.back(); pillar.id = long(m_pillars.size() - 1); pillar.starts_from_head = false; - meshcache_valid = false; + m_meshcache_valid = false; return m_pillars.back(); } - const Head& pillar_head(long pillar_id) const - { - std::lock_guard lk(m_mutex); - assert(pillar_id >= 0 && pillar_id < long(m_pillars.size())); - - const Pillar& p = m_pillars[size_t(pillar_id)]; - assert(p.starts_from_head && p.start_junction_id >= 0); - assert(size_t(p.start_junction_id) < m_head_indices.size()); - - return m_heads[m_head_indices[p.start_junction_id]]; - } - const Pillar& head_pillar(unsigned headid) const { std::lock_guard lk(m_mutex); @@ -886,7 +759,7 @@ public: std::lock_guard lk(m_mutex); m_junctions.emplace_back(std::forward(args)...); m_junctions.back().id = long(m_junctions.size() - 1); - meshcache_valid = false; + m_meshcache_valid = false; return m_junctions.back(); } @@ -895,7 +768,7 @@ public: std::lock_guard lk(m_mutex); m_bridges.emplace_back(std::forward(args)...); m_bridges.back().id = long(m_bridges.size() - 1); - meshcache_valid = false; + m_meshcache_valid = false; return m_bridges.back(); } @@ -904,7 +777,7 @@ public: std::lock_guard lk(m_mutex); m_compact_bridges.emplace_back(std::forward(args)...); m_compact_bridges.back().id = long(m_compact_bridges.size() - 1); - meshcache_valid = false; + m_meshcache_valid = false; return m_compact_bridges.back(); } @@ -913,7 +786,7 @@ public: std::lock_guard lk(m_mutex); assert(id < m_head_indices.size()); - meshcache_valid = false; + m_meshcache_valid = false; return m_heads[m_head_indices[id]]; } @@ -933,9 +806,10 @@ public: const Pad &create_pad(const TriangleMesh &object_supports, const ExPolygons & modelbase, - const PoolConfig & cfg) + const PadConfig & cfg) { - m_pad = Pad(object_supports, modelbase, ground_level, cfg); + m_pad = Pad{object_supports, modelbase, ground_level, cfg, m_ctl.cancelfn}; + return m_pad; } @@ -946,7 +820,7 @@ public: // WITHOUT THE PAD!!! const TriangleMesh &merged_mesh() const { - if (meshcache_valid) return meshcache; + if (m_meshcache_valid) return m_meshcache; Contour3D merged; @@ -978,39 +852,39 @@ public: if (m_ctl.stopcondition()) { // In case of failure we have to return an empty mesh - meshcache = TriangleMesh(); - return meshcache; + m_meshcache = TriangleMesh(); + return m_meshcache; } - meshcache = mesh(merged); + m_meshcache = mesh(merged); // The mesh will be passed by const-pointer to TriangleMeshSlicer, // which will need this. - if (!meshcache.empty()) meshcache.require_shared_vertices(); + if (!m_meshcache.empty()) m_meshcache.require_shared_vertices(); - BoundingBoxf3 &&bb = meshcache.bounding_box(); - model_height = bb.max(Z) - bb.min(Z); + BoundingBoxf3 &&bb = m_meshcache.bounding_box(); + m_model_height = bb.max(Z) - bb.min(Z); - meshcache_valid = true; - return meshcache; + m_meshcache_valid = true; + return m_meshcache; } // WITH THE PAD double full_height() const { if (merged_mesh().empty() && !pad().empty()) - return get_pad_fullheight(pad().cfg); + return pad().cfg.full_height(); double h = mesh_height(); - if (!pad().empty()) h += sla::get_pad_elevation(pad().cfg); + if (!pad().empty()) h += pad().cfg.required_elevation(); return h; } // WITHOUT THE PAD!!! double mesh_height() const { - if (!meshcache_valid) merged_mesh(); - return model_height; + if (!m_meshcache_valid) merged_mesh(); + return m_model_height; } // Intended to be called after the generation is fully complete @@ -1032,11 +906,11 @@ public: // vector of point indices. template long cluster_centroid(const ClusterEl& clust, - std::function pointfn, + const std::function &pointfn, DistFn df) { switch(clust.size()) { - case 0: /* empty cluster */ return -1; + case 0: /* empty cluster */ return ID_UNSET; case 1: /* only one element */ return 0; case 2: /* if two elements, there is no center */ return 0; default: ; @@ -1116,8 +990,53 @@ class SLASupportTree::Algorithm { ThrowOnCancel m_thr; // A spatial index to easily find strong pillars to connect to. - PointIndex m_pillar_index; - + + class PillarIndex { + PointIndex m_index; + mutable ccr::LockingMutex m_mutex; + + public: + + template inline void guarded_insert(Args&&...args) + { + std::lock_guard lck(m_mutex); + m_index.insert(std::forward(args)...); + } + + template + inline std::vector guarded_query(Args&&...args) const + { + std::lock_guard lck(m_mutex); + return m_index.query(std::forward(args)...); + } + + template inline void insert(Args&&...args) + { + m_index.insert(std::forward(args)...); + } + + template + inline std::vector query(Args&&...args) const + { + return m_index.query(std::forward(args)...); + } + + template inline void foreach(Fn fn) { m_index.foreach(fn); } + template inline void guarded_foreach(Fn fn) + { + std::lock_guard lck(m_mutex); + m_index.foreach(fn); + } + + PointIndex guarded_clone() + { + std::lock_guard lck(m_mutex); + return m_index; + } + + } m_pillar_index; + + inline double ray_mesh_intersect(const Vec3d& s, const Vec3d& dir) { @@ -1382,7 +1301,7 @@ class SLASupportTree::Algorithm { // Align to center double available_dist = (startz - endz); double rounds = std::floor(available_dist / std::abs(zstep)); - startz -= 0.5 * (available_dist - rounds * std::abs(zstep));; + startz -= 0.5 * (available_dist - rounds * std::abs(zstep)); } auto pcm = m_cfg.pillar_connection_mode; @@ -1507,9 +1426,9 @@ class SLASupportTree::Algorithm { } bool search_pillar_and_connect(const Head& head) { - PointIndex spindex = m_pillar_index; + PointIndex spindex = m_pillar_index.guarded_clone(); - long nearest_id = -1; + long nearest_id = ID_UNSET; Vec3d querypoint = head.junction_point(); @@ -1530,8 +1449,8 @@ class SLASupportTree::Algorithm { auto nearpillarID = unsigned(nearest_id); if(nearpillarID < m_result.pillarcount()) { if(!connect_to_nearpillar(head, nearpillarID)) { - nearest_id = -1; // continue searching - spindex.remove(ne); // without the current pillar + nearest_id = ID_UNSET; // continue searching + spindex.remove(ne); // without the current pillar } } } @@ -1545,7 +1464,7 @@ class SLASupportTree::Algorithm { void create_ground_pillar(const Vec3d &jp, const Vec3d &sourcedir, double radius, - int head_id = -1) + long head_id = ID_UNSET) { // People were killed for this number (seriously) static const double SQR2 = std::sqrt(2.0); @@ -1554,7 +1473,7 @@ class SLASupportTree::Algorithm { double gndlvl = m_result.ground_level; Vec3d endp = {jp(X), jp(Y), gndlvl}; double sd = m_cfg.pillar_base_safety_distance_mm; - int pillar_id = -1; + long pillar_id = ID_UNSET; double min_dist = sd + m_cfg.base_radius_mm + EPSILON; double dist = 0; bool can_add_base = true; @@ -1567,7 +1486,7 @@ class SLASupportTree::Algorithm { // the ground level only. normal_mode = false; - double mv = min_dist - dist; + double mind = min_dist - dist; double azimuth = std::atan2(sourcedir(Y), sourcedir(X)); double sinpolar = std::sin(PI - m_cfg.bridge_slope); double cospolar = std::cos(PI - m_cfg.bridge_slope); @@ -1584,14 +1503,14 @@ class SLASupportTree::Algorithm { auto result = solver.optimize_max( [this, dir, jp, gndlvl](double mv) { - Vec3d endp = jp + SQR2 * mv * dir; - endp(Z) = gndlvl; - return std::sqrt(m_mesh.squared_distance(endp)); + Vec3d endpt = jp + SQR2 * mv * dir; + endpt(Z) = gndlvl; + return std::sqrt(m_mesh.squared_distance(endpt)); }, - initvals(mv), bound(0.0, 2 * min_dist)); + initvals(mind), bound(0.0, 2 * min_dist)); - mv = std::get<0>(result.optimum); - endp = jp + SQR2 * mv * dir; + mind = std::get<0>(result.optimum); + endp = jp + SQR2 * mind * dir; Vec3d pgnd = {endp(X), endp(Y), gndlvl}; can_add_base = result.score > min_dist; @@ -1651,7 +1570,7 @@ class SLASupportTree::Algorithm { } if(pillar_id >= 0) // Save the pillar endpoint in the spatial index - m_pillar_index.insert(endp, pillar_id); + m_pillar_index.guarded_insert(endp, unsigned(pillar_id)); } public: @@ -1717,9 +1636,9 @@ public: using libnest2d::opt::GeneticOptimizer; using libnest2d::opt::StopCriteria; - ccr::Mutex mutex; + ccr::SpinningMutex mutex; auto addfn = [&mutex](PtIndices &container, unsigned val) { - std::lock_guard lk(mutex); + std::lock_guard lk(mutex); container.emplace_back(val); }; @@ -1727,8 +1646,8 @@ public: [this, &nmls, addfn](unsigned fidx, size_t i) { m_thr(); - - auto n = nmls.row(i); + + auto n = nmls.row(Eigen::Index(i)); // for all normals we generate the spherical coordinates and // saturate the polar angle to 45 degrees from the bottom then @@ -1786,19 +1705,20 @@ public: auto oresult = solver.optimize_max( [this, pin_r, w, hp](double plr, double azm) { - auto n = Vec3d(std::cos(azm) * std::sin(plr), - std::sin(azm) * std::sin(plr), - std::cos(plr)).normalized(); + auto dir = Vec3d(std::cos(azm) * std::sin(plr), + std::sin(azm) * std::sin(plr), + std::cos(plr)).normalized(); double score = pinhead_mesh_intersect( - hp, n, pin_r, m_cfg.head_back_radius_mm, w); + hp, dir, pin_r, m_cfg.head_back_radius_mm, w); return score; }, initvals(polar, azimuth), // start with what we have - bound(3*PI/4, PI), // Must not exceed the tilt limit - bound(-PI, PI) // azimuth can be a full search - ); + bound(3 * PI / 4, + PI), // Must not exceed the tilt limit + bound(-PI, PI) // azimuth can be a full search + ); if(oresult.score > w) { polar = std::get<0>(oresult.optimum); @@ -1921,7 +1841,9 @@ public: ClusterEl cl_centroids; cl_centroids.reserve(m_pillar_clusters.size()); - for(auto& cl : m_pillar_clusters) { m_thr(); + for(auto& cl : m_pillar_clusters) { + m_thr(); + // place all the centroid head positions into the index. We // will query for alternative pillar positions. If a sidehead // cannot connect to the cluster centroid, we have to search @@ -1957,7 +1879,8 @@ public: // sidepoints with the cluster centroid (which is a ground pillar) // or a nearby pillar if the centroid is unreachable. size_t ci = 0; - for(auto cl : m_pillar_clusters) { m_thr(); + for(auto cl : m_pillar_clusters) { + m_thr(); auto cidx = cl_centroids[ci++]; @@ -2015,7 +1938,7 @@ public: }; std::vector modelpillars; - ccr::Mutex mutex; + ccr::SpinningMutex mutex; // TODO: connect these to the ground pillars if possible ccr::enumerate(m_iheads_onmodel.begin(), m_iheads_onmodel.end(), @@ -2161,7 +2084,7 @@ public: pill.base = tailhead.mesh; // Experimental: add the pillar to the index for cascading - std::lock_guard lk(mutex); + std::lock_guard lk(mutex); modelpillars.emplace_back(unsigned(pill.id)); return; } @@ -2184,13 +2107,10 @@ public: // in O(log) or even constant time with a set or an unordered set of hash // values uniquely representing a pair of integers. The order of numbers // within the pair should not matter, it has the same unique hash. - template static I pairhash(I a, I b) + template static IntegerOnly pairhash(I a, I b) { using std::ceil; using std::log2; using std::max; using std::min; - static_assert(std::is_integral::value, - "This function works only for integral types."); - I g = min(a, b), l = max(a, b); auto bits_g = g ? int(ceil(log2(g))) : 0; @@ -2414,7 +2334,8 @@ public: // We will sink the pins into the model surface for a distance of 1/3 of // the pin radius - for(unsigned i : m_iheadless) { m_thr(); + for(unsigned i : m_iheadless) { + m_thr(); const auto R = double(m_support_pts[i].head_front_radius); const double HWIDTH_MM = R/3; @@ -2617,8 +2538,9 @@ std::vector SLASupportTree::slice( auto bb = pad_mesh.bounding_box(); auto maxzit = std::upper_bound(grid.begin(), grid.end(), bb.max.z()); - - auto padgrid = reserve_vector(grid.end() - maxzit); + + long cap = grid.end() - maxzit; + auto padgrid = reserve_vector(size_t(cap > 0 ? cap : 0)); std::copy(grid.begin(), maxzit, std::back_inserter(padgrid)); TriangleMeshSlicer pad_slicer(&pad_mesh); @@ -2645,7 +2567,7 @@ std::vector SLASupportTree::slice( } const TriangleMesh &SLASupportTree::add_pad(const ExPolygons& modelbase, - const PoolConfig& pcfg) const + const PadConfig& pcfg) const { return m_impl->create_pad(merged_mesh(), modelbase, pcfg).tmesh; } @@ -2670,6 +2592,9 @@ SLASupportTree::SLASupportTree(const std::vector &points, generate(points, emesh, cfg, ctl); } +SLASupportTree::SLASupportTree(SLASupportTree &&o) = default; +SLASupportTree &SLASupportTree::operator=(SLASupportTree &&o) = default; + SLASupportTree::~SLASupportTree() {} } diff --git a/src/libslic3r/SLA/SLASupportTree.hpp b/src/libslic3r/SLA/SLASupportTree.hpp index d7f15c17b..d2797f5f6 100644 --- a/src/libslic3r/SLA/SLASupportTree.hpp +++ b/src/libslic3r/SLA/SLASupportTree.hpp @@ -9,7 +9,6 @@ #include "SLACommon.hpp" - namespace Slic3r { // Needed types from Point.hpp @@ -85,6 +84,11 @@ struct SupportConfig { // The shortest distance between a pillar base perimeter from the model // body. This is only useful when elevation is set to zero. double pillar_base_safety_distance_mm = 0.5; + + double head_fullwidth() const { + return 2 * head_front_radius_mm + head_width_mm + + 2 * head_back_radius_mm - head_penetration_mm; + } // ///////////////////////////////////////////////////////////////////////// // Compile time configuration values (candidates for runtime) @@ -104,7 +108,7 @@ struct SupportConfig { static const unsigned max_bridges_on_pillar; }; -struct PoolConfig; +struct PadConfig; /// A Control structure for the support calculation. Consists of the status /// indicator callback and the stop condition predicate. @@ -124,17 +128,6 @@ struct Controller { std::function cancelfn = [](){}; }; -using PointSet = Eigen::MatrixXd; - -//EigenMesh3D to_eigenmesh(const TriangleMesh& m); - -// needed for find best rotation -//EigenMesh3D to_eigenmesh(const ModelObject& model); - -// Simple conversion of 'vector of points' to an Eigen matrix -//PointSet to_point_set(const std::vector&); - - /* ************************************************************************** */ /// The class containing mesh data for the generated supports. @@ -174,6 +167,9 @@ public: SLASupportTree(const SLASupportTree&) = delete; SLASupportTree& operator=(const SLASupportTree&) = delete; + + SLASupportTree(SLASupportTree &&o); + SLASupportTree &operator=(SLASupportTree &&o); ~SLASupportTree(); @@ -192,7 +188,7 @@ public: /// Otherwise, the modelbase will be unified with the base plate calculated /// from the supports. const TriangleMesh& add_pad(const ExPolygons& modelbase, - const PoolConfig& pcfg) const; + const PadConfig& pcfg) const; /// Get the pad geometry const TriangleMesh& get_pad() const; diff --git a/src/libslic3r/SLA/SLASupportTreeIGL.cpp b/src/libslic3r/SLA/SLASupportTreeIGL.cpp index 95d451271..05f8b1984 100644 --- a/src/libslic3r/SLA/SLASupportTreeIGL.cpp +++ b/src/libslic3r/SLA/SLASupportTreeIGL.cpp @@ -77,7 +77,7 @@ bool PointIndex::remove(const PointIndexEl& el) } std::vector -PointIndex::query(std::function fn) +PointIndex::query(std::function fn) const { namespace bgi = boost::geometry::index; @@ -86,7 +86,7 @@ PointIndex::query(std::function fn) return ret; } -std::vector PointIndex::nearest(const Vec3d &el, unsigned k = 1) +std::vector PointIndex::nearest(const Vec3d &el, unsigned k = 1) const { namespace bgi = boost::geometry::index; std::vector ret; ret.reserve(k); @@ -104,6 +104,11 @@ void PointIndex::foreach(std::function fn) for(auto& el : m_impl->m_store) fn(el); } +void PointIndex::foreach(std::function fn) const +{ + for(const auto &el : m_impl->m_store) fn(el); +} + /* ************************************************************************** * BoxIndex implementation * ************************************************************************** */ @@ -274,6 +279,8 @@ double EigenMesh3D::squared_distance(const Vec3d &p, int& i, Vec3d& c) const { * Misc functions * ****************************************************************************/ +namespace { + bool point_on_edge(const Vec3d& p, const Vec3d& e1, const Vec3d& e2, double eps = 0.05) { @@ -289,11 +296,13 @@ template double distance(const Vec& pp1, const Vec& pp2) { return std::sqrt(p.transpose() * p); } +} + PointSet normals(const PointSet& points, const EigenMesh3D& mesh, double eps, std::function thr, // throw on cancel - const std::vector& pt_indices = {}) + const std::vector& pt_indices) { if(points.rows() == 0 || mesh.V().rows() == 0 || mesh.F().rows() == 0) return {}; @@ -419,9 +428,17 @@ PointSet normals(const PointSet& points, return ret; } + namespace bgi = boost::geometry::index; using Index3D = bgi::rtree< PointIndexEl, bgi::rstar<16, 4> /* ? */ >; +namespace { + +bool cmp_ptidx_elements(const PointIndexEl& e1, const PointIndexEl& e2) +{ + return e1.second < e2.second; +}; + ClusteredPoints cluster(Index3D &sindex, unsigned max_points, std::function( @@ -433,25 +450,22 @@ ClusteredPoints cluster(Index3D &sindex, // each other std::function group = [&sindex, &group, max_points, qfn](Elems& pts, Elems& cluster) - { + { for(auto& p : pts) { std::vector tmp = qfn(sindex, p); - auto cmp = [](const PointIndexEl& e1, const PointIndexEl& e2){ - return e1.second < e2.second; - }; - - std::sort(tmp.begin(), tmp.end(), cmp); + + std::sort(tmp.begin(), tmp.end(), cmp_ptidx_elements); Elems newpts; std::set_difference(tmp.begin(), tmp.end(), cluster.begin(), cluster.end(), - std::back_inserter(newpts), cmp); + std::back_inserter(newpts), cmp_ptidx_elements); int c = max_points && newpts.size() + cluster.size() > max_points? int(max_points - cluster.size()) : int(newpts.size()); cluster.insert(cluster.end(), newpts.begin(), newpts.begin() + c); - std::sort(cluster.begin(), cluster.end(), cmp); + std::sort(cluster.begin(), cluster.end(), cmp_ptidx_elements); if(!newpts.empty() && (!max_points || cluster.size() < max_points)) group(newpts, cluster); @@ -479,7 +493,6 @@ ClusteredPoints cluster(Index3D &sindex, return result; } -namespace { std::vector distance_queryfn(const Index3D& sindex, const PointIndexEl& p, double dist, @@ -496,7 +509,8 @@ std::vector distance_queryfn(const Index3D& sindex, return tmp; } -} + +} // namespace // Clustering a set of points by the given criteria ClusteredPoints cluster( @@ -558,5 +572,5 @@ ClusteredPoints cluster(const PointSet& pts, double dist, unsigned max_points) }); } -} -} +} // namespace sla +} // namespace Slic3r diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 46d039c1f..d7083baeb 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -1,6 +1,6 @@ #include "SLAPrint.hpp" #include "SLA/SLASupportTree.hpp" -#include "SLA/SLABasePool.hpp" +#include "SLA/SLAPad.hpp" #include "SLA/SLAAutoSupports.hpp" #include "ClipperUtils.hpp" #include "Geometry.hpp" @@ -53,7 +53,7 @@ const std::array OBJ_STEP_LEVELS = 30, // slaposObjectSlice, 20, // slaposSupportPoints, 10, // slaposSupportTree, - 10, // slaposBasePool, + 10, // slaposPad, 30, // slaposSliceSupports, }; @@ -64,7 +64,7 @@ std::string OBJ_STEP_LABELS(size_t idx) case slaposObjectSlice: return L("Slicing model"); case slaposSupportPoints: return L("Generating support points"); case slaposSupportTree: return L("Generating support tree"); - case slaposBasePool: return L("Generating pad"); + case slaposPad: return L("Generating pad"); case slaposSliceSupports: return L("Slicing supports"); default:; } @@ -612,12 +612,13 @@ sla::SupportConfig make_support_cfg(const SLAPrintObjectConfig& c) { return scfg; } -sla::PoolConfig::EmbedObject builtin_pad_cfg(const SLAPrintObjectConfig& c) { - sla::PoolConfig::EmbedObject ret; +sla::PadConfig::EmbedObject builtin_pad_cfg(const SLAPrintObjectConfig& c) { + sla::PadConfig::EmbedObject ret; ret.enabled = is_zero_elevation(c); if(ret.enabled) { + ret.everywhere = c.pad_around_object_everywhere.getBool(); ret.object_gap_mm = c.pad_object_gap.getFloat(); ret.stick_width_mm = c.pad_object_connector_width.getFloat(); ret.stick_stride_mm = c.pad_object_connector_stride.getFloat(); @@ -628,17 +629,15 @@ sla::PoolConfig::EmbedObject builtin_pad_cfg(const SLAPrintObjectConfig& c) { return ret; } -sla::PoolConfig make_pool_config(const SLAPrintObjectConfig& c) { - sla::PoolConfig pcfg; +sla::PadConfig make_pad_cfg(const SLAPrintObjectConfig& c) { + sla::PadConfig pcfg; - pcfg.min_wall_thickness_mm = c.pad_wall_thickness.getFloat(); + pcfg.wall_thickness_mm = c.pad_wall_thickness.getFloat(); pcfg.wall_slope = c.pad_wall_slope.getFloat() * PI / 180.0; - // We do not support radius for now - pcfg.edge_radius_mm = 0.0; //c.pad_edge_radius.getFloat(); - - pcfg.max_merge_distance_mm = c.pad_max_merge_distance.getFloat(); - pcfg.min_wall_height_mm = c.pad_wall_height.getFloat(); + pcfg.max_merge_dist_mm = c.pad_max_merge_distance.getFloat(); + pcfg.wall_height_mm = c.pad_wall_height.getFloat(); + pcfg.brim_size_mm = c.pad_brim_size.getFloat(); // set builtin pad implicitly ON pcfg.embed_object = builtin_pad_cfg(c); @@ -646,6 +645,13 @@ sla::PoolConfig make_pool_config(const SLAPrintObjectConfig& c) { return pcfg; } +bool validate_pad(const TriangleMesh &pad, const sla::PadConfig &pcfg) +{ + // An empty pad can only be created if embed_object mode is enabled + // and the pad is not forced everywhere + return !pad.empty() || (pcfg.embed_object.enabled && !pcfg.embed_object.everywhere); +} + } std::string SLAPrint::validate() const @@ -663,17 +669,12 @@ std::string SLAPrint::validate() const sla::SupportConfig cfg = make_support_cfg(po->config()); - double pinhead_width = - 2 * cfg.head_front_radius_mm + - cfg.head_width_mm + - 2 * cfg.head_back_radius_mm - - cfg.head_penetration_mm; - double elv = cfg.object_elevation_mm; - - sla::PoolConfig::EmbedObject builtinpad = builtin_pad_cfg(po->config()); - if(supports_en && !builtinpad.enabled && elv < pinhead_width ) + sla::PadConfig padcfg = make_pad_cfg(po->config()); + sla::PadConfig::EmbedObject &builtinpad = padcfg.embed_object; + + if(supports_en && !builtinpad.enabled && elv < cfg.head_fullwidth()) return L( "Elevation is too low for object. Use the \"Pad around " "object\" feature to print the object without elevation."); @@ -686,6 +687,9 @@ std::string SLAPrint::validate() const "distance' has to be greater than the 'Pad object gap' " "parameter to avoid this."); } + + std::string pval = padcfg.validate(); + if (!pval.empty()) return pval; } double expt_max = m_printer_config.max_exposure_time.getFloat(); @@ -876,8 +880,7 @@ void SLAPrint::process() // Construction of this object does the calculation. this->throw_if_canceled(); - SLAAutoSupports auto_supports(po.transformed_mesh(), - po.m_supportdata->emesh, + SLAAutoSupports auto_supports(po.m_supportdata->emesh, po.get_model_slices(), heights, config, @@ -908,23 +911,13 @@ void SLAPrint::process() // If the zero elevation mode is engaged, we have to filter out all the // points that are on the bottom of the object if (is_zero_elevation(po.config())) { - double gnd = po.m_supportdata->emesh.ground_level(); - auto & pts = po.m_supportdata->support_points; double tolerance = po.config().pad_enable.getBool() ? po.m_config.pad_wall_thickness.getFloat() : po.m_config.support_base_height.getFloat(); - // get iterator to the reorganized vector end - auto endit = std::remove_if( - pts.begin(), - pts.end(), - [tolerance, gnd](const sla::SupportPoint &sp) { - double diff = std::abs(gnd - double(sp.pos(Z))); - return diff <= tolerance; - }); - - // erase all elements after the new end - pts.erase(endit, pts.end()); + remove_bottom_points(po.m_supportdata->support_points, + po.m_supportdata->emesh.ground_level(), + tolerance); } }; @@ -933,11 +926,11 @@ void SLAPrint::process() { if(!po.m_supportdata) return; - sla::PoolConfig pcfg = make_pool_config(po.m_config); + sla::PadConfig pcfg = make_pad_cfg(po.m_config); if (pcfg.embed_object) po.m_supportdata->emesh.ground_level_offset( - pcfg.min_wall_thickness_mm); + pcfg.wall_thickness_mm); if(!po.m_config.supports_enable.getBool()) { @@ -993,7 +986,7 @@ void SLAPrint::process() }; // This step generates the sla base pad - auto base_pool = [this](SLAPrintObject& po) { + auto generate_pad = [this](SLAPrintObject& po) { // this step can only go after the support tree has been created // and before the supports had been sliced. (or the slicing has to be // repeated) @@ -1001,10 +994,10 @@ void SLAPrint::process() if(po.m_config.pad_enable.getBool()) { // Get the distilled pad configuration from the config - sla::PoolConfig pcfg = make_pool_config(po.m_config); + sla::PadConfig pcfg = make_pad_cfg(po.m_config); ExPolygons bp; // This will store the base plate of the pad. - double pad_h = sla::get_pad_fullheight(pcfg); + double pad_h = pcfg.full_height(); const TriangleMesh &trmesh = po.transformed_mesh(); // This call can get pretty time consuming @@ -1015,15 +1008,19 @@ void SLAPrint::process() // we sometimes call it "builtin pad" is enabled so we will // get a sample from the bottom of the mesh and use it for pad // creation. - sla::base_plate(trmesh, - bp, - float(pad_h), - float(po.m_config.layer_height.getFloat()), - thrfn); + sla::pad_blueprint(trmesh, bp, float(pad_h), + float(po.m_config.layer_height.getFloat()), + thrfn); } - pcfg.throw_on_cancel = thrfn; po.m_supportdata->support_tree_ptr->add_pad(bp, pcfg); + auto &pad_mesh = po.m_supportdata->support_tree_ptr->get_pad(); + + if (!validate_pad(pad_mesh, pcfg)) + throw std::runtime_error( + L("No pad can be generated for this model with the " + "current configuration")); + } else if(po.m_supportdata && po.m_supportdata->support_tree_ptr) { po.m_supportdata->support_tree_ptr->remove_pad(); } @@ -1478,12 +1475,12 @@ void SLAPrint::process() slaposFn pobj_program[] = { - slice_model, support_points, support_tree, base_pool, slice_supports + slice_model, support_points, support_tree, generate_pad, slice_supports }; // We want to first process all objects... std::vector level1_obj_steps = { - slaposObjectSlice, slaposSupportPoints, slaposSupportTree, slaposBasePool + slaposObjectSlice, slaposSupportPoints, slaposSupportTree, slaposPad }; // and then slice all supports to allow preview to be displayed ASAP @@ -1730,6 +1727,7 @@ bool SLAPrintObject::invalidate_state_by_config_options(const std::vectorinvalidate_all_steps(); } else if (step == slaposSupportPoints) { - invalidated |= this->invalidate_steps({ slaposSupportTree, slaposBasePool, slaposSliceSupports }); + invalidated |= this->invalidate_steps({ slaposSupportTree, slaposPad, slaposSliceSupports }); invalidated |= m_print->invalidate_step(slapsMergeSlicesAndEval); } else if (step == slaposSupportTree) { - invalidated |= this->invalidate_steps({ slaposBasePool, slaposSliceSupports }); + invalidated |= this->invalidate_steps({ slaposPad, slaposSliceSupports }); invalidated |= m_print->invalidate_step(slapsMergeSlicesAndEval); - } else if (step == slaposBasePool) { + } else if (step == slaposPad) { invalidated |= this->invalidate_steps({slaposSliceSupports}); invalidated |= m_print->invalidate_step(slapsMergeSlicesAndEval); } else if (step == slaposSliceSupports) { @@ -1813,8 +1812,8 @@ double SLAPrintObject::get_elevation() const { // its walls but currently it is half of its thickness. Whatever it // will be in the future, we provide the config to the get_pad_elevation // method and we will have the correct value - sla::PoolConfig pcfg = make_pool_config(m_config); - if(!pcfg.embed_object) ret += sla::get_pad_elevation(pcfg); + sla::PadConfig pcfg = make_pad_cfg(m_config); + if(!pcfg.embed_object) ret += pcfg.required_elevation(); } return ret; @@ -1825,7 +1824,7 @@ double SLAPrintObject::get_current_elevation() const if (is_zero_elevation(m_config)) return 0.; bool has_supports = is_step_done(slaposSupportTree); - bool has_pad = is_step_done(slaposBasePool); + bool has_pad = is_step_done(slaposPad); if(!has_supports && !has_pad) return 0; @@ -1896,7 +1895,7 @@ bool SLAPrintObject::has_mesh(SLAPrintObjectStep step) const switch (step) { case slaposSupportTree: return ! this->support_mesh().empty(); - case slaposBasePool: + case slaposPad: return ! this->pad_mesh().empty(); default: return false; @@ -1908,7 +1907,7 @@ TriangleMesh SLAPrintObject::get_mesh(SLAPrintObjectStep step) const switch (step) { case slaposSupportTree: return this->support_mesh(); - case slaposBasePool: + case slaposPad: return this->pad_mesh(); default: return TriangleMesh(); diff --git a/src/libslic3r/SLAPrint.hpp b/src/libslic3r/SLAPrint.hpp index a2bc1325a..a2cb517b2 100644 --- a/src/libslic3r/SLAPrint.hpp +++ b/src/libslic3r/SLAPrint.hpp @@ -21,7 +21,7 @@ enum SLAPrintObjectStep : unsigned int { slaposObjectSlice, slaposSupportPoints, slaposSupportTree, - slaposBasePool, + slaposPad, slaposSliceSupports, slaposCount }; @@ -54,7 +54,7 @@ public: bool is_left_handed() const { return m_left_handed; } struct Instance { - Instance(ObjectID instance_id, const Point &shift, float rotation) : instance_id(instance_id), shift(shift), rotation(rotation) {} + Instance(ObjectID inst_id, const Point &shft, float rot) : instance_id(inst_id), shift(shft), rotation(rot) {} bool operator==(const Instance &rhs) const { return this->instance_id == rhs.instance_id && this->shift == rhs.shift && this->rotation == rhs.rotation; } // ID of the corresponding ModelInstance. ObjectID instance_id; diff --git a/src/libslic3r/Tesselate.hpp b/src/libslic3r/Tesselate.hpp index 02e86eb33..2dbe6caa1 100644 --- a/src/libslic3r/Tesselate.hpp +++ b/src/libslic3r/Tesselate.hpp @@ -10,12 +10,15 @@ namespace Slic3r { class ExPolygon; typedef std::vector ExPolygons; -extern std::vector triangulate_expolygon_3d (const ExPolygon &poly, coordf_t z = 0, bool flip = false); -extern std::vector triangulate_expolygons_3d(const ExPolygons &polys, coordf_t z = 0, bool flip = false); -extern std::vector triangulate_expolygon_2d (const ExPolygon &poly, bool flip = false); -extern std::vector triangulate_expolygons_2d(const ExPolygons &polys, bool flip = false); -extern std::vector triangulate_expolygon_2f (const ExPolygon &poly, bool flip = false); -extern std::vector triangulate_expolygons_2f(const ExPolygons &polys, bool flip = false); +const bool constexpr NORMALS_UP = false; +const bool constexpr NORMALS_DOWN = true; + +extern std::vector triangulate_expolygon_3d (const ExPolygon &poly, coordf_t z = 0, bool flip = NORMALS_UP); +extern std::vector triangulate_expolygons_3d(const ExPolygons &polys, coordf_t z = 0, bool flip = NORMALS_UP); +extern std::vector triangulate_expolygon_2d (const ExPolygon &poly, bool flip = NORMALS_UP); +extern std::vector triangulate_expolygons_2d(const ExPolygons &polys, bool flip = NORMALS_UP); +extern std::vector triangulate_expolygon_2f (const ExPolygon &poly, bool flip = NORMALS_UP); +extern std::vector triangulate_expolygons_2f(const ExPolygons &polys, bool flip = NORMALS_UP); } // namespace Slic3r diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 0e127a868..086ba7a74 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -417,7 +417,7 @@ void GLVolume::render(int color_id, int detection_id, int worldmatrix_id) const } bool GLVolume::is_sla_support() const { return this->composite_id.volume_id == -int(slaposSupportTree); } -bool GLVolume::is_sla_pad() const { return this->composite_id.volume_id == -int(slaposBasePool); } +bool GLVolume::is_sla_pad() const { return this->composite_id.volume_id == -int(slaposPad); } std::vector GLVolumeCollection::load_object( const ModelObject *model_object, @@ -501,7 +501,7 @@ void GLVolumeCollection::load_object_auxiliary( TriangleMesh convex_hull = mesh.convex_hull_3d(); for (const std::pair& instance_idx : instances) { const ModelInstance& model_instance = *print_object->model_object()->instances[instance_idx.first]; - this->volumes.emplace_back(new GLVolume((milestone == slaposBasePool) ? GLVolume::SLA_PAD_COLOR : GLVolume::SLA_SUPPORT_COLOR)); + this->volumes.emplace_back(new GLVolume((milestone == slaposPad) ? GLVolume::SLA_PAD_COLOR : GLVolume::SLA_SUPPORT_COLOR)); GLVolume& v = *this->volumes.back(); v.indexed_vertex_array.load_mesh(mesh); v.indexed_vertex_array.finalize_geometry(opengl_initialized); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 9ca08809b..f76f752f0 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -349,15 +349,18 @@ void ConfigManipulation::toggle_print_sla_options(DynamicPrintConfig* config) toggle_field("pad_wall_thickness", pad_en); toggle_field("pad_wall_height", pad_en); + toggle_field("pad_brim_size", pad_en); toggle_field("pad_max_merge_distance", pad_en); // toggle_field("pad_edge_radius", supports_en); toggle_field("pad_wall_slope", pad_en); toggle_field("pad_around_object", pad_en); + toggle_field("pad_around_object_everywhere", pad_en); bool zero_elev = config->opt_bool("pad_around_object") && pad_en; toggle_field("support_object_elevation", supports_en && !zero_elev); toggle_field("pad_object_gap", zero_elev); + toggle_field("pad_around_object_everywhere", zero_elev); toggle_field("pad_object_connector_stride", zero_elev); toggle_field("pad_object_connector_width", zero_elev); toggle_field("pad_object_connector_penetration", zero_elev); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index ff70fd451..04ef6fd42 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1767,7 +1767,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re // SLA steps to pull the preview meshes for. typedef std::array SLASteps; - SLASteps sla_steps = { slaposSupportTree, slaposBasePool }; + SLASteps sla_steps = { slaposSupportTree, slaposPad }; struct SLASupportState { std::array::value> step; }; @@ -5340,8 +5340,8 @@ void GLCanvas3D::_load_sla_shells() m_volumes.volumes.back()->extruder_id = obj->model_object()->volumes.front()->extruder_id(); if (obj->is_step_done(slaposSupportTree) && obj->has_mesh(slaposSupportTree)) add_volume(*obj, -int(slaposSupportTree), instance, obj->support_mesh(), GLVolume::SLA_SUPPORT_COLOR, true); - if (obj->is_step_done(slaposBasePool) && obj->has_mesh(slaposBasePool)) - add_volume(*obj, -int(slaposBasePool), instance, obj->pad_mesh(), GLVolume::SLA_PAD_COLOR, false); + if (obj->is_step_done(slaposPad) && obj->has_mesh(slaposPad)) + add_volume(*obj, -int(slaposPad), instance, obj->pad_mesh(), GLVolume::SLA_PAD_COLOR, false); } double shift_z = obj->get_current_elevation(); for (unsigned int i = initial_volumes_count; i < m_volumes.volumes.size(); ++ i) { diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 7c36f3665..6f39db86d 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -261,7 +261,7 @@ bool MainFrame::can_export_supports() const const PrintObjects& objects = m_plater->sla_print().objects(); for (const SLAPrintObject* object : objects) { - if (object->has_mesh(slaposBasePool) || object->has_mesh(slaposSupportTree)) + if (object->has_mesh(slaposPad) || object->has_mesh(slaposSupportTree)) { can_export = true; break; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index b172ad489..447ba37a3 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -4467,10 +4467,10 @@ void Plater::export_stl(bool extended, bool selection_only) bool is_left_handed = object->is_left_handed(); TriangleMesh pad_mesh; - bool has_pad_mesh = object->has_mesh(slaposBasePool); + bool has_pad_mesh = object->has_mesh(slaposPad); if (has_pad_mesh) { - pad_mesh = object->get_mesh(slaposBasePool); + pad_mesh = object->get_mesh(slaposPad); pad_mesh.transform(mesh_trafo_inv); } @@ -4646,7 +4646,7 @@ void Plater::reslice_SLA_supports(const ModelObject &object, bool postpone_error // Otherwise calculate everything, but start with the provided object. if (!this->p->background_processing_enabled()) { task.single_model_instance_only = true; - task.to_object_step = slaposBasePool; + task.to_object_step = slaposPad; } this->p->background_process.set_task(task); // and let the background processing start. diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp index d2503d349..a74e8cc5f 100644 --- a/src/slic3r/GUI/Preset.cpp +++ b/src/slic3r/GUI/Preset.cpp @@ -476,11 +476,13 @@ const std::vector& Preset::sla_print_options() "pad_enable", "pad_wall_thickness", "pad_wall_height", + "pad_brim_size", "pad_max_merge_distance", // "pad_edge_radius", "pad_wall_slope", "pad_object_gap", "pad_around_object", + "pad_around_object_everywhere", "pad_object_connector_stride", "pad_object_connector_width", "pad_object_connector_penetration", diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index d3f331442..b375aa6a5 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3539,12 +3539,14 @@ void TabSLAPrint::build() optgroup->append_single_option_line("pad_enable"); optgroup->append_single_option_line("pad_wall_thickness"); optgroup->append_single_option_line("pad_wall_height"); + optgroup->append_single_option_line("pad_brim_size"); optgroup->append_single_option_line("pad_max_merge_distance"); // TODO: Disabling this parameter for the beta release // optgroup->append_single_option_line("pad_edge_radius"); optgroup->append_single_option_line("pad_wall_slope"); optgroup->append_single_option_line("pad_around_object"); + optgroup->append_single_option_line("pad_around_object_everywhere"); optgroup->append_single_option_line("pad_object_gap"); optgroup->append_single_option_line("pad_object_connector_stride"); optgroup->append_single_option_line("pad_object_connector_width"); From 277f6786d835726c12f6db78d4fe71a9a7010643 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 24 Sep 2019 15:24:47 +0200 Subject: [PATCH 16/53] Add tests for sla support and pad creation --- tests/CMakeLists.txt | 12 +- tests/data/20mm_cube.obj | 20 + tests/data/2x20x10.obj | 20 + tests/data/A.obj | 1867 + tests/data/V.obj | 68 + tests/data/V_standing.obj | 38 + tests/data/bridge.obj | 44 + tests/data/cube_with_concave_hole.obj | 72 + .../data/cube_with_concave_hole_enlarged.obj | 112 + ...be_with_concave_hole_enlarged_standing.obj | 112 + tests/data/cube_with_hole.obj | 48 + tests/data/frog_legs.obj | 36702 ++++++++++++++++ tests/data/ipadstand.obj | 86 + tests/data/overhang.obj | 179 + tests/data/pyramid.obj | 11 + tests/data/sloping_hole.obj | 204 + tests/data/small_dorito.obj | 14 + tests/data/two_hollow_squares.obj | 144 + tests/sla_print/CMakeLists.txt | 4 + tests/sla_print/sla_print_tests_main.cpp | 301 + 20 files changed, 40057 insertions(+), 1 deletion(-) create mode 100644 tests/data/20mm_cube.obj create mode 100644 tests/data/2x20x10.obj create mode 100644 tests/data/A.obj create mode 100644 tests/data/V.obj create mode 100644 tests/data/V_standing.obj create mode 100644 tests/data/bridge.obj create mode 100644 tests/data/cube_with_concave_hole.obj create mode 100644 tests/data/cube_with_concave_hole_enlarged.obj create mode 100644 tests/data/cube_with_concave_hole_enlarged_standing.obj create mode 100644 tests/data/cube_with_hole.obj create mode 100644 tests/data/frog_legs.obj create mode 100644 tests/data/ipadstand.obj create mode 100644 tests/data/overhang.obj create mode 100644 tests/data/pyramid.obj create mode 100644 tests/data/sloping_hole.obj create mode 100644 tests/data/small_dorito.obj create mode 100644 tests/data/two_hollow_squares.obj create mode 100644 tests/sla_print/CMakeLists.txt create mode 100644 tests/sla_print/sla_print_tests_main.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 11bdc4b3d..06733d054 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,3 +1,13 @@ # TODO Add individual tests as executables in separate directories +# add_subirectory() -# add_subirectory() \ No newline at end of file +find_package(GTest REQUIRED) + +set(TEST_DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data) +file(TO_NATIVE_PATH "${TEST_DATA_DIR}" TEST_DATA_DIR) + +add_library(test_common INTERFACE) +target_compile_definitions(test_common INTERFACE TEST_DATA_DIR="${TEST_DATA_DIR}") +target_link_libraries(test_common INTERFACE GTest::GTest GTest::Main) + +add_subdirectory(sla_print) diff --git a/tests/data/20mm_cube.obj b/tests/data/20mm_cube.obj new file mode 100644 index 000000000..432d6faa3 --- /dev/null +++ b/tests/data/20mm_cube.obj @@ -0,0 +1,20 @@ +v 20.000000 20.000000 0.000000 +v 20.000000 0.000000 0.000000 +v 0.000000 0.000000 0.000000 +v 0.000000 20.000000 0.000000 +v 20.000000 20.000000 20.000000 +v 0.000000 20.000000 20.000000 +v 0.000000 0.000000 20.000000 +v 20.000000 0.000000 20.000000 +f 1 2 3 +f 1 3 4 +f 5 6 7 +f 5 7 8 +f 1 5 8 +f 1 8 2 +f 2 8 7 +f 2 7 3 +f 3 7 6 +f 3 6 4 +f 5 1 4 +f 5 4 6 diff --git a/tests/data/2x20x10.obj b/tests/data/2x20x10.obj new file mode 100644 index 000000000..ccc7fc947 --- /dev/null +++ b/tests/data/2x20x10.obj @@ -0,0 +1,20 @@ +v 2.000000 20.000000 0.000000 +v 2.000000 0.000000 0.000000 +v 0.000000 0.000000 0.000000 +v 0.000000 20.000000 0.000000 +v 2.000000 20.000000 10.000000 +v 0.000000 20.000000 10.000000 +v 0.000000 0.000000 10.000000 +v 2.000000 0.000000 10.000000 +f 1 2 3 +f 1 3 4 +f 5 6 7 +f 5 7 8 +f 1 5 8 +f 1 8 2 +f 2 8 7 +f 2 7 3 +f 3 7 6 +f 3 6 4 +f 5 1 4 +f 5 4 6 diff --git a/tests/data/A.obj b/tests/data/A.obj new file mode 100644 index 000000000..6c1e54974 --- /dev/null +++ b/tests/data/A.obj @@ -0,0 +1,1867 @@ +v 513.075989 51.607433 36.000900 +v 516.648804 51.732433 36.000900 +v 513.495178 51.732433 36.000900 +v 489.391205 51.482433 24.001101 +v 488.928589 51.732433 24.001101 +v 492.062012 51.732433 24.001101 +v 496.840393 51.232433 24.001101 +v 495.195404 51.732433 24.001101 +v 498.981995 51.732433 24.001101 +v 506.966614 51.607433 24.001101 +v 510.342010 51.732433 24.001101 +v 507.163818 51.607433 24.001101 +v 512.515381 54.719032 36.000900 +v 514.161987 54.505833 36.000900 +v 493.062012 54.719032 36.000900 +v 495.195404 51.732433 36.000900 +v 496.195404 54.719032 36.000900 +v 497.195404 57.705833 36.000900 +v 500.851990 60.265831 36.000900 +v 498.915405 62.825832 36.000900 +v 506.701996 62.825832 36.000900 +v 503.648590 60.265831 36.000900 +v 508.381805 57.705833 36.000900 +v 496.418793 60.052433 36.000900 +v 506.515198 72.212433 36.000900 +v 502.808807 74.532433 36.000900 +v 503.781982 71.605835 36.000900 +v 515.358765 55.465832 36.000900 +v 499.375183 76.905838 36.000900 +v 501.168793 78.065834 36.000900 +v 504.568787 78.065834 36.000900 +v 506.328613 81.599236 36.000900 +v 502.928589 81.599236 36.000900 +v 499.528595 81.599236 36.000900 +v 498.203613 77.865829 36.000900 +v 495.195404 51.732433 30.001101 +v 498.981995 51.732433 27.001101 +v 506.555206 51.732433 33.000900 +v 506.555206 51.732433 36.000900 +v 510.342010 51.732433 36.000900 +v 512.515381 54.719032 24.001101 +v 509.362000 54.719032 24.001101 +v 508.381805 57.705833 24.001101 +v 506.701996 62.825832 24.001101 +v 509.188812 60.052433 24.001101 +v 493.062012 54.719032 24.001101 +v 503.648590 60.265831 24.001101 +v 500.851990 60.265831 24.001101 +v 498.915405 62.825832 24.001101 +v 502.808807 62.825832 24.001101 +v 491.425201 54.505833 24.001101 +v 506.421814 76.905838 24.001101 +v 502.808807 74.532433 24.001101 +v 504.568787 78.065834 24.001101 +v 506.328613 81.599236 24.001101 +v 507.618805 77.865829 24.001101 +v 499.221802 72.212433 24.001101 +v 501.835388 71.605835 24.001101 +v 501.168793 78.065834 24.001101 +v 499.528595 81.599236 24.001101 +v 502.048584 79.832436 24.001101 +v 490.253601 55.465832 24.001101 +v 488.928589 51.732433 30.001101 +v 488.928589 51.732433 36.000900 +v 490.253601 55.465832 31.500900 +v 498.203613 77.865829 34.500900 +v 508.381805 57.705833 30.001101 +v 505.585388 57.705833 27.001101 +v 502.788818 57.705833 36.000900 +v 499.992004 57.705833 33.000900 +v 509.851990 53.225834 33.000900 +v 509.362000 54.719032 36.000900 +v 508.871796 56.212433 27.001101 +v 496.695404 56.212433 33.000900 +v 495.695404 53.225834 27.001101 +v 506.328613 81.599236 30.001101 +v 507.618805 77.865829 25.501101 +v 515.358765 55.465832 34.500900 +v 501.228607 81.599236 33.000900 +v 504.628601 81.599236 27.001101 +v 503.781982 71.605835 33.000900 +v 502.808807 74.532433 30.001101 +v 498.915405 62.825832 30.001101 +v 500.862000 62.825832 27.001101 +v 502.808807 62.825832 36.000900 +v 504.755188 62.825832 33.000900 +v 501.835388 71.605835 33.000900 +v 499.888794 65.752434 33.000900 +v 499.888794 65.752434 36.000900 +v 513.128601 51.482433 36.000900 +v 513.075989 51.607433 24.001101 +v 516.648804 51.732433 24.001101 +v 513.128601 51.482433 24.001101 +v 513.495178 51.732433 24.001101 +v 506.966614 51.607433 36.000900 +v 507.163818 51.607433 36.000900 +v 490.337799 51.482433 24.001101 +v 489.391205 51.482433 36.000900 +v 492.062012 51.732433 36.000900 +v 490.337799 51.482433 36.000900 +v 513.233765 51.232433 24.001101 +v 513.233765 51.232433 36.000900 +v 504.773804 51.482433 36.000900 +v 504.773804 51.482433 24.001101 +v 489.266998 51.232433 24.001101 +v 489.266998 51.232433 36.000900 +v 490.253601 55.465832 25.501101 +v 499.528595 81.599236 30.001101 +v 498.203613 77.865829 31.500900 +v 515.358765 55.465832 28.501101 +v 515.358765 55.465832 25.501101 +v 495.246796 61.012432 36.000900 +v 490.253601 55.465832 34.500900 +v 490.253601 55.465832 36.000900 +v 494.228607 66.665833 24.001101 +v 499.068787 67.519234 24.001101 +v 498.203613 77.865829 25.501101 +v 498.203613 77.865829 24.001101 +v 506.608795 67.519234 36.000900 +v 509.095215 64.745834 36.000900 +v 507.618805 77.865829 34.500900 +v 507.618805 77.865829 36.000900 +v 510.385406 61.012432 24.001101 +v 515.358765 55.465832 24.001101 +v 489.328613 47.732433 31.500900 +v 492.953613 47.732433 33.563499 +v 489.328613 47.732433 34.500900 +v 489.328613 47.732433 28.501101 +v 489.328613 47.732433 25.501101 +v 492.953613 47.732433 26.438501 +v 492.953613 47.732433 30.563501 +v 492.953613 47.732433 32.063499 +v 492.953613 47.732433 31.313501 +v 492.953613 47.732433 35.438499 +v 489.328613 47.732433 36.000900 +v 492.953613 47.732433 34.313499 +v 492.953613 47.732433 34.688499 +v 492.953613 47.732433 27.938501 +v 492.953613 47.732433 28.688501 +v 492.953613 47.732433 29.063501 +v 489.328613 47.732433 24.001101 +v 492.953613 47.732433 24.563501 +v 492.953613 47.732433 25.688501 +v 492.953613 47.732433 25.313501 +v 492.953613 47.732433 24.188501 +v 492.953613 47.732433 24.001101 +v 513.443787 50.732433 24.001101 +v 492.953613 47.732433 35.813499 +v 492.953613 47.732433 36.000900 +v 513.443787 50.732433 36.000900 +v 506.350403 51.482433 36.000900 +v 506.350403 51.482433 24.001101 +v 492.743805 48.232433 24.001101 +v 492.638794 48.482433 24.001101 +v 492.743805 48.232433 36.000900 +v 492.638794 48.482433 36.000900 +v 490.089600 50.982433 36.000900 +v 490.089600 50.982433 24.001101 +v 510.342010 51.732433 30.001101 +v 499.068787 67.519234 36.000900 +v 494.228607 66.665833 36.000900 +v 499.375183 76.905838 24.001101 +v 506.421814 76.905838 36.000900 +v 506.608795 67.519234 24.001101 +v 505.728607 65.752434 24.001101 +v 509.095215 64.745834 24.001101 +v 506.701996 62.825832 30.001101 +v 505.728607 65.752434 27.001101 +v 501.835388 71.605835 27.001101 +v 499.888794 65.752434 27.001101 +v 494.228607 66.665833 30.001101 +v 495.553589 70.399231 28.501101 +v 492.903595 62.932434 28.501101 +v 495.553589 70.399231 31.500900 +v 492.903595 62.932434 31.500900 +v 511.488800 66.665833 24.001101 +v 511.488800 66.665833 30.001101 +v 512.778564 62.932434 28.501101 +v 515.358765 55.465832 31.500900 +v 507.618805 77.865829 31.500900 +v 510.198792 70.399231 28.501101 +v 511.488800 66.665833 36.000900 +v 512.778564 62.932434 31.500900 +v 510.198792 70.399231 31.500900 +v 502.788818 57.705833 24.001101 +v 497.195404 57.705833 30.001101 +v 492.903595 62.932434 34.500900 +v 492.903595 62.932434 36.000900 +v 495.553589 70.399231 24.001101 +v 496.725189 69.439232 24.001101 +v 495.553589 70.399231 25.501101 +v 495.246796 61.012432 24.001101 +v 492.903595 62.932434 25.501101 +v 492.903595 62.932434 24.001101 +v 495.553589 70.399231 36.000900 +v 496.725189 69.439232 36.000900 +v 495.553589 70.399231 34.500900 +v 510.198792 70.399231 36.000900 +v 509.002014 69.439232 36.000900 +v 510.198792 70.399231 34.500900 +v 512.778564 62.932434 25.501101 +v 512.778564 62.932434 24.001101 +v 510.198792 70.399231 24.001101 +v 509.002014 69.439232 24.001101 +v 510.198792 70.399231 25.501101 +v 510.385406 61.012432 36.000900 +v 512.778564 62.932434 34.500900 +v 512.778564 62.932434 36.000900 +v 496.840393 51.232433 36.000900 +v 498.981995 51.732433 36.000900 +v 498.981995 51.732433 33.000900 +v 506.555206 51.732433 24.001101 +v 506.555206 51.732433 27.001101 +v 503.828613 47.732433 30.750900 +v 507.453613 47.732433 32.813499 +v 503.828613 47.732433 33.750900 +v 503.828613 47.732433 29.251101 +v 503.828613 47.732433 26.251101 +v 507.453613 47.732433 27.188501 +v 493.921814 57.279232 36.000900 +v 491.425201 54.505833 36.000900 +v 497.195404 57.705833 24.001101 +v 496.418793 60.052433 24.001101 +v 509.188812 60.052433 36.000900 +v 511.675415 57.279232 24.001101 +v 514.161987 54.505833 24.001101 +v 507.453613 47.732433 34.313499 +v 503.828613 47.732433 35.250900 +v 507.453613 47.732433 25.688501 +v 503.828613 47.732433 24.751101 +v 500.203613 47.732433 31.688501 +v 500.203613 47.732433 28.313501 +v 500.203613 47.732433 30.188501 +v 507.453613 47.732433 29.813501 +v 507.453613 47.732433 31.313501 +v 507.453613 47.732433 30.563501 +v 503.828613 47.732433 36.000900 +v 507.453613 47.732433 35.438499 +v 507.453613 47.732433 35.063499 +v 507.453613 47.732433 28.688501 +v 507.453613 47.732433 29.438501 +v 503.828613 47.732433 24.001101 +v 507.453613 47.732433 24.563501 +v 507.453613 47.732433 24.938501 +v 500.203613 47.732433 34.688499 +v 500.203613 47.732433 33.188499 +v 500.203613 47.732433 33.938499 +v 500.203613 47.732433 25.313501 +v 500.203613 47.732433 26.813501 +v 500.203613 47.732433 26.063501 +v 500.203613 47.732433 30.938501 +v 500.203613 47.732433 35.063499 +v 500.203613 47.732433 35.438499 +v 500.203613 47.732433 29.063501 +v 500.203613 47.732433 29.438501 +v 500.203613 47.732433 24.938501 +v 500.203613 47.732433 24.563501 +v 507.453613 47.732433 24.188501 +v 507.453613 47.732433 24.001101 +v 513.863770 49.732433 24.001101 +v 507.453613 47.732433 35.813499 +v 507.453613 47.732433 36.000900 +v 513.863770 49.732433 36.000900 +v 500.203613 47.732433 24.188501 +v 500.203613 47.732433 24.001101 +v 502.988800 49.732433 24.001101 +v 500.203613 47.732433 35.813499 +v 500.203613 47.732433 36.000900 +v 502.988800 49.732433 36.000900 +v 504.755188 62.825832 27.001101 +v 499.205383 51.232433 36.000900 +v 498.786194 51.107433 36.000900 +v 502.358795 51.232433 36.000900 +v 499.205383 51.232433 24.001101 +v 502.358795 51.232433 24.001101 +v 498.786194 51.107433 24.001101 +v 502.568787 50.732433 24.001101 +v 505.931213 51.357433 24.001101 +v 509.503601 51.482433 24.001101 +v 502.568787 50.732433 36.000900 +v 505.931213 51.357433 36.000900 +v 509.503601 51.482433 36.000900 +v 499.048584 50.482433 36.000900 +v 492.428589 48.982433 36.000900 +v 499.048584 50.482433 24.001101 +v 492.428589 48.982433 24.001101 +v 506.088806 50.982433 24.001101 +v 506.036011 51.107433 24.001101 +v 506.088806 50.982433 36.000900 +v 506.036011 51.107433 36.000900 +v 498.891205 50.857433 36.000900 +v 498.943787 50.732433 36.000900 +v 498.891205 50.857433 24.001101 +v 498.943787 50.732433 24.001101 +v 499.573608 49.232433 24.001101 +v 499.783813 48.732433 24.001101 +v 499.573608 49.232433 36.000900 +v 499.783813 48.732433 36.000900 +v 506.403595 50.232433 24.001101 +v 506.298798 50.482433 24.001101 +v 506.403595 50.232433 36.000900 +v 506.298798 50.482433 36.000900 +v 501.228607 81.599236 27.001101 +v 502.928589 81.599236 24.001101 +v 499.258789 49.982433 36.000900 +v 499.363800 49.732433 36.000900 +v 499.258789 49.982433 24.001101 +v 499.363800 49.732433 24.001101 +v 496.695404 56.212433 27.001101 +v 496.195404 54.719032 24.001101 +v 509.851990 53.225834 27.001101 +v 493.464783 51.107433 36.000900 +v 493.464783 51.107433 24.001101 +v 502.768799 51.732433 24.001101 +v 500.215790 51.357433 24.001101 +v 497.628601 51.232433 24.001101 +v 502.768799 51.732433 36.000900 +v 500.215790 51.357433 36.000900 +v 497.628601 51.232433 36.000900 +v 507.033813 48.732433 24.001101 +v 506.823792 49.232433 24.001101 +v 507.033813 48.732433 36.000900 +v 506.823792 49.232433 36.000900 +v 494.450195 51.107433 24.001101 +v 494.450195 51.107433 36.000900 +v 500.807007 51.357433 36.000900 +v 503.591187 51.482433 36.000900 +v 503.591187 51.482433 24.001101 +v 500.807007 51.357433 24.001101 +v 505.728607 65.752434 36.000900 +v 505.728607 65.752434 33.000900 +v 499.221802 72.212433 36.000900 +v 501.835388 71.605835 36.000900 +v 506.515198 72.212433 24.001101 +v 503.781982 71.605835 24.001101 +v 503.781982 71.605835 27.001101 +v 499.888794 65.752434 24.001101 +v 495.695404 53.225834 33.000900 +v 516.648804 51.732433 30.001101 +v 498.203613 77.865829 28.501101 +v 505.585388 57.705833 33.000900 +v 508.871796 56.212433 33.000900 +v 499.992004 57.705833 27.001101 +v 504.628601 81.599236 33.000900 +v 500.862000 62.825832 33.000900 +v 496.878601 74.132431 27.001101 +v 496.878601 74.132431 33.000900 +v 491.578613 59.199032 27.001101 +v 490.253601 55.465832 28.501101 +v 491.578613 59.199032 33.000900 +v 514.068787 59.199032 27.001101 +v 514.068787 59.199032 33.000900 +v 508.908813 74.132431 27.001101 +v 507.618805 77.865829 28.501101 +v 508.908813 74.132431 33.000900 +v 491.271790 50.982433 36.000900 +v 490.877808 50.982433 36.000900 +v 491.271790 50.982433 24.001101 +v 490.877808 50.982433 24.001101 +v 495.213806 50.982433 36.000900 +v 493.636993 50.982433 36.000900 +v 495.213806 50.982433 24.001101 +v 493.636993 50.982433 24.001101 +v 503.985413 51.482433 36.000900 +v 503.985413 51.482433 24.001101 +v 511.675415 57.279232 36.000900 +v 493.921814 57.279232 24.001101 +v 502.768799 51.732433 30.001101 +v 506.555206 51.732433 30.001101 +v 498.981995 51.732433 30.001101 +v 492.848816 50.982433 24.001101 +v 492.848816 50.982433 36.000900 +v 500.862000 68.679230 36.000900 +v 500.862000 68.679230 24.001101 +v 496.878601 74.132431 24.001101 +v 496.878601 74.132431 36.000900 +v 504.755188 68.679230 24.001101 +v 504.755188 68.679230 36.000900 +v 508.908813 74.132431 36.000900 +v 508.908813 74.132431 24.001101 +v 505.728607 65.752434 30.001101 +v 504.755188 68.679230 30.001101 +v 503.781982 71.605835 30.001101 +v 500.862000 68.679230 30.001101 +v 499.888794 65.752434 30.001101 +v 501.835388 71.605835 30.001101 +v 491.578613 59.199032 24.001101 +v 491.578613 59.199032 36.000900 +v 514.068787 59.199032 36.000900 +v 514.068787 59.199032 24.001101 +v 511.078613 47.732433 34.875900 +v 511.078613 47.732433 31.875900 +v 514.703613 47.732433 33.938499 +v 511.078613 47.732433 25.126101 +v 514.703613 47.732433 26.063501 +v 511.078613 47.732433 28.126101 +v 502.788818 57.705833 30.001101 +v 502.048584 79.832436 36.000900 +v 514.703613 47.732433 30.938501 +v 511.078613 47.732433 30.375900 +v 514.703613 47.732433 29.063501 +v 511.078613 47.732433 29.626101 +v 496.578613 47.732433 31.125900 +v 496.578613 47.732433 32.625900 +v 496.578613 47.732433 34.125900 +v 496.578613 47.732433 28.876101 +v 496.578613 47.732433 27.376101 +v 496.578613 47.732433 25.876101 +v 496.578613 47.732433 29.626101 +v 514.703613 47.732433 35.438499 +v 511.078613 47.732433 35.625900 +v 514.703613 47.732433 24.563501 +v 511.078613 47.732433 24.376101 +v 496.578613 47.732433 34.875900 +v 496.578613 47.732433 25.126101 +v 496.578613 47.732433 35.625900 +v 496.578613 47.732433 24.376101 +v 511.078613 47.732433 36.000900 +v 511.078613 47.732433 24.001101 +v 514.703613 47.732433 30.188501 +v 514.703613 47.732433 35.813499 +v 514.703613 47.732433 29.813501 +v 514.703613 47.732433 24.188501 +v 496.578613 47.732433 36.000900 +v 496.578613 47.732433 24.001101 +v 510.238800 49.732433 24.001101 +v 510.238800 49.732433 36.000900 +v 514.703613 47.732433 24.001101 +v 514.703613 47.732433 36.000900 +v 496.158813 48.732433 36.000900 +v 496.158813 48.732433 24.001101 +v 502.808807 62.825832 30.001101 +v 509.608795 51.232433 24.001101 +v 509.608795 51.232433 36.000900 +v 491.641205 50.857433 24.001101 +v 495.423798 50.482433 36.000900 +v 495.423798 50.482433 24.001101 +v 491.641205 50.857433 36.000900 +v 495.528595 50.232433 24.001101 +v 492.008789 49.982433 24.001101 +v 509.818787 50.732433 24.001101 +v 495.948608 49.232433 36.000900 +v 495.528595 50.232433 36.000900 +v 495.948608 49.232433 24.001101 +v 509.818787 50.732433 36.000900 +v 492.008789 49.982433 36.000900 +v 491.956207 50.107433 24.001101 +v 491.956207 50.107433 36.000900 +v 502.928589 81.599236 30.001101 +v 491.851013 50.357433 36.000900 +v 491.851013 50.357433 24.001101 +v 496.195404 54.719032 30.001101 +v 509.362000 54.719032 30.001101 +v 488.632599 51.725632 30.001101 +v 488.632599 51.725632 29.509102 +v 488.632599 51.718834 24.001101 +v 488.632599 51.725632 27.492901 +v 488.632599 51.732433 30.001101 +v 488.632599 51.732433 29.017502 +v 488.632599 51.732433 24.984701 +v 488.632599 51.732433 24.001101 +v 488.632599 51.718834 30.001101 +v 488.632599 51.717632 24.001101 +v 488.632599 51.718231 30.001101 +v 488.632599 51.717632 30.001101 +v 488.632599 51.715031 24.001101 +v 488.632599 51.716232 30.001101 +v 488.632599 50.761833 24.001101 +v 488.632599 50.757832 24.001101 +v 488.632599 50.759834 30.001101 +v 488.632599 50.752232 24.001101 +v 488.632599 49.783833 24.001101 +v 488.632599 50.268032 30.001101 +v 488.632599 51.704632 24.001101 +v 488.632599 51.709831 30.001101 +v 488.632599 50.912033 24.001101 +v 488.632599 50.888233 24.001101 +v 488.632599 50.900230 30.001101 +v 488.632599 47.732433 24.037100 +v 488.632599 48.561234 30.001101 +v 488.632599 47.732433 24.001101 +v 488.632599 47.732433 24.109100 +v 488.632599 48.561234 30.018902 +v 488.632599 47.732433 25.321100 +v 488.632599 48.561234 30.055101 +v 488.632599 47.732433 25.465101 +v 488.632599 48.561234 30.660900 +v 488.632599 47.732433 25.537102 +v 488.632599 48.561234 30.732901 +v 488.632599 47.732433 25.609100 +v 488.632599 48.561234 30.768902 +v 488.632599 47.732433 25.897100 +v 488.632599 48.561234 30.805101 +v 488.632599 47.732433 28.321102 +v 488.632599 48.561234 30.949100 +v 488.632599 47.732433 28.465101 +v 488.632599 48.561234 32.160900 +v 488.632599 47.732433 28.537102 +v 488.632599 48.561234 32.232903 +v 488.632599 47.732433 28.681101 +v 488.632599 48.561234 32.268902 +v 488.632599 47.732433 31.104900 +v 488.632599 48.561234 32.341103 +v 488.632599 47.732433 31.392900 +v 488.632599 49.390030 36.000900 +v 488.632599 47.732433 31.536901 +v 488.632599 47.732433 31.680901 +v 488.632599 47.732433 34.104900 +v 488.632599 47.732433 34.392902 +v 488.632599 47.732433 34.464901 +v 488.632599 47.732433 34.536903 +v 488.632599 47.732433 34.680901 +v 488.632599 47.732433 35.892902 +v 488.632599 47.732433 35.964901 +v 488.632599 47.732433 36.000900 +v 488.632599 50.881630 24.001101 +v 488.632599 50.885033 30.001101 +v 488.632599 49.748032 24.001101 +v 488.632599 49.742630 24.001101 +v 488.632599 49.745232 30.001101 +v 488.632599 49.759232 24.001101 +v 488.632599 49.753632 30.001101 +v 488.632599 49.390030 24.001101 +v 488.632599 49.566433 30.001101 +v 488.632599 50.878632 24.001101 +v 488.632599 50.776432 24.001101 +v 488.632599 50.827431 30.001101 +v 488.632599 50.755032 30.001101 +v 488.632599 50.769234 30.001101 +v 488.632599 50.928432 24.001101 +v 488.632599 50.920231 30.001101 +v 488.632599 51.178833 24.001101 +v 488.632599 51.139233 24.001101 +v 488.632599 51.159031 30.001101 +v 488.632599 51.232433 24.001101 +v 488.632599 51.205631 30.001101 +v 488.632599 51.434032 24.001101 +v 488.632599 51.394630 24.001101 +v 488.632599 51.414230 30.001101 +v 488.632599 51.449833 24.001101 +v 488.632599 51.577232 30.001101 +v 488.632599 51.441833 30.001101 +v 488.632599 51.313633 30.001101 +v 488.632599 49.771431 30.001101 +v 488.632599 51.033833 30.001101 +v 488.632599 50.881630 30.001101 +v 488.632599 50.880032 30.001101 +v 488.632599 51.718834 36.000900 +v 488.632599 51.717632 36.000900 +v 488.632599 49.390030 30.001101 +v 488.632599 50.752232 30.001101 +v 488.632599 50.752232 36.000900 +v 488.632599 49.742630 30.001101 +v 488.632599 49.742630 36.000900 +v 488.632599 49.748032 30.001101 +v 488.632599 49.748032 36.000900 +v 488.632599 51.715031 30.001101 +v 488.632599 51.715031 36.000900 +v 488.632599 50.757832 30.001101 +v 488.632599 50.757832 36.000900 +v 488.632599 50.761833 30.001101 +v 488.632599 50.761833 36.000900 +v 488.632599 50.888233 30.001101 +v 488.632599 50.888233 36.000900 +v 488.632599 49.759232 30.001101 +v 488.632599 49.759232 36.000900 +v 488.632599 51.178833 30.001101 +v 488.632599 51.178833 36.000900 +v 488.632599 50.912033 30.001101 +v 488.632599 50.912033 36.000900 +v 488.632599 51.449833 30.001101 +v 488.632599 51.449833 36.000900 +v 488.632599 51.704632 30.001101 +v 488.632599 51.704632 36.000900 +v 488.632599 51.232433 30.001101 +v 488.632599 51.232433 36.000900 +v 488.632599 51.394630 30.001101 +v 488.632599 51.394630 36.000900 +v 488.632599 51.434032 30.001101 +v 488.632599 51.434032 36.000900 +v 488.632599 49.783833 30.001101 +v 488.632599 49.783833 36.000900 +v 488.632599 50.776432 30.001101 +v 488.632599 50.776432 36.000900 +v 488.632599 51.139233 30.001101 +v 488.632599 51.139233 36.000900 +v 488.632599 50.928432 30.001101 +v 488.632599 50.928432 36.000900 +v 488.632599 50.881630 36.000900 +v 488.632599 50.878632 30.001101 +v 488.632599 50.878632 36.000900 +v 488.632599 51.732433 35.017303 +v 488.632599 51.732433 36.000900 +v 488.632599 51.732433 30.984701 +v 517.188416 51.714088 24.001101 +v 517.188416 51.714088 36.000900 +v 517.188416 50.447517 24.001101 +v 517.188416 51.732433 35.373413 +v 517.188416 51.732433 36.000900 +v 517.188416 51.732433 34.118576 +v 517.188416 51.732433 31.883301 +v 517.188416 51.732433 30.001101 +v 517.188416 51.732433 28.118774 +v 517.188416 51.732433 25.883427 +v 517.188416 51.732433 24.628592 +v 517.188416 51.732433 24.001101 +v 517.188416 47.732433 24.060045 +v 517.188416 47.732433 24.001101 +v 517.188416 50.447517 36.000900 +v 517.188416 47.732433 24.177998 +v 517.188416 47.732433 24.649803 +v 517.188416 47.732433 28.762577 +v 517.188416 47.732433 29.706190 +v 517.188416 47.732433 29.942093 +v 517.188416 47.732433 30.060045 +v 517.188416 47.732433 30.295948 +v 517.188416 47.732433 31.239563 +v 517.188416 47.732433 35.352200 +v 517.188416 47.732433 35.824005 +v 517.188416 47.732433 35.941956 +v 517.188416 47.732433 36.000900 +f 1 2 3 +f 4 5 6 +f 7 8 9 +f 10 11 12 +f 13 3 2 +f 13 2 14 +f 15 16 17 +f 18 19 20 +f 21 22 23 +f 18 20 24 +f 25 26 27 +f 28 14 2 +f 29 26 30 +f 31 32 33 +f 29 34 35 +f 36 37 8 +f 38 39 40 +f 41 11 42 +f 43 44 45 +f 46 6 5 +f 47 48 49 +f 47 49 50 +f 46 5 51 +f 52 53 54 +f 52 55 56 +f 57 53 58 +f 59 60 61 +f 62 51 5 +f 63 64 65 +f 66 35 34 +f 67 68 43 +f 69 18 70 +f 71 72 23 +f 67 43 73 +f 74 17 16 +f 36 8 75 +f 76 77 55 +f 78 28 2 +f 79 33 32 +f 76 55 80 +f 81 27 26 +f 82 81 26 +f 83 84 49 +f 85 21 86 +f 82 26 87 +f 88 89 20 +f 1 90 2 +f 91 92 93 +f 91 11 94 +f 39 95 40 +f 95 96 40 +f 4 8 97 +f 98 16 99 +f 98 100 16 +f 93 92 101 +f 90 102 2 +f 103 40 96 +f 104 12 11 +f 105 97 8 +f 106 16 100 +f 107 62 5 +f 108 109 34 +f 77 56 55 +f 110 92 111 +f 112 24 20 +f 113 64 114 +f 115 116 49 +f 117 60 118 +f 119 21 120 +f 121 32 122 +f 123 45 44 +f 111 92 124 +f 125 126 127 +f 128 129 130 +f 128 131 125 +f 132 125 133 +f 127 134 135 +f 136 137 127 +f 138 139 128 +f 140 128 139 +f 129 141 142 +f 143 129 144 +f 145 141 146 +f 101 92 147 +f 148 149 135 +f 102 150 2 +f 103 151 40 +f 104 11 152 +f 146 141 153 +f 153 141 154 +f 149 155 135 +f 155 156 135 +f 157 16 106 +f 158 105 8 +f 37 9 8 +f 159 38 40 +f 160 20 89 +f 161 20 160 +f 162 60 59 +f 162 118 60 +f 163 32 31 +f 163 122 32 +f 164 44 165 +f 164 166 44 +f 167 168 44 +f 168 165 44 +f 169 58 53 +f 83 49 170 +f 115 171 172 +f 109 66 34 +f 65 64 113 +f 115 173 171 +f 161 174 171 +f 172 171 174 +f 173 175 171 +f 161 171 175 +f 176 177 178 +f 179 78 2 +f 180 32 121 +f 176 181 177 +f 182 183 177 +f 178 177 183 +f 181 184 177 +f 182 177 184 +f 185 43 68 +f 186 70 18 +f 161 112 20 +f 187 188 161 +f 189 190 115 +f 191 189 115 +f 115 49 192 +f 193 115 194 +f 195 161 196 +f 197 161 195 +f 198 199 182 +f 200 198 182 +f 123 44 166 +f 201 202 176 +f 203 176 204 +f 205 176 203 +f 206 120 21 +f 207 182 208 +f 209 210 16 +f 211 16 210 +f 212 11 10 +f 213 11 212 +f 214 215 216 +f 217 218 219 +f 220 15 18 +f 114 64 221 +f 222 223 49 +f 192 49 223 +f 23 224 21 +f 206 21 224 +f 225 41 43 +f 124 92 226 +f 215 227 216 +f 228 216 227 +f 219 218 229 +f 230 229 218 +f 216 231 214 +f 126 136 127 +f 218 217 232 +f 130 129 143 +f 217 214 233 +f 131 133 125 +f 214 217 234 +f 235 214 236 +f 237 228 238 +f 239 238 228 +f 240 241 217 +f 234 217 241 +f 242 243 230 +f 244 230 243 +f 216 228 245 +f 246 216 247 +f 218 248 230 +f 249 250 218 +f 233 214 251 +f 231 251 214 +f 134 148 135 +f 245 228 252 +f 237 253 228 +f 252 228 253 +f 232 217 254 +f 255 254 217 +f 142 141 145 +f 248 256 230 +f 242 230 257 +f 256 257 230 +f 258 242 259 +f 260 147 92 +f 261 262 237 +f 263 2 150 +f 264 265 242 +f 266 242 265 +f 267 237 268 +f 269 268 237 +f 50 49 84 +f 167 44 270 +f 271 272 273 +f 274 275 276 +f 277 275 278 +f 279 152 11 +f 280 281 273 +f 282 40 151 +f 273 283 280 +f 156 284 135 +f 275 277 285 +f 154 141 286 +f 287 277 288 +f 266 277 287 +f 289 290 280 +f 269 289 280 +f 291 292 273 +f 272 291 273 +f 293 275 294 +f 276 275 293 +f 295 266 296 +f 277 266 295 +f 297 298 269 +f 280 297 269 +f 242 266 299 +f 299 266 300 +f 237 301 269 +f 301 302 269 +f 108 34 79 +f 303 304 60 +f 305 306 280 +f 283 305 280 +f 307 277 308 +f 285 277 307 +f 186 18 74 +f 309 310 222 +f 159 40 71 +f 311 42 11 +f 16 312 209 +f 8 7 313 +f 314 315 7 +f 316 7 315 +f 317 209 318 +f 319 318 209 +f 259 242 320 +f 320 242 321 +f 262 322 237 +f 322 323 237 +f 7 316 324 +f 209 325 319 +f 271 326 319 +f 327 319 326 +f 328 329 316 +f 274 316 329 +f 119 330 21 +f 331 21 330 +f 332 333 26 +f 87 26 333 +f 334 335 53 +f 336 53 335 +f 116 337 49 +f 170 49 337 +f 63 107 5 +f 36 16 211 +f 36 338 16 +f 159 11 213 +f 159 311 11 +f 339 179 2 +f 340 60 117 +f 108 303 60 +f 67 23 341 +f 67 342 23 +f 186 222 343 +f 186 309 222 +f 76 32 180 +f 76 344 32 +f 167 21 331 +f 167 86 21 +f 82 53 336 +f 82 169 53 +f 83 20 345 +f 83 88 20 +f 109 340 346 +f 347 109 346 +f 65 348 349 +f 350 348 65 +f 179 110 351 +f 352 179 351 +f 180 353 354 +f 355 353 180 +f 356 209 357 +f 357 209 312 +f 358 359 7 +f 359 313 7 +f 69 23 22 +f 69 341 23 +f 222 49 48 +f 185 343 222 +f 360 271 361 +f 319 361 271 +f 362 363 274 +f 316 274 363 +f 273 103 271 +f 364 271 103 +f 275 274 104 +f 365 104 274 +f 22 20 19 +f 22 21 85 +f 185 47 43 +f 44 43 47 +f 13 23 72 +f 366 23 13 +f 15 99 16 +f 15 221 64 +f 41 94 11 +f 41 226 92 +f 46 222 310 +f 367 222 46 +f 314 368 213 +f 213 368 369 +f 37 370 368 +f 314 37 368 +f 317 38 368 +f 38 369 368 +f 211 368 370 +f 317 368 211 +f 363 371 316 +f 371 324 316 +f 361 319 372 +f 372 319 325 +f 373 332 160 +f 160 196 161 +f 374 116 57 +f 116 115 190 +f 53 57 162 +f 375 162 57 +f 26 29 332 +f 376 332 29 +f 377 334 164 +f 164 204 176 +f 378 119 25 +f 119 182 199 +f 26 25 163 +f 379 163 25 +f 53 52 334 +f 380 334 52 +f 168 381 382 +f 377 168 382 +f 378 382 331 +f 331 382 381 +f 336 382 383 +f 377 382 336 +f 374 384 170 +f 170 384 385 +f 169 386 384 +f 374 169 384 +f 373 88 384 +f 88 385 384 +f 378 81 382 +f 81 383 382 +f 87 384 386 +f 373 384 87 +f 107 349 348 +f 387 107 348 +f 376 66 347 +f 109 347 66 +f 65 113 350 +f 388 350 113 +f 172 191 115 +f 347 346 172 +f 375 191 346 +f 172 346 191 +f 350 173 348 +f 173 115 193 +f 387 348 193 +f 173 193 348 +f 174 161 197 +f 172 174 347 +f 376 347 197 +f 174 197 347 +f 173 350 175 +f 175 187 161 +f 388 187 350 +f 175 350 187 +f 65 349 63 +f 107 63 349 +f 109 108 340 +f 60 340 108 +f 375 346 117 +f 340 117 346 +f 77 354 353 +f 380 77 353 +f 389 78 352 +f 179 352 78 +f 180 121 355 +f 379 355 121 +f 178 201 176 +f 352 351 178 +f 390 201 351 +f 178 351 201 +f 355 181 353 +f 181 176 205 +f 380 353 205 +f 181 205 353 +f 183 182 207 +f 178 183 352 +f 389 352 207 +f 183 207 352 +f 181 355 184 +f 184 200 182 +f 379 200 355 +f 184 355 200 +f 92 110 339 +f 179 339 110 +f 77 76 354 +f 180 354 76 +f 390 351 111 +f 110 111 351 +f 391 392 393 +f 394 395 396 +f 225 123 390 +f 123 176 202 +f 366 389 206 +f 206 208 182 +f 67 341 397 +f 69 397 341 +f 185 397 343 +f 186 343 397 +f 67 397 68 +f 185 68 397 +f 69 70 397 +f 186 397 70 +f 220 112 388 +f 112 161 188 +f 367 387 192 +f 192 194 115 +f 151 273 281 +f 103 273 151 +f 152 278 275 +f 104 152 275 +f 162 375 118 +f 117 118 375 +f 367 62 387 +f 107 387 62 +f 112 188 388 +f 187 388 188 +f 57 189 375 +f 191 375 189 +f 192 387 194 +f 193 194 387 +f 332 376 195 +f 197 195 376 +f 29 35 376 +f 66 376 35 +f 220 388 114 +f 113 114 388 +f 225 390 124 +f 111 124 390 +f 52 56 380 +f 77 380 56 +f 25 198 379 +f 200 379 198 +f 123 202 390 +f 201 390 202 +f 334 380 203 +f 205 203 380 +f 206 389 208 +f 207 208 389 +f 366 28 389 +f 78 389 28 +f 163 379 122 +f 121 122 379 +f 163 31 26 +f 31 30 26 +f 52 54 55 +f 304 61 60 +f 29 30 34 +f 30 398 34 +f 162 59 53 +f 54 53 59 +f 22 85 20 +f 85 345 20 +f 47 50 44 +f 50 270 44 +f 209 317 210 +f 211 210 317 +f 328 314 212 +f 213 212 314 +f 37 36 370 +f 211 370 36 +f 38 159 369 +f 213 369 159 +f 7 9 314 +f 37 314 9 +f 327 39 317 +f 38 317 39 +f 393 392 399 +f 400 399 392 +f 395 401 396 +f 402 396 401 +f 391 215 392 +f 215 214 235 +f 394 396 219 +f 219 240 217 +f 403 231 404 +f 231 216 246 +f 126 125 132 +f 405 126 404 +f 406 407 232 +f 232 249 218 +f 130 138 128 +f 408 407 130 +f 131 128 140 +f 403 131 409 +f 195 196 332 +f 160 332 196 +f 116 190 57 +f 189 57 190 +f 15 220 221 +f 114 221 220 +f 46 51 367 +f 62 367 51 +f 222 367 223 +f 192 223 367 +f 18 24 220 +f 112 220 24 +f 119 199 25 +f 198 25 199 +f 203 204 334 +f 164 334 204 +f 41 225 226 +f 124 226 225 +f 13 14 366 +f 28 366 14 +f 23 366 224 +f 206 224 366 +f 43 45 225 +f 123 225 45 +f 400 392 235 +f 215 235 392 +f 402 240 396 +f 219 396 240 +f 215 391 227 +f 227 239 228 +f 219 229 394 +f 229 230 244 +f 402 400 234 +f 234 236 214 +f 393 410 391 +f 411 391 410 +f 395 394 412 +f 413 412 394 +f 403 404 132 +f 126 132 404 +f 406 138 407 +f 130 407 138 +f 406 409 140 +f 131 140 409 +f 231 246 404 +f 405 404 246 +f 232 407 249 +f 408 249 407 +f 233 255 217 +f 403 409 233 +f 414 405 245 +f 245 247 216 +f 415 248 408 +f 248 218 250 +f 134 127 137 +f 416 134 414 +f 142 144 129 +f 417 415 142 +f 411 239 391 +f 227 391 239 +f 413 394 244 +f 229 244 394 +f 234 400 236 +f 235 236 400 +f 238 261 237 +f 239 411 238 +f 418 261 411 +f 238 411 261 +f 240 402 241 +f 234 241 402 +f 243 242 258 +f 244 243 413 +f 419 413 258 +f 243 258 413 +f 402 420 400 +f 399 400 420 +f 418 411 421 +f 410 421 411 +f 401 422 402 +f 420 402 422 +f 419 423 413 +f 412 413 423 +f 414 136 405 +f 126 405 136 +f 415 408 143 +f 130 143 408 +f 131 403 133 +f 132 133 403 +f 134 137 414 +f 136 414 137 +f 424 148 416 +f 134 416 148 +f 138 406 139 +f 140 139 406 +f 142 415 144 +f 143 144 415 +f 425 417 145 +f 142 145 417 +f 406 255 409 +f 233 409 255 +f 245 405 247 +f 246 247 405 +f 248 250 408 +f 249 408 250 +f 233 251 403 +f 231 403 251 +f 416 414 252 +f 245 252 414 +f 253 237 267 +f 252 253 416 +f 424 416 267 +f 253 267 416 +f 232 254 406 +f 255 406 254 +f 417 256 415 +f 248 415 256 +f 257 264 242 +f 256 417 257 +f 425 264 417 +f 257 417 264 +f 258 259 419 +f 426 419 259 +f 261 418 262 +f 427 262 418 +f 423 419 428 +f 428 260 92 +f 421 429 418 +f 429 2 263 +f 148 424 149 +f 430 149 424 +f 264 425 265 +f 265 296 266 +f 267 268 424 +f 268 269 298 +f 145 146 425 +f 431 425 146 +f 50 432 270 +f 167 270 432 +f 83 432 84 +f 50 84 432 +f 85 86 432 +f 167 432 86 +f 83 345 432 +f 85 432 345 +f 433 279 91 +f 11 91 279 +f 434 1 282 +f 40 282 1 +f 363 362 435 +f 436 272 360 +f 271 360 272 +f 437 362 276 +f 274 276 362 +f 361 438 360 +f 278 288 277 +f 152 279 278 +f 281 280 290 +f 151 281 282 +f 437 439 440 +f 440 286 141 +f 91 93 433 +f 441 433 93 +f 283 273 292 +f 442 283 443 +f 285 294 275 +f 444 439 285 +f 279 433 287 +f 287 300 266 +f 282 289 434 +f 289 269 302 +f 1 434 90 +f 445 90 434 +f 436 446 443 +f 446 135 284 +f 440 447 437 +f 362 437 447 +f 443 291 436 +f 272 436 291 +f 439 437 293 +f 276 293 437 +f 446 436 448 +f 360 448 436 +f 287 288 279 +f 278 279 288 +f 289 282 290 +f 281 290 282 +f 146 153 431 +f 444 431 153 +f 149 430 155 +f 442 155 430 +f 425 431 295 +f 295 308 277 +f 424 297 430 +f 297 280 306 +f 426 441 101 +f 93 101 441 +f 291 443 292 +f 283 292 443 +f 293 294 439 +f 285 439 294 +f 299 321 242 +f 433 441 299 +f 301 237 323 +f 434 301 445 +f 427 102 445 +f 90 445 102 +f 108 449 303 +f 303 80 55 +f 79 32 344 +f 108 79 449 +f 76 80 449 +f 303 449 80 +f 79 344 449 +f 76 449 344 +f 428 419 260 +f 426 260 419 +f 429 263 418 +f 427 418 263 +f 438 450 360 +f 448 360 450 +f 435 362 451 +f 447 451 362 +f 33 34 398 +f 79 34 33 +f 54 304 55 +f 303 55 304 +f 153 154 444 +f 439 444 154 +f 430 305 442 +f 283 442 305 +f 431 444 307 +f 285 307 444 +f 155 442 156 +f 443 156 442 +f 299 300 433 +f 287 433 300 +f 301 434 302 +f 289 302 434 +f 186 452 309 +f 309 75 8 +f 74 16 338 +f 186 74 452 +f 36 75 452 +f 309 452 75 +f 74 338 452 +f 36 452 338 +f 159 453 311 +f 311 73 43 +f 71 23 342 +f 159 71 453 +f 67 73 453 +f 311 453 73 +f 71 342 453 +f 67 453 342 +f 314 328 315 +f 316 315 328 +f 317 318 327 +f 319 327 318 +f 16 157 312 +f 357 312 157 +f 8 313 158 +f 359 158 313 +f 212 10 328 +f 365 328 10 +f 39 327 95 +f 364 95 327 +f 295 296 425 +f 265 425 296 +f 297 424 298 +f 268 298 424 +f 263 150 427 +f 102 427 150 +f 259 320 426 +f 441 426 320 +f 262 427 322 +f 445 322 427 +f 260 426 147 +f 101 147 426 +f 307 308 431 +f 295 431 308 +f 305 430 306 +f 297 306 430 +f 320 321 441 +f 299 441 321 +f 322 445 323 +f 301 323 445 +f 446 284 443 +f 156 443 284 +f 440 439 286 +f 154 286 439 +f 18 69 19 +f 22 19 69 +f 47 185 48 +f 222 48 185 +f 103 96 364 +f 95 364 96 +f 10 12 365 +f 104 365 12 +f 7 324 358 +f 371 358 324 +f 372 325 356 +f 209 356 325 +f 271 364 326 +f 327 326 364 +f 328 365 329 +f 274 329 365 +f 1 3 40 +f 13 40 3 +f 91 94 92 +f 41 92 94 +f 15 17 18 +f 74 18 17 +f 46 310 8 +f 309 8 310 +f 13 72 40 +f 71 40 72 +f 41 42 43 +f 311 43 42 +f 98 99 64 +f 15 64 99 +f 4 6 8 +f 46 8 6 +f 119 378 330 +f 331 330 378 +f 332 373 333 +f 87 333 373 +f 334 377 335 +f 336 335 377 +f 116 374 337 +f 170 337 374 +f 168 167 381 +f 331 381 167 +f 81 82 383 +f 336 383 82 +f 87 386 82 +f 169 82 386 +f 170 385 83 +f 88 83 385 +f 160 89 373 +f 88 373 89 +f 164 165 377 +f 168 377 165 +f 25 27 378 +f 81 378 27 +f 57 58 374 +f 169 374 58 +f 33 398 31 +f 30 31 398 +f 59 61 54 +f 304 54 61 +f 206 182 120 +f 119 120 182 +f 164 176 166 +f 123 166 176 +f 454 455 456 +f 455 457 456 +f 458 456 457 +f 459 456 458 +f 460 456 459 +f 461 456 460 +f 462 463 464 +f 465 466 467 +f 468 469 470 +f 471 472 473 +f 466 474 475 +f 476 477 478 +f 479 480 481 +f 482 483 479 +f 484 485 482 +f 486 487 484 +f 488 489 486 +f 490 491 488 +f 492 493 490 +f 494 495 492 +f 496 497 494 +f 498 499 496 +f 500 501 498 +f 502 503 500 +f 504 505 502 +f 506 505 504 +f 507 505 506 +f 508 505 507 +f 509 505 508 +f 510 505 509 +f 511 505 510 +f 512 505 511 +f 513 505 512 +f 514 505 513 +f 515 505 514 +f 477 516 517 +f 518 519 520 +f 521 518 522 +f 519 523 524 +f 523 481 480 +f 525 526 527 +f 469 471 528 +f 526 468 529 +f 530 476 531 +f 532 533 534 +f 535 532 536 +f 537 538 539 +f 474 540 541 +f 540 537 542 +f 538 535 543 +f 472 521 544 +f 533 530 545 +f 546 525 547 +f 454 462 548 +f 464 465 549 +f 524 550 505 +f 528 551 552 +f 520 553 554 +f 522 555 556 +f 467 557 558 +f 470 559 560 +f 529 561 562 +f 478 563 564 +f 544 565 566 +f 536 567 568 +f 531 569 570 +f 541 571 572 +f 475 573 574 +f 543 575 576 +f 539 577 578 +f 542 579 580 +f 473 581 582 +f 527 583 584 +f 534 585 586 +f 545 587 588 +f 517 546 589 +f 589 590 591 +f 456 461 5 +f 592 593 64 +f 463 456 5 +f 593 548 64 +f 548 549 64 +f 466 463 5 +f 549 558 64 +f 128 125 502 +f 128 502 500 +f 506 504 125 +f 125 127 508 +f 125 508 507 +f 510 509 127 +f 127 135 513 +f 127 513 512 +f 511 510 127 +f 129 128 494 +f 129 494 492 +f 498 496 128 +f 490 488 129 +f 141 129 484 +f 141 484 482 +f 488 486 129 +f 479 481 141 +f 481 523 141 +f 515 514 135 +f 505 515 135 +f 552 582 438 +f 472 471 435 +f 446 448 556 +f 446 556 554 +f 135 446 554 +f 135 554 505 +f 447 440 519 +f 447 519 518 +f 440 141 523 +f 440 523 519 +f 516 477 359 +f 564 589 357 +f 558 574 64 +f 474 466 5 +f 438 361 560 +f 438 560 552 +f 361 372 562 +f 361 562 560 +f 363 435 471 +f 363 471 469 +f 371 363 469 +f 371 469 468 +f 500 498 128 +f 507 506 125 +f 496 494 128 +f 514 513 135 +f 482 479 141 +f 448 450 566 +f 448 566 556 +f 451 447 518 +f 451 518 521 +f 357 157 570 +f 357 570 564 +f 158 359 477 +f 158 477 476 +f 358 371 468 +f 358 468 526 +f 372 356 584 +f 372 584 562 +f 461 460 5 +f 64 63 594 +f 64 594 592 +f 63 5 460 +f 63 460 459 +f 533 532 105 +f 532 535 105 +f 568 586 106 +f 576 568 106 +f 5 4 540 +f 5 540 474 +f 537 540 4 +f 98 64 574 +f 98 574 572 +f 572 580 98 +f 100 98 580 +f 100 580 578 +f 106 100 578 +f 106 578 576 +f 97 105 535 +f 97 535 538 +f 4 97 538 +f 4 538 537 +f 504 502 125 +f 509 508 127 +f 492 490 129 +f 512 511 127 +f 486 484 129 +f 435 451 521 +f 435 521 472 +f 450 438 582 +f 450 582 566 +f 157 106 586 +f 157 586 588 +f 588 570 157 +f 105 158 530 +f 105 530 533 +f 476 530 158 +f 591 584 356 +f 356 357 589 +f 356 589 591 +f 359 358 525 +f 359 525 516 +f 526 525 358 +f 459 458 63 +f 458 594 63 +f 480 479 483 +f 480 505 550 +f 480 483 505 +f 483 482 485 +f 473 552 551 +f 582 552 473 +f 483 485 505 +f 485 484 487 +f 524 554 553 +f 505 554 524 +f 541 574 573 +f 572 574 541 +f 545 586 585 +f 588 586 545 +f 543 578 577 +f 576 578 543 +f 527 591 590 +f 584 591 527 +f 536 576 575 +f 568 576 536 +f 534 568 567 +f 586 568 534 +f 539 580 579 +f 578 580 539 +f 544 582 581 +f 566 582 544 +f 478 570 569 +f 564 570 478 +f 531 588 587 +f 570 588 531 +f 542 572 571 +f 580 572 542 +f 529 584 583 +f 562 584 529 +f 592 454 593 +f 548 593 454 +f 522 566 565 +f 556 566 522 +f 475 558 557 +f 574 558 475 +f 517 564 563 +f 589 564 517 +f 520 556 555 +f 554 556 520 +f 528 560 559 +f 552 560 528 +f 470 562 561 +f 560 562 470 +f 463 462 456 +f 454 456 462 +f 462 464 548 +f 549 548 464 +f 466 465 463 +f 464 463 465 +f 465 467 549 +f 558 549 467 +f 470 561 468 +f 529 468 561 +f 473 551 471 +f 528 471 551 +f 475 557 466 +f 467 466 557 +f 478 569 476 +f 531 476 569 +f 517 563 477 +f 478 477 563 +f 520 555 518 +f 522 518 555 +f 522 565 521 +f 544 521 565 +f 524 553 519 +f 520 519 553 +f 480 550 523 +f 524 523 550 +f 527 590 525 +f 590 547 525 +f 528 559 469 +f 470 469 559 +f 529 583 526 +f 527 526 583 +f 531 587 530 +f 545 530 587 +f 534 567 532 +f 536 532 567 +f 536 575 535 +f 543 535 575 +f 539 579 537 +f 542 537 579 +f 541 573 474 +f 475 474 573 +f 542 571 540 +f 541 540 571 +f 543 577 538 +f 539 538 577 +f 544 581 472 +f 473 472 581 +f 545 585 533 +f 534 533 585 +f 525 546 516 +f 517 516 546 +f 546 547 589 +f 590 589 547 +f 454 592 455 +f 594 455 592 +f 485 487 505 +f 487 486 489 +f 487 489 505 +f 489 488 491 +f 489 491 505 +f 491 490 493 +f 491 493 505 +f 493 492 495 +f 493 495 505 +f 495 494 497 +f 495 497 505 +f 497 496 499 +f 497 499 505 +f 499 498 501 +f 499 501 505 +f 501 500 503 +f 501 503 505 +f 502 505 503 +f 455 594 457 +f 458 457 594 +f 595 596 597 +f 598 599 595 +f 600 598 595 +f 601 600 595 +f 602 601 595 +f 603 602 595 +f 604 603 595 +f 605 604 595 +f 606 605 595 +f 607 608 609 +f 610 607 609 +f 611 610 609 +f 612 611 609 +f 613 612 609 +f 614 613 609 +f 615 614 609 +f 616 615 609 +f 617 616 609 +f 618 617 609 +f 619 618 609 +f 620 619 609 +f 621 620 609 +f 597 609 608 +f 596 595 599 +f 609 597 596 +f 606 595 92 +f 92 339 603 +f 92 603 604 +f 599 598 2 +f 595 597 92 +f 609 596 2 +f 596 599 2 +f 617 618 393 +f 611 612 395 +f 420 422 614 +f 420 614 615 +f 423 428 608 +f 423 608 607 +f 428 92 597 +f 428 597 608 +f 429 421 620 +f 429 620 621 +f 2 429 621 +f 2 621 609 +f 421 410 619 +f 421 619 620 +f 412 423 607 +f 412 607 610 +f 399 420 615 +f 399 615 616 +f 422 401 613 +f 422 613 614 +f 410 393 618 +f 410 618 619 +f 395 412 610 +f 395 610 611 +f 605 606 92 +f 339 2 600 +f 339 600 601 +f 393 399 616 +f 393 616 617 +f 401 395 612 +f 401 612 613 +f 604 605 92 +f 602 603 339 +f 598 600 2 +f 601 602 339 diff --git a/tests/data/V.obj b/tests/data/V.obj new file mode 100644 index 000000000..1aacc0a61 --- /dev/null +++ b/tests/data/V.obj @@ -0,0 +1,68 @@ +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object V.obj +# +# Vertices: 14 +# Faces: 24 +# +#### +vn -0.835484 -0.584839 0.000000 +v 41.480000 44.020000 0.000000 +vn 0.000000 0.000000 1.768192 +v 51.480000 44.020000 15.000000 +vn 0.000000 0.000000 0.960070 +v 41.480000 44.020000 15.000000 +vn 0.000000 0.000000 0.413330 +v 55.480000 24.020000 15.000000 +vn 0.000000 -0.982794 0.000000 +v 65.480003 24.020000 15.000000 +vn -0.000000 -0.000000 -2.776433 +v 60.480000 31.162861 0.000000 +vn -0.000000 -0.000000 -0.099828 +v 79.480003 44.020000 0.000000 +vn -0.000000 -0.000000 -0.265332 +v 55.480000 24.020000 0.000000 +vn 0.661947 0.463363 0.000000 +v 51.480000 44.020000 0.000000 +vn 0.624900 0.437430 0.000000 +v 60.480000 31.162861 15.000000 +vn -0.661947 0.463363 0.000000 +v 69.480003 44.020000 15.000000 +vn -1.286846 0.900793 0.000000 +v 69.480003 44.020000 0.000000 +vn 0.000000 0.982794 0.000000 +v 79.480003 44.020000 15.000000 +vn 0.451362 -0.315954 0.000000 +v 65.480003 24.020000 0.000000 +# 14 vertices, 0 vertices normals + +f 3//3 1//1 4//4 +f 4//4 1//1 8//8 +f 1//1 3//3 2//2 +f 9//9 1//1 2//2 +f 2//2 3//3 4//4 +f 10//10 2//2 4//4 +f 5//5 10//10 4//4 +f 13//13 11//11 5//5 +f 11//11 10//10 5//5 +f 4//4 8//8 5//5 +f 5//5 8//8 14//14 +f 1//1 9//9 8//8 +f 8//8 9//9 6//6 +f 6//6 12//12 7//7 +f 6//6 7//7 8//8 +f 8//8 7//7 14//14 +f 9//9 2//2 10//10 +f 6//6 9//9 10//10 +f 10//10 11//11 6//6 +f 6//6 11//11 12//12 +f 12//12 11//11 13//13 +f 7//7 12//12 13//13 +f 13//13 5//5 14//14 +f 7//7 13//13 14//14 +# 24 faces, 0 coords texture + +# End of File \ No newline at end of file diff --git a/tests/data/V_standing.obj b/tests/data/V_standing.obj new file mode 100644 index 000000000..a5673ccc6 --- /dev/null +++ b/tests/data/V_standing.obj @@ -0,0 +1,38 @@ +v -14.000000 0.000000 20.000000 +v -14.000000 15.000000 20.000000 +v 0.000000 0.000000 0.000000 +v 0.000000 15.000000 0.000000 +v -4.000000 0.000000 20.000000 +v -4.000000 15.000000 20.000000 +v 5.000000 0.000000 7.142860 +v 10.000000 0.000000 0.000000 +v 24.000000 0.000000 20.000000 +v 14.000000 0.000000 20.000000 +v 10.000000 15.000000 0.000000 +v 5.000000 15.000000 7.142860 +v 14.000000 15.000000 20.000000 +v 24.000000 15.000000 20.000000 +f 1 2 3 +f 3 2 4 +f 2 1 5 +f 6 2 5 +f 5 1 3 +f 7 5 3 +f 8 7 3 +f 9 10 8 +f 10 7 8 +f 3 4 8 +f 8 4 11 +f 2 6 4 +f 4 6 12 +f 12 13 14 +f 12 14 4 +f 4 14 11 +f 6 5 7 +f 12 6 7 +f 7 10 12 +f 12 10 13 +f 13 10 9 +f 14 13 9 +f 9 8 11 +f 14 9 11 diff --git a/tests/data/bridge.obj b/tests/data/bridge.obj new file mode 100644 index 000000000..4b3ff26d9 --- /dev/null +++ b/tests/data/bridge.obj @@ -0,0 +1,44 @@ +v 75.000000 84.500000 8.000000 +v 125.000000 84.500000 8.000000 +v 75.000000 94.500000 8.000000 +v 120.000000 84.500000 5.000000 +v 125.000000 94.500000 8.000000 +v 75.000000 84.500000 0.000000 +v 80.000000 84.500000 5.000000 +v 125.000000 84.500000 0.000000 +v 125.000000 94.500000 0.000000 +v 80.000000 94.500000 5.000000 +v 75.000000 94.500000 0.000000 +v 120.000000 94.500000 5.000000 +v 120.000000 84.500000 0.000000 +v 80.000000 94.500000 0.000000 +v 80.000000 84.500000 0.000000 +v 120.000000 94.500000 0.000000 +f 1 2 3 +f 2 1 4 +f 3 2 5 +f 3 6 1 +f 1 7 4 +f 2 4 8 +f 2 9 5 +f 5 10 3 +f 11 6 3 +f 6 7 1 +f 7 12 4 +f 4 13 8 +f 8 9 2 +f 5 9 12 +f 5 12 10 +f 10 11 3 +f 11 14 6 +f 15 7 6 +f 10 12 7 +f 12 13 4 +f 13 9 8 +f 12 9 16 +f 14 11 10 +f 6 14 15 +f 15 14 7 +f 7 14 10 +f 16 13 12 +f 16 9 13 diff --git a/tests/data/cube_with_concave_hole.obj b/tests/data/cube_with_concave_hole.obj new file mode 100644 index 000000000..e4c7d0bad --- /dev/null +++ b/tests/data/cube_with_concave_hole.obj @@ -0,0 +1,72 @@ +v -10.000000 -10.000000 -5.000000 +v -10.000000 -10.000000 5.000000 +v -10.000000 10.000000 -5.000000 +v -10.000000 10.000000 5.000000 +v 10.000000 -10.000000 -5.000000 +v 10.000000 -10.000000 5.000000 +v -5.000000 -5.000000 -5.000000 +v 5.000000 -5.000000 -5.000000 +v 5.000000 5.000000 -5.000000 +v 5.000000 10.000000 -5.000000 +v -5.000000 5.000000 -5.000000 +v 0.000000 5.000000 -5.000000 +v 5.000000 0.000000 -5.000000 +v 0.000000 0.000000 -5.000000 +v 10.000000 5.000000 -5.000000 +v 5.000000 10.000000 5.000000 +v -5.000000 -5.000000 5.000000 +v 5.000000 0.000000 5.000000 +v 5.000000 -5.000000 5.000000 +v -5.000000 5.000000 5.000000 +v 10.000000 5.000000 5.000000 +v 5.000000 5.000000 5.000000 +v 0.000000 5.000000 5.000000 +v 0.000000 0.000000 5.000000 +f 1 2 3 +f 3 2 4 +f 2 1 5 +f 6 2 5 +f 7 8 5 +f 9 3 10 +f 11 3 12 +f 12 13 14 +f 1 3 11 +f 1 11 7 +f 1 7 5 +f 12 3 9 +f 5 8 13 +f 5 13 9 +f 13 12 9 +f 15 5 9 +f 3 4 10 +f 10 4 16 +f 17 2 6 +f 18 19 6 +f 20 4 17 +f 21 22 6 +f 19 17 6 +f 4 2 17 +f 23 4 20 +f 22 4 23 +f 22 18 6 +f 22 23 18 +f 22 16 4 +f 24 18 23 +f 6 5 15 +f 21 6 15 +f 21 15 22 +f 22 15 9 +f 10 16 22 +f 9 10 22 +f 11 20 17 +f 7 11 17 +f 12 23 20 +f 11 12 20 +f 14 24 12 +f 12 24 23 +f 24 14 13 +f 18 24 13 +f 18 13 19 +f 19 13 8 +f 19 8 17 +f 17 8 7 diff --git a/tests/data/cube_with_concave_hole_enlarged.obj b/tests/data/cube_with_concave_hole_enlarged.obj new file mode 100644 index 000000000..499f73765 --- /dev/null +++ b/tests/data/cube_with_concave_hole_enlarged.obj @@ -0,0 +1,112 @@ +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object cube_with_concave_hole_enlarged.obj +# +# Vertices: 24 +# Faces: 48 +# +#### +vn 1.107149 0.000000 0.000000 +v 76.634163 17.865837 0.000000 +vn 0.000000 0.000000 0.321750 +v 68.557083 25.942917 16.154167 +vn 0.000000 0.000000 2.356194 +v 52.402920 25.942917 16.154167 +vn 0.000000 0.000000 0.321751 +v 76.634163 50.174164 16.154167 +vn 0.000000 0.000000 2.034444 +v 68.557083 42.097084 16.154167 +vn 0.000000 0.000000 0.463648 +v 76.634163 17.865837 16.154167 +vn 0.000000 0.000000 0.785398 +v 52.402920 34.020000 16.154167 +vn 0.000000 0.000000 0.321750 +v 44.325836 17.865837 16.154167 +vn 0.000000 0.982794 0.000000 +v 52.402920 50.174164 16.154167 +vn 0.000000 1.570796 0.000000 +v 52.402920 50.174164 0.000000 +vn 0.000000 0.000000 -0.463648 +v 52.402920 34.020000 0.000000 +vn 0.000000 0.000000 -0.321751 +v 44.325836 17.865837 0.000000 +vn 0.000000 0.000000 -0.463648 +v 76.634163 50.174164 0.000000 +vn 0.000000 0.000000 -1.570796 +v 44.325836 42.097084 0.000000 +vn -0.588003 0.000000 0.000000 +v 44.325836 42.097084 16.154167 +vn 0.000000 1.570796 0.000000 +v 52.402920 42.097084 16.154167 +vn -1.107149 0.000000 0.000000 +v 52.402920 42.097084 0.000000 +vn 0.000000 -0.463648 0.000000 +v 60.480000 42.097084 16.154167 +vn 0.000000 -1.107149 0.000000 +v 68.557083 42.097084 0.000000 +vn 1.570796 0.000000 0.000000 +v 60.480000 42.097084 0.000000 +vn 0.000000 -0.463647 0.000000 +v 60.480000 34.020000 0.000000 +vn 0.000000 -1.570796 0.000000 +v 60.480000 34.020000 16.154167 +vn 1.107149 0.000000 0.000000 +v 52.402920 25.942917 0.000000 +vn 0.000000 0.785398 0.000000 +v 68.557083 25.942917 0.000000 +# 24 vertices, 0 vertices normals + +f 6//6 1//1 4//4 +f 4//4 1//1 13//13 +f 1//1 6//6 8//8 +f 12//12 1//1 8//8 +f 2//2 3//3 8//8 +f 16//16 4//4 9//9 +f 5//5 4//4 18//18 +f 18//18 7//7 22//22 +f 6//6 4//4 5//5 +f 6//6 5//5 2//2 +f 6//6 2//2 8//8 +f 18//18 4//4 16//16 +f 8//8 3//3 7//7 +f 8//8 7//7 16//16 +f 7//7 18//18 16//16 +f 15//15 8//8 16//16 +f 4//4 13//13 9//9 +f 9//9 13//13 10//10 +f 24//24 1//1 12//12 +f 11//11 23//23 12//12 +f 19//19 13//13 24//24 +f 14//14 17//17 12//12 +f 23//23 24//24 12//12 +f 13//13 1//1 24//24 +f 20//20 13//13 19//19 +f 17//17 13//13 20//20 +f 17//17 11//11 12//12 +f 17//17 20//20 11//11 +f 17//17 10//10 13//13 +f 21//21 11//11 20//20 +f 12//12 8//8 15//15 +f 14//14 12//12 15//15 +f 14//14 15//15 17//17 +f 17//17 15//15 16//16 +f 9//9 10//10 17//17 +f 16//16 9//9 17//17 +f 5//5 19//19 24//24 +f 2//2 5//5 24//24 +f 18//18 20//20 19//19 +f 5//5 18//18 19//19 +f 22//22 21//21 18//18 +f 18//18 21//21 20//20 +f 21//21 22//22 7//7 +f 11//11 21//21 7//7 +f 11//11 7//7 23//23 +f 23//23 7//7 3//3 +f 23//23 3//3 24//24 +f 24//24 3//3 2//2 +# 48 faces, 0 coords texture + +# End of File \ No newline at end of file diff --git a/tests/data/cube_with_concave_hole_enlarged_standing.obj b/tests/data/cube_with_concave_hole_enlarged_standing.obj new file mode 100644 index 000000000..8d5a55ba7 --- /dev/null +++ b/tests/data/cube_with_concave_hole_enlarged_standing.obj @@ -0,0 +1,112 @@ +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object cube_with_concave_hole_enlarged.obj +# +# Vertices: 24 +# Faces: 48 +# +#### +vn 0.000000 0.000000 -1.570796 +v 68.557083 17.865835 0.000000 +vn 0.000000 0.000000 -1.107149 +v 52.402916 17.865835 0.000000 +vn 0.000000 -0.463648 0.000000 +v 68.557083 17.865835 32.308331 +vn 0.000000 -1.570796 0.000000 +v 52.402916 17.865835 32.308331 +vn 2.356194 0.000000 0.000000 +v 68.557083 25.942917 24.231247 +vn 1.570796 0.000000 0.000000 +v 68.557083 50.174164 24.231247 +vn 2.034444 0.000000 0.000000 +v 68.557083 42.097084 8.077083 +vn 2.677945 0.000000 0.000000 +v 68.557083 34.020000 24.231247 +vn 0.000000 1.570796 0.000000 +v 68.557083 50.174164 0.000000 +vn 0.000000 1.570796 0.000000 +v 52.402916 50.174164 24.231247 +vn -0.321750 0.000000 0.000000 +v 52.402916 25.942917 8.077083 +vn -1.570796 0.000000 0.000000 +v 52.402916 42.097084 32.308331 +vn -0.321751 0.000000 0.000000 +v 52.402916 50.174164 0.000000 +vn -2.356194 0.000000 0.000000 +v 52.402916 42.097084 8.077083 +vn -0.785398 0.000000 0.000000 +v 52.402916 42.097084 16.154165 +vn 0.000000 0.000000 0.588003 +v 68.557083 42.097084 32.308331 +vn 0.000000 1.107149 0.000000 +v 52.402916 42.097084 24.231247 +vn 0.000000 1.570796 0.000000 +v 68.557083 42.097084 24.231247 +vn 0.000000 0.000000 1.570796 +v 68.557083 25.942917 8.077083 +vn 0.000000 -0.463647 0.000000 +v 68.557083 42.097084 16.154165 +vn 0.000000 0.000000 -1.570796 +v 68.557083 34.020000 16.154165 +vn 0.000000 0.000000 -0.463648 +v 52.402916 34.020000 16.154165 +vn 0.000000 0.000000 -1.570796 +v 52.402916 34.020000 24.231247 +vn 0.000000 0.000000 -0.463648 +v 52.402916 25.942917 24.231247 +# 24 vertices, 0 vertices normals + +f 1//1 2//2 9//9 +f 9//9 2//2 13//13 +f 2//2 1//1 3//3 +f 4//4 2//2 3//3 +f 19//19 5//5 3//3 +f 18//18 9//9 6//6 +f 7//7 9//9 20//20 +f 20//20 8//8 21//21 +f 1//1 9//9 7//7 +f 1//1 7//7 19//19 +f 1//1 19//19 3//3 +f 20//20 9//9 18//18 +f 3//3 5//5 8//8 +f 3//3 8//8 18//18 +f 8//8 20//20 18//18 +f 16//16 3//3 18//18 +f 9//9 13//13 6//6 +f 6//6 13//13 10//10 +f 11//11 2//2 4//4 +f 23//23 24//24 4//4 +f 14//14 13//13 11//11 +f 12//12 17//17 4//4 +f 24//24 11//11 4//4 +f 13//13 2//2 11//11 +f 15//15 13//13 14//14 +f 17//17 13//13 15//15 +f 17//17 23//23 4//4 +f 17//17 15//15 23//23 +f 17//17 10//10 13//13 +f 22//22 23//23 15//15 +f 4//4 3//3 16//16 +f 12//12 4//4 16//16 +f 12//12 16//16 17//17 +f 17//17 16//16 18//18 +f 6//6 10//10 17//17 +f 18//18 6//6 17//17 +f 7//7 14//14 11//11 +f 19//19 7//7 11//11 +f 20//20 15//15 14//14 +f 7//7 20//20 14//14 +f 21//21 22//22 20//20 +f 20//20 22//22 15//15 +f 22//22 21//21 8//8 +f 23//23 22//22 8//8 +f 23//23 8//8 24//24 +f 24//24 8//8 5//5 +f 24//24 5//5 11//11 +f 11//11 5//5 19//19 +# 48 faces, 0 coords texture + +# End of File \ No newline at end of file diff --git a/tests/data/cube_with_hole.obj b/tests/data/cube_with_hole.obj new file mode 100644 index 000000000..37e953b4e --- /dev/null +++ b/tests/data/cube_with_hole.obj @@ -0,0 +1,48 @@ +v 0.000000 0.000000 0.000000 +v 0.000000 0.000000 10.000000 +v 0.000000 20.000000 0.000000 +v 0.000000 20.000000 10.000000 +v 20.000000 0.000000 0.000000 +v 20.000000 0.000000 10.000000 +v 5.000000 5.000000 0.000000 +v 15.000000 5.000000 0.000000 +v 5.000000 15.000000 0.000000 +v 20.000000 20.000000 0.000000 +v 15.000000 15.000000 0.000000 +v 20.000000 20.000000 10.000000 +v 5.000000 5.000000 10.000000 +v 5.000000 15.000000 10.000000 +v 15.000000 5.000000 10.000000 +v 15.000000 15.000000 10.000000 +f 1 2 3 +f 3 2 4 +f 2 1 5 +f 6 2 5 +f 7 8 5 +f 9 3 10 +f 1 3 9 +f 11 9 10 +f 1 9 7 +f 1 7 5 +f 5 8 10 +f 8 11 10 +f 3 4 10 +f 10 4 12 +f 13 2 6 +f 14 4 13 +f 15 13 6 +f 4 2 13 +f 12 4 14 +f 12 16 6 +f 12 14 16 +f 16 15 6 +f 6 5 10 +f 12 6 10 +f 9 14 13 +f 7 9 13 +f 11 16 14 +f 9 11 14 +f 16 11 15 +f 15 11 8 +f 15 8 13 +f 13 8 7 diff --git a/tests/data/frog_legs.obj b/tests/data/frog_legs.obj new file mode 100644 index 000000000..855bcf50b --- /dev/null +++ b/tests/data/frog_legs.obj @@ -0,0 +1,36702 @@ +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object frog_legs.obj +# +# Vertices: 9176 +# Faces: 18334 +# +#### +vn 0.485197 0.332700 0.812467 +v 58.935478 51.481197 1.311300 +vn 0.432063 0.354321 0.410557 +v 59.540966 51.261688 1.011300 +vn 0.979045 0.360633 0.847849 +v 59.586910 51.569729 0.771300 +vn 0.549465 0.368032 0.751141 +v 59.451126 51.538685 0.941300 +vn 0.523950 0.350942 0.716262 +v 59.282715 51.341106 1.161301 +vn 0.902306 0.282613 1.257782 +v 59.513386 51.929996 0.751300 +vn 0.719625 0.447046 1.137659 +v 59.138813 51.967361 0.991301 +vn 0.401476 0.171495 0.530973 +v 59.352428 51.954327 0.861300 +vn 0.905183 0.517005 1.226182 +v 59.381031 51.732559 0.911301 +vn 0.544124 0.296652 0.645768 +v 59.514091 51.749722 0.791300 +vn 0.569421 0.487296 1.012124 +v 59.209194 51.701378 1.051300 +vn 0.460243 -0.136483 0.813726 +v 59.246273 49.316296 1.411301 +vn 0.514518 -0.279743 0.790120 +v 59.496078 49.267349 1.231300 +vn 0.447713 -0.386298 0.702002 +v 59.696095 49.184929 1.081300 +vn 0.758990 -0.461661 0.992746 +v 59.472031 49.034279 1.141300 +vn 0.373231 -0.314469 0.861246 +v 59.945198 49.316257 1.021300 +vn 0.437279 -0.427908 0.816794 +v 59.635990 48.951717 0.991301 +vn 0.321964 -0.071698 0.705469 +v 59.849216 49.745777 1.191300 +vn 0.469018 -0.261502 0.912454 +v 59.745041 49.434734 1.151300 +vn 0.426869 -0.251234 0.841878 +v 59.525425 49.564232 1.301300 +vn 0.640680 0.490133 0.794193 +v 59.669010 51.142925 0.981300 +vn 0.538050 0.390345 0.719675 +v 59.461403 51.039494 1.191300 +vn 0.983070 0.862601 1.499339 +v 59.583164 51.109306 1.071301 +vn 0.606937 0.517432 1.113525 +v 59.586872 50.870800 1.201301 +vn 0.419915 0.357990 0.770402 +v 59.689037 50.987686 1.091300 +vn 0.554531 0.794208 1.019879 +v 59.766300 51.087837 0.971300 +vn 0.307131 0.140556 0.698116 +v 59.451515 50.731594 1.311300 +vn 0.352691 0.233068 0.627074 +v 59.098133 51.024204 1.401300 +vn 0.239147 0.121794 0.681681 +v 59.852112 50.422527 1.221300 +vn 0.533159 0.284774 1.284221 +v 59.640797 50.557602 1.271300 +vn 0.735876 0.276611 1.559245 +v 59.324596 50.561913 1.401300 +vn 0.266451 0.283474 0.737955 +v 59.969883 50.802963 1.081300 +vn 0.468531 0.616906 1.373261 +v 59.828098 50.888386 1.091300 +vn 0.201469 0.265270 0.590503 +v 59.739956 50.732723 1.191300 +vn 0.078096 0.412682 0.622072 +v 57.727119 52.669075 1.111300 +vn 0.181666 0.959972 1.447051 +v 57.912548 52.769650 1.021300 +vn 0.060442 0.698492 1.027721 +v 57.504642 52.820747 1.021300 +vn -0.084016 0.574136 0.863161 +v 57.111000 52.062038 1.591300 +vn -0.007792 0.437254 0.502991 +v 57.420067 52.462635 1.331300 +vn -0.036107 0.672886 0.793505 +v 56.931889 52.471817 1.301300 +vn 0.288488 0.507182 0.821367 +v 57.759712 52.136688 1.481300 +vn 0.318867 0.560590 0.907860 +v 58.295242 52.074997 1.331300 +vn 0.292190 0.513690 0.831906 +v 58.038300 52.528847 1.141300 +vn 0.226866 0.691430 0.878730 +v 57.727962 52.452747 1.281301 +vn -0.794308 0.610667 1.225230 +v 55.636868 51.709572 1.401300 +vn -0.296393 0.337774 0.733219 +v 55.977680 51.794113 1.541300 +vn -0.247178 0.510207 0.981466 +v 55.970688 52.162964 1.361300 +vn -0.238998 0.404953 0.800753 +v 56.218342 51.955921 1.531301 +vn -0.017820 0.442347 0.745372 +v 56.589348 52.121010 1.501300 +vn -0.141986 1.374059 1.073467 +v 57.106762 53.143696 0.601300 +vn -0.053071 0.513592 0.401238 +v 57.121208 52.996754 0.791300 +vn 0.321021 0.416102 0.498569 +v 56.710297 53.106087 0.831300 +vn 0.062298 0.845884 0.685413 +v 57.194164 52.780704 1.051300 +vn 0.057979 0.487577 0.424399 +v 56.855507 52.854263 0.991301 +vn 0.850695 -0.532835 1.048320 +v 59.306198 48.886635 1.191300 +vn -0.304258 0.279681 0.686608 +v 55.789810 51.607552 1.551300 +vn -0.353579 0.325019 0.768760 +v 55.993958 51.178455 1.821301 +vn -0.240780 0.266996 0.625786 +v 55.978951 51.469616 1.691300 +vn -1.098282 0.265191 1.116813 +v 55.520508 50.968586 1.551300 +vn -0.630151 0.239297 0.706413 +v 55.621399 51.409973 1.511300 +vn -0.444854 0.250776 0.634262 +v 55.804958 51.280334 1.691300 +vn -0.503573 0.238050 0.716087 +v 55.875481 50.978298 1.841300 +vn -0.450826 0.118779 0.606656 +v 55.650570 51.043983 1.661301 +vn -0.426151 0.078907 0.449786 +v 55.582447 50.733078 1.651300 +vn -0.269929 0.262471 0.691602 +v 56.069775 50.940231 1.941300 +vn -0.109479 0.495393 0.959156 +v 56.787914 51.700214 1.741301 +vn 0.059674 0.671763 1.499567 +v 57.448631 51.541939 1.821301 +vn 0.020673 0.349970 0.739871 +v 57.497437 51.827801 1.691300 +vn 0.038239 0.647331 1.368519 +v 57.440792 52.127121 1.551300 +vn 0.005933 0.571988 1.369911 +v 57.147724 51.182976 1.981300 +vn 0.002876 0.277261 0.664039 +v 57.179508 51.565845 1.821301 +vn 0.116870 0.295127 0.843913 +v 57.622585 51.032291 1.981300 +vn 0.085113 0.245771 0.565494 +v 57.712460 51.454220 1.821301 +vn 0.315493 0.529590 1.256470 +v 57.755543 51.784435 1.671300 +vn -0.104167 0.449039 0.978286 +v 56.356384 51.410076 1.821301 +vn -0.150664 0.416711 0.868033 +v 56.452259 51.715538 1.691300 +vn -0.224365 0.709949 1.527827 +v 56.575291 51.460857 1.821301 +vn -0.182900 0.505871 1.027416 +v 56.180840 51.617405 1.691300 +vn 0.307171 0.323777 1.194568 +v 58.109173 50.720791 1.961300 +vn 0.047613 0.032311 0.161954 +v 57.762638 50.680603 2.061300 +vn 0.028406 0.019277 0.096616 +v 57.960014 50.318943 2.075428 +vn 0.370412 0.068474 1.096562 +v 58.027458 50.340496 2.051300 +vn 0.485589 0.121682 1.133976 +v 58.295311 50.641087 1.911301 +vn 0.166343 0.060887 0.511239 +v 58.294853 50.050323 1.981300 +vn 0.559399 0.204758 1.719258 +v 58.421486 50.292118 1.911301 +vn 0.240112 0.087889 0.737961 +v 58.276703 50.435772 1.941300 +vn 0.222579 0.045166 0.511097 +v 58.227299 49.595203 2.001300 +vn 0.307951 0.062490 0.707134 +v 58.100967 49.378933 2.075428 +vn 0.311275 0.012363 0.484896 +v 58.417423 49.204880 1.921300 +vn 0.455644 0.072275 0.510714 +v 58.604832 48.800682 1.811300 +vn 0.590565 0.166410 0.949805 +v 58.189510 49.328796 2.041300 +vn 1.432145 0.403576 2.303515 +v 58.179085 49.170998 2.075428 +vn 0.654966 0.166475 1.037971 +v 58.396378 48.913578 1.981300 +vn 0.968715 0.246176 1.535138 +v 58.206577 49.073437 2.075428 +vn 1.655946 0.612708 1.746134 +v 58.347179 48.649448 2.075428 +vn 0.797926 0.245131 1.215936 +v 58.270008 48.858017 2.075428 +vn -0.282007 0.291501 0.817018 +v 56.152340 51.104191 1.911301 +vn -0.434025 0.264198 1.061278 +v 56.133327 50.505180 2.075428 +vn -0.350470 0.499401 1.732363 +v 56.356064 50.783260 2.071301 +vn -0.316162 0.450532 1.562824 +v 56.335567 50.754559 2.075428 +vn -0.468224 0.409255 1.447122 +v 56.142448 50.796295 2.011300 +vn -0.226145 0.197664 0.698939 +v 56.254349 50.697563 2.075428 +vn -0.476152 0.085146 0.565263 +v 55.755554 50.439766 1.841300 +vn -0.241086 0.079532 0.500114 +v 56.002785 50.340889 2.031301 +vn -0.776621 0.194455 1.167853 +v 55.784901 50.736649 1.821301 +vn -0.732745 0.350688 1.156015 +v 55.885471 50.551216 1.941300 +vn -0.523815 0.250695 0.826396 +v 56.012531 50.684845 1.981300 +vn -0.333716 -0.025308 0.708006 +v 56.050945 50.004692 2.075428 +vn -0.423222 0.121376 0.898881 +v 56.071663 50.254261 2.075428 +vn -0.246317 0.020448 0.424611 +v 56.004337 49.944279 2.051300 +vn 0.391161 0.333064 1.143665 +v 58.152538 50.978897 1.871301 +vn 0.556689 0.481222 1.392684 +v 58.460155 51.041119 1.731300 +vn 0.266149 0.236427 0.760227 +v 57.933064 51.072338 1.911301 +vn 0.460874 0.108567 0.953872 +v 58.484310 50.539207 1.841300 +vn 0.390946 0.092095 0.809142 +v 58.638382 50.148743 1.811300 +vn 0.291295 0.130833 0.596069 +v 58.338818 50.863140 1.841300 +vn 0.569926 0.362010 1.293648 +v 58.829288 50.976002 1.571301 +vn 0.281733 0.178953 0.639492 +v 58.625847 51.224819 1.591300 +vn 0.338885 0.146530 0.695723 +v 58.638420 50.847672 1.691300 +vn 0.352820 0.415862 0.799337 +v 58.077744 51.663666 1.641300 +vn 0.616839 0.619727 1.509812 +v 57.995747 51.355480 1.801300 +vn 0.282509 0.283832 0.691487 +v 58.234821 51.214970 1.761300 +vn 0.528844 0.575325 1.458973 +v 58.367035 51.448463 1.621301 +vn 0.345858 0.308769 0.681907 +v 58.515987 51.657059 1.451301 +vn 0.568331 0.255258 0.959121 +v 58.966057 50.754654 1.551300 +vn 0.453682 0.160049 0.819868 +v 59.144745 50.453041 1.511300 +vn 0.720560 0.262690 1.238118 +v 59.188110 50.711147 1.431300 +vn 0.469936 0.086780 0.904489 +v 58.806229 50.490543 1.691300 +vn 0.472892 -0.122374 0.877543 +v 59.269756 49.693584 1.461300 +vn 0.474850 -0.045430 0.837602 +v 58.944836 49.800480 1.651300 +vn 0.468493 0.025246 1.319899 +v 59.753517 50.103188 1.271300 +vn 0.284056 0.111978 0.575266 +v 59.486263 50.357304 1.361300 +vn 0.595967 0.111572 1.081975 +v 58.957157 50.194366 1.641300 +vn 0.435120 -0.059703 0.936641 +v 59.235008 50.067871 1.501300 +vn 0.452956 -0.062150 0.975035 +v 59.537891 49.922062 1.351300 +vn -0.309137 0.387416 1.025260 +v 56.304718 51.146389 1.941300 +vn -0.127808 0.328796 0.985662 +v 56.458084 50.936203 2.031301 +vn -0.153207 0.394139 1.181546 +v 56.244614 50.913181 2.011300 +vn -0.106481 0.260773 0.709252 +v 56.518047 51.205471 1.941300 +vn -0.076391 0.193972 0.550205 +v 56.674438 50.896240 2.075428 +vn -0.113880 0.269712 0.791193 +v 56.608707 50.870354 2.075428 +vn -0.134895 0.499843 1.260184 +v 56.618481 51.056095 2.011300 +vn -0.096503 0.426614 1.147650 +v 56.718250 50.906151 2.075428 +vn -0.197970 0.452938 0.989688 +v 56.151493 51.320522 1.821301 +vn 0.469148 -0.017082 0.935759 +v 58.559952 49.638107 1.841300 +vn 0.549688 -0.342351 0.720710 +v 59.288895 49.055752 1.291300 +vn 0.549213 -0.209147 0.728804 +v 59.089302 49.030006 1.431300 +vn 0.797368 -0.515581 0.748084 +v 59.137222 48.833275 1.301300 +vn 0.584412 -0.177926 0.901047 +v 59.048691 49.484707 1.551300 +vn 0.495519 -0.155307 0.886156 +v 58.980431 49.209858 1.541300 +vn 0.984375 -0.026218 1.217882 +v 58.609283 49.080822 1.801300 +vn 0.491332 -0.099864 0.773951 +v 58.824345 49.406166 1.681300 +vn 0.786589 -0.159876 1.239042 +v 58.639053 49.269539 1.781301 +vn 0.507191 -0.097830 0.702643 +v 58.781403 49.039894 1.661301 +vn 1.228641 0.017541 0.785072 +v 58.642441 48.404213 1.761300 +vn 1.247980 -0.467793 0.867617 +v 58.922020 48.543987 1.371301 +vn 0.343982 -0.135635 0.474707 +v 58.937771 48.771477 1.471300 +vn 1.051349 -0.414556 1.450900 +v 58.947941 49.007263 1.531301 +vn 0.929330 -0.097576 0.938345 +v 58.793549 48.770912 1.621301 +vn 0.140647 0.413862 1.486337 +v 57.329895 50.873756 2.075428 +vn 0.109379 0.278460 0.799567 +v 57.399689 51.292130 1.921300 +vn 0.115124 0.293087 0.841565 +v 57.334709 50.886944 2.071301 +vn 0.204894 0.436966 1.361066 +v 57.545887 50.787922 2.071301 +vn 0.321996 0.686682 2.292557 +v 57.342793 50.869373 2.075428 +vn 0.007418 0.015820 0.052816 +v 57.543072 50.775459 2.075428 +vn 0.010456 0.015964 0.055333 +v 57.720055 50.659538 2.075428 +vn -0.003935 0.277429 0.778827 +v 56.811928 51.234360 1.961300 +vn 0.015857 0.089185 0.303442 +v 57.288937 50.881039 2.075428 +vn 0.679997 0.133849 0.492883 +v 58.588200 48.090595 1.921300 +vn 0.503851 0.241984 0.455612 +v 58.400368 48.602959 2.041300 +vn -0.772138 2.360331 -0.080824 +v 60.667152 58.790272 0.000000 +vn -0.491049 1.511654 -0.055996 +v 60.778114 58.826317 0.000000 +vn -0.021199 0.290807 0.003955 +v 61.180870 58.859238 0.091300 +vn -0.139290 1.936853 0.569996 +v 60.504967 58.645805 0.581300 +vn -0.055940 1.525424 0.744653 +v 60.765228 58.760536 0.401300 +vn -0.150810 0.720723 0.154719 +v 60.778824 58.829929 0.091300 +vn 0.481831 1.147760 1.012609 +v 61.865318 58.307213 0.731300 +vn 0.470032 1.225131 0.997990 +v 61.556007 58.677654 0.441300 +vn 0.441573 1.284670 0.573811 +v 62.060921 58.643574 0.091300 +vn 0.315144 1.234073 0.814356 +v 61.059814 58.609146 0.691300 +vn 0.106694 0.601636 0.444925 +v 61.147957 58.764809 0.421300 +vn 0.029469 0.200559 0.003584 +v 61.622112 58.794403 0.091300 +vn 0.201676 1.372539 0.024528 +v 61.182861 58.860577 0.000000 +vn 0.130356 1.531901 0.135440 +v 61.625298 58.802204 0.000000 +vn -0.755601 0.390777 0.301340 +v 55.275993 48.249580 2.031301 +vn -1.762200 0.743156 0.438954 +v 55.145622 47.914375 2.075428 +vn -0.774064 0.354234 0.184449 +v 55.102707 47.880024 1.961300 +vn -0.975557 0.446442 0.232462 +v 55.100323 47.815388 2.075428 +vn -0.650694 0.181702 0.028913 +v 54.926987 47.424477 1.841300 +vn -1.425687 0.411771 -0.103375 +v 54.812481 47.028763 2.075428 +vn -1.067829 0.393164 0.065913 +v 54.815678 47.037445 2.075428 +vn -1.472752 0.367306 0.033629 +v 54.883198 47.274536 1.561300 +vn -0.616167 0.153673 0.014070 +v 54.795902 46.902542 1.801300 +vn -1.463144 0.373755 -0.081999 +v 54.814796 47.035744 2.071301 +vn -0.833891 -0.042878 -0.392348 +v 54.903221 47.119297 1.261300 +vn -0.873459 0.044516 -0.391954 +v 55.084099 47.674709 0.921300 +vn -1.514945 0.238450 -0.416417 +v 54.954037 47.599316 1.351300 +vn -0.440338 -0.172535 -0.453554 +v 55.415443 47.343185 0.341300 +vn -0.529948 -0.227864 -0.505019 +v 55.171181 46.684902 0.861300 +vn -0.657467 -0.282694 -0.626540 +v 55.523151 46.752846 0.461300 +vn -1.327758 -0.256606 -0.880577 +v 55.286373 47.015404 0.591300 +vn -0.668732 -0.058413 -0.466056 +v 55.133007 47.225590 0.761300 +vn -1.032868 -0.542912 -0.996901 +v 55.308193 45.692520 1.221300 +vn -0.755140 -0.220788 -0.495238 +v 54.916637 46.525814 1.291300 +vn -0.464072 -0.135686 -0.304349 +v 55.030067 45.891125 1.401300 +vn -1.137665 -0.298143 -0.783759 +v 55.111641 46.307472 1.091300 +vn -1.460566 0.163654 -0.246750 +v 54.821503 46.739002 1.541300 +vn -1.481448 -0.069086 -0.704191 +v 55.023392 46.886791 1.031301 +vn -0.966027 -0.032620 -0.348870 +v 54.734207 46.367008 1.811300 +vn -0.104273 0.045856 1.657384 +v 61.254463 57.065056 1.231300 +vn -0.175863 -0.109875 1.469592 +v 60.733513 56.943756 1.201301 +vn -0.790721 0.219055 1.366349 +v 59.943195 57.617401 0.831300 +vn -0.806163 0.056206 1.305039 +v 60.116726 57.215916 1.001300 +vn -0.417539 0.029111 0.675924 +v 59.844738 57.262001 0.831300 +vn -0.337285 0.016220 0.802666 +v 60.062485 56.902298 0.981300 +vn -0.254091 0.088561 0.722029 +v 60.405590 57.108883 1.121301 +vn -0.521821 0.181877 1.482817 +v 60.520782 57.439381 1.121301 +vn -0.639203 -0.051477 1.442104 +v 60.295837 56.806137 1.081300 +vn -0.455012 -0.042925 0.979586 +v 59.905937 56.507843 0.891300 +vn -0.764899 0.028704 1.204674 +v 59.791061 56.804161 0.811300 +vn -0.206069 -0.154482 1.474740 +v 60.951824 56.439831 1.191300 +vn -0.138744 -0.095972 0.812645 +v 60.598862 56.624271 1.161301 +vn -0.183072 -0.126635 1.072282 +v 60.392666 56.160286 1.071301 +vn -0.399327 -0.066483 1.257629 +v 60.205399 56.528435 1.031301 +vn -1.071137 0.273522 1.026773 +v 59.642147 57.294491 0.611300 +vn -0.908454 0.205901 0.047499 +v 59.510250 57.687817 0.061300 +vn -1.637643 0.371172 0.085625 +v 59.505695 57.681862 0.000000 +vn -1.364819 0.306138 0.076381 +v 59.428005 57.336449 0.000000 +vn -0.591060 0.029915 0.031789 +v 59.433971 57.335278 0.111300 +vn -1.002109 0.067609 0.270980 +v 59.503361 57.321682 0.371301 +vn -0.601825 0.993439 0.550185 +v 60.222527 58.528210 0.441300 +vn -0.722319 1.269490 0.157806 +v 60.432575 58.717632 0.121301 +vn -0.347548 0.610823 0.075929 +v 60.139259 58.544525 0.171300 +vn -0.404469 0.606411 0.161381 +v 60.457611 58.698315 0.391300 +vn -1.786638 1.884005 0.185565 +v 59.922249 58.355602 0.000000 +vn -0.268281 0.453492 -0.003588 +v 60.253544 58.610760 0.000000 +vn -0.707926 1.184713 -0.014221 +v 60.111790 58.526054 0.000000 +vn -0.183825 0.076969 -0.002448 +v 59.628166 57.967487 0.000000 +vn -0.608824 0.274365 0.156516 +v 59.719734 58.021461 0.291300 +vn -1.520784 0.715272 0.345517 +v 59.647064 58.007668 0.000000 +vn -1.471720 0.956917 0.214254 +v 59.849766 58.286865 0.000000 +vn -0.565040 0.274285 0.560066 +v 60.066689 57.953480 0.801300 +vn -1.208250 0.869682 0.583626 +v 59.898876 58.310608 0.231300 +vn -0.553871 0.365146 0.309983 +v 60.026501 58.300014 0.511300 +vn -1.243251 0.628200 0.772537 +v 59.582359 57.688099 0.341300 +vn -0.663528 0.335273 0.412306 +v 59.735020 57.658188 0.611300 +vn -1.316665 0.568050 0.707759 +v 59.858513 57.994267 0.571301 +vn 0.208705 0.511950 0.737159 +v 61.454124 58.488655 0.721300 +vn 0.150776 0.369850 0.532548 +v 61.727665 58.045963 0.951301 +vn 0.066043 0.637445 1.351342 +v 61.319191 58.241283 0.931300 +vn 0.034720 0.335116 0.710424 +v 60.947060 58.364635 0.891300 +vn 0.100425 0.264443 0.646985 +v 61.173386 57.938400 1.081300 +vn -0.091445 0.298453 0.390615 +v 60.721298 58.646648 0.631300 +vn -0.100829 0.329081 0.430700 +v 60.383488 58.503880 0.661301 +vn -0.528497 0.696390 1.134073 +v 60.218075 58.248066 0.741301 +vn -0.107528 0.335987 0.663392 +v 60.492924 58.179806 0.911301 +vn -0.092408 1.038676 1.206854 +v 60.630577 58.441051 0.801300 +vn -0.397081 0.210769 0.726610 +v 60.218040 57.549137 1.001300 +vn -0.181109 0.250789 0.750577 +v 60.663738 57.764446 1.091300 +vn -0.335310 0.464317 1.389641 +v 60.812267 58.081207 1.021300 +vn -0.395198 0.451103 1.415981 +v 60.352695 57.868622 0.971300 +vn -0.007182 0.090112 0.728803 +v 60.870884 57.277115 1.201301 +vn -0.127130 0.456618 1.463871 +v 61.022133 57.607758 1.171300 +vn -1.236009 0.540402 -0.309445 +v 59.175888 55.716110 0.000000 +vn -0.639183 0.180965 -0.132215 +v 59.300762 56.017696 0.000000 +vn -0.491501 0.028376 0.450536 +v 59.676151 56.401550 0.711300 +vn -0.944123 0.010900 0.514302 +v 59.585468 56.894882 0.581300 +vn -1.278201 0.014756 0.696287 +v 59.471581 56.938812 0.371301 +vn -1.281096 0.068156 0.621810 +v 59.545387 56.506432 0.541300 +vn -1.689937 0.220467 0.812784 +v 59.413315 56.236885 0.351300 +vn -0.794838 0.114995 0.409010 +v 59.456394 56.567101 0.351300 +vn -1.026054 0.197126 0.783092 +v 59.588715 56.065613 0.681300 +vn -0.524224 0.065651 0.443736 +v 59.485706 56.165054 0.521300 +vn -1.040818 0.019341 -0.004462 +v 59.409302 56.552910 0.000000 +vn -0.057813 0.001132 -0.000411 +v 59.416069 56.949688 0.141300 +vn -0.618903 0.092518 0.024213 +v 59.404541 56.508015 0.000000 +vn -1.517493 0.226846 0.059368 +v 59.366512 56.253620 0.000000 +vn -0.250177 0.026529 -0.005230 +v 59.409180 56.583557 0.161301 +vn -0.424674 0.190509 0.018614 +v 59.283958 55.981213 0.031301 +vn -1.619626 0.726563 0.070992 +v 59.168484 55.722824 0.041300 +vn -0.819797 0.367760 0.035933 +v 59.163044 55.695065 0.201301 +vn -1.296740 0.602285 0.331375 +v 59.289539 55.972916 0.191300 +vn -0.459550 0.151102 0.124788 +v 59.320156 55.945301 0.361300 +vn -0.486794 0.145290 0.024514 +v 59.374397 56.258919 0.181300 +vn -1.483434 0.509277 1.166971 +v 59.378670 55.876190 0.511300 +vn -1.505350 0.705850 0.657996 +v 59.196381 55.681328 0.361300 +vn -0.340377 -0.067381 0.973381 +v 60.026676 56.131119 0.941300 +vn -0.483974 0.067614 1.651336 +v 59.914200 55.814495 0.921300 +vn -0.100967 -0.034731 0.781784 +v 60.167152 55.671265 1.001300 +vn -0.156927 -0.122122 1.358695 +v 60.588234 55.797722 1.061300 +vn -0.763840 0.032264 0.956055 +v 59.832096 56.241299 0.841300 +vn -0.888132 0.527173 1.172402 +v 59.222404 55.409626 0.641300 +vn -0.235290 0.155533 0.365499 +v 59.361473 55.310326 0.791300 +vn -0.534745 0.353481 1.331333 +v 59.576534 55.635670 0.791300 +vn -0.251370 0.091521 0.527329 +v 59.737915 55.503170 0.891300 +vn -0.226982 0.082555 0.475688 +v 59.730640 55.944134 0.811300 +vn -0.695655 0.288126 0.916390 +v 59.456783 55.760006 0.661301 +vn -0.048630 0.041008 0.926229 +v 59.979103 54.821827 1.001300 +vn -0.201560 -0.061573 1.601275 +v 60.453442 55.514294 1.031301 +vn -1.244455 0.828680 -0.570265 +v 58.586834 54.813606 0.021300 +vn -1.261801 0.828858 0.716183 +v 58.338573 54.465942 0.291300 +vn -0.628445 0.412816 0.356698 +v 58.377914 54.335739 0.511300 +vn -1.444246 0.958277 0.843498 +v 58.537319 54.708015 0.361300 +vn -1.251567 0.773837 1.288210 +v 58.682247 54.528305 0.691300 +vn -0.481197 0.368022 -0.040416 +v 58.435017 54.627182 0.131300 +vn -1.477788 1.044678 0.303354 +v 58.669537 54.941509 0.201301 +vn -0.096999 0.072015 -0.026549 +v 58.462772 54.621746 0.011300 +vn -0.422043 0.312113 -0.110730 +v 58.323105 54.429272 0.000000 +vn -0.827236 0.430172 0.938434 +v 58.508823 54.194805 0.691300 +vn -0.092201 0.023901 0.967136 +v 59.691795 54.532257 1.011300 +vn -0.134533 0.001395 0.817649 +v 59.367439 54.494930 0.981300 +vn -0.245533 0.002546 1.492268 +v 59.485313 54.140385 1.001300 +vn -0.315354 0.109523 1.374714 +v 59.203194 54.649605 0.931300 +vn -0.329591 0.041591 1.568139 +v 59.018471 54.368755 0.911301 +vn -0.227842 -0.041345 1.458530 +v 59.119606 54.039104 0.941300 +vn -0.136447 -0.024760 0.873465 +v 59.242924 53.712311 0.951301 +vn -0.978479 0.593546 1.482375 +v 58.855957 54.789696 0.701301 +vn -0.260866 0.083549 0.472391 +v 58.504654 53.842548 0.751300 +vn -0.376190 0.120485 0.681227 +v 58.733170 54.273338 0.801300 +vn -0.295459 0.064832 0.710076 +v 58.809273 53.963005 0.861300 +vn -0.364186 0.023906 1.559147 +v 58.663319 53.696175 0.831300 +vn -0.706439 0.131240 0.227354 +v 52.815792 56.203720 0.000000 +vn -0.753633 0.140490 0.242091 +v 52.821114 56.232365 0.000000 +vn -0.675144 0.318710 0.294722 +v 52.955578 56.486172 0.271300 +vn -0.690864 0.326130 0.301584 +v 53.020699 56.855305 0.021300 +vn -2.130275 0.978442 0.167403 +v 53.010509 56.836765 0.000000 +vn -0.103564 0.047567 0.008138 +v 52.941647 56.686836 0.000000 +vn -0.955555 0.307520 1.247453 +v 53.089066 56.395164 0.491301 +vn -1.098250 0.445339 0.897984 +v 53.112549 56.772457 0.321301 +vn -1.252888 0.194176 0.808774 +v 52.890179 56.189148 0.241301 +vn -0.560320 0.609547 1.266235 +v 53.927799 56.814480 0.821301 +vn -0.529267 0.598433 1.263957 +v 53.481117 56.851559 0.611300 +vn -0.563524 0.410868 0.572510 +v 53.243458 56.631519 0.551300 +vn -0.517266 0.649150 0.130486 +v 53.592743 57.384514 0.091300 +vn -0.512642 0.423629 0.074799 +v 53.036114 56.877720 0.000000 +vn -1.136743 0.967030 0.192575 +v 53.269127 57.151627 0.000000 +vn -1.101333 0.894545 0.593616 +v 53.271954 57.144733 0.051300 +vn -0.520459 0.636547 0.358153 +v 53.350067 57.028553 0.371301 +vn -0.428567 0.812870 1.386879 +v 54.125980 57.200775 0.661301 +vn -0.290190 0.868875 1.231520 +v 54.578526 57.083286 0.831300 +vn -0.133582 0.497541 0.474603 +v 54.477810 57.304775 0.651300 +vn -0.444928 0.950410 1.007186 +v 53.668140 57.254452 0.401300 +vn -0.288742 0.616782 0.653628 +v 53.779873 57.052422 0.641300 +vn -0.282659 0.578625 0.599454 +v 54.036423 57.405666 0.421300 +vn 0.116949 0.561204 0.604350 +v 55.101906 57.290577 0.611300 +vn 0.177360 0.851102 0.916536 +v 54.816044 57.339378 0.621301 +vn 0.059811 1.570906 0.297033 +v 54.399853 57.642422 0.000000 +vn 0.009965 0.316811 0.057379 +v 54.812195 57.613945 0.081300 +vn 0.007968 0.774898 0.318011 +v 54.396130 57.623409 0.101300 +vn 0.015164 1.474663 0.605189 +v 54.421593 57.495926 0.411301 +vn 0.205530 0.819958 0.306083 +v 54.804321 57.500198 0.391300 +vn -0.622725 1.442532 0.265799 +v 53.588554 57.399529 0.000000 +vn -0.588737 1.379457 0.261212 +v 53.975281 57.565067 0.000000 +vn -0.276376 1.511500 0.277677 +v 53.977627 57.546886 0.101300 +vn -1.414384 0.044890 0.082642 +v 55.175564 51.230721 0.631300 +vn -0.564609 0.050680 0.168936 +v 55.232666 51.522163 0.971300 +vn -1.147914 0.391416 0.880474 +v 55.473469 51.647915 1.281301 +vn -1.266653 0.228689 0.622496 +v 55.244671 51.289234 1.081300 +vn -0.584158 0.140617 0.309497 +v 55.319221 51.375507 1.201301 +vn -1.106566 0.061669 -0.185426 +v 55.221046 50.947998 0.201301 +vn -1.998852 -0.095295 -0.315378 +v 55.175987 51.122555 0.551300 +vn -0.990774 0.019401 -0.186519 +v 55.195305 51.147594 0.421300 +vn 0.503523 0.027090 1.229764 +v 55.534496 55.894417 0.961300 +vn 0.313259 0.016854 0.765077 +v 55.299416 55.724312 1.061300 +vn -0.024134 -0.068335 0.843980 +v 54.874489 55.872414 1.121301 +vn -0.021622 -0.061223 0.756139 +v 54.757000 55.419872 1.081300 +vn 0.070299 -0.226889 1.674513 +v 54.902489 55.095940 1.031301 +vn 0.012662 -0.112342 0.632163 +v 55.201668 55.188637 1.031301 +vn 0.029867 -0.265001 1.491191 +v 55.022697 55.562363 1.101300 +vn 0.348132 -0.018344 0.778804 +v 55.621475 55.639591 0.931300 +vn -0.250280 -0.172239 0.716286 +v 54.315331 55.592876 1.021300 +vn -0.205314 -0.355474 1.372916 +v 54.482857 55.307858 1.011300 +vn -0.588723 -0.593358 1.147485 +v 53.623253 55.260113 0.621301 +vn -0.304855 -0.335538 0.528245 +v 53.809956 55.036190 0.601300 +vn -0.495985 -0.540480 1.136663 +v 53.995388 55.136765 0.761300 +vn -0.603660 -0.483604 1.417645 +v 54.063366 55.483719 0.921300 +vn -0.254202 -0.233729 0.559124 +v 54.233612 55.212582 0.901300 +vn -0.274187 -0.336691 0.415394 +v 54.077351 54.746017 0.571301 +vn -0.374482 -0.459851 0.567343 +v 54.363354 54.661160 0.691300 +vn -0.314618 -0.341449 0.631641 +v 54.137596 54.943172 0.731300 +vn -0.547486 -0.495794 0.581646 +v 53.432240 55.167839 0.431300 +vn -0.487839 -0.441779 0.518278 +v 53.483303 54.876820 0.231300 +vn -0.936270 -1.156913 1.101071 +v 53.694763 54.705688 0.231300 +vn -0.614076 -0.768453 0.993452 +v 53.627243 54.949493 0.421300 +vn -0.489730 -0.684245 0.186956 +v 53.663963 54.617260 0.000000 +vn -1.297199 -1.751929 0.519225 +v 53.585918 54.673119 0.000000 +vn -0.756970 -0.971229 0.575443 +v 53.405899 54.812725 0.021300 +vn -0.432957 -0.555505 0.329131 +v 53.633953 54.652756 0.051300 +vn -0.532019 -0.646804 0.703767 +v 54.144726 54.538269 0.431300 +vn -0.642109 -0.780647 0.849397 +v 54.255470 54.588627 0.561300 +vn -0.436552 -0.563659 0.464164 +v 53.813805 54.761627 0.391300 +vn -0.800341 -1.033369 0.850962 +v 53.911659 54.562317 0.241301 +vn 1.537901 0.246548 0.239527 +v 56.101078 56.495022 0.000000 +vn 1.748332 0.314778 0.233726 +v 56.121376 56.368408 0.000000 +vn 0.936355 0.168717 0.125357 +v 56.135147 56.201855 0.121301 +vn 0.857026 0.115210 0.253326 +v 56.163895 55.944031 0.141300 +vn 1.075842 0.108392 0.123714 +v 56.187447 55.871540 0.000000 +vn 0.497475 0.060604 0.066530 +v 56.151375 56.201920 0.000000 +vn 0.737422 0.129389 0.646155 +v 55.882442 55.574051 0.751300 +vn 0.526617 0.044772 0.487679 +v 55.755985 55.995129 0.811300 +vn 0.735682 0.186981 0.457421 +v 55.859879 56.378284 0.621301 +vn 1.197343 0.277673 0.768087 +v 55.933121 56.090122 0.611300 +vn 0.735996 0.170683 0.472136 +v 56.063179 56.165520 0.381300 +vn 0.882840 0.128537 0.736945 +v 56.076878 55.499928 0.531301 +vn 0.658352 0.095853 0.549555 +v 56.008938 55.851898 0.551300 +vn 1.537014 0.189299 0.439477 +v 56.105801 55.904972 0.361300 +vn 0.827099 1.404692 0.302183 +v 55.222401 57.528240 0.000000 +vn 0.311467 0.544389 0.106113 +v 55.211945 57.521210 0.061300 +vn 0.758736 1.325549 0.256695 +v 55.542728 57.333904 0.051300 +vn 0.710447 1.261949 0.522297 +v 55.156857 57.423920 0.371301 +vn 0.356022 0.632393 0.261736 +v 55.462601 57.255932 0.361300 +vn 0.985571 1.003640 0.282953 +v 55.810848 57.085312 0.000000 +vn 0.432255 0.440673 0.124507 +v 55.796104 57.082508 0.061300 +vn 0.838469 1.293356 1.307333 +v 55.066277 57.182270 0.741301 +vn 0.452062 0.473948 0.395036 +v 55.566460 56.940159 0.621301 +vn 0.727364 1.333487 0.864631 +v 55.349281 57.155643 0.611300 +vn 0.968911 0.403404 1.107571 +v 55.660568 56.280430 0.831300 +vn 1.265031 0.506228 0.864081 +v 55.736706 56.669018 0.631300 +vn 1.099310 0.721311 0.842012 +v 55.704815 57.021133 0.371301 +vn 1.460556 0.534097 0.278941 +v 55.977509 56.794773 0.091300 +vn 0.560537 0.324979 0.149683 +v 55.848598 57.020199 0.000000 +vn 1.362564 0.528242 0.551801 +v 55.989941 56.453678 0.381300 +vn 0.731197 0.283472 0.296115 +v 56.084087 56.492874 0.111300 +vn 0.736848 0.280239 0.303568 +v 55.875065 56.749992 0.381300 +vn -0.379874 -0.101265 0.343775 +v 53.198925 55.962925 0.591300 +vn -0.394201 -0.105084 0.356741 +v 53.020660 56.156376 0.451301 +vn -1.359421 -0.229108 0.939901 +v 53.046547 55.920727 0.431300 +vn -1.410294 -0.345830 0.496334 +v 52.829700 55.888206 0.000000 +vn -0.846421 -0.034456 0.290236 +v 52.905186 55.897987 0.221300 +vn -0.665423 -0.027088 0.228172 +v 52.818222 56.170174 0.000000 +vn -1.205370 -0.810395 0.694392 +v 53.280003 55.089584 0.221300 +vn -0.633131 -0.425667 0.364735 +v 53.197559 55.022587 0.000000 +vn -0.013776 -0.009263 0.007937 +v 53.118198 55.330250 0.221300 +vn -1.824624 -1.226838 1.051280 +v 53.191422 55.031715 0.000000 +vn -0.618108 -0.257355 0.299467 +v 52.923420 55.540550 0.000000 +vn -0.450509 -0.239622 0.542576 +v 53.139103 55.657604 0.431300 +vn -0.970286 -0.516088 1.168577 +v 53.276012 55.400204 0.431300 +vn -1.110100 -0.504797 0.897398 +v 52.992302 55.607109 0.221300 +vn -0.223815 0.202301 0.692525 +v 53.640064 56.633076 0.781301 +vn -0.514726 0.135857 1.505822 +v 53.815750 56.389690 0.881300 +vn -0.254987 0.067301 0.745961 +v 53.566788 56.222305 0.811300 +vn -0.423206 0.144353 1.389858 +v 54.262714 56.280502 1.031301 +vn -0.252192 -0.037997 0.467045 +v 53.228271 56.259811 0.631300 +vn -0.989927 -0.149150 1.833291 +v 53.137268 56.126324 0.571301 +vn -0.726623 -0.087904 1.185536 +v 53.364899 56.074516 0.701301 +vn -0.390379 -0.171621 0.625643 +v 53.507248 55.844875 0.751300 +vn -0.569453 -0.119016 1.313744 +v 53.734173 55.973343 0.861300 +vn -0.692677 0.079164 1.319173 +v 53.402260 56.449089 0.711300 +vn -0.754312 -0.448618 1.408534 +v 53.669056 55.604210 0.771300 +vn -0.354713 -0.176910 0.740947 +v 53.830860 55.363548 0.781301 +vn -0.286653 -0.139411 0.641551 +v 53.901562 55.724380 0.901300 +vn -0.777709 -0.349065 1.251471 +v 53.313519 55.738720 0.601300 +vn -0.394225 -0.176943 0.634377 +v 53.458729 55.486900 0.621301 +vn -0.380830 -0.103487 1.464975 +v 54.586609 55.727066 1.101300 +vn -0.447364 -0.054733 1.633517 +v 54.158962 55.861294 1.001300 +vn -0.269385 -0.063566 0.780432 +v 53.980415 56.126854 0.961300 +vn 0.058799 0.193387 0.417869 +v 54.866684 57.156525 0.781301 +vn 0.100564 0.285673 0.708957 +v 54.709854 56.834183 0.951301 +vn 0.449507 0.516982 1.281837 +v 55.378307 56.825706 0.811300 +vn 0.261054 0.300241 0.744435 +v 55.199902 57.055210 0.781301 +vn 0.385247 0.581634 1.401403 +v 54.992294 56.951778 0.881300 +vn -0.169013 0.271439 0.762895 +v 54.251732 56.959969 0.841300 +vn -0.182281 0.292748 0.822785 +v 54.092468 56.551640 0.951301 +vn -0.321541 0.490015 1.353425 +v 54.402519 56.699852 0.971300 +vn -0.090076 0.389417 1.418152 +v 54.868942 56.579643 1.031301 +vn -0.062830 0.021594 0.767440 +v 54.432961 56.009361 1.081300 +vn 0.153392 0.133781 1.596401 +v 55.156784 56.026066 1.081300 +vn 0.074630 0.065089 0.776701 +v 55.017014 56.305645 1.071301 +vn 0.086309 0.152429 1.566757 +v 54.729134 56.160294 1.101300 +vn -0.095936 0.085585 0.790779 +v 54.567188 56.437012 1.051300 +vn 0.341974 0.142380 0.644140 +v 55.542976 56.562866 0.831300 +vn 0.555641 0.478544 1.385566 +v 55.302170 56.437115 0.971300 +vn 0.156672 0.194807 0.754454 +v 55.145802 56.705536 0.941300 +vn 0.219155 0.128320 0.793632 +v 55.428062 56.160255 0.981300 +vn 0.523280 0.058837 0.748613 +v 56.039234 55.197468 0.671300 +vn 0.739393 0.083136 1.057788 +v 55.758808 55.274025 0.861300 +vn 0.705980 0.313812 1.108940 +v 55.932339 54.872547 0.831300 +vn 0.031142 -0.100511 0.747833 +v 55.039680 54.766430 0.981300 +vn 0.392765 0.075275 1.607096 +v 55.615860 54.948967 0.941300 +vn 0.255164 -0.052660 1.314529 +v 55.494980 55.361748 0.981300 +vn 0.504580 0.284319 1.277546 +v 56.119465 54.540455 0.831300 +vn 0.759856 0.149131 -0.003300 +v 56.246418 55.409065 0.101300 +vn 0.665031 0.130104 -0.003396 +v 56.221752 55.532501 0.000000 +vn 1.019149 0.220648 0.236815 +v 56.137123 55.697083 0.341300 +vn 0.742639 0.132062 0.135255 +v 56.206799 55.611378 0.121301 +vn 1.776955 0.390773 -0.190686 +v 56.299236 55.222977 0.000000 +vn 2.385085 0.770816 0.064742 +v 56.277859 55.320187 0.000000 +vn 0.626996 0.218078 0.252452 +v 56.258850 55.067970 0.461300 +vn 1.622067 0.564179 0.653104 +v 56.297340 55.154102 0.291300 +vn 0.524392 0.182391 0.211140 +v 56.216084 55.364571 0.311300 +vn 1.260509 0.344339 0.585734 +v 56.149837 55.283878 0.501300 +vn 0.656028 0.337765 0.295920 +v 56.432240 54.702545 0.471300 +vn 0.894383 0.445816 0.783551 +v 56.204468 54.790405 0.681300 +vn 1.674825 0.744949 -0.237609 +v 56.323341 55.150738 0.000000 +vn 0.650147 0.289214 -0.092102 +v 56.442551 54.902279 0.061300 +vn 1.996493 0.888127 -0.282829 +v 56.416885 54.940453 0.000000 +vn 0.676449 0.306949 0.128123 +v 56.384037 54.971390 0.271300 +vn 0.678967 0.282690 0.096152 +v 56.313797 55.201317 0.091300 +vn -0.879520 -0.855901 0.713511 +v 54.297955 54.364140 0.411301 +vn -1.260986 -1.152374 0.691758 +v 54.365330 54.156387 0.261300 +vn -1.010758 -0.620093 0.772230 +v 54.531590 54.195869 0.561300 +vn -0.694370 -0.478232 0.616355 +v 54.405979 54.400616 0.561300 +vn -0.903289 -1.396639 0.435723 +v 53.953716 54.445995 0.051300 +vn -1.506581 -1.981241 0.386648 +v 54.006443 54.395889 0.000000 +vn -1.155196 -1.315994 0.311416 +v 54.192944 54.244854 0.000000 +vn -0.508802 -0.472716 0.142269 +v 54.198227 54.333237 0.251300 +vn -1.101094 -1.387162 0.564073 +v 54.142857 54.308060 0.081300 +vn -0.566023 -0.497390 -0.116758 +v 54.591373 53.802261 0.081300 +vn -0.402120 -0.353361 -0.082948 +v 54.510590 53.913277 0.000000 +vn -1.363931 -1.198547 -0.281348 +v 54.586006 53.827454 0.000000 +vn -1.434630 -1.140905 0.287999 +v 54.460323 53.979256 0.101300 +vn -0.573419 -0.456017 0.115113 +v 54.507538 53.962799 0.271300 +vn -0.773733 -0.805631 0.122712 +v 54.315399 54.158966 0.091300 +vn -0.866209 -0.901919 0.137379 +v 54.287029 54.172306 0.000000 +vn -0.661543 -0.287618 0.358218 +v 54.774792 53.708679 0.591300 +vn -1.446612 -0.829907 0.941350 +v 54.554611 53.982395 0.431300 +vn -0.813326 -0.575182 0.431302 +v 54.440163 54.170547 0.421300 +vn -1.372533 -0.712793 0.496733 +v 54.655186 53.796963 0.441300 +vn -0.304939 -0.329751 1.644672 +v 54.845810 54.696331 0.931300 +vn -0.316909 -0.306938 0.944746 +v 54.675423 55.003525 0.961300 +vn -0.408110 -0.395270 1.216631 +v 54.412441 54.874912 0.831300 +vn -0.393816 -0.207628 0.840777 +v 54.677116 54.570862 0.821301 +vn -0.760769 -0.601623 0.956315 +v 54.533318 54.462132 0.701301 +vn -0.499734 -0.306583 0.548214 +v 54.653492 54.229626 0.691300 +vn -1.182377 -0.507754 1.092373 +v 54.640602 53.979961 0.561300 +vn -0.183502 -0.054032 0.790931 +v 54.977142 54.447227 0.931300 +vn -0.162922 -0.047972 0.702228 +v 55.158688 54.123440 0.951301 +vn -0.558110 -0.233127 1.291905 +v 54.903297 54.180683 0.851300 +vn 0.018957 -0.042487 0.665628 +v 55.710815 54.072903 1.021300 +vn 0.001779 0.194509 1.235281 +v 55.853413 53.072220 1.041300 +vn -0.017496 0.121792 1.011370 +v 55.766434 53.327045 1.001300 +vn 0.268633 0.326116 1.910782 +v 55.946289 53.435917 0.991301 +vn 0.217222 0.069136 0.981133 +v 56.125999 53.580845 0.941300 +vn 0.027931 0.008890 0.599186 +v 55.870468 53.674141 0.991301 +vn 0.583376 0.220141 1.005182 +v 56.400421 53.620747 0.841300 +vn 0.582612 0.208305 0.976975 +v 56.268806 53.941959 0.851300 +vn 0.582609 0.208304 0.976970 +v 56.510174 53.923492 0.711300 +vn 0.961774 0.464616 -0.054959 +v 56.731808 54.319889 0.000000 +vn 0.945063 0.550359 0.330181 +v 56.786327 54.229660 0.191300 +vn 0.918732 0.424160 0.380270 +v 56.680599 54.315224 0.351300 +vn 0.883123 0.670175 0.023070 +v 56.861584 54.135654 0.041300 +vn 0.595058 0.265431 0.596753 +v 56.383717 54.344570 0.701301 +vn 0.640723 0.285801 0.642548 +v 56.622932 54.168003 0.541300 +vn 0.822311 0.409581 0.566942 +v 56.773014 54.088158 0.381300 +vn 0.859003 0.313780 0.503847 +v 56.558132 54.425686 0.491301 +vn 0.646453 0.512223 -0.264018 +v 56.874126 54.098537 0.000000 +vn -1.521654 -0.564693 -0.748290 +v 55.285160 52.537369 0.000000 +vn -1.691725 -0.922142 -0.724327 +v 55.133923 52.855148 0.000000 +vn -0.629608 -0.407640 -0.339980 +v 55.155895 52.711704 0.131300 +vn -1.588333 -0.555720 -0.170813 +v 55.231716 52.473480 0.201301 +vn -1.603060 -0.518865 -0.134080 +v 55.136436 52.722725 0.321301 +vn -0.935997 -0.272742 0.060653 +v 55.136299 52.758778 0.481300 +vn -0.562049 -0.163776 0.036421 +v 55.206676 52.492794 0.371301 +vn -0.785488 -0.418312 0.073764 +v 54.971489 53.057671 0.421300 +vn -0.578734 -0.291928 0.065283 +v 55.041447 52.899857 0.271300 +vn -1.406769 -0.262769 0.953303 +v 55.180511 52.800552 0.621301 +vn -0.481451 -0.089930 0.326257 +v 55.250607 52.606682 0.671300 +vn -0.528465 -0.210069 0.432997 +v 55.085518 52.977688 0.591300 +vn -1.356093 -0.407139 0.489934 +v 55.217552 52.548309 0.531301 +vn -0.159427 -0.112928 0.576416 +v 55.307182 53.741276 0.971300 +vn -0.092734 -0.080724 0.838741 +v 55.508186 53.406464 0.961300 +vn -0.428177 -0.194231 0.547900 +v 55.094841 53.429806 0.801300 +vn -0.283072 -0.006658 0.501890 +v 55.419159 52.768208 0.891300 +vn -0.384829 -0.148155 0.501440 +v 55.246758 52.881245 0.741301 +vn -1.063968 -0.362405 1.229235 +v 55.343483 52.970379 0.851300 +vn -0.422260 -0.143829 0.487850 +v 55.248489 53.147511 0.821301 +vn -0.187531 0.058345 0.779475 +v 55.695736 52.966209 1.011300 +vn -0.205939 -0.058746 0.706785 +v 55.465103 53.076248 0.921300 +vn -0.467046 0.026447 1.229180 +v 55.603321 53.193275 0.971300 +vn -0.322103 1.059393 0.805086 +v 57.572056 53.311928 0.511300 +vn -0.119949 0.558860 0.530703 +v 57.317375 53.188896 0.571301 +vn -0.020140 0.908536 1.016292 +v 57.111496 53.351727 0.381300 +vn -0.204377 0.644262 0.696163 +v 57.559486 53.689075 0.111300 +vn -0.167309 0.649831 0.609501 +v 57.440159 53.705250 0.061300 +vn -0.100354 0.262970 0.149433 +v 57.639469 53.803104 0.021300 +vn -0.744383 1.946263 1.114204 +v 57.612534 53.804996 0.000000 +vn 0.027253 0.808442 0.675872 +v 57.396523 53.757969 0.000000 +vn -0.325060 0.877806 0.497714 +v 57.537025 53.758327 0.031301 +vn -0.763083 0.923032 0.369486 +v 57.831726 53.910915 0.000000 +vn -0.783670 1.266480 0.680948 +v 57.746201 53.857994 0.000000 +vn -0.227976 0.678636 0.349699 +v 57.658123 53.820347 0.000000 +vn -0.473760 1.410282 0.726713 +v 57.638069 53.813610 0.000000 +vn -0.459427 0.583749 0.351866 +v 57.922050 53.884644 0.191300 +vn -0.447582 0.434010 0.447488 +v 57.806435 53.662308 0.291300 +vn -0.245874 0.365707 0.391717 +v 57.764233 53.814686 0.101300 +vn -0.819158 1.218397 1.305053 +v 57.656349 53.742153 0.101300 +vn -0.641222 0.845088 0.820179 +v 57.659492 53.647865 0.191300 +vn 0.413817 0.599686 0.778051 +v 57.129681 53.665207 0.121301 +vn -0.031436 0.307240 0.308846 +v 57.365894 53.546867 0.211300 +vn -0.153202 1.497312 1.505139 +v 57.468201 53.627701 0.141300 +vn 0.093263 0.824981 0.917260 +v 57.273762 53.701824 0.081300 +vn 0.041289 0.538190 0.433460 +v 57.349384 53.761585 0.000000 +vn 0.027767 1.383431 1.042747 +v 57.291607 53.762745 0.000000 +vn -0.018543 1.282977 1.107661 +v 57.184914 53.726440 0.051300 +vn 0.006530 0.945141 0.709660 +v 57.232529 53.763153 0.000000 +vn 0.168413 0.514300 0.361869 +v 57.168865 53.780598 0.000000 +vn 0.474926 1.057628 0.967960 +v 57.206150 53.763855 0.000000 +vn -0.214086 0.706132 0.808900 +v 57.521133 53.566891 0.221300 +vn -0.352668 0.987641 0.792433 +v 57.444149 53.394630 0.351300 +vn -0.384390 0.697516 0.514706 +v 57.635162 53.486908 0.321301 +vn -0.367941 1.088302 1.650901 +v 57.741879 53.148956 0.771300 +vn -0.074538 0.317843 0.499686 +v 57.800819 52.971680 0.901300 +vn -0.222035 0.946797 1.488477 +v 57.997128 53.127766 0.831300 +vn -0.300580 0.592848 1.292273 +v 58.059666 53.446964 0.681300 +vn -0.228180 0.526895 0.923860 +v 57.896694 53.277145 0.721300 +vn 0.023255 0.434381 1.277847 +v 58.306580 52.721272 0.991301 +vn 0.157258 0.382852 0.772398 +v 58.125458 52.936893 0.921300 +vn -0.083936 -0.009220 0.826346 +v 58.869057 53.569397 0.881300 +vn -0.203115 0.036044 1.083422 +v 58.520229 53.407166 0.821301 +vn -0.253644 0.045011 1.352942 +v 58.706650 53.255352 0.861300 +vn -0.159751 0.316408 1.714608 +v 58.340939 53.154076 0.851300 +vn -0.070334 0.139306 0.754896 +v 58.521923 52.974503 0.901300 +vn -0.585486 0.300886 1.196475 +v 58.353264 53.547962 0.751300 +vn -0.204910 0.192496 0.524665 +v 58.184994 53.314327 0.771300 +vn -1.254538 0.110024 -0.302634 +v 55.207489 51.577534 0.401300 +vn -1.961743 0.169507 -0.597249 +v 55.295502 51.412579 0.000000 +vn -0.841675 -0.122665 -0.285627 +v 55.284367 52.484779 0.041300 +vn -2.442318 -0.415891 -0.911797 +v 55.312820 52.408230 0.000000 +vn -1.323508 -0.114451 -0.699706 +v 55.305759 52.489883 0.000000 +vn -0.685557 0.013089 -0.239822 +v 55.257740 52.201775 0.241301 +vn -0.723517 0.099304 0.076932 +v 55.228111 51.977005 0.531301 +vn -0.706111 0.096915 0.075081 +v 55.190891 51.566376 0.711300 +vn -0.573380 0.203792 0.397673 +v 55.325966 51.777695 1.031301 +vn -0.527496 0.126682 0.205124 +v 55.239697 51.852242 0.801300 +vn -1.129836 -0.013789 0.776505 +v 55.301388 52.387772 0.741301 +vn -0.967607 0.032499 0.327027 +v 55.251736 52.318237 0.601300 +vn -0.643130 0.082775 0.465054 +v 55.327271 52.152126 0.841300 +vn -1.470752 0.049856 -0.111622 +v 55.242271 51.902172 0.311300 +vn -1.696960 0.070221 0.230402 +v 55.255444 52.079731 0.701301 +vn -1.434685 -0.133454 0.179785 +v 55.238140 52.248848 0.441300 +vn -0.478342 0.203996 0.482102 +v 55.591526 51.956238 1.251300 +vn -0.892067 0.380434 0.899080 +v 55.565781 52.155830 1.141300 +vn -0.497376 0.316326 0.759408 +v 55.777523 51.912590 1.391300 +vn -0.862555 0.331243 1.105688 +v 55.653358 52.455715 1.101300 +vn -0.624292 0.239744 0.800264 +v 55.526157 52.358143 1.031301 +vn -1.260779 0.454677 1.116779 +v 55.421139 52.263432 0.951301 +vn -0.386478 0.139376 0.342336 +v 55.452461 52.055542 1.071301 +vn -0.260321 0.232717 0.877848 +v 56.063560 52.526661 1.231300 +vn -0.253549 0.159954 0.446393 +v 55.712440 52.242386 1.211300 +vn -0.683949 0.497246 1.501504 +v 55.875553 52.376152 1.241301 +vn -0.755628 0.274410 1.611487 +v 55.749237 52.761177 1.071301 +vn -0.491351 0.266109 0.978179 +v 55.788857 52.558868 1.141300 +vn -1.280108 0.022461 1.218117 +v 55.322437 52.679073 0.791300 +vn -0.763345 0.103469 0.703688 +v 55.375935 52.474045 0.851300 +vn -0.447690 0.139222 0.619467 +v 55.608158 52.666325 1.021300 +vn -0.730845 0.121942 1.158099 +v 55.546360 52.865776 0.961300 +vn -0.730833 0.121937 1.158077 +v 55.480957 52.568752 0.951301 +vn -0.049670 0.539979 1.016464 +v 56.253128 52.280560 1.371301 +vn -0.013562 0.372676 0.998171 +v 56.493084 52.622643 1.201301 +vn 0.459133 0.817671 1.500997 +v 56.639034 52.889473 1.011300 +vn 0.353537 0.405091 1.371029 +v 56.483231 53.013672 0.991301 +vn -0.042963 0.363730 0.941548 +v 56.217388 52.907234 1.091300 +vn 0.992355 0.276454 1.119945 +v 56.723186 53.355751 0.691300 +vn 0.628798 0.292436 1.073244 +v 56.481537 53.446331 0.841300 +vn 0.436062 0.293182 1.050907 +v 56.559792 53.294094 0.851300 +vn -0.034236 0.129051 0.520841 +v 55.909771 52.845013 1.101300 +vn 0.120478 0.301239 0.913849 +v 56.321281 53.290390 0.951301 +vn 0.166040 0.415161 1.259447 +v 56.022106 53.197689 1.021300 +vn 0.387034 0.407056 0.670158 +v 57.049698 53.551178 0.241301 +vn 0.756565 0.795704 1.310009 +v 56.974728 53.573071 0.271300 +vn 0.246934 0.259709 0.427572 +v 56.955692 53.475925 0.341300 +vn -0.010252 0.463879 0.519351 +v 57.185760 53.510109 0.241301 +vn 0.212921 0.633370 0.745835 +v 57.050121 53.443012 0.321301 +vn -0.009323 0.518454 0.579259 +v 57.258434 53.366169 0.371301 +vn 0.397455 0.572389 0.566173 +v 61.978214 58.515671 0.441300 +vn 0.897257 0.897560 0.937359 +v 62.591259 57.783085 0.651300 +vn 1.024939 1.026714 0.635555 +v 62.367512 58.259258 0.421300 +vn 0.388836 0.255980 0.207895 +v 62.847496 57.509514 0.591300 +vn 1.518990 0.999985 0.812142 +v 62.998001 57.321503 0.541300 +vn 0.641010 0.302989 0.219288 +v 63.015907 57.707092 0.051300 +vn 1.448894 0.684856 0.495662 +v 62.944077 57.634697 0.361300 +vn 0.735992 0.485139 0.346029 +v 62.695999 57.949909 0.391300 +vn 1.342222 0.863366 0.135833 +v 63.018719 57.710793 0.000000 +vn 0.162384 0.067750 0.005074 +v 63.041565 57.649391 0.000000 +vn 0.749217 1.131093 0.164203 +v 62.064621 58.654377 0.000000 +vn 1.345501 2.031277 0.294806 +v 62.372478 58.450455 0.000000 +vn 0.436366 0.704863 0.131492 +v 62.450218 58.387161 0.081300 +vn 0.837330 1.352542 0.252316 +v 62.454216 58.399853 0.000000 +vn 0.147751 0.147342 0.025399 +v 62.775986 58.063938 0.061300 +vn 1.145766 1.142411 0.196147 +v 62.778671 58.071770 0.000000 +vn 0.831670 -0.319104 -0.422023 +v 58.225845 46.425060 1.361300 +vn 0.693454 -0.164369 -0.243632 +v 58.308937 45.745876 1.961300 +vn 1.228188 -0.306973 -0.355331 +v 58.393551 46.802917 1.461300 +vn 1.323311 -0.276008 -0.456607 +v 58.345592 46.300720 1.691300 +vn 0.021458 -0.004475 -0.007402 +v 58.482540 46.742249 1.821301 +vn 0.469273 -0.044463 -0.057106 +v 58.466217 46.243584 2.075428 +vn 0.145223 -0.316687 -0.589257 +v 56.756733 46.208527 0.581300 +vn 0.279629 -0.566658 -0.952625 +v 56.924007 46.694542 0.341300 +vn 0.681517 -0.832858 -1.495219 +v 57.519615 46.167137 0.861300 +vn 0.550590 -0.272959 -0.446148 +v 58.125237 45.911568 1.551300 +vn -0.420854 -0.377774 -0.620656 +v 55.636257 45.491337 1.121301 +vn -0.296221 -0.265899 -0.436853 +v 55.384190 46.117165 0.911301 +vn -0.886627 -0.838492 -1.434578 +v 55.687359 45.899246 0.851300 +vn -0.170283 -0.294667 -0.501916 +v 55.788673 46.232464 0.621301 +vn -0.553868 -0.535476 -0.924236 +v 55.649078 47.174915 0.141300 +vn -0.044489 -0.331174 -0.501939 +v 56.137218 46.466805 0.401300 +vn -0.133601 -0.363441 -0.484992 +v 55.927490 46.904202 0.131300 +vn -0.295121 -0.679825 -1.191697 +v 56.060940 46.114269 0.621301 +vn -0.716619 -0.790351 -1.381282 +v 55.837193 46.590439 0.391300 +vn 0.027366 -0.840484 -1.538003 +v 56.445541 46.348751 0.471300 +vn 0.009250 -0.284077 -0.519833 +v 56.344368 45.979477 0.671300 +vn 0.073180 -0.838190 -1.198852 +v 56.221935 46.788864 0.181300 +vn 0.048044 -0.550291 -0.787073 +v 56.524540 46.715164 0.251300 +vn 0.001015 -0.403792 -0.721468 +v 56.282959 45.371834 1.011300 +vn 0.001933 -0.769181 -1.374319 +v 56.656399 45.622913 0.871301 +vn -0.165710 -0.732641 -1.339294 +v 55.965206 45.772751 0.831300 +vn 0.180450 -0.306344 0.828411 +v 61.467579 55.762337 1.041300 +vn 0.645660 -0.461048 1.392857 +v 62.120880 56.081078 0.991301 +vn 0.247477 -0.263049 0.619407 +v 61.908398 55.805664 0.961300 +vn 0.270799 -0.283040 0.680412 +v 62.371254 55.887913 0.811300 +vn -0.020483 -0.096161 0.803370 +v 61.111511 56.739994 1.231300 +vn 0.012639 -0.092276 0.869089 +v 61.293903 56.199871 1.171300 +vn 0.134732 -0.076292 0.839579 +v 61.828873 56.282402 1.121301 +vn 0.257482 -0.145799 1.604489 +v 62.005157 56.593723 1.121301 +vn 0.292782 -0.142445 1.664441 +v 61.484070 56.508476 1.201301 +vn 0.111194 -0.381499 1.432543 +v 61.644146 56.001553 1.091300 +vn -0.055089 -0.197544 1.080728 +v 61.004299 55.788258 1.081300 +vn 0.769301 -1.371734 -0.059733 +v 62.443611 55.385990 0.000000 +vn 1.111408 -2.000433 -0.074098 +v 62.114807 55.202763 0.000000 +vn 0.764483 -1.318273 0.225535 +v 62.162903 55.265823 0.351300 +vn 0.481776 -0.830774 0.142132 +v 62.016388 55.143219 0.131300 +vn 1.105815 -0.979510 -0.140722 +v 62.712292 55.589649 0.000000 +vn 0.155472 -0.137714 -0.019785 +v 62.812580 55.702869 0.000000 +vn 1.239045 -1.024561 0.298298 +v 62.898205 55.892746 0.271300 +vn 0.582708 -0.482053 0.140138 +v 62.927494 55.849178 0.000000 +vn 0.592142 -0.459019 0.160825 +v 62.674564 55.633934 0.311300 +vn 0.563753 -0.437012 0.153114 +v 62.903233 55.819851 0.000000 +vn 0.922289 -1.101478 0.280543 +v 62.409145 55.419334 0.341300 +vn 0.468679 -0.576644 0.160978 +v 62.445339 55.383419 0.081300 +vn 0.866571 -1.066194 0.297642 +v 62.716339 55.589722 0.031301 +vn 0.396216 -0.307918 0.524390 +v 62.789616 56.000488 0.561300 +vn 0.417711 -0.423105 0.551180 +v 62.289539 55.507618 0.581300 +vn 1.018988 -0.836602 0.757697 +v 62.557674 55.736095 0.581300 +vn 0.632956 -0.991630 1.064068 +v 62.144753 55.651272 0.801300 +vn 0.558876 -0.899596 0.934432 +v 61.906952 55.467293 0.771300 +vn 1.509117 -0.487187 0.150193 +v 63.203423 56.567909 0.171300 +vn 0.525200 -0.169754 0.051961 +v 63.213024 56.544842 0.000000 +vn 1.366430 -0.396174 0.170569 +v 63.099659 56.172554 0.000000 +vn 0.627783 -0.346214 0.123248 +v 63.082790 56.209652 0.221300 +vn 0.513601 -0.271816 0.084715 +v 62.954128 55.897572 0.000000 +vn 1.699253 0.225173 0.045151 +v 63.172695 57.330505 0.061300 +vn 0.281794 0.037386 0.007641 +v 63.174191 57.331512 0.000000 +vn 0.854700 0.155566 0.064540 +v 63.221325 56.953499 0.111300 +vn 1.447534 0.263468 0.109305 +v 63.231373 56.944469 0.000000 +vn 0.589946 -0.035427 0.056133 +v 63.221947 56.787502 0.000000 +vn 0.737501 0.151449 0.468456 +v 63.086708 57.332943 0.361300 +vn 0.506675 0.008511 0.373346 +v 63.083813 56.656193 0.471300 +vn 1.562553 0.255984 0.452857 +v 63.129612 57.000290 0.401300 +vn 1.053988 -0.419069 1.149469 +v 62.960323 56.320114 0.521300 +vn 1.054542 -0.225577 1.036191 +v 62.889095 56.802425 0.701301 +vn 0.555762 -0.118883 0.546091 +v 62.760025 56.474648 0.761300 +vn 0.727433 -0.228505 1.278626 +v 62.589314 56.155022 0.801300 +vn 0.434002 -0.037626 0.656790 +v 62.638721 56.995594 0.871301 +vn 0.230737 -0.039453 0.629069 +v 62.319485 56.359207 0.991301 +vn 0.565660 -0.103674 1.585649 +v 62.490192 56.678829 0.951301 +vn 0.992429 0.384910 1.107574 +v 62.754055 57.290039 0.751300 +vn 0.364351 0.216705 0.510042 +v 62.464626 57.541298 0.851300 +vn 0.561302 0.057052 0.761851 +v 62.965511 57.118904 0.621301 +vn 0.428329 0.508536 1.485837 +v 61.573555 57.737499 1.101300 +vn 0.551022 0.370476 1.327975 +v 62.327114 57.243992 0.991301 +vn 0.534628 0.406346 1.298342 +v 62.119682 57.803429 0.911301 +vn 0.284730 0.251619 0.484472 +v 62.257336 58.064678 0.701301 +vn 0.095073 0.052144 0.817511 +v 61.414009 57.401279 1.191300 +vn 0.191917 0.105260 1.650281 +v 61.800446 57.167042 1.161301 +vn 0.160840 0.006127 0.714191 +v 61.640896 56.830818 1.201301 +vn 0.203665 0.007759 0.904349 +v 62.170284 56.921646 1.081300 +vn 0.236226 0.098144 0.791009 +v 61.965572 57.494965 1.071301 +vn 0.650104 -0.767743 -0.339588 +v 61.355068 54.746788 0.021300 +vn 1.282624 -1.955583 -0.781783 +v 61.374592 54.768108 0.000000 +vn 0.789286 -1.200388 -0.478066 +v 61.350109 54.752010 0.000000 +vn 1.022467 -1.416446 0.287969 +v 61.562393 54.922333 0.361300 +vn 0.358150 -0.402964 0.107062 +v 61.125702 54.532326 0.201301 +vn 0.906356 -1.019766 0.270937 +v 61.360649 54.738487 0.191300 +vn 0.812797 -1.427747 0.234054 +v 61.797619 55.056381 0.361300 +vn 0.787989 -1.292985 -0.075955 +v 61.599834 54.922199 0.000000 +vn 0.121579 -0.224618 -0.027488 +v 61.612328 54.919750 0.171300 +vn 0.643880 -1.089819 0.694498 +v 61.882900 55.234219 0.561300 +vn 0.268006 -0.305417 0.148207 +v 61.319012 54.746647 0.361300 +vn 0.587009 -0.813196 0.477594 +v 61.492859 54.971981 0.531301 +vn 0.765171 -1.023670 0.574382 +v 61.246761 54.782417 0.521300 +vn 0.858533 -0.915053 1.406652 +v 60.931267 54.606453 0.651300 +vn 0.417591 -0.534494 0.885957 +v 61.132874 54.826351 0.671300 +vn 0.231332 -0.259423 0.770399 +v 61.173378 55.106632 0.821301 +vn 0.160309 -0.179775 0.533871 +v 60.749580 54.966297 0.901300 +vn 0.268969 -0.260169 0.698202 +v 60.781326 54.650242 0.771300 +vn 0.443295 -0.428791 1.150725 +v 60.966194 54.895035 0.791300 +vn 0.240968 -0.437027 0.657965 +v 61.579590 55.488194 0.901300 +vn 0.399061 -0.723749 1.089639 +v 61.380566 55.318233 0.861300 +vn 0.148646 -0.311929 0.729740 +v 61.188705 55.442287 0.961300 +vn 0.620225 -0.984410 1.404801 +v 61.345638 55.029648 0.691300 +vn 0.268967 -0.387760 0.658101 +v 61.555687 55.219070 0.731300 +vn -0.050444 -0.177168 0.965587 +v 60.791992 56.175716 1.141300 +vn 0.069113 -0.058281 0.778229 +v 60.307629 55.211411 1.001300 +vn 0.334848 -0.300200 1.456156 +v 60.336800 54.845417 0.971300 +vn 0.214739 -0.192520 0.933838 +v 60.423916 54.554539 0.891300 +vn 0.370230 -0.352901 1.573791 +v 60.538265 55.101372 0.981300 +vn 0.257144 -0.330133 1.396825 +v 60.973221 55.225113 0.921300 +vn 0.038931 -0.099414 0.814454 +v 60.736866 55.379501 1.001300 +vn 0.445379 -0.233821 0.067146 +v 60.563831 53.735821 0.350400 +vn 0.680328 -0.307689 0.018420 +v 60.426769 53.421707 0.165700 +vn 1.438089 -0.650399 0.038937 +v 60.541508 53.671165 0.094900 +vn 0.968561 -0.560327 -0.404215 +v 60.339611 53.390583 0.000000 +vn 1.226350 -0.661738 0.622912 +v 60.471386 53.771873 0.570701 +vn 0.557584 -0.339904 0.628865 +v 59.906040 52.941097 0.631300 +vn 1.041080 -0.617424 1.149695 +v 60.055782 53.260002 0.670900 +vn 0.661284 -0.368615 0.378591 +v 60.308933 53.440689 0.538700 +vn 0.556738 -0.344542 0.595191 +v 60.265766 53.641460 0.695300 +vn 0.186664 -0.161795 0.615363 +v 59.728058 53.062435 0.761300 +vn 0.390838 -0.218564 0.611189 +v 60.481998 54.007717 0.688001 +vn 0.290154 -0.178583 0.722926 +v 60.208996 54.193138 0.891300 +vn 0.226366 -0.211862 0.727101 +v 59.685013 53.431145 0.871301 +vn 0.467982 -0.437997 1.503187 +v 59.990845 53.516991 0.801101 +vn 0.167019 -0.090808 0.622894 +v 59.946861 53.848198 0.911301 +vn 0.091582 -0.076615 0.533928 +v 59.958763 54.350250 0.981300 +vn -0.049805 -0.229074 1.534272 +v 59.083233 53.412144 0.901300 +vn -0.029741 -0.136791 0.916188 +v 59.319447 53.293808 0.891300 +vn 0.099645 -0.160140 0.721709 +v 59.603191 53.785835 0.961300 +vn 0.392033 -0.197031 0.659446 +v 64.143364 49.422283 1.030200 +vn 0.817973 -0.645706 1.364065 +v 64.011986 49.110302 0.961300 +vn 0.416399 -0.337402 0.464343 +v 64.718788 49.224014 0.511300 +vn 0.928589 -0.738723 1.047916 +v 64.464729 49.331074 0.811900 +vn 0.439414 -0.576361 0.585369 +v 64.256500 48.997547 0.761300 +vn 0.676459 -0.864763 1.265676 +v 64.021698 48.755329 0.721300 +vn 0.618145 -1.327581 0.149437 +v 63.856232 48.329334 0.000000 +vn 0.525768 -1.174757 0.111954 +v 64.233482 48.500553 0.000000 +vn 0.922308 -1.163267 0.632796 +v 64.470535 48.876350 0.481300 +vn 0.863195 -1.168272 0.554846 +v 64.233437 48.512093 0.121301 +vn 0.380774 -0.515350 0.244755 +v 64.595718 48.779770 0.121301 +vn 0.285946 -0.601055 0.238565 +v 64.160904 48.619976 0.461300 +vn 0.298282 -0.653897 0.271118 +v 63.862431 48.347000 0.131300 +vn 1.451265 -0.579332 0.076592 +v 64.881981 49.147076 0.000000 +vn 0.269322 -0.107511 0.014214 +v 65.020515 49.494114 0.000000 +vn 0.666677 -0.279428 0.300427 +v 65.061188 49.610874 0.111300 +vn 1.221830 -0.909590 0.088980 +v 64.598137 48.771152 0.000000 +vn 0.623206 -0.463945 0.045385 +v 64.675003 48.874405 0.000000 +vn 1.272345 -0.965803 0.078151 +v 64.877174 49.149750 0.111300 +vn 0.614377 0.571815 0.124296 +v 64.514084 51.347092 0.000000 +vn 0.218222 0.213600 0.038364 +v 64.769821 51.065830 0.111300 +vn 1.186860 1.161407 0.207856 +v 64.771690 51.083839 0.000000 +vn 1.172760 1.116926 0.486720 +v 64.375084 51.294487 0.521300 +vn 0.516743 0.501951 0.224775 +v 64.427315 51.413952 0.121301 +vn 0.600881 0.317398 0.214266 +v 65.007301 50.622997 0.101300 +vn 0.495202 0.427705 0.646824 +v 64.272926 51.177601 0.821301 +vn 0.982359 0.505673 0.802619 +v 64.863228 50.586376 0.531301 +vn 1.281040 0.520938 0.866169 +v 64.481941 50.920479 0.831300 +vn 0.449749 0.428337 0.320040 +v 64.661934 50.993298 0.521300 +vn 0.438054 -0.083485 0.674964 +v 64.299500 50.163620 1.098001 +vn 1.088895 -0.130166 1.009256 +v 64.889076 49.651802 0.531301 +vn 1.162496 -0.186222 1.016072 +v 64.660774 50.149616 0.861800 +vn 0.595913 -0.095460 0.520854 +v 64.609016 49.719574 0.842200 +vn 0.643168 0.114274 0.509797 +v 64.613701 50.563213 0.851300 +vn 1.567710 -0.132868 0.114805 +v 65.069344 49.610935 0.000000 +vn 0.705084 0.125275 0.246910 +v 64.945465 50.123520 0.531301 +vn 1.406357 -0.144708 0.564122 +v 65.117447 50.118649 0.101300 +vn 0.469859 -0.565817 0.675159 +v 59.860199 49.066307 0.931300 +vn 0.479310 -0.581155 0.690923 +v 59.775055 48.852413 0.811300 +vn 0.547074 -0.798756 0.582944 +v 59.653721 48.674435 0.681300 +vn 0.351536 -0.717021 0.339789 +v 59.894665 48.764130 0.621301 +vn 0.445878 -0.780777 0.393694 +v 59.512783 48.543526 0.581300 +vn 0.380884 -1.005751 0.066828 +v 59.728832 48.616482 0.481300 +vn 0.505016 -1.414981 -0.354570 +v 59.795361 48.625065 0.231300 +vn 0.987124 -2.766484 -0.698531 +v 59.631557 48.624588 0.000000 +vn 0.163480 -0.556613 -0.414295 +v 59.465569 48.559982 0.021300 +vn -0.224077 0.246426 1.376267 +v 62.078529 50.605980 1.231300 +vn -0.103915 0.010272 1.664265 +v 62.540222 50.277737 1.351300 +vn -0.046594 0.102731 0.748747 +v 62.866890 50.277214 1.371700 +vn -0.100373 0.009922 0.771692 +v 62.235043 50.301506 1.311300 +vn -0.214629 0.764233 1.248762 +v 62.566288 50.881138 1.211901 +vn -0.063097 0.270953 0.780926 +v 62.890419 50.883850 1.233800 +vn -0.051384 0.244479 0.730257 +v 62.542068 50.585415 1.309200 +vn -0.217622 0.376377 0.873410 +v 62.293678 50.874023 1.169400 +vn -0.252213 -0.532640 0.948049 +v 62.044418 49.402138 1.121301 +vn -0.104958 -0.411877 0.619957 +v 62.725159 49.088623 1.081300 +vn -0.234725 -0.921115 1.386461 +v 62.458752 49.126408 1.061300 +vn -0.211218 -0.593971 1.193927 +v 62.220104 49.158756 1.031301 +vn -0.117823 -0.297251 0.616756 +v 62.474361 49.389954 1.191300 +vn -0.215919 -0.575688 0.840951 +v 62.040531 48.977776 0.861300 +vn -0.106063 -0.146440 0.768954 +v 62.212547 49.671829 1.251300 +vn -0.096615 -0.133395 0.700456 +v 62.510876 49.980858 1.351300 +vn -0.128432 -0.529161 1.531756 +v 62.500988 49.672958 1.291300 +vn -0.135299 -0.262309 0.719159 +v 61.738392 49.642235 1.151300 +vn -0.229956 -0.242072 1.161995 +v 61.967186 50.000916 1.271300 +vn -0.452233 -0.856794 0.351469 +v 61.883705 48.655430 0.291300 +vn -0.347517 -0.658400 0.270085 +v 62.178291 48.504044 0.301300 +vn -0.432419 -1.195929 0.237448 +v 62.270142 48.421196 0.051300 +vn -0.212009 -0.680794 0.347793 +v 62.355564 48.562981 0.541300 +vn -0.135014 -0.506653 0.597371 +v 62.406948 48.898777 0.901300 +vn -0.316810 -1.105936 1.274984 +v 62.391056 48.707344 0.731300 +vn -0.329343 -0.793964 0.586062 +v 62.022346 48.664295 0.491301 +vn -0.290479 -1.053298 0.840422 +v 62.597218 48.472401 0.511300 +vn -0.177197 -0.642530 0.512672 +v 62.629848 48.638939 0.731300 +vn -0.345741 -0.688062 0.674890 +v 61.885719 48.849586 0.651300 +vn -0.343783 -0.684164 0.671067 +v 62.171722 48.764725 0.711300 +vn -0.667172 -1.587311 -0.076162 +v 62.499798 48.327129 0.000000 +vn -0.812113 -1.933011 -0.091131 +v 62.298607 48.411655 0.000000 +vn -0.149616 -0.303005 -0.028422 +v 62.006172 48.544971 0.121301 +vn -0.929113 -1.881653 -0.176497 +v 62.178890 48.471066 0.000000 +vn -0.366910 0.871012 0.212083 +v 62.202511 51.724194 0.110300 +vn -0.501565 1.190670 0.289916 +v 62.102142 51.708771 0.000000 +vn -0.496846 1.057467 0.228219 +v 62.027035 51.645016 0.131900 +vn -0.048545 0.194208 0.038796 +v 62.175491 51.739647 0.000000 +vn -0.239676 0.684600 0.719320 +v 61.964382 51.282963 0.765300 +vn -0.261301 0.746370 0.784223 +v 62.131420 51.109444 0.986100 +vn -0.221695 0.722546 0.577028 +v 62.301727 51.340229 0.823200 +vn -0.081905 0.541596 0.591595 +v 62.556301 51.143860 1.049400 +vn -0.128396 0.584796 0.451646 +v 62.518593 51.558216 0.602600 +vn -0.254972 0.983050 1.140362 +v 62.557858 51.376152 0.849501 +vn -0.271111 1.565629 0.591578 +v 62.726215 51.863979 0.000000 +vn -0.215778 1.538111 0.510645 +v 62.485008 51.706745 0.334701 +vn -0.137851 0.671146 0.253666 +v 62.237549 51.651112 0.322701 +vn -0.171101 0.707347 0.249019 +v 62.429337 51.792591 0.052600 +vn -0.303946 0.915975 0.478783 +v 62.123352 51.476845 0.583600 +vn 0.053263 1.320784 0.979590 +v 63.207546 51.400246 0.869801 +vn 0.001794 0.689143 0.544614 +v 62.866756 51.394527 0.862900 +vn 0.450508 0.929177 0.989649 +v 63.961739 51.317829 0.831300 +vn 0.160715 0.575065 0.386125 +v 64.002670 51.489948 0.541300 +vn 0.124452 0.447573 0.459122 +v 63.587025 51.391247 0.861300 +vn 0.212178 0.773862 0.205355 +v 64.018700 51.645329 0.171300 +vn -0.026574 0.743669 0.261037 +v 62.787014 51.756882 0.311300 +vn -0.002043 1.630844 0.614746 +v 63.099575 51.874485 0.000000 +vn -0.001338 1.068400 0.402733 +v 63.017338 51.874382 0.000000 +vn -0.003556 1.463173 0.794125 +v 62.827194 51.595676 0.608500 +vn 0.020192 1.364482 0.708602 +v 63.150089 51.772282 0.271300 +vn 0.049197 0.681659 0.326932 +v 63.181271 51.600445 0.601300 +vn 0.102371 1.418423 0.680293 +v 63.589039 51.585403 0.571301 +vn 0.089148 0.792825 0.251743 +v 63.571735 51.754517 0.221300 +vn 0.184458 1.640452 0.520886 +v 63.542271 51.828098 0.000000 +vn -0.051243 -0.192944 -0.019013 +v 62.557739 48.311741 0.000000 +vn -0.303687 -1.479379 0.288628 +v 62.503490 48.325035 0.011300 +vn -0.211876 -0.856098 0.137930 +v 62.798489 48.260323 0.000000 +vn -0.117268 -1.308757 0.184144 +v 62.828129 48.290253 0.231300 +vn -0.124870 -1.404267 0.197713 +v 62.859749 48.254875 0.000000 +vn -0.142319 -0.706384 0.352952 +v 62.533829 48.369534 0.271300 +vn 0.119181 -0.581794 0.072651 +v 63.675545 48.292320 0.000000 +vn 0.141970 -0.630836 0.060639 +v 63.493862 48.267899 0.171300 +vn 0.153156 -0.695912 0.260547 +v 63.496159 48.389942 0.461300 +vn 0.042281 -0.848094 0.111918 +v 63.138893 48.258186 0.201301 +vn 0.172199 -0.960421 0.989760 +v 63.498314 48.548042 0.691300 +vn 0.013602 -0.465423 0.485053 +v 63.195995 48.549629 0.701301 +vn 0.267156 -1.173779 0.738062 +v 63.834251 48.460606 0.451301 +vn 0.185317 -0.814212 0.511970 +v 63.767159 48.596245 0.691300 +vn -0.096632 -0.586882 0.458597 +v 62.866482 48.412437 0.491301 +vn -0.089549 -1.216397 0.935178 +v 63.168945 48.374794 0.471300 +vn -0.069062 -1.057167 1.173125 +v 63.236782 48.757805 0.891300 +vn -0.042935 -1.014863 1.152825 +v 62.907410 48.584557 0.721300 +vn -0.121575 -0.841282 1.271247 +v 62.676212 48.838814 0.911301 +vn -0.049843 -0.427680 0.662538 +v 62.956497 48.798309 0.911301 +vn -0.008554 -0.425100 0.644573 +v 63.310764 48.988297 1.041300 +vn 0.041762 -0.334863 0.743467 +v 63.079281 49.314663 1.201301 +vn 0.025128 -0.665867 1.394576 +v 63.011021 49.039818 1.071301 +vn -0.053918 -0.671360 1.423720 +v 62.771240 49.360607 1.211300 +vn 0.234332 -0.977429 1.896036 +v 63.711220 48.715286 0.831300 +vn 0.220436 -0.386202 0.827112 +v 63.840996 48.862789 0.891300 +vn 0.300632 -0.678606 1.394619 +v 63.596626 48.939491 0.981300 +vn 0.082042 -0.463445 0.767860 +v 63.511486 48.725597 0.861300 +vn 0.598892 -0.373398 1.472810 +v 63.815834 49.494530 1.181701 +vn 0.262524 -0.540124 1.495523 +v 63.401203 49.266003 1.161301 +vn 0.100430 -0.277076 0.720927 +v 63.477135 49.564564 1.255800 +vn 0.264829 -0.339183 0.734282 +v 63.711773 49.197659 1.082100 +vn 0.010489 -0.118034 0.726880 +v 63.188057 49.938606 1.352000 +vn -0.013124 -0.247990 0.735163 +v 62.814465 49.654770 1.311300 +vn 0.082445 -0.458618 1.501073 +v 63.139103 49.619987 1.291300 +vn 0.038761 -0.055374 1.583690 +v 62.846531 49.965530 1.361300 +vn -0.023743 -0.111608 1.531250 +v 63.220776 50.252697 1.375401 +vn 0.102893 0.123055 1.534312 +v 63.597946 50.557377 1.310901 +vn 0.019220 0.177686 1.578421 +v 62.883682 50.585419 1.336801 +vn 0.581251 -0.119459 1.420258 +v 64.250900 49.782101 1.085800 +vn 0.331027 -0.102380 0.727885 +v 63.891937 49.835499 1.237200 +vn 0.179098 0.048644 0.711241 +v 63.950142 50.540035 1.223400 +vn 0.185999 -0.055235 0.782124 +v 63.576385 50.220058 1.339400 +vn 0.370776 -0.110107 1.559108 +v 63.539181 49.883789 1.324500 +vn 0.296153 -0.151131 1.483071 +v 63.945637 50.188999 1.262500 +vn 0.413133 0.611923 1.904516 +v 64.167900 51.082890 0.991301 +vn 0.118914 0.348504 0.687127 +v 63.923752 51.123230 1.031301 +vn 0.251827 0.694295 1.395556 +v 63.938217 50.865322 1.157001 +vn 0.525699 0.269107 1.354398 +v 64.307663 50.550255 1.082601 +vn 0.255758 0.151575 0.696624 +v 64.249153 50.872417 1.041300 +vn -0.018267 0.754844 1.353555 +v 62.884396 51.160927 1.079200 +vn 0.054510 0.216788 0.715510 +v 63.235748 50.572208 1.334001 +vn 0.062104 0.246988 0.815186 +v 63.593945 50.871601 1.216001 +vn 0.053658 0.715510 1.419204 +v 63.587555 51.157108 1.072300 +vn 0.071054 0.413582 0.711307 +v 63.232052 51.162346 1.083100 +vn 0.136675 0.795543 1.368231 +v 63.240242 50.884556 1.243800 +vn -0.153470 -0.002481 1.227983 +v 61.242092 50.308712 1.151300 +vn -0.196083 0.229563 0.854953 +v 61.741142 50.355042 1.221300 +vn -0.297917 0.348784 1.298967 +v 61.759335 50.668522 1.141300 +vn -0.179340 0.575560 0.796290 +v 61.603249 50.864830 1.011300 +vn -0.197232 0.475789 1.030134 +v 61.936043 50.871681 1.081300 +vn -0.207537 0.567511 0.733446 +v 61.463757 51.072296 0.811300 +vn -0.069930 0.741672 0.567432 +v 61.164299 51.051712 0.801300 +vn -0.415660 1.203133 0.791748 +v 61.659466 51.339321 0.530300 +vn -0.227708 0.659104 0.433738 +v 61.485195 51.291683 0.511200 +vn -0.196410 1.330489 0.799190 +v 61.474350 51.199921 0.661301 +vn -0.254853 0.747420 0.542481 +v 61.656780 51.238827 0.681601 +vn -0.338935 0.994009 0.721456 +v 61.829967 51.392380 0.551400 +vn -0.314057 0.758105 0.754427 +v 61.788666 51.074928 0.901200 +vn -0.393653 0.923684 0.300919 +v 61.936199 51.532612 0.358100 +vn -0.198153 0.767812 0.252921 +v 61.329708 51.307522 0.341300 +vn -0.428702 1.329588 0.516283 +v 61.490437 51.355579 0.351000 +vn -0.207003 0.618116 0.239764 +v 61.660786 51.412628 0.351000 +vn -0.088478 0.244124 0.000007 +v 61.490269 51.391495 0.171200 +vn -0.806852 1.347085 -0.000985 +v 61.490242 51.391354 0.000000 +vn -0.639148 1.304301 -0.202756 +v 61.334766 51.333336 0.000000 +vn -0.778708 2.068104 -0.150492 +v 61.343376 51.337555 0.000000 +vn -0.853598 1.936303 0.379680 +v 61.937309 51.631325 0.000000 +vn -0.658900 1.304123 0.162007 +v 61.648220 51.462864 0.161301 +vn -0.040960 0.081429 0.009953 +v 61.794868 51.537243 0.159000 +vn -0.213557 -0.364620 -0.034095 +v 62.004597 48.557167 0.000000 +vn -0.333521 -0.632518 -0.021014 +v 61.901436 48.617588 0.000000 +vn -0.050152 -0.619986 0.012593 +v 61.422722 48.803394 0.121301 +vn -0.019893 -0.517956 -0.027976 +v 61.210518 48.818096 0.000000 +vn -0.636660 -2.313291 -0.200860 +v 61.555534 48.777374 0.000000 +vn -0.352593 -1.478764 -0.068848 +v 61.418201 48.810120 0.000000 +vn -0.061574 -0.604232 0.082907 +v 61.236725 48.847046 0.301300 +vn -0.240826 -0.911676 0.122067 +v 61.611435 48.773628 0.271300 +vn -0.418774 -1.511729 0.450395 +v 61.433739 48.822853 0.271300 +vn -0.298944 -1.525754 0.706729 +v 61.269775 48.905418 0.441300 +vn -0.665669 -1.489500 0.194567 +v 61.614296 48.751450 0.111300 +vn -0.556715 -1.253992 0.167857 +v 61.786556 48.674465 0.111300 +vn -0.524180 -1.296481 0.699515 +v 61.608433 48.831860 0.441300 +vn -0.268413 -0.663880 0.358195 +v 61.763958 48.779770 0.461300 +vn -0.089712 -0.593404 0.455579 +v 61.452206 49.064224 0.721300 +vn -0.123722 -0.631456 0.357501 +v 61.436317 48.872787 0.441300 +vn -0.195260 -0.626073 0.387926 +v 61.616451 48.909550 0.591300 +vn -0.382241 -1.225602 0.759405 +v 61.438751 48.958775 0.581300 +vn -0.215156 -0.695467 0.555635 +v 61.754669 49.026577 0.791300 +vn -0.300892 -0.735124 0.904767 +v 61.612461 49.220169 0.901300 +vn -0.185791 -0.569480 0.932622 +v 61.486851 49.424915 1.001300 +vn -0.221967 -0.578366 0.730919 +v 61.901043 49.185242 0.961300 +vn -0.296730 -0.538711 1.284534 +v 61.750538 49.373253 1.041300 +vn -0.137040 -0.311684 1.206352 +v 61.277969 49.645981 1.071301 +vn -0.201927 -0.252472 1.150325 +v 61.487453 49.979622 1.181300 +vn 0.073989 0.035743 1.133038 +v 60.313946 50.058231 1.131300 +vn -0.006462 0.176412 0.937249 +v 60.479214 50.350098 1.111300 +vn -0.006344 0.173205 0.920211 +v 60.831608 50.309875 1.121301 +vn 0.019913 0.434029 1.048796 +v 60.680820 50.569996 1.071301 +vn 0.401246 1.468779 -0.205615 +v 60.744854 51.363892 0.000000 +vn 0.117831 -1.378402 -0.208922 +v 60.936092 48.820488 0.000000 +vn 0.066036 -0.914161 0.007507 +v 60.693317 48.794991 0.031301 +vn 0.030695 -0.842055 0.493745 +v 60.637661 48.841923 0.381300 +vn 0.065694 -0.729313 0.599088 +v 60.862011 48.920464 0.501300 +vn 0.109189 -1.092921 0.882616 +v 60.642818 48.941792 0.551300 +vn 0.007682 -0.548693 1.129086 +v 60.674320 49.396774 0.921300 +vn 0.005468 -0.390602 0.803771 +v 60.576607 49.560028 1.001300 +vn 0.069972 -0.398789 0.899265 +v 60.480305 49.362732 0.921300 +vn -0.045738 -0.233448 1.009254 +v 60.736717 49.752026 1.061300 +vn -0.101905 -0.377491 0.995471 +v 60.806957 49.522099 0.981300 +vn 0.053082 -0.150376 0.951366 +v 60.633003 50.031746 1.111300 +vn 0.098527 0.403917 0.526826 +v 59.932133 51.235485 0.661301 +vn 0.170874 0.700508 0.913667 +v 60.126007 51.305580 0.571301 +vn 0.685806 0.903260 0.906931 +v 59.895657 51.343506 0.581300 +vn 0.400833 0.354740 0.725139 +v 59.797661 51.578873 0.521300 +vn 0.571255 0.505565 1.033447 +v 59.789783 51.465126 0.581300 +vn 0.809447 0.192226 0.584228 +v 59.653015 51.686474 0.641300 +vn 1.123106 0.266713 0.810645 +v 59.722549 51.636822 0.561300 +vn 0.406225 0.209961 0.458628 +v 59.692497 51.520218 0.641300 +vn 0.693130 0.794031 0.675476 +v 59.671307 51.264969 0.871301 +vn 0.384676 0.440675 0.374879 +v 59.773613 51.345802 0.671300 +vn 0.712409 0.231482 0.490463 +v 59.612511 51.406189 0.811300 +vn 1.646854 0.168497 -0.251300 +v 60.003010 52.259193 0.021300 +vn 0.453583 0.046294 -0.070128 +v 60.020313 52.090073 0.021300 +vn 2.513059 0.256491 -0.388543 +v 60.013756 52.122055 0.000000 +vn 1.697260 0.266167 -0.122865 +v 60.018303 52.093060 0.000000 +vn 1.192189 0.469894 -0.177884 +v 60.067951 51.965450 0.011300 +vn 0.722991 0.217350 -0.037758 +v 60.025806 52.068100 0.000000 +vn 0.090628 0.039612 -0.013076 +v 60.112728 51.863007 0.011300 +vn 1.165063 0.557336 -0.119620 +v 60.113159 51.859680 0.000000 +vn 0.842574 0.341468 1.213798 +v 59.915573 51.923252 0.341300 +vn 0.518913 0.148168 0.312737 +v 59.988106 51.815369 0.321301 +vn 0.413197 0.198191 0.429451 +v 59.984539 52.017822 0.231300 +vn 0.761484 0.105134 0.567811 +v 59.884392 52.095089 0.351300 +vn 0.440069 0.586563 0.848819 +v 60.055767 51.535507 0.441300 +vn 0.352371 0.469671 0.679664 +v 60.082958 51.674290 0.331300 +vn 0.922435 0.650211 0.829627 +v 60.032177 51.893200 0.211300 +vn 0.407494 0.323994 0.705741 +v 59.938881 51.637672 0.431300 +vn 1.476652 0.975472 0.172623 +v 60.121170 51.832531 0.111300 +vn 0.651972 0.369102 0.236228 +v 60.107433 51.799194 0.201301 +vn 1.663188 0.314703 0.666743 +v 59.950642 52.175781 0.241301 +vn 0.771197 0.251818 0.314532 +v 60.056934 51.945995 0.111300 +vn 1.228024 0.400984 0.500848 +v 60.014874 52.062317 0.121301 +vn 0.281596 0.964230 1.050325 +v 60.233467 51.486279 0.391300 +vn 0.451286 0.571772 0.814442 +v 60.153198 51.444363 0.451301 +vn 0.761960 0.839038 0.095704 +v 60.374687 51.545078 0.051300 +vn 0.834802 0.919247 0.104853 +v 60.299572 51.603027 0.141300 +vn 0.610623 1.126517 0.466863 +v 60.380547 51.464668 0.331300 +vn 0.384369 0.709109 0.293876 +v 60.408165 51.495285 0.221300 +vn 0.531158 0.868084 0.448117 +v 60.291557 51.525337 0.301300 +vn 0.559655 0.524777 0.017648 +v 60.266094 51.652821 0.011300 +vn 0.822136 0.731965 0.396598 +v 60.202286 51.658115 0.241301 +vn 0.680462 0.600593 0.054809 +v 60.188126 51.732944 0.101300 +vn 0.540727 0.573271 0.613910 +v 60.174953 51.555389 0.361300 +vn 1.443364 1.349260 -0.283471 +v 60.353283 51.557198 0.000000 +vn 0.222091 0.324774 0.722114 +v 59.897949 51.465553 0.521300 +vn 0.691381 0.000336 0.651035 +v 59.791233 51.803505 0.461300 +vn 0.027111 -0.103904 0.952738 +v 58.920826 53.098103 0.881300 +vn 0.044028 -0.168741 1.547258 +v 59.148739 52.974186 0.861300 +vn 0.157894 0.063448 1.542563 +v 58.747257 52.800655 0.911301 +vn 0.246299 -0.240374 1.676218 +v 59.522461 53.153156 0.841300 +vn 0.397534 0.389608 0.874323 +v 58.570972 52.489330 1.021300 +vn 0.182507 0.213891 0.564439 +v 58.830914 51.977249 1.131300 +vn 0.327343 0.283447 0.778825 +v 59.165440 52.250362 0.891300 +vn 0.582992 0.504815 1.387076 +v 58.885014 52.326923 0.981300 +vn 0.491099 0.199341 1.608580 +v 59.239140 52.552967 0.831300 +vn 0.231630 0.094020 0.758698 +v 59.000210 52.657425 0.891300 +vn 0.690685 0.015726 1.451747 +v 59.608555 52.415737 0.671300 +vn 0.659596 0.272960 1.417721 +v 59.379196 52.201279 0.801300 +vn 0.202133 -0.068420 0.575867 +v 59.371071 52.858570 0.821301 +vn 0.170443 -0.075495 0.584262 +v 59.439156 52.470543 0.751300 +vn 0.446385 -0.197719 1.530163 +v 59.568371 52.762268 0.751300 +vn 0.166857 -2.457453 -0.591512 +v 60.418617 48.783821 0.000000 +vn 0.308659 -1.373688 -0.437475 +v 59.975525 48.739208 0.000000 +vn 0.438402 -1.944929 -0.618314 +v 59.913788 48.725292 0.000000 +vn 0.122634 -0.958707 -0.204821 +v 60.161068 48.726345 0.171300 +vn 0.182630 -1.873076 -0.715398 +v 60.396038 48.783703 0.000000 +vn 0.177156 -1.008724 -0.071226 +v 60.496445 48.783127 0.201301 +vn 0.053555 -0.716124 -0.159376 +v 60.402157 48.779984 0.011300 +vn 0.196554 -0.717552 0.922616 +v 60.378426 49.173733 0.821301 +vn 0.203877 -0.687765 0.633444 +v 60.146767 48.837227 0.571301 +vn 0.126388 -0.667838 0.590418 +v 60.418331 48.899307 0.551300 +vn 0.162951 -0.861036 0.761220 +v 60.531509 49.035656 0.681300 +vn 0.304198 -0.591335 0.801355 +v 60.007702 48.936531 0.761300 +vn 0.290257 -0.564235 0.764629 +v 60.265385 49.001331 0.711300 +vn 0.221485 -0.861264 0.106328 +v 60.000252 48.714619 0.411301 +vn 0.065026 -0.837690 0.222612 +v 60.795902 48.803715 0.191300 +vn 0.119562 -0.763767 0.155680 +v 60.310589 48.790722 0.381300 +vn 0.191476 -0.133178 0.976340 +v 60.022640 50.079277 1.191300 +vn 0.149692 -0.114941 1.061140 +v 60.453716 49.778656 1.081300 +vn 0.263097 -0.136814 1.146154 +v 60.173573 49.783104 1.121301 +vn 0.246666 -0.317830 1.083730 +v 60.074692 49.535873 1.071301 +vn 0.239602 -0.492963 0.936860 +v 60.112301 49.139408 0.871301 +vn 0.248970 -0.512237 0.973491 +v 60.216900 49.342285 0.951301 +vn 0.393406 -0.523781 1.281737 +v 59.902855 49.504692 1.111300 +vn 0.142208 -0.388191 0.984014 +v 60.324219 49.559040 1.021300 +vn 0.130868 0.502813 0.937967 +v 60.504429 50.993656 0.871301 +vn 0.196788 0.647487 1.130475 +v 60.332733 50.926418 0.931300 +vn 0.131483 0.432615 0.755321 +v 60.496975 50.771744 0.991301 +vn 0.311355 0.349517 0.897842 +v 60.065018 50.589775 1.131300 +vn 0.126153 0.442964 0.764890 +v 60.222412 50.767895 1.041300 +vn 0.164317 0.169319 0.901138 +v 60.165874 50.332230 1.161301 +vn 0.192578 0.198440 1.056129 +v 60.311966 50.563007 1.091300 +vn 0.457096 0.258372 1.561449 +v 59.906780 50.627983 1.171300 +vn 0.184501 0.287389 1.516488 +v 60.483944 50.558132 1.071301 +vn 0.238681 0.327806 0.662254 +v 60.011978 51.385567 0.531301 +vn -0.601807 -0.105861 0.175304 +v 55.374519 50.002831 1.201301 +vn -0.735543 -0.099456 0.159640 +v 55.268650 50.124451 0.911301 +vn -0.784114 -0.106023 0.170181 +v 55.297535 49.830570 0.861300 +vn -1.006131 -0.178837 0.161064 +v 55.249763 49.991257 0.741301 +vn -0.863551 -0.034858 0.036757 +v 55.301666 49.483898 0.341300 +vn -1.309008 -0.052840 0.055718 +v 55.319958 49.062393 0.371301 +vn -1.609803 -0.100314 0.316623 +v 55.351460 49.517376 0.951301 +vn -0.743615 -0.046338 0.146257 +v 55.330555 49.190018 0.741301 +vn -1.384196 -0.203786 0.454408 +v 55.358768 49.775341 1.051300 +vn -1.576598 -0.130175 0.572943 +v 55.409550 49.556431 1.141300 +vn -1.516641 -0.011374 0.458593 +v 55.374767 49.231792 1.021300 +vn -1.453351 -0.295008 0.633727 +v 55.421310 50.094540 1.351300 +vn -0.932073 -0.179691 0.554346 +v 55.510864 49.889652 1.461300 +vn -0.540956 0.046053 0.292125 +v 55.473080 49.623245 1.331300 +vn -1.532405 0.130458 0.827523 +v 55.515701 49.362701 1.451301 +vn -1.196012 0.051749 0.696738 +v 55.575523 49.668022 1.541300 +vn -0.675597 0.029232 0.393570 +v 55.629173 49.426941 1.651300 +vn -0.488752 -0.072573 0.280132 +v 55.688988 49.732258 1.731300 +vn -1.464696 -0.217487 0.839500 +v 55.590992 49.967625 1.621301 +vn -0.518260 -0.012542 0.907629 +v 55.961536 49.541954 2.021300 +vn -1.130563 -0.079618 1.310184 +v 55.859127 50.196102 1.941300 +vn -1.081709 0.037697 1.314987 +v 55.830063 49.827110 1.911301 +vn -0.562761 -0.075223 0.480703 +v 55.693153 50.084511 1.791300 +vn -1.294557 0.163228 1.323768 +v 55.770386 49.485733 1.841300 +vn 0.847615 -1.347350 0.109892 +v 58.914993 48.213909 0.771300 +vn 0.475745 -0.681411 0.039675 +v 58.854183 48.160973 0.591300 +vn 1.273913 -0.835013 0.687456 +v 59.000134 48.427803 1.111300 +vn 0.504698 -0.330815 0.272356 +v 59.030045 48.580463 1.241301 +vn 0.997514 -0.874072 0.395342 +v 58.831863 48.194168 1.031301 +vn 0.706693 -0.619239 0.280081 +v 58.970081 48.311199 0.941300 +vn 0.549652 -0.152095 0.150978 +v 58.794678 48.482468 1.521300 +vn 1.308419 -0.454109 0.130855 +v 58.636261 47.857807 1.271300 +vn 0.695360 -0.307061 0.069517 +v 58.718681 48.057823 1.141300 +vn 0.540526 -0.354489 0.116773 +v 58.889530 48.341393 1.211300 +vn 1.258792 -0.851237 0.376026 +v 58.773491 48.227222 1.341300 +vn 1.145599 -0.706661 -0.391970 +v 58.406898 47.643345 0.811300 +vn 1.257997 -0.754911 -0.419111 +v 58.630398 47.938217 0.941300 +vn 0.739300 -0.551084 0.003224 +v 58.757317 48.107899 0.841300 +vn 0.445837 -1.089725 -0.659198 +v 58.715794 48.292786 0.000000 +vn 0.588370 -1.434105 -0.866758 +v 58.628429 48.256943 0.000000 +vn 0.426087 -1.059062 -0.784604 +v 58.306053 48.117916 0.000000 +vn 0.510969 -1.098690 -0.159920 +v 58.862339 48.202610 0.331300 +vn 0.701705 -1.214696 -0.413494 +v 58.466438 48.020779 0.271300 +vn 0.356661 -0.730848 -0.276612 +v 58.626831 48.140667 0.191300 +vn 0.611013 -0.419900 -0.336018 +v 58.279415 47.617886 0.611300 +vn 0.382465 -0.492148 -0.265587 +v 58.582901 48.026783 0.451301 +vn 0.985917 -1.115161 -0.383301 +v 58.679909 48.043804 0.651300 +vn 0.491019 -0.555387 -0.190897 +v 58.525234 47.879559 0.731300 +vn 0.942610 -1.080851 -0.374180 +v 58.419930 47.856960 0.531301 +vn 0.782582 -0.916566 -0.958334 +v 58.181278 47.889305 0.191300 +vn 0.173274 -0.303903 -0.249012 +v 58.056236 47.949833 0.031301 +vn 0.325040 -0.502599 -0.331290 +v 58.358131 48.056412 0.111300 +vn 0.375406 -0.385926 -0.393704 +v 58.297886 47.859253 0.351300 +vn 0.906484 -0.931888 -0.950669 +v 58.140633 47.645077 0.411301 +vn 0.486319 -0.499948 -0.510024 +v 58.004570 47.686150 0.241301 +vn -0.841888 -0.006707 0.021523 +v 55.182274 50.933979 0.801300 +vn -0.968282 -0.043875 0.002594 +v 55.176552 50.978333 0.591300 +vn -1.358983 -0.061578 0.003641 +v 55.185699 50.767582 0.441300 +vn -0.879737 -0.121728 -0.005227 +v 55.275642 49.755600 0.641300 +vn -1.008704 -0.057671 -0.089759 +v 55.247036 49.977371 0.291300 +vn -0.568151 -0.074269 0.151240 +v 55.242340 50.468266 0.981300 +vn -1.513006 -0.172067 0.276458 +v 55.217728 50.379414 0.791300 +vn -0.615592 -0.041258 0.060157 +v 55.191700 50.651119 0.711300 +vn -0.875836 -0.120126 0.116432 +v 55.204273 50.273968 0.581300 +vn -1.272446 0.091358 0.751616 +v 55.304741 50.823521 1.281301 +vn -0.767860 0.148930 0.600305 +v 55.466866 51.209675 1.441300 +vn -1.219993 0.236624 0.953777 +v 55.358982 51.137138 1.321301 +vn -1.516438 -0.029516 0.267576 +v 55.202579 50.706631 0.891300 +vn -0.713349 -0.003485 0.245071 +v 55.275997 51.081345 1.201301 +vn -0.853623 0.032852 0.279751 +v 55.192303 51.205826 0.931300 +vn -1.478312 -0.175727 0.437211 +v 55.301559 50.218880 1.081300 +vn -0.733367 -0.109650 0.337398 +v 55.476398 50.191830 1.501300 +vn -0.711803 -0.079788 0.270633 +v 55.337334 50.291130 1.231300 +vn -0.544669 -0.037212 0.202755 +v 55.232773 50.787182 1.071301 +vn -1.473978 -0.155363 0.393844 +v 55.283695 50.532215 1.161301 +vn -0.665883 0.089625 0.623515 +v 55.398746 50.898773 1.431300 +vn -1.187467 0.159829 1.111913 +v 55.460686 50.663265 1.531301 +vn -0.508120 -0.001353 0.319120 +v 55.355663 50.568554 1.361300 +vn -0.595960 -0.038858 0.389820 +v 55.533642 50.447220 1.621301 +vn 0.483892 -0.511688 0.613006 +v 59.326645 48.623230 0.951301 +vn 0.601397 -0.635942 0.761863 +v 59.417366 48.828823 1.051300 +vn 0.580175 -0.801274 0.601795 +v 59.545273 48.746120 0.881300 +vn 0.618140 -0.738671 0.470552 +v 59.124615 48.511497 1.041300 +vn 0.638851 -0.604095 0.662409 +v 59.220917 48.708794 1.131300 +vn 0.609677 -0.887817 0.345547 +v 59.294155 48.420635 0.611300 +vn 0.526744 -0.767049 0.298542 +v 59.423935 48.568138 0.761300 +vn 0.556976 -0.811074 0.315677 +v 59.205307 48.445248 0.831300 +vn 0.499407 -0.752155 0.285836 +v 59.061649 48.300461 0.701301 +vn 0.395656 -0.803424 -0.203880 +v 59.144638 48.356258 0.201301 +vn 0.080193 -0.184744 -0.137497 +v 59.364693 48.532047 0.000000 +vn 0.267215 -0.664174 -0.315053 +v 58.856480 48.283016 0.111300 +vn 0.157297 -0.390634 -0.185045 +v 59.065842 48.420044 0.000000 +vn 0.289902 -0.652231 -0.104837 +v 59.454830 48.468414 0.361300 +vn 0.458147 -1.030751 -0.165679 +v 59.119881 48.303463 0.461300 +vn 0.215188 -0.617209 -0.326177 +v 58.969307 48.381172 0.000000 +vn -1.445394 -0.092174 -0.570864 +v 55.305622 48.474350 0.431300 +vn -0.918824 0.109851 -0.097392 +v 55.223480 48.202225 0.651300 +vn -1.571785 0.187916 -0.166604 +v 55.220055 48.368622 0.871301 +vn -1.914748 -0.388847 -1.366489 +v 55.525654 48.483833 0.000000 +vn -0.689952 -0.060457 -0.467107 +v 55.392315 48.291637 0.241301 +vn -1.385314 -0.221541 -1.095691 +v 55.642231 47.507710 0.021300 +vn -1.415802 0.238224 -0.265444 +v 55.121319 48.085339 1.091300 +vn -1.249271 0.049284 -0.548620 +v 55.286125 47.786442 0.471300 +vn -0.598182 0.139015 0.227084 +v 55.443874 49.290310 1.251300 +vn -1.382873 0.211061 0.310768 +v 55.433846 49.018463 1.391300 +vn -0.724012 0.181022 0.138994 +v 55.367596 48.937771 1.151300 +vn -1.291298 0.447781 0.482977 +v 55.514961 48.844051 1.791300 +vn -0.790021 0.078346 -0.004397 +v 55.279877 48.673943 0.651300 +vn -0.874334 0.184507 0.018315 +v 55.255547 48.512985 1.111300 +vn -1.567688 0.280946 0.015388 +v 55.309788 48.826607 0.911301 +vn -1.372533 0.578385 0.221475 +v 55.058071 47.946415 1.511300 +vn -1.464512 0.458168 0.032208 +v 55.170689 48.226978 1.321301 +vn -1.751620 1.040405 0.643258 +v 55.302975 48.267723 2.075428 +vn -1.202538 0.710082 0.405744 +v 55.336098 48.482792 1.801300 +vn -1.297546 0.534691 0.236909 +v 55.316074 48.638027 1.351300 +vn -0.599124 0.246886 0.109389 +v 55.236794 48.343727 1.581300 +vn -0.635624 0.261927 0.121342 +v 55.401638 48.743759 1.581300 +vn -1.218215 0.454440 1.470747 +v 55.916054 49.244846 2.075428 +vn -0.249343 0.093015 0.301031 +v 55.991928 49.448242 2.075428 +vn -0.893935 0.697596 1.010100 +v 55.870174 49.186054 2.075428 +vn -0.515512 0.228926 0.263947 +v 55.536148 49.099297 1.611300 +vn -0.616817 0.323132 0.482106 +v 55.821308 49.230770 2.001300 +vn -1.500784 0.786213 1.173025 +v 55.730236 48.946327 2.075428 +vn -0.269930 0.141408 0.210980 +v 55.827106 49.131241 2.075428 +vn -1.007372 0.530783 0.694079 +v 55.657909 49.169109 1.811300 +vn -0.605841 0.319217 0.417424 +v 55.653320 48.925022 1.991301 +vn -1.331885 0.980043 0.708196 +v 55.482445 48.555779 2.075428 +vn -0.786086 0.531821 0.396673 +v 55.525913 48.620029 2.075428 +vn -1.237372 0.861419 0.870158 +v 55.683643 48.883598 2.075428 +vn -0.588310 0.333133 0.272119 +v 55.466015 48.594242 1.991301 +vn 0.714462 -0.275767 -0.364250 +v 58.528660 47.713161 1.041300 +vn 0.798734 -0.225200 -0.211941 +v 58.598335 47.627457 1.391300 +vn 1.159348 -0.411375 -0.581663 +v 58.452805 47.252460 1.241301 +vn 0.669260 -0.237476 -0.335778 +v 58.243607 46.846706 1.111300 +vn 1.066609 -0.027933 0.241996 +v 58.682629 48.057682 1.501300 +vn 1.058015 -0.196379 -0.042693 +v 58.614933 47.638615 1.751300 +vn 1.546617 -0.006626 0.171459 +v 58.545235 47.187725 2.075428 +vn 1.064104 -0.171512 -0.061069 +v 58.555676 47.189072 1.981300 +vn 1.215325 -0.316174 -0.318734 +v 58.536217 47.200089 1.611300 +vn 1.027542 -1.115001 -1.427356 +v 57.738621 47.749424 0.000000 +vn 0.506874 -0.550017 -0.704097 +v 57.747326 47.757446 0.000000 +vn 0.532584 -0.438477 -0.759712 +v 57.679329 47.166225 0.361300 +vn 0.507989 -0.465274 -0.635109 +v 58.008560 47.375530 0.471300 +vn 0.475171 -0.468924 -0.774062 +v 57.752892 47.504883 0.201301 +vn 0.771160 -0.761022 -1.256233 +v 57.861340 47.433197 0.311300 +vn 0.699454 -0.367494 -0.464145 +v 58.305443 47.346184 0.881300 +vn 1.175008 -0.676709 -1.029082 +v 58.158501 47.331738 0.671300 +vn 0.563802 -0.486183 -0.805472 +v 57.921368 46.268551 1.081300 +vn 0.377619 -0.325632 -0.539482 +v 57.686604 46.725266 0.641300 +vn 0.597814 -0.492998 -0.681637 +v 58.035011 46.995659 0.751300 +vn 0.179969 -0.247377 -0.447230 +v 57.254932 46.471184 0.571301 +vn 0.467419 -0.624511 -1.145018 +v 57.472569 46.846462 0.451301 +vn 0.886231 -0.819560 -1.313716 +v 57.854450 47.067062 0.541300 +vn -0.111862 1.054599 0.803628 +v 57.161854 53.240982 0.481300 +vn 0.164395 0.733485 0.628640 +v 57.031509 53.237698 0.511300 +vn 0.368275 0.403121 0.387157 +v 56.926628 53.106934 0.691300 +vn 0.852464 0.933126 0.896172 +v 56.826195 53.256310 0.631300 +vn -0.175096 0.551983 0.439193 +v 57.368011 53.006042 0.821301 +vn -0.273353 0.639924 0.455719 +v 57.500511 53.167423 0.671300 +vn -0.403288 0.944103 0.672338 +v 57.685944 53.267998 0.641300 +vn -0.194258 0.930308 0.829295 +v 57.595222 53.062401 0.811300 +vn -0.903377 0.993916 0.418295 +v 57.869255 53.909397 0.081300 +vn -0.611714 0.490737 -0.051040 +v 58.054264 54.118137 0.041300 +vn -1.518837 1.218462 -0.126729 +v 58.046001 54.103542 0.000000 +vn -0.779097 0.418581 0.492096 +v 58.051830 54.032150 0.271300 +vn -0.388169 0.320169 0.063771 +v 57.968700 54.012409 0.051300 +vn -1.231651 0.975888 0.266368 +v 57.999176 54.020847 0.161301 +vn -1.230567 0.693980 0.754240 +v 58.192482 54.235165 0.301300 +vn -0.071104 0.064464 0.010149 +v 58.087460 54.140457 0.131300 +vn -0.679500 0.616048 0.096993 +v 58.144379 54.223911 0.000000 +vn -0.746115 0.508668 0.177553 +v 58.239132 54.362930 0.131300 +vn 1.120152 0.591250 1.209074 +v 57.068447 53.720436 0.111300 +vn 1.052242 0.487575 0.537170 +v 56.987335 53.894852 0.091300 +vn 1.123999 0.290123 0.804872 +v 56.940262 53.875252 0.201301 +vn 1.004135 0.259185 0.719040 +v 57.018230 53.795124 0.121301 +vn 0.435971 0.114671 0.351735 +v 57.018799 53.650902 0.191300 +vn 0.803969 0.230011 0.403373 +v 56.886902 54.044228 0.211300 +vn 0.929466 0.278143 0.259699 +v 56.948135 53.988995 0.051300 +vn 0.679284 0.151946 0.616063 +v 56.712769 53.891003 0.551300 +vn 0.725527 0.183797 0.556762 +v 56.854271 53.877689 0.371301 +vn 0.771260 0.883695 0.645617 +v 57.062447 53.836899 0.011300 +vn 0.535074 0.983121 0.809721 +v 57.132706 53.792439 0.000000 +vn 0.085636 0.100444 0.078750 +v 57.115379 53.776089 0.031301 +vn 1.157351 1.362516 1.074718 +v 57.111805 53.803814 0.000000 +vn 0.243484 0.286647 0.226100 +v 57.068256 53.840805 0.000000 +vn 1.939211 0.781949 0.598443 +v 57.017864 53.888866 0.000000 +vn 1.665945 1.715158 1.315115 +v 57.045650 53.861877 0.000000 +vn 1.134153 0.627634 0.362324 +v 56.999165 53.926182 0.000000 +vn -0.420336 0.852426 1.009856 +v 57.815861 53.379448 0.601300 +vn -0.299877 0.432744 0.615418 +v 57.964958 53.551991 0.561300 +vn -0.793033 0.843204 0.848505 +v 57.881546 53.604359 0.431300 +vn -0.110652 0.275828 0.239843 +v 57.754627 53.434677 0.481300 +vn -0.652849 1.627397 1.415086 +v 57.663483 53.337246 0.551300 +vn -0.602532 0.292161 0.731246 +v 58.348709 54.002804 0.631300 +vn -0.371706 0.207145 0.507351 +v 58.185314 53.941147 0.521300 +vn -0.728045 0.404145 0.583798 +v 58.159855 54.068626 0.401300 +vn -0.995358 0.527564 0.823319 +v 58.089012 53.743847 0.531301 +vn -0.338954 0.272491 0.327252 +v 58.008324 53.810097 0.391300 +vn -0.448898 0.400654 0.706024 +v 58.211338 53.669441 0.651300 +vn 0.971307 0.653082 1.462976 +v 56.928501 53.337143 0.461300 +vn 0.362134 0.243490 0.545444 +v 56.981152 53.348442 0.421300 +vn 2.295654 0.422072 1.179033 +v 56.911198 53.506260 0.371301 +vn 0.248326 0.045657 0.127539 +v 56.905193 53.622723 0.341300 +vn 1.006122 0.171754 0.884230 +v 56.789154 53.508556 0.551300 +vn 0.579006 0.098842 0.508860 +v 56.633492 53.596699 0.711300 +vn 1.045370 0.133678 0.638293 +v 56.791164 53.702709 0.511300 +vn 1.120572 0.854939 1.120515 +v 56.923203 53.273331 0.521300 +vn 1.480196 0.718615 1.124446 +v 56.806316 53.375492 0.581300 +vn 0.711749 0.206367 0.508164 +v 56.883862 53.403534 0.461300 +vn 0.751221 0.113183 0.648027 +v 59.621693 51.894367 0.641300 +vn 0.191916 1.058279 0.711189 +v 59.926979 51.135616 0.811300 +vn 0.211666 0.714775 0.640173 +v 59.905224 51.024590 0.951301 +vn 0.269866 0.911311 0.816196 +v 60.138435 50.964485 0.941300 +vn 0.195203 0.659181 0.590381 +v 60.093376 51.139042 0.761300 +vn 0.328470 0.571089 0.475623 +v 59.804794 51.173965 0.841300 +vn 1.524475 -0.223009 -0.357499 +v 60.014046 52.451576 0.000000 +vn 0.437674 -0.155987 0.243682 +v 59.963673 52.389393 0.261300 +vn 1.137260 -0.405319 0.633187 +v 60.032074 52.628181 0.291300 +vn 0.815910 -0.067734 0.089496 +v 59.989273 52.225853 0.121301 +vn 1.019436 -0.130488 0.008744 +v 60.018902 52.450626 0.021300 +vn 2.938907 -0.682195 -0.149834 +v 60.057587 52.621960 0.000000 +vn 0.083736 -0.019437 -0.004269 +v 60.073761 52.691639 0.000000 +vn 1.799149 -0.479785 0.551935 +v 60.016182 52.436749 0.131300 +vn 0.741428 -0.273636 -0.223278 +v 60.272602 53.256355 0.000000 +vn 0.950365 -0.286935 -0.051120 +v 60.079006 52.683838 0.141300 +vn 0.790172 -0.339802 -0.207631 +v 60.261757 53.100250 0.155300 +vn 0.431973 -0.233957 0.509784 +v 60.097469 53.033291 0.511400 +vn 0.444446 -0.240712 0.524503 +v 59.906887 52.724766 0.531301 +vn 0.731095 -0.315194 0.603212 +v 59.846642 52.527611 0.501300 +vn 0.789341 -0.364593 0.422477 +v 59.962826 52.605724 0.401300 +vn 1.545941 -0.676912 0.987503 +v 60.014771 52.797298 0.451301 +vn 0.446565 -0.234065 0.276927 +v 60.311897 53.257233 0.354900 +vn 1.052894 -0.529612 0.630810 +v 60.114353 52.864254 0.341300 +vn 0.514004 1.039496 0.203248 +v 60.510891 51.467953 0.101300 +vn 0.570321 1.257005 0.201916 +v 60.513748 51.445774 0.231300 +vn 0.055039 0.773430 0.696344 +v 60.259350 51.250633 0.621301 +vn 0.142036 0.922553 0.593517 +v 60.663975 51.329876 0.451301 +vn 0.134214 0.500750 0.354036 +v 60.303139 51.400574 0.451301 +vn 0.207559 0.857638 0.560995 +v 60.486134 51.415157 0.361300 +vn 0.038323 0.951534 0.765369 +v 60.461662 51.290257 0.561300 +vn 0.238757 0.760705 0.086180 +v 60.752541 51.377373 0.111300 +vn 0.464113 1.478718 0.167524 +v 60.630356 51.415722 0.111300 +vn 0.232459 0.740641 0.083907 +v 60.627636 51.401848 0.241301 +vn 0.359581 0.597909 -0.056925 +v 60.403229 51.523056 0.000000 +vn 0.437070 0.982514 -0.089689 +v 60.586636 51.425011 0.000000 +vn 0.603614 1.463472 -0.169042 +v 60.508770 51.457127 0.000000 +vn 0.229619 0.731593 -0.051099 +v 60.612698 51.413490 0.000000 +vn 0.274624 0.705813 -0.104457 +v 60.637802 51.405544 0.000000 +vn 0.523601 -0.269080 0.675417 +v 59.707436 52.662968 0.661301 +vn 0.906386 -0.465795 1.169190 +v 59.790989 52.574543 0.561300 +vn 0.928998 -0.103640 0.882347 +v 59.847347 52.347332 0.431300 +vn 0.647746 -0.059192 0.732053 +v 59.719582 52.393982 0.571301 +vn 0.327988 -0.029972 0.370677 +v 59.551311 52.160347 0.701301 +vn 0.817557 -0.106668 0.866530 +v 59.734589 52.102821 0.521300 +vn 0.004770 0.664932 0.643630 +v 60.348625 51.117851 0.781301 +vn -0.644131 0.370317 -0.187831 +v 59.014965 55.440182 0.000000 +vn -1.669296 1.184537 -0.724248 +v 58.604507 54.825489 0.000000 +vn -0.463497 0.305527 0.232800 +v 59.229858 55.631538 0.491301 +vn -0.560756 0.362453 -0.005300 +v 58.914928 55.311348 0.211300 +vn -0.581377 0.370853 -0.010493 +v 59.027969 55.483749 0.041300 +vn -0.593840 0.398234 0.155898 +v 59.050285 55.450554 0.371301 +vn -1.549650 1.030201 -0.073660 +v 58.799171 55.125069 0.041300 +vn -0.570502 0.392805 0.594592 +v 59.003918 55.250679 0.541300 +vn -0.307446 0.211684 0.320428 +v 58.733768 54.828045 0.561300 +vn -1.417410 0.942091 0.762360 +v 58.804893 55.080715 0.381300 +vn -0.026804 0.037335 0.771795 +v 59.897285 55.176521 0.981300 +vn -0.034166 0.047590 0.983780 +v 59.674068 54.809540 0.991301 +vn -0.336812 0.234756 0.519849 +v 59.032383 55.064964 0.691300 +vn -0.334198 0.274378 0.857317 +v 59.028076 54.748768 0.831300 +vn -0.158912 0.130468 0.407657 +v 59.468185 54.972370 0.931300 +vn 0.934543 -0.500475 1.297411 +v 60.486000 54.282978 0.791300 +vn 0.361033 -0.213585 0.555153 +v 60.234768 53.908733 0.810700 +vn 1.395878 -1.279766 0.156830 +v 60.924095 54.312428 0.201301 +vn 0.307587 -0.259886 0.288348 +v 60.740822 54.369957 0.641300 +vn 0.280277 -0.240761 0.256982 +v 61.022976 54.559662 0.511300 +vn 1.571036 -0.933601 0.923565 +v 60.662663 54.079899 0.530100 +vn 1.023746 -0.801253 0.519416 +v 61.084072 54.540485 0.361300 +vn 1.104148 -0.948477 0.729228 +v 60.826950 54.331463 0.511300 +vn 0.709110 -0.609134 0.468328 +v 60.874306 54.278954 0.371301 +vn 0.418147 -0.240308 -0.176699 +v 60.422092 53.533157 0.000000 +vn 1.073058 -0.730820 -0.247991 +v 60.778080 54.112190 0.018001 +vn 0.688789 -0.469957 -0.159218 +v 60.760250 54.040676 0.151600 +vn 1.718879 -0.916592 -0.657871 +v 60.620014 53.886501 0.000000 +vn 1.055215 -0.939270 -0.435209 +v 61.122845 54.554504 0.041300 +vn 1.393473 -1.096934 -0.414764 +v 60.946133 54.351345 0.051300 +vn 0.184380 -0.115403 -0.079563 +v 60.729382 54.046795 0.000000 +vn 1.042395 -0.652434 -0.449811 +v 60.775219 54.120029 0.000000 +vn -0.702102 -0.300245 0.206518 +v 54.831718 53.337250 0.361300 +vn -1.461345 -0.624926 0.429844 +v 54.789375 53.525684 0.491301 +vn -1.597023 -0.901247 -0.431921 +v 54.738937 53.579739 0.000000 +vn -1.979508 -1.117666 -0.533800 +v 54.647358 53.741936 0.000000 +vn -1.291979 -0.721916 -0.344027 +v 54.759041 53.481190 0.131300 +vn -0.569170 -0.318034 -0.151558 +v 54.868786 53.347355 0.000000 +vn -1.335696 -0.686998 0.067543 +v 54.677929 53.655605 0.301300 +vn -0.814958 -0.408423 -0.201244 +v 55.027145 53.010742 0.051300 +vn -0.836573 -0.419256 -0.206581 +v 54.907253 53.171135 0.211300 +vn -1.300070 -0.547615 0.476833 +v 54.937447 53.251686 0.551300 +vn -0.193077 -0.051219 0.782698 +v 55.210350 54.387127 0.981300 +vn -0.349847 -0.060021 0.859113 +v 55.076405 53.887367 0.901300 +vn -0.601771 -0.232324 0.671910 +v 54.922722 53.470737 0.661301 +vn -0.493088 -0.190365 0.550559 +v 55.076370 53.188438 0.701301 +vn -0.393142 -0.204060 0.725181 +v 55.130047 53.646278 0.881300 +vn -0.660363 -0.229517 0.615366 +v 54.896412 53.814548 0.761300 +vn -0.108742 -0.082160 0.995761 +v 55.604065 53.711929 1.001300 +vn -0.083038 -0.062739 0.760384 +v 55.411217 54.088371 1.011300 +vn -0.256016 -0.119751 0.630282 +v 55.291855 53.405617 0.901300 +vn 0.240798 0.075125 0.743606 +v 56.010700 53.985325 0.951301 +vn 0.515714 0.160895 1.592568 +v 56.142773 54.254875 0.881300 +vn -0.092358 0.025305 0.870393 +v 55.445435 54.557232 1.001300 +vn 0.207756 0.171106 1.386833 +v 55.864643 54.453480 0.951301 +vn 0.234588 0.115614 -0.055322 +v 56.568302 54.661476 0.091300 +vn 1.521289 0.749749 -0.358762 +v 56.447617 54.862667 0.000000 +vn 0.993917 0.511504 0.448274 +v 56.501350 54.761059 0.251300 +vn 0.477556 0.228121 -0.072376 +v 56.682896 54.437267 0.141300 +vn 0.643375 0.307330 -0.097506 +v 56.595322 54.575768 0.000000 +vn 0.914792 0.424504 0.256708 +v 56.582603 54.550591 0.311300 +vn -0.228266 0.677355 -0.108760 +v 61.335144 51.335278 0.011300 +vn -0.240713 0.714290 -0.114691 +v 61.324352 51.329826 0.000000 +vn -0.365506 1.354255 -0.306676 +v 61.191059 51.293831 0.000000 +vn -0.009996 1.355217 -0.307021 +v 61.191067 51.298656 0.021300 +vn -0.011926 0.642352 -0.055528 +v 61.193787 51.312538 0.181300 +vn 0.253053 0.971813 -0.148415 +v 60.847446 51.335865 0.000000 +vn 0.151476 0.947778 -0.137247 +v 60.938538 51.333725 0.141300 +vn 0.225945 1.413729 -0.204720 +v 61.057861 51.317551 0.161301 +vn 0.011284 0.061603 -0.007282 +v 60.883236 51.326546 0.000000 +vn 0.143816 1.502519 -0.353728 +v 61.060707 51.292713 0.000000 +vn 0.177504 0.786547 -0.250563 +v 61.060722 51.295372 0.011300 +vn 0.437422 1.938278 -0.617458 +v 61.053493 51.293404 0.000000 +vn -0.035078 0.595121 0.474929 +v 61.313534 51.188194 0.641300 +vn -0.077386 1.312888 1.047734 +v 61.149998 51.162594 0.661301 +vn -0.071047 1.378083 0.625480 +v 61.318832 51.252010 0.501300 +vn -0.211309 1.411996 0.223778 +v 61.335144 51.335278 0.171300 +vn 0.099300 0.916102 0.251872 +v 60.897186 51.269772 0.501300 +vn -0.035598 0.690497 0.237146 +v 61.144135 51.243004 0.501300 +vn -0.221364 1.716214 0.435296 +v 61.174469 51.287498 0.341300 +vn 0.078035 0.645772 0.056672 +v 61.041264 51.306393 0.311300 +vn 0.223043 0.975827 0.022113 +v 60.827511 51.355476 0.301300 +vn -0.004817 0.788884 0.911622 +v 60.676548 50.952724 0.891300 +vn 0.097336 0.782971 0.740933 +v 60.989178 51.150871 0.681300 +vn 0.059532 0.647806 0.397488 +v 60.681278 51.160759 0.711300 +vn -0.072539 0.208026 1.019250 +v 61.440556 50.622898 1.101300 +vn -0.073098 0.612122 1.117586 +v 61.292629 50.860840 0.961300 +vn -0.046140 0.667222 1.295706 +v 61.037380 50.882027 0.941300 +vn -0.079331 0.607569 0.905514 +v 60.889877 51.011806 0.841300 +vn -0.059358 0.355820 0.770252 +v 61.038368 50.629642 1.071301 +vn -0.034766 0.471692 0.916014 +v 60.799152 50.806210 0.971300 +vn -0.101475 -0.609737 0.754723 +v 61.346054 49.257954 0.871301 +vn -0.173068 -0.541466 1.193546 +v 61.240044 49.415630 0.961300 +vn -0.063746 -0.187765 0.828402 +v 61.007713 49.958328 1.121301 +vn -0.046718 -0.465682 1.050259 +v 60.964493 49.664165 1.051300 +vn -0.080637 -0.411560 0.889643 +v 61.042889 49.475876 0.971300 +vn 0.030358 -0.510313 0.723562 +v 60.666725 49.210915 0.811300 +vn -0.029666 -0.635176 0.862821 +v 60.871475 49.336525 0.891300 +vn -0.119758 -0.538725 0.884456 +v 61.101826 49.298599 0.871301 +vn 0.001530 -0.802577 0.139193 +v 61.059307 48.824162 0.171300 +vn 0.002298 -0.885666 0.152771 +v 60.956581 48.851494 0.331300 +vn -0.122783 -0.746673 0.585582 +v 61.182941 49.124187 0.741301 +vn 0.000674 -0.750393 0.662051 +v 61.025265 49.018173 0.621301 +vn 0.040071 -0.713204 0.393484 +v 61.277794 48.983109 0.581300 +vn -0.034140 -1.063455 0.716693 +v 61.111679 48.907570 0.461300 +vn 0.000269 -0.837232 0.912104 +v 60.783897 49.036644 0.651300 +vn 0.040881 -0.819318 0.833364 +v 60.944290 49.156532 0.761300 +vn -0.040666 -1.506981 0.011772 +v 61.231285 48.819286 0.141300 +vn -0.024663 -0.913940 0.007139 +v 61.197308 48.819099 0.000000 +vn 0.008194 -0.198970 0.014033 +v 61.188656 48.819427 0.000000 +vn -0.013787 -1.298153 -0.200526 +v 60.934544 48.812580 0.051300 +vn -0.002403 -0.226269 -0.034952 +v 61.157349 48.818138 0.000000 +vn -0.656465 -0.275192 -0.500394 +v 54.860489 45.283058 1.941300 +vn -1.641363 -1.081920 -1.675820 +v 55.111805 44.694004 2.075428 +vn -1.509378 0.209627 -0.410610 +v 54.694729 46.533268 2.041300 +vn -0.695405 -0.023523 -0.333470 +v 54.618858 46.030121 2.075428 +vn -0.492764 -0.320318 -0.477880 +v 55.156910 44.662949 2.051300 +vn -1.236258 -0.377426 -0.849279 +v 54.821045 46.148243 1.591300 +vn -1.281692 -0.429139 -0.885728 +v 54.714149 45.823322 1.891300 +vn 0.557350 -0.252355 -0.351002 +v 58.065666 45.002769 2.075428 +vn 1.079965 -0.441616 -0.670938 +v 58.172047 45.237720 2.075428 +vn 1.492329 -0.387803 -0.566026 +v 58.347290 45.726887 2.075428 +vn 0.538447 -0.139923 -0.204228 +v 58.304077 45.560596 2.075428 +vn 0.799301 -0.616675 -0.744905 +v 57.878197 44.713215 2.075428 +vn 0.585357 -0.451614 -0.545521 +v 57.709209 44.494183 2.075428 +vn 0.841985 -0.545143 -0.771227 +v 57.708248 44.739510 1.871301 +vn 0.281139 -0.182023 -0.257513 +v 58.072266 45.273449 1.891300 +vn 0.182970 -0.481952 -0.699438 +v 57.040504 44.567707 1.601300 +vn 0.203277 -0.524190 -0.749448 +v 56.970795 43.954487 2.011300 +vn 0.323865 -0.835150 -1.194035 +v 56.617702 44.174992 1.761300 +vn 0.076765 -0.114665 -0.142453 +v 57.360691 44.252781 1.981300 +vn 0.853663 -1.275157 -1.584242 +v 57.331955 44.116600 2.075428 +vn 0.134424 -0.305089 -0.541234 +v 56.680977 45.012836 1.221300 +vn 0.107950 -0.245231 -0.435227 +v 57.138855 45.658085 0.971300 +vn 0.518127 -0.634415 -1.090351 +v 57.576813 45.723591 1.141300 +vn 0.589076 -0.736390 -1.258331 +v 57.080162 45.064323 1.291300 +vn 1.005376 -0.575115 -0.922753 +v 57.808014 45.469334 1.481300 +vn 0.749775 -0.763055 -1.120137 +v 57.386898 44.643948 1.721300 +vn 0.399986 -0.351647 -0.534959 +v 57.404518 45.101650 1.421300 +vn -0.356542 -0.847637 -1.274208 +v 55.919651 44.657616 1.551300 +vn -0.017040 -0.530574 -0.809894 +v 56.277905 44.536987 1.531301 +vn -0.024690 -0.768754 -1.173464 +v 56.663353 44.555138 1.511300 +vn -0.053755 -0.480314 -0.676547 +v 56.197037 43.940361 1.961300 +vn -1.236419 -0.975505 -1.298104 +v 55.151138 44.638157 2.075428 +vn -0.120292 -0.100442 -0.147521 +v 55.498852 44.459049 1.911301 +vn -0.384683 -0.321207 -0.471756 +v 55.204594 44.570404 2.075428 +vn -0.307785 -0.433903 -0.701795 +v 55.611187 44.811726 1.591300 +vn -0.215326 -0.303559 -0.490976 +v 55.812897 44.296642 1.821301 +vn -0.466225 -0.507057 -0.711842 +v 55.460598 44.263809 2.075428 +vn -0.367251 -0.343870 -0.513011 +v 55.257095 45.284611 1.531301 +vn -0.552621 -0.889179 -1.405010 +v 55.963898 45.398319 1.051300 +vn -0.014818 -0.765660 -1.280820 +v 56.312267 44.969788 1.251300 +vn -0.157515 -0.527452 -0.834619 +v 55.990349 45.018452 1.281301 +vn -0.497367 -0.547431 -0.762395 +v 55.787342 43.965942 2.075428 +vn -0.593746 -0.653511 -0.910130 +v 55.552376 44.179420 2.075428 +vn -0.348694 -0.726826 -1.024873 +v 56.179779 43.787712 2.075428 +vn -0.551834 -1.262241 -1.698035 +v 56.023247 43.862808 2.075428 +vn 0.186938 -0.607360 -0.799729 +v 56.574688 43.748131 2.075428 +vn 0.385386 -1.161400 -1.448135 +v 56.962910 43.871910 2.075428 +vn 0.464800 -0.731453 -0.884733 +v 57.032600 43.916195 2.075428 +vn -1.381163 0.232790 -0.325894 +v 55.279995 51.320576 0.000000 +vn -0.849671 0.013515 -0.305447 +v 55.306366 51.824768 0.081300 +vn -0.046444 -0.002590 -0.004008 +v 55.228321 50.507038 0.161301 +vn -1.360019 0.006718 -0.228758 +v 55.255295 50.475166 0.000000 +vn -0.424845 -0.008877 -0.069291 +v 55.262051 50.151829 0.000000 +vn -0.286727 0.015261 -0.050307 +v 55.261127 51.336449 0.091300 +vn -0.799040 -0.000420 -0.141006 +v 55.256672 50.753963 0.000000 +vn -1.225875 -0.127883 -0.629760 +v 55.477314 48.541588 0.051300 +vn -1.454328 -0.151516 -0.747250 +v 55.483456 48.735504 0.000000 +vn -0.619814 -0.168448 -0.315684 +v 55.379463 48.740898 0.201301 +vn -1.084928 -0.058527 -0.160810 +v 55.363747 49.212337 0.021300 +vn -0.926849 -0.137363 -0.063240 +v 55.289661 49.716827 0.011300 +vn -0.790592 -0.108429 -0.195621 +v 55.290936 49.727924 0.000000 +vn -2.254023 -0.341825 -0.545720 +v 55.365425 49.235275 0.000000 +vn -1.163257 -0.078057 -0.104478 +v 55.264797 50.102581 0.000000 +vn 0.424387 -0.684804 -0.779018 +v 56.836746 47.021477 0.111300 +vn 0.158202 -0.438086 -0.437194 +v 56.589943 47.012188 0.031301 +vn -0.371309 -0.542997 -0.685638 +v 55.892826 47.093697 0.000000 +vn -0.646921 -0.946048 -1.194567 +v 55.991455 47.026253 0.000000 +vn -0.061619 -0.332346 -0.404733 +v 56.302017 46.994659 0.000000 +vn 0.008952 -0.012065 -0.015179 +v 57.484188 47.420624 0.111300 +vn 0.528033 -0.830270 -0.990574 +v 57.447563 47.530121 0.000000 +vn 0.282471 -0.460528 -0.761790 +v 57.252823 47.012016 0.271300 +vn 0.677676 -0.907578 -1.337553 +v 57.123020 47.314926 0.000000 +vn -1.253979 -0.401366 -1.041550 +v 55.744167 47.244507 0.000000 +vn -0.781716 -0.046648 -0.448375 +v 55.554688 47.906754 0.051300 +vn -1.633421 -0.293518 -0.862307 +v 55.651104 47.520908 0.000000 +vn 0.354242 -0.013560 0.275510 +v 47.426502 39.152195 1.271300 +vn 0.212443 0.022993 0.118330 +v 47.365513 38.436390 1.381300 +vn 0.607325 0.024802 0.340640 +v 47.383419 38.821980 1.321301 +vn 0.900726 0.204602 1.241935 +v 46.958385 39.705067 1.621301 +vn 0.461224 0.071118 0.345949 +v 47.255795 38.832573 1.501300 +vn 0.522134 0.108410 0.379634 +v 47.120331 39.428349 1.541300 +vn 0.230313 0.020427 0.242602 +v 47.262962 39.126595 1.431300 +vn 2.545825 1.036139 -0.261604 +v 47.015450 39.297585 1.781301 +vn 2.381842 0.930647 0.502851 +v 47.149784 38.990250 1.661301 +vn 0.454416 0.124703 -0.047465 +v 47.343903 38.289307 1.671300 +vn 0.198756 0.036657 0.124851 +v 47.132339 39.195419 1.591300 +vn 0.607057 0.232046 0.316640 +v 46.947933 39.541389 1.691300 +vn 1.062907 0.001030 0.019569 +v 47.410255 37.635017 1.611300 +vn 1.620576 0.230597 0.720403 +v 47.268082 38.527534 1.571301 +vn 2.533983 0.406150 0.055741 +v 47.350468 38.028622 1.461300 +vn 1.098471 0.830630 0.738434 +v 49.696289 42.425522 0.981300 +vn 0.551599 0.312277 0.442399 +v 49.643211 42.522385 0.951301 +vn 0.599805 0.498361 0.828439 +v 49.465935 42.463448 1.171300 +vn 1.044338 0.491176 1.276222 +v 49.439911 42.735149 1.041300 +vn 1.326412 0.587227 0.999884 +v 49.578976 42.635849 0.951301 +vn 0.472895 0.313755 0.511823 +v 49.520885 42.596790 1.051300 +vn 0.217214 0.436800 1.348243 +v 48.819664 42.474785 1.361300 +vn 0.154868 0.250195 0.803322 +v 49.208397 42.362595 1.321301 +vn 0.203008 0.180747 0.673298 +v 49.329170 42.684792 1.151300 +vn 0.324668 -0.542449 0.976027 +v 49.615353 40.431042 1.201301 +vn 0.240127 -0.401199 0.721877 +v 49.288837 40.235615 1.201301 +vn 0.279374 -0.441781 1.113380 +v 49.589466 40.666691 1.301300 +vn 0.208788 -0.119403 0.788433 +v 49.312786 41.203671 1.451301 +vn 0.323315 -0.184900 1.220915 +v 49.078121 40.925396 1.471300 +vn 0.150384 -0.143321 0.701146 +v 49.743572 40.975155 1.331300 +vn 0.190992 -0.182021 0.890476 +v 49.350391 40.807205 1.381300 +vn 0.540282 0.487226 0.514436 +v 49.774261 42.345394 1.001300 +vn 0.626237 0.595827 0.834043 +v 49.638058 42.422520 1.071301 +vn 0.779919 0.847560 1.151731 +v 49.702293 42.309055 1.111300 +vn 0.296380 0.339937 0.444186 +v 49.810883 42.201313 1.121301 +vn 0.816553 1.023546 0.979748 +v 49.866112 42.262547 1.011300 +vn 0.351887 0.355483 1.612280 +v 48.912083 42.247719 1.411301 +vn 0.187692 0.208094 0.917567 +v 49.007637 41.926361 1.461300 +vn 0.291158 0.349803 0.735083 +v 49.594265 42.272575 1.211300 +vn 0.121089 0.096347 0.603913 +v 49.447147 41.595261 1.421300 +vn 0.222668 0.190152 0.699739 +v 49.875542 41.979687 1.231300 +vn 0.254866 0.194371 1.191499 +v 49.512131 42.000454 1.341300 +vn 0.298654 0.255041 1.534360 +v 49.682095 41.801426 1.341300 +vn 0.218967 0.446143 0.358292 +v 49.993877 42.215900 0.991301 +vn 0.637127 0.940163 1.002349 +v 49.952667 42.115891 1.111300 +vn 0.528037 0.684425 1.068586 +v 49.700279 42.114902 1.231300 +vn 0.419873 0.531056 1.403831 +v 46.498566 40.263519 1.641300 +vn 0.351681 0.436130 1.177851 +v 46.718887 39.953747 1.691300 +vn 0.269073 0.346034 0.790573 +v 46.691696 39.814964 1.761300 +vn -0.271425 1.067900 1.568830 +v 46.115837 40.259247 1.671300 +vn -0.226166 0.541421 0.860326 +v 45.603046 40.179577 1.611300 +vn 0.046960 0.227241 0.470228 +v 46.240177 40.378994 1.611300 +vn 0.026431 0.225435 0.504697 +v 46.429741 40.132893 1.711300 +vn -0.218730 0.745659 0.741940 +v 45.833961 39.997429 1.821301 +vn -0.001253 0.120995 0.104854 +v 45.698605 39.858223 1.921300 +vn -0.016153 1.560013 1.351905 +v 46.236713 39.846462 1.941300 +vn 0.012878 0.189172 0.289663 +v 45.974899 40.128338 1.741301 +vn -0.101728 0.293971 0.406852 +v 45.343067 39.992733 1.681300 +vn 0.127086 0.087560 0.094689 +v 46.970673 39.400028 1.751300 +vn 0.537424 0.634086 1.418497 +v 46.355335 40.010567 1.801300 +vn 0.380336 0.448743 1.003872 +v 46.291946 39.907696 1.871301 +vn 0.441656 0.753828 0.969523 +v 46.686539 39.715096 1.841300 +vn -0.566199 1.021519 0.994708 +v 47.736488 43.566082 0.971300 +vn -0.162718 0.657971 0.685377 +v 47.595268 43.507282 0.951301 +vn -0.237080 0.958663 0.998593 +v 47.584679 43.379665 1.071301 +vn -0.287495 0.657722 1.219843 +v 47.991875 43.508839 1.081300 +vn -0.177495 0.406068 0.753114 +v 47.885864 43.666512 0.971300 +vn -0.004107 1.376958 0.796911 +v 47.265476 43.442204 0.941300 +vn -0.297172 0.836309 0.506000 +v 47.387238 43.512016 0.821301 +vn -0.287142 0.808082 0.488922 +v 47.404400 43.378956 1.051300 +vn 0.060709 0.375693 1.133769 +v 47.794407 42.942268 1.311300 +vn 0.040770 0.252300 0.761392 +v 48.372139 42.728199 1.351300 +vn -0.052111 0.718544 1.746649 +v 47.818314 43.211391 1.201301 +vn -0.055941 0.479136 0.844659 +v 47.786987 43.419281 1.081300 +vn -0.022601 0.428803 0.748759 +v 47.574226 43.215988 1.191300 +vn -0.493824 0.105070 0.606748 +v 45.776440 42.645916 1.061300 +vn -0.433496 0.191282 0.790682 +v 45.965439 42.544037 1.181300 +vn -0.675644 0.248398 1.275024 +v 45.934258 42.715874 1.131300 +vn -0.434759 0.203858 0.802917 +v 45.816345 42.371494 1.141300 +vn -0.607598 0.284902 1.122118 +v 45.991467 42.272335 1.261300 +vn -0.263402 0.249128 0.901953 +v 46.408978 42.601246 1.321301 +vn -0.337655 0.319358 1.156213 +v 46.407848 42.889687 1.241301 +vn -0.324748 0.282769 1.079975 +v 46.168316 42.439438 1.291300 +vn -0.246378 0.144338 0.649696 +v 46.125412 42.772091 1.191300 +vn -0.000196 0.139197 0.392608 +v 46.791000 42.785793 1.331300 +vn 0.095260 0.599595 1.641243 +v 46.691593 43.381710 1.101300 +vn -0.010267 0.615675 1.262191 +v 46.828503 43.124310 1.211300 +vn -0.029680 0.382414 0.800124 +v 47.277622 43.173218 1.201301 +vn -0.047873 0.616829 0.852035 +v 47.174332 43.344772 1.071301 +vn 0.070942 0.261236 0.473192 +v 47.014221 43.152775 1.201301 +vn 0.238340 0.633649 0.520345 +v 47.104095 43.574699 0.801300 +vn 0.192245 0.511101 0.419710 +v 47.043564 43.449654 0.981300 +vn 0.221593 1.312985 1.139404 +v 47.162891 43.433483 0.971300 +vn 0.150205 0.319498 0.550370 +v 46.847118 43.329628 1.111300 +vn 0.348105 0.740445 1.275497 +v 46.907505 43.490726 1.001300 +vn 0.062272 1.206172 1.207727 +v 47.027397 43.330334 1.101300 +vn 0.217446 -0.342937 0.829667 +v 49.005413 40.370411 1.331300 +vn 0.229762 -0.703099 1.054843 +v 49.195538 39.980083 1.051300 +vn 0.205549 -0.199481 0.975413 +v 49.054214 40.656273 1.421300 +vn 0.185774 -0.180290 0.881575 +v 48.801121 40.835560 1.511300 +vn 0.095605 -0.256251 0.941820 +v 48.746738 40.557995 1.441300 +vn 0.205404 -0.311305 0.877402 +v 49.315464 40.518620 1.311300 +vn 0.027854 -0.405142 1.141536 +v 48.447281 40.537407 1.441300 +vn 0.056366 -0.877913 1.145126 +v 48.951595 39.948624 1.071301 +vn 0.043805 -0.849685 1.127488 +v 48.698639 40.091854 1.191300 +vn 0.131767 -0.561457 0.999473 +v 48.931572 40.103863 1.191300 +vn -0.097286 -0.551462 0.758392 +v 48.292747 40.337109 1.321301 +vn -0.066579 -0.444332 0.596861 +v 48.457413 40.074268 1.151300 +vn -0.074217 -0.495311 0.665339 +v 48.661880 40.271988 1.321301 +vn -0.350923 0.347254 1.025079 +v 46.396229 42.315521 1.411301 +vn -0.300181 0.280813 1.001315 +v 46.186043 42.162155 1.391300 +vn -0.597657 0.105609 0.682702 +v 45.711464 42.240730 1.091300 +vn -0.973020 0.171937 1.111478 +v 45.695431 42.085350 1.101300 +vn -0.455652 -0.016756 0.549339 +v 45.748928 41.880318 1.161301 +vn -1.070282 -0.039359 1.290345 +v 45.838203 41.747540 1.231300 +vn -0.461751 0.107628 0.782353 +v 46.036808 42.025669 1.351300 +vn -0.702512 0.053071 0.807726 +v 45.834072 42.094212 1.221300 +vn -0.357654 0.244776 1.094211 +v 46.231384 41.915489 1.461300 +vn -0.015475 0.437961 1.149318 +v 47.400517 42.954594 1.301300 +vn 0.013105 0.314835 0.985137 +v 47.495934 42.669296 1.411301 +vn 0.047950 0.244720 0.881673 +v 47.594498 42.289707 1.531301 +vn 0.021065 0.354648 1.030960 +v 47.870789 42.559822 1.441300 +vn 0.081649 0.302972 1.021646 +v 48.121723 42.222431 1.521300 +vn 0.023611 0.308583 0.956729 +v 47.183163 42.507206 1.471300 +vn -0.138103 0.550024 1.481343 +v 47.193188 42.779045 1.371301 +vn -0.119553 0.486669 1.284144 +v 47.123093 42.972919 1.291300 +vn 0.037051 0.063715 0.816417 +v 47.555401 41.648869 1.641300 +vn 0.065762 -0.005916 0.837813 +v 47.891762 41.453270 1.641300 +vn 0.043005 0.069791 0.888768 +v 48.154884 41.545822 1.621301 +vn 0.066507 0.099702 0.897416 +v 48.131577 41.831406 1.591300 +vn 0.021806 -0.213608 0.916580 +v 48.013344 40.860210 1.541300 +vn 0.033330 -0.326498 1.400983 +v 47.948402 41.153950 1.611300 +vn 0.084597 -0.281384 1.008358 +v 47.436886 40.749786 1.501300 +vn 0.204100 -0.448850 1.269945 +v 47.635735 40.256878 1.321301 +vn 0.009650 -0.360650 0.813721 +v 47.795002 40.665207 1.471300 +vn 0.016305 -0.609415 1.375000 +v 47.617867 40.570217 1.431300 +vn 0.198082 -0.664007 0.722633 +v 48.082699 40.147686 1.171300 +vn 0.086571 -0.718125 1.140869 +v 47.904720 40.269024 1.261300 +vn 0.063248 -0.524656 0.833510 +v 48.004021 40.408089 1.341300 +vn 0.209235 -0.330971 0.714824 +v 47.748917 40.393223 1.351300 +vn 0.139852 -0.221220 0.477786 +v 47.783382 40.091045 1.201301 +vn -0.461771 -0.019138 1.130058 +v 46.140522 41.745949 1.421300 +vn -0.410770 0.047777 1.281358 +v 46.442421 41.852524 1.531301 +vn -0.453644 -0.123336 0.659151 +v 45.943226 41.842247 1.321301 +vn -0.863770 -0.195509 1.072324 +v 46.024200 41.703888 1.361300 +vn -0.450192 -0.207097 0.621341 +v 45.935635 41.656395 1.281301 +vn -0.829535 -0.100401 1.539965 +v 46.087307 41.878868 1.401300 +vn -0.746210 -0.077578 1.182744 +v 46.134201 41.235596 1.331300 +vn -0.784595 -0.380769 1.162491 +v 46.094013 41.582130 1.371301 +vn -0.248738 -0.010021 1.068201 +v 46.362576 41.702442 1.511300 +vn 0.113556 0.142844 0.951262 +v 48.725765 41.664547 1.551300 +vn 0.113345 0.141316 0.691660 +v 48.615341 42.241009 1.461300 +vn 0.129704 0.153671 0.853256 +v 48.500141 41.910507 1.541300 +vn 0.110582 0.032262 0.691054 +v 49.028793 41.482685 1.511300 +vn 0.577578 -0.046669 1.977586 +v 49.261997 41.422577 1.471300 +vn -0.297620 0.172529 1.052449 +v 46.416676 42.052116 1.491301 +vn -0.173984 0.141169 0.816390 +v 46.644592 41.928200 1.561300 +vn -0.130612 0.161960 0.865185 +v 46.902134 42.029057 1.581300 +vn -0.220758 0.196023 1.065789 +v 46.629723 42.183308 1.511300 +vn -0.055975 0.090515 0.835567 +v 47.205158 41.847191 1.621301 +vn 0.010410 0.367363 1.260304 +v 47.209469 42.163391 1.571301 +vn -0.112059 0.434271 1.178052 +v 46.870384 42.345116 1.501300 +vn -0.256201 0.484890 1.376577 +v 46.606560 42.432835 1.421300 +vn 0.084179 0.024196 0.736780 +v 48.671238 41.423038 1.571301 +vn 0.111774 0.032128 0.978304 +v 48.437462 41.627361 1.591300 +vn 0.149818 -0.053507 1.438438 +v 48.410553 41.416470 1.601300 +vn 0.040377 -0.167014 0.867698 +v 48.257011 40.963787 1.571301 +vn 0.147022 -0.118672 1.034939 +v 48.849785 41.157478 1.541300 +vn 0.147680 -0.038552 1.220157 +v 48.544327 41.253357 1.581300 +vn 0.068934 -0.032126 0.661566 +v 48.255878 41.252224 1.611300 +vn 0.078878 -0.185440 0.952804 +v 48.536869 41.031445 1.571301 +vn -0.004894 -0.378694 1.095619 +v 48.521263 40.767902 1.521300 +vn -0.004416 -0.341703 0.988599 +v 48.285618 40.742016 1.511300 +vn -0.054200 -0.363396 0.937033 +v 48.139236 40.583351 1.441300 +vn -0.133863 -0.555883 0.525113 +v 48.222332 39.904163 0.911301 +vn 0.000000 0.000000 0.981598 +v 47.570408 41.357708 1.641300 +vn -0.042572 -0.071393 1.027263 +v 47.228466 41.561611 1.641300 +vn 0.025942 0.234126 1.037434 +v 47.839706 41.996674 1.591300 +vn 0.032047 0.091346 0.863991 +v 47.846275 41.735985 1.621301 +vn 0.033692 0.250781 1.116249 +v 47.526516 41.942753 1.611300 +vn -0.186133 0.006867 1.318066 +v 46.905983 41.754494 1.611300 +vn -0.133566 0.004927 0.945821 +v 46.895954 41.482647 1.611300 +vn -0.027747 -0.118529 0.597744 +v 47.607735 41.033352 1.591300 +vn -0.105239 -0.127598 0.838260 +v 47.229595 41.273167 1.621301 +vn -0.040796 -0.274317 0.941742 +v 47.230583 41.020782 1.571301 +vn -0.262512 -0.108094 1.233278 +v 46.620541 41.695129 1.571301 +vn -0.157699 -0.112579 0.763179 +v 46.535542 41.445183 1.531301 +vn -0.194982 -0.139195 0.943609 +v 46.877766 41.169170 1.561300 +vn -0.467347 -0.286711 1.255398 +v 46.271572 41.568954 1.461300 +vn -0.399619 -0.245161 1.073466 +v 46.244522 41.394119 1.411301 +vn -0.055634 -0.095143 0.604080 +v 47.039993 40.820343 1.521300 +vn 0.484703 -0.369400 1.074172 +v 47.659325 39.899185 1.191300 +vn 1.141843 -0.299852 1.706842 +v 47.445854 39.876160 1.331300 +vn 0.309357 -0.079385 0.454932 +v 47.528275 40.076176 1.311300 +vn 0.245532 -0.212169 1.280745 +v 47.276489 40.629894 1.481300 +vn 0.157645 -0.019682 0.504993 +v 47.177330 40.454777 1.471300 +vn 0.491241 -0.114778 1.061263 +v 47.377769 40.264187 1.401300 +vn 0.196035 -0.147297 0.635530 +v 47.476933 40.439308 1.411301 +vn 0.266215 0.030633 0.549910 +v 47.163837 39.650402 1.481300 +vn 0.247867 -0.041846 0.521147 +v 47.366291 39.653969 1.351300 +vn 0.972004 -0.140769 1.904184 +v 47.221226 39.869732 1.441300 +vn 0.459675 0.039530 1.182907 +v 47.031803 40.079781 1.521300 +vn 0.454244 -0.037702 1.174544 +v 47.289768 40.072468 1.421300 +vn 0.630663 -0.052759 0.540479 +v 47.518917 38.925129 1.141300 +vn 0.357445 -0.080545 0.346524 +v 47.571465 39.671413 1.211300 +vn 1.280051 -0.140952 1.847495 +v 47.295170 39.401299 1.381300 +vn 1.386441 -0.117973 1.783442 +v 47.489185 39.435341 1.241301 +vn -0.035359 -0.060470 1.470457 +v 46.762009 40.982891 1.521300 +vn -0.037765 -0.069043 1.583524 +v 46.940834 40.645222 1.511300 +vn -0.126460 0.165916 0.548460 +v 46.327614 40.714931 1.501300 +vn -0.344121 0.424696 1.438909 +v 46.393436 40.903790 1.461300 +vn -0.131993 0.162899 0.551917 +v 46.104713 40.974770 1.371301 +vn -0.184893 0.033124 0.992071 +v 46.674004 40.791172 1.511300 +vn -0.103790 0.018594 0.556904 +v 46.464703 41.120403 1.461300 +vn 0.002031 0.242345 0.890694 +v 46.550655 40.419037 1.581300 +vn 0.003676 0.438562 1.611856 +v 46.608181 40.602318 1.531301 +vn -0.256587 0.465526 1.392481 +v 46.286686 40.542812 1.551300 +vn 0.411610 0.187167 1.070447 +v 46.982574 39.902081 1.571301 +vn 0.471800 0.238216 1.219353 +v 46.757095 40.111984 1.621301 +vn 0.440323 0.146204 1.845094 +v 47.092049 40.276936 1.491301 +vn 0.566419 0.203917 1.785658 +v 46.803604 40.275806 1.571301 +vn 0.084388 0.143976 0.624861 +v 46.866711 40.450787 1.531301 +vn -0.443424 1.506910 0.000000 +v 49.871773 49.315632 0.000000 +vn -0.117609 1.612970 0.186270 +v 50.259655 49.419773 0.221300 +vn -0.066593 0.913296 0.105470 +v 50.245918 49.386436 0.501300 +vn -0.068939 0.966086 0.028849 +v 50.661713 49.449089 0.221300 +vn -0.211581 1.910128 0.653478 +v 49.924988 49.182713 0.921300 +vn 0.016344 1.365226 0.862762 +v 50.513172 49.132320 1.071301 +vn -0.046921 1.509938 0.808347 +v 50.224026 49.311466 0.761300 +vn -0.037995 0.981491 0.322056 +v 50.604034 49.301861 0.801300 +vn 0.432663 1.216236 0.935327 +v 51.017662 49.206406 0.831300 +vn 0.234011 0.657814 0.505882 +v 50.929661 49.014690 1.121301 +vn 0.200143 0.551572 0.266029 +v 51.420418 49.055439 0.841300 +vn 0.219147 1.538172 0.557659 +v 50.659122 49.399151 0.511300 +vn 0.162908 0.824195 0.376346 +v 51.064312 49.334171 0.531301 +vn 0.305113 0.939210 0.063038 +v 51.062412 49.408691 0.000000 +vn 0.781029 2.402232 0.160137 +v 51.150726 49.379978 0.000000 +vn 0.163850 1.539501 0.040726 +v 50.657471 49.455395 0.000000 +vn 0.200608 1.396358 0.108067 +v 50.964458 49.422722 0.000000 +vn 0.203980 0.634132 0.120720 +v 51.461205 49.263615 0.231300 +vn 0.459402 1.428186 0.271884 +v 51.075191 49.389687 0.221300 +vn -0.706737 0.659974 -0.045550 +v 44.898964 40.079746 0.861300 +vn -1.071664 1.000754 -0.069070 +v 45.039902 40.210655 0.571301 +vn -1.400364 1.522966 0.394687 +v 45.056782 40.149704 1.151300 +vn -0.776774 0.616592 0.295171 +v 45.263542 40.469467 0.851300 +vn -0.926427 0.996978 -0.348586 +v 44.119450 39.411049 0.831300 +vn -0.936957 1.131283 -0.240023 +v 44.459698 39.639809 0.581300 +vn -1.273259 1.689535 -0.070111 +v 44.257668 39.528076 1.141300 +vn -0.876417 1.001488 0.150117 +v 44.697357 39.859848 1.151300 +vn -1.334111 1.524498 -0.302335 +v 44.542404 39.767715 0.861300 +vn -0.360642 0.537382 0.439293 +v 44.949463 39.932949 1.431300 +vn -0.243773 0.343688 0.129760 +v 45.295147 40.189465 1.401300 +vn -0.595391 0.561366 0.603554 +v 45.654289 40.551430 1.341300 +vn -0.676240 0.720758 0.530137 +v 45.311039 40.380901 1.161301 +vn -0.273550 0.439852 0.421786 +v 45.788197 40.352261 1.551300 +vn -0.847329 1.180181 1.504312 +v 45.513493 40.384468 1.371301 +vn -1.273350 1.168483 -0.830202 +v 45.128700 39.993931 0.000000 +vn -0.775127 0.706330 -0.476343 +v 44.714943 39.618622 0.111300 +vn -0.377636 0.339712 -0.232553 +v 45.172962 40.227818 0.261300 +vn -1.075967 0.967913 -0.662595 +v 44.936008 39.827499 0.061300 +vn -0.416779 0.406184 -0.185959 +v 44.750294 39.799038 0.321301 +vn -1.374784 1.339834 -0.613402 +v 44.788506 39.957279 0.581300 +vn -0.679909 0.592933 -0.529082 +v 44.735821 39.543247 0.000000 +vn -1.496134 1.421570 -1.799028 +v 44.262768 38.989498 0.000000 +vn -0.146731 0.139419 -0.176437 +v 44.131203 38.851032 0.000000 +vn -0.338667 0.309012 -0.272884 +v 44.430492 39.306873 0.111300 +vn -0.795092 0.683116 -0.685303 +v 44.457119 39.226208 0.000000 +vn -0.266044 0.263456 -0.129046 +v 44.087246 39.136345 0.321301 +vn -0.758061 0.766900 -0.377603 +v 44.429787 39.487148 0.331300 +vn -0.175025 0.027608 0.881082 +v 50.275017 47.622593 1.661301 +vn -0.190814 -0.284476 1.493836 +v 50.115612 47.250313 1.641300 +vn -1.112907 0.054301 1.314954 +v 49.351318 47.652256 1.371301 +vn -0.457508 0.022323 0.540568 +v 49.098366 47.795486 1.151300 +vn -0.381988 -0.037826 0.725827 +v 49.275040 47.299721 1.321301 +vn -0.321391 0.068222 0.712813 +v 49.695976 47.462234 1.551300 +vn -0.829436 -0.227457 1.399843 +v 49.578068 47.117855 1.471300 +vn -0.934797 -0.137197 0.972423 +v 49.035965 47.440231 1.111300 +vn -0.642617 -0.091004 0.665874 +v 49.006901 47.071239 1.031301 +vn -0.267325 -0.477332 1.530639 +v 50.403458 46.696747 1.571301 +vn -0.240436 -0.163714 0.681847 +v 49.970081 46.875320 1.551300 +vn -0.384181 -0.180373 1.050399 +v 49.468452 46.779057 1.351300 +vn -1.381544 0.326277 0.938726 +v 49.182941 48.153603 1.151300 +vn -1.051378 0.141633 0.762167 +v 48.923244 47.894650 0.891300 +vn -1.746125 0.263314 -0.010397 +v 48.738094 47.721966 0.101300 +vn -0.914067 0.128742 0.151719 +v 48.817657 47.944160 0.611300 +vn -1.371661 0.193192 0.227672 +v 48.781319 48.016129 0.331300 +vn -0.647367 0.001882 -0.007542 +v 48.732658 47.694210 0.311300 +vn -0.918949 -0.035026 0.383452 +v 48.761826 47.328220 0.591300 +vn -1.283163 -0.048908 0.535429 +v 48.862118 47.214897 0.821301 +vn -0.695404 -0.026505 0.290173 +v 48.883022 47.542255 0.901300 +vn -1.324380 0.391183 -0.190654 +v 48.885353 48.363228 0.051300 +vn -1.587783 0.467529 -0.229283 +v 48.799892 48.048618 0.000000 +vn -1.009373 0.166047 -0.153396 +v 48.786758 48.043884 0.081300 +vn -0.604024 0.099365 -0.091794 +v 48.780056 47.928036 0.000000 +vn -0.566540 0.002619 -0.071875 +v 48.733929 47.369713 0.121301 +vn -1.523006 0.006907 -0.192976 +v 48.750946 47.725544 0.000000 +vn -0.379759 0.537199 0.231212 +v 49.899811 49.238083 0.751300 +vn -0.792386 1.413275 0.414629 +v 49.631390 49.081718 0.771300 +vn -0.895375 1.143323 0.502264 +v 49.282703 48.883430 0.551300 +vn -0.536914 0.685597 0.301184 +v 49.374413 48.836639 0.821301 +vn -0.863377 1.007479 0.768965 +v 49.535515 48.776253 1.081300 +vn -0.024651 0.046535 -0.000212 +v 49.871773 49.315632 0.221300 +vn -0.241099 0.455126 -0.002072 +v 49.526684 49.131817 0.000000 +vn -0.783805 1.411031 0.119112 +v 49.882931 49.299038 0.491301 +vn -0.725102 1.387809 0.166529 +v 49.534103 49.136806 0.241301 +vn -0.437696 0.837729 0.100523 +v 49.559139 49.117489 0.511300 +vn -0.664674 0.378245 0.025507 +v 48.879917 48.335468 0.321301 +vn -0.740353 0.379461 -0.014907 +v 49.039604 48.635635 0.031301 +vn -1.249995 0.648304 0.244728 +v 48.916111 48.299557 0.601300 +vn -0.803688 0.423231 0.150370 +v 49.070221 48.608021 0.571301 +vn -1.313479 0.691692 0.245751 +v 49.031307 48.630054 0.301300 +vn -0.548934 0.447270 -0.007623 +v 49.249367 48.897167 0.271300 +vn -0.561729 0.291265 0.441428 +v 49.018982 48.236168 0.881300 +vn -0.976119 0.833148 0.860308 +v 49.167511 48.552929 0.861300 +vn 0.340875 0.877947 1.210041 +v 50.786572 48.725681 1.371301 +vn 0.018430 0.389086 0.756013 +v 50.618725 48.383884 1.551300 +vn 0.016299 0.344090 0.668584 +v 50.356064 48.882088 1.301300 +vn -0.454557 1.148354 0.998590 +v 50.000668 48.980541 1.161301 +vn -0.363181 0.559731 0.694839 +v 49.750858 49.029488 0.991301 +vn -0.313427 0.834170 1.303437 +v 50.163177 48.559605 1.461300 +vn -0.103799 0.663001 0.729750 +v 50.155197 49.180843 1.001300 +vn -0.409949 0.236023 0.606576 +v 49.339771 48.475948 1.131300 +vn -0.260528 0.175572 0.697333 +v 49.458073 48.013229 1.391300 +vn -0.239727 0.279199 0.724811 +v 49.984314 48.198345 1.541300 +vn -0.720621 0.660391 1.192424 +v 49.612038 48.357750 1.361300 +vn -0.366881 0.336217 0.607085 +v 49.799343 48.688534 1.291300 +vn -0.023180 0.093959 1.564128 +v 50.434422 47.994865 1.641300 +vn -0.205693 0.222171 1.564249 +v 49.819328 47.834370 1.571301 +vn -2.497559 0.173467 -0.430420 +v 48.742302 47.189289 0.000000 +vn -2.321511 0.579282 -0.537312 +v 48.658794 46.570526 0.000000 +vn -0.511596 0.063863 -0.099555 +v 48.708691 46.872547 0.000000 +vn -1.449519 0.114174 0.198052 +v 48.731209 47.355835 0.351300 +vn -0.792427 0.206794 0.024076 +v 48.549732 46.245716 0.121301 +vn -0.779712 0.131002 0.207144 +v 48.615414 46.470627 0.351300 +vn -1.436341 0.188418 -0.016850 +v 48.710304 47.028477 0.121301 +vn -1.584428 0.266204 -0.085955 +v 48.667221 46.698257 0.101300 +vn -0.700676 0.117723 -0.038012 +v 48.702145 46.986843 0.351300 +vn -0.543271 0.064718 0.420247 +v 48.819035 46.884678 0.751300 +vn -0.757148 0.090197 0.585692 +v 48.746040 46.401802 0.731300 +vn -1.133674 0.123061 0.545868 +v 48.741062 46.964806 0.571301 +vn -0.681502 -0.041607 0.856970 +v 48.925751 46.546730 0.941300 +vn -0.671886 -0.163042 1.064788 +v 49.220940 46.950043 1.221300 +vn -0.398450 -0.014303 0.761236 +v 49.172276 46.628124 1.141300 +vn -0.476417 0.035059 0.572976 +v 49.054787 46.175579 1.071301 +vn -0.092614 -0.199164 0.848370 +v 50.296555 46.371819 1.451301 +vn -0.300492 -0.093881 0.854187 +v 49.775185 46.358681 1.391300 +vn -0.423508 0.205581 -0.144244 +v 48.275131 45.542938 0.021300 +vn -0.601936 0.292069 -0.204755 +v 48.406921 45.884598 0.121301 +vn -1.712900 0.831126 -0.582662 +v 48.415573 45.817390 0.000000 +vn -0.991259 0.433634 1.251633 +v 48.561417 45.385971 0.861300 +vn -0.589537 0.299111 0.465107 +v 48.221455 45.085098 0.701301 +vn -0.582590 0.255292 0.757162 +v 48.459820 45.124863 0.871301 +vn -1.173127 0.605952 -0.227854 +v 48.095844 45.289845 0.271300 +vn -2.695829 1.390959 -0.495554 +v 48.132614 45.259136 0.000000 +vn -1.129124 0.510703 0.235338 +v 47.930717 44.961926 0.231300 +vn -0.822182 0.479110 0.265581 +v 48.228622 45.379120 0.521300 +vn -1.096220 0.525099 0.220634 +v 48.016422 45.031601 0.491301 +vn -0.905190 0.321698 0.575211 +v 48.020412 44.720982 0.671300 +vn -0.146325 0.023415 0.665844 +v 48.823658 44.995930 1.041300 +vn -0.220194 0.015530 0.830059 +v 48.949833 44.646961 1.081300 +vn -0.079517 -0.091693 0.739504 +v 49.282204 44.761978 1.131300 +vn -0.113089 -0.043843 0.852603 +v 49.167328 45.058292 1.131300 +vn -0.635788 0.191906 1.370689 +v 48.634800 45.061756 0.961300 +vn -0.256385 0.116311 0.580029 +v 48.541500 44.806225 0.971300 +vn -0.368794 0.076337 0.814448 +v 49.038433 45.393387 1.101300 +vn -0.225616 0.068100 0.588652 +v 48.716938 45.333881 0.961300 +vn -0.436735 0.087682 1.523615 +v 48.735939 44.732101 1.031301 +vn -0.587822 0.199514 1.188616 +v 48.269798 44.780201 0.841300 +vn -0.025134 -0.053601 1.543357 +v 48.949371 44.056198 1.031301 +vn -0.068054 0.002339 0.655039 +v 48.738197 44.155220 1.031301 +vn -0.170408 0.005857 1.640220 +v 48.842655 44.394150 1.041300 +vn -0.086179 0.002962 0.829495 +v 48.653656 44.496029 1.021300 +vn -1.105603 0.322887 0.294945 +v 43.017143 46.803711 0.241301 +vn -0.771712 0.225376 0.205872 +v 42.940582 46.523289 0.261300 +vn -0.646713 0.294429 0.213716 +v 43.050762 46.717865 0.461300 +vn -1.158421 0.597362 0.173933 +v 43.140636 47.139793 0.021300 +vn -1.001531 0.449465 0.531996 +v 43.174538 46.981834 0.471300 +vn -0.572546 0.139791 0.219649 +v 43.046452 46.401669 0.651300 +vn -1.719142 0.419741 0.659524 +v 43.103840 46.621002 0.661301 +vn -0.457291 0.584624 0.462180 +v 43.703075 47.288990 0.741301 +vn -0.750237 0.959142 0.758258 +v 43.624821 47.441231 0.471300 +vn -0.423300 0.314543 0.301339 +v 43.367702 47.232208 0.481300 +vn -0.496532 0.368959 0.353471 +v 43.233334 46.840614 0.701301 +vn -0.797271 0.580233 0.908641 +v 43.437660 47.074390 0.731300 +vn -0.604684 0.805058 0.163115 +v 43.591206 47.527077 0.211300 +vn -0.457225 0.372260 0.095999 +v 43.143639 47.081558 0.241301 +vn -1.069682 0.865909 0.223555 +v 43.331184 47.374184 0.000000 +vn -1.306864 1.057908 0.273124 +v 43.324554 47.365993 0.000000 +vn -1.004578 0.826696 0.418950 +v 43.334087 47.318054 0.231300 +vn -1.067024 0.344452 -0.047599 +v 43.000263 46.864666 0.031301 +vn -0.428378 1.344378 0.802783 +v 44.049046 47.473400 0.721300 +vn -0.344834 0.696453 0.456521 +v 43.959774 47.606182 0.451301 +vn -0.138283 1.515326 0.933452 +v 45.091503 47.571781 0.831300 +vn 0.049033 0.845251 0.641975 +v 44.872593 47.521004 0.881300 +vn -0.135352 1.183350 0.650810 +v 44.317043 47.737938 0.431300 +vn -0.126353 0.616016 0.279228 +v 44.406315 47.605156 0.691300 +vn -0.269170 1.312298 0.594838 +v 44.761005 47.686974 0.671300 +vn 0.062628 0.521097 0.022461 +v 44.711369 47.846767 0.000000 +vn 0.040873 0.405597 0.030941 +v 44.605072 47.857479 0.000000 +vn -0.125531 1.074408 0.078848 +v 44.258526 47.807045 0.171300 +vn -0.166738 1.427089 0.104730 +v 44.234741 47.816837 0.000000 +vn -0.046604 0.504725 0.053766 +v 44.632816 47.841793 0.171300 +vn -0.073629 0.793097 0.193255 +v 44.694050 47.786560 0.421300 +vn 0.132937 1.384159 0.268609 +v 45.054741 47.751919 0.421300 +vn 0.064439 0.656717 0.129306 +v 45.021263 47.801708 0.181300 +vn -0.707254 1.406062 0.203243 +v 43.890812 47.708752 0.000000 +vn -0.433889 1.347787 0.503910 +v 43.903976 47.689167 0.181300 +vn -0.154484 0.498591 0.049952 +v 43.969471 47.734646 0.000000 +vn -1.002192 0.044884 1.026631 +v 45.637939 42.600998 0.971300 +vn -0.848811 0.034783 0.543280 +v 45.515297 42.048588 0.861300 +vn -0.584573 0.103701 0.551784 +v 45.671841 42.443043 1.011300 +vn -0.750302 -0.116280 -0.051225 +v 45.428600 42.231300 0.321301 +vn -1.612062 -0.249834 -0.110059 +v 45.465645 41.979053 0.351300 +vn -0.715056 -0.064207 0.198087 +v 45.467232 42.281376 0.771300 +vn -1.488124 -0.133623 0.412244 +v 45.433189 42.475388 0.711300 +vn -0.802473 -0.144150 -0.221143 +v 45.532032 42.023693 0.081300 +vn 0.413228 0.085322 0.550297 +v 45.659027 46.422993 1.211300 +vn 0.787629 0.218141 1.033792 +v 45.754307 46.173752 1.191300 +vn 0.496867 -0.022957 0.884347 +v 45.483307 45.967445 1.351300 +vn 0.669865 -0.030950 1.192257 +v 45.578583 45.718204 1.291300 +vn 0.371715 -0.017174 0.661595 +v 45.819103 45.916065 1.161301 +vn 0.073297 -0.088220 1.023114 +v 45.025612 45.985073 1.461300 +vn 0.534934 -0.207175 1.559576 +v 45.167957 45.755424 1.431300 +vn 0.343083 0.041854 1.420818 +v 45.371433 46.205532 1.371301 +vn 0.317179 -0.153344 0.830235 +v 45.279831 45.517342 1.361300 +vn 0.220964 -0.267921 0.960070 +v 45.109264 45.161663 1.301300 +vn 0.815977 0.008076 0.861971 +v 46.018131 46.086033 0.971300 +vn 0.421883 -0.084606 0.651785 +v 45.654404 45.479980 1.211300 +vn -0.068599 -0.278107 1.726148 +v 44.651882 45.806099 1.471300 +vn -0.022026 -0.094233 0.522365 +v 44.816406 45.579315 1.441300 +vn -0.226715 -0.668813 1.647708 +v 44.478596 45.436543 1.401300 +vn -0.053754 -0.358747 1.343184 +v 44.969776 45.369129 1.391300 +vn -0.632876 -0.483674 0.817782 +v 43.532864 45.427292 0.981300 +vn -0.841058 -1.075539 1.382717 +v 43.935757 45.240269 1.161301 +vn -0.272973 -0.463284 0.786683 +v 44.187859 45.313370 1.311300 +vn -0.780999 -0.691191 1.649461 +v 43.987278 45.540012 1.311300 +vn -0.237987 -0.210621 0.502624 +v 43.735172 45.466915 1.161301 +vn -0.301462 -0.583018 0.995327 +v 44.508049 44.998440 1.221300 +vn -0.374541 -0.519826 0.686956 +v 44.150074 45.046963 1.141300 +vn -0.269284 -0.457572 0.602899 +v 44.422764 44.820602 1.091300 +vn -0.110236 -0.477283 1.052091 +v 44.363262 45.142097 1.271300 +vn -0.120538 -0.418186 0.950980 +v 44.654140 45.229218 1.341300 +vn -0.322788 -0.258693 0.271116 +v 43.744602 45.184052 1.001300 +vn -0.463787 -0.375792 0.286664 +v 43.391502 45.404552 0.791300 +vn -0.748703 -0.752649 0.668884 +v 43.614403 45.144714 0.811300 +vn -0.953631 -0.747600 0.089741 +v 43.225105 45.401127 0.361300 +vn -0.480249 -0.376492 0.045194 +v 43.423107 45.124550 0.161301 +vn -1.257937 -1.227332 0.033866 +v 43.448147 45.105232 0.391300 +vn -0.756634 -0.732692 0.282747 +v 43.718258 44.828938 0.411301 +vn -0.826066 -0.786642 0.289219 +v 43.509098 45.122112 0.611300 +vn -1.461965 -1.137912 0.390773 +v 43.294495 45.387527 0.581300 +vn -0.315227 -0.377109 0.128732 +v 44.060200 44.625034 0.651300 +vn -0.417698 -0.454720 0.031993 +v 43.966053 44.585838 0.191300 +vn -0.498835 -0.548480 0.044210 +v 44.152473 44.434025 0.411301 +vn -0.863728 -1.159067 1.014445 +v 43.964500 44.982445 0.991301 +vn -0.284314 -0.345610 0.351723 +v 43.851036 44.918209 0.821301 +vn -0.805565 -0.938556 0.627447 +v 43.768051 44.862415 0.631300 +vn -1.134186 -1.060260 -0.191575 +v 43.684921 44.842674 0.171300 +vn -0.837015 -0.782459 -0.141380 +v 43.702690 44.854618 0.000000 +vn -1.888509 -1.765582 -0.318710 +v 43.624176 44.938599 0.000000 +vn -0.405087 -0.426294 -0.049331 +v 44.184891 44.400024 0.000000 +vn 0.454076 0.212375 -0.084787 +v 46.193005 46.757908 0.041300 +vn 0.184154 0.048590 -0.033069 +v 46.268967 46.483627 0.061300 +vn 2.119496 0.559241 -0.380605 +v 46.200073 46.703011 0.000000 +vn 0.389394 0.061909 -0.071278 +v 46.317169 46.214783 0.091300 +vn 0.914152 0.171418 -0.138454 +v 46.316227 46.146065 0.000000 +vn 0.699151 0.131102 -0.105890 +v 46.284382 46.315891 0.000000 +vn 0.730600 0.299476 0.025731 +v 46.097870 46.971096 0.261300 +vn 0.535865 0.222945 0.109223 +v 46.193573 46.613689 0.521300 +vn 1.271002 0.254505 0.257729 +v 46.238911 46.367020 0.541300 +vn 1.888767 0.454696 -0.018154 +v 46.209888 46.696957 0.271300 +vn 0.518722 0.124875 -0.004986 +v 46.277550 46.417095 0.301300 +vn 1.450453 0.371684 1.071554 +v 45.888531 46.601398 1.011300 +vn 0.953110 0.139960 0.701473 +v 46.113586 46.499657 0.761300 +vn 0.672571 0.098764 0.495001 +v 45.964352 46.363174 0.991301 +vn 1.016244 0.431150 0.435900 +v 46.081558 46.887825 0.511300 +vn 0.875935 0.085907 0.388979 +v 46.196117 45.964695 0.721300 +vn 0.454994 0.024225 0.305687 +v 46.150627 46.247414 0.761300 +vn 0.510263 0.031982 0.354253 +v 46.052456 45.819908 0.941300 +vn 0.438077 1.301735 0.002939 +v 44.987034 47.813637 0.000000 +vn 0.118300 0.315407 0.017250 +v 45.376804 47.667202 0.201301 +vn 0.724714 1.111972 0.260621 +v 45.693993 47.410503 0.471300 +vn 0.460715 0.748120 0.008838 +v 45.340954 47.691658 0.000000 +vn 1.354891 2.199272 0.025147 +v 45.398472 47.656223 0.000000 +vn 0.490565 1.181068 0.828143 +v 45.371788 47.531277 0.691300 +vn 0.216427 0.521062 0.365359 +v 45.074482 47.668789 0.671300 +vn 0.701690 0.887691 0.820816 +v 45.525719 47.176868 0.961300 +vn 0.414966 0.657349 0.359828 +v 45.644478 47.304913 0.721300 +vn 0.248319 0.645180 0.194927 +v 45.388107 47.614548 0.451301 +vn 0.481952 0.299817 0.255623 +v 46.026608 46.754482 0.771300 +vn 0.385581 0.311628 0.357056 +v 45.734882 46.883694 0.991301 +vn 1.011372 0.956881 1.154160 +v 45.853504 47.047798 0.751300 +vn 0.507770 0.341392 0.000000 +v 45.906826 47.255245 0.000000 +vn 2.503703 1.683307 -0.000510 +v 46.014065 47.095741 0.000000 +vn 0.714425 0.790609 -0.031193 +v 45.685410 47.477036 0.211300 +vn 0.881350 0.861933 0.051569 +v 45.861866 47.309246 0.000000 +vn 0.111042 0.108630 0.006508 +v 45.919323 47.236656 0.231300 +vn 0.405899 0.375580 0.082709 +v 45.925186 47.156242 0.491301 +vn 0.996551 0.645914 -0.159804 +v 46.064392 47.020889 0.011300 +vn 1.511586 0.979733 -0.242394 +v 46.061554 47.022472 0.000000 +vn -2.434726 -0.319800 -0.050268 +v 42.913666 46.218758 0.000000 +vn -1.162238 -0.602413 -0.150304 +v 43.186188 45.423161 0.131300 +vn -2.088576 -0.208540 0.818887 +v 43.102108 46.354736 0.781301 +vn -0.732319 -0.005958 0.370326 +v 43.144447 46.166302 0.841300 +vn -1.175257 -0.015111 0.529692 +v 43.058460 46.168739 0.671300 +vn -0.904998 -0.197217 0.560978 +v 43.117680 45.919353 0.711300 +vn -1.286633 0.124605 0.100468 +v 42.929283 46.575939 0.051300 +vn -1.272925 0.062717 0.169149 +v 42.927834 46.237564 0.271300 +vn -0.514206 -0.060458 0.056363 +v 42.902657 46.292938 0.061300 +vn -0.729705 -0.085795 0.079984 +v 42.967739 45.963142 0.301300 +vn -1.214875 -0.202646 0.305795 +v 43.026112 45.930088 0.511300 +vn -0.734255 -0.122477 0.184819 +v 42.972332 46.207230 0.481300 +vn -1.876650 0.083465 0.390740 +v 42.979641 46.465199 0.461300 +vn -1.727878 -0.592432 0.449668 +v 43.071453 45.683422 0.331300 +vn -1.212533 -0.399774 0.082087 +v 42.939842 46.004635 0.091300 +vn -0.675032 -0.222559 0.045699 +v 43.035259 45.719337 0.111300 +vn -1.531772 -0.640577 0.959189 +v 43.234146 45.925358 0.901300 +vn -1.448192 -0.459769 1.055752 +v 43.226833 45.667389 0.751300 +vn -0.446035 -0.234682 0.225068 +v 43.138126 45.655949 0.551300 +vn -0.312741 0.333020 0.734413 +v 43.543953 46.844604 0.971300 +vn -0.713454 0.231587 1.507499 +v 43.613449 46.096027 1.201301 +vn -0.677866 0.252793 1.451807 +v 43.711479 46.559589 1.171300 +vn -0.240774 0.202215 0.764543 +v 44.029690 46.749435 1.221300 +vn -0.230432 0.193529 0.731703 +v 43.895748 46.249676 1.311300 +vn -0.373507 0.052309 0.427852 +v 43.176514 46.477062 0.831300 +vn -1.172308 -0.126021 1.245953 +v 43.274509 46.241695 0.971300 +vn -0.417596 0.124826 0.509032 +v 43.454220 46.386623 1.081300 +vn -0.882483 0.263789 1.075710 +v 43.325607 46.649605 0.911301 +vn -0.465594 -0.204758 0.821546 +v 43.800434 45.799992 1.281301 +vn -0.712762 -0.233616 0.812426 +v 43.359898 45.684551 0.941300 +vn -0.761948 -0.249737 0.868490 +v 43.553909 45.718594 1.121301 +vn -0.550382 -0.180394 0.627341 +v 43.397541 45.987015 1.061300 +vn -0.188212 -0.071021 0.556743 +v 44.303055 45.643871 1.431300 +vn -0.568093 -0.154689 1.742572 +v 44.105049 45.920444 1.391300 +vn -0.013224 0.450633 0.643304 +v 44.760403 47.132271 1.151300 +vn 0.251552 0.400641 0.624422 +v 45.291801 47.417252 0.901300 +vn 0.366991 0.830770 1.302363 +v 45.073177 47.294357 1.041300 +vn -0.348089 0.717334 1.296984 +v 43.837128 47.053768 1.001300 +vn -0.309115 0.706043 1.300120 +v 44.392258 46.945000 1.201301 +vn -0.235670 0.534600 1.540559 +v 44.244576 46.411907 1.371301 +vn -0.239972 0.856366 1.450118 +v 44.548519 47.411564 0.951301 +vn -0.102685 0.366441 0.620509 +v 44.191391 47.243755 0.991301 +vn -0.004387 0.041845 0.641808 +v 44.467758 46.079956 1.451301 +vn 0.084593 0.098760 0.653518 +v 45.198330 46.498852 1.361300 +vn 0.078399 0.400159 1.477732 +v 44.844200 46.272804 1.441300 +vn -0.059472 0.159204 0.831441 +v 44.629318 46.610332 1.361300 +vn 0.885216 0.530010 1.415115 +v 45.510960 46.696991 1.201301 +vn 0.367284 0.333056 0.694020 +v 45.304516 47.004044 1.161301 +vn 0.312480 0.522347 1.485334 +v 44.994602 46.819778 1.291300 +vn 0.809400 0.048493 1.050922 +v 46.125977 45.459637 0.901300 +vn 1.238983 0.025516 1.464358 +v 45.878326 45.666683 1.091300 +vn 0.458285 0.009438 0.541649 +v 45.917950 45.464371 1.061300 +vn 0.299027 -0.352378 1.513682 +v 45.391560 45.315308 1.281301 +vn 0.344768 -0.026800 1.093346 +v 45.486553 45.138180 1.221300 +vn 0.153347 -0.105933 0.944183 +v 45.315567 44.890663 1.221300 +vn 0.166770 -0.115206 1.026835 +v 45.626186 44.894657 1.171300 +vn 0.976440 0.106894 0.318743 +v 46.334751 45.973557 0.361300 +vn 0.940444 0.102953 0.306993 +v 46.253635 46.147968 0.551300 +vn 0.698157 0.168040 0.260042 +v 46.338745 45.662937 0.551300 +vn 0.920988 0.123290 0.682550 +v 46.216557 45.701286 0.741301 +vn 0.816756 0.163887 0.492174 +v 46.268505 45.892864 0.591300 +vn 1.030520 0.275893 0.607038 +v 46.420288 45.380360 0.541300 +vn 1.292997 0.305961 0.097796 +v 46.382393 45.848934 0.121301 +vn 0.813592 0.181659 -0.071109 +v 46.348354 45.953899 0.000000 +vn -0.359041 -0.476052 0.570023 +v 44.170944 44.675392 0.841300 +vn -0.397461 -0.526994 0.631019 +v 44.399281 44.443310 0.791300 +vn -0.433849 -0.455260 0.195526 +v 44.427746 44.257595 0.611300 +vn -0.138841 -0.521818 1.117524 +v 44.790913 45.007870 1.261300 +vn -0.121162 -0.455372 0.975223 +v 44.716785 44.813435 1.161301 +vn -0.258799 -0.406332 0.584993 +v 44.145340 44.838932 0.981300 +vn -0.247660 -0.419508 0.997281 +v 44.662121 44.607979 1.061300 +vn -0.302908 -0.382990 1.055705 +v 44.911648 44.631145 1.141300 +vn -0.299987 -0.317172 0.635004 +v 44.406876 44.629166 0.951301 +vn 0.013481 -0.308144 1.078603 +v 45.010666 44.842319 1.211300 +vn 0.711974 0.247525 1.126540 +v 46.403366 44.742382 0.841300 +vn 0.539586 0.211300 1.186346 +v 46.205753 44.211868 1.041300 +vn 0.424895 0.129929 0.965422 +v 46.341251 44.315014 0.961300 +vn 0.285118 0.087186 0.647828 +v 46.262291 44.647530 0.951301 +vn 0.227746 -0.001484 1.330077 +v 45.803844 44.146500 1.131300 +vn 0.155225 0.145386 0.913518 +v 46.272987 44.040173 1.031301 +vn 0.272302 0.103327 0.991130 +v 46.037060 44.086399 1.091300 +vn 0.363463 -0.023829 1.922203 +v 45.871082 43.974804 1.121301 +vn 0.108820 -0.007134 0.575503 +v 45.910706 43.772491 1.111300 +vn 0.107021 0.040610 1.313478 +v 46.146351 43.798378 1.091300 +vn 0.724643 0.270427 1.193791 +v 46.632835 44.221859 0.821301 +vn 0.569862 0.212664 0.938801 +v 46.529827 44.321304 0.861300 +vn 0.260950 0.180930 0.701010 +v 46.401600 43.777191 1.051300 +vn 0.425672 0.172740 1.093333 +v 46.489178 44.077072 0.941300 +vn 1.280704 0.630733 0.105130 +v 46.710705 44.876713 0.261300 +vn 0.519872 0.249277 0.142639 +v 46.727863 44.743652 0.431300 +vn 0.637780 0.375560 0.075767 +v 46.693821 44.937664 0.101300 +vn 0.520601 0.180993 0.499720 +v 46.467884 44.556805 0.841300 +vn 0.465501 0.203116 0.516301 +v 46.527851 44.826077 0.681300 +vn 0.682835 0.281326 0.453549 +v 46.665180 44.460506 0.701301 +vn 1.520585 0.674350 -0.146813 +v 46.629444 45.087181 0.121301 +vn 0.914898 0.514011 -0.158546 +v 46.756306 44.806755 0.000000 +vn -0.068535 -0.050576 -0.015773 +v 44.896145 43.632618 0.191300 +vn -1.842821 -1.359921 -0.424115 +v 45.034100 43.505337 0.000000 +vn -0.574198 -0.423733 -0.132149 +v 45.054844 43.477226 0.000000 +vn -1.603382 -1.419174 -0.361496 +v 44.707565 43.894440 0.000000 +vn -0.676682 -0.521807 0.893803 +v 45.164562 43.788986 0.951301 +vn -0.466185 -0.358108 0.346776 +v 44.748074 43.906616 0.621301 +vn -1.150595 -0.763129 0.753715 +v 44.993431 43.577526 0.611300 +vn 0.040880 -0.054957 1.023014 +v 45.559757 44.151089 1.141300 +vn -0.291144 -0.207075 0.639115 +v 45.372879 43.712143 1.021300 +vn -0.785483 -0.517225 1.320209 +v 45.363132 43.368187 0.891300 +vn -0.277405 -0.159607 0.745695 +v 45.501629 43.413109 0.991301 +vn -0.402871 -0.329889 0.836789 +v 45.276436 43.550900 0.911301 +vn -0.081145 -0.004968 0.995262 +v 46.050476 43.492916 1.121301 +vn -0.164673 -0.134798 1.235207 +v 45.710548 43.890968 1.121301 +vn -0.128841 -0.105466 0.966427 +v 45.463600 43.917740 1.091300 +vn -0.256944 -0.160179 1.627771 +v 45.761185 43.708118 1.111300 +vn -0.147800 -0.115887 0.692160 +v 45.606087 43.652039 1.081300 +vn -0.431054 0.318708 0.422933 +v 47.582420 43.956547 0.491301 +vn -1.191364 0.838663 1.108722 +v 47.508152 43.798164 0.531301 +vn -0.215945 0.377995 0.516578 +v 47.425449 43.670258 0.601300 +vn -0.422083 0.529073 0.536900 +v 47.567089 43.620888 0.761300 +vn -0.636738 0.798139 0.809947 +v 47.572105 43.756813 0.631300 +vn -0.152305 0.576425 1.070899 +v 47.330879 43.739227 0.511300 +vn -0.124706 0.471970 0.876838 +v 47.410862 43.853252 0.461300 +vn -0.100888 0.407546 0.697797 +v 47.343624 44.024948 0.351300 +vn 0.509805 0.552654 0.539875 +v 46.948006 43.771008 0.681300 +vn 0.373610 0.938470 0.807321 +v 47.173344 43.597160 0.691300 +vn 0.375130 0.676327 1.071269 +v 47.156181 43.730221 0.541300 +vn 0.171615 0.309407 0.490085 +v 47.236168 43.844250 0.441300 +vn -0.102549 0.774234 0.454491 +v 47.240154 43.533627 0.751300 +vn -0.120015 0.871746 0.924921 +v 47.334309 43.572830 0.681300 +vn 0.109949 0.418794 0.321033 +v 47.242451 43.655674 0.591300 +vn -0.000316 0.709895 0.225454 +v 47.353233 44.404957 0.041300 +vn -0.387364 0.692496 0.076651 +v 47.525070 44.436142 0.041300 +vn -0.845641 1.511765 0.167335 +v 47.565556 44.463360 0.000000 +vn -0.671410 1.612290 0.404379 +v 47.530224 44.448647 0.000000 +vn -0.195678 0.954146 0.264474 +v 47.496445 44.441719 0.000000 +vn -0.180037 0.555142 0.481006 +v 47.334625 44.199646 0.241301 +vn -0.120598 0.371864 0.322204 +v 47.425629 44.333134 0.121301 +vn -0.025220 0.720299 1.085162 +v 47.207001 44.210243 0.231300 +vn -0.378502 0.966506 1.538648 +v 47.428768 44.238842 0.231300 +vn -0.507842 0.838944 1.088423 +v 47.431908 44.144554 0.291300 +vn -0.912277 0.916453 0.737135 +v 47.525352 44.364033 0.131300 +vn -0.475913 0.478091 0.384545 +v 47.624931 44.430984 0.171300 +vn -0.470926 1.280477 1.063365 +v 47.433640 44.410820 0.031301 +vn -0.783063 0.883751 0.895162 +v 47.514614 44.272461 0.231300 +vn 0.155250 0.555608 0.713808 +v 47.278683 44.318687 0.131300 +vn 0.238971 0.855229 1.098741 +v 47.162220 44.312687 0.161301 +vn 0.470403 0.474106 0.654889 +v 46.962910 44.214832 0.331300 +vn 0.333915 0.351195 0.525665 +v 47.073795 44.229130 0.241301 +vn 0.233804 0.870673 0.833285 +v 47.092545 44.398392 0.091300 +vn 0.326257 1.064981 0.979160 +v 47.078953 44.329002 0.171300 +vn 0.263923 0.510667 0.841968 +v 47.129734 44.110092 0.311300 +vn 0.063702 0.382727 0.611183 +v 47.116417 43.968586 0.401300 +vn 0.108037 0.649097 1.036554 +v 47.235317 44.060581 0.331300 +vn 0.152972 0.818208 0.333347 +v 47.183262 44.429981 0.000000 +vn 0.990650 1.787649 0.837986 +v 47.046680 44.466606 0.000000 +vn 0.092906 0.798035 0.368197 +v 47.222889 44.401672 0.051300 +vn 0.144901 1.244651 0.574257 +v 47.135258 44.435543 0.000000 +vn -0.688762 0.792507 1.219044 +v 47.457375 44.017075 0.381300 +vn -0.385817 0.443931 0.682860 +v 47.529057 44.125519 0.351300 +vn -0.683118 0.396443 0.611607 +v 47.710468 43.837788 0.711300 +vn -0.327583 0.481920 1.532204 +v 48.317822 43.848484 1.031301 +vn -0.150357 0.221196 0.703265 +v 48.142559 43.983700 0.951301 +vn -0.555186 0.466329 1.563483 +v 48.021225 43.805721 0.961300 +vn -0.214861 0.180473 0.605079 +v 48.179893 43.659348 1.061300 +vn -0.675393 0.363184 1.364792 +v 48.020092 44.094162 0.861300 +vn 0.006861 0.149842 0.643825 +v 48.120350 43.281914 1.181300 +vn -0.129598 0.408233 1.365137 +v 48.369171 43.485355 1.131300 +vn -0.131137 0.119892 1.405939 +v 48.532459 44.281994 1.001300 +vn -0.131135 0.119885 1.405940 +v 48.644756 43.935745 1.041300 +vn -0.020600 0.128536 0.684449 +v 48.534721 43.705112 1.081300 +vn -0.240627 0.081832 0.638130 +v 48.351620 44.425510 0.941300 +vn -0.255823 0.208770 0.831765 +v 48.110958 44.263706 0.871301 +vn -0.566956 0.192810 1.707714 +v 48.266617 44.175560 0.941300 +vn -0.232251 0.078984 0.699557 +v 48.439018 44.062519 1.011300 +vn -1.189682 -0.230999 -0.414094 +v 45.491848 42.370224 0.041300 +vn -1.632500 -0.389086 -0.413636 +v 45.309452 42.910347 0.221300 +vn -0.835586 -0.199151 -0.211717 +v 45.350945 42.938244 0.031301 +vn -0.360367 -0.189267 -0.181918 +v 45.329975 43.008255 0.000000 +vn -1.329520 -0.562974 -0.368846 +v 45.243828 43.211700 0.000000 +vn -1.719730 -0.284231 -0.094389 +v 45.357655 42.641506 0.471300 +vn -0.706702 -0.116801 -0.038788 +v 45.374393 42.616608 0.241301 +vn -0.803708 -0.089436 0.229142 +v 45.391838 42.411434 0.541300 +vn -0.899326 -0.179003 0.215435 +v 45.393570 42.677700 0.651300 +vn -0.722193 -0.176855 -0.033414 +v 45.298435 42.890888 0.431300 +vn -0.506097 0.004114 0.465336 +v 45.521759 42.522884 0.861300 +vn -1.142594 -0.085437 1.090321 +v 45.468258 42.727917 0.801300 +vn -0.880544 -0.133881 0.480265 +v 45.414757 42.932949 0.761300 +vn -0.383776 -0.193955 0.377408 +v 45.227207 43.373203 0.761300 +vn -1.118837 -0.565446 1.100273 +v 45.333504 43.143417 0.751300 +vn -0.518606 -0.280420 0.344262 +v 45.244793 43.131977 0.591300 +vn -1.371551 -0.487718 0.800261 +v 45.337208 42.904907 0.611300 +vn -0.493541 -0.185310 0.501576 +v 45.447105 43.171597 0.881300 +vn -0.887647 -0.551857 0.005600 +v 45.071827 43.389236 0.401300 +vn -1.207626 -0.750790 0.007618 +v 45.055088 43.414131 0.201301 +vn -1.219292 -0.647264 -0.110314 +v 45.203159 43.140133 0.411301 +vn -0.540335 -0.219997 -0.048732 +v 45.203018 43.176189 0.201301 +vn -1.571196 -0.817482 0.323467 +v 45.130199 43.356182 0.601300 +vn -0.737084 0.118423 1.465483 +v 45.728519 42.842651 1.021300 +vn -0.504001 -0.019063 0.680058 +v 45.664001 43.028225 0.991301 +vn -0.953375 -0.036060 1.286405 +v 45.531082 42.975006 0.891300 +vn -0.439699 -0.042199 0.684589 +v 45.579002 42.778275 0.921300 +vn -0.133694 0.078700 0.703917 +v 46.221146 43.113613 1.171300 +vn -0.224177 0.106719 1.284676 +v 46.145470 43.315781 1.141300 +vn -0.151349 0.076087 0.873070 +v 45.968475 43.184734 1.121301 +vn -0.547234 0.014139 1.518785 +v 46.046871 42.996441 1.151300 +vn -0.249589 0.077743 0.722320 +v 45.878036 42.907024 1.091300 +vn -0.072686 0.020137 0.924419 +v 45.803528 43.519684 1.101300 +vn -0.403068 -0.135652 1.499117 +v 45.890079 43.373024 1.111300 +vn -0.402925 -0.083369 1.433441 +v 45.807941 43.100899 1.071301 +vn -0.911945 -0.379695 1.303263 +v 45.585606 43.216515 0.991301 +vn -0.312961 -0.090748 0.645532 +v 45.735123 43.280891 1.061300 +vn -0.594852 -0.240644 1.529678 +v 45.662308 43.460884 1.061300 +vn -0.061811 0.170306 1.018498 +v 46.573116 43.181553 1.181300 +vn 0.155351 0.192732 1.099026 +v 46.574711 43.483875 1.081300 +vn 0.514528 0.473403 0.846281 +v 46.812225 43.739967 0.871301 +vn 0.540683 0.497468 0.889300 +v 46.631950 43.739262 0.981300 +vn 0.417298 0.383944 0.686359 +v 46.765858 43.540092 1.011300 +vn 0.547379 0.494678 1.576667 +v 46.491016 43.608356 1.071301 +vn 0.636377 0.451633 1.737901 +v 46.556412 43.905376 0.961300 +vn 0.017358 0.120115 0.936354 +v 46.330761 43.452412 1.121301 +vn 0.212182 0.184709 1.256149 +v 46.241344 43.621246 1.101300 +vn 0.802911 0.567094 0.768130 +v 47.030010 44.079193 0.361300 +vn 0.842438 0.475282 0.831988 +v 46.918980 44.100945 0.461300 +vn 0.714916 0.455427 0.523084 +v 46.986217 43.929249 0.491301 +vn 0.815421 0.826540 0.852378 +v 47.083790 43.802052 0.521300 +vn 0.671351 1.104142 0.989714 +v 51.349152 48.838825 1.131300 +vn 0.272570 0.448285 0.401826 +v 51.746609 48.624050 1.101300 +vn 0.338418 0.409688 0.217739 +v 51.811726 48.993183 0.531301 +vn 0.652837 1.124345 0.598269 +v 51.790115 48.846100 0.831300 +vn 1.434754 0.887291 0.786652 +v 52.422897 48.030392 0.901300 +vn 0.573358 0.354580 0.314363 +v 52.480988 48.069447 0.751300 +vn 0.572027 0.469740 0.262071 +v 52.374130 48.443455 0.511300 +vn 1.240164 0.916312 0.958513 +v 52.332920 48.343445 0.761300 +vn 0.372221 0.275021 0.287687 +v 52.110020 48.603283 0.801300 +vn 0.478325 0.242176 0.010091 +v 52.380749 48.539246 0.000000 +vn 0.493251 0.406440 0.035048 +v 52.353508 48.572144 0.000000 +vn 0.128768 0.106624 0.008631 +v 52.393307 48.504547 0.241301 +vn 0.618737 0.512316 0.159853 +v 52.136929 48.814175 0.241301 +vn 0.295346 0.586312 0.032131 +v 51.734280 49.138733 0.000000 +vn 0.540368 1.034065 0.079659 +v 51.814163 49.079170 0.231300 +vn 0.813721 1.437039 0.344647 +v 51.461487 49.191505 0.531301 +vn 0.893082 1.090763 0.328197 +v 52.128914 48.736488 0.521300 +vn 1.047192 1.370250 0.162885 +v 52.119400 48.856255 0.000000 +vn 1.827753 -0.419541 -0.077853 +v 47.501999 38.287151 0.431300 +vn 1.694092 -0.300065 -0.027669 +v 47.545788 38.437096 0.651300 +vn 0.461818 -0.063298 -0.079645 +v 47.385925 37.474056 0.691300 +vn 0.706951 -0.092040 -0.106425 +v 47.317379 37.271320 0.411301 +vn 2.442930 -0.114889 0.252423 +v 47.447334 38.081699 1.221300 +vn 0.465392 -0.047306 0.168832 +v 47.473255 38.544979 1.181300 +vn 1.837746 -0.286532 -0.109401 +v 47.454044 37.784958 1.021300 +vn 1.679819 -0.192186 0.035431 +v 47.505142 38.192867 0.811300 +vn 1.008352 -0.115365 0.021268 +v 47.515736 38.320488 1.001300 +vn 2.206549 -0.390834 0.430411 +v 47.572983 38.575878 0.811300 +vn 0.351411 -0.043550 0.009659 +v 47.566837 38.728397 0.981300 +vn 2.205361 -0.034843 -0.137979 +v 47.413925 36.697582 1.461300 +vn 0.201293 -0.006211 0.006960 +v 47.385002 36.292534 1.101300 +vn 2.556057 -0.078864 0.088378 +v 47.412231 37.130241 1.061300 +vn 1.805274 -0.106263 0.147786 +v 47.416260 37.518551 1.291300 +vn 1.177482 -0.000534 -0.144547 +v 47.253494 35.878765 0.291300 +vn 0.449908 -0.000204 -0.055230 +v 47.280865 36.680420 0.511300 +vn 0.600167 -0.015850 -0.103324 +v 47.357708 36.888733 0.851300 +vn 0.291276 -0.482248 0.542576 +v 51.424118 45.985168 0.961300 +vn 0.490724 -0.889604 1.443007 +v 51.161739 46.411263 1.391300 +vn 0.182701 -0.331208 0.537246 +v 50.916061 46.113533 1.291300 +vn 0.566412 -1.045582 1.613675 +v 51.199207 46.050854 1.151300 +vn 0.802739 -0.524512 1.057563 +v 52.166874 46.834000 1.071301 +vn 0.681305 -0.549981 1.491346 +v 51.616898 47.042637 1.481300 +vn 0.265815 -0.194342 0.606209 +v 51.930801 46.916283 1.291300 +vn 0.411326 -0.591609 1.133228 +v 51.715740 46.590939 1.281301 +vn 0.270483 -0.389035 0.745197 +v 51.393539 46.711712 1.461300 +vn 0.329684 -0.379224 0.544350 +v 51.472782 46.307087 1.221300 +vn 0.245977 -0.282938 0.406139 +v 51.965691 46.505936 1.061300 +vn 0.153191 -0.207987 1.591201 +v 50.758461 47.405376 1.691300 +vn 0.015047 -0.225911 0.842500 +v 50.579594 47.044121 1.661301 +vn 0.071986 -0.349791 1.385240 +v 51.018543 46.857239 1.591300 +vn 0.154425 -0.396277 0.800441 +v 50.811783 46.537476 1.521300 +vn 0.182176 -0.690896 1.356072 +v 50.618755 46.251045 1.401300 +vn 0.685385 -0.916940 0.007452 +v 51.765495 45.925488 0.121301 +vn 1.011627 -1.353401 0.265779 +v 51.740601 45.908749 0.351300 +vn 0.260805 -0.348918 0.068520 +v 52.061390 46.148529 0.351300 +vn 1.181202 -0.758081 0.088983 +v 52.519550 46.721668 0.061300 +vn 0.476951 -0.299136 0.123881 +v 52.497379 46.718815 0.331300 +vn 1.042929 -0.930407 0.283406 +v 52.309929 46.424080 0.341300 +vn 1.224614 -1.149206 0.031263 +v 52.077988 46.159687 0.111300 +vn 0.745787 -0.805836 0.748654 +v 51.694977 46.227524 1.031301 +vn 0.807974 -0.817190 0.740713 +v 52.129509 46.459431 0.831300 +vn 0.544406 -0.326731 0.282416 +v 52.254414 46.434956 0.581300 +vn 0.758106 -0.454986 0.393276 +v 52.327972 46.773613 0.831300 +vn 0.717546 -0.969632 0.515257 +v 51.997578 46.153824 0.581300 +vn 0.351479 -0.456530 0.233121 +v 51.872673 46.178299 0.801300 +vn 0.773500 -1.004686 0.513030 +v 51.587940 45.938660 0.761300 +vn 2.032532 -1.360635 -0.266849 +v 52.384552 46.531975 0.000000 +vn 0.742578 -0.711161 -0.120962 +v 52.323803 46.421360 0.101300 +vn 1.108376 -1.061482 -0.180549 +v 52.316998 46.431484 0.000000 +vn 1.014516 -1.360844 -0.219355 +v 51.770016 45.948410 0.000000 +vn 0.551142 0.148975 -0.043976 +v 52.674339 47.816135 0.000000 +vn 2.444046 0.105885 -0.177349 +v 52.684464 47.751362 0.000000 +vn 1.402936 0.060654 -0.102882 +v 52.702721 47.399124 0.041300 +vn 1.075060 0.063107 -0.103786 +v 52.684570 47.784573 0.021300 +vn 1.477039 0.086704 -0.142593 +v 52.682415 47.786259 0.000000 +vn 0.109512 -0.017363 -0.008978 +v 52.645901 47.035572 0.051300 +vn 2.477829 -0.392782 -0.202650 +v 52.652985 47.106728 0.000000 +vn 1.550457 -0.316517 -0.224925 +v 52.639042 47.038429 0.000000 +vn 1.519305 -0.607767 0.118339 +v 52.623726 47.032711 0.321301 +vn 1.562845 -0.286280 0.345651 +v 52.630611 47.398842 0.561300 +vn 1.394341 -0.561258 0.383812 +v 52.436279 46.737984 0.581300 +vn 1.056566 0.287649 0.050768 +v 52.574993 48.144703 0.261300 +vn 0.051223 0.013958 0.002690 +v 52.580227 48.171597 0.000000 +vn 1.723056 0.063861 0.080901 +v 52.673553 47.765114 0.271300 +vn 0.535131 0.019833 0.025126 +v 52.686123 47.387966 0.301300 +vn 0.504665 0.033524 0.301884 +v 52.536182 47.431755 0.811300 +vn 0.609278 0.151645 0.196750 +v 52.629200 47.759396 0.531301 +vn 1.301222 0.323865 0.420195 +v 52.547379 48.114086 0.511300 +vn 1.485634 0.318075 0.552593 +v 52.537632 47.770130 0.771300 +vn 1.208350 -0.486391 0.903013 +v 52.454327 47.087517 0.831300 +vn 0.566807 -0.228154 0.278072 +v 52.562634 47.051888 0.581300 +vn 1.284520 -0.224960 0.918547 +v 52.388962 47.489422 1.031301 +vn 0.741185 -0.146490 0.512156 +v 52.301525 47.153484 1.071301 +vn 0.983018 -0.394415 1.231242 +v 52.073750 47.241344 1.281301 +vn 0.483621 -0.060496 0.549867 +v 52.186085 47.594021 1.221300 +vn 0.626765 0.219873 0.548378 +v 52.415447 47.808479 0.971300 +vn 0.783994 0.473471 0.961762 +v 52.069233 48.395111 1.041300 +vn 0.560747 0.301239 0.676255 +v 52.289127 48.193504 0.961300 +vn 0.406003 0.126316 0.577074 +v 51.998249 48.106388 1.241301 +vn 0.974639 0.145597 1.019080 +v 52.251343 47.927101 1.111300 +vn 0.520686 0.703589 1.164249 +v 51.656311 48.310287 1.331300 +vn 0.203182 0.231695 0.626032 +v 51.535679 47.952030 1.501300 +vn 0.191223 0.220248 0.599841 +v 51.239399 48.536083 1.381300 +vn 0.107910 0.006707 0.687707 +v 51.216866 47.207478 1.621301 +vn 0.101693 0.006130 0.650828 +v 50.926163 47.783234 1.661301 +vn 0.270616 0.060136 0.741900 +v 51.770866 47.387154 1.461300 +vn 0.559077 0.124238 1.532722 +v 51.908096 47.756569 1.381300 +vn 0.324378 0.238576 1.487395 +v 51.096588 48.174965 1.561300 +vn 0.326098 0.215904 1.470028 +v 51.387428 47.563160 1.591300 +vn 0.360692 -0.505313 -0.111486 +v 51.605320 45.837677 0.000000 +vn 0.200320 -0.263137 -0.058383 +v 51.209625 45.515602 0.121301 +vn 1.545201 -2.029139 -0.449177 +v 51.355850 45.653805 0.000000 +vn 0.200357 -0.263107 -0.058242 +v 51.477444 45.746399 0.000000 +vn 0.982144 -1.321557 -0.321752 +v 51.206131 45.542538 0.000000 +vn 1.175208 -1.163228 -0.030572 +v 51.190308 45.490566 0.331300 +vn 0.366248 -0.478174 -0.023317 +v 51.453007 45.691288 0.341300 +vn 0.419013 -0.398870 0.066147 +v 51.137653 45.479267 0.521300 +vn 0.675813 -0.901930 0.177463 +v 51.698967 45.916904 0.551300 +vn 1.017660 -1.424015 -0.070439 +v 51.480621 45.721905 0.121301 +vn 0.610443 -0.910688 0.669153 +v 51.133804 45.753830 0.911301 +vn 0.319123 -0.500116 0.377697 +v 51.278168 45.718338 0.731300 +vn 0.450130 -0.416542 0.433509 +v 50.839043 45.242348 0.661301 +vn 0.750051 -0.918189 0.543426 +v 51.389194 45.696583 0.541300 +vn 0.257027 -0.303860 0.266054 +v 50.868530 45.503174 0.881300 +vn 1.066149 -1.301220 1.045059 +v 51.032207 45.492718 0.701301 +vn 0.554045 -0.730631 0.944782 +v 50.704567 45.585735 1.041300 +vn 0.169577 -0.236491 0.432549 +v 50.964405 45.808636 1.061300 +vn 0.018198 -0.284639 1.288297 +v 49.979191 45.965641 1.321301 +vn 0.011794 -0.184473 0.834938 +v 50.395115 45.992233 1.321301 +vn 0.468315 -0.218622 -0.236945 +v 50.021248 43.950710 0.000000 +vn 1.880220 -0.921905 -0.962023 +v 50.034447 43.978500 0.000000 +vn 0.045243 -0.022183 -0.023149 +v 50.128139 44.169586 0.000000 +vn 1.161479 -0.564415 -0.588725 +v 50.028709 43.966694 0.000000 +vn 0.728284 -0.328524 -0.157898 +v 50.034172 43.966148 0.011300 +vn 1.194277 -0.646482 0.092008 +v 50.059208 43.946831 0.431300 +vn 0.558721 -0.376129 0.031195 +v 50.312763 44.358307 0.441300 +vn 1.336107 -0.819190 -0.364594 +v 50.138771 44.169025 0.021300 +vn 2.484015 -1.522275 -0.670593 +v 50.209122 44.293205 0.000000 +vn 0.638020 -0.396952 -0.179944 +v 50.185986 44.152569 0.231300 +vn 1.947054 -1.209383 -0.546912 +v 50.264629 44.383781 0.000000 +vn 0.431927 -0.288117 0.307967 +v 50.146931 44.210659 0.611300 +vn 1.084111 -0.723155 0.772977 +v 50.350971 44.516544 0.611300 +vn 0.504096 -0.297081 0.457510 +v 49.867634 43.998775 0.731300 +vn 1.428240 -0.808737 0.489324 +v 50.180405 44.160866 0.431300 +vn 1.169601 -0.817123 0.627662 +v 49.992538 43.974304 0.591300 +vn 0.732178 -0.487394 1.203002 +v 49.724541 43.709770 0.701301 +vn 0.671907 -0.520969 1.006865 +v 50.027462 44.262890 0.761300 +vn 0.305044 -0.292127 0.564048 +v 49.866505 44.287220 0.881300 +vn 0.543583 -0.361584 1.360345 +v 49.698235 44.053585 0.851300 +vn 0.403706 -0.543009 1.138541 +v 49.724155 44.516865 1.041300 +vn 0.441552 -0.423538 0.720303 +v 50.239803 44.574356 0.821301 +vn 0.021763 -0.280399 1.495664 +v 49.166588 44.539642 1.091300 +vn 0.125841 -0.223444 0.806654 +v 49.941792 44.892143 1.111300 +vn 0.081096 -0.103641 0.875514 +v 49.053829 44.295132 1.041300 +vn 0.347769 -0.303960 1.576854 +v 49.368862 43.880337 0.931300 +vn 0.126866 -0.278995 0.856558 +v 49.506516 44.141586 0.951301 +vn 0.005052 -0.178876 0.863346 +v 49.372185 44.448921 1.071301 +vn 0.057263 -0.417036 1.530156 +v 49.276024 44.215569 1.011300 +vn 0.523499 -0.254948 0.570445 +v 54.042160 41.069649 1.041300 +vn 0.821423 -0.438090 0.943341 +v 54.236317 41.067635 0.871301 +vn 1.213030 -0.650689 0.945290 +v 54.262341 40.795933 0.661301 +vn 0.466516 -0.250247 0.363546 +v 54.391693 41.051601 0.671300 +vn 0.510935 -0.258341 0.417645 +v 54.131855 40.828701 0.851300 +vn 0.745058 -0.238040 0.563365 +v 54.326752 41.345341 0.881300 +vn 0.344820 -0.326035 0.355649 +v 53.871876 40.641857 0.961300 +vn 0.501647 -0.497109 0.544378 +v 53.858704 40.464302 0.811300 +vn 0.676582 -0.670463 0.734215 +v 54.005081 40.622967 0.821301 +vn 1.018950 -0.759394 1.118347 +v 53.959881 40.833576 1.011300 +vn 0.620349 -0.641440 0.315293 +v 53.978455 40.339962 0.461300 +vn 0.394034 -0.407430 0.200268 +v 54.246872 40.496330 0.251300 +vn 1.172399 -0.865389 0.527463 +v 54.182919 40.537685 0.461300 +vn 0.460472 -0.350089 0.256991 +v 54.105087 40.581757 0.651300 +vn 1.360287 -0.434583 0.547080 +v 54.497143 41.038147 0.451301 +vn 0.730656 -0.233439 0.364480 +v 54.590298 41.329731 0.451301 +vn 1.419410 -0.453490 0.708058 +v 54.484852 41.343185 0.671300 +vn 0.759952 -0.391332 0.313212 +v 54.359489 40.776897 0.461300 +vn 1.096263 -1.101337 0.290434 +v 54.073330 40.238064 0.000000 +vn 1.153088 -1.144063 0.318941 +v 54.291367 40.465996 0.031301 +vn 1.309810 -0.974710 0.353994 +v 54.431740 40.741123 0.241301 +vn 2.364214 -0.551209 0.356283 +v 54.678051 41.291122 0.000000 +vn 0.913990 -0.393101 0.114690 +v 54.580410 41.021832 0.231300 +vn 0.834239 -0.336997 0.136570 +v 54.478954 40.724670 0.021300 +vn 0.607390 -0.245360 0.099434 +v 54.492294 40.749062 0.000000 +vn 0.248740 0.148363 -0.024102 +v 54.536411 42.341858 0.141300 +vn 0.837766 0.306770 0.044935 +v 54.662586 41.992889 0.171300 +vn 0.913517 0.334508 0.048998 +v 54.630623 42.105270 0.000000 +vn 1.501482 0.588911 0.015060 +v 54.539814 42.336796 0.000000 +vn 0.193203 -0.018783 0.029009 +v 54.654110 41.324436 0.211300 +vn 1.560998 -0.151762 0.234376 +v 54.685848 41.324566 0.000000 +vn 1.070831 0.085484 0.060856 +v 54.672474 41.990978 0.000000 +vn 0.880132 0.120438 0.116032 +v 54.688896 41.649075 0.191300 +vn 1.560200 0.213499 0.205689 +v 54.713200 41.655773 0.000000 +vn 1.325345 0.805100 0.121895 +v 54.329826 42.684963 0.121301 +vn 0.855993 0.519986 0.078728 +v 54.307652 42.682102 0.381300 +vn 1.366595 0.784835 0.189944 +v 54.500355 42.341717 0.401300 +vn 0.895991 0.281678 0.295979 +v 54.425526 42.327557 0.641300 +vn 1.224967 0.326322 0.765425 +v 54.510067 41.986744 0.651300 +vn 0.500839 0.132579 0.311636 +v 54.379723 41.983459 0.861300 +vn 1.111471 0.654448 0.544450 +v 54.249557 42.643047 0.621301 +vn 0.493256 0.232781 0.317079 +v 54.186031 42.576233 0.831300 +vn 1.307782 0.617179 0.840680 +v 54.306343 42.307674 0.841300 +vn 0.521242 -0.064982 0.393088 +v 54.530796 41.651230 0.661301 +vn 1.049569 0.020373 1.146042 +v 54.182709 42.007648 1.041300 +vn 0.585737 0.027837 0.665221 +v 54.167385 41.671993 1.061300 +vn 1.029509 0.048927 1.169213 +v 54.372696 41.653381 0.881300 +vn 0.610792 0.042549 0.161461 +v 54.604355 41.989887 0.421300 +vn 1.348602 -0.110540 0.551346 +v 54.625084 41.654369 0.431300 +vn 0.462071 -1.024651 0.241527 +v 49.440617 39.723110 0.551300 +vn 0.146487 -0.415655 0.161846 +v 49.612167 39.826401 0.661301 +vn 0.377241 -1.305881 -0.213212 +v 49.299397 39.664314 0.431300 +vn -0.209062 0.024147 0.990128 +v 51.694298 41.443199 1.291300 +vn -0.213648 0.024677 1.011849 +v 52.068871 41.405838 1.371301 +vn -0.301372 0.127074 1.390412 +v 52.312996 42.100174 1.381300 +vn -0.279430 0.127824 0.842305 +v 51.917797 41.738068 1.331300 +vn -0.007096 0.194752 1.511887 +v 52.934090 42.144207 1.391300 +vn -0.004098 0.112457 0.873023 +v 52.592995 42.131779 1.391300 +vn -0.000438 0.111436 0.840672 +v 52.930065 41.755901 1.441300 +vn -0.150177 -0.000588 1.527261 +v 52.605568 41.754627 1.441300 +vn -0.086788 -0.000340 0.882613 +v 52.300526 41.742340 1.411301 +vn -0.033118 0.323685 0.683054 +v 52.929817 42.526936 1.291300 +vn -0.051709 0.675813 1.387008 +v 52.586006 42.500629 1.291300 +vn -0.224341 0.299152 0.906287 +v 52.069046 42.068707 1.331300 +vn -0.226331 0.269704 0.742222 +v 52.286686 42.443985 1.261300 +vn -0.390947 0.544216 1.066275 +v 52.282696 42.754604 1.101300 +vn -0.306265 0.453963 0.865024 +v 51.926556 42.334408 1.191300 +vn -0.170877 -0.367683 0.661640 +v 52.357700 40.599873 1.161301 +vn -0.336746 -0.724588 1.303885 +v 52.356853 40.816204 1.281301 +vn -0.280536 -0.592615 1.049687 +v 52.038498 40.662415 1.111300 +vn -0.012049 -0.758877 1.419901 +v 52.640701 40.573246 1.181300 +vn -0.186806 -1.063525 1.227421 +v 52.366703 40.425175 1.011300 +vn -0.074789 -0.425789 0.491406 +v 52.649708 40.398548 1.031301 +vn -0.058115 -0.160829 0.828750 +v 52.606979 41.394077 1.441300 +vn -0.183385 -0.518892 1.526068 +v 52.622128 41.066860 1.391300 +vn -0.007135 -0.449358 1.495764 +v 52.914417 40.793427 1.301300 +vn 0.020696 -0.266600 0.799587 +v 52.634277 40.797874 1.301300 +vn -0.224868 -0.391407 0.994658 +v 51.923058 41.102951 1.291300 +vn -0.228358 -0.439914 1.201746 +v 52.129360 40.831955 1.231300 +vn -0.133681 -0.129986 0.664051 +v 52.336407 41.079609 1.361300 +vn -0.311059 -0.302460 1.545162 +v 52.332417 41.390228 1.421300 +vn -0.270610 -0.895225 0.301260 +v 52.467983 40.059467 0.481300 +vn -0.326669 -1.135095 0.361775 +v 52.154221 40.149765 0.481300 +vn -0.348609 -1.211333 0.492229 +v 52.234489 40.191681 0.641300 +vn -0.069697 -1.296023 0.483442 +v 52.981621 39.922806 0.271300 +vn -0.071885 -1.392365 0.515855 +v 52.712212 40.018822 0.491301 +vn -0.051503 -0.727291 0.348381 +v 52.961880 40.005932 0.491301 +vn -0.044611 -0.629970 0.301764 +v 52.695190 40.115829 0.681300 +vn -0.305598 -1.559811 0.532397 +v 52.476562 39.992935 0.291300 +vn -0.043382 -1.175920 1.119274 +v 52.921551 40.388519 1.031301 +vn -0.254519 -1.547888 1.067379 +v 52.456543 40.148174 0.671300 +vn -0.097143 -0.511279 0.328036 +v 52.395027 40.275517 0.841300 +vn -0.097504 -1.204828 0.881340 +v 52.944859 40.102940 0.691300 +vn -0.038018 -1.198686 0.804661 +v 52.661430 40.237732 0.861300 +vn -0.202990 -0.701109 0.336101 +v 51.951061 40.326473 0.751300 +vn -0.311062 -1.055957 0.936586 +v 52.103016 40.476841 0.971300 +vn -0.218419 -0.924363 0.231014 +v 52.726372 39.943993 0.291300 +vn -0.336339 -1.415628 0.168764 +v 52.489880 39.941639 0.000000 +vn -0.264258 -1.063260 0.113928 +v 52.738956 39.881237 0.000000 +vn -0.077610 -0.985493 0.107944 +v 52.737675 39.891338 0.091300 +vn -0.043224 -0.548860 0.060118 +v 52.884953 39.869740 0.000000 +vn -0.244092 -0.838966 0.155558 +v 52.504463 39.951443 0.111300 +vn -0.908025 1.478199 -0.291518 +v 52.235081 43.129642 0.000000 +vn -0.449707 0.661965 -0.170330 +v 51.875660 42.888714 0.000000 +vn -0.085878 0.539954 -0.103356 +v 52.557861 43.313160 0.191300 +vn -0.087424 0.549247 -0.105102 +v 52.898811 43.361645 0.161301 +vn -1.025110 2.304284 -0.480870 +v 52.297600 43.157455 0.000000 +vn -0.508156 0.715987 0.831405 +v 52.052910 42.648312 1.071301 +vn -0.596985 0.946891 0.643859 +v 52.245228 43.115017 0.681300 +vn -0.107471 1.050375 1.262877 +v 52.909088 42.862453 1.131300 +vn -0.121843 1.050724 1.240273 +v 52.561569 43.074654 0.921300 +vn -0.059071 0.509402 0.601297 +v 52.570854 42.827847 1.131300 +vn -0.193974 0.517936 0.598692 +v 52.251373 42.962498 0.911301 +vn -0.138249 0.972184 0.000000 +v 52.898811 43.361645 0.421300 +vn -0.251772 1.506642 0.055619 +v 52.563438 43.304863 0.441300 +vn -0.693737 1.584791 -0.032347 +v 52.250526 43.178829 0.201301 +vn -0.218202 0.557184 0.023359 +v 52.220051 43.170387 0.441300 +vn -0.210689 0.569037 0.153385 +v 52.555424 43.227173 0.691300 +vn -0.502829 0.712276 0.020658 +v 51.835590 42.899849 0.411301 +vn 0.076063 0.528698 0.635047 +v 52.908100 43.114838 0.921300 +vn 0.368589 0.879218 1.110827 +v 53.633476 42.734936 1.071301 +vn 0.242690 0.623305 0.757914 +v 53.278080 42.833389 1.111300 +vn 0.267900 0.691930 0.478134 +v 53.643650 42.970722 0.881300 +vn 0.119347 1.196527 0.866485 +v 52.899097 43.289536 0.681300 +vn 0.144472 1.236523 0.927644 +v 53.268795 43.080196 0.911301 +vn 0.084863 0.726329 0.544895 +v 53.273666 43.252174 0.681300 +vn 0.336912 0.493527 0.596267 +v 53.927921 42.619598 1.011300 +vn 0.709520 1.039343 1.255707 +v 53.954975 42.794437 0.851300 +vn 0.307644 0.495055 0.036074 +v 54.029095 42.988873 0.121301 +vn 0.546386 0.879236 0.064068 +v 53.659397 43.198212 0.401300 +vn 0.835164 1.319174 0.402530 +v 54.012501 42.977715 0.391300 +vn 0.399742 0.368673 0.156754 +v 53.993324 42.916622 0.631300 +vn 0.123641 1.569739 0.079003 +v 53.267807 43.332581 0.421300 +vn 0.519216 1.460917 0.433724 +v 53.645802 43.128822 0.651300 +vn 0.013791 0.434332 -0.073473 +v 53.270527 43.346458 0.141300 +vn 0.152868 0.560231 -0.133899 +v 53.468220 43.258743 0.000000 +vn 0.421822 1.545897 -0.369479 +v 53.272274 43.312210 0.000000 +vn 1.492341 1.476737 -0.171661 +v 54.172657 42.829693 0.000000 +vn 1.123885 1.111996 -0.129443 +v 54.321438 42.679321 0.000000 +vn 0.787713 1.267576 -0.237078 +v 53.656540 43.220390 0.121301 +vn 0.144594 0.232737 -0.043418 +v 53.652603 43.200150 0.000000 +vn 0.804336 1.352925 -0.197261 +v 54.019699 42.976772 0.000000 +vn 0.898318 -1.310172 0.433898 +v 54.025810 40.287453 0.261300 +vn 0.339282 -0.494833 0.163877 +v 53.776848 40.120064 0.271300 +vn 0.322203 -0.506026 0.136294 +v 54.067585 40.243237 0.041300 +vn 0.616975 -1.452004 0.311104 +v 53.533634 39.944130 0.000000 +vn 0.174928 -0.384735 0.099040 +v 53.527885 39.952679 0.051300 +vn 1.225466 -1.923335 0.539526 +v 54.019066 40.200737 0.000000 +vn 0.708297 -1.111066 0.313234 +v 53.804745 40.078571 0.051300 +vn 0.107469 -1.533458 0.263122 +v 52.992970 39.856205 0.000000 +vn 0.020282 -0.218356 0.043880 +v 52.992920 39.870152 0.081300 +vn 0.110541 -1.190118 0.239159 +v 53.260647 39.878681 0.000000 +vn 0.145303 -0.585874 0.113914 +v 53.458374 39.925465 0.000000 +vn 0.349390 -1.528371 0.424649 +v 53.502708 40.008049 0.271300 +vn 0.371972 -1.553944 0.454328 +v 53.256325 39.890598 0.061300 +vn 0.208673 -0.786450 0.280928 +v 53.231144 39.945969 0.271300 +vn 0.365121 -1.331349 0.781336 +v 53.216984 40.020798 0.491301 +vn 0.076170 -0.676076 0.334406 +v 53.194386 40.126106 0.681300 +vn 0.787395 -1.227035 0.584626 +v 53.740509 40.192036 0.471300 +vn 0.816646 -1.269461 0.713270 +v 53.919937 40.409073 0.651300 +vn 0.220627 -0.558660 0.304995 +v 53.698593 40.272301 0.661301 +vn 0.221813 -0.532227 0.231829 +v 53.474667 40.085598 0.481300 +vn 0.746643 -1.559798 1.198785 +v 53.797470 40.519531 0.921300 +vn 0.166809 -0.348477 0.267822 +v 53.645092 40.477333 0.961300 +vn 0.384028 -1.073597 1.014962 +v 53.420605 40.434849 1.001300 +vn 0.487290 -1.305704 0.854543 +v 53.667694 40.372028 0.831300 +vn 0.192837 -0.516711 0.338172 +v 53.429466 40.296211 0.851300 +vn 0.049692 -0.518787 0.496440 +v 52.927696 40.236000 0.871301 +vn 0.297862 -1.241022 0.829896 +v 53.457649 40.182606 0.671300 +vn 0.238215 -1.069047 1.028214 +v 53.182804 40.250866 0.861300 +vn 0.050420 -0.478347 0.575144 +v 53.176659 40.403385 1.021300 +vn 0.253906 -0.928749 1.197232 +v 53.175953 40.583664 1.161301 +vn 0.180255 -0.440492 0.843459 +v 53.439354 40.604111 1.121301 +vn 0.066512 -0.325002 0.606825 +v 52.920845 40.568798 1.181300 +vn 0.593087 -0.817524 1.189595 +v 53.675003 40.629993 1.051300 +vn 0.210487 -0.305941 0.595460 +v 53.735249 40.827148 1.131300 +vn 0.483902 -0.433856 1.299951 +v 53.480145 40.812283 1.221300 +vn 0.805942 -0.527295 1.327595 +v 53.798073 41.074238 1.191300 +vn 0.096464 -0.143478 0.778002 +v 53.247673 41.391037 1.401300 +vn 0.078022 -0.122912 0.742989 +v 52.916149 41.059692 1.381300 +vn 0.172778 -0.272186 1.645333 +v 53.221188 41.071980 1.351300 +vn 0.151020 -0.231174 0.767071 +v 53.202862 40.794556 1.271300 +vn 0.173653 -0.132658 0.822146 +v 53.523510 41.070389 1.291300 +vn 0.304653 -0.232733 1.442356 +v 53.569454 41.378429 1.331300 +vn 0.189427 -0.003564 1.536602 +v 52.923176 41.389767 1.441300 +vn 0.175837 -0.013045 1.515168 +v 53.274017 41.746151 1.401300 +vn 0.155343 -0.014298 0.716659 +v 53.601376 41.725246 1.331300 +vn 0.153667 0.082841 0.693884 +v 53.291924 42.131741 1.351300 +vn 0.821793 -0.095130 1.474305 +v 54.113140 41.358372 1.071301 +vn 0.363386 0.029874 0.626009 +v 53.930183 42.042717 1.181300 +vn 0.785013 0.064535 1.352349 +v 53.906555 41.701481 1.211300 +vn 0.326242 -0.030028 0.801135 +v 53.863472 41.371262 1.211300 +vn 0.199840 0.141932 0.415925 +v 54.153824 42.301529 1.011300 +vn 0.913005 0.648444 1.900234 +v 54.114201 42.503841 0.961300 +vn 0.473176 0.520118 1.204344 +v 53.934490 42.358913 1.121301 +vn 0.296650 0.365706 1.445088 +v 53.630440 42.094238 1.291300 +vn 0.153123 0.188768 0.745918 +v 53.634605 42.446491 1.201301 +vn 0.299976 0.330237 1.378262 +v 53.293232 42.506172 1.261300 +vn -0.259848 0.187821 0.926307 +v 51.665272 41.773132 1.261300 +vn -0.252020 0.194439 0.931095 +v 51.454800 41.691875 1.221300 +vn -0.324126 0.291586 0.821112 +v 51.780746 42.031525 1.241301 +vn -0.349892 0.517709 0.735043 +v 51.422348 42.188210 1.051300 +vn -0.405416 0.468048 0.718664 +v 51.660576 42.264027 1.111300 +vn -0.381970 0.440981 0.677103 +v 51.800945 42.539158 1.011300 +vn -0.555228 0.641005 0.984230 +v 51.557281 42.435581 0.941300 +vn -0.368729 0.674201 0.553342 +v 51.308041 42.340305 0.891300 +vn -0.529041 0.939667 0.507839 +v 51.725552 42.669216 0.801300 +vn -0.869954 1.103662 0.750187 +v 51.941460 42.778229 0.891300 +vn -0.848393 1.203645 -0.039672 +v 51.708389 42.802280 0.171300 +vn -0.430035 0.689949 0.050151 +v 51.525818 42.679527 0.351300 +vn -0.824109 1.322203 0.096109 +v 51.489906 42.643333 0.541300 +vn -0.404454 0.648907 0.047168 +v 51.661457 42.746624 0.591300 +vn -0.506316 0.735860 0.136587 +v 51.957493 42.933609 0.681300 +vn -1.296941 1.876283 -0.540432 +v 51.590130 42.671196 0.000000 +vn -0.355326 0.480762 -0.104444 +v 52.004284 43.025318 0.191300 +vn -0.351389 -1.302007 0.055443 +v 51.793991 40.143627 0.000000 +vn -0.345856 -1.321861 0.361601 +v 51.915573 40.182114 0.411301 +vn -0.068966 -0.730122 0.157128 +v 51.574337 40.205738 0.371301 +vn -0.115149 -1.219035 0.262346 +v 51.835304 40.140198 0.181300 +vn -0.163375 -1.037932 0.375107 +v 52.004139 40.229610 0.581300 +vn -0.155165 -1.323517 0.542019 +v 51.723854 40.270115 0.571301 +vn -0.175263 -0.751286 0.250329 +v 52.210018 40.066776 0.271300 +vn -0.179330 -1.049649 1.012191 +v 51.739605 40.497604 0.891300 +vn -0.112962 -0.542624 0.876002 +v 51.782688 40.827824 1.151300 +vn -0.136523 -0.655804 1.058717 +v 51.850067 40.620071 1.031301 +vn -0.221415 -0.148864 1.143452 +v 51.556927 41.109840 1.221300 +vn 0.165096 0.329037 1.113584 +v 50.527821 41.851883 1.141300 +vn 0.118704 0.236578 0.800668 +v 50.323635 41.582054 1.251300 +vn 0.218659 0.280963 1.095084 +v 50.200462 41.872791 1.201301 +vn -0.012718 0.132782 1.239676 +v 51.087364 41.324333 1.211300 +vn 0.109695 0.424103 1.642942 +v 50.710957 41.830414 1.131300 +vn 0.035623 0.137725 0.533536 +v 50.681328 41.605640 1.191300 +vn -0.061723 0.596345 0.840572 +v 50.886959 42.213848 0.911301 +vn -0.058246 0.341224 0.751297 +v 50.995689 42.070053 1.021300 +vn 0.009295 0.381284 0.933692 +v 50.869053 41.828259 1.121301 +vn 0.228845 0.582592 1.045546 +v 50.396629 42.064934 1.051300 +vn 0.067601 0.279967 0.636932 +v 50.751884 42.002533 1.051300 +vn 0.090065 0.459662 0.607213 +v 50.643013 42.182384 0.931300 +vn 0.167687 0.855822 1.130540 +v 50.585346 42.035164 1.051300 +vn -0.162382 0.955944 0.719259 +v 50.786667 42.327171 0.771300 +vn -0.137923 1.179851 -0.382431 +v 50.645164 42.340485 0.041300 +vn -0.192771 1.270635 0.031117 +v 50.933186 42.449780 0.301300 +vn -0.032820 0.782979 -0.438673 +v 50.608459 42.315807 0.000000 +vn -0.020855 0.239499 -0.136033 +v 50.808704 42.366085 0.061300 +vn -0.129794 0.863571 -0.455015 +v 50.768070 42.327679 0.000000 +vn 0.508293 -2.384374 -0.271285 +v 50.609478 40.085300 0.000000 +vn 0.473202 -2.375309 -0.713013 +v 50.309288 40.035904 0.000000 +vn 0.034642 -0.173891 -0.052198 +v 50.515842 40.077053 0.000000 +vn 0.284033 -1.323422 -0.087989 +v 50.537601 40.063004 0.061300 +vn 0.231498 -0.831397 0.041916 +v 50.218967 39.981323 0.461300 +vn 0.241080 -0.732051 0.226025 +v 50.038689 39.980618 0.651300 +vn 0.201073 -0.859305 0.106643 +v 50.554195 40.074162 0.451301 +vn 0.333078 -1.423444 0.176655 +v 50.692837 40.083023 0.261300 +vn 0.331578 -1.333297 0.483095 +v 50.747925 40.180313 0.611300 +vn 0.201562 -0.667118 0.614844 +v 50.916618 40.305782 0.751300 +vn 0.310792 -1.028641 0.948039 +v 50.769257 40.399506 0.901300 +vn 0.438771 -1.266673 0.789523 +v 50.251591 40.147861 0.801300 +vn 0.170121 -0.602601 0.351747 +v 50.407112 40.095772 0.631300 +vn 0.210706 -0.667812 0.668845 +v 50.600708 40.237984 0.781301 +vn 0.116432 -0.365416 0.730902 +v 50.798321 40.768497 1.121301 +vn 0.145749 -0.457423 0.914936 +v 50.468529 40.703419 1.141300 +vn 0.119508 -0.370669 0.738791 +v 50.630047 40.534863 1.031301 +vn 0.163095 -0.505862 1.008246 +v 50.929367 40.591503 1.011300 +vn 0.144832 -0.123799 1.117557 +v 50.477425 41.263699 1.251300 +vn 0.075542 -0.079113 1.023558 +v 50.815659 41.298309 1.211300 +vn 0.121794 -0.288710 1.068917 +v 50.633793 40.995281 1.201301 +vn 0.134697 -0.252185 0.855705 +v 50.220871 40.910458 1.241301 +vn 0.315602 0.540139 0.322779 +v 49.907322 42.362556 0.701301 +vn 0.526772 0.377818 0.245432 +v 49.773838 42.453560 0.741301 +vn 0.640074 0.459082 0.298222 +v 49.812469 42.503635 0.581300 +vn 0.790704 0.996876 0.370680 +v 49.862968 42.356834 0.811300 +vn 0.937969 1.279066 0.220109 +v 49.846088 42.417786 0.641300 +vn 0.690457 0.401446 0.760506 +v 49.856400 42.617519 0.481300 +vn 0.608135 0.606110 0.957421 +v 49.926075 42.531815 0.491301 +vn 1.598835 0.082393 0.488119 +v 49.672981 42.711102 0.631300 +vn 0.711003 0.211422 0.093416 +v 49.690002 42.614094 0.721300 +vn 0.870143 0.258744 0.114325 +v 49.642223 42.774773 0.721300 +vn 0.760720 0.463797 0.356038 +v 49.739796 42.647572 0.571301 +vn 0.820828 0.327696 0.673841 +v 49.808762 42.742142 0.441300 +vn 1.477764 0.795176 0.188168 +v 49.734638 42.547707 0.651300 +vn 0.646071 0.088915 -0.024936 +v 49.829529 43.105553 0.021300 +vn 0.932858 0.528116 0.575516 +v 49.880592 42.814533 0.301300 +vn 0.749900 0.585883 0.271211 +v 49.955563 42.792641 0.141300 +vn 0.794675 0.431759 -0.090759 +v 49.882889 42.936577 0.041300 +vn 1.513614 0.822370 -0.172869 +v 49.882454 42.928696 0.000000 +vn 1.327013 0.806264 0.196114 +v 49.894188 42.883926 0.181300 +vn 1.507456 0.316025 0.333036 +v 49.840828 43.052902 0.121301 +vn 0.790733 0.165770 0.174693 +v 49.832813 42.975212 0.231300 +vn 1.609331 0.489537 -0.157704 +v 49.829956 43.097286 0.000000 +vn 1.076576 1.431194 0.500678 +v 50.120369 42.493748 0.341300 +vn 0.605185 0.490552 0.436959 +v 50.078453 42.574013 0.291300 +vn 1.241271 1.353945 -0.389939 +v 50.209221 42.469131 0.121301 +vn 1.469489 1.301412 -0.478407 +v 50.207222 42.436939 0.000000 +vn 0.590740 0.397188 0.000003 +v 50.170303 42.491169 0.241301 +vn 0.780650 1.023430 0.257201 +v 50.237118 42.427639 0.291300 +vn 0.779029 0.450618 -0.097053 +v 50.055996 42.643265 0.111300 +vn 1.136070 0.657143 -0.141534 +v 50.059963 42.612434 0.000000 +vn 1.002900 0.799139 -0.034528 +v 50.120087 42.565857 0.181300 +vn 0.490943 0.429411 -0.101461 +v 50.142406 42.532661 0.061300 +vn 0.934801 0.665516 -0.228462 +v 50.147823 42.504009 0.000000 +vn 0.718662 0.640158 0.500226 +v 49.986462 42.692913 0.271300 +vn 0.316220 0.633430 -0.222454 +v 50.223240 42.430359 0.031301 +vn 0.704343 1.410890 -0.495489 +v 50.221264 42.420353 0.000000 +vn 0.593992 0.138887 0.418315 +v 49.721504 43.069077 0.421300 +vn 1.283162 0.300029 0.903659 +v 49.786022 42.883503 0.391300 +vn 0.647770 0.284863 0.510772 +v 49.694736 42.822128 0.541300 +vn 1.145447 0.109088 0.480001 +v 49.633080 42.985523 0.651300 +vn 0.103286 0.086119 0.784156 +v 49.007145 43.468437 1.071301 +vn 0.153440 0.106201 0.791744 +v 48.872673 43.811829 1.051300 +vn 0.204957 0.013615 0.634929 +v 49.168846 43.962757 0.991301 +vn 0.509625 0.033854 1.578750 +v 49.092144 43.718388 1.021300 +vn 0.204065 0.190165 0.680817 +v 48.962471 42.835899 1.221300 +vn 0.455528 0.424499 1.519769 +v 49.223015 42.878525 1.131300 +vn 0.272689 0.330954 1.529226 +v 48.768211 43.572895 1.091300 +vn 0.135223 0.165218 0.760174 +v 48.650017 43.300629 1.171300 +vn 0.247329 0.302192 1.390392 +v 48.952763 43.190876 1.141300 +vn 1.066807 0.326942 1.187699 +v 49.494720 42.904549 0.921300 +vn 0.489095 0.096085 0.544890 +v 49.485714 43.079247 0.881300 +vn 1.036690 0.203662 1.154954 +v 49.515484 43.267963 0.821301 +vn 0.777179 0.241576 1.437181 +v 49.355232 43.112019 0.981300 +vn 0.538870 0.286698 0.862173 +v 49.380974 42.912426 1.021300 +vn 0.341701 0.167040 0.613602 +v 49.180393 43.139069 1.071301 +vn 0.341371 -0.070014 0.472187 +v 49.555000 43.800632 0.841300 +vn 0.294941 0.037451 0.582367 +v 49.283863 43.630386 0.961300 +vn 0.717558 0.091114 1.416836 +v 49.215458 43.391594 1.011300 +vn 0.500084 -0.012198 0.612300 +v 49.382141 43.322910 0.931300 +vn 0.907477 -0.017056 1.115360 +v 49.447823 43.547825 0.881300 +vn 0.399534 -1.352611 -0.206687 +v 50.238281 40.006359 0.051300 +vn 0.265208 -0.897855 -0.137197 +v 50.376919 40.015221 0.261300 +vn 0.162616 -0.865816 -0.361199 +v 49.937840 39.966434 0.000000 +vn 0.454088 -2.230407 -0.889096 +v 49.980614 39.974468 0.000000 +vn 0.198556 -0.643559 -0.288139 +v 49.344967 39.797497 0.000000 +vn 0.317988 -1.249088 -0.590459 +v 49.955559 39.960876 0.021300 +vn 0.463767 -1.822876 -0.862228 +v 49.679493 39.900707 0.000000 +vn 0.214462 -0.577990 0.374050 +v 49.838814 40.026985 0.841300 +vn 0.322161 -0.881776 -0.067048 +v 49.590134 39.787487 0.191300 +vn 0.460290 -1.184030 0.297380 +v 49.562515 39.756866 0.461300 +vn 0.252150 -0.648619 0.162907 +v 49.842236 39.860584 0.441300 +vn 0.214341 -0.756522 0.041057 +v 50.033390 39.916805 0.241301 +vn 0.182122 -0.163296 1.095983 +v 50.069660 41.278744 1.321301 +vn 0.165777 -0.340466 1.115452 +v 50.172070 40.624596 1.161301 +vn 0.173755 -0.145864 1.237774 +v 49.692230 41.338287 1.381300 +vn 0.186111 -0.465841 0.827915 +v 49.633080 40.153763 1.041300 +vn 0.192272 -0.405225 0.931485 +v 49.956585 40.407417 1.111300 +vn 0.153040 -0.288170 0.718690 +v 49.889065 40.651222 1.231300 +vn 0.172599 -0.389246 0.572632 +v 50.090355 40.244305 0.971300 +vn 0.242542 -0.546983 0.804682 +v 50.453342 40.331703 0.921300 +vn 0.213293 -0.526150 1.087970 +v 50.300255 40.469780 1.061300 +vn 0.172188 0.784358 0.816837 +v 50.434837 42.223171 0.891300 +vn 0.205879 0.914242 0.943453 +v 50.229668 42.205727 0.951301 +vn 0.212202 0.608859 1.057427 +v 50.110905 42.077679 1.101300 +vn 0.157153 0.199074 0.770438 +v 49.915730 41.633152 1.321301 +vn 0.311320 0.729309 0.557381 +v 49.940376 42.420929 0.571301 +vn 0.457208 1.071072 0.818576 +v 49.993313 42.360119 0.621301 +vn 0.474896 0.487067 0.653758 +v 50.039963 42.487885 0.441300 +vn 0.608313 0.585860 0.807261 +v 49.970146 42.609646 0.401300 +vn 0.599148 0.577032 0.795098 +v 49.908772 42.700932 0.381300 +vn -1.051769 -0.401381 -0.316502 +v 45.703835 41.355946 0.211300 +vn -1.410584 0.276164 -0.761771 +v 45.843918 41.010181 0.000000 +vn -1.624556 0.317927 -0.877208 +v 45.855621 41.069984 0.000000 +vn -1.736778 0.029893 -0.212296 +v 45.677349 41.036888 0.541300 +vn -1.777353 0.238971 -0.618341 +v 45.740597 41.175812 0.301300 +vn -0.628727 -0.273248 -0.117898 +v 45.536167 41.677017 0.361300 +vn -1.129899 -0.308764 -0.428870 +v 45.796249 41.128880 0.131300 +vn -0.817252 -0.023998 -0.004591 +v 45.687519 41.272675 0.491301 +vn -0.685352 -0.024804 0.233041 +v 45.742607 41.369965 0.931300 +vn -0.726009 0.005900 0.199731 +v 45.690945 41.106277 0.751300 +vn -1.323917 -0.551226 0.468736 +v 45.684517 41.330910 0.721300 +vn -0.588939 -0.245211 0.054399 +v 45.586521 41.566273 0.721300 +vn -0.560782 -0.213117 0.605935 +v 45.986412 41.437485 1.251300 +vn -0.510417 -0.193977 0.551515 +v 45.763798 41.625210 1.111300 +vn -1.211927 -0.481047 0.824813 +v 45.850632 41.406445 1.111300 +vn -1.262134 -0.002473 0.902369 +v 45.757336 41.150913 0.951301 +vn -0.619235 -0.001213 0.442725 +v 45.893116 41.181957 1.141300 +vn 0.189993 -1.269221 0.424528 +v 48.717499 39.526131 0.361300 +vn 0.530104 -0.472895 0.576187 +v 48.126877 39.490536 0.441300 +vn -0.122912 -1.176244 0.967268 +v 48.273396 39.613144 0.571301 +vn 0.888765 -1.294207 1.129141 +v 48.132034 39.590401 0.561300 +vn 0.278412 -0.405419 0.353711 +v 48.162086 39.707008 0.671300 +vn 0.415553 -0.178982 -0.261118 +v 47.872269 39.344898 0.000000 +vn 0.595811 -0.788056 -0.430450 +v 48.082523 39.484814 0.101300 +vn -0.542656 0.089003 0.512865 +v 45.586700 42.229145 0.961300 +vn -1.296776 -0.477170 0.494278 +v 45.661354 41.580433 0.931300 +vn -0.831933 -0.196034 -0.053954 +v 45.446186 41.990074 0.611300 +vn -1.113579 -0.027100 0.977025 +v 45.671524 41.816223 1.071301 +vn -0.778083 -0.079610 0.487688 +v 45.623745 41.976902 1.021300 +vn -0.587183 -0.201581 0.391923 +v 45.580097 41.790901 0.921300 +vn 0.259323 -1.102189 0.519675 +v 49.387680 39.783920 0.751300 +vn 0.159012 -0.798714 0.347997 +v 49.058170 39.646729 0.601300 +vn 0.183846 -0.923454 0.402346 +v 49.324154 39.717110 0.641300 +vn 0.396746 -1.082623 1.030458 +v 49.184948 39.852467 0.921300 +vn 0.136279 -0.437339 0.354263 +v 49.165913 39.755318 0.801300 +vn 0.202264 -0.649093 0.525793 +v 49.423317 39.892231 0.871301 +vn -0.110827 -0.706122 0.594200 +v 48.735260 39.947777 1.081300 +vn -0.118704 -0.756309 0.636433 +v 48.521931 39.888695 0.971300 +vn -0.145052 -0.924180 0.777696 +v 48.708069 39.808990 0.911301 +vn 0.027370 -0.921421 0.680739 +v 48.847134 39.709690 0.771300 +vn 0.011702 -0.655531 0.533300 +v 48.960316 39.846035 0.951301 +vn 0.170378 -1.239051 0.198912 +v 48.969601 39.599232 0.381300 +vn -0.063933 -0.645549 0.370745 +v 48.489300 39.722157 0.731300 +vn 0.085429 -0.903271 0.440588 +v 48.753269 39.598381 0.561300 +vn 0.277508 -0.882878 -0.271060 +v 48.847416 39.637581 0.131300 +vn 0.120065 -0.892837 -0.195638 +v 49.177353 39.666611 0.201301 +vn 0.349705 -1.497701 -0.510349 +v 48.844204 39.681572 0.000000 +vn 0.117839 -0.504675 -0.171970 +v 49.059204 39.731773 0.000000 +vn -0.155658 0.093427 -0.062332 +v 45.671288 40.678059 0.000000 +vn -0.015724 0.011757 -0.008249 +v 45.702667 40.945461 0.321301 +vn -0.876603 0.688866 -0.281909 +v 45.473732 40.622833 0.291300 +vn -1.010799 0.808400 -0.510436 +v 45.397938 40.344131 0.000000 +vn -0.623295 0.310575 0.394683 +v 45.697090 40.953758 1.011300 +vn -0.641903 0.381356 0.492057 +v 45.827995 40.812820 1.291300 +vn -0.718326 0.683019 1.101981 +v 45.868927 40.984940 1.211300 +vn -0.623663 0.293261 0.033513 +v 45.561588 40.850609 0.581300 +vn -1.078172 0.850479 -0.046666 +v 45.602943 40.914558 0.791300 +vn -0.844328 0.634034 0.319562 +v 45.478745 40.758755 0.821301 +vn -0.902067 0.668985 -0.019931 +v 45.329792 40.550159 0.561300 +vn -0.657614 0.632030 1.364486 +v 46.066647 40.780476 1.421300 +vn -0.327347 0.355975 0.723726 +v 46.025719 40.608356 1.481300 +vn -0.561386 0.476822 0.542409 +v 45.520660 40.678490 1.091300 +vn 0.688467 -0.509742 0.525585 +v 47.939327 39.930790 1.011300 +vn 0.753898 -0.558187 0.575536 +v 47.751598 39.708172 1.041300 +vn 0.980355 -0.470556 0.743009 +v 47.796658 39.533619 0.871301 +vn 0.735611 -0.353082 0.557518 +v 47.923576 39.703300 0.811300 +vn 1.551464 -0.499282 1.204694 +v 47.652580 39.496998 1.081300 +vn 0.919517 -0.224112 0.439761 +v 47.717098 39.311424 0.921300 +vn 0.875970 -0.213498 0.418935 +v 47.822262 39.370079 0.731300 +vn 1.065656 -0.500367 0.734585 +v 47.988094 39.517727 0.591300 +vn 0.915214 -0.155819 0.250067 +v 47.629379 39.047596 0.951301 +vn 0.333573 -0.119414 0.196141 +v 47.649399 38.892357 0.781301 +vn 1.775430 -0.635574 1.043952 +v 47.753719 39.167343 0.771300 +vn 1.011092 -0.261156 0.659703 +v 47.578739 39.230450 1.101300 +vn 0.542684 -0.192308 0.023055 +v 47.652824 38.725960 0.541300 +vn 0.482996 -0.155717 -0.281949 +v 47.757206 39.035332 0.000000 +vn 0.155520 0.763766 0.383702 +v 47.179352 43.480698 0.881300 +vn 0.292944 1.438660 0.722756 +v 47.265339 43.478260 0.851300 +vn 0.769796 0.865142 0.737046 +v 47.017822 43.649250 0.751300 +vn 0.356338 0.600619 0.346967 +v 47.100956 43.668991 0.641300 +vn 0.662926 0.615735 0.574340 +v 46.943130 43.599030 0.871301 +vn -0.904698 0.725651 0.830217 +v 47.644356 43.721039 0.741301 +vn -0.557697 0.470296 0.558294 +v 47.705589 43.665806 0.851300 +vn -0.915824 0.772299 0.916805 +v 47.799458 43.777119 0.851300 +vn -0.956515 1.012285 0.076988 +v 47.621937 44.489220 0.051300 +vn -1.034500 1.271040 -0.149245 +v 47.716301 44.571583 0.000000 +vn -0.186884 0.105479 -0.073537 +v 47.886742 44.817520 0.000000 +vn -1.220758 0.856349 0.535294 +v 47.713219 44.550591 0.181300 +vn -1.116279 0.842297 -0.118529 +v 47.806942 44.697956 0.031301 +vn -0.664842 0.501661 -0.070594 +v 47.710358 44.572769 0.051300 +vn -0.791997 0.230594 0.413453 +v 47.862312 44.723133 0.421300 +vn -0.787147 0.369095 0.472146 +v 47.661694 44.250847 0.381300 +vn -0.899147 0.421613 0.539326 +v 47.749416 44.514679 0.321301 +vn -0.910963 0.320066 1.058046 +v 48.126564 44.527248 0.821301 +vn -0.699466 0.190406 0.582065 +v 47.844128 44.409657 0.561300 +vn -1.145049 0.311701 0.952860 +v 47.999367 44.429680 0.741301 +vn -0.993594 0.562434 -0.170151 +v 47.909760 44.854927 0.000000 +vn -0.834625 0.466548 -0.139968 +v 47.793064 44.700672 0.181300 +vn 1.280215 0.481307 0.514510 +v 46.864349 44.594414 0.231300 +vn 1.698512 0.683807 0.729958 +v 46.914852 44.447620 0.251300 +vn 0.747986 0.437705 0.378416 +v 46.990101 44.353611 0.211300 +vn 0.689712 0.463724 -0.000004 +v 46.777660 44.777130 0.191300 +vn 0.710236 0.249833 0.464284 +v 46.862480 44.364208 0.451301 +vn 0.917391 0.924552 0.510698 +v 47.020294 44.434162 0.101300 +vn 0.353953 0.453263 0.168125 +v 46.947903 44.505993 0.101300 +vn 1.329556 0.916928 0.105069 +v 46.886528 44.597279 0.081300 +vn 1.688866 1.164924 0.133630 +v 46.922943 44.553799 0.000000 +vn 1.106685 0.668269 -0.220183 +v 46.760921 44.802025 0.011300 +vn 1.533536 0.925823 -0.305531 +v 46.824780 44.692528 0.000000 +vn 0.936512 0.530160 0.082545 +v 46.839035 44.685844 0.051300 +vn 0.890978 0.504259 0.078461 +v 46.867657 44.643272 0.000000 +vn -0.687489 0.415013 0.659540 +v 47.895897 43.938362 0.841300 +vn -0.852821 0.363274 0.717229 +v 47.933685 44.204765 0.751300 +vn -0.732306 0.279104 0.646157 +v 47.773285 44.084873 0.621301 +vn 0.889300 0.501684 0.518953 +v 46.897369 43.953865 0.591300 +vn 1.096590 0.371262 0.602327 +v 46.838573 44.095081 0.611300 +vn 0.803967 0.392816 0.792068 +v 46.739693 43.847851 0.871301 +vn 0.886331 0.405230 0.894677 +v 46.780479 44.056026 0.731300 +vn 0.536153 0.245129 0.541202 +v 46.683617 44.002949 0.851300 +vn 1.081505 0.287292 0.644834 +v 46.757736 44.197384 0.701301 +vn 0.843445 0.396536 0.667534 +v 46.819820 43.925823 0.751300 +vn 0.565934 0.192564 0.350941 +v 49.531342 42.760471 0.941300 +vn 1.221533 0.551933 0.641366 +v 49.583992 42.771770 0.831300 +vn 0.657138 0.158861 0.352210 +v 49.558533 42.899254 0.821301 +vn 0.727581 0.537052 0.446740 +v 49.735062 42.439541 0.901300 +vn 0.692190 0.391870 0.402642 +v 49.626049 42.655449 0.851300 +vn 1.177720 0.529504 0.502455 +v 49.687569 42.528107 0.841300 +vn 0.942048 0.833722 0.415643 +v 49.807457 42.367710 0.881300 +vn 0.550074 0.657207 0.392351 +v 49.893726 42.293163 0.921300 +vn 0.166286 1.270310 0.657120 +v 50.099041 42.274555 0.851300 +vn 0.204047 0.788989 0.240373 +v 49.968555 42.307323 0.811300 +vn 0.407789 1.247621 0.793626 +v 49.990875 42.274132 0.901300 +vn 1.797202 -0.066328 -0.175516 +v 49.818928 43.293037 0.000000 +vn 0.885435 -0.033230 -0.087386 +v 49.820805 43.208141 0.051300 +vn 1.695433 -0.063629 -0.167327 +v 49.816010 43.215279 0.000000 +vn 0.281753 -0.062913 -0.079609 +v 49.849575 43.515358 0.000000 +vn 1.027686 -0.182143 -0.217097 +v 49.825821 43.344063 0.051300 +vn 1.434973 -0.254329 -0.303136 +v 49.814560 43.341671 0.000000 +vn 0.565900 -0.100298 -0.119546 +v 49.829060 43.423481 0.000000 +vn 1.234358 -0.638146 -0.569112 +v 49.965488 43.799469 0.041300 +vn 1.522211 -0.385799 -0.440464 +v 49.867496 43.585972 0.000000 +vn 1.106150 -0.266055 -0.331726 +v 49.907818 43.652245 0.081300 +vn 1.501022 -0.362054 -0.005923 +v 49.864029 43.502304 0.061300 +vn 0.872815 -0.241800 0.245588 +v 49.861313 43.488426 0.221300 +vn 0.814077 -0.260978 0.163075 +v 49.781609 43.302288 0.321301 +vn 1.521038 -0.487616 0.304692 +v 49.814804 43.324604 0.191300 +vn 0.730412 -0.061220 0.176001 +v 49.807068 43.174805 0.171300 +vn 1.189634 -0.628292 0.083887 +v 50.015278 43.832943 0.201301 +vn 1.439832 -0.668647 0.194026 +v 49.929996 43.655106 0.221300 +vn 0.794774 -0.441180 0.456456 +v 49.800362 43.471546 0.421300 +vn 0.580442 -0.275437 0.227307 +v 49.918839 43.671703 0.361300 +vn 1.504696 -0.714023 0.589253 +v 49.841431 43.607609 0.481300 +vn 1.061023 -0.667750 0.496877 +v 49.887939 43.771427 0.561300 +vn 0.446872 1.282152 -0.271566 +v 50.281612 42.397305 0.051300 +vn 0.264747 0.784536 0.020544 +v 50.273174 42.427780 0.181300 +vn -0.020420 1.186510 -0.072729 +v 50.475769 42.395290 0.251300 +vn 0.071417 1.794853 -0.282832 +v 50.367603 42.394867 0.221300 +vn -0.022298 0.783618 0.102888 +v 50.339844 42.400307 0.371301 +vn -0.035467 1.246448 0.163657 +v 50.392639 42.375549 0.571301 +vn 0.178158 0.851976 0.062312 +v 50.173306 42.432938 0.401300 +vn -0.036699 0.821762 0.285355 +v 50.564758 42.334621 0.711300 +vn -0.148272 0.886726 0.273810 +v 50.805702 42.424316 0.551300 +vn -0.046976 1.130955 0.394675 +v 50.226242 42.372128 0.561300 +vn -0.066088 0.777279 -0.218389 +v 50.680939 42.412735 0.251300 +vn -0.070756 1.352045 -0.022770 +v 50.550598 42.409451 0.461300 +vn 0.298957 0.838996 -0.197070 +v 50.283253 42.384670 0.000000 +vn 0.706461 1.985680 -0.465243 +v 50.312202 42.374371 0.000000 +vn 0.220185 0.388338 -0.149764 +v 50.370461 42.372692 0.081300 +vn 0.293049 1.996962 -0.786106 +v 50.454491 42.328327 0.000000 +vn 0.432057 1.112943 -0.383481 +v 50.387112 42.338215 0.000000 +vn -0.089974 1.103977 -0.579436 +v 50.517544 42.351078 0.081300 +vn 0.373592 1.215830 -0.629981 +v 50.518948 42.308521 0.000000 +vn 0.696730 -0.091283 0.349004 +v 49.701199 43.296425 0.521300 +vn 1.389222 -0.182010 0.695885 +v 49.654690 43.132607 0.571301 +vn 0.568933 -0.100547 0.435547 +v 49.739128 43.526775 0.581300 +vn 0.548395 -0.079495 0.406177 +v 49.596176 43.201714 0.701301 +vn 0.584381 -0.084712 0.432829 +v 49.581310 43.456821 0.771300 +vn 1.307586 -0.383226 0.644675 +v 49.656563 43.362816 0.651300 +vn 1.194647 0.221119 0.786555 +v 49.571846 43.040756 0.761300 +vn 0.049182 0.840020 0.291144 +v 50.082161 42.335506 0.691300 +vn 0.074336 1.269640 0.440046 +v 50.070862 42.388157 0.541300 +vn 0.062723 0.870263 0.467500 +v 50.293053 42.308598 0.751300 +vn -0.767701 0.316583 -0.230160 +v 48.479172 45.971615 0.000000 +vn -0.548137 0.089451 0.407343 +v 48.811123 46.072006 0.891300 +vn -0.570534 0.130411 0.342924 +v 48.703415 46.662346 0.561300 +vn -1.457042 0.391990 0.813063 +v 48.602524 46.220959 0.561300 +vn -0.762922 0.250989 -0.027566 +v 48.472889 46.037399 0.351300 +vn -0.757308 0.377977 0.248515 +v 48.443401 45.776573 0.571301 +vn -0.666467 0.307274 -0.012986 +v 48.296886 45.653965 0.311300 +vn -1.005215 0.470765 1.039680 +v 48.537971 45.707607 0.721300 +vn -1.139560 0.341567 1.050584 +v 48.628410 45.985310 0.721300 +vn -0.690996 0.225035 0.681377 +v 48.651855 45.663677 0.851300 +vn -1.067622 0.468136 0.864810 +v 48.436375 45.446499 0.741301 +vn -0.092196 -0.099192 0.834885 +v 49.577286 45.900276 1.271300 +vn -0.241797 -0.063641 0.834470 +v 49.376141 46.271141 1.241301 +vn -0.278423 -0.073282 0.960872 +v 49.217014 45.826756 1.161301 +vn -0.099281 -0.091230 0.865781 +v 49.412582 45.464188 1.201301 +vn -0.488628 0.145036 0.723943 +v 48.912262 45.742355 1.011300 +vn 0.271956 -0.269511 0.621780 +v 50.507271 45.682037 1.171300 +vn 0.280099 -0.277582 0.640399 +v 50.176029 45.278580 1.141300 +vn 0.505945 -0.411802 1.354141 +v 50.235531 44.957085 1.021300 +vn 0.474122 -0.334324 0.650965 +v 50.500244 45.351959 1.031301 +vn 0.070644 -0.277393 1.333463 +v 50.097069 45.611092 1.241301 +vn 0.048927 -0.192120 0.923546 +v 49.750534 45.570908 1.251300 +vn -0.028418 -0.163590 1.470432 +v 49.472225 45.106640 1.171300 +vn 0.107534 -0.149341 0.798794 +v 49.812897 45.227234 1.191300 +vn 0.118145 -0.164078 0.877614 +v 49.609280 44.813179 1.141300 +vn 0.010621 -0.300672 1.632013 +v 49.623901 45.329113 1.211300 +vn 0.644951 -0.528190 1.024545 +v 50.012173 44.626160 0.991301 +vn 0.810852 -0.714984 -0.063484 +v 50.974823 45.273388 0.311300 +vn 1.322940 -1.051483 0.231479 +v 50.927750 45.253788 0.491301 +vn 0.515668 -0.373175 0.051698 +v 50.638142 44.842171 0.271300 +vn 1.244717 -0.875183 -0.142073 +v 50.787094 45.050770 0.291300 +vn 1.001927 -0.752449 0.877309 +v 50.540146 45.077538 0.861300 +vn 1.315974 -0.988299 0.496735 +v 50.753899 45.028450 0.461300 +vn 0.579692 -0.373838 0.247132 +v 50.546574 44.852909 0.661301 +vn 1.324563 -0.854198 0.564682 +v 50.511223 44.672489 0.471300 +vn 0.673828 -0.457206 0.039710 +v 50.414783 44.511250 0.251300 +vn 1.260947 -1.087034 -0.395880 +v 50.988560 45.306725 0.111300 +vn 0.640492 -0.474138 -0.306620 +v 50.775936 45.067368 0.091300 +vn 1.239924 -0.917881 -0.593584 +v 50.742908 45.081795 0.000000 +vn 0.310662 -0.230038 -0.149110 +v 50.516521 44.736301 0.061300 +vn -0.467508 -0.451393 0.622061 +v 44.716751 44.114506 0.791300 +vn -1.313377 -1.334140 0.131039 +v 44.294540 44.276489 0.231300 +vn -0.457710 -0.405072 0.023870 +v 44.809731 43.743217 0.411301 +vn -1.141733 -1.010431 0.059542 +v 44.595272 43.972580 0.191300 +vn -0.463559 -0.410249 0.183107 +v 44.508862 44.083183 0.411301 +vn -0.469519 -0.401902 0.549861 +v 44.704746 44.347435 0.951301 +vn -0.990961 -0.728997 1.234703 +v 44.972282 44.021206 0.941300 +vn -0.414528 -0.316163 0.310254 +v 45.012184 43.746784 0.811300 +vn -0.163849 -0.224672 1.033460 +v 45.186211 44.634995 1.181300 +vn -0.597913 -0.561899 1.386520 +v 44.868000 44.445148 1.061300 +vn -0.256514 -0.220412 0.937532 +v 45.213791 43.966682 1.031301 +vn -0.353538 -0.372526 1.232955 +v 45.026947 44.226662 1.041300 +vn -0.132969 -0.171005 0.843874 +v 45.101070 44.421097 1.121301 +vn -0.156490 -0.201255 0.993150 +v 45.290634 44.174999 1.101300 +vn -0.160058 -0.191743 0.962264 +v 45.378494 44.402771 1.161301 +vn 0.668687 0.141892 0.988831 +v 46.229694 45.179916 0.871301 +vn 0.507423 0.071060 1.049131 +v 45.774857 45.175362 1.131300 +vn 0.403213 0.056466 0.833670 +v 45.895168 44.906803 1.091300 +vn 0.497530 0.091867 1.105752 +v 46.136395 44.924385 0.981300 +vn 0.372313 0.068746 0.827461 +v 46.021664 45.184650 1.011300 +vn 0.180729 -0.053368 1.118493 +v 45.491249 44.647282 1.181300 +vn 0.248688 0.072998 0.886515 +v 45.922184 44.382713 1.111300 +vn 0.200663 0.003621 1.145763 +v 45.776974 44.634533 1.131300 +vn 0.186928 0.003373 1.067333 +v 45.666935 44.403900 1.151300 +vn 0.381515 0.104354 0.830752 +v 46.138519 44.383560 1.041300 +vn 0.460662 0.100878 1.002248 +v 46.023781 44.643818 1.061300 +vn 1.109315 0.296071 0.120281 +v 46.469650 45.521999 0.121301 +vn 1.195055 0.318955 0.129578 +v 46.422157 45.610569 0.341300 +vn 1.075142 0.309391 0.366173 +v 46.509270 45.319687 0.331300 +vn 0.968414 0.319155 0.558366 +v 46.298100 45.418709 0.731300 +vn 1.305316 0.548767 0.893190 +v 46.613415 44.931801 0.491301 +vn 0.976179 0.340918 0.545144 +v 46.401817 45.138988 0.711300 +vn 0.607666 0.197927 0.603075 +v 46.336132 44.914078 0.851300 +vn 0.565042 0.213213 0.059552 +v 46.632446 45.028950 0.301300 +vn 0.768095 0.259231 0.250562 +v 46.518417 45.108936 0.521300 +vn 0.429790 0.114732 -0.050634 +v 46.390743 45.764053 0.000000 +vn 0.778319 0.273594 -0.035301 +v 46.427616 45.625927 0.000000 +vn 0.346854 0.125412 -0.017857 +v 46.567787 45.250580 0.121301 +vn 1.150313 0.434059 -0.124033 +v 46.582489 45.176956 0.000000 +vn 1.663766 0.627672 -0.179497 +v 46.608524 45.107944 0.000000 +vn 0.844717 0.276250 -0.065289 +v 46.528767 45.341228 0.000000 +vn -0.448613 0.775691 -0.218609 +v 51.531399 42.671230 0.141300 +vn -0.802057 1.385181 -0.389968 +v 51.538982 42.635841 0.000000 +vn -0.494374 0.853802 -0.240370 +v 51.470558 42.596222 0.000000 +vn -0.156364 0.374531 -0.155430 +v 51.343246 42.556778 0.121301 +vn -0.190178 1.193821 -0.633068 +v 50.831776 42.337254 0.000000 +vn -0.350115 0.958672 -0.384988 +v 51.087147 42.401943 0.000000 +vn -0.297486 0.814566 -0.327117 +v 50.970619 42.359386 0.000000 +vn -0.190911 0.494824 -0.206148 +v 51.168835 42.475662 0.101300 +vn -0.453907 0.904721 0.301056 +v 51.459713 42.562782 0.721300 +vn -0.373768 0.848090 -0.180188 +v 51.168694 42.511719 0.271300 +vn -0.270385 0.677716 0.017093 +v 51.323788 42.567795 0.501300 +vn -0.736016 1.352299 0.015988 +v 51.340385 42.578957 0.321301 +vn -0.225621 1.129664 0.000007 +v 51.060665 42.475239 0.521300 +vn -0.296538 0.987930 -0.288179 +v 51.027615 42.416866 0.091300 +vn -0.232332 0.716357 0.517227 +v 51.196732 42.434170 0.711300 +vn -0.169999 0.767075 0.596058 +v 51.100288 42.272926 0.891300 +vn -0.146184 0.990677 0.439212 +v 50.975101 42.369511 0.731300 +vn -0.237310 0.207416 1.055727 +v 51.534081 41.986179 1.181300 +vn -0.264034 0.230772 1.174610 +v 51.306873 41.929821 1.141300 +vn -0.135972 0.349250 0.837348 +v 51.209019 42.129131 1.031301 +vn -0.111356 0.120838 1.205591 +v 51.356205 41.372536 1.231300 +vn -0.118587 0.169435 0.766371 +v 51.205418 41.632656 1.191300 +vn -0.083458 0.252958 0.983485 +v 50.967049 41.592892 1.181300 +vn -0.070740 0.214409 0.833611 +v 51.085243 41.865162 1.121301 +vn -0.014272 -0.888973 1.083982 +v 51.567062 40.646698 1.011300 +vn 0.080122 -0.292902 1.123844 +v 51.094917 40.811260 1.111300 +vn 0.035347 -0.313120 1.099120 +v 50.952568 41.040905 1.181300 +vn -0.005379 -0.286084 1.078304 +v 51.232571 41.072514 1.181300 +vn 0.069530 -0.604241 0.765222 +v 51.406807 40.490753 0.881300 +vn 0.073983 -0.516887 0.636108 +v 51.248146 40.637131 1.011300 +vn 0.017980 -0.415600 0.751230 +v 51.410976 40.843010 1.121301 +vn 0.042003 -0.928484 0.106268 +v 51.211063 40.190449 0.381300 +vn 0.055352 -1.223572 0.140042 +v 51.394203 40.168976 0.121301 +vn 0.084694 -0.787360 0.254324 +v 51.399357 40.268845 0.561300 +vn 0.089723 -0.719407 0.435919 +v 51.069424 40.239815 0.581300 +vn 0.044866 -0.726190 0.395950 +v 51.570911 40.372135 0.731300 +vn 0.047905 -0.775375 0.422768 +v 51.235397 40.351406 0.731300 +vn 0.084070 -0.730601 0.582646 +v 51.082455 40.453430 0.881300 +vn 0.298229 -1.376075 0.466706 +v 50.878414 40.147545 0.431300 +vn -0.154852 -1.586783 -0.096107 +v 51.398109 40.175941 0.000000 +vn -0.051209 -0.524739 -0.031782 +v 51.602196 40.156025 0.000000 +vn 0.109327 -1.640528 -0.112289 +v 51.118439 40.158901 0.000000 +vn 0.019391 -0.293051 -0.020132 +v 51.006035 40.136948 0.211300 +vn 0.158604 -1.294209 -0.114947 +v 50.767200 40.118923 0.000000 +vn 0.116584 -0.841732 -0.045886 +v 50.792561 40.113922 0.091300 +vn -0.249290 0.186287 -0.081841 +v 42.148029 37.145683 0.691300 +vn -0.353258 0.285484 -0.125372 +v 43.166229 38.480961 0.741301 +vn -0.242934 0.186801 -0.135494 +v 42.733952 37.672173 0.401300 +vn -1.309161 1.079284 -0.902915 +v 42.677734 37.863323 0.711300 +vn -1.341085 1.150161 0.416211 +v 42.327175 37.434830 1.731300 +vn -0.983402 0.971453 0.535143 +v 43.315182 38.689556 1.431300 +vn -0.994708 0.913401 0.408398 +v 42.895935 38.094383 1.741301 +vn -1.501838 1.283693 0.212046 +v 43.198997 38.611443 1.081300 +vn -0.338374 0.256304 -0.034026 +v 42.677170 38.007545 1.041300 +vn -0.928278 0.703131 -0.093344 +v 42.141884 37.298203 1.021300 +vn -0.337757 0.276508 0.003781 +v 42.202412 37.423248 1.361300 +vn -0.945046 0.773672 0.010580 +v 42.751717 38.093819 1.391300 +vn -0.319352 0.441807 0.224727 +v 44.473717 39.601036 1.461300 +vn -0.595024 0.823184 0.418715 +v 43.895668 39.188290 1.451301 +vn -1.362643 1.455744 -0.507536 +v 44.078381 39.274986 0.551300 +vn -1.242047 1.425381 -0.630356 +v 43.663445 38.996006 0.791300 +vn -0.804815 0.713322 -0.501231 +v 43.205708 38.314701 0.441300 +vn -0.964542 1.077208 -0.181287 +v 43.746147 39.123913 1.111300 +vn -0.805089 0.606523 -0.828236 +v 42.876160 37.478584 0.121301 +vn -0.127638 0.098536 -0.163861 +v 43.342194 38.165466 0.171300 +vn -0.159165 0.122875 -0.204335 +v 42.973732 37.403320 0.000000 +vn -0.777932 0.764998 -0.703477 +v 43.722805 38.710567 0.261300 +vn -0.793303 0.780114 -0.717377 +v 43.641834 38.848927 0.501300 +vn -0.204068 0.177613 -0.241824 +v 43.842274 38.658340 0.111300 +vn -0.997894 0.868531 -1.182522 +v 43.530933 38.149090 0.000000 +vn -0.303485 0.261126 -0.335832 +v 44.112846 38.972805 0.111300 +vn -1.097599 0.944400 -1.214585 +v 44.019112 38.720722 0.000000 +vn -0.754424 0.400998 -0.372721 +v 34.942932 24.974997 1.581300 +vn -1.367639 0.768100 -0.416655 +v 34.886852 25.130095 2.051300 +vn -1.448342 0.806998 -0.428147 +v 35.287354 25.556002 1.511300 +vn -0.483382 0.295036 -0.156441 +v 35.245148 25.708387 1.941300 +vn -0.790315 0.469601 -0.402862 +v 35.429272 25.434532 1.091300 +vn -1.443786 0.949192 -0.094936 +v 35.611877 26.256207 1.841300 +vn -0.900630 0.592104 -0.059221 +v 35.642452 26.326130 2.075428 +vn -2.317130 1.523353 -0.152342 +v 35.432465 26.006723 2.075428 +vn -1.593107 1.079701 -0.176681 +v 35.263554 25.757494 2.075428 +vn -2.033314 1.242831 0.551837 +v 36.331776 27.452179 2.075428 +vn -0.839324 0.482432 -0.048470 +v 36.355801 27.515518 2.021300 +vn -1.472022 0.846098 -0.085008 +v 36.322891 27.421089 1.651300 +vn -2.019116 1.134579 -0.052640 +v 36.170925 27.189022 2.075428 +vn -1.580232 0.887968 -0.041204 +v 36.009602 26.901930 2.075428 +vn -0.546883 0.343653 -0.031216 +v 35.767498 26.525126 2.075428 +vn -0.900324 0.578474 -0.039922 +v 35.975758 26.826197 1.741301 +vn -1.432388 0.762485 -0.711687 +v 36.446064 27.130352 0.961300 +vn -0.834639 0.430234 -0.376082 +v 36.109943 26.554926 1.021300 +vn -1.199551 0.695797 -0.569892 +v 36.020676 26.687696 1.371301 +vn -0.405794 0.241887 -0.139808 +v 35.656799 26.117708 1.441300 +vn -1.166910 0.675824 -0.721750 +v 35.768250 25.987789 1.061300 +vn -1.088454 0.649284 -0.821346 +v 36.143669 25.734087 0.301300 +vn -1.159588 0.660816 -0.822666 +v 35.615551 25.318773 0.691300 +vn -0.454569 0.259046 -0.322493 +v 35.915752 25.858011 0.701301 +vn -0.384163 0.245226 -0.278453 +v 35.641350 24.571917 0.000000 +vn -1.090177 0.564335 -0.694607 +v 36.221539 26.388943 0.711300 +vn -0.522596 0.284129 -0.428793 +v 36.341286 26.264603 0.451301 +vn -0.747772 0.402091 -0.623365 +v 36.514111 26.043398 0.101300 +vn 0.724857 -0.567397 0.354135 +v 37.538746 22.351017 2.075428 +vn 0.681003 -0.552322 0.355668 +v 37.332283 21.797577 1.611300 +vn 1.054792 -0.855481 0.550887 +v 37.152744 21.875084 2.075428 +vn 0.516739 -0.788309 0.296845 +v 36.623333 21.525763 2.031301 +vn 0.317355 -0.484140 0.182308 +v 36.671440 21.573914 2.075428 +vn 0.808650 -1.233633 0.464537 +v 36.614773 21.536768 2.075428 +vn 0.624609 -0.411728 0.250392 +v 38.372101 23.279928 1.541300 +vn 0.636617 -0.369977 0.277594 +v 37.623276 22.459005 2.075428 +vn 0.940283 -0.631089 0.388285 +v 38.012672 22.990082 1.961300 +vn 0.237819 -0.159617 0.098206 +v 38.202698 23.334734 2.061300 +vn 1.289411 -0.865413 0.532456 +v 37.987625 23.022982 2.075428 +vn 1.792322 -1.202955 0.740081 +v 38.191505 23.326750 2.075428 +vn 0.971720 -0.873563 -0.417767 +v 38.098057 22.432938 0.241301 +vn 0.681995 -0.705208 -0.369977 +v 38.476524 22.819933 0.201301 +vn -1.394422 0.577013 -0.590372 +v 34.670769 24.358208 1.621301 +vn -2.440438 0.611385 -0.521981 +v 34.563763 24.318762 2.075428 +vn -0.715434 -0.139749 -0.113516 +v 34.639484 22.433254 1.811300 +vn -1.703799 -0.332812 -0.270338 +v 34.589466 22.474771 2.075428 +vn -0.895720 0.006214 -0.122779 +v 34.493038 23.708498 1.691300 +vn -0.786807 0.005459 -0.107850 +v 34.481701 23.062223 1.741301 +vn -1.429888 0.009920 -0.195999 +v 34.438591 23.449968 2.075428 +vn -1.669742 -0.001272 -0.512773 +v 34.698917 23.545668 1.021300 +vn -0.663172 -0.003819 -0.199728 +v 34.690159 22.949326 1.051300 +vn -1.410026 -0.675461 -0.316522 +v 34.891270 21.879536 1.871301 +vn -0.980950 -0.946033 -0.066413 +v 35.475422 21.440842 1.121301 +vn -0.327295 -0.421365 0.046992 +v 35.316906 21.551153 1.891300 +vn 0.185529 -1.323425 0.218384 +v 35.926052 21.435293 2.075428 +vn 0.136137 -1.421236 0.072764 +v 36.892876 21.393696 1.221300 +vn -0.657370 -1.274036 0.036900 +v 36.158463 21.249363 0.371301 +vn -0.292559 -0.567003 0.016422 +v 36.077766 21.315619 1.221300 +vn -1.223126 -0.686302 -0.459801 +v 34.800583 22.372868 1.061300 +vn -0.887258 -0.389927 -0.251251 +v 35.039093 22.376575 0.421300 +vn -0.621074 -0.265460 -0.362915 +v 35.442360 22.009054 0.000000 +vn -0.578684 -0.572651 -0.437634 +v 35.641544 21.516369 0.381300 +vn -0.727473 -0.719890 -0.550157 +v 35.260120 21.886526 0.401300 +vn -0.660727 -0.653839 -0.499680 +v 35.536331 21.914089 0.000000 +vn -0.386364 -0.391725 -0.118433 +v 35.074406 21.858063 1.101300 +vn -0.669411 0.004001 -0.333972 +v 35.151752 22.822138 0.000000 +vn -0.042608 0.000225 -0.021222 +v 34.929832 23.363520 0.451301 +vn -1.121210 -0.227077 -0.540025 +v 34.931805 22.858755 0.441300 +vn -0.818626 -0.165795 -0.394287 +v 35.161854 22.772352 0.000000 +vn -1.247171 0.569592 -0.651514 +v 35.112614 24.848078 1.101300 +vn -0.973036 0.425170 -0.535562 +v 35.354130 24.793547 0.591300 +vn -0.802970 0.414498 -0.545399 +v 35.491829 24.282263 0.000000 +vn -0.248743 0.065277 -0.126081 +v 35.274109 23.980591 0.091300 +vn -2.344910 0.615372 -1.188573 +v 35.262806 23.761177 0.000000 +vn -0.693535 0.181062 -0.352887 +v 34.862774 24.198088 1.011300 +vn 0.681164 0.302758 -0.886508 +v 47.480705 38.766891 1.921300 +vn 0.912634 0.405640 -1.187757 +v 47.646362 38.845490 2.075428 +vn 0.049619 0.029624 -0.064496 +v 47.173691 39.259373 1.911301 +vn 0.947399 0.144404 -1.456550 +v 48.281174 36.354580 2.075428 +vn 1.106051 0.279560 -1.486496 +v 47.685806 37.386478 1.761300 +vn 0.822807 0.119580 -1.190992 +v 47.725391 36.485237 1.711300 +vn 0.096528 0.048257 -0.081134 +v 47.203140 38.821274 1.721300 +vn 0.164896 0.094549 -0.189600 +v 47.076683 39.242352 1.821301 +vn 0.693206 0.252660 -0.919192 +v 47.738354 38.132763 1.941300 +vn 0.181592 0.063298 -0.225909 +v 47.546921 38.148655 1.801300 +vn 1.332737 0.464556 -1.821248 +v 47.339348 38.744148 1.801300 +vn -0.099934 0.235632 -0.160329 +v 45.794254 39.732346 2.075428 +vn 0.846473 0.881004 -1.187263 +v 46.880413 39.785194 2.071301 +vn 0.011242 0.011700 -0.015768 +v 47.066586 39.611881 2.075428 +vn 0.005556 0.005119 -0.008345 +v 46.764370 39.671024 1.891300 +vn 0.058748 0.309869 -0.270508 +v 46.220119 39.835304 1.961300 +vn 0.238834 1.259754 -1.099733 +v 46.255928 39.928146 2.075428 +vn 0.277791 1.218130 -0.951705 +v 46.795601 39.807758 2.075428 +vn 0.208822 0.953188 -0.919928 +v 46.882542 39.788712 2.075428 +vn 0.656625 0.181784 2.524286 +v 46.703560 39.618088 1.891300 +vn 0.018355 0.030332 0.048235 +v 46.695122 39.648567 1.891300 +vn 0.301695 0.498544 0.792804 +v 46.211819 39.829723 1.961300 +vn -0.348441 0.963700 0.903774 +v 44.906097 39.674839 1.811300 +vn -0.337594 0.856453 0.679665 +v 44.978912 39.494846 2.031301 +vn -0.476050 1.268715 0.801977 +v 45.655891 39.720970 2.075428 +vn -0.910437 2.426396 1.533751 +v 45.354820 39.608002 2.075428 +vn -0.147462 0.219508 -0.352230 +v 45.792267 39.731010 2.075428 +vn -0.019107 0.741503 0.773468 +v 45.649097 39.752636 2.021300 +vn -0.358255 0.580443 0.505252 +v 44.117580 39.180840 1.781301 +vn -0.555463 0.932574 0.855104 +v 45.005932 39.470478 2.075428 +vn -0.037316 0.060459 0.052137 +v 44.323174 39.090118 2.031301 +vn -1.145800 1.856421 1.600891 +v 44.867344 39.387932 2.075428 +vn -0.768056 0.754606 0.837258 +v 43.755039 38.577591 2.075428 +vn -0.518464 0.500903 0.617664 +v 43.714931 38.596825 2.021300 +vn -1.008234 0.974084 1.201144 +v 43.495457 38.690262 1.761300 +vn -1.073594 1.117945 1.134172 +v 43.129147 38.034279 2.021300 +vn -1.163294 0.519526 -0.527789 +v 36.698063 27.938433 1.201301 +vn -0.393441 0.178605 -0.113890 +v 36.655865 28.090813 1.551300 +vn -0.384006 0.178534 -0.124027 +v 36.370529 27.296469 1.291300 +vn -1.222264 0.471081 -0.383115 +v 36.971958 28.821487 1.441300 +vn -0.348412 0.132823 -0.146609 +v 37.019737 28.660810 1.091300 +vn -1.396361 0.702034 0.401189 +v 36.669319 28.196260 1.921300 +vn -2.425450 1.219409 0.696975 +v 36.439445 27.650953 2.075428 +vn -0.062056 0.031199 0.017832 +v 36.717655 28.204323 2.075428 +vn -1.914159 0.879334 0.554325 +v 36.878536 28.554529 2.075428 +vn -0.383373 0.156926 -0.030782 +v 36.979832 28.935232 1.821301 +vn -0.377100 0.193796 0.089610 +v 37.719620 30.541224 1.621301 +vn -1.126442 0.578891 0.267677 +v 37.320679 29.718700 1.721300 +vn -1.230270 0.632250 0.292350 +v 37.454811 29.815956 2.075428 +vn -0.329509 0.157258 -0.058323 +v 37.318386 29.596655 1.341300 +vn -0.382597 0.155475 -0.181724 +v 37.455719 29.231089 0.661301 +vn -1.150762 0.467633 -0.546583 +v 37.100853 28.486397 0.771300 +vn -1.163143 0.527971 -0.451385 +v 37.722904 30.410881 1.251300 +vn -1.163616 0.528186 -0.451569 +v 37.784561 30.247484 0.901300 +vn -1.145769 0.529711 -0.430404 +v 37.371742 29.427681 0.991301 +vn -1.127152 0.409829 -0.938750 +v 36.983040 27.407043 0.341300 +vn -0.712879 0.322416 -0.484291 +v 36.773598 27.772318 0.871301 +vn -0.284848 0.103655 -0.191465 +v 37.209862 28.270487 0.471300 +vn -0.357623 0.159881 -0.262443 +v 36.557648 26.964386 0.651300 +vn -0.963159 0.430596 -0.706817 +v 36.882473 27.592466 0.591300 +vn -1.130205 0.497488 -0.841817 +v 37.988850 29.782333 0.271300 +vn -0.365542 0.168834 -0.332245 +v 37.935699 29.133371 0.000000 +vn -1.436330 0.643586 -1.154446 +v 37.564732 29.015181 0.371301 +vn -1.212429 0.457817 -0.893215 +v 37.651569 28.796413 0.141300 +vn 1.464421 -1.533103 -1.042935 +v 38.572495 23.048544 0.000000 +vn 0.107765 -0.114414 -0.072299 +v 38.899044 23.284773 0.111300 +vn 1.669503 -1.772591 -1.120309 +v 39.043396 23.491074 0.000000 +vn 0.140016 -0.153823 -0.055258 +v 39.473671 23.863918 0.011300 +vn 1.707365 -1.875737 -0.673823 +v 39.486851 23.879974 0.000000 +vn 0.196449 -0.215822 -0.077530 +v 39.499409 23.891405 0.000000 +vn 1.110994 -1.619139 -1.004802 +v 39.478111 23.873978 0.000000 +vn 0.021870 -0.025791 -0.016925 +v 39.186356 23.574345 0.081300 +vn 1.256585 -1.482045 -0.973099 +v 39.207706 23.645828 0.000000 +vn 0.876838 -0.725846 0.349031 +v 38.913670 23.800697 1.191300 +vn 0.971963 -0.817180 0.394570 +v 38.973351 24.142075 1.751300 +vn 0.024222 -0.018117 0.009740 +v 38.539661 23.693838 1.891300 +vn 0.290947 -0.217604 0.117032 +v 38.203518 23.343426 2.075428 +vn 0.714510 -0.640753 0.238540 +v 39.321613 24.448524 1.531301 +vn 0.581183 -0.533793 0.214226 +v 39.205009 24.478579 1.961300 +vn 0.996506 -0.937793 0.374149 +v 38.944130 24.240341 2.075428 +vn 1.023427 -1.018981 0.333830 +v 39.193649 24.504559 2.075428 +vn 0.549375 -0.546988 0.179200 +v 39.105350 24.415874 2.075428 +vn -1.451049 0.923429 0.529921 +v 41.493801 35.936825 2.075428 +vn -1.081921 0.905325 0.610036 +v 40.062664 33.996029 2.075428 +vn -0.777453 0.558153 0.750953 +v 42.019379 36.709736 2.001300 +vn -0.958549 0.688166 0.925876 +v 41.764133 36.730923 1.721300 +vn -0.109358 0.078512 0.136117 +v 41.484238 35.964336 2.001300 +vn -0.826000 0.652817 0.994173 +v 42.576984 37.385883 2.011300 +vn -1.095532 0.780211 1.071333 +v 39.913166 34.160938 1.791300 +vn -0.086730 0.064374 0.095158 +v 40.055233 34.003407 2.051300 +vn -0.016797 0.012467 0.018429 +v 40.759548 34.916645 2.075428 +vn -1.196008 0.913971 1.360001 +v 41.179195 35.952045 1.741301 +vn -1.474698 1.136083 1.639876 +v 41.248390 35.551193 2.075428 +vn -1.007329 0.633301 -0.688816 +v 40.025604 33.778633 0.411301 +vn -1.035315 0.650895 -0.707953 +v 39.919594 33.936310 0.711300 +vn -1.012807 0.695792 -0.479019 +v 40.490227 34.826073 0.681300 +vn -1.065019 0.760458 0.302606 +v 40.553051 35.073162 1.781301 +vn -0.821304 0.569368 -0.132398 +v 41.035118 35.915424 1.361300 +vn -1.473358 1.021403 -0.237512 +v 41.021664 35.809978 0.991301 +vn -0.870090 0.616331 -0.174673 +v 40.439728 34.972870 1.001300 +vn -1.154338 0.764170 -0.218908 +v 40.428288 35.061581 1.371301 +vn -0.244528 0.192160 -0.027141 +v 41.584423 36.585995 1.001300 +vn -1.479960 1.177214 -0.197302 +v 41.628353 36.699883 1.351300 +vn -0.232253 0.171382 -0.151675 +v 41.658085 36.189671 0.361300 +vn -1.518985 1.062056 -0.603666 +v 41.593426 36.411301 0.671300 +vn -0.241999 0.169202 -0.096174 +v 41.052845 35.638145 0.671300 +vn -0.683606 0.457145 -0.713063 +v 41.120224 35.430393 0.381300 +vn -0.942733 0.630582 -0.983077 +v 40.574203 34.629482 0.391300 +vn -1.257978 0.817330 -1.711285 +v 41.235542 34.949886 0.000000 +vn -0.115380 0.074965 -0.156957 +v 40.879517 34.401917 0.000000 +vn -1.014779 0.668521 -1.441706 +v 40.686077 34.391396 0.131300 +vn -0.111672 0.073568 -0.158653 +v 41.207340 35.139515 0.111300 +vn -0.149195 0.093362 -0.206435 +v 40.176250 33.554569 0.121301 +vn -1.227738 0.768284 -1.698774 +v 40.676483 34.085743 0.000000 +vn -0.755257 0.561692 -0.824504 +v 42.209827 36.946228 0.371301 +vn -0.253457 0.182898 -0.286846 +v 42.341160 36.697128 0.081300 +vn -1.070362 0.737605 -1.359186 +v 42.389782 36.617874 0.000000 +vn -1.140532 0.819115 -1.598601 +v 41.761803 35.909950 0.091300 +vn -0.473499 0.340060 -0.663668 +v 41.794220 35.776905 0.000000 +vn -0.317769 0.210416 -0.439016 +v 41.456882 35.284153 0.000000 +vn -0.196526 0.131041 0.186781 +v 39.309479 33.212807 1.821301 +vn -0.880334 0.603453 0.780101 +v 39.417469 33.041828 2.075428 +vn -0.182163 0.112376 0.142986 +v 37.827503 30.613758 2.001300 +vn -0.988059 0.615758 0.705202 +v 38.899956 32.267315 2.075428 +vn -0.020538 0.012800 0.014656 +v 38.279095 31.447584 1.921300 +vn -2.133606 1.329718 1.522518 +v 38.822590 32.143177 2.075428 +vn -1.017856 0.521444 -0.616758 +v 37.882416 30.048176 0.571301 +vn -0.820084 0.424976 -0.366020 +v 38.196529 31.283623 1.181300 +vn -1.430263 0.770591 -0.917328 +v 38.263767 31.111927 0.831300 +vn -1.288220 0.720481 0.184817 +v 38.763741 32.339783 1.821301 +vn -1.516805 0.841968 -0.383840 +v 38.711651 32.184261 1.121301 +vn -1.232499 0.641452 -0.253583 +v 38.182228 31.394508 1.531301 +vn -0.254078 0.159266 -0.066954 +v 39.835476 34.168957 1.381300 +vn -0.272726 0.156546 -0.070824 +v 39.284721 33.160011 1.071301 +vn -1.246870 0.719970 -0.314443 +v 39.242805 33.240280 1.421300 +vn -0.303458 0.181181 0.063025 +v 38.691769 32.303444 1.461300 +vn -1.165544 0.647981 -0.746198 +v 38.792625 32.045902 0.791300 +vn -1.495365 0.821383 -0.640166 +v 39.340801 33.004913 0.741301 +vn -1.065538 0.634523 -0.510836 +v 39.855217 34.085827 1.031301 +vn -1.055029 0.574538 -0.926537 +v 38.361622 30.912617 0.511300 +vn -1.823003 0.981950 -1.945556 +v 38.842228 30.903044 0.000000 +vn -0.121507 0.065449 -0.129676 +v 38.620598 30.491585 0.000000 +vn -0.416454 0.206834 -0.429295 +v 38.501251 30.669094 0.201301 +vn -0.374508 0.186001 -0.386055 +v 38.477200 30.202856 0.000000 +vn -0.804257 0.495453 -1.138058 +v 40.309845 33.492802 0.000000 +vn -0.205078 0.126336 -0.290195 +v 40.049183 33.069675 0.000000 +vn -1.099855 0.582332 -1.340396 +v 39.724220 32.506683 0.000000 +vn -1.201336 0.653796 -1.117540 +v 38.884899 31.854891 0.481300 +vn -0.681936 0.371336 -0.635301 +v 39.460690 32.844521 0.441300 +vn -1.228176 0.668782 -1.144186 +v 39.630795 32.609436 0.121301 +vn -0.225287 0.122676 -0.209881 +v 39.060444 31.647564 0.171300 +vn 1.578815 -0.161637 -1.582525 +v 48.173473 33.190254 2.075428 +vn 0.314685 -0.033184 -0.359464 +v 48.272900 34.373077 2.075428 +vn 0.127585 -0.007978 -0.129215 +v 48.238884 33.829105 2.075428 +vn 0.869403 -0.019781 -1.337330 +v 47.375111 33.152870 1.451301 +vn 0.614831 -0.026098 -1.006130 +v 47.422222 33.871395 1.471300 +vn 0.802041 -0.034045 -1.312487 +v 47.699638 33.853077 1.641300 +vn 0.753918 0.000077 -1.085652 +v 47.732452 34.682476 1.651300 +vn 0.715788 0.000073 -1.030744 +v 48.178852 34.717510 1.961300 +vn 0.536297 -0.011174 -0.833029 +v 47.977348 33.762638 1.821301 +vn 0.596666 0.054707 -0.953738 +v 47.429604 35.527214 1.471300 +vn 0.968742 0.112669 -1.425454 +v 48.117268 36.278759 1.961300 +vn 0.797459 0.015861 -1.326911 +v 47.715187 35.550522 1.651300 +vn 0.356370 0.003108 -0.451769 +v 47.981449 35.548794 1.811300 +vn -2.409767 -0.796305 -0.177167 +v 39.575169 24.860001 2.041300 +vn -0.056021 -0.018512 -0.004119 +v 39.653564 24.671707 1.821301 +vn -0.509917 -0.168502 -0.037489 +v 39.571312 24.864079 2.075428 +vn -1.599723 0.376565 -0.474238 +v 39.590706 24.724714 2.075428 +vn -1.176262 0.276885 -0.348703 +v 39.601803 24.771856 2.075428 +vn 0.306093 -0.284573 0.095248 +v 39.360363 24.683880 2.075428 +vn 0.203631 -0.268338 0.055075 +v 39.494247 24.805597 2.075428 +vn 0.110794 -0.154567 0.016310 +v 39.429382 24.759102 2.075428 +vn 0.138815 -0.124002 0.034110 +v 39.470428 24.693178 1.661301 +vn -1.029352 -0.326740 -0.378315 +v 39.016960 20.797379 1.341300 +vn -1.053193 -0.231516 -0.446943 +v 38.911972 21.401596 1.201301 +vn -0.890366 -0.216285 -0.174995 +v 38.808216 20.982395 1.681300 +vn -1.009225 -0.147194 -0.238239 +v 38.574615 21.849592 2.001300 +vn -0.473580 -0.073253 -0.215894 +v 38.680771 21.655863 1.671300 +vn -0.916364 -0.223086 -0.376410 +v 38.726540 21.301022 1.691300 +vn -1.006027 -0.244915 -0.413240 +v 38.860161 21.173971 1.441300 +vn -0.509611 -0.042099 -0.125688 +v 38.556469 22.235033 1.981300 +vn -1.996768 -0.164951 -0.492474 +v 38.654324 22.035723 1.651300 +vn -0.618535 -0.016494 -0.267172 +v 38.988533 21.682020 0.941300 +vn -1.015434 -0.020307 -0.451562 +v 38.793667 21.864319 1.371301 +vn 0.477689 0.022048 -0.591229 +v 48.085556 37.293743 2.041300 +vn 0.816893 0.139522 -0.986145 +v 48.128181 37.285393 2.075428 +vn -1.947282 0.146949 -0.280084 +v 38.588394 22.581848 1.941300 +vn -2.032742 -0.101158 -0.105613 +v 38.568913 21.886799 2.075428 +vn -0.218079 -0.055512 -0.003749 +v 38.647030 21.377485 2.075428 +vn -2.575415 -0.361121 -0.016844 +v 38.616451 21.547766 2.075428 +vn -0.634411 -0.082168 -0.015335 +v 38.631687 21.442099 2.011300 +vn -1.217773 0.563142 -0.503600 +v 39.229126 23.277737 1.121301 +vn -0.774540 0.362880 -0.386972 +v 39.413288 23.702808 1.151300 +vn -0.933340 0.527056 -0.393022 +v 39.497158 24.241199 1.621301 +vn -0.183154 0.103429 -0.077128 +v 39.224007 23.876799 1.781301 +vn -1.859865 1.050284 -0.783205 +v 39.260956 24.161562 2.075428 +vn 1.487467 -0.405998 -0.684418 +v 47.741245 31.184019 2.075428 +vn 0.145777 -0.019525 -0.102917 +v 47.713131 31.825676 1.821301 +vn 1.370633 -0.183577 -0.967652 +v 47.884541 31.765934 2.075428 +vn 0.411850 -0.106517 -0.188087 +v 47.876801 31.708145 2.075428 +vn 0.656430 -0.096767 -0.723107 +v 47.502098 31.888641 1.621301 +vn 0.444208 0.010888 -0.234857 +v 47.492874 30.701546 1.521300 +vn 1.257046 0.030811 -0.664610 +v 47.504353 31.311766 1.571301 +vn 1.075403 0.026359 -0.568574 +v 47.648857 31.240219 1.841300 +vn 0.632352 -0.094845 -0.855826 +v 47.635937 33.123383 1.621301 +vn 1.381048 0.027178 -0.865335 +v 47.338272 31.935158 1.361300 +vn 1.098069 -0.134826 -1.154544 +v 47.574669 32.479683 1.621301 +vn 1.066281 -0.261184 -0.751622 +v 48.110661 33.008755 2.031301 +vn 0.364349 -0.053949 -0.258437 +v 47.802299 32.427879 1.821301 +vn 2.149701 -0.318332 -1.524873 +v 47.892780 31.821577 2.075428 +vn 0.985121 -0.143375 -1.049953 +v 47.885742 33.074444 1.811300 +vn 1.106338 -0.215147 -1.029420 +v 48.018768 32.392681 2.061300 +vn -0.446460 -0.824402 -0.131811 +v 39.249851 20.110456 1.111300 +vn -1.146850 -1.229089 -0.492064 +v 39.222378 20.043785 1.581300 +vn -0.457844 -0.490675 -0.196441 +v 39.049694 20.228935 1.521300 +vn -1.240568 -0.101554 -0.474217 +v 39.020943 20.486767 1.541300 +vn -1.240199 -0.179338 -0.553627 +v 39.115379 20.453848 1.301300 +vn -0.477635 -0.295984 0.021403 +v 39.039238 20.065266 1.851300 +vn -0.368611 -0.228420 0.016511 +v 38.791557 20.481159 2.075428 +vn -1.202198 -0.060175 -0.406505 +v 38.786743 20.799257 2.051300 +vn -1.249409 -0.062530 -0.422471 +v 38.792084 20.529545 2.075428 +vn -1.004170 0.010997 -0.321997 +v 38.874573 20.328096 1.811300 +vn -1.269687 -0.524613 -0.494051 +v 38.998062 20.664185 1.531301 +vn -0.556286 -0.086612 -0.263864 +v 38.887321 20.613817 1.781301 +vn -0.994910 -0.266652 -0.195793 +v 38.749985 20.979383 1.981300 +vn -0.272880 -0.006051 -0.065099 +v 38.782898 20.713085 2.075428 +vn -0.651213 0.904579 -1.193350 +v 52.217777 32.420212 1.661301 +vn -0.625817 0.865735 -1.140394 +v 50.988155 31.954990 1.981300 +vn -0.052160 0.072156 -0.095042 +v 51.781227 32.652271 2.075428 +vn -0.326887 0.387884 -0.450068 +v 50.309883 31.507029 2.075428 +vn -0.051681 0.062769 -0.073680 +v 50.167564 31.150238 1.871301 +vn -0.112405 0.136523 -0.160256 +v 50.924114 32.012753 2.075428 +vn -0.082422 0.108638 -0.122744 +v 51.480667 32.435001 2.075428 +vn -0.859962 0.822297 -1.211236 +v 49.363441 30.392683 1.851300 +vn -0.074292 0.074011 -0.085818 +v 49.239662 30.528309 2.075428 +vn -0.682399 0.802712 -1.139991 +v 50.557285 30.785660 1.381300 +vn -0.173229 0.252199 -0.417177 +v 52.218410 30.842081 0.661301 +vn -0.338073 0.457441 -0.788264 +v 50.971909 30.437811 0.961300 +vn -0.206795 0.268012 -0.426119 +v 51.383453 31.582113 1.481300 +vn -0.592569 0.766859 -1.218557 +v 51.789772 31.228695 1.061300 +vn -0.503324 0.689322 -1.250859 +v 51.394825 30.095551 0.581300 +vn -0.377404 0.541864 -1.005410 +v 52.792110 30.239708 0.121301 +vn -0.495781 0.761843 -1.407922 +v 53.077625 31.696917 0.821301 +vn -0.847591 0.957096 -1.932182 +v 50.588631 28.278860 0.000000 +vn -0.293764 0.331717 -0.669670 +v 50.561741 28.255047 0.000000 +vn -0.008830 0.011032 -0.022497 +v 51.307350 29.060684 0.101300 +vn -0.371500 0.447167 -0.731709 +v 49.736568 30.016945 1.331300 +vn -0.632831 0.730139 -1.368310 +v 50.201111 29.666536 0.881300 +vn -0.336695 0.388467 -0.728004 +v 50.709881 29.357885 0.481300 +vn -0.518909 0.791562 -1.002605 +v 51.879189 32.722790 2.075428 +vn -0.466531 0.711662 -0.901402 +v 52.150753 32.900814 2.075428 +vn -0.393401 1.165416 -1.616031 +v 55.816833 34.791809 2.051300 +vn -0.355504 0.822759 -1.111545 +v 54.777027 33.309441 1.281301 +vn -0.304121 0.704454 -0.949405 +v 55.272495 34.594913 2.075428 +vn -0.670778 1.553806 -2.094139 +v 55.222507 34.573334 2.075428 +vn -0.104278 0.483175 -0.648674 +v 57.029930 33.811951 1.011300 +vn -0.372316 1.037914 -1.360063 +v 57.181286 33.407612 0.661301 +vn -0.485769 1.241747 -1.571582 +v 56.334465 34.344517 1.571301 +vn -0.164993 0.267721 -0.437593 +v 53.555916 31.379835 0.481300 +vn -0.145816 0.261482 -0.448981 +v 53.925964 32.496239 1.011300 +vn -0.462665 0.762781 -1.283704 +v 54.351738 32.131809 0.641300 +vn -0.291567 0.596273 -0.876845 +v 55.205807 32.886772 0.851300 +vn -0.323179 0.526392 -0.746932 +v 52.632534 32.036316 1.211300 +vn -0.049754 0.094851 -0.122902 +v 53.060390 33.263897 1.891300 +vn -0.070191 0.133812 -0.173384 +v 54.022251 34.007023 2.075428 +vn -0.170529 0.322425 -0.429062 +v 54.348244 33.732117 1.731300 +vn -0.457428 0.923528 -1.316952 +v 53.497330 32.882854 1.431300 +vn -0.609799 -0.184979 -0.248229 +v 39.829659 18.656639 1.011300 +vn -1.109915 -0.632607 -0.534253 +v 40.356010 18.106766 0.271300 +vn -1.810265 -1.032190 -0.871010 +v 40.574184 17.953066 0.000000 +vn -1.485803 -0.883021 -0.778139 +v 40.137245 18.019926 0.791300 +vn -0.471064 0.543401 -1.041186 +v 48.991905 28.238974 0.681300 +vn -0.258191 0.297838 -0.570675 +v 49.519028 28.906693 0.791300 +vn -0.599700 0.667602 -1.327515 +v 49.091877 27.498837 0.261300 +vn -0.017240 0.020194 -0.039987 +v 50.074722 28.653706 0.411301 +vn -0.600427 0.703311 -1.392656 +v 50.534164 28.231504 0.000000 +vn -0.389542 0.432226 -0.910738 +v 49.494385 28.118908 0.391300 +vn -0.844245 0.936731 -1.973821 +v 50.429478 28.137154 0.000000 +vn -0.333239 0.392536 -0.732320 +v 48.622307 27.713341 0.581300 +vn -0.397677 0.468440 -0.873927 +v 48.417240 26.960913 0.271300 +vn -0.438514 0.516544 -0.963671 +v 47.944397 27.305742 0.671300 +vn -0.503127 0.511980 -0.642611 +v 48.542431 29.696095 1.961300 +vn -0.736552 0.749513 -0.940750 +v 48.763885 29.097874 1.311300 +vn -1.234090 1.192110 -1.352460 +v 48.019783 29.284521 2.075428 +vn -0.565086 0.588110 -0.601394 +v 47.288586 28.334923 1.891300 +vn -0.822844 0.856369 -0.875713 +v 47.445496 28.673977 2.075428 +vn -1.360975 1.356002 -1.342494 +v 48.390076 29.656172 2.075428 +vn -1.171074 1.149997 -1.051023 +v 46.837269 28.088631 2.075428 +vn -1.217253 -0.201705 -0.308011 +v 39.459396 19.010199 1.871301 +vn -0.763188 -0.887347 -0.134318 +v 39.093315 19.984829 2.075428 +vn -1.266089 -1.396270 -0.195624 +v 39.175186 19.910591 2.075428 +vn -0.365382 -0.477065 -0.209882 +v 39.439407 19.864365 1.611300 +vn -1.129031 -1.368539 -0.736929 +v 39.234100 19.882967 1.891300 +vn -0.747446 -0.266417 -0.468802 +v 39.252857 19.840302 2.075428 +vn -0.150358 -0.166147 -0.023183 +v 39.392765 19.736591 1.911301 +vn -0.354238 -0.519573 -0.116777 +v 39.627987 19.870642 1.161301 +vn -1.195815 -0.237248 -0.504435 +v 39.631840 19.596079 1.281301 +vn -0.915923 -1.217071 -0.400809 +v 39.347279 20.019321 1.351300 +vn -1.173815 -0.103573 -0.424327 +v 39.702358 19.294041 1.101300 +vn -0.806866 -0.071195 -0.291677 +v 39.642540 18.988722 1.341300 +vn -1.046861 -0.198114 -0.449391 +v 39.524376 19.415379 1.611300 +vn -0.941945 -0.054050 -0.319643 +v 39.363220 19.479113 2.075428 +vn -2.481397 -0.142371 -0.842080 +v 39.368656 19.384369 2.075428 +vn -1.201454 -0.117748 -0.401003 +v 39.356251 19.550226 2.075428 +vn 0.983519 0.062610 -0.068001 +v 47.406429 32.944984 0.041300 +vn 0.789345 0.044991 -0.053724 +v 47.344566 34.578339 0.571301 +vn 1.595716 0.068498 -0.208937 +v 47.383484 34.556301 0.861300 +vn 0.954481 0.030466 -0.006647 +v 47.433769 33.047703 0.531301 +vn 1.491481 0.090428 -0.120037 +v 47.378433 33.721455 0.351300 +vn 1.002968 0.060809 -0.080721 +v 47.411339 33.815891 0.831300 +vn 1.083336 0.057772 -0.139750 +v 47.297707 35.920540 0.651300 +vn 0.524550 0.013035 -0.112533 +v 47.364204 35.230194 0.881300 +vn 1.451943 0.069189 -0.212115 +v 47.325428 35.216175 0.611300 +vn 1.296054 0.004949 -0.145995 +v 47.393970 35.418907 1.151300 +vn 1.702113 -0.023573 -0.123906 +v 47.419113 34.664612 1.491301 +vn 1.325624 0.039568 -0.055379 +v 47.394360 34.611816 1.161301 +vn 1.727953 0.059005 -0.053407 +v 47.419498 33.857525 1.141300 +vn 0.387850 -0.518438 0.164795 +v 39.614780 24.657696 1.151300 +vn -0.766487 -0.022141 -0.101179 +v 39.927704 24.783722 0.811300 +vn -0.811133 -0.166900 -0.228098 +v 39.900795 24.572830 1.061300 +vn -1.541991 0.688617 -0.579615 +v 39.786903 24.616770 1.401300 +vn -1.060327 -0.516766 -0.574765 +v 39.578022 24.837831 1.811300 +vn -0.982731 0.256747 -0.345574 +v 39.841709 24.786167 1.371301 +vn -1.649898 -0.035221 -0.290231 +v 39.888786 24.805758 1.101300 +vn -1.216840 -0.152263 -0.344057 +v 39.245758 21.156059 0.341300 +vn -1.163119 -0.390266 -0.334143 +v 39.211113 20.795366 0.751300 +vn -0.899462 -0.224820 -0.299021 +v 39.057880 20.969505 1.081300 +vn -0.680740 -0.168955 -0.182906 +v 39.316551 20.781919 0.371301 +vn -1.052809 -0.074652 -0.336724 +v 39.204582 21.754978 0.301300 +vn -0.948439 -0.107613 -0.288776 +v 39.123707 21.158361 0.741301 +vn -1.316635 -0.173072 -0.436721 +v 39.152916 21.491293 0.521300 +vn -1.535959 0.890965 -0.651496 +v 39.723797 24.441790 1.361300 +vn -0.901430 0.473312 -0.366415 +v 39.640778 23.687057 0.571301 +vn 0.766327 -0.072216 -0.050591 +v 47.397465 30.986835 0.221300 +vn 0.717522 -0.051797 -0.022855 +v 47.437820 31.303185 0.771300 +vn 0.701570 0.018235 -0.042967 +v 47.436588 32.326607 0.271300 +vn 1.281786 0.026623 -0.005372 +v 47.433487 33.119816 0.821301 +vn 0.788939 0.002966 -0.006774 +v 47.447151 31.755297 0.481300 +vn 1.529036 0.001985 0.339137 +v 47.424721 32.523483 1.111300 +vn 1.017363 -0.015067 0.225180 +v 47.358192 32.514900 1.411301 +vn 0.556937 0.003094 0.052905 +v 47.447186 32.454224 0.791300 +vn 0.418001 0.002556 0.028791 +v 47.419460 33.158596 1.131300 +vn 1.036578 -0.019955 0.055028 +v 47.412506 31.394602 1.281301 +vn 1.128153 -0.064487 -0.085867 +v 47.374260 30.537436 0.511300 +vn 1.980405 -0.051180 0.212484 +v 47.449440 31.877348 0.801300 +vn 0.759005 -0.019615 0.081436 +v 47.421261 31.990952 1.091300 +vn -0.173441 -0.599725 -0.012946 +v 39.758331 19.873926 0.561300 +vn -0.702669 -0.619668 -0.086459 +v 39.443863 20.144499 0.421300 +vn -1.293494 -0.196179 -0.398638 +v 39.235119 20.329515 1.051300 +vn -1.269411 -0.408162 -0.463203 +v 39.369461 20.022175 0.861300 +vn -1.142185 -0.625844 -0.235822 +v 39.505657 19.945057 0.651300 +vn -0.445451 -1.392823 0.042468 +v 39.641727 19.903978 0.731300 +vn -0.792714 -0.206561 -0.172116 +v 39.328842 20.476879 0.591300 +vn -0.587330 -0.087969 -0.181557 +v 39.327118 20.210608 0.811300 +vn -0.683330 -0.102347 -0.211233 +v 39.217537 20.570734 0.991301 +vn -0.021195 1.000655 -1.331801 +v 47.276295 25.808197 0.051300 +vn -0.021832 1.022475 -1.360885 +v 47.420525 25.742975 0.000000 +vn -0.219543 0.780593 -1.160549 +v 47.611526 25.901037 0.081300 +vn -0.186577 0.259873 -0.654273 +v 47.375458 25.983318 0.181300 +vn -0.165427 0.467761 -0.661559 +v 47.530117 25.757263 0.000000 +vn -0.646462 0.758749 -1.568292 +v 47.879272 26.936617 0.481300 +vn -0.231251 0.310615 -0.630479 +v 48.153240 26.385752 0.111300 +vn -0.205827 0.276500 -0.561258 +v 48.041031 26.076298 0.000000 +vn -0.378010 0.510490 -0.995700 +v 47.757622 26.131811 0.131300 +vn -0.322871 0.392862 -0.796122 +v 48.148354 26.156189 0.000000 +vn -1.046630 -0.126309 -0.340650 +v 39.754017 19.557735 0.901300 +vn -0.442227 -0.841504 -0.154566 +v 39.750175 19.832293 0.811300 +vn -1.290791 -0.245976 -0.451399 +v 39.911942 18.892710 0.641300 +vn -0.814436 -0.155201 -0.284814 +v 39.789478 19.003162 0.931300 +vn -0.743881 -1.052855 0.002519 +v 39.444424 20.000288 1.141300 +vn -0.517197 -0.732017 0.001751 +v 39.513954 19.950636 0.921300 +vn -2.186821 -1.363914 -0.549720 +v 39.946960 17.520412 2.075428 +vn -0.109382 -0.068221 -0.027496 +v 39.809921 17.740133 2.075428 +vn -1.477247 -0.588558 -0.385275 +v 39.927624 17.722340 1.651300 +vn -0.968577 -0.186648 -0.299632 +v 39.478298 18.584419 2.075428 +vn -0.501885 -0.171795 -0.153277 +v 39.803883 18.157299 1.461300 +vn -1.973883 -0.584240 -0.656133 +v 39.493759 18.515369 2.075428 +vn -1.173917 -0.338037 -0.442342 +v 39.627209 18.653072 1.551300 +vn -0.540689 -0.396398 -0.177319 +v 40.147381 17.556787 1.351300 +vn -0.810675 -0.361579 -0.299781 +v 40.071419 17.831072 1.131300 +vn 0.051508 1.169458 -0.279983 +v 45.525372 26.727705 1.421300 +vn -0.172553 0.636720 -0.345439 +v 45.730690 26.709085 1.381300 +vn -0.071261 0.606745 -0.236859 +v 45.848141 26.462702 0.751300 +vn -0.132545 1.128540 -0.440555 +v 45.783901 26.576174 1.061300 +vn 0.400107 0.756052 -0.089179 +v 45.673157 26.525816 0.501300 +vn -0.607594 1.152116 -1.091973 +v 46.476402 26.800768 1.131300 +vn -0.238234 0.451738 -0.428156 +v 46.468956 26.578848 0.901300 +vn -0.389425 1.462751 -1.093420 +v 46.230442 26.575150 0.981300 +vn 0.080750 1.696689 -0.837440 +v 46.033997 26.455111 0.761300 +vn -0.181233 0.679580 -0.368404 +v 45.994659 26.585312 1.021300 +vn -0.286364 1.073795 -0.582111 +v 45.966339 26.734970 1.311300 +vn 0.242286 0.682896 -0.324359 +v 46.428585 26.262518 0.461300 +vn 0.259009 1.033008 -0.516349 +v 46.237015 26.314455 0.501300 +vn 0.079216 0.476394 -0.239176 +v 46.231007 26.430927 0.731300 +vn 0.072419 0.652091 -0.194274 +v 45.934696 26.316044 0.291300 +vn 0.199964 0.905200 -0.325851 +v 46.075916 26.374842 0.541300 +vn 0.705504 -0.442216 0.107951 +v 46.735004 28.047091 1.051300 +vn 0.871951 -0.711943 0.184254 +v 46.230061 27.382233 1.201301 +vn 0.957883 -0.571831 0.113451 +v 46.707817 27.908300 0.581300 +vn 0.816352 -0.801531 0.196072 +v 45.951889 26.881918 0.371301 +vn 0.631509 -0.661022 0.210439 +v 45.893097 27.023130 0.991301 +vn 0.868190 -0.494750 0.124572 +v 46.520233 27.649628 0.861300 +vn 0.816044 -0.627459 0.159663 +v 46.255516 27.254761 0.631300 +vn 1.493862 -0.491456 0.519004 +v 45.658009 26.853033 1.051300 +vn 0.987002 -0.324707 0.250637 +v 45.586746 26.636419 1.051300 +vn 0.316993 -0.380861 0.162301 +v 45.549568 26.924711 1.431300 +vn 1.020989 -0.991656 0.433248 +v 45.752861 26.711954 0.451301 +vn 0.605962 -0.588552 0.257134 +v 45.764301 26.623247 0.221300 +vn 0.588228 -0.216436 0.131950 +v 45.716530 26.783915 0.731300 +vn 0.662087 -0.466105 0.169551 +v 46.519661 27.793858 1.421300 +vn 0.510409 -0.390270 0.163764 +v 46.381519 27.881922 2.075428 +vn 0.775415 -0.777477 0.368630 +v 46.002682 27.483608 2.075428 +vn 0.561700 -0.507690 0.215911 +v 46.168545 27.509575 1.781301 +vn 0.144569 -0.130679 0.055570 +v 46.436394 27.810171 1.791300 +vn 1.237236 -1.118362 0.475569 +v 46.343613 27.828350 2.075428 +vn 0.560492 -0.831100 0.314203 +v 45.749256 27.288107 2.075428 +vn 0.951920 0.555724 0.326411 +v 45.408066 26.938025 1.821301 +vn 0.664170 -0.587126 0.353557 +v 45.378262 27.004477 2.075428 +vn 0.746333 -0.901029 0.323142 +v 45.510223 27.054920 1.911301 +vn 0.722313 0.422955 0.242745 +v 45.486179 26.821842 1.791300 +vn 0.353348 0.206905 0.118748 +v 45.337376 26.912897 2.075428 +vn 0.155290 -0.217586 0.085222 +v 45.728573 27.249914 2.011300 +vn 0.129247 -0.181095 0.070929 +v 45.486366 27.102169 2.075428 +vn 0.354198 -0.485452 0.173214 +v 45.859196 27.181087 1.551300 +vn 0.288224 -0.396318 0.164349 +v 45.619686 27.197319 2.075428 +vn -0.266334 0.468892 -0.494057 +v 46.489292 27.050434 1.361300 +vn -0.172521 0.558900 -0.376189 +v 46.215858 26.758144 1.231300 +vn -0.778738 1.185708 -1.056979 +v 46.192833 26.971615 1.491301 +vn -0.524644 0.910012 -0.528824 +v 45.449860 26.966015 2.075428 +vn -0.713560 1.237635 -0.719216 +v 45.422626 26.950314 2.075428 +vn -0.167217 0.408858 -0.236066 +v 45.632412 27.016562 1.981300 +vn -0.391334 0.952651 -0.554124 +v 45.682903 26.869772 1.691300 +vn -0.403562 0.982420 -0.571440 +v 45.921276 26.909525 1.591300 +vn -0.828188 1.158975 -0.758073 +v 45.607006 27.059975 2.075428 +vn -0.671857 0.692336 -0.676209 +v 46.339188 27.610420 2.075428 +vn -0.742960 0.936194 -0.896185 +v 46.482723 27.311119 1.621301 +vn -0.419518 0.507766 -0.452253 +v 46.478878 27.585674 1.911301 +vn -0.306134 0.501039 -0.357045 +v 46.172527 27.198965 1.761300 +vn -0.685144 1.121354 -0.799087 +v 45.878933 27.097967 1.871301 +vn -0.750394 0.912260 -0.812129 +v 46.076012 27.399223 2.075428 +vn -0.758814 0.947561 -0.790229 +v 46.138351 27.429024 2.051300 +vn -0.675162 0.843101 -0.703113 +v 46.135044 27.446497 2.075428 +vn -0.646831 0.755795 -1.321743 +v 47.542343 27.276440 0.851300 +vn -0.320314 0.364917 -0.523370 +v 47.154324 27.208347 1.041300 +vn -0.538293 0.572972 -0.945875 +v 48.145153 27.741972 0.821301 +vn -0.282010 0.466089 -0.490136 +v 46.773006 26.843523 1.001300 +vn -0.722340 0.995655 -1.097623 +v 46.802353 27.140406 1.211300 +vn -1.344733 1.399242 -1.365769 +v 46.778889 28.034199 2.075428 +vn -1.140561 1.186773 -1.158346 +v 46.467308 27.734751 2.075428 +vn -0.470343 0.480873 -0.520584 +v 46.840317 28.069683 2.051300 +vn -0.841508 0.937184 -0.949890 +v 46.844307 27.759064 1.741301 +vn -0.388786 0.423153 -0.511090 +v 46.831692 27.437294 1.461300 +vn -0.360419 0.383636 -0.424626 +v 47.270683 27.949335 1.551300 +vn -0.508916 0.486710 -0.690573 +v 47.853184 28.642223 1.661301 +vn -0.345459 0.402094 -0.509222 +v 48.392704 28.269911 1.001300 +vn -0.740521 0.879512 -1.073304 +v 47.225018 27.569191 1.271300 +vn -0.685878 0.682716 -0.922089 +v 47.774750 28.131588 1.311300 +vn -0.493649 0.491374 -0.663658 +v 47.671135 27.676332 1.051300 +vn 0.239703 0.784366 -0.369198 +v 46.603996 26.091238 0.211300 +vn 0.150211 1.006907 -0.980630 +v 46.645206 26.191246 0.421300 +vn 0.067286 0.761307 -0.375760 +v 46.878410 26.131149 0.341300 +vn -0.666967 0.747795 -1.115588 +v 47.091782 26.889149 0.841300 +vn -0.561263 1.016773 -1.243206 +v 46.743515 26.582705 0.801300 +vn -0.168812 0.444857 -0.617814 +v 47.026382 26.592125 0.681300 +vn -0.193548 0.510042 -0.708342 +v 46.694435 26.368944 0.611300 +vn -0.230346 1.337791 -1.147398 +v 46.453060 26.387421 0.681300 +vn -0.259244 0.417027 -0.673649 +v 47.455055 26.904438 0.681300 +vn -0.209324 0.300799 -0.537404 +v 47.717152 26.550455 0.361300 +vn -0.556643 0.693969 -1.174093 +v 47.348152 26.579525 0.521300 +vn -0.034741 1.118215 -0.981187 +v 47.122787 26.054440 0.271300 +vn -0.276314 1.036796 -1.085835 +v 46.960838 26.331158 0.511300 +vn -0.482847 0.654285 -1.208852 +v 47.510384 26.230698 0.261300 +vn -0.112321 0.406683 -0.636710 +v 47.241123 26.290653 0.401300 +vn -1.878956 1.161958 -0.945288 +v 39.002392 23.757717 2.075428 +vn -0.401392 0.253375 -0.208331 +v 38.959007 23.554039 1.911301 +vn -1.456427 0.919357 -0.755916 +v 38.928753 23.641060 2.075428 +vn -1.399421 0.361484 -0.350785 +v 38.629707 22.871943 2.075428 +vn -2.227910 0.835114 -0.829806 +v 38.715675 23.170603 2.075428 +vn -0.909174 0.057337 -0.435107 +v 39.033630 22.206392 0.861300 +vn -0.660512 0.103477 -0.289967 +v 38.904877 22.505430 1.261300 +vn -0.501081 0.100353 -0.201914 +v 38.684132 22.923367 1.911301 +vn -1.722151 0.344901 -0.693951 +v 38.784840 22.701887 1.551300 +vn -0.641674 0.128510 -0.258566 +v 38.697411 22.365940 1.601300 +vn -1.174037 0.418912 -0.606258 +v 38.818783 23.242849 1.871301 +vn -0.483352 0.130198 -0.218984 +v 38.963844 23.027092 1.441300 +vn -0.726758 0.132166 -0.389240 +v 38.887112 22.083786 1.151300 +vn -0.726388 0.440716 -0.386516 +v 39.147873 23.488209 1.481300 +vn -0.764006 0.120786 -0.248200 +v 39.207336 22.467785 0.521300 +vn -0.626870 0.048723 -0.241985 +v 39.079395 21.851561 0.671300 +vn -1.651066 0.128329 -0.637346 +v 38.998562 21.953865 0.901300 +vn -0.941377 0.164067 -0.354815 +v 39.054253 22.605860 0.991301 +vn -1.211580 0.063803 -0.426584 +v 39.150658 22.068176 0.501300 +vn -1.005520 0.292886 -0.413551 +v 39.200058 22.908752 0.851300 +vn 1.318109 -0.202161 -0.062272 +v 47.315845 29.871569 1.251300 +vn 0.965210 -0.148036 -0.045599 +v 47.271782 29.793730 0.571301 +vn 0.970836 -0.139019 -0.064994 +v 47.412895 30.587509 0.981300 +vn 0.796651 -0.344441 0.065085 +v 46.913452 28.516506 1.351300 +vn 0.912457 -0.277510 0.013886 +v 47.127522 29.094238 0.921300 +vn 1.398812 -0.814201 0.300174 +v 46.922752 28.751585 2.075428 +vn 0.462050 -0.268944 0.099152 +v 46.862877 28.648718 2.075428 +vn 1.247177 -0.516231 0.104210 +v 47.165592 29.288532 1.941300 +vn 1.550324 -0.700631 0.277305 +v 46.718124 28.108042 1.411301 +vn 0.909185 -0.344853 0.090028 +v 47.160294 29.224722 1.571301 +vn 0.944647 -0.468447 0.133035 +v 46.657032 28.127218 1.801300 +vn 0.853463 -0.423230 0.120193 +v 46.937496 28.749586 2.001300 +vn 1.328149 -0.425877 0.097631 +v 47.160366 29.302982 2.075428 +vn 0.767628 -0.203501 -0.192884 +v 47.548676 30.618551 1.851300 +vn 1.357182 -0.359794 -0.341024 +v 47.608776 30.632822 2.075428 +vn 1.061579 -0.354504 -0.081043 +v 47.382095 29.952261 1.891300 +vn -1.674961 -0.266231 -0.623557 +v 45.508507 42.362148 0.000000 +vn 1.000381 0.212077 -2.176793 +v 47.061752 36.953766 0.000000 +vn 0.213883 0.031162 -0.198467 +v 47.245232 36.572109 0.181300 +vn 0.375947 0.011732 -0.241325 +v 47.142986 36.119209 0.000000 +vn 1.492903 -0.512177 -1.040494 +v 47.314316 38.106377 0.000000 +vn 0.933179 -0.224163 -0.934305 +v 47.293507 37.701122 0.111300 +vn 0.798563 -0.137353 -0.879180 +v 47.187321 37.195927 0.081300 +vn 1.110515 -0.164940 -0.108403 +v 47.289906 37.204647 0.231300 +vn 2.062670 -0.503903 0.060600 +v 47.482967 38.190006 0.271300 +vn 1.796126 -0.406218 -0.057991 +v 47.423004 37.920738 0.551300 +vn 0.692451 -0.156607 -0.022357 +v 47.373775 37.743042 0.271300 +vn 0.559059 -0.727038 -0.419746 +v 47.913689 39.395401 0.031301 +vn 0.775372 -0.972776 -0.383942 +v 47.952602 39.373363 0.121301 +vn 0.655618 -0.289160 -0.316425 +v 47.875622 39.201103 0.111300 +vn -0.333898 -1.260701 -0.523568 +v 48.401581 39.458328 0.051300 +vn -0.272426 -1.028602 -0.427177 +v 48.352825 39.492546 0.000000 +vn -0.342336 -1.295040 -0.537507 +v 48.289661 39.509243 0.000000 +vn 0.149152 -0.862972 0.334469 +v 48.465111 39.525143 0.471300 +vn -0.342976 -1.143238 -0.370133 +v 48.151913 39.471218 0.211300 +vn -0.131821 -1.536687 -0.411901 +v 48.293415 39.457905 0.121301 +vn 1.226562 -1.233905 0.972887 +v 47.991379 39.387383 0.481300 +vn 1.615876 -1.281878 0.202761 +v 48.074509 39.407124 0.331300 +vn 1.062805 -0.435113 0.047702 +v 47.961327 39.270779 0.371301 +vn 0.759909 -0.311107 0.034107 +v 48.010838 39.376366 0.231300 +vn 0.049588 -0.465781 0.111692 +v 48.249203 39.416130 0.291300 +vn -0.124885 -0.692393 -0.343145 +v 48.462486 39.472767 0.000000 +vn 0.176847 -0.271402 -0.124505 +v 48.545944 39.422840 0.171300 +vn -0.007510 -1.280237 -0.369575 +v 48.490753 39.472614 0.000000 +vn -1.088395 0.304111 -0.439164 +v 45.799816 40.926426 0.051300 +vn 1.119330 -0.360478 -0.783919 +v 47.405560 38.125912 0.121301 +vn 0.125617 -0.066692 -0.085664 +v 47.526192 38.484169 0.121301 +vn 1.227481 -0.459613 -0.621501 +v 47.740746 38.991371 0.000000 +vn 1.097934 -0.443175 -0.532614 +v 47.942150 39.209686 0.241301 +vn 1.461266 -0.838688 -0.679009 +v 47.652683 38.762016 0.091300 +vn 0.928942 -0.644887 -0.665846 +v 47.592548 38.769661 0.000000 +vn 1.052493 -0.619938 -0.542179 +v 47.790478 38.987209 0.101300 +vn 2.076159 -1.221597 -1.066243 +v 47.708954 38.937340 0.000000 +vn 0.757309 -0.497438 0.320405 +v 47.889217 39.270496 0.541300 +vn 0.502086 -0.197090 0.212645 +v 47.818233 38.981773 0.441300 +vn 1.172342 -0.490341 0.583557 +v 47.756859 39.073055 0.641300 +vn 0.401026 -0.207196 0.049872 +v 47.631214 38.578880 0.271300 +vn 1.108918 -0.515085 0.140231 +v 47.848709 38.990211 0.231300 +vn -0.632672 0.376110 -0.510981 +v 35.818432 25.214163 0.321301 +vn -0.243631 0.132527 -0.209806 +v 36.744499 26.704399 0.251300 +vn -1.434004 0.780050 -1.234906 +v 36.697708 26.220545 0.000000 +vn -0.845338 0.486832 -0.680761 +v 36.550659 25.965208 0.000000 +vn -0.566057 0.363829 -0.485773 +v 36.199829 25.419176 0.000000 +vn -0.168674 0.108369 -0.144502 +v 36.308006 25.587523 0.000000 +vn 0.860728 -0.729060 -0.389963 +v 37.897724 22.325493 0.000000 +vn 0.162195 -0.137423 -0.073510 +v 37.860828 22.104727 0.331300 +vn 0.748175 -0.694094 -0.366346 +v 37.837795 22.254761 0.000000 +vn 1.920842 -1.781952 -0.940386 +v 37.700928 22.107225 0.000000 +vn 0.748537 -0.816102 -0.504178 +v 37.514194 21.916113 0.000000 +vn 0.313169 -0.620515 -0.078980 +v 36.773838 21.337751 0.351300 +vn 0.435481 -1.304790 -0.665840 +v 36.704231 21.493790 0.000000 +vn 0.551974 -1.310879 -0.608138 +v 37.216667 21.575245 0.241301 +vn 0.926238 -1.570414 -0.684860 +v 37.453373 21.860327 0.000000 +vn 0.451966 -0.678183 -0.386361 +v 37.515137 21.848217 0.111300 +vn 0.832492 -1.249169 -0.711651 +v 37.321098 21.782310 0.000000 +vn 0.696638 -1.045296 -0.595499 +v 37.112648 21.643389 0.000000 +vn 1.480990 -1.194641 -0.147679 +v 38.026653 22.252380 0.481300 +vn 0.873045 -0.711001 -0.049193 +v 38.611874 22.959146 0.591300 +vn 1.590985 -0.961731 0.699760 +v 38.470375 22.972452 0.931300 +vn 0.770202 -0.462079 0.162114 +v 38.222687 22.480568 0.601300 +vn 1.343410 -0.907033 0.605772 +v 38.073448 22.344082 0.921300 +vn 0.892216 -0.554027 0.469662 +v 38.043999 22.782183 1.541300 +vn 0.853613 -0.454346 0.432091 +v 38.244156 22.663704 1.021300 +vn 1.009522 -1.500528 0.406395 +v 37.667522 21.890409 1.121301 +vn 1.212913 -1.302397 -0.019581 +v 37.692551 21.871099 0.481300 +vn 0.535781 -0.580751 0.070159 +v 37.427277 21.620443 0.721300 +vn 0.637388 -0.548848 0.261855 +v 37.894306 22.054934 0.751300 +vn 0.710335 -0.453274 0.233832 +v 37.840801 22.259974 1.311300 +vn -0.954080 0.471091 -0.794791 +v 36.884438 26.563835 0.000000 +vn -0.029626 0.010884 -0.025915 +v 37.380394 27.927238 0.091300 +vn -0.948799 0.364938 -0.806510 +v 37.156010 27.149775 0.021300 +vn 0.656091 -0.413389 0.289224 +v 38.696449 23.317263 0.911301 +vn 1.726777 -1.373694 0.357098 +v 39.349186 23.780224 0.291300 +vn 0.301043 -0.239487 0.062256 +v 39.086914 23.471336 0.371301 +vn 1.339706 -0.970358 0.619714 +v 39.174488 23.771217 0.581300 +vn 0.595804 -0.431545 0.275604 +v 39.480701 24.193985 0.581300 +vn 0.629867 -0.391770 0.365511 +v 38.339886 23.005232 1.191300 +vn 1.109783 0.180747 -1.029901 +v 47.239758 35.845428 0.061300 +vn 1.056309 0.172038 -0.980276 +v 47.182735 35.846252 0.000000 +vn 1.709669 0.116957 0.015792 +v 47.328884 34.332287 0.000000 +vn 1.159360 0.061815 -0.081923 +v 47.300674 35.163380 0.361300 +vn 1.475486 0.112557 -0.037202 +v 47.377239 33.641823 0.000000 +vn 1.246790 0.094663 -0.023979 +v 47.378716 33.649342 0.081300 +vn 0.427283 0.032441 -0.008218 +v 47.328960 34.314793 0.121301 +vn 1.627871 -1.176291 0.489043 +v 39.690170 24.122593 0.000000 +vn 0.533254 -0.385327 0.160200 +v 39.762703 24.222971 0.000000 +vn 1.609556 -0.560817 1.023293 +v 39.806927 24.461531 0.061300 +vn 0.109264 -0.038071 0.069466 +v 39.600449 24.069645 0.171300 +vn 0.567361 -0.393558 0.370689 +v 39.873756 24.500135 0.000000 +vn -1.414974 -0.391875 -0.084426 +v 39.994228 24.792311 0.491301 +vn -1.048321 -0.493893 -0.186927 +v 40.030430 24.756390 0.051300 +vn -0.443260 0.194092 -0.134538 +v 40.078632 24.487547 0.491301 +vn -1.447183 0.633684 -0.439249 +v 40.115757 24.231777 0.000000 +vn -1.410667 0.617650 -0.428142 +v 40.198116 24.419880 0.000000 +vn 0.570111 -0.396128 0.211084 +v 39.349937 24.298866 1.131300 +vn 0.426881 -0.479516 0.074269 +v 39.728813 24.577713 0.631300 +vn 1.652609 -1.134606 0.509874 +v 39.762432 24.491865 0.331300 +vn 1.353747 -0.986909 0.262064 +v 46.287735 27.136221 0.000000 +vn 1.255878 -0.945126 0.213896 +v 46.538044 27.470705 0.000000 +vn 0.587721 -0.313055 0.083392 +v 46.763184 27.933487 0.121301 +vn 1.491611 -0.772836 0.179977 +v 46.686039 27.756346 0.000000 +vn 0.761873 -0.394739 0.091931 +v 46.534531 27.538752 0.321301 +vn 0.796701 -0.666970 0.153322 +v 46.259533 27.102533 0.000000 +vn 0.501506 -0.448350 0.111879 +v 46.275398 27.135576 0.061300 +vn -1.025760 -0.225096 -0.255777 +v 39.448566 20.602238 0.000000 +vn -1.052212 -0.057499 -0.314671 +v 39.278099 21.394716 0.121301 +vn -1.421323 -0.077669 -0.425057 +v 39.304653 21.572620 0.000000 +vn -2.659555 -0.331683 -0.749833 +v 39.353374 21.065353 0.000000 +vn -0.290465 -0.036225 -0.081894 +v 39.361469 21.000446 0.000000 +vn -1.837367 0.896123 -0.232493 +v 39.956429 23.914948 0.000000 +vn -1.396147 0.554695 -0.109954 +v 39.979031 23.971836 0.000000 +vn -0.409317 0.266559 -0.028792 +v 39.969719 23.968479 0.101300 +vn -0.797144 0.244345 -0.212321 +v 39.690201 23.369087 0.000000 +vn -1.519911 0.465893 -0.404832 +v 39.677937 23.329077 0.000000 +vn -0.726372 0.373912 -0.284482 +v 39.752682 24.147909 0.891300 +vn -0.829270 0.421858 -0.327790 +v 39.664364 23.329374 0.051300 +vn 0.406802 -0.003882 -0.009857 +v 47.424007 31.697042 0.000000 +vn 2.653114 0.097642 -0.130873 +v 47.407291 32.866203 0.000000 +vn 1.952710 -0.217206 0.036336 +v 47.389828 30.881157 0.000000 +vn 0.369928 -0.016408 -0.004931 +v 47.419781 31.556469 0.000000 +vn 0.778713 -0.685323 0.219245 +v 45.870377 26.670513 0.000000 +vn 1.129005 -0.993604 0.317868 +v 46.019230 26.839651 0.000000 +vn 1.552741 -0.231247 0.182274 +v 45.775742 26.534538 0.011300 +vn 0.550708 0.142135 0.104127 +v 45.751270 26.409634 0.061300 +vn 1.394610 0.359941 0.263691 +v 45.760471 26.418892 0.000000 +vn 1.004215 -0.624155 0.350366 +v 45.776402 26.529257 0.000000 +vn 0.223750 -0.139068 0.078065 +v 45.800655 26.568279 0.000000 +vn 0.068531 -0.043231 0.022010 +v 45.852570 26.650576 0.000000 +vn -0.647726 -1.402043 0.153173 +v 39.869495 19.816126 0.381300 +vn -0.616655 -1.148225 -0.055915 +v 39.912861 19.780478 0.000000 +vn -0.744141 -0.712780 -0.137270 +v 39.688942 19.887522 0.271300 +vn -1.169192 -1.504786 0.310085 +v 39.537842 20.093620 0.000000 +vn -1.248224 -0.291649 -0.302567 +v 39.442875 20.396885 0.221300 +vn -0.819577 -0.224730 -0.083457 +v 39.535568 20.097715 0.011300 +vn -0.218768 0.258965 -0.545683 +v 51.745487 29.789062 0.271300 +vn -0.575584 0.681341 -1.435701 +v 51.980190 29.415659 0.000000 +vn -0.275494 0.326113 -0.687177 +v 51.652676 29.138981 0.000000 +vn -0.076043 0.112033 -0.198938 +v 53.619068 30.585613 0.000000 +vn -0.840379 1.172562 -2.340692 +v 52.452267 29.753998 0.000000 +vn 0.005000 0.540646 -0.754077 +v 57.903275 33.893032 0.931300 +vn 0.406502 0.736094 -1.207767 +v 59.898140 33.004997 0.751300 +vn 0.219568 0.442037 -0.734993 +v 59.177914 33.484776 0.801300 +vn 0.030333 0.397679 -0.634424 +v 57.790073 32.535770 0.000000 +vn 0.063822 0.836743 -1.334870 +v 57.427032 32.563461 0.000000 +vn 0.023911 0.365608 -0.590804 +v 58.525745 32.877586 0.241301 +vn 0.038954 0.030314 -0.082945 +v 59.767319 31.503559 0.000000 +vn 0.269110 0.313770 -0.742280 +v 59.395477 32.462200 0.251300 +vn 0.258275 0.294773 -0.588769 +v 60.580006 32.403046 0.741301 +vn 0.650036 0.741895 -1.481833 +v 60.082508 31.960104 0.301300 +vn -0.197101 0.312925 -0.535472 +v 54.741467 31.767225 0.271300 +vn -0.399172 0.750810 -1.092955 +v 55.540432 32.424911 0.431300 +vn -0.106030 0.189967 -0.300749 +v 55.805534 32.012688 0.051300 +vn -0.021542 0.038596 -0.061103 +v 54.828571 31.386179 0.000000 +vn -0.124783 0.188024 -0.304147 +v 53.990307 30.829861 0.000000 +vn -0.028389 0.090193 -0.136437 +v 57.446949 32.851173 0.181300 +vn -0.481139 0.985521 -1.347055 +v 56.569294 32.453903 0.101300 +vn 0.261430 1.411826 -0.069304 +v 46.133385 26.218931 0.000000 +vn 0.114669 0.451238 -0.075548 +v 46.131992 26.219744 0.011300 +vn 0.634944 2.498592 -0.418323 +v 46.112598 26.222780 0.000000 +vn 0.641766 1.489609 -0.361286 +v 46.406834 26.151491 0.211300 +vn 0.516208 1.223982 -0.300717 +v 46.158817 26.205654 0.000000 +vn 0.259487 0.613144 -0.150856 +v 46.223419 26.245064 0.271300 +vn -0.454474 -0.208927 -0.061019 +v 40.258179 18.557137 0.000000 +vn -0.064494 -0.028756 -0.026645 +v 40.462139 18.120432 0.000000 +vn -0.955473 -0.314460 -0.383850 +v 40.032112 18.660198 0.511300 +vn -0.832523 -0.253292 -0.340517 +v 40.069443 18.335844 0.661301 +vn -0.682263 -0.132827 -0.251627 +v 40.056026 18.929321 0.231300 +vn -0.987887 -0.043599 -0.272186 +v 39.874611 19.217066 0.571301 +vn -1.174747 -0.051845 -0.323670 +v 39.875782 19.627542 0.501300 +vn -1.186890 -0.212849 -0.353285 +v 40.002380 19.170416 0.221300 +vn -0.832067 -0.149218 -0.247670 +v 39.990376 19.403336 0.121301 +vn -1.585831 -0.371259 -0.466788 +v 40.070648 19.157053 0.000000 +vn -0.959017 -0.107614 -0.198551 +v 40.020287 19.650806 0.000000 +vn -0.481403 -0.005974 -0.130844 +v 39.983528 19.736132 0.131300 +vn -1.655738 -0.020546 -0.450026 +v 40.022091 19.504383 0.000000 +vn -0.473816 0.572646 -1.206313 +v 48.636131 26.570517 0.000000 +vn -0.094160 0.106316 -0.227655 +v 49.303871 27.125385 0.000000 +vn -0.460034 0.506227 -1.097989 +v 49.676491 27.650904 0.091300 +vn 0.219819 0.719301 -0.170722 +v 46.397556 26.104176 0.000000 +vn 0.606969 1.986378 -0.471386 +v 46.460339 26.084991 0.000000 +vn 0.080235 0.214828 -0.095297 +v 46.792992 25.989357 0.141300 +vn 0.575952 1.542113 -0.684073 +v 46.741619 25.945864 0.000000 +vn 0.106495 0.500232 -0.411496 +v 47.031925 25.884899 0.081300 +vn 0.313659 1.473332 -1.211977 +v 47.116184 25.800083 0.000000 +vn 0.691556 1.249892 -0.587221 +v 47.013718 25.856777 0.000000 +vn -0.789921 0.040084 -0.247360 +v 39.278133 22.093645 0.121301 +vn -0.309509 0.015596 -0.096579 +v 39.296886 21.714649 0.000000 +vn -1.124508 0.199782 -0.385896 +v 39.384377 22.457350 0.000000 +vn -1.538287 0.328526 -0.362290 +v 39.306583 22.093092 0.000000 +vn -0.872605 0.350442 -0.320390 +v 39.420414 23.297911 0.681300 +vn -2.617620 1.080786 -0.908959 +v 39.557850 23.028257 0.000000 +vn -1.092859 0.300692 -0.360261 +v 39.385914 22.901161 0.341300 +vn -0.738277 0.204333 -0.244646 +v 39.398914 22.539497 0.000000 +vn -1.293883 0.390166 -0.459749 +v 39.512096 22.917444 0.000000 +vn 1.130104 -0.182467 -0.039643 +v 47.211819 29.524464 0.101300 +vn 0.942040 -0.152102 -0.033046 +v 47.301125 30.090612 0.041300 +vn 1.216879 -0.251457 0.055074 +v 47.082256 28.863638 0.000000 +vn 0.284196 -0.057479 0.013811 +v 47.208397 29.483219 0.000000 +vn 0.485329 -0.082960 0.028858 +v 47.290543 30.014339 0.000000 +vn 1.133607 -0.452466 0.105193 +v 46.756638 27.888885 0.000000 +vn 0.572829 -0.165517 0.042023 +v 47.028172 28.676458 0.000000 +vn 1.260465 -0.364087 0.092255 +v 46.924450 28.317375 0.000000 +vn 0.914014 -0.262194 0.032715 +v 46.916737 28.386164 0.621301 +vn 1.406206 -0.403385 0.050331 +v 46.925175 28.355688 0.141300 +vn 0.697795 -0.200170 0.024976 +v 47.086590 28.922127 0.171300 +vn -0.062948 0.971668 -1.207080 +v 58.444698 34.449863 1.351300 +vn 0.070971 0.635462 -0.826567 +v 59.178204 35.292072 2.075428 +vn -0.200008 0.564816 -0.693981 +v 56.515060 34.972038 2.011300 +vn -0.240315 0.678642 -0.833836 +v 56.443378 35.025448 2.075428 +vn 0.216518 0.181176 -0.448030 +v 62.883194 32.842957 2.075428 +vn 0.636418 0.515170 -1.247472 +v 61.113419 32.882183 1.211300 +vn 0.272819 0.319349 -0.620777 +v 60.419971 33.608894 1.291300 +vn 0.296873 0.359416 -0.691577 +v 61.691185 33.367039 1.711300 +vn 0.665024 0.553281 -1.328305 +v 62.321537 32.465332 1.651300 +vn 0.038005 0.620849 -0.828978 +v 58.315731 33.387100 0.571301 +vn 0.051436 0.840260 -1.121944 +v 58.527931 33.734623 0.841300 +vn 0.124832 0.331450 -0.494541 +v 60.384693 34.826332 2.001300 +vn 0.453011 0.789884 -1.331906 +v 61.050243 34.141113 1.821301 +vn 0.312766 0.614048 -0.948344 +v 59.418476 34.381557 1.461300 +vn -0.138485 0.431538 -0.588676 +v 56.375885 32.974560 0.551300 +vn -0.025180 1.045216 -1.351300 +v 58.383499 35.204021 1.961300 +vn 0.124505 1.076856 -1.360287 +v 58.846745 34.479172 1.411301 +vn 0.123841 0.643564 -0.916889 +v 59.610085 35.028545 1.941300 +vn -0.026021 0.063513 -0.075097 +v 55.482658 34.683430 2.075428 +vn -0.104353 0.380868 -0.515768 +v 56.245155 33.778370 1.171300 +vn -0.199169 0.507031 -0.673164 +v 55.567276 34.069706 1.591300 +vn 0.165136 0.560044 -0.814751 +v 58.712376 34.087582 1.121301 +vn -0.104935 0.585125 -0.688753 +v 57.018944 34.491428 1.541300 +vn -0.076546 0.426830 -0.502423 +v 57.944378 34.728020 1.601300 +vn -0.180858 1.008483 -1.187089 +v 57.474777 34.243587 1.261300 +vn -0.002199 0.482147 -0.607843 +v 58.195656 35.347046 2.075428 +vn 0.036220 0.793151 -1.044993 +v 58.784008 35.336098 2.075428 +vn 0.285882 0.772129 -1.126287 +v 60.440807 34.913685 2.075428 +vn -0.412948 1.234917 -1.524775 +v 56.534687 35.057781 2.075428 +vn -0.145370 0.741879 -0.991344 +v 57.468948 35.022934 1.871301 +vn -0.098353 0.501934 -0.670714 +v 57.069767 34.971439 1.891300 +vn -0.246600 1.258565 -1.681791 +v 57.203667 35.243721 2.075428 +vn 0.128144 0.454933 -0.577132 +v 58.858791 34.945164 1.781301 +vn 0.639819 0.468937 0.890450 +v 78.676079 22.783230 1.011300 +vn 0.588658 0.720285 1.216137 +v 79.292870 22.511068 0.751300 +vn 0.820408 0.643155 1.226182 +v 79.060081 22.463005 0.911301 +vn 0.436403 0.581549 0.555004 +v 79.126190 22.579752 0.791300 +vn 0.391262 0.521394 0.497595 +v 78.906998 22.601084 0.941300 +vn 0.572457 0.279240 0.894835 +v 78.658142 21.698713 1.451301 +vn 0.474909 0.302554 0.759395 +v 78.659164 22.145254 1.311300 +vn 0.666144 0.343418 1.012124 +v 78.966362 22.315643 1.051300 +vn 0.467622 0.241074 0.710494 +v 79.079079 21.861225 1.131300 +vn 0.050626 0.566048 1.002949 +v 77.129875 23.129414 1.461300 +vn -0.290576 0.701398 0.873920 +v 76.603951 23.571115 1.141300 +vn -0.156017 0.429743 0.801568 +v 77.069527 23.667238 1.151300 +vn -0.259155 0.594031 0.861899 +v 76.819717 23.716183 1.081300 +vn 0.080605 0.475712 1.031928 +v 77.442650 23.291502 1.351300 +vn -0.061558 0.503487 0.861883 +v 76.820564 23.499853 1.231300 +vn -0.066650 0.545135 0.933179 +v 77.106567 23.414993 1.301300 +vn 0.539120 0.338400 0.650629 +v 78.660477 22.519686 1.161301 +vn 0.503549 0.264138 0.793258 +v 78.486519 23.029333 1.091300 +vn 0.706403 0.370546 1.112820 +v 78.339722 22.978832 1.201301 +vn 0.427273 0.147593 0.490447 +v 78.454170 22.790682 1.191300 +vn 0.979050 0.361071 0.959144 +v 78.559196 22.885393 1.071301 +vn 0.464917 0.386276 1.284226 +v 78.070030 23.146963 1.271300 +vn 0.247295 0.205465 0.683095 +v 78.159729 22.906017 1.311300 +vn 0.533863 0.577091 1.559254 +v 77.954697 22.852518 1.401300 +vn 0.205452 0.192906 0.701280 +v 77.826225 23.079443 1.361300 +vn 1.004834 0.157275 1.224181 +v 78.447037 23.195589 1.081300 +vn 0.398632 0.175734 0.612658 +v 78.269623 23.172707 1.191300 +vn 0.523589 -0.347405 0.877751 +v 79.617683 20.307390 0.811300 +vn 0.655319 -0.324448 0.816295 +v 79.619553 20.537601 0.901300 +vn 0.431254 -0.285980 0.539714 +v 79.359718 20.314703 1.021300 +vn 0.379094 -0.065644 0.557142 +v 79.303215 20.577965 1.121301 +vn 0.601969 -0.289228 0.978726 +v 78.828743 19.921556 1.301300 +vn 0.709362 -0.029786 1.159271 +v 79.471909 20.703434 1.021300 +vn 0.406699 -0.033064 0.567333 +v 78.996162 20.371523 1.331300 +vn 0.888390 -0.100429 1.321548 +v 79.103195 20.660387 1.281301 +vn 0.061461 -0.740125 0.728937 +v 77.507088 18.876308 1.281301 +vn 0.223638 -0.813223 1.029491 +v 77.866936 19.057997 1.391300 +vn 0.265756 -0.966030 1.225226 +v 77.625847 19.004356 1.401300 +vn 0.262248 -0.425875 0.875538 +v 77.532730 19.411699 1.691300 +vn 0.339830 -0.679721 1.239933 +v 77.589088 19.184490 1.551300 +vn 0.200957 -0.401951 0.733232 +v 77.832748 19.288067 1.541300 +vn 0.277655 -0.366194 0.783086 +v 78.081711 19.455452 1.531301 +vn 0.474878 -0.218645 0.889835 +v 78.802818 19.458275 1.201301 +vn 0.394724 -0.181740 0.739641 +v 78.366310 19.731146 1.501300 +vn 0.748151 -0.303212 0.980953 +v 79.205467 20.042292 1.051300 +vn 1.032125 -0.088882 1.582932 +v 79.096703 19.487162 1.011300 +vn 0.455581 -0.242982 0.401227 +v 79.378006 19.893198 0.791300 +vn 0.546102 0.105797 0.457167 +v 79.145782 19.700914 0.991301 +vn 0.889871 -0.229552 0.694932 +v 79.401031 19.679726 0.691300 +vn -0.173060 0.770229 0.874736 +v 76.396339 23.467684 1.191300 +vn 0.248037 -0.402796 0.810067 +v 77.745773 19.542889 1.691300 +vn -0.101556 -0.671854 0.671647 +v 77.014641 19.268221 1.661301 +vn -0.003296 -0.994102 1.049987 +v 77.098755 19.035574 1.441300 +vn 0.102924 -0.910595 1.112984 +v 77.350861 19.108673 1.511300 +vn -0.071665 -0.550956 0.722968 +v 76.780724 19.508600 1.821301 +vn 0.141189 -0.349017 0.691587 +v 77.076759 19.695585 1.941300 +vn 0.110706 -0.374167 0.634013 +v 77.291779 19.322002 1.691300 +vn 0.235104 -0.794613 1.346444 +v 77.268761 19.535473 1.821301 +vn 0.299989 -0.155232 0.734810 +v 78.508553 20.236485 1.591300 +vn 0.585898 -0.207411 1.342104 +v 78.701576 20.522911 1.551300 +vn 0.517316 -0.159095 1.370179 +v 78.154320 20.745422 1.821301 +vn 0.257846 -0.101970 0.664041 +v 78.074898 20.487173 1.821301 +vn 0.313770 -0.020727 0.793976 +v 77.904510 20.794367 1.921300 +vn 0.295606 -0.002928 0.785937 +v 78.172646 21.022848 1.821301 +vn 0.935310 0.097648 1.570423 +v 78.489128 20.946426 1.671300 +vn 0.303459 -0.018084 0.545500 +v 78.822487 20.809057 1.481300 +vn 0.391725 -0.013542 0.833390 +v 78.437462 20.682743 1.691300 +vn 0.697284 0.055094 1.364710 +v 78.188118 21.322447 1.801300 +vn 0.460457 -0.297727 1.174139 +v 77.757957 19.972832 1.821301 +vn 0.404491 -0.261541 1.031430 +v 77.633904 19.780973 1.821301 +vn 0.418566 -0.404081 1.099648 +v 77.944664 19.748909 1.691300 +vn 0.320144 -0.244978 0.881762 +v 78.059853 20.079409 1.741301 +vn 0.415757 0.162276 1.194554 +v 77.643158 21.667004 1.961300 +vn 0.299970 0.365189 1.144029 +v 77.442436 21.929703 1.941300 +vn 0.152287 0.234554 0.831588 +v 77.260147 21.734840 2.051300 +vn 0.238961 0.219341 0.752194 +v 77.616570 22.082928 1.841300 +vn 0.400725 0.440774 1.719258 +v 77.364037 22.117994 1.911301 +vn 0.184057 0.538635 1.172678 +v 76.645370 22.201160 2.001300 +vn 0.114029 0.315409 0.524317 +v 76.810638 22.493027 1.841300 +vn 0.284045 0.785682 1.306070 +v 76.499176 22.705368 1.781301 +vn 0.169248 0.254325 0.687475 +v 76.384407 22.266701 2.041300 +vn 0.123208 0.327477 0.965639 +v 77.092339 22.091969 1.981300 +vn 0.292959 0.778717 2.296295 +v 76.815521 21.918558 2.075428 +vn 0.251722 0.646342 0.607269 +v 75.699104 23.035055 1.761300 +vn 0.504351 0.729717 0.934728 +v 76.077950 22.614965 1.981300 +vn 0.427974 0.549618 1.078355 +v 76.234337 22.316597 2.075428 +vn 0.302000 0.409154 0.781078 +v 76.355659 22.524527 1.921300 +vn 0.229261 0.310643 0.593042 +v 76.154366 22.378872 2.075428 +vn 0.080263 0.087670 0.117571 +v 75.978813 22.518906 2.075428 +vn 0.158433 -0.359628 0.791620 +v 77.117691 19.867702 2.011300 +vn 0.050981 -0.316196 0.668955 +v 76.818649 19.738949 1.981300 +vn 0.054635 -0.605809 1.303007 +v 76.970886 19.817204 2.011300 +vn 0.282747 -0.439299 1.483400 +v 77.039436 20.019941 2.071301 +vn 0.085199 -0.247682 0.609508 +v 76.892563 19.948071 2.075428 +vn -0.100836 -0.473077 0.565263 +v 76.494720 19.593458 1.841300 +vn -0.202992 -0.797342 1.119241 +v 76.308159 19.781326 1.941300 +vn -0.085912 -0.874886 1.559676 +v 76.667557 19.921589 2.075428 +vn -0.073017 -0.512129 0.754610 +v 77.038689 19.501289 1.841300 +vn 0.048236 -0.810919 1.156030 +v 76.646957 19.671713 1.941300 +vn -0.149371 -0.299503 0.708012 +v 76.203285 20.031195 2.075428 +vn -0.047320 -0.437733 0.898861 +v 76.442223 19.956200 2.075428 +vn -0.103453 -0.316153 0.491835 +v 76.129753 20.010830 2.051300 +vn -0.085638 -0.272847 0.491281 +v 76.496452 19.859724 2.031301 +vn 0.066415 -0.098766 0.357168 +v 77.005119 20.011791 2.075428 +vn 0.273349 0.121388 0.698462 +v 77.902252 21.371252 1.911301 +vn 0.456050 0.236554 1.143654 +v 77.898544 21.609760 1.871301 +vn 0.398777 0.206846 1.000028 +v 77.861641 21.825949 1.841300 +vn 0.660927 0.365294 1.415545 +v 78.072250 21.871151 1.731300 +vn 0.232819 0.327286 0.809141 +v 77.313118 22.372959 1.811300 +vn 0.371317 0.342170 0.911100 +v 77.692986 22.399408 1.691300 +vn 0.597807 0.570107 1.541996 +v 77.639587 21.869457 1.911301 +vn 0.322861 0.300841 0.685840 +v 78.297340 22.468340 1.401300 +vn 0.297126 0.247556 0.642498 +v 78.304901 21.955267 1.591300 +vn 0.263579 0.258524 0.695716 +v 77.960381 22.109236 1.691300 +vn 0.526170 0.516080 1.388827 +v 78.151253 22.237564 1.571301 +vn 0.294089 0.108215 0.563824 +v 78.504456 21.282084 1.641300 +vn 0.420491 0.217823 0.819113 +v 78.156509 21.602449 1.761300 +vn 0.633323 0.328075 1.233708 +v 78.414337 21.631193 1.621301 +vn 0.472999 0.371363 0.995249 +v 77.997887 22.447752 1.551300 +vn 0.321100 0.486390 1.051271 +v 77.475662 22.650948 1.641300 +vn 0.431422 0.509871 1.274853 +v 78.044106 22.683681 1.441300 +vn 0.200178 0.424329 1.319898 +v 77.691750 23.422832 1.271300 +vn 0.239502 0.250751 0.653311 +v 77.786003 22.727049 1.511300 +vn 0.108913 0.425477 0.936642 +v 77.463379 22.955988 1.501300 +vn 0.289483 -0.511291 1.216721 +v 77.259758 19.710169 1.911301 +vn 0.236622 -0.219008 0.864301 +v 77.219566 20.056702 2.031301 +vn 0.422329 -0.402176 1.545497 +v 77.391121 20.159994 2.011300 +vn 0.325619 -0.291206 1.198724 +v 77.034805 20.031754 2.075428 +vn 0.318798 -0.319512 1.219769 +v 77.110405 20.116245 2.075428 +vn 0.490934 -0.325659 1.147096 +v 77.497131 20.002319 1.941300 +vn 0.199774 -0.139449 0.639243 +v 77.264206 20.272142 2.075428 +vn 0.263386 -0.436606 0.982400 +v 77.364632 19.840937 1.941300 +vn 0.419699 -0.471396 1.177330 +v 77.468071 19.633327 1.821301 +vn 0.177240 0.484711 1.028721 +v 77.106247 22.788177 1.651300 +vn 0.107478 0.513609 0.833856 +v 76.695625 22.825399 1.681300 +vn -0.133001 0.774514 0.874609 +v 76.447266 23.212717 1.431300 +vn -0.112761 0.656651 0.741514 +v 76.283157 23.331337 1.301300 +vn -0.136612 0.721884 0.578829 +v 76.008598 23.327488 1.241301 +vn 0.048300 0.579037 0.991543 +v 76.853020 23.003521 1.551300 +vn 0.040567 0.486334 0.832799 +v 76.771622 23.250046 1.411301 +vn -0.012880 0.671581 1.044604 +v 76.572731 23.044025 1.541300 +vn -0.032809 0.826590 1.010714 +v 76.546425 23.387838 1.291300 +vn 0.056422 1.361744 1.346018 +v 76.095718 23.036610 1.621301 +vn 0.012846 1.130051 1.450890 +v 76.372856 23.090391 1.531301 +vn 0.172103 0.577758 0.576640 +v 76.150665 23.169952 1.471300 +vn 0.363335 0.825416 1.101006 +v 76.313179 22.749016 1.801300 +vn 0.251212 0.570696 0.761240 +v 76.340225 22.923853 1.661301 +vn 0.179936 0.620235 0.648505 +v 76.052071 22.850613 1.811300 +vn 0.259735 0.126751 0.936685 +v 77.475174 21.361258 2.061300 +vn 0.225074 0.109837 0.811688 +v 77.415543 21.379049 2.075428 +vn 0.347606 0.169632 1.253573 +v 77.439590 21.329771 2.075428 +vn 0.234489 -0.013813 0.798386 +v 77.491539 20.901217 2.075428 +vn 0.436646 -0.025721 1.486687 +v 77.490738 20.887617 2.075428 +vn 0.254630 0.013127 0.719065 +v 77.748001 21.098843 1.981300 +vn 0.481974 0.024848 1.361073 +v 77.492752 21.120031 2.071301 +vn 0.428322 0.022071 1.295927 +v 77.480156 21.122128 2.075428 +vn 0.302219 -0.128185 0.921470 +v 77.629204 20.271866 1.961300 +vn 0.056762 -0.024075 0.173066 +v 77.708344 20.602226 1.981300 +vn 0.608360 -0.258034 1.854896 +v 77.419022 20.596743 2.075428 +vn 0.885899 -0.223084 2.709178 +v 77.482025 20.846939 2.075428 +vn 0.236264 -0.037379 0.652748 +v 77.504761 20.887100 2.071301 +vn 0.446112 0.606615 0.356305 +v 75.791809 22.735878 2.041300 +vn 0.611296 1.036010 0.603338 +v 75.382919 23.016537 2.075428 +vn 0.563477 -0.477740 -0.023898 +v 86.160172 21.079092 0.091300 +vn 1.188513 -0.588449 0.017280 +v 86.341026 21.441690 0.000000 +vn 1.360872 -0.756951 -0.059656 +v 86.156563 21.079800 0.000000 +vn 0.651483 -0.362371 -0.028559 +v 86.205170 21.167187 0.000000 +vn 1.741080 -0.859943 0.570004 +v 85.886314 20.894968 0.581300 +vn 0.578870 -0.230422 0.360840 +v 85.968735 21.094982 0.631300 +vn 0.454852 -0.205094 0.243410 +v 86.239166 21.445505 0.421300 +vn 1.411435 -0.613038 0.342816 +v 86.090782 21.092688 0.401300 +vn 1.418839 -0.029258 0.537954 +v 86.312447 21.856276 0.441300 +vn 0.254338 -0.062525 0.004665 +v 86.339035 21.440350 0.091300 +vn 0.837908 -0.261077 0.077360 +v 86.445503 21.873436 0.091300 +vn 1.467839 -0.457352 0.135519 +v 86.453934 21.873440 0.000000 +vn 0.706638 -0.059540 0.065247 +v 86.462791 21.978565 0.000000 +vn 0.011882 -0.979539 0.224826 +v 73.877876 19.954861 1.961300 +vn 0.001481 -0.122087 0.028018 +v 73.925880 19.981638 2.075428 +vn -0.075563 -1.635561 0.182257 +v 73.478355 19.986036 2.075428 +vn -0.119033 -1.119277 -0.078325 +v 72.987366 20.006845 2.071301 +vn -0.038627 -1.135869 0.066211 +v 72.989281 20.007021 2.075428 +vn -0.017382 -0.511130 0.029794 +v 72.980026 20.007336 2.075428 +vn -0.215634 -1.502467 0.033628 +v 73.234314 19.980076 1.561300 +vn -0.080658 -0.585651 -0.032103 +v 73.389694 19.964043 1.841300 +vn -0.269510 -0.761648 -0.352929 +v 73.283264 20.229885 0.761300 +vn -0.250758 -0.708655 -0.328373 +v 73.860428 20.160034 0.471300 +vn -0.440082 -1.243694 -0.576297 +v 73.680717 20.015106 0.921300 +vn -0.594759 -1.268836 -0.658454 +v 72.928146 20.256229 1.031301 +vn -0.163265 -0.694665 -0.193755 +v 73.098114 20.057201 1.261300 +vn -0.763241 -0.751659 -0.937828 +v 73.146492 20.451231 0.591300 +vn -0.892541 -0.751616 -0.996901 +v 71.929657 20.970659 1.221300 +vn -0.863743 -1.087085 -0.873982 +v 72.424965 20.556572 1.091300 +vn -0.471594 -0.746882 -0.572081 +v 72.796959 20.469276 0.861300 +vn -0.148573 -0.522772 -0.135872 +v 72.856888 20.039616 1.801300 +vn -0.421106 -1.481711 -0.385108 +v 72.476738 20.085278 2.041300 +vn -0.399628 -1.414326 -0.246757 +v 72.715103 20.125040 1.541300 +vn -0.360029 -0.822493 -0.321911 +v 72.553574 20.293592 1.291300 +vn 0.003155 -0.115365 1.646666 +v 84.401939 21.740625 1.201301 +vn -0.015504 -0.300272 1.443228 +v 84.775063 21.364885 1.121301 +vn -0.082444 -0.173007 0.749234 +v 84.041389 21.739214 1.161301 +vn -0.085232 -0.069495 0.808206 +v 84.355888 22.167568 1.231300 +vn -0.250641 -0.768967 1.277086 +v 84.415642 21.075033 1.001300 +vn -0.026066 -0.283165 0.728697 +v 84.425529 21.382933 1.121301 +vn -0.140398 -0.310063 0.781173 +v 84.104744 21.143154 0.981300 +vn -0.163309 -0.245011 0.925228 +v 83.809731 21.402708 1.031301 +vn -0.237659 -0.356558 1.346457 +v 84.103752 21.395542 1.081300 +vn -0.149285 -0.244174 0.898069 +v 83.539474 21.715059 1.071301 +vn -0.068728 -0.498780 0.484713 +v 84.350098 20.814064 0.831300 +vn -0.150621 -1.093037 1.062199 +v 84.309311 20.605892 0.611300 +vn -0.167967 -1.299116 0.753145 +v 84.651253 20.401989 0.341300 +vn -0.136383 -0.434512 0.254013 +v 84.282120 20.467108 0.371301 +vn -0.301600 -0.986354 0.954890 +v 83.911430 20.928835 0.811300 +vn -0.274271 -1.656613 0.085658 +v 84.616547 20.333347 0.000000 +vn -0.191902 -1.142916 0.063297 +v 84.268524 20.397718 0.111300 +vn -0.549060 -1.416868 0.013854 +v 83.897469 20.528063 0.000000 +vn -0.449285 -1.431401 0.366738 +v 83.915565 20.582161 0.371301 +vn 0.474082 -0.637849 0.376455 +v 85.917068 20.831295 0.391300 +vn 0.903031 -1.147971 0.157814 +v 85.925514 20.800821 0.121301 +vn 0.429776 -0.634154 0.169607 +v 85.654518 20.594521 0.171300 +vn 0.648719 -1.323827 0.839535 +v 85.670830 20.677788 0.441300 +vn 0.296630 -0.605327 0.383881 +v 85.709038 20.836029 0.661301 +vn 0.489077 -1.081003 0.084967 +v 85.347176 20.460186 0.231300 +vn 0.234268 -0.483226 0.014527 +v 85.397667 20.464849 0.000000 +vn 0.728641 -0.959134 -0.008224 +v 85.913643 20.792843 0.000000 +vn 0.549635 -0.730214 -0.009423 +v 85.758980 20.675360 0.000000 +vn 0.001311 -0.024856 0.005008 +v 84.623779 20.335320 0.061300 +vn 0.113845 -0.594294 0.073893 +v 85.011810 20.403402 0.291300 +vn 0.416588 -2.171406 0.270620 +v 85.240700 20.411011 0.000000 +vn 0.051736 -1.180891 1.107822 +v 84.721954 20.762825 0.831300 +vn 0.151216 -0.632251 0.525663 +v 85.385529 20.582373 0.511300 +vn 0.284296 -1.188671 0.988278 +v 85.409721 20.779385 0.741301 +vn 0.274154 -1.381449 0.658100 +v 85.038994 20.542185 0.571301 +vn 0.060081 -0.740983 0.412308 +v 84.681160 20.554651 0.611300 +vn 0.429868 -0.005917 0.573441 +v 86.098969 21.833250 0.721300 +vn 0.928303 -0.011468 1.236006 +v 85.818970 21.801645 0.931300 +vn 0.605496 -0.226964 1.428231 +v 85.479431 21.392609 1.021300 +vn 0.323440 -0.094309 0.710421 +v 85.792770 21.410477 0.891300 +vn 0.285273 -0.010586 0.652027 +v 85.483459 21.780918 1.081300 +vn 0.257432 -0.434702 0.655377 +v 85.450226 21.059671 0.911301 +vn 0.537198 -0.759654 1.235696 +v 85.744102 21.088556 0.801300 +vn 0.822105 -0.431080 1.079478 +v 86.061752 21.422623 0.691300 +vn 0.122249 -0.760976 1.307843 +v 85.109131 21.047241 0.971300 +vn 0.066424 -0.263843 0.700507 +v 85.130035 21.374599 1.091300 +vn 0.069531 -0.276185 0.733276 +v 84.762459 21.043108 1.001300 +vn 0.142770 -0.384100 0.599266 +v 85.079788 20.750359 0.801300 +vn 0.075566 -0.034894 0.897226 +v 84.756912 21.750334 1.201301 +vn 0.127656 -0.058947 1.515714 +v 85.120186 21.765627 1.171300 +vn -0.000317 -0.142676 -0.025294 +v 82.669525 20.768654 0.041300 +vn -0.003783 -1.496960 -0.267911 +v 82.667442 20.776051 0.000000 +vn -0.017373 -0.138834 -0.030218 +v 83.179260 20.748905 0.000000 +vn -0.506115 -1.371218 1.204096 +v 83.548584 20.805380 0.541300 +vn -0.346194 -0.878433 0.514298 +v 83.917862 20.704205 0.581300 +vn -0.185426 -1.035125 0.798280 +v 83.156708 21.011860 0.681300 +vn -0.149380 -0.352697 0.028634 +v 83.565742 20.672316 0.161301 +vn -0.528576 -1.248010 0.101320 +v 83.593048 20.647655 0.000000 +vn -0.362590 -1.490862 0.059380 +v 83.241379 20.743435 0.000000 +vn -0.583322 -2.444012 0.112138 +v 83.491318 20.682648 0.000000 +vn -0.376606 -0.899700 0.170465 +v 83.565605 20.708372 0.351300 +vn -0.172295 -0.411608 0.077987 +v 83.904686 20.526648 0.141300 +vn 0.068629 -1.632418 0.087062 +v 82.952385 20.778084 0.191300 +vn 0.079405 -1.540585 0.347248 +v 82.647202 20.801849 0.361300 +vn -0.051952 -0.581687 0.019273 +v 82.957962 20.769785 0.031301 +vn -0.049155 -0.505625 0.024512 +v 83.249268 20.748737 0.181300 +vn 0.058304 -0.848005 0.736256 +v 82.818329 21.013306 0.661301 +vn -0.034965 -0.667964 0.543296 +v 83.209923 20.878937 0.521300 +vn -0.097743 -1.204713 0.633327 +v 83.235245 20.787512 0.351300 +vn -0.058725 -1.240740 0.581082 +v 82.902023 20.888826 0.511300 +vn 0.045197 -0.876895 0.347499 +v 82.613724 20.851641 0.491301 +vn 0.019583 -0.379944 0.150566 +v 82.938362 20.816856 0.361300 +vn -0.176760 -0.107766 1.006518 +v 83.712761 22.084616 1.141300 +vn -0.072444 -0.083838 0.816301 +v 83.280235 22.046867 1.061300 +vn -0.216107 -0.478710 0.681537 +v 83.495224 20.974356 0.711300 +vn -0.211384 -1.107111 1.537661 +v 83.411247 21.170946 0.841300 +vn -0.061116 -0.338865 0.646154 +v 83.374352 21.387136 0.941300 +vn -0.111654 -0.619075 1.180464 +v 83.046989 21.408041 0.921300 +vn -0.131655 -0.286815 0.571488 +v 83.680374 21.147038 0.891300 +vn 0.153033 -1.021427 1.172418 +v 82.405411 20.928484 0.641300 +vn 0.208926 -1.046074 1.382365 +v 82.748375 21.171125 0.791300 +vn -0.024743 -0.416492 0.817431 +v 83.097771 21.189133 0.811300 +vn -0.015589 -0.262407 0.515015 +v 82.686577 21.370573 0.891300 +vn 0.016724 -0.051565 0.763259 +v 82.631386 22.008270 1.001300 +vn -0.136965 -0.166160 1.626077 +v 82.972481 22.020700 1.031301 +vn -0.024548 -0.029781 0.770469 +v 83.009804 21.696342 1.001300 +vn 0.540610 -2.166514 -0.832663 +v 81.579788 20.574263 0.000000 +vn 0.152412 -0.638005 0.325368 +v 81.943260 20.665962 0.381300 +vn 0.126924 -0.643615 0.352336 +v 81.682434 20.695450 0.561300 +vn 0.237130 -0.979724 -0.215859 +v 81.383682 20.494587 0.131300 +vn 0.372950 -1.540874 -0.339495 +v 81.389122 20.522343 0.011300 +vn 0.224913 -0.896388 0.101596 +v 81.197968 20.466124 0.291300 +vn 0.350919 -1.477750 0.177768 +v 81.502724 20.550524 0.361300 +vn 0.448734 -1.757923 0.262413 +v 81.763268 20.593147 0.201301 +vn 0.535433 -2.084659 -0.412524 +v 81.151367 20.461060 0.000000 +vn 0.174226 -0.678333 -0.134232 +v 81.208496 20.475733 0.000000 +vn -0.037094 -0.144299 0.685587 +v 81.613083 21.407974 0.981300 +vn -0.068528 -0.104720 0.781028 +v 81.334808 21.642635 1.001300 +vn -0.074082 -0.113209 0.844338 +v 80.835754 21.596304 0.951301 +vn 0.048634 -0.304671 0.399637 +v 81.385414 20.760853 0.691300 +vn -0.069771 -0.904278 1.564139 +v 81.013840 20.739981 0.691300 +vn -0.093350 -0.647504 1.541038 +v 80.918144 21.097391 0.861300 +vn -0.050978 -0.313204 0.720852 +v 81.358963 21.140720 0.911301 +vn 0.045452 -0.809153 1.245234 +v 81.171234 20.918104 0.801300 +vn -0.127466 -0.364865 1.439972 +v 81.097427 21.350485 0.941300 +vn -0.154302 -0.750931 0.242096 +v 80.751640 14.690016 0.000000 +vn -0.278737 -1.356506 0.437329 +v 81.053368 14.628016 0.000000 +vn 0.041830 -0.764043 0.299030 +v 81.412140 14.645343 0.031301 +vn -0.246577 -1.434415 1.459591 +v 80.772751 15.022811 0.571301 +vn -0.029384 -0.475529 0.621669 +v 81.280663 14.930500 0.551300 +vn -0.001065 -0.617551 0.467929 +v 81.037422 14.718759 0.271300 +vn 0.052275 -1.398859 1.012434 +v 81.003525 14.876719 0.491301 +vn 0.594789 -1.064901 1.173336 +v 81.582420 15.073133 0.611300 +vn 0.254555 -1.155602 0.966099 +v 81.361778 14.756085 0.321301 +vn 0.119795 -0.543833 0.454651 +v 81.694153 14.871101 0.371301 +vn 0.229562 -0.941649 1.427082 +v 81.171654 15.146407 0.711300 +vn 0.727200 -1.296900 0.233757 +v 82.122116 14.960256 0.000000 +vn 0.682006 -1.169688 0.189748 +v 81.766685 14.763219 0.051300 +vn 0.082645 -0.141741 0.022993 +v 82.037933 14.913053 0.000000 +vn 0.748823 -2.305374 0.311902 +v 81.449188 14.653142 0.000000 +vn 0.256046 -0.308849 0.590354 +v 81.970901 15.731977 0.841300 +vn 0.600708 -0.724590 1.385027 +v 81.708351 15.495200 0.831300 +vn 0.693890 -0.472496 1.177664 +v 82.140869 15.532949 0.661301 +vn 0.432244 -0.280342 0.425686 +v 82.296814 15.372695 0.421300 +vn 1.013848 -0.657555 0.998465 +v 82.525757 15.695321 0.401300 +vn 0.423795 -0.305330 0.479245 +v 82.369949 15.819518 0.641300 +vn 0.462220 -0.500150 0.653633 +v 81.872871 15.268415 0.641300 +vn 0.712236 -0.770682 1.007184 +v 82.017799 15.088703 0.401300 +vn 0.430991 -0.125056 0.416737 +v 82.592323 16.402830 0.611300 +vn 0.335503 -0.097350 0.324407 +v 82.379417 16.235584 0.781301 +vn 1.362605 -0.301657 0.993089 +v 82.529640 16.119686 0.611300 +vn 0.589407 -0.130484 0.429570 +v 82.674141 16.048140 0.391300 +vn 0.231367 -0.034772 0.046757 +v 82.849174 16.347174 0.000000 +vn 0.174199 -0.064675 0.033701 +v 82.634201 15.623633 0.101300 +vn 1.453989 -0.206925 0.531775 +v 82.782448 16.012506 0.081300 +vn 0.481391 -0.490241 0.116231 +v 82.199562 15.036304 0.000000 +vn 0.905676 -0.914677 0.224201 +v 82.421356 15.255919 0.000000 +vn 0.438324 -0.449167 0.299973 +v 82.109795 14.969803 0.091300 +vn 1.002146 -1.026938 0.685832 +v 82.405403 15.264954 0.101300 +vn 0.605082 -0.383487 0.127666 +v 82.587608 15.516394 0.000000 +vn 1.249458 -0.791877 0.263623 +v 82.653214 15.619908 0.000000 +vn -0.271878 -0.732906 0.045653 +v 77.324944 18.645393 0.711300 +vn -0.326735 -0.880785 0.054865 +v 76.991577 18.782763 0.931300 +vn -0.455138 -1.484834 0.462838 +v 77.088585 18.799784 1.081300 +vn -0.436932 -1.506338 0.278482 +v 77.299759 18.700766 0.971300 +vn -0.851240 -2.065712 -0.000038 +v 76.908310 18.799078 0.551300 +vn -0.175292 -0.504994 -0.041020 +v 77.008316 18.757866 0.631300 +vn -0.325553 -0.893968 -0.192408 +v 77.341537 18.656553 0.401300 +vn 0.384722 0.608344 1.243691 +v 81.875984 17.306965 0.831300 +vn 0.335759 0.656000 1.102628 +v 81.259483 17.507019 0.921300 +vn 0.401494 0.760507 1.320592 +v 81.462639 17.330309 0.961300 +vn -0.139343 0.000321 1.614806 +v 80.961998 16.981657 1.101300 +vn -0.190842 0.153682 1.710784 +v 80.492996 17.051933 1.031301 +vn -0.070423 0.056711 0.631301 +v 80.729774 16.789375 1.081300 +vn -0.099258 0.054121 0.632168 +v 80.683441 17.288427 1.031301 +vn -0.002873 0.164464 0.663004 +v 81.216400 17.176800 1.061300 +vn -0.006648 0.380520 1.533997 +v 80.954445 17.494728 0.981300 +vn -0.141836 -0.078140 0.632976 +v 80.723312 16.315077 1.021300 +vn -0.464953 -0.229996 1.353995 +v 80.527145 16.122936 0.921300 +vn -0.457205 -0.279431 1.301321 +v 80.530884 16.583357 1.011300 +vn -0.635479 -0.203796 1.372998 +v 80.095085 16.675949 0.831300 +vn -0.319333 -0.110321 0.754295 +v 80.340302 16.382915 0.901300 +vn -0.816739 -0.298654 1.013274 +v 80.054573 16.395664 0.731300 +vn -0.679073 -0.248314 0.842481 +v 79.849266 16.414276 0.571301 +vn -0.348249 -0.197519 0.685885 +v 80.328117 15.952971 0.771300 +vn -0.830459 -0.450407 1.567448 +v 80.180191 16.190916 0.761300 +vn -1.225245 -0.378400 1.133412 +v 79.770729 16.638622 0.561300 +vn -0.472647 -0.205835 0.582542 +v 79.870308 16.705576 0.691300 +vn -1.034149 -0.499574 1.299355 +v 80.153984 15.799747 0.611300 +vn -0.593203 -0.285055 0.518279 +v 79.746216 15.814791 0.231300 +vn -1.009154 -0.459250 0.901870 +v 79.867836 15.920662 0.421300 +vn -1.424759 -0.430456 1.101046 +v 79.667542 16.075193 0.231300 +vn -0.864979 -0.333252 0.871251 +v 79.764259 16.164326 0.391300 +vn -0.581838 -0.171888 0.612737 +v 80.017075 16.057148 0.601300 +vn -1.538756 -0.393410 0.376562 +v 79.657654 15.767295 0.021300 +vn -2.202122 -0.563524 0.541617 +v 79.596298 15.986689 0.000000 +vn -0.684164 -0.319980 0.361829 +v 79.773376 15.495166 0.000000 +vn -0.745534 -0.161886 0.330793 +v 79.595566 16.038857 0.051300 +vn -0.148659 -0.028090 0.039579 +v 79.574020 16.080042 0.000000 +vn -0.639247 -0.146029 0.467766 +v 79.616615 16.330158 0.241301 +vn -0.600894 -0.181404 0.390906 +v 79.674004 16.549490 0.431300 +vn 0.357069 0.556203 0.196748 +v 82.224251 17.613419 0.111300 +vn 0.358225 0.615021 0.203778 +v 81.913208 17.717592 0.381300 +vn 0.395149 0.709445 0.107880 +v 81.974014 17.770527 0.121301 +vn 0.355042 0.637437 0.096930 +v 81.863846 17.850334 0.000000 +vn 0.661697 1.029185 1.171848 +v 81.794304 17.625601 0.611300 +vn 0.496444 0.794914 0.825157 +v 81.596725 17.794012 0.551300 +vn 0.253280 0.475598 0.500887 +v 81.639488 17.497414 0.811300 +vn 0.422883 0.706301 0.387781 +v 81.301994 17.981457 0.531301 +vn 0.418716 0.733321 0.702435 +v 81.297264 17.773424 0.751300 +vn 0.755315 1.351937 0.439460 +v 81.688011 17.855387 0.361300 +vn 0.372359 0.644292 0.224236 +v 81.746101 17.894445 0.141300 +vn 0.797106 0.116948 0.149323 +v 82.847427 16.417698 0.061300 +vn 1.612756 0.236616 0.302120 +v 82.857880 16.424726 0.000000 +vn 1.240031 0.159950 0.203492 +v 82.807526 16.805029 0.000000 +vn 1.463741 0.169736 0.531404 +v 82.736542 16.403395 0.371301 +vn 1.310726 0.538691 0.267870 +v 82.671753 17.139954 0.000000 +vn 0.250307 0.101023 0.052601 +v 82.798798 16.794706 0.061300 +vn 0.359754 0.042387 0.338226 +v 82.411339 16.582399 0.781301 +vn 1.232706 0.483771 0.831948 +v 82.560715 16.682831 0.611300 +vn 0.590906 0.066706 0.352617 +v 82.696358 16.749928 0.371301 +vn 0.377516 0.375798 0.585396 +v 82.033516 17.449032 0.631300 +vn 0.974385 1.031783 0.843102 +v 82.152420 17.541025 0.381300 +vn 0.574416 0.395646 0.446673 +v 82.383476 17.322823 0.381300 +vn 0.521526 0.359216 0.405545 +v 82.443123 16.965271 0.621301 +vn 0.865939 0.578297 1.145105 +v 82.256279 17.225250 0.631300 +vn 0.989647 1.159187 0.230153 +v 82.232651 17.628345 0.000000 +vn 1.075627 1.183809 0.286877 +v 82.470894 17.416298 0.000000 +vn 0.266274 0.293055 0.071017 +v 82.313271 17.559517 0.000000 +vn 0.616162 0.478975 0.169621 +v 82.661606 17.124216 0.081300 +vn 0.538348 0.418487 0.148200 +v 82.614662 17.213396 0.000000 +vn 1.233570 0.864573 0.571275 +v 82.570320 17.062841 0.371301 +vn 0.945913 1.014589 0.534157 +v 82.463608 17.400793 0.091300 +vn -0.333122 -0.538597 0.431770 +v 80.756577 14.903485 0.451301 +vn -0.920437 -1.038502 0.931071 +v 80.548119 15.016383 0.431300 +vn -0.730574 -0.689242 1.136428 +v 80.480316 15.332300 0.601300 +vn -0.412377 -0.512074 0.266807 +v 80.473709 14.894057 0.221300 +vn -0.084679 -0.104931 0.054701 +v 80.237221 15.084503 0.221300 +vn -0.891625 -1.104867 0.575979 +v 80.173653 15.020436 0.000000 +vn -0.669400 -1.353679 0.457755 +v 80.737686 14.770283 0.241301 +vn -0.033563 -0.022551 0.019332 +v 79.866531 15.546230 0.221300 +vn -0.456412 -0.306865 0.611074 +v 79.996452 15.657680 0.431300 +vn -0.820084 -0.683751 1.198356 +v 80.152679 15.425317 0.431300 +vn -0.458246 -0.382066 0.489201 +v 80.339378 15.201392 0.431300 +vn -0.479454 -0.322357 0.467710 +v 80.028336 15.305568 0.221300 +vn 0.058258 -0.278750 0.659583 +v 81.527084 15.746881 0.951301 +vn -0.018944 -0.366913 0.734805 +v 81.440071 15.302775 0.771300 +vn -0.033757 -0.653796 1.309337 +v 81.272682 15.551738 0.891300 +vn -0.085259 -0.263090 0.725153 +v 81.023720 15.384352 0.801300 +vn -0.026029 -0.446388 1.389855 +v 81.340240 16.006861 1.031301 +vn -0.015022 -0.257617 0.802105 +v 81.091423 15.803418 0.961300 +vn -0.215070 -0.386894 0.717003 +v 80.930710 15.056710 0.631300 +vn -0.309353 -0.302254 0.679615 +v 80.644699 15.141571 0.591300 +vn -0.505540 -0.623163 1.394973 +v 80.810677 15.253162 0.701301 +vn -0.333457 -0.571633 1.235695 +v 80.856339 15.633312 0.871301 +vn -0.173847 -0.255691 0.705813 +v 80.651733 15.471646 0.741301 +vn -0.350393 -0.217834 0.589955 +v 80.301910 15.561803 0.611300 +vn -0.754953 -0.507578 1.364587 +v 80.489922 15.712310 0.771300 +vn -0.328674 -0.283957 0.757856 +v 80.688950 15.882275 0.901300 +vn -0.129947 -0.162632 0.800726 +v 81.153397 16.266840 1.081300 +vn -0.282963 -0.438999 1.321132 +v 80.912872 16.068977 1.011300 +vn 1.095680 -0.100848 1.819719 +v 82.478577 16.410704 0.731300 +vn 0.744637 -0.068538 1.324047 +v 82.237206 16.429174 0.871301 +vn 0.351958 -0.131466 0.767457 +v 82.021721 16.211996 0.941300 +vn 0.580332 -0.216771 1.265435 +v 82.202843 15.996370 0.821301 +vn 0.257225 -0.025810 0.711755 +v 82.067101 16.664257 0.941300 +vn 0.320935 -0.470472 1.358615 +v 81.781342 15.978079 0.971300 +vn -0.015767 -0.140582 1.634312 +v 80.958252 16.521238 1.101300 +vn -0.007569 -0.135264 1.564924 +v 81.404938 16.484158 1.101300 +vn -0.003857 -0.068933 0.797514 +v 81.193192 16.727400 1.121301 +vn 0.209923 0.042173 1.569718 +v 81.450310 16.936420 1.081300 +vn 0.109703 -0.028216 0.712312 +v 81.591782 16.224178 1.051300 +vn 0.271242 0.256292 0.674842 +v 82.084862 17.085903 0.831300 +vn 0.264488 0.249910 0.658037 +v 81.668655 17.131422 0.981300 +vn 0.600179 0.346498 1.425079 +v 82.274429 16.839802 0.811300 +vn 0.224507 0.056836 0.768772 +v 81.648178 16.695900 1.061300 +vn 0.429879 0.108827 1.472022 +v 81.846039 16.455378 1.021300 +vn 0.345203 0.258522 1.495762 +v 81.877541 16.910358 0.971300 +vn 0.287886 0.532495 1.275023 +v 80.972771 17.772152 0.861300 +vn 0.410091 0.394143 0.816427 +v 80.693085 18.367365 0.681300 +vn 0.028289 0.142459 0.741112 +v 80.626099 17.768021 0.941300 +vn 0.417245 0.331037 0.698634 +v 80.666458 18.084360 0.831300 +vn 0.414908 0.826386 0.031406 +v 81.546082 18.027952 0.000000 +vn 0.436937 0.870263 0.033073 +v 81.390739 18.105946 0.000000 +vn 0.725261 1.215356 -0.022428 +v 81.281837 18.172750 0.101300 +vn 0.200523 0.336359 -0.005947 +v 81.462532 18.065290 0.121301 +vn 0.589069 0.867878 0.284245 +v 81.507309 17.962845 0.341300 +vn 0.981719 1.072324 0.231282 +v 81.064941 18.316124 0.291300 +vn 1.084854 1.289545 0.043201 +v 81.211395 18.235405 0.000000 +vn 0.534652 0.530854 0.543320 +v 81.007698 18.060736 0.671300 +vn 0.437012 0.673368 0.406274 +v 81.229179 18.161449 0.311300 +vn 0.794565 1.037375 0.585743 +v 81.129456 18.130550 0.501300 +vn 1.104731 0.946410 0.583394 +v 80.777946 18.653370 0.251300 +vn 0.457185 0.410498 0.227677 +v 80.697678 18.611452 0.471300 +vn 0.510263 0.448817 0.532829 +v 80.970650 18.312981 0.461300 +vn 0.540008 0.518704 -0.097105 +v 81.114876 18.313545 0.091300 +vn 0.842295 0.684202 0.093396 +v 80.928452 18.465359 0.271300 +vn -0.606566 -0.230000 0.433734 +v 79.653412 16.848949 0.561300 +vn -1.367988 -0.518720 0.978201 +v 79.578865 16.762678 0.411301 +vn -1.491327 -0.709031 0.684112 +v 79.411903 16.903475 0.261300 +vn -0.739937 -0.543531 0.600607 +v 79.458839 16.959129 0.421300 +vn -0.606645 -0.114861 0.161763 +v 79.498260 16.480740 0.000000 +vn -0.745092 -0.141074 0.198680 +v 79.521454 16.358242 0.000000 +vn -0.717269 -0.193168 0.115519 +v 79.524765 16.413002 0.051300 +vn -0.325895 -0.087767 0.052487 +v 79.468407 16.640211 0.081300 +vn -1.828404 -0.423710 0.009297 +v 79.401520 16.828049 0.000000 +vn -0.533899 -0.123724 0.002715 +v 79.428772 16.710449 0.000000 +vn -0.677341 -0.197685 0.224738 +v 79.512619 16.681988 0.251300 +vn -1.598165 -0.804476 -0.378203 +v 79.186172 17.229006 0.000000 +vn -0.262793 -0.176676 -0.000017 +v 79.299393 17.034969 0.000000 +vn -0.691160 -0.562869 0.062965 +v 79.286293 17.108223 0.271300 +vn -0.697828 -0.384990 -0.019053 +v 79.395447 16.856258 0.091300 +vn -0.571182 -0.314826 -0.015930 +v 79.283714 17.058289 0.101300 +vn -0.515998 -0.504086 0.358214 +v 79.151817 17.451612 0.591300 +vn -0.815946 -0.707675 0.627977 +v 79.322212 17.144419 0.431300 +vn -1.087536 -0.946702 0.970833 +v 79.511208 17.042540 0.561300 +vn -1.178041 -1.002056 0.496726 +v 79.188438 17.307533 0.441300 +vn -0.269517 -0.095859 0.939232 +v 80.313423 16.870951 0.961300 +vn -0.698030 -0.393699 1.530977 +v 80.093246 17.144665 0.931300 +vn -0.122990 -0.111676 0.612592 +v 80.231323 17.297749 0.981300 +vn -0.172334 -0.156480 0.858365 +v 79.952774 17.604519 0.981300 +vn -0.313427 -0.284593 1.561121 +v 79.920425 17.365871 0.931300 +vn -0.849100 -0.438176 0.933412 +v 79.758438 16.943661 0.701301 +vn -0.360714 -0.284769 0.463251 +v 79.588470 17.142689 0.691300 +vn -0.378048 -0.175048 0.569934 +v 79.913391 17.035793 0.821301 +vn -0.377338 -0.328474 0.477312 +v 79.352402 17.224970 0.561300 +vn 0.096576 0.188751 0.882185 +v 79.842346 18.180981 1.021300 +vn 0.150099 0.293357 1.371099 +v 79.874413 18.491739 0.951301 +vn 0.129347 -0.083640 1.274224 +v 79.341316 18.639423 0.991301 +vn 0.117670 0.036670 0.557390 +v 79.149315 18.799534 1.021300 +vn 0.031675 0.031343 1.025651 +v 79.467773 18.218342 1.001300 +vn 0.018368 0.022026 0.578224 +v 79.533318 18.479311 0.991301 +vn 0.411311 0.449513 0.985506 +v 79.683861 18.990229 0.841300 +vn 0.398848 0.445847 0.955314 +v 79.931656 18.747128 0.851300 +vn 0.222387 0.265662 0.947622 +v 79.543343 18.751154 0.941300 +vn 0.899176 0.811342 -0.070148 +v 80.431435 19.061218 0.000000 +vn 1.095844 0.647342 0.030265 +v 80.334724 19.222979 0.041300 +vn 0.299019 0.176706 0.008257 +v 80.387802 19.126114 0.191300 +vn 0.700258 0.678233 0.900934 +v 80.483215 18.840815 0.491301 +vn 0.447910 0.433822 0.576269 +v 80.347862 18.701609 0.701301 +vn 0.688640 0.606079 0.566140 +v 80.274620 18.989767 0.541300 +vn 0.705240 0.793668 0.577826 +v 80.432716 18.987614 0.351300 +vn 0.520813 0.569186 0.908854 +v 80.000053 18.985918 0.711300 +vn 0.727031 0.757181 0.721701 +v 80.257317 19.158884 0.381300 +vn 0.754215 0.608235 0.125896 +v 80.259613 19.280930 0.211300 +vn -0.895281 -0.773296 -0.628478 +v 78.630280 17.956154 0.000000 +vn -0.331932 -0.390329 -0.235876 +v 78.210716 18.385378 0.041300 +vn -0.615076 -0.429228 -0.339975 +v 78.380676 18.186350 0.131300 +vn -0.618488 -0.431609 -0.341861 +v 78.505226 18.111870 0.000000 +vn -1.039608 -0.949848 0.568806 +v 78.623177 17.879438 0.421300 +vn -0.903509 -0.887142 0.864998 +v 78.783852 17.927217 0.701301 +vn -0.686134 -0.595293 -0.195321 +v 78.495132 17.998199 0.271300 +vn -1.209734 -1.170729 -0.292848 +v 78.366943 18.153013 0.321301 +vn -0.398525 -0.440205 0.081261 +v 78.197121 18.315987 0.371301 +vn -0.639294 -0.706155 0.130355 +v 78.408577 18.144857 0.481300 +vn -0.264978 -0.411916 0.326288 +v 78.310867 18.308111 0.671300 +vn -0.433556 -0.411115 0.426746 +v 78.563675 18.200933 0.741301 +vn -0.393965 -0.410121 0.433026 +v 78.592133 18.015219 0.591300 +vn -0.912974 -1.222505 0.580907 +v 78.463943 18.170034 0.621301 +vn -0.112057 -0.251508 0.512428 +v 78.826653 18.329546 0.921300 +vn -0.604700 -0.606654 1.391311 +v 78.819199 18.107635 0.821301 +vn -0.323849 -0.543465 1.230152 +v 78.682716 18.256870 0.851300 +vn -0.009002 -0.135668 0.526726 +v 79.167046 18.522253 1.001300 +vn -0.029997 -0.452058 1.755095 +v 78.969460 18.690662 1.041300 +vn -0.210547 -0.208342 1.541478 +v 79.148712 18.244829 0.961300 +vn -0.111182 -0.186183 1.342249 +v 78.987190 18.413380 0.971300 +vn -0.086858 -0.331577 0.925515 +v 78.811790 18.584652 1.011300 +vn 0.974614 -0.664488 1.095204 +v 79.619514 19.838673 0.481300 +vn 0.665409 -0.315645 0.663903 +v 79.868340 20.042116 0.351300 +vn 0.900672 -0.190425 0.809570 +v 79.567291 19.719208 0.511300 +vn 0.567159 -0.245908 0.691343 +v 79.771896 19.880873 0.371301 +vn 0.648899 -0.540107 0.869551 +v 80.093246 19.976431 0.141300 +vn 0.585150 -0.434729 0.662117 +v 80.184532 20.037806 0.111300 +vn 0.962361 -1.026215 1.098032 +v 80.270241 20.107481 0.101300 +vn 1.006335 -0.875287 0.650510 +v 80.329514 20.063585 0.000000 +vn 1.277210 -1.193931 0.925319 +v 80.311844 20.043270 0.000000 +vn 0.717348 -0.669746 0.521093 +v 80.240189 19.990875 0.031301 +vn 1.061594 -0.991149 0.771160 +v 80.254120 19.981443 0.000000 +vn 0.165365 -0.152010 0.119406 +v 80.154480 19.921202 0.061300 +vn 1.081008 -2.012050 0.702552 +v 80.492706 20.206202 0.000000 +vn 0.367985 -0.301196 0.245117 +v 80.320320 20.068846 0.021300 +vn 0.187803 -0.153717 0.125097 +v 80.383018 20.128113 0.000000 +vn 0.329322 -0.489843 0.442719 +v 80.378128 20.180014 0.101300 +vn 0.977731 -0.859128 0.487337 +v 80.406296 20.154608 0.000000 +vn 0.423422 0.128968 0.512491 +v 80.000237 19.648790 0.121301 +vn 0.800780 0.275523 0.927336 +v 79.864449 19.617750 0.241301 +vn 0.740354 0.254732 0.857360 +v 79.856438 19.540062 0.271300 +vn 0.713600 -0.067139 0.790120 +v 79.877762 19.759253 0.241301 +vn 0.478429 -0.161083 0.547511 +v 79.979790 19.912197 0.211300 +vn 0.657056 -0.341663 0.537525 +v 80.170944 19.818035 0.000000 +vn 0.838132 -0.244333 0.670434 +v 80.128304 19.709229 0.000000 +vn 0.555867 -0.162354 0.444901 +v 80.082939 19.776697 0.081300 +vn 1.394788 -0.408192 1.115838 +v 80.120445 19.682377 0.000000 +vn 1.545718 -0.109060 1.036356 +v 80.119202 19.603577 0.000000 +vn 1.019410 0.037108 0.851802 +v 80.077782 19.676830 0.051300 +vn 1.865261 0.065500 1.551786 +v 80.121880 19.641531 0.000000 +vn 0.352040 -0.662627 0.623268 +v 80.252937 20.276598 0.291300 +vn 0.472325 -0.402583 0.693255 +v 80.184113 20.145973 0.191300 +vn 0.573113 -0.464697 0.808882 +v 80.056915 20.048401 0.221300 +vn 0.312377 -0.395876 0.281259 +v 79.840019 20.191774 0.511300 +vn 0.591726 -1.346050 0.986060 +v 80.227615 20.368025 0.431300 +vn 0.533590 -1.034019 0.853295 +v 80.025871 20.184181 0.321301 +vn 0.706413 -0.873278 0.725892 +v 80.022591 20.314524 0.481300 +vn 0.874513 -0.690583 1.573887 +v 79.753181 20.410542 0.771300 +vn 0.560406 -0.228225 1.301348 +v 79.829880 20.654913 0.831300 +vn 0.328131 -0.133631 0.761969 +v 79.704269 20.859661 0.921300 +vn 0.216129 -0.270608 0.680855 +v 79.924736 20.513834 0.721300 +vn 0.536990 0.021874 0.851887 +v 79.455208 21.427256 1.021300 +vn 0.530513 0.021611 0.841612 +v 78.967453 21.328274 1.331300 +vn 0.607361 0.024741 0.963525 +v 79.285202 20.927359 1.141300 +vn 0.243115 -0.073626 0.862418 +v 79.880417 21.207041 0.901300 +vn 0.783245 -0.018569 1.497677 +v 79.575798 21.086586 0.991301 +vn -0.079904 -0.151113 1.688145 +v 80.218506 21.277704 0.861300 +vn -0.028454 -0.053812 0.601154 +v 80.565041 21.317890 0.881300 +vn -0.037893 -0.184424 1.027152 +v 80.280449 21.042196 0.821301 +vn 0.120028 -0.042702 0.939070 +v 80.153709 21.535389 0.881300 +vn 0.284412 -0.739399 1.478401 +v 80.353409 20.826147 0.751300 +vn 0.241033 -0.407068 1.312368 +v 79.983994 20.963377 0.851300 +vn 0.177398 -0.299598 0.965890 +v 80.073547 20.758488 0.771300 +vn 0.020825 -0.632157 1.684281 +v 80.604805 21.079523 0.831300 +vn 0.021111 -0.163672 0.527159 +v 80.686058 20.869053 0.751300 +vn -0.321205 -0.854317 -0.262644 +v 77.607803 18.654821 0.081300 +vn -0.058999 -0.190607 -0.054770 +v 77.138519 18.797207 0.091300 +vn -0.603684 -1.950304 -0.560414 +v 77.535622 18.700525 0.000000 +vn -0.291567 -0.447627 -0.212746 +v 77.938583 18.467516 0.241301 +vn -0.471755 -0.724260 -0.344222 +v 78.153214 18.442398 0.000000 +vn -0.618750 -1.465678 -0.436620 +v 77.655296 18.566256 0.311300 +vn -0.067865 -0.181787 -0.072265 +v 78.005287 18.538752 0.000000 +vn -0.181077 -0.707491 0.076921 +v 77.719254 18.524902 0.531301 +vn -0.208119 -1.181228 0.744394 +v 78.057350 18.595564 0.951301 +vn -0.060557 -1.331077 0.870744 +v 77.876648 18.703024 1.071301 +vn -0.027656 -0.607894 0.397663 +v 77.571609 18.690735 1.031301 +vn -0.031307 -0.688159 0.450170 +v 77.918846 18.550646 0.841300 +vn -0.237819 -1.483017 0.658814 +v 77.608086 18.582710 0.801300 +vn -0.545833 -1.102409 0.788304 +v 78.405006 18.347309 0.791300 +vn -0.716949 -1.347662 0.615724 +v 78.127304 18.437748 0.741301 +vn -0.308218 -1.350438 0.585374 +v 77.824699 18.511448 0.701301 +vn -0.335065 -0.908338 0.327026 +v 78.044174 18.418009 0.601300 +vn -0.121215 -0.457572 0.339471 +v 78.235329 18.474226 0.851300 +vn -0.746934 -1.385360 -0.129325 +v 78.180382 18.340881 0.201301 +vn -0.617879 -1.534404 -0.163674 +v 77.974785 18.431604 0.441300 +vn -0.773345 -1.358734 0.088438 +v 78.244331 18.299530 0.531301 +vn 0.103114 -1.263420 1.223990 +v 77.845467 18.874861 1.251300 +vn -0.030636 -0.694708 0.805162 +v 78.192986 18.662661 1.031301 +vn 0.003641 -1.244942 1.285047 +v 78.020584 18.775700 1.141300 +vn 0.361697 -0.417423 1.204296 +v 78.395477 19.365156 1.371301 +vn 0.109095 -0.303116 0.816947 +v 78.780327 18.828598 1.101300 +vn 0.052446 -0.295163 0.446392 +v 78.147781 18.873272 1.211300 +vn 0.078924 -0.444181 0.671762 +v 78.469704 18.824608 1.141300 +vn 0.201461 -0.783463 1.471169 +v 78.341515 18.979424 1.241301 +vn 0.286093 -0.640684 1.103878 +v 78.171692 19.142395 1.361300 +vn -0.026530 -0.754383 1.594534 +v 78.662407 18.484221 0.961300 +vn -0.031034 -0.803315 1.611484 +v 78.642105 18.711571 1.071301 +vn -0.013028 -0.337225 0.676488 +v 78.501030 18.616718 1.021300 +vn -0.156016 -0.388106 0.437427 +v 78.524048 18.403246 0.891300 +vn -0.118774 -1.103012 1.408687 +v 78.323044 18.738054 1.101300 +vn -0.162885 -0.722825 1.158107 +v 78.362671 18.535744 0.951301 +vn 0.465548 0.082884 0.732690 +v 79.161217 19.301588 0.991301 +vn 0.281304 0.090740 0.774825 +v 79.350777 19.055489 0.951301 +vn 0.255351 -0.141366 0.740379 +v 78.551842 19.096735 1.231300 +vn 0.311693 0.401473 0.542689 +v 79.749542 19.215139 0.711300 +vn 0.541163 0.253733 1.003483 +v 79.435921 19.269382 0.851300 +vn 0.584302 0.426925 1.048289 +v 79.324188 19.471413 0.831300 +vn 0.508092 0.471951 1.073224 +v 79.552948 19.131166 0.841300 +vn 0.242846 -0.116904 1.162563 +v 78.954033 19.089991 1.091300 +vn 0.924970 0.166603 1.070458 +v 79.764442 19.658962 0.321301 +vn 0.538582 -0.076396 0.667125 +v 79.703072 19.750248 0.381300 +vn 0.515365 0.129876 0.424175 +v 86.001152 22.731487 0.701301 +vn 0.497460 0.117006 0.423039 +v 86.321770 22.308395 0.441300 +vn 1.176095 0.276625 1.000149 +v 86.231224 22.765671 0.421300 +vn 0.515255 0.228775 0.451306 +v 86.074287 23.178310 0.391300 +vn 1.424877 0.295988 0.633219 +v 86.471428 22.336716 0.091300 +vn 0.445205 0.306021 0.241629 +v 85.644806 23.781256 0.361300 +vn 1.136202 0.779079 0.541168 +v 86.204491 23.217649 0.061300 +vn 1.303981 0.786306 0.495446 +v 85.870422 23.535295 0.361300 +vn 0.481659 0.291807 0.398644 +v 85.718048 23.493097 0.591300 +vn 1.135153 0.687718 0.939508 +v 85.874695 23.152567 0.651300 +vn 0.568771 0.384483 0.074068 +v 85.964569 23.574495 0.051300 +vn 1.900160 1.284487 0.247449 +v 86.005844 23.523319 0.000000 +vn 1.227068 0.829376 0.159252 +v 86.212761 23.217184 0.000000 +vn 1.305992 0.917166 0.135826 +v 85.969055 23.575705 0.000000 +vn 1.002564 1.008744 0.049227 +v 85.675491 23.864305 0.000000 +vn 1.740425 1.750888 0.083957 +v 85.919983 23.621275 0.000000 +vn 0.690052 0.138499 0.085138 +v 86.380882 22.793993 0.081300 +vn 1.568525 0.264993 0.252281 +v 86.394142 22.792906 0.000000 +vn 0.058391 1.240316 -0.691808 +v 73.195587 23.496750 1.551300 +vn 0.034817 0.739558 -0.412502 +v 73.111465 23.729395 1.961300 +vn 0.416837 2.681948 -0.927516 +v 73.542549 23.701864 2.075428 +vn 0.109092 0.762877 -0.216303 +v 74.543930 23.391088 1.611300 +vn 0.063938 0.791081 -0.364765 +v 73.639122 23.553957 1.691300 +vn 0.112162 1.387743 -0.639884 +v 73.709076 23.396141 1.361300 +vn 0.105627 0.383935 -0.049289 +v 74.099686 23.514158 1.821301 +vn 0.195763 0.711551 -0.091353 +v 74.376465 23.470636 2.075428 +vn -0.504427 0.537269 -1.246430 +v 72.373978 22.245447 0.871301 +vn -0.307881 0.347217 -0.699599 +v 72.954147 22.117369 0.581300 +vn -0.514094 0.945421 -1.495212 +v 73.203712 22.839462 0.861300 +vn -0.223286 0.250101 -0.569415 +v 72.588615 22.678957 0.971300 +vn -0.070514 0.508048 -0.387754 +v 73.449242 23.173241 1.081300 +vn -0.513512 -0.245994 -0.740181 +v 72.351585 20.880787 0.911301 +vn -0.765332 -0.366627 -1.103156 +v 72.264183 21.243776 0.851300 +vn -0.299059 -0.006766 -0.500548 +v 72.251892 21.548815 0.831300 +vn -0.865686 -0.019586 -1.448935 +v 72.604286 21.508593 0.621301 +vn -0.337134 -0.046493 -0.501912 +v 72.611000 21.211851 0.621301 +vn -0.386984 0.013427 -0.484988 +v 73.285454 21.086910 0.131300 +vn -0.526567 0.018270 -0.659920 +v 72.959541 21.446192 0.401300 +vn -1.002349 -0.365383 -1.381281 +v 72.960815 21.121695 0.391300 +vn -0.442323 -0.161239 -0.609541 +v 72.992706 20.769585 0.461300 +vn -0.543644 0.480060 -1.219523 +v 73.467354 22.088865 0.341300 +vn -0.877574 0.489607 -1.617380 +v 72.966576 21.776270 0.471300 +vn -0.355571 0.143081 -0.638955 +v 73.335709 21.711151 0.251300 +vn -0.346851 0.057586 -0.626895 +v 72.000534 21.994368 1.011300 +vn -0.428172 0.071087 -0.773875 +v 72.586418 21.821930 0.671300 +vn -0.307506 0.436710 0.798459 +v 83.367706 23.081732 0.901300 +vn -0.262643 0.536623 1.525823 +v 83.873047 22.939489 1.091300 +vn -0.168699 0.377214 0.717760 +v 83.785789 23.266422 0.961300 +vn -0.311294 0.696059 1.324458 +v 84.121025 23.359262 0.991301 +vn -0.145862 0.084116 1.571161 +v 84.282089 22.599949 1.201301 +vn -0.110195 0.150616 0.822473 +v 84.197266 23.012871 1.121301 +vn -0.203591 0.163878 0.948766 +v 83.576591 22.860668 1.041300 +vn -0.202495 0.151022 0.914150 +v 83.924538 22.540302 1.171300 +vn -0.252854 0.019885 1.482916 +v 84.009361 22.127380 1.191300 +vn -0.401716 0.562941 0.132200 +v 83.381905 23.705832 0.351300 +vn -0.587537 0.759664 0.142133 +v 83.213074 23.616417 0.131300 +vn -0.478292 1.360893 -0.137427 +v 83.890709 24.096115 0.031301 +vn -0.637246 1.293806 0.282274 +v 83.616989 23.875937 0.341300 +vn -0.760152 1.377165 -0.059746 +v 83.599121 23.920437 0.000000 +vn -0.345865 0.571448 -0.050550 +v 83.597389 23.923008 0.081300 +vn -0.260137 1.063617 1.153674 +v 84.371857 23.756857 0.801300 +vn -0.273310 1.084288 1.167403 +v 83.966385 23.893946 0.581300 +vn -0.134144 0.532184 0.572978 +v 84.036621 23.664019 0.811300 +vn -0.268618 0.599401 0.400827 +v 83.653610 23.731857 0.581300 +vn -0.329155 0.635155 0.380576 +v 83.921463 24.032446 0.311300 +vn -0.679418 0.960355 1.064066 +v 83.732010 23.543564 0.801300 +vn 0.082245 0.839630 0.096080 +v 84.985962 24.169744 0.171300 +vn 0.086768 0.825321 0.099494 +v 84.603088 24.201527 0.221300 +vn -0.174900 1.488022 0.257846 +v 84.239960 24.150181 0.271300 +vn -0.110684 0.941677 0.163175 +v 84.210663 24.193748 0.000000 +vn -0.165796 1.655816 0.242603 +v 84.575096 24.231148 0.000000 +vn 0.174331 0.296293 0.013639 +v 85.674995 23.861807 0.061300 +vn 0.418197 0.673442 0.050095 +v 85.435417 24.005590 0.000000 +vn 0.086557 0.259652 0.022407 +v 84.965485 24.191408 0.000000 +vn 0.191539 0.568382 0.046241 +v 85.187271 24.117474 0.000000 +vn 0.794763 1.522353 0.898382 +v 85.606316 23.695127 0.541300 +vn 0.582153 0.898984 0.638798 +v 85.358513 23.938227 0.401300 +vn 0.360345 0.571176 0.189625 +v 85.338638 24.057409 0.111300 +vn 0.004692 0.551076 0.558497 +v 84.304337 24.000664 0.561300 +vn -0.005431 0.531782 0.560252 +v 84.732269 23.794327 0.761300 +vn 0.151394 1.450718 0.721712 +v 84.659164 24.046429 0.521300 +vn 0.169580 1.073697 1.053718 +v 85.078941 23.798456 0.701301 +vn 0.103263 0.592764 0.591200 +v 85.016998 24.033960 0.471300 +vn 0.062916 0.759877 1.278630 +v 84.819527 23.467392 0.951301 +vn 0.050537 0.228560 0.629059 +v 84.459114 23.429926 0.991301 +vn 0.128069 0.579208 1.594139 +v 84.557678 23.050337 1.121301 +vn 0.046125 0.221070 0.622670 +v 84.923668 23.079506 1.081300 +vn 0.360729 0.377508 0.546483 +v 85.395279 23.758091 0.621301 +vn 0.746623 0.564382 1.126062 +v 85.479538 23.489389 0.751300 +vn 0.570501 0.611322 1.413066 +v 85.281357 23.103096 0.991301 +vn 0.253723 0.269800 0.665714 +v 85.168922 23.485401 0.871301 +vn 0.888540 0.256014 1.220528 +v 86.091698 22.274212 0.731300 +vn 0.256612 0.083058 0.602756 +v 85.377342 22.673574 1.071301 +vn 0.331643 0.107343 0.778996 +v 85.797821 22.245325 0.951301 +vn 0.595986 0.330903 1.292615 +v 85.712852 22.694302 0.911301 +vn 0.365260 0.166533 0.530938 +v 85.602997 23.126543 0.851300 +vn 0.067735 0.055064 0.655961 +v 84.639778 22.623535 1.201301 +vn 0.171744 0.139617 1.663214 +v 84.705284 22.185577 1.231300 +vn 0.082088 0.066732 0.794964 +v 85.082436 22.198147 1.191300 +vn 0.136160 0.287598 1.414913 +v 85.011353 22.644407 1.161301 +vn 0.338184 0.151499 1.431330 +v 85.454002 22.219017 1.101300 +vn -0.033625 0.059983 -0.019173 +v 82.329552 22.997208 0.000000 +vn -0.217163 0.401349 -0.025649 +v 82.596390 23.153597 0.021300 +vn -0.465351 0.860036 -0.054962 +v 82.316811 23.013824 0.201301 +vn -0.455868 0.717894 -0.045844 +v 82.731796 23.238247 0.000000 +vn -0.802273 1.269832 -0.088309 +v 82.590813 23.161896 0.191300 +vn -0.621174 1.242500 0.205549 +v 82.303078 22.980490 0.361300 +vn -0.516768 0.617643 -0.040176 +v 83.120583 23.530491 0.000000 +vn -0.630417 0.866548 0.160749 +v 82.853645 23.326561 0.171300 +vn -0.446717 0.586551 0.661904 +v 83.471886 23.392775 0.771300 +vn -0.464437 0.619708 0.654429 +v 82.862511 23.187920 0.531301 +vn -0.608988 0.812586 0.858114 +v 82.865936 23.021523 0.691300 +vn -0.464889 0.618256 0.382320 +v 83.246971 23.458458 0.561300 +vn -0.540100 0.675345 0.448500 +v 83.055679 23.438295 0.361300 +vn -0.416578 1.045495 0.809024 +v 82.303780 22.800211 0.651300 +vn -0.417574 0.844463 0.804920 +v 82.583504 22.903929 0.661301 +vn -0.189646 0.395675 0.205797 +v 82.303360 22.908379 0.511300 +vn -0.665573 1.388641 0.722254 +v 82.588516 23.039852 0.521300 +vn -0.374127 0.780572 0.405988 +v 82.582657 23.120262 0.361300 +vn -0.669069 1.070518 0.675371 +v 82.837196 23.279348 0.361300 +vn -0.208707 0.507421 0.575174 +v 82.290466 22.658712 0.771300 +vn -0.363068 1.028963 1.326604 +v 82.586922 22.737532 0.791300 +vn -0.169265 0.284586 0.594370 +v 82.576752 22.501741 0.901300 +vn -0.103822 0.337659 0.636349 +v 82.066971 22.363842 0.891300 +vn -0.244817 0.237410 0.644036 +v 83.183266 22.728773 0.961300 +vn -0.278308 0.358874 0.917733 +v 82.866646 22.841248 0.821301 +vn -0.528103 0.794019 1.396993 +v 83.132484 22.947681 0.861300 +vn -0.247991 0.372862 0.656012 +v 83.101166 23.155573 0.731300 +vn -0.198400 0.024431 1.061137 +v 83.434067 22.427443 1.081300 +vn -0.377509 0.368613 1.608767 +v 82.892532 22.605598 0.921300 +vn -0.182922 0.185391 0.847843 +v 82.960190 22.325739 1.001300 +vn -0.067897 0.188865 0.620818 +v 82.303459 22.173397 0.971300 +vn -0.181945 0.449276 1.488392 +v 82.622101 22.255077 0.981300 +vn -0.097788 1.277803 -0.232177 +v 81.072327 22.803709 0.211300 +vn -0.105472 1.377613 -0.250305 +v 81.039230 22.762783 0.000000 +vn -0.050820 0.574081 0.115892 +v 80.831238 22.750067 0.371301 +vn -0.006627 0.081504 -0.014995 +v 81.377365 22.815998 0.141300 +vn -0.206403 2.538626 -0.467056 +v 81.147034 22.771275 0.000000 +vn -0.037382 0.459776 -0.084590 +v 81.096878 22.767197 0.000000 +vn -0.158093 1.349662 1.295516 +v 81.361191 22.696674 0.581300 +vn -0.149685 1.137040 1.062902 +v 81.153725 22.557186 0.701301 +vn -0.080750 0.458559 0.452375 +v 80.989616 22.675802 0.551300 +vn -0.036143 0.408285 0.200253 +v 81.388527 22.799400 0.371301 +vn -0.078075 0.441013 0.434158 +v 80.726784 22.511137 0.671300 +vn -0.149503 0.684310 1.160617 +v 80.371811 22.501427 0.631300 +vn -0.103622 0.425851 0.685828 +v 80.940956 22.353888 0.801300 +vn -0.126098 0.314697 0.884894 +v 80.417007 22.290815 0.761300 +vn -0.104589 0.975674 1.353137 +v 81.395515 22.430550 0.811300 +vn -0.101375 0.207745 0.844518 +v 81.232826 22.188616 0.911301 +vn -0.090671 0.185810 0.755349 +v 80.742210 22.111813 0.871301 +vn -0.032934 0.295405 0.973890 +v 81.702248 22.010176 0.981300 +vn -0.047614 0.427075 1.407981 +v 81.651184 22.301195 0.891300 +vn -0.106252 0.148264 0.716921 +v 81.045380 21.893890 0.961300 +vn -0.045329 0.422896 0.615916 +v 79.171257 28.068727 0.841300 +vn -0.039051 0.453984 0.684823 +v 78.728706 27.759134 1.021300 +vn -0.287176 0.786134 1.158175 +v 78.755188 28.078192 0.811300 +vn -0.167873 0.459544 0.677026 +v 78.367165 28.010109 0.761300 +vn -0.881443 1.225799 1.408080 +v 77.900002 27.611666 0.831300 +vn -0.385387 0.415961 0.357447 +v 77.981438 28.064068 0.461300 +vn -0.891409 0.962129 0.826783 +v 77.710579 27.821711 0.451301 +vn -0.853816 1.021280 0.946136 +v 78.054253 27.884073 0.721300 +vn -0.482130 0.877330 1.209227 +v 78.379311 27.741123 0.961300 +vn -0.304641 0.318589 0.038366 +v 77.908897 28.171951 0.121301 +vn -1.334564 1.395671 0.168073 +v 77.703346 27.990007 0.000000 +vn -0.651267 1.068222 0.095965 +v 77.898232 28.176346 0.000000 +vn -0.729194 1.293101 0.632822 +v 78.335701 28.254053 0.481300 +vn -0.350230 0.621072 0.303942 +v 78.293503 28.406435 0.121301 +vn -0.007731 0.862472 0.058135 +v 79.238815 28.523849 0.111300 +vn 0.009738 1.341837 0.066761 +v 78.741623 28.532995 0.000000 +vn -0.201621 0.776172 0.343523 +v 78.751343 28.352757 0.511300 +vn -0.338957 1.304868 0.577517 +v 78.742340 28.527452 0.111300 +vn -0.381220 1.474773 0.088966 +v 78.286438 28.411926 0.000000 +vn 0.760940 0.353069 0.124216 +v 80.640137 27.362076 0.000000 +vn 0.540340 0.234348 0.073950 +v 80.669365 27.256407 0.121301 +vn 0.228478 0.099092 0.031269 +v 80.493622 27.699898 0.000000 +vn 1.155697 1.007578 0.517548 +v 80.067482 27.972393 0.531301 +vn 0.544623 0.474822 0.243895 +v 80.368355 27.632427 0.521300 +vn 0.520694 0.436668 0.214258 +v 80.155769 28.091999 0.101300 +vn 1.655854 1.376070 0.194693 +v 80.240952 28.003830 0.000000 +vn 1.086239 0.903032 0.128606 +v 80.476234 27.704962 0.111300 +vn 1.229815 0.902562 1.247818 +v 80.264885 27.141109 0.991301 +vn 0.295574 0.317551 0.527803 +v 79.951866 27.750057 0.851300 +vn 1.294547 0.679403 0.870349 +v 80.232994 27.493221 0.831300 +vn 0.095818 0.453242 0.670376 +v 79.489151 27.631756 1.091300 +vn 0.273779 1.140914 1.008974 +v 79.587746 27.951097 0.861300 +vn 0.424699 0.869304 1.247312 +v 79.833672 27.477789 1.081300 +vn 0.225224 0.721919 0.055172 +v 79.353714 28.496510 0.000000 +vn 0.468557 1.501883 0.114781 +v 79.241943 28.531380 0.000000 +vn 0.382097 0.605669 0.246921 +v 79.669884 28.223225 0.531301 +vn 0.394496 1.436767 0.623506 +v 79.211761 28.349012 0.531301 +vn 0.396724 1.356990 0.564118 +v 79.730270 28.384327 0.101300 +vn -0.373035 0.697997 0.726530 +v 76.581070 23.748531 0.991301 +vn -0.346662 0.648650 0.675166 +v 76.771797 23.912916 0.931300 +vn -0.407186 0.582349 0.790241 +v 76.707275 24.098490 0.761300 +vn -0.552248 0.664148 0.610074 +v 76.541588 23.914789 0.811300 +vn -0.533259 0.808062 0.582947 +v 76.330978 23.869587 0.681300 +vn -0.537736 0.685813 0.381592 +v 76.305656 23.961014 0.481300 +vn -0.650766 0.738657 0.086436 +v 76.338707 24.019386 0.231300 +vn -0.745502 0.659566 -0.238342 +v 76.476219 24.091232 0.000000 +vn 0.074273 -0.164352 0.759229 +v 78.675064 25.168455 1.221300 +vn 0.130377 -0.288500 1.332733 +v 79.048645 25.383478 1.231300 +vn 0.154347 -0.167143 1.553202 +v 78.905022 25.937620 1.351300 +vn 0.062817 -0.131174 0.809918 +v 78.811867 25.646036 1.311300 +vn 0.720550 -0.459033 1.474065 +v 79.454994 25.728987 1.211300 +vn 0.327373 -0.244014 0.699015 +v 79.682915 25.605072 1.061300 +vn 0.197717 -0.188861 0.703881 +v 79.185593 25.825006 1.311300 +vn 0.214200 -0.211950 0.780568 +v 79.356125 25.481756 1.171300 +vn 0.210067 -0.139405 0.792696 +v 79.575912 26.015133 1.241301 +vn -0.541741 -0.006297 0.727017 +v 77.747971 26.063446 1.031301 +vn -0.406082 0.046370 0.610076 +v 77.873619 26.557625 1.081300 +vn -0.900937 0.099803 1.357330 +v 77.813660 26.288359 1.061300 +vn -0.355797 0.052340 0.761090 +v 78.058029 26.211657 1.191300 +vn -0.515168 0.005119 0.685317 +v 77.577728 26.334583 0.901300 +vn -0.123353 0.019380 0.773764 +v 78.619019 26.022480 1.351300 +vn -0.237593 0.037327 1.490366 +v 78.731491 26.339102 1.361300 +vn -0.362711 -0.099251 1.569173 +v 78.330154 26.129515 1.291300 +vn -0.234128 0.021143 0.690995 +v 78.431610 26.426680 1.311300 +vn -0.525082 0.047419 1.549705 +v 78.142883 26.497662 1.211300 +vn -0.333404 -0.028095 0.837385 +v 78.228554 25.868406 1.251300 +vn -0.318618 -0.115571 1.184866 +v 78.432419 25.511421 1.271300 +vn -1.464874 -0.137397 0.281814 +v 77.107140 26.102537 0.121301 +vn -0.740863 -0.073355 0.270091 +v 77.125893 26.271795 0.301300 +vn -0.803656 0.022483 0.161788 +v 77.135498 26.651806 0.271300 +vn -0.690704 0.025246 0.751748 +v 77.520905 25.971029 0.861300 +vn -0.597850 0.020817 0.651600 +v 77.364822 26.167339 0.711300 +vn -0.661885 0.078374 0.512677 +v 77.421219 26.639057 0.731300 +vn -0.725960 0.085961 0.562308 +v 77.247368 26.413721 0.541300 +vn -1.211970 0.131390 0.953131 +v 77.394447 26.392111 0.731300 +vn -0.207924 -0.002251 -0.009045 +v 77.082840 26.640505 0.011300 +vn -2.045820 -0.022145 -0.088998 +v 77.085739 26.418081 0.000000 +vn -1.625285 -0.120012 -0.130524 +v 77.083832 26.388119 0.051300 +vn 0.742193 -0.763453 0.233156 +v 80.113762 25.041847 0.000000 +vn 1.477696 -1.520196 0.464082 +v 80.057068 24.986738 0.000000 +vn 0.654835 -0.759892 0.177151 +v 79.924088 24.872143 0.000000 +vn 0.193888 -0.126385 0.056936 +v 80.393234 25.435923 0.000000 +vn 0.352623 -0.261066 0.081061 +v 80.112114 25.074236 0.111300 +vn 0.558024 -0.511256 0.704691 +v 79.604759 25.022326 0.761300 +vn 0.868051 -0.478211 1.140348 +v 79.820427 25.902376 1.081300 +vn 0.924215 -0.602779 0.905487 +v 79.896805 25.519930 0.851300 +vn 0.497330 -0.345887 0.646778 +v 79.781189 25.297596 0.821301 +vn 0.679951 -0.418088 0.286055 +v 80.263924 25.260656 0.051300 +vn 1.237554 -0.760947 0.520639 +v 80.436371 25.506014 0.000000 +vn 0.546125 -0.366217 0.243945 +v 80.050880 25.129467 0.331300 +vn 1.182483 -0.691445 0.755747 +v 80.226181 25.693180 0.611300 +vn 0.619614 -0.362313 0.396007 +v 80.063629 25.415190 0.611300 +vn 1.268599 -0.697508 0.839215 +v 80.199837 25.338064 0.341300 +vn 0.711342 -0.610734 0.470038 +v 79.840271 25.084267 0.591300 +vn 0.546375 -0.202035 0.638429 +v 80.331238 26.486816 0.861300 +vn 1.210960 -0.375883 0.846507 +v 80.511795 26.415413 0.571301 +vn 0.609100 -0.245872 0.539117 +v 80.037178 25.795057 0.871301 +vn 1.117453 -0.511180 0.936290 +v 80.188431 26.125700 0.871301 +vn 1.258907 0.152340 0.641655 +v 80.539024 27.253122 0.521300 +vn 0.639888 0.034530 0.382555 +v 80.392227 27.202625 0.821301 +vn 1.409663 0.076069 0.842763 +v 80.404655 26.861530 0.831300 +vn 0.672664 -0.098590 0.414732 +v 80.579491 26.834480 0.541300 +vn 1.058930 -0.160984 1.143853 +v 80.117340 26.571959 1.071301 +vn 0.564172 0.083544 0.114434 +v 80.721001 27.073862 0.000000 +vn 1.671078 0.247457 0.338954 +v 80.696220 27.241203 0.000000 +vn 1.291577 0.194036 0.257192 +v 80.769127 26.753515 0.000000 +vn 0.835420 -0.076471 0.234026 +v 80.661880 26.335567 0.221300 +vn 1.394691 0.237542 0.537077 +v 80.729431 26.790689 0.171300 +vn 0.696827 -0.327660 0.260210 +v 80.367966 25.607756 0.311300 +vn 1.271550 -0.495915 0.708654 +v 80.519211 25.938396 0.271300 +vn 0.649829 -0.211672 0.326945 +v 80.371849 26.032118 0.601300 +vn 0.526839 -0.148504 0.172491 +v 80.631630 25.971205 0.000000 +vn -1.208136 0.153387 -0.115106 +v 77.083382 26.636292 0.000000 +vn -1.638688 0.306020 0.318794 +v 77.090942 26.695843 0.000000 +vn -1.504020 0.461321 0.220789 +v 77.173141 26.954268 0.231300 +vn -0.087064 0.026768 0.012682 +v 77.260719 27.254150 0.201301 +vn -0.493869 0.329959 0.073073 +v 77.494789 27.738325 0.000000 +vn -1.324231 0.922279 0.151748 +v 77.403664 27.579212 0.171300 +vn -0.257798 0.179455 0.029768 +v 77.374954 27.566175 0.000000 +vn -0.511658 0.382060 0.258819 +v 77.616005 27.890678 0.131300 +vn -0.389321 0.196656 0.383738 +v 77.810867 27.708389 0.691300 +vn -1.011957 0.447272 1.152557 +v 77.664780 27.477615 0.691300 +vn -1.058460 0.519322 0.884507 +v 77.380043 27.237978 0.471300 +vn -0.616339 0.263813 0.460666 +v 77.517555 27.535282 0.461300 +vn -1.048060 0.260293 1.226578 +v 77.623810 26.606567 0.911301 +vn -0.492660 0.117532 0.583069 +v 77.692070 26.881414 0.911301 +vn -1.269249 0.288881 1.003680 +v 77.254677 26.671688 0.511300 +vn -1.218745 0.273320 0.958581 +v 77.475601 26.916622 0.721300 +vn -0.596915 0.133867 0.469493 +v 77.300766 26.943674 0.491301 +vn -0.625707 0.202822 0.504336 +v 77.552162 27.197048 0.701301 +vn -1.005047 0.335008 1.173113 +v 77.760338 27.156260 0.891300 +vn -0.371916 0.137157 0.615335 +v 78.001701 27.137791 1.041300 +vn -0.607160 0.274544 1.394582 +v 77.936302 26.840767 1.071301 +vn -0.292335 0.087945 0.657678 +v 78.216583 26.800262 1.201301 +vn -0.187843 0.134745 0.436076 +v 78.085571 27.676182 0.891300 +vn -0.245130 0.311061 0.740053 +v 78.347252 27.430365 1.081300 +vn -0.543633 0.450834 1.398758 +v 78.293007 27.116743 1.161301 +vn -0.426147 0.197968 0.710086 +v 77.834175 27.422808 0.861300 +vn -0.655958 0.413244 1.264848 +v 78.064384 27.420935 0.981300 +vn -0.160732 0.640301 1.476795 +v 78.677322 27.423338 1.161301 +vn -0.256043 0.173890 1.572012 +v 78.521904 26.740442 1.291300 +vn -0.184580 0.134177 0.708952 +v 78.609344 27.076382 1.251300 +vn -0.017078 0.030879 0.820769 +v 79.028656 26.237646 1.371301 +vn -0.018328 0.032607 0.869498 +v 78.838387 26.664024 1.351300 +vn 0.001634 0.092607 0.807840 +v 79.270065 26.918104 1.321301 +vn 0.002275 0.185769 1.606078 +v 79.152153 26.573725 1.361300 +vn 0.088563 0.050241 0.746316 +v 79.446594 26.458391 1.331300 +vn 0.072768 0.580650 1.401682 +v 79.111580 27.727352 1.071301 +vn 0.057923 0.287310 0.770079 +v 79.035294 27.374815 1.221300 +vn 0.109747 0.544372 1.459084 +v 79.390694 27.276361 1.231300 +vn 0.057750 0.371022 1.558913 +v 78.942421 27.011120 1.311300 +vn 0.185442 0.039028 0.488437 +v 80.210358 26.899599 1.031301 +vn 0.376719 0.089167 0.600710 +v 80.100639 27.295782 1.041300 +vn 0.506093 0.161068 1.503034 +v 79.586685 26.805630 1.291300 +vn 0.173869 0.055335 0.676333 +v 79.864532 26.679136 1.211300 +vn 0.196865 0.062654 0.765788 +v 79.712898 27.155588 1.211300 +vn 0.482261 0.350126 1.388694 +v 79.993607 27.006916 1.151300 +vn 0.432589 -0.178256 1.499514 +v 79.309227 26.125031 1.331300 +vn 0.496555 -0.124916 1.499623 +v 79.718864 26.340197 1.231300 +vn 0.387970 -0.121771 0.762064 +v 79.977257 26.224720 1.081300 +vn 0.165042 -0.228919 0.908990 +v 78.443825 24.723785 1.151300 +vn -0.047236 -0.166272 0.911280 +v 78.231667 25.075193 1.181300 +vn 0.377331 -0.435362 0.790306 +v 79.358238 24.940928 0.901300 +vn 0.379021 -0.388945 1.045883 +v 79.227051 25.153976 1.081300 +vn 0.356363 -0.365694 0.983360 +v 78.972229 25.066999 1.141300 +vn 0.403478 -0.383649 1.026597 +v 79.095116 24.848373 1.011300 +vn 0.320833 -0.305066 0.816318 +v 78.809677 24.789011 1.101300 +vn 0.447254 -0.403414 0.730412 +v 79.234604 24.640905 0.811300 +vn 0.652596 -0.353093 0.553925 +v 79.094231 24.365776 0.801300 +vn 1.020044 -0.816365 1.039618 +v 79.356789 24.602554 0.661301 +vn 0.549591 -0.414941 0.312699 +v 79.276947 24.452473 0.641300 +vn 1.239181 -0.935582 0.705052 +v 79.346336 24.438875 0.501300 +vn 0.558873 -0.349063 0.388325 +v 79.445641 24.577940 0.511300 +vn 0.497576 -0.444441 0.617757 +v 79.509628 25.235514 0.991301 +vn 0.542415 -0.496503 0.666444 +v 79.458809 24.755497 0.681300 +vn 0.645980 -0.646981 0.262623 +v 79.971176 24.943331 0.131300 +vn 0.680633 -0.679465 0.275291 +v 79.832680 24.898411 0.361300 +vn 0.727967 -0.662857 0.511608 +v 79.658119 24.853350 0.551300 +vn 0.631283 -0.518297 0.156477 +v 79.401848 24.427999 0.341300 +vn 0.535554 -0.440208 0.302451 +v 79.625488 24.686811 0.351300 +vn 1.092430 -0.897942 0.616943 +v 79.553238 24.722584 0.531301 +vn 0.993610 -1.004961 0.320073 +v 79.664406 24.664776 0.161301 +vn 1.082437 -1.003915 0.277097 +v 79.506729 24.558764 0.351300 +vn 1.166408 -1.052090 0.000000 +v 79.429604 24.422560 0.171300 +vn 0.474345 -0.488509 0.048080 +v 79.540070 24.545029 0.171300 +vn 1.007910 -1.204790 0.000000 +v 79.540070 24.545029 0.000000 +vn 0.518723 -0.620048 0.000000 +v 79.665543 24.649998 0.000000 +vn 0.546088 -0.505778 -0.050449 +v 79.429604 24.422560 0.011300 +vn 1.621342 -1.501662 -0.149785 +v 79.434822 24.429321 0.000000 +vn 0.608035 -0.698497 0.060682 +v 79.786026 24.770645 0.161301 +vn 0.868410 -0.999630 0.086437 +v 79.701668 24.683199 0.000000 +vn -0.749152 -0.082275 -0.031808 +v 77.135880 25.844713 0.111300 +vn -0.741082 -0.081504 -0.031342 +v 77.126564 25.972565 0.000000 +vn -1.504527 -0.050157 -0.142243 +v 77.142166 25.656137 0.111300 +vn -1.073564 -0.035790 -0.101499 +v 77.152458 25.663057 0.000000 +vn -0.568657 0.179853 0.012333 +v 77.117981 25.459124 0.121301 +vn -0.468979 0.150958 0.005515 +v 77.047455 25.244453 0.000000 +vn -0.722188 0.110931 -0.033037 +v 77.143944 25.592022 0.000000 +vn -1.580995 0.463854 0.224835 +v 77.140152 25.461985 0.271300 +vn -0.701120 0.108459 0.233503 +v 77.187370 25.445528 0.441300 +vn -0.739565 -0.022835 0.090535 +v 77.161629 25.645121 0.271300 +vn -1.005942 -0.031059 0.123144 +v 77.154915 25.941860 0.291300 +vn -0.873600 0.011895 0.765702 +v 77.335472 25.870457 0.651300 +vn -0.780079 -0.011743 0.652349 +v 77.289391 25.598471 0.591300 +vn -1.398432 0.003827 0.699535 +v 77.214417 25.620365 0.441300 +vn -0.728072 -0.072711 0.456895 +v 77.215446 26.066906 0.491301 +vn -0.947944 -0.094670 0.594874 +v 77.224869 25.784044 0.461300 +vn -0.643626 0.155437 0.502595 +v 77.229706 25.257093 0.581300 +vn -1.356330 0.327557 0.851032 +v 77.267921 25.415335 0.581300 +vn -0.793421 0.016365 0.895012 +v 77.575539 25.477556 0.901300 +vn -0.691294 0.088210 0.743016 +v 77.370644 25.388000 0.721300 +vn -0.558580 -0.002190 0.774616 +v 77.657677 25.749683 0.961300 +vn -0.752438 0.033064 0.880113 +v 77.455505 25.674007 0.791300 +vn -0.314368 -0.093870 1.156206 +v 78.013924 25.434898 1.151300 +vn -0.355763 -0.041644 0.748119 +v 77.907059 25.808905 1.121301 +vn -0.610855 -0.071504 1.284541 +v 77.769409 25.547655 1.041300 +vn -0.389452 -0.047610 0.816889 +v 77.717743 25.283968 1.001300 +vn -0.027098 -0.023589 1.087299 +v 78.290001 24.343212 1.121301 +vn -0.028941 -0.025193 1.161232 +v 77.957489 24.264250 1.111300 +vn 0.132816 -0.063691 0.763628 +v 78.473984 24.105410 1.071301 +vn 0.160932 -0.072556 0.937253 +v 78.194267 24.001694 1.111300 +vn 0.463106 -0.222079 1.363883 +v 78.388702 23.927570 1.071301 +vn 0.363761 -0.129129 0.931760 +v 78.737389 24.125854 0.971300 +vn -0.579781 0.296070 -0.097769 +v 76.834938 24.786823 0.031301 +vn -0.690697 0.356766 0.635998 +v 76.951828 24.684660 0.551300 +vn -0.607995 0.381751 1.186168 +v 77.385056 24.542133 0.921300 +vn -0.359657 0.152469 0.803785 +v 77.499367 24.390038 1.001300 +vn -0.315325 0.060404 1.329529 +v 77.742180 24.709944 1.051300 +vn -0.130859 0.110349 1.058066 +v 77.655449 24.193729 1.081300 +vn -0.272398 0.141321 0.902925 +v 77.737587 24.465857 1.061300 +vn -0.177721 0.010013 0.821994 +v 78.025322 24.647263 1.121301 +vn 0.420028 -0.087770 0.534744 +v 78.976852 23.178247 0.531301 +vn 0.522068 0.048993 0.955056 +v 78.894005 23.086399 0.581300 +vn 0.488726 0.241745 0.876788 +v 79.007889 23.042467 0.521300 +vn 0.479784 0.237322 0.725138 +v 79.074982 22.906828 0.521300 +vn 0.539046 0.754911 0.718241 +v 78.980980 22.831575 0.641300 +vn 0.470071 0.658314 0.568036 +v 79.120049 22.732273 0.641300 +vn 0.787359 0.658914 1.029985 +v 78.966675 22.942459 0.581300 +vn 0.684851 0.732092 1.239777 +v 79.100304 22.815401 0.561300 +vn 0.546667 0.220727 0.352180 +v 78.841774 22.966932 0.671300 +vn 0.929239 0.375198 0.598644 +v 78.694412 23.060656 0.841300 +vn 0.809437 0.497516 0.571523 +v 78.736610 22.908278 0.871301 +vn 0.581496 0.475837 0.551334 +v 78.845200 22.800533 0.811300 +vn 0.791844 0.817847 0.781791 +v 78.978683 22.709530 0.771300 +vn 0.705532 1.325848 -0.228221 +v 79.782494 22.840261 0.021300 +vn 0.299197 0.496277 -0.040246 +v 79.659500 22.902044 0.000000 +vn 0.377423 0.462803 -0.033056 +v 79.632408 22.920105 0.021300 +vn 0.779151 0.556190 -0.119653 +v 79.457008 23.091377 0.011300 +vn 1.479132 1.055865 -0.227147 +v 79.454094 23.093029 0.000000 +vn 0.091191 0.074130 -0.002438 +v 79.526680 23.005671 0.011300 +vn 1.063352 0.864852 -0.025512 +v 79.527962 23.003761 0.000000 +vn 0.240040 0.246554 0.459428 +v 79.280579 22.816107 0.461300 +vn 0.391011 0.434855 0.360553 +v 79.543701 22.908665 0.231300 +vn 0.461525 0.790122 0.604160 +v 79.438400 22.886063 0.341300 +vn 0.567913 0.149091 0.679674 +v 79.271011 23.135025 0.331300 +vn 0.709240 0.186193 0.848814 +v 79.132225 23.162216 0.441300 +vn 0.487549 0.274070 0.758213 +v 79.365868 22.993946 0.321301 +vn 0.453812 0.255105 0.705747 +v 79.182732 23.015417 0.431300 +vn 0.757971 0.590020 -0.004710 +v 79.365013 23.210278 0.101300 +vn 1.460577 0.999358 0.172690 +v 79.431969 23.110693 0.111300 +vn 1.305450 0.802679 0.784234 +v 79.454575 23.005388 0.211300 +vn 0.752344 0.536183 0.302187 +v 79.395920 23.110552 0.201301 +vn 0.856073 1.496424 0.645297 +v 79.685486 22.823240 0.241301 +vn 0.612626 0.642258 0.376001 +v 79.512802 23.008390 0.111300 +vn 0.795269 0.952520 0.586814 +v 79.604652 22.925543 0.121301 +vn 1.088350 0.263117 0.816660 +v 79.153702 23.345352 0.391300 +vn 0.773195 0.186926 0.580178 +v 79.195618 23.265085 0.361300 +vn 0.709453 0.259221 0.063788 +v 79.227966 23.503735 0.221300 +vn 0.828764 0.319201 0.091162 +v 79.320236 23.312721 0.011300 +vn 1.273656 0.140334 0.466822 +v 79.189194 23.489716 0.331300 +vn 1.004344 0.164283 0.448093 +v 79.211792 23.384411 0.301300 +vn 0.709653 0.467409 0.246796 +v 79.292763 23.246052 0.241301 +vn 0.880398 0.357153 0.363086 +v 79.286758 23.362514 0.141300 +vn 0.079105 0.036470 -0.012524 +v 79.264587 23.429546 0.000000 +vn 0.858113 0.292349 -0.086454 +v 79.243912 23.490234 0.000000 +vn -0.097938 0.054522 1.587362 +v 80.500244 21.575575 0.901300 +vn -0.057530 0.032027 0.932434 +v 80.477074 21.825100 0.891300 +vn 0.119835 0.130550 1.572920 +v 79.812752 21.486902 0.911301 +vn 0.040546 0.104002 0.586452 +v 79.767273 21.769623 0.891300 +vn 0.106368 0.272837 1.538480 +v 80.119385 21.801512 0.861300 +vn 0.692181 0.469324 1.497808 +v 79.180534 22.158390 0.991301 +vn 0.377908 0.195886 1.423051 +v 79.423317 21.779367 0.981300 +vn 0.528575 0.664027 1.303933 +v 79.493454 22.284426 0.801300 +vn 0.269324 0.731375 1.412130 +v 79.773033 22.424194 0.671300 +vn 0.105546 0.286621 0.553405 +v 79.520500 22.459263 0.701301 +vn 0.322165 0.461389 1.422010 +v 79.769005 22.035887 0.831300 +vn 0.259980 0.259840 0.726687 +v 79.458244 22.067953 0.891300 +vn 0.228179 0.228055 0.637797 +v 79.249084 22.361126 0.861300 +vn -0.142254 0.532530 1.484326 +v 80.431732 22.071764 0.841300 +vn -0.056445 0.287903 0.912801 +v 80.093498 22.037157 0.821301 +vn 0.043074 0.493351 1.534771 +v 80.078773 22.256208 0.751300 +vn 0.016640 0.190589 0.592907 +v 79.768158 22.252218 0.761300 +vn -0.608821 0.298565 0.006914 +v 76.749657 24.608984 0.201301 +vn -0.593006 0.290071 -0.158393 +v 76.711159 24.522854 0.011300 +vn -0.651560 0.368068 -0.158587 +v 76.512398 24.143156 0.000000 +vn -0.548810 0.226789 -0.197446 +v 76.720924 24.536648 0.000000 +vn -1.664759 0.875742 -0.716407 +v 76.712303 24.515785 0.000000 +vn -0.521368 0.323241 0.708676 +v 77.210075 24.605240 0.811300 +vn -0.568411 0.455090 0.642977 +v 76.827766 24.492802 0.551300 +vn -0.645361 0.449492 0.654356 +v 76.996742 24.546160 0.681300 +vn -0.575165 0.512669 0.873160 +v 76.864532 24.312666 0.711300 +vn -0.713803 0.425315 0.163186 +v 76.570511 24.319836 0.171300 +vn -0.632190 0.503212 0.385904 +v 76.498962 24.175333 0.411301 +vn -0.973807 0.775132 0.594435 +v 76.667801 24.264746 0.571301 +vn -0.698130 0.643722 0.376965 +v 76.504967 24.058868 0.621301 +vn -0.751219 0.376339 0.222621 +v 76.881729 24.878532 0.191300 +vn -0.565025 0.340432 0.351625 +v 76.857399 24.717573 0.381300 +vn -0.757122 0.456172 0.471170 +v 76.686546 24.434004 0.381300 +vn -0.278208 0.262595 1.007480 +v 77.403206 24.156685 1.021300 +vn -0.033741 0.363444 1.139745 +v 77.771172 23.681082 1.191300 +vn -0.075833 0.192185 0.530338 +v 77.396881 23.646334 1.191300 +vn -0.165041 0.285695 0.888765 +v 77.553848 23.932619 1.121301 +vn -0.276848 0.479450 0.893834 +v 76.934624 24.118793 0.871301 +vn -0.294386 0.369260 0.742906 +v 77.035339 23.897306 1.021300 +vn -0.380396 0.423863 0.973483 +v 77.161980 24.139099 0.951301 +vn -0.284909 0.349226 0.894093 +v 77.287590 23.934351 1.071301 +vn -0.336601 0.562005 1.281766 +v 77.193863 23.786987 1.111300 +vn -0.532923 0.343615 1.058519 +v 77.280312 24.375313 0.921300 +vn -0.475174 0.356446 0.932287 +v 77.066841 24.352287 0.821301 +vn 0.392716 -0.052282 0.715211 +v 78.591438 23.859026 0.991301 +vn 0.673896 -0.062115 1.130483 +v 78.672691 23.648558 0.931300 +vn 0.316967 -0.017257 0.818044 +v 78.328316 23.766468 1.091300 +vn 0.441163 0.156440 0.897852 +v 78.259911 23.527678 1.131300 +vn 0.597021 0.211709 1.215053 +v 78.235580 23.366718 1.171300 +vn 0.378285 0.065769 1.000372 +v 78.421440 23.359127 1.081300 +vn 0.457821 -0.050320 0.764885 +v 78.484261 23.606216 1.041300 +vn 0.105560 0.228528 1.297688 +v 78.059471 23.718266 1.161301 +vn 0.156449 0.123782 0.593256 +v 78.024689 23.393627 1.221300 +vn 0.040134 0.158765 1.008163 +v 77.861610 23.958788 1.131300 +vn 0.547536 -0.047601 0.672746 +v 79.084587 23.286839 0.451301 +vn -0.654510 -1.141832 0.402707 +v 75.946297 19.405485 1.201301 +vn -0.394091 -0.686131 0.170186 +v 75.757721 19.399200 0.861300 +vn -0.765955 -1.333564 0.330773 +v 75.888496 19.294323 0.741301 +vn -0.358171 -0.786549 0.036751 +v 75.438240 19.533850 0.341300 +vn -0.306295 -0.538707 0.088539 +v 75.488037 19.567327 0.951301 +vn -0.621718 -1.149013 0.016069 +v 75.680031 19.407215 0.641300 +vn -0.511158 -1.260006 0.487565 +v 75.406776 19.777796 1.451301 +vn -0.284371 -0.560729 0.227702 +v 75.729683 19.476748 1.051300 +vn -0.647977 -1.579294 0.522755 +v 75.546127 19.606384 1.141300 +vn -0.312764 -0.936235 0.995756 +v 76.417877 19.385143 1.621301 +vn -0.723710 -1.187122 0.434339 +v 76.118843 19.256390 1.081300 +vn -0.327423 -0.524946 0.254443 +v 76.199249 19.262253 1.231300 +vn -0.316024 -0.500648 0.281357 +v 75.892937 19.574461 1.461300 +vn -0.401446 -0.683056 0.361897 +v 76.159767 19.428509 1.501300 +vn -0.759162 -1.291705 0.684373 +v 76.048882 19.414206 1.351300 +vn -0.161494 -0.518337 0.292122 +v 75.631973 19.640003 1.331300 +vn -0.627800 -1.540817 0.811633 +v 75.712097 19.717976 1.541300 +vn -0.754127 -1.274319 0.839487 +v 75.995384 19.619238 1.621301 +vn -0.346789 -0.887531 1.174487 +v 75.955482 19.893660 1.911301 +vn -0.347625 -0.653083 0.494173 +v 76.142181 19.669735 1.791300 +vn -0.318988 -0.559595 0.544903 +v 75.814400 19.798807 1.731300 +vn -0.222886 -0.391005 0.380739 +v 75.741020 20.123022 2.021300 +vn -0.430024 0.599431 0.050925 +v 75.553757 23.322933 0.591300 +vn -0.450408 0.748291 0.230828 +v 75.761223 23.462421 0.701301 +vn -0.721794 1.199162 0.369910 +v 75.625725 23.359270 0.771300 +vn -0.706932 1.480127 0.117757 +v 75.576073 23.289738 1.031301 +vn -0.745892 1.141320 0.062362 +v 75.379486 23.205763 0.651300 +vn -0.490859 0.751083 0.041039 +v 75.468048 23.253260 0.841300 +vn -0.141509 0.723111 0.332556 +v 75.734177 23.287582 1.211300 +vn -0.479629 1.526700 0.481909 +v 75.855934 23.357399 1.111300 +vn -0.186506 0.593666 0.187393 +v 75.736610 23.373573 0.941300 +vn -0.429035 0.854632 0.468979 +v 75.949516 23.540817 0.831300 +vn -0.331139 0.746317 0.303434 +v 75.980415 23.441092 1.041300 +vn -0.023943 0.829061 0.075859 +v 75.393364 23.203043 1.501300 +vn -0.263773 1.505145 0.765676 +v 75.934052 23.241217 1.371301 +vn -0.036090 1.310351 0.607365 +v 75.584656 23.223207 1.341300 +vn -0.015596 0.566277 0.262477 +v 75.829025 23.146505 1.521300 +vn -0.247316 0.768796 -0.006990 +v 75.407097 23.236380 1.141300 +vn -0.155188 1.792910 -0.216482 +v 75.263023 23.199760 0.941300 +vn -0.054647 0.631349 -0.076231 +v 75.016212 23.190472 1.041300 +vn -0.829554 0.775251 -0.775661 +v 75.310387 22.825159 0.000000 +vn -0.576391 0.620557 -0.111768 +v 75.785980 23.515215 0.461300 +vn -0.495515 0.638476 -0.238226 +v 75.327118 23.122353 0.451301 +vn -0.855249 0.936862 -0.409715 +v 75.449158 23.120056 0.191300 +vn -0.320511 1.466716 -0.680433 +v 74.905609 23.104059 0.811300 +vn -0.199553 0.789462 -0.290743 +v 75.169014 23.124506 0.731300 +vn -0.377325 1.492751 -0.549749 +v 75.108345 23.035515 0.531301 +vn -0.482873 1.206056 -0.771249 +v 74.806732 22.856829 0.411301 +vn -0.278594 0.695835 -0.444972 +v 74.833923 22.995611 0.611300 +vn -0.367186 0.636574 -0.313146 +v 75.064415 22.921629 0.351300 +vn -0.255293 0.341484 -0.304758 +v 75.115036 22.679115 0.000000 +vn -0.416429 0.561565 -0.509675 +v 75.057106 22.663664 0.031301 +vn -0.784146 1.094127 -0.788516 +v 75.277603 23.016764 0.271300 +vn -0.340146 0.508415 -0.344777 +v 75.269730 22.903019 0.121301 +vn -0.616930 1.290161 -0.899804 +v 75.048241 22.802305 0.191300 +vn -0.323928 -0.777119 0.021525 +v 76.736053 18.876062 0.801300 +vn -0.253335 -0.622060 -0.041166 +v 76.583252 18.942028 0.441300 +vn -0.417809 -0.920006 0.019124 +v 76.774963 18.854027 0.591300 +vn -0.511785 -1.239696 -0.202127 +v 76.763664 18.906679 0.201301 +vn -0.342322 -0.829207 -0.135198 +v 76.930489 18.801939 0.421300 +vn -0.448468 -0.820535 0.169766 +v 76.327438 19.107437 0.981300 +vn -0.599913 -1.282301 0.216659 +v 76.235870 19.118174 0.791300 +vn -0.270517 -0.554509 0.060157 +v 76.477661 18.991537 0.711300 +vn -0.270209 -0.552632 0.100843 +v 76.133141 19.145508 0.581300 +vn -0.343809 -0.595960 0.090616 +v 76.018974 19.261547 0.911301 +vn -0.111723 -0.454444 0.288561 +v 77.196609 18.836264 1.201301 +vn -0.297944 -1.211920 0.769540 +v 76.990875 18.963039 1.321301 +vn -0.395558 -1.212802 0.751604 +v 76.679970 19.031158 1.281301 +vn -0.172556 -0.529067 0.327876 +v 76.907890 18.907244 1.201301 +vn -0.090722 -0.458415 0.358650 +v 76.785141 19.089815 1.431300 +vn -0.271854 -0.683233 0.230737 +v 76.619164 18.978224 1.071301 +vn -0.719566 -1.398320 0.324819 +v 76.533173 18.980661 0.891300 +vn -0.700131 -1.306369 0.393839 +v 76.402267 19.121599 1.161301 +vn -0.329908 -1.000055 1.024218 +v 76.590416 19.236050 1.531301 +vn -0.300124 -1.160003 1.111927 +v 76.895737 19.176228 1.551300 +vn -0.168290 -0.650484 0.623528 +v 76.701019 19.322462 1.651300 +vn -0.315779 -0.622574 0.425974 +v 76.471375 19.180113 1.361300 +vn -0.788401 1.031739 0.208911 +v 76.156563 23.788471 0.581300 +vn -0.361956 0.796915 0.761865 +v 76.384758 23.592445 1.051300 +vn -0.291233 0.641206 0.613004 +v 76.160126 23.586020 0.951301 +vn -0.523089 0.839656 0.601791 +v 76.356438 23.742105 0.881300 +vn -0.436607 0.700836 0.502297 +v 76.145828 23.696905 0.761300 +vn -0.318341 0.819597 0.662434 +v 76.199471 23.455818 1.131300 +vn -0.958582 1.162272 0.205793 +v 75.960251 23.632385 0.611300 +vn -0.460167 0.557948 0.098791 +v 76.065132 23.763151 0.361300 +vn -0.107974 0.100770 -0.064181 +v 76.162285 23.744118 0.021300 +vn -0.420669 0.407427 -0.257585 +v 75.844215 23.518217 0.201301 +vn -0.740689 0.679846 -0.353795 +v 75.595390 23.314775 0.331300 +vn -1.105026 0.974629 -0.734573 +v 75.667641 23.279003 0.111300 +vn -0.480679 -0.995144 -0.254443 +v 75.054810 19.709854 0.371301 +vn -0.311650 -0.622250 -0.381149 +v 74.779541 19.886282 0.201301 +vn -0.348904 -0.771608 -0.355437 +v 74.368347 20.067724 0.241301 +vn -0.593713 -1.313007 -0.604830 +v 74.504829 19.918488 0.431300 +vn -0.597090 -0.897573 -0.754449 +v 74.596649 20.118675 0.000000 +vn -0.466404 -0.538508 -0.595737 +v 73.498749 20.447063 0.341300 +vn -0.727938 -1.199308 -1.095675 +v 73.736687 20.594992 0.021300 +vn -0.161090 -0.894973 -0.156461 +v 74.221825 19.945114 0.651300 +vn -0.097004 -0.606415 0.227085 +v 75.312630 19.738598 1.251300 +vn -0.334482 -1.329032 0.358940 +v 75.232361 19.696682 1.021300 +vn -0.064656 -0.850335 0.182043 +v 74.790558 19.905739 1.581300 +vn -0.066163 -1.313312 0.417573 +v 75.057098 19.831900 1.391300 +vn -0.225581 -0.761173 -0.004403 +v 74.679955 19.819326 0.651300 +vn -0.302831 -1.021836 -0.005911 +v 75.176994 19.671503 0.741301 +vn -0.290527 -1.605781 0.033442 +v 74.374634 19.879148 0.871301 +vn -0.331438 -1.557823 0.015385 +v 74.832611 19.789415 0.911301 +vn -0.093721 -0.666466 0.078753 +v 74.957375 19.800999 1.151300 +vn -0.133685 -0.950656 0.112335 +v 74.521713 19.857536 1.111300 +vn -0.115311 -1.494892 -0.063741 +v 73.922508 19.888472 1.511300 +vn -0.068000 -0.881550 -0.037588 +v 73.561813 19.923117 1.351300 +vn 0.009815 -0.827517 0.123058 +v 74.357895 19.904045 1.581300 +vn -0.113236 -1.690989 0.127863 +v 74.660355 19.866400 1.351300 +vn -0.054829 -0.675190 -0.027201 +v 74.075027 19.894615 1.091300 +vn -0.128374 -1.529144 0.032204 +v 74.224831 19.886883 1.321301 +vn 0.157334 -1.048022 0.334673 +v 74.285500 19.975872 2.031301 +vn 0.203783 -1.381583 0.405747 +v 74.524147 19.943525 1.801300 +vn 0.138742 -0.940629 0.276246 +v 74.676384 20.021780 1.991301 +vn 0.064598 -1.636778 0.481241 +v 74.926193 19.972836 1.791300 +vn 0.210087 -0.847075 1.286190 +v 75.723358 20.200829 2.075428 +vn -0.014261 -0.956142 0.837452 +v 75.616821 19.967218 1.841300 +vn -0.046092 -1.540919 1.743859 +v 75.665710 20.186531 2.075428 +vn 0.333216 -1.163342 1.078245 +v 75.376961 20.172720 2.075428 +vn 0.190352 -0.664569 0.615956 +v 75.309944 20.153524 2.075428 +vn 0.134614 -0.475777 0.440459 +v 75.399925 20.110592 2.001300 +vn -0.111294 -0.659600 0.323540 +v 75.170563 19.896133 1.611300 +vn -0.051202 -1.661150 0.746036 +v 75.281166 19.982546 1.811300 +vn -0.016205 -0.525754 0.236120 +v 75.053398 20.070406 1.991301 +vn -0.099118 -0.587097 0.391724 +v 75.509087 19.858635 1.651300 +vn 0.304927 -1.184827 0.713252 +v 75.026474 20.114120 2.075428 +vn 0.209062 -1.620933 0.765708 +v 74.722870 20.067516 2.075428 +vn 0.277387 -2.150624 1.015955 +v 74.948845 20.096663 2.075428 +vn -0.013486 0.577062 -0.210321 +v 74.592133 23.122246 0.881300 +vn 0.077873 0.877112 -0.230941 +v 74.963135 23.287338 1.391300 +vn 0.056551 1.228861 -0.581666 +v 74.560951 23.294083 1.241301 +vn 0.389533 1.032461 0.250280 +v 75.388206 23.103176 1.921300 +vn 0.270205 1.196851 -0.049556 +v 74.979736 23.298496 1.751300 +vn 0.368019 1.784166 -0.072143 +v 75.190765 23.235533 1.271300 +vn 0.466293 1.158428 0.138421 +v 74.541069 23.413267 1.981300 +vn 0.956835 2.585494 0.534716 +v 74.794418 23.300041 2.075428 +vn 0.038234 1.003152 -0.447095 +v 74.122284 23.408854 1.461300 +vn -0.157092 0.427238 -0.420047 +v 74.793419 22.715326 0.241301 +vn -0.416129 1.131733 -1.112687 +v 74.505119 22.678143 0.311300 +vn -0.239168 0.646014 -0.635120 +v 74.507271 22.836241 0.471300 +vn -0.254930 0.616993 -0.774063 +v 74.530579 22.550659 0.201301 +vn -0.188549 1.175272 -0.897952 +v 74.523308 22.991621 0.671300 +vn -0.116879 1.301394 -0.920751 +v 74.106255 23.253473 1.111300 +vn -0.175304 0.662515 -0.720076 +v 74.165474 23.004087 0.751300 +vn -0.275025 0.356122 -0.703019 +v 73.885445 22.273561 0.271300 +vn -0.161171 0.260013 -0.447232 +v 73.385391 22.479610 0.571301 +vn -0.357043 0.545078 -0.834623 +v 74.351151 22.333622 0.111300 +vn -0.424512 1.129993 -1.313704 +v 74.163460 22.809933 0.541300 +vn -0.185393 0.357384 -0.489557 +v 74.189201 22.610340 0.361300 +vn -0.228778 0.466020 -0.721594 +v 73.783592 22.783484 0.641300 +vn -0.416308 0.797202 -1.092492 +v 73.815056 22.539537 0.451301 +vn 1.146677 -0.224622 1.009874 +v 79.508629 19.824371 0.601300 +vn 0.595224 -0.511321 0.594732 +v 79.629974 20.002352 0.571301 +vn 0.909574 -0.742997 0.838510 +v 79.687500 20.185629 0.671300 +vn 0.696726 -1.154564 1.175228 +v 79.906265 20.272467 0.551300 +vn 0.498634 -0.335099 0.540106 +v 79.479744 20.118252 0.821301 +vn 0.278222 -0.581772 0.200771 +v 80.638390 20.294748 0.051300 +vn 0.637281 -1.026675 0.167050 +v 80.626022 20.278725 0.000000 +vn 0.407533 -1.118298 -0.106018 +v 80.751953 20.331942 0.000000 +vn 0.669633 -1.280280 0.695998 +v 80.505463 20.241531 0.081300 +vn 0.135767 -0.892289 0.506707 +v 80.682457 20.372580 0.271300 +vn 0.121028 -0.569597 0.246153 +v 80.502464 20.299763 0.191300 +vn 0.438986 -1.508868 0.266322 +v 80.657707 20.319784 0.161301 +vn 0.158826 -1.325140 0.696902 +v 80.762589 20.450552 0.401300 +vn 0.070324 -1.172884 1.235216 +v 80.767319 20.658585 0.631300 +vn 0.064032 -0.503319 0.270873 +v 81.092239 20.551689 0.511300 +vn 0.415414 -0.957648 0.084253 +v 80.801781 20.356405 0.131300 +vn 0.017128 -0.039136 0.003906 +v 80.768585 20.334087 0.041300 +vn 0.331239 -1.543406 -0.104027 +v 80.911682 20.388842 0.000000 +vn 0.271998 -1.267371 0.254862 +v 80.929123 20.417921 0.301300 +vn 0.246366 -1.325108 0.236071 +v 81.065048 20.412907 0.131300 +vn 0.646050 0.827263 0.697748 +v 80.078491 19.496553 0.121301 +vn 0.333679 0.546106 0.302320 +v 79.884476 19.462513 0.341300 +vn 0.659565 1.079456 0.597580 +v 80.087494 19.321857 0.371301 +vn 0.258630 0.404595 0.344637 +v 79.945145 19.551502 0.191300 +vn 0.622080 0.772864 0.265572 +v 80.123268 19.394110 0.201301 +vn 0.502652 0.772015 0.651149 +v 80.054726 19.191374 0.551300 +vn 0.866718 0.709872 0.949497 +v 80.028275 19.571241 0.111300 +vn 0.627498 0.206591 0.396701 +v 80.097519 19.593702 0.031301 +vn 0.410693 0.135212 0.259638 +v 80.133858 19.521732 0.011300 +vn 0.097515 0.100471 0.039989 +v 80.159180 19.430305 0.091300 +vn 1.326122 1.032570 -0.312240 +v 80.238243 19.334400 0.000000 +vn 1.793338 1.397100 -0.420257 +v 80.305084 19.248602 0.000000 +vn 1.263842 0.491047 -0.066184 +v 80.225212 19.367939 0.000000 +vn 0.636113 0.513812 0.228629 +v 80.231575 19.358477 0.051300 +vn 1.915057 1.543519 0.682268 +v 80.192657 19.429438 0.000000 +vn 0.345053 0.278109 0.122930 +v 80.175209 19.451086 0.000000 +vn 0.263231 -0.443499 0.605568 +v 80.210594 20.465031 0.561300 +vn 0.583886 -0.983750 1.343245 +v 80.149078 20.592371 0.681300 +vn 0.515359 -1.090282 0.840072 +v 80.002846 20.397652 0.601300 +vn 0.289816 -0.447824 0.357910 +v 79.836731 20.322117 0.641300 +vn 0.092138 -1.080584 1.110548 +v 80.656853 20.536116 0.521300 +vn 0.183656 -0.626664 0.486923 +v 80.465988 20.407787 0.391300 +vn 0.327777 -0.921600 1.147763 +v 80.435089 20.507513 0.531301 +vn 0.201631 -0.566919 0.706043 +v 80.412346 20.648872 0.651300 +vn 0.939521 0.010662 0.861706 +v 79.559410 19.605461 0.521300 +vn 0.362130 0.243487 0.545473 +v 79.650841 19.630781 0.421300 +vn 1.503211 1.010720 1.207664 +v 79.620506 19.586287 0.461300 +vn 1.098723 2.193208 0.959424 +v 79.770592 19.506441 0.371301 +vn 0.787744 0.367903 0.738161 +v 79.665146 19.519896 0.461300 +vn 0.647954 0.526812 0.680407 +v 79.759285 19.559095 0.341300 +vn 0.383979 0.682034 0.515766 +v 79.726662 19.392555 0.551300 +vn 0.574339 1.020156 0.771459 +v 79.907219 19.321152 0.511300 +vn 0.612597 0.517829 0.603848 +v 79.507042 19.522051 0.631300 +vn 0.523448 0.642786 0.637899 +v 79.560257 19.389130 0.691300 +vn 0.909009 1.102826 1.107434 +v 79.609909 19.458664 0.581300 +vn 0.388325 0.652970 0.648046 +v 79.300743 22.624813 0.641300 +vn 0.806128 -0.133482 0.536771 +v 78.770973 23.341080 0.761300 +vn 0.528242 -0.000018 0.332547 +v 78.807732 23.160944 0.661301 +vn 0.667868 0.297683 0.572573 +v 78.622726 22.952206 0.981300 +vn 1.286855 0.242372 0.846672 +v 78.608421 23.063091 0.971300 +vn 1.125650 0.040008 0.886445 +v 78.713303 23.193859 0.811300 +vn 0.552116 0.019623 0.434789 +v 78.602280 23.215612 0.951301 +vn 0.033343 0.106233 -0.018784 +v 79.965775 22.782736 0.021300 +vn 0.508269 1.408499 -0.343997 +v 79.964821 22.777878 0.000000 +vn 0.260869 2.294104 -0.983240 +v 79.996162 22.770151 0.000000 +vn 0.205329 0.893251 0.803873 +v 79.585762 22.792339 0.351300 +vn 0.053815 1.206128 0.633196 +v 80.135170 22.727928 0.291300 +vn 0.058757 1.177470 0.609264 +v 79.888222 22.754696 0.261300 +vn 0.043088 0.547787 0.434904 +v 80.088242 22.672274 0.401300 +vn 0.423940 1.595968 0.014051 +v 79.951897 22.785454 0.131300 +vn 0.241071 1.504530 -0.074101 +v 80.209663 22.742588 0.000000 +vn 0.160221 0.644443 0.230952 +v 79.746437 22.840118 0.121301 +vn -0.070015 0.872752 -0.165419 +v 80.537994 22.722572 0.000000 +vn 0.022600 1.140386 0.181181 +v 80.204422 22.750387 0.141300 +vn -0.080850 1.709590 0.375112 +v 80.384842 22.715036 0.341300 +vn -0.004640 0.253250 -0.060617 +v 80.675858 22.766100 0.171300 +vn -0.058366 0.516258 0.496150 +v 80.177368 22.575548 0.531301 +vn -0.054969 0.486209 0.467270 +v 80.534920 22.635193 0.511300 +vn -0.065571 0.820108 0.655149 +v 80.285255 22.648083 0.451301 +vn 1.416745 0.068195 0.056426 +v 79.221962 23.620199 0.231300 +vn 0.667576 -0.025364 0.232074 +v 79.183189 23.606180 0.361300 +vn 0.739269 -0.016596 0.032775 +v 79.224258 23.742243 0.241301 +vn 0.863036 -0.333573 0.820272 +v 78.940231 23.322329 0.571301 +vn 0.443002 -0.171225 0.421051 +v 79.100624 23.442219 0.451301 +vn 0.737018 -0.240886 0.696351 +v 78.945244 23.458250 0.621301 +vn 0.620691 -0.222247 0.530753 +v 79.058281 23.630651 0.561300 +vn 1.544519 -0.128160 0.167561 +v 79.238136 23.739525 0.111300 +vn 0.917948 -0.235963 0.299742 +v 79.171318 23.803055 0.451301 +vn 0.400250 0.105697 -0.062017 +v 79.261444 23.453943 0.051300 +vn 0.549312 0.075102 -0.038310 +v 79.227539 23.611900 0.101300 +vn 0.731835 -0.060726 -0.090088 +v 79.248726 23.867146 0.111300 +vn 0.039517 0.776959 0.917860 +v 79.803085 22.540800 0.571301 +vn 0.019055 0.374652 0.442595 +v 80.039299 22.422464 0.661301 +vn 0.087121 0.863407 0.963869 +v 79.966476 22.602459 0.501300 +vn -0.038765 1.003358 1.172516 +v 79.988937 22.533211 0.561300 +vn 0.326142 0.721457 0.796082 +v 79.536392 22.650698 0.521300 +vn 0.223832 0.938204 0.868238 +v 79.799797 22.671144 0.431300 +vn 0.434307 -0.056650 0.552396 +v 78.855972 23.591032 0.781301 +vn 0.567871 -0.074072 0.722274 +v 78.634628 23.454260 0.941300 +vn 0.733151 -0.251574 0.992299 +v 78.799751 23.782183 0.871301 +vn 0.019976 -0.103785 -0.030828 +v 82.362068 20.729315 0.000000 +vn 0.450350 -2.176786 -0.718513 +v 81.932770 20.647339 0.000000 +vn 0.148314 -0.717601 -0.239141 +v 81.608032 20.573124 0.021300 +vn 0.115213 -0.580766 0.248301 +v 82.175766 20.786135 0.541300 +vn 0.349562 -1.854303 -0.059965 +v 82.408974 20.726030 0.041300 +vn 0.361847 -1.751119 0.389843 +v 82.198364 20.680830 0.211300 +vn 0.344119 -1.769281 0.418051 +v 82.378365 20.753645 0.371301 +vn 0.103696 -0.533149 0.125974 +v 82.647346 20.765793 0.201301 +vn 0.369241 -1.823838 -0.073663 +v 81.982178 20.643929 0.041300 +vn 0.137090 -0.592134 0.528076 +v 82.014526 20.882578 0.691300 +vn 0.063516 -0.237315 1.074512 +v 82.087654 21.329399 0.931300 +vn 0.034191 -0.127749 0.578424 +v 82.438644 21.649731 0.981300 +vn 0.083325 -0.311328 1.409632 +v 82.014557 21.581505 0.991301 +vn 0.179980 -0.798284 1.036175 +v 81.693031 20.823074 0.701301 +vn 0.074376 -0.257039 0.578663 +v 81.720078 20.997911 0.831300 +vn 0.202109 -0.753424 0.888285 +v 82.365929 21.094742 0.791300 +vn 0.043488 -0.051883 0.824185 +v 81.770050 21.694262 1.011300 +vn 0.108830 -0.351238 1.584915 +v 81.688759 21.205803 0.931300 +vn -0.117432 0.399490 0.458033 +v 82.015625 22.726973 0.641300 +vn -0.129297 0.475757 0.523165 +v 81.844490 22.515516 0.791300 +vn -0.008796 0.068197 0.738034 +v 82.146629 21.851053 1.001300 +vn -0.472568 1.377079 -0.064365 +v 82.330688 23.011108 0.041300 +vn -0.263300 1.290937 0.177092 +v 82.031509 22.918407 0.201301 +vn -0.124848 0.612117 0.083971 +v 81.754372 22.864626 0.181300 +vn -0.170853 0.886622 -0.016702 +v 82.075867 22.924129 0.051300 +vn -0.103747 0.609658 0.442655 +v 81.583382 22.617113 0.691300 +vn -0.080912 0.431970 0.214243 +v 81.718742 22.756319 0.531301 +vn -0.266554 0.889977 0.463339 +v 81.981720 22.884932 0.371301 +vn -0.421658 1.407841 0.732949 +v 82.012482 22.821259 0.511300 +vn -0.004362 0.027994 -0.003848 +v 81.832062 22.856611 0.041300 +vn -0.025947 0.166536 -0.022889 +v 81.593147 22.813711 0.000000 +vn -0.184631 1.685621 -0.309023 +v 81.573273 22.811552 0.000000 +vn -0.597950 2.260830 -0.680536 +v 82.019104 22.893675 0.000000 +vn -0.182762 -0.145475 -0.126495 +v 78.755989 17.798223 0.000000 +vn -0.460602 -0.485754 0.354130 +v 78.987862 17.534176 0.491301 +vn -0.894724 -0.517746 -0.201911 +v 79.160965 17.240862 0.081300 +vn -1.142753 -0.894530 -0.408635 +v 78.935211 17.522875 0.131300 +vn -0.675406 -0.583619 0.036243 +v 79.066116 17.381939 0.301300 +vn -0.600600 -0.518979 0.032229 +v 78.837639 17.650076 0.361300 +vn -0.617016 -0.565530 -0.208031 +v 78.600716 17.948689 0.051300 +vn -0.664712 -0.624350 0.063306 +v 78.704010 17.777134 0.211300 +vn -0.493408 -0.484239 0.409168 +v 78.987297 17.678396 0.661301 +vn -0.580403 -0.527457 0.200441 +v 78.790001 17.774698 0.551300 +vn -0.206596 -0.293005 1.422961 +v 79.680786 17.650604 0.951301 +vn -0.187603 -0.301326 0.859099 +v 79.431114 17.663494 0.901300 +vn -0.257521 -0.296350 0.543641 +v 79.637421 17.392496 0.851300 +vn -0.326666 -0.275698 0.697866 +v 79.233681 17.795851 0.881300 +vn -0.363354 -0.306662 0.776245 +v 79.066292 18.044811 0.901300 +vn -0.300176 -0.328249 0.587543 +v 79.014343 17.853235 0.801300 +vn -0.228820 -0.250219 0.447876 +v 79.295761 17.524288 0.761300 +vn -0.274913 -0.277588 0.876802 +v 79.382912 17.932337 0.971300 +vn 0.287073 0.242291 0.832931 +v 80.168289 18.520626 0.881300 +vn 0.377265 0.424331 0.803021 +v 80.429543 18.382973 0.831300 +vn 0.015165 -0.059967 1.549006 +v 79.743607 17.897694 1.011300 +vn 0.005616 -0.022206 0.573608 +v 80.190712 17.752449 1.001300 +vn 0.116285 0.141074 0.679557 +v 80.252831 18.179815 0.951301 +vn 0.278502 0.245031 -0.063746 +v 80.886536 18.545626 0.061300 +vn 0.854360 0.732852 -0.186879 +v 80.727104 18.710888 0.000000 +vn 0.604497 0.518525 -0.132225 +v 80.641815 18.810318 0.000000 +vn 0.753279 0.679352 -0.143540 +v 80.541023 18.951982 0.141300 +vn 0.446200 0.402409 -0.085025 +v 80.710991 18.752954 0.091300 +vn 0.908696 0.734566 0.164995 +v 80.622002 18.813623 0.311300 +vn 1.328446 -0.988668 -0.097586 +v 79.341324 24.302954 0.021300 +vn 0.775318 -0.345173 -0.206010 +v 79.290550 24.193504 0.000000 +vn 0.702370 -0.292295 -0.168541 +v 79.289093 24.183487 0.011300 +vn 1.214718 -0.162912 -0.180582 +v 79.250984 24.007357 0.000000 +vn 1.786519 -0.371403 -0.218979 +v 79.276794 24.130991 0.000000 +vn 0.914398 -0.261943 0.572270 +v 79.203667 24.041702 0.501300 +vn 0.565633 -0.237369 0.308492 +v 79.272072 24.280493 0.501300 +vn 0.651251 -0.242602 0.576982 +v 79.128273 24.171764 0.681300 +vn 1.054438 -0.392796 0.934190 +v 79.199821 24.316267 0.661301 +vn 0.700300 -0.396540 0.089983 +v 79.346901 24.294655 0.181300 +vn 0.772269 -0.248334 0.236587 +v 79.291954 24.161310 0.311300 +vn 1.505788 -0.852642 0.435280 +v 79.324722 24.291794 0.341300 +vn 0.991306 -0.160134 0.023644 +v 79.256744 23.944838 0.301300 +vn 1.572022 -0.429497 0.141953 +v 79.308548 24.172470 0.161301 +vn 1.157869 -0.189526 0.025893 +v 79.278496 24.055864 0.141300 +vn 0.729593 -0.311956 0.879575 +v 78.826805 23.957022 0.891300 +vn 0.525305 -0.224608 0.633292 +v 79.015663 23.891197 0.711300 +vn 0.618129 -0.213730 0.795452 +v 78.962021 24.132282 0.841300 +vn 0.369615 -0.181293 0.797566 +v 78.974205 24.562225 0.961300 +vn 0.512166 -0.254086 1.107292 +v 78.897499 24.317856 0.941300 +vn 0.125003 -0.077027 0.826312 +v 78.664146 24.414015 1.071301 +vn -0.663422 0.172193 0.813093 +v 77.324562 25.116016 0.741301 +vn -0.602941 0.136130 0.754722 +v 77.509995 25.216589 0.871301 +vn -0.304861 0.059728 0.658995 +v 77.843636 25.007109 1.071301 +vn -0.518305 0.248053 0.813282 +v 77.264458 24.882805 0.761300 +vn -0.599402 0.212216 0.862809 +v 77.403664 24.747448 0.891300 +vn -0.526565 0.089416 0.855978 +v 77.597397 24.853600 0.971300 +vn -0.568940 0.096611 0.924862 +v 77.616005 25.058914 0.961300 +vn -0.544086 0.092391 0.884461 +v 77.455467 24.975079 0.871301 +vn -0.468711 0.132496 0.959255 +v 77.551170 24.617670 0.981300 +vn -0.819306 0.336356 0.152799 +v 76.986610 25.009298 0.331300 +vn -1.246663 0.564120 0.557839 +v 77.154739 25.278990 0.441300 +vn -0.709547 0.311630 0.309315 +v 77.088211 25.270409 0.301300 +vn -1.243842 0.546290 0.542232 +v 77.097069 25.131765 0.461300 +vn -0.694665 0.283792 0.662059 +v 77.166885 25.010004 0.621301 +vn -0.748007 0.323390 0.639990 +v 77.092903 24.779512 0.651300 +vn -0.868356 0.375422 0.742960 +v 77.014793 24.895695 0.501300 +vn -0.702978 0.264507 0.005370 +v 77.000061 25.114746 0.171300 +vn -0.053643 0.019511 0.000598 +v 77.060448 25.275845 0.141300 +vn -1.207335 0.477120 -0.200622 +v 76.942253 25.003578 0.051300 +vn -0.210445 0.083164 -0.034969 +v 77.031487 25.207809 0.000000 +vn -0.708727 -0.449135 -0.663754 +v 70.893982 21.223104 2.075428 +vn -1.202249 -0.776239 -1.136176 +v 70.907410 21.201916 2.075428 +vn -0.450158 -0.451504 -0.448186 +v 71.432465 20.526636 2.075428 +vn -0.198757 -0.444315 -0.233355 +v 72.337669 20.184580 1.811300 +vn -0.300788 -0.526226 -0.307031 +v 71.826614 20.371176 1.891300 +vn -0.792790 -1.386980 -0.809246 +v 71.740250 20.313110 2.075428 +vn -0.296523 -0.662836 -0.348112 +v 71.969696 20.210466 2.075428 +vn -0.816060 -1.002424 -0.849281 +v 72.167847 20.347551 1.591300 +vn -0.427227 -0.497008 -0.429480 +v 71.381516 20.710575 1.941300 +vn -0.404573 -0.470654 -0.406707 +v 72.008621 20.638147 1.401300 +vn -0.030016 0.785270 -0.450849 +v 72.584656 23.688503 1.891300 +vn -0.197325 0.712510 -0.545521 +v 71.726006 23.646368 2.075428 +vn -0.461612 1.029243 -1.149003 +v 71.743065 23.291367 1.721300 +vn -0.185742 0.414143 -0.462332 +v 71.370926 23.414717 1.981300 +vn -0.076305 0.401922 -0.314546 +v 71.952827 23.552898 1.871301 +vn -0.265857 1.400349 -1.095919 +v 72.331497 23.784540 2.075428 +vn -0.377264 0.351319 -0.699437 +v 71.541740 22.999359 1.601300 +vn -0.408718 0.386066 -0.749452 +v 70.947548 23.166216 2.011300 +vn -0.734364 1.087580 -1.354706 +v 70.935417 23.237904 2.075428 +vn -0.669112 0.650105 -1.343909 +v 71.387772 22.654839 1.511300 +vn -0.610761 0.590169 -1.222436 +v 72.016602 22.848675 1.291300 +vn -0.202271 0.589495 -0.646712 +v 72.666336 23.369867 1.481300 +vn -0.206461 0.594580 -0.632208 +v 72.814545 23.059814 1.141300 +vn -0.174700 0.503113 -0.534952 +v 72.173569 23.134962 1.421300 +vn -0.855119 0.241726 -1.243900 +v 71.018501 22.756020 1.761300 +vn -0.346685 -0.184086 -0.369509 +v 70.919121 21.219093 2.051300 +vn -1.817814 -0.965263 -1.937027 +v 70.851418 21.298176 2.075428 +vn -0.758451 -0.282474 -0.836387 +v 70.859337 21.612700 1.911301 +vn -0.974287 -0.455362 -1.098271 +v 71.532623 21.077272 1.531301 +vn -0.509405 -0.238085 -0.574229 +v 71.228325 21.583635 1.591300 +vn -0.469122 -0.080097 -0.638697 +v 71.867149 21.350388 1.121301 +vn -0.714653 0.275208 -1.280834 +v 71.639275 22.173231 1.251300 +vn -0.444891 0.163440 -0.748585 +v 71.225502 22.304739 1.531301 +vn -0.293662 0.107883 -0.494123 +v 71.818275 22.498436 1.221300 +vn -0.397123 -0.003369 -0.529852 +v 71.562859 21.856750 1.281301 +vn -0.986559 -0.008369 -1.316292 +v 71.202019 21.927450 1.551300 +vn -0.809292 0.088113 -1.266966 +v 71.904655 21.688906 1.051300 +vn -0.530583 -0.194017 -0.582319 +v 70.827446 21.964811 1.821301 +vn -0.694652 -0.254012 -0.762387 +v 70.511559 22.065943 2.075428 +vn -0.867394 -0.021846 -1.069510 +v 70.642479 22.455000 1.961300 +vn -0.206963 0.176956 -0.322209 +v 70.746017 23.047277 2.075428 +vn -0.208566 -0.829384 -0.195811 +v 77.219116 18.798494 0.000000 +vn -0.125219 -0.355105 -0.122934 +v 77.809494 18.611845 0.000000 +vn -0.327859 -1.190077 -0.377931 +v 77.637970 18.672329 0.000000 +vn -0.704054 -1.480741 -0.144118 +v 76.023193 19.254740 0.000000 +vn -0.029025 -0.060576 -0.006010 +v 75.874611 19.297035 0.291300 +vn -0.853642 -1.781541 -0.176743 +v 76.001320 19.265221 0.000000 +vn -0.386796 -0.858273 -0.127733 +v 76.358055 19.079823 0.161301 +vn -0.726388 -1.611803 -0.239878 +v 76.334900 19.114264 0.000000 +vn -0.473778 -1.608734 -0.374066 +v 77.130943 18.820667 0.000000 +vn -0.601462 -1.774189 -0.283968 +v 76.989853 18.862219 0.000000 +vn -0.780406 -1.111391 -0.905955 +v 74.631889 20.052113 0.051300 +vn -0.366099 -0.521368 -0.424995 +v 74.704041 20.043266 0.000000 +vn -0.777386 -1.017730 -0.629411 +v 74.813782 19.984621 0.000000 +vn -0.985146 1.430256 -1.375517 +v 74.777489 22.440964 0.000000 +vn -0.616011 0.773324 -0.758343 +v 75.061676 22.636610 0.000000 +vn -0.987488 -1.656927 -0.459897 +v 75.645905 19.440058 0.000000 +vn -0.363567 -0.609984 -0.169940 +v 75.210190 19.693821 0.021300 +vn -0.327674 -0.667668 -0.134439 +v 75.649414 19.434830 0.011300 +vn -0.429750 0.342330 -0.808090 +v 73.737190 21.884682 0.111300 +vn -0.499513 0.213676 -0.612452 +v 73.510559 21.399609 0.000000 +vn -1.358645 0.978690 -2.079273 +v 73.609833 21.557573 0.000000 +vn -0.108229 0.077962 -0.165634 +v 73.531898 21.449383 0.000000 +vn -0.830118 0.747714 -1.047689 +v 73.635445 21.659628 0.031301 +vn -1.023363 -0.439519 -0.918880 +v 73.431084 20.726923 0.141300 +vn -1.646401 -0.707221 -1.478045 +v 73.447800 20.983379 0.000000 +vn -0.192071 0.039659 -0.234677 +v 73.289764 21.403109 0.181300 +vn -1.277856 0.419522 -1.292881 +v 73.422623 21.100084 0.000000 +vn -0.569626 0.802322 -0.990559 +v 74.438728 22.258387 0.000000 +vn -0.266645 0.437499 -0.441444 +v 74.750412 22.422636 0.000000 +vn -0.123176 0.233782 -0.254951 +v 74.761215 22.440622 0.011300 +vn -0.433119 0.718698 -0.990880 +v 74.116974 22.039045 0.000000 +vn -0.893323 -1.067513 -1.101180 +v 73.531418 20.788717 0.000000 +vn -0.338187 -0.706327 -0.448349 +v 74.073196 20.363335 0.051300 +vn -0.460772 -0.962355 -0.610866 +v 74.066940 20.398893 0.000000 +vn 0.101463 0.188059 0.118329 +v 62.212681 16.353519 1.381300 +vn 1.058280 1.961496 1.234203 +v 62.538166 16.102406 1.501300 +vn 0.145242 0.269202 0.169386 +v 62.813152 15.998088 1.431300 +vn 0.252160 0.553064 0.340646 +v 62.576515 16.224590 1.321301 +vn 0.117273 0.151416 0.195442 +v 63.233913 15.497728 1.621301 +vn 1.064673 1.374650 1.774342 +v 63.038773 15.752128 1.541300 +vn 0.357856 0.597059 0.516024 +v 62.827595 15.851148 1.591300 +vn 0.717375 1.410265 1.741553 +v 63.079700 15.924246 1.381300 +vn 0.313254 0.406026 -0.054059 +v 62.644176 15.944729 1.661301 +vn 0.085832 0.131497 0.049108 +v 62.260319 16.228897 1.571301 +vn 1.275167 1.363109 0.909390 +v 62.956066 15.624222 1.751300 +vn 0.443982 0.474602 0.316628 +v 63.078392 15.549816 1.691300 +vn 0.341045 0.587807 -0.021588 +v 61.829388 16.493467 1.461300 +vn 0.497352 0.392978 0.442438 +v 66.856110 16.920862 0.951301 +vn 0.601911 0.397307 0.424784 +v 66.878845 16.779503 1.051300 +vn 0.838419 0.857749 1.227719 +v 67.153976 16.639132 0.921300 +vn 0.806226 0.769832 1.045469 +v 66.976418 16.652304 1.041300 +vn 0.460504 0.258198 0.554662 +v 66.879692 16.563171 1.151300 +vn 0.285266 0.051072 0.789761 +v 66.889549 16.172142 1.221300 +vn 0.283944 0.050836 0.786101 +v 66.538460 16.586798 1.321301 +vn -0.084463 0.251624 0.835933 +v 65.157242 17.296957 1.381300 +vn -0.198478 0.279893 0.764038 +v 64.876808 17.373516 1.311300 +vn -0.026569 0.232768 0.942969 +v 65.452850 17.592106 1.331300 +vn 0.561857 0.182224 0.324517 +v 66.741653 17.109015 1.001300 +vn 0.644777 0.262829 0.495806 +v 66.753380 16.948196 1.071301 +vn 0.660489 0.308649 0.646284 +v 66.734627 16.778936 1.171300 +vn 1.032789 0.338846 1.032771 +v 66.675262 17.064379 1.111300 +vn 0.490135 0.241285 0.695702 +v 66.622047 17.197300 1.121301 +vn 0.447083 0.220091 0.634594 +v 66.606293 16.969807 1.211300 +vn 1.255992 0.369836 0.979769 +v 66.699600 17.225338 1.011300 +vn 0.279175 0.113560 0.584472 +v 66.323296 16.996439 1.341300 +vn 0.184423 0.236849 1.413227 +v 65.780769 17.426979 1.381300 +vn 0.151939 0.078400 0.667949 +v 66.135460 17.508802 1.321301 +vn 0.460962 0.181812 1.226618 +v 66.194824 17.223362 1.341300 +vn 0.245670 0.139085 0.698773 +v 66.441208 17.340813 1.231300 +vn 0.794316 -0.138935 0.808120 +v 66.620781 17.521795 1.101300 +vn 1.053919 -0.100356 0.949664 +v 66.596443 17.360836 1.111300 +vn 0.641145 -0.061051 0.577722 +v 66.704613 17.361259 0.991301 +vn 0.833073 0.230692 1.068597 +v 66.500282 17.127483 1.231300 +vn 0.543069 0.032313 0.795143 +v 66.464828 17.682049 1.201301 +vn 0.455578 0.147753 0.986802 +v 63.430611 14.846721 1.711300 +vn 0.550365 0.160671 1.131621 +v 63.373825 15.182095 1.691300 +vn 0.233829 0.185919 0.381164 +v 63.235043 15.209287 1.761300 +vn 0.335759 -0.262311 0.692763 +v 63.586979 14.578301 1.611300 +vn 0.884587 -0.251130 1.673905 +v 63.429161 14.508345 1.661301 +vn 0.906985 -0.730660 1.134993 +v 62.892040 14.267719 1.921300 +vn 1.051613 -0.375593 1.685679 +v 63.080334 14.346115 1.821301 +vn 0.190036 -0.166710 0.330628 +v 63.254749 14.427231 1.741301 +vn 1.319753 0.915783 1.181032 +v 63.140614 15.242199 1.841300 +vn 0.803291 0.241321 1.436261 +v 63.280952 14.818399 1.801300 +vn 1.144792 0.141550 1.177918 +v 63.161766 14.798518 1.871301 +vn 0.150592 -0.658719 0.828770 +v 67.183777 14.695008 0.851300 +vn 0.096423 -0.421770 0.530651 +v 67.252464 14.861690 0.971300 +vn 0.814866 -0.588748 0.939218 +v 66.870445 14.677141 1.071301 +vn 0.220024 -0.327247 0.501889 +v 66.983482 14.849544 1.081300 +vn 0.635849 -0.945716 1.450415 +v 67.103088 14.761257 0.971300 +vn 0.565728 -0.294147 0.288368 +v 66.807907 14.357944 0.941300 +vn 0.661037 -0.264254 0.403347 +v 66.801758 14.510460 1.051300 +vn 0.508128 -0.276960 0.563090 +v 66.987045 14.647090 0.951301 +vn 0.650056 -0.598963 0.540986 +v 66.921219 14.458232 0.821301 +vn 0.732438 -0.674870 0.609545 +v 67.081619 14.578122 0.761300 +vn 0.329485 -0.248951 0.567618 +v 66.709343 14.737528 1.191300 +vn 0.601471 -0.299043 1.194443 +v 66.805504 14.970881 1.201301 +vn 0.394182 -0.173054 0.983486 +v 66.410027 14.680887 1.301300 +vn 0.251692 -0.133161 0.687043 +v 66.547256 15.050302 1.311300 +vn -0.182531 -0.836145 1.293142 +v 65.417427 13.182069 0.971300 +vn 0.008810 -0.713383 1.155885 +v 65.280510 13.439470 1.141300 +vn -0.005898 -0.670508 1.160058 +v 65.488266 13.506847 1.181300 +vn -0.003726 -0.423557 0.732805 +v 65.519585 13.298958 1.061300 +vn 0.104008 -0.694658 1.488114 +v 65.652222 13.424284 1.131300 +vn 0.088809 -0.520860 1.092924 +v 65.467957 13.734198 1.291300 +vn 0.597992 -0.263191 1.749365 +v 66.326431 14.070382 1.211300 +vn 0.338933 -0.244306 0.985284 +v 66.436752 14.228906 1.201301 +vn 0.327610 -0.122093 0.780616 +v 66.548492 14.026877 1.111300 +vn 0.591465 -0.286298 0.916902 +v 66.557808 14.478995 1.201301 +vn 0.883884 -0.331355 0.438918 +v 66.805466 14.271954 0.881300 +vn 0.969916 -0.363607 0.481640 +v 66.849541 14.349785 0.851300 +vn 0.725533 -0.223113 0.889631 +v 66.600578 14.182397 1.101300 +vn 0.542357 -0.035992 0.447739 +v 66.674980 14.304722 1.071301 +vn 1.396412 -0.426015 1.253442 +v 66.755531 14.274530 0.971300 +vn 0.472136 0.219582 0.632267 +v 66.712730 13.872201 1.011300 +vn 1.169908 0.080634 1.096853 +v 66.712166 14.016424 1.001300 +vn 0.416314 -0.106913 0.505691 +v 66.739357 14.155204 0.981300 +vn 1.015401 0.127508 0.712010 +v 66.834206 14.014126 0.871301 +vn -0.400647 0.335306 0.863276 +v 64.347855 17.174526 1.191300 +vn -0.417696 0.353821 0.780638 +v 64.604683 17.455656 1.201301 +vn -0.564412 0.478101 1.054837 +v 64.332840 17.465685 1.051300 +vn -0.127145 0.315169 1.157321 +v 65.163948 17.000214 1.471300 +vn -0.225013 0.259909 0.888922 +v 64.698654 16.831984 1.441300 +vn -0.260739 0.380631 1.085398 +v 64.905701 17.079636 1.421300 +vn -0.359502 0.077504 0.686794 +v 64.401772 16.861328 1.321301 +vn -0.834531 0.443763 1.162931 +v 64.217232 17.243353 1.071301 +vn -0.770311 0.361201 1.127526 +v 64.248833 16.963348 1.191300 +vn -0.436892 0.310238 0.928628 +v 64.622559 17.142321 1.331300 +vn -0.547398 0.118013 0.758391 +v 64.322777 16.494913 1.321301 +vn 0.192193 -0.472623 1.052791 +v 65.430916 13.986443 1.411301 +vn -0.151658 -0.910126 1.077701 +v 64.961594 13.429901 1.101300 +vn -0.187465 -0.415641 0.549333 +v 64.791916 13.556818 1.161301 +vn -0.179635 -0.582490 0.750084 +v 65.030426 13.560526 1.221300 +vn -0.074582 -0.468226 0.782341 +v 65.035156 13.768559 1.351300 +vn 0.022587 -0.541657 0.865964 +v 65.246468 13.633484 1.261300 +vn 0.091711 -0.423587 1.094226 +v 65.006554 13.990328 1.461300 +vn 0.069874 -0.322729 0.833685 +v 65.217865 13.855253 1.391300 +vn 0.357838 -0.160782 1.028873 +v 66.181824 14.876911 1.411301 +vn 0.345870 -0.119176 1.057277 +v 66.219185 15.251483 1.441300 +vn 0.235490 -0.048282 0.669007 +v 66.558731 15.660522 1.351300 +vn 0.242308 -0.077776 0.786692 +v 65.867500 15.111432 1.531301 +vn 0.396016 -0.159846 1.161090 +v 66.169220 14.555133 1.371301 +vn 0.270564 -0.198508 0.876590 +v 65.913689 14.648434 1.471300 +vn 0.430287 -0.304267 1.286945 +v 66.316727 14.425357 1.291300 +vn 0.161959 -0.201736 0.629165 +v 66.023689 14.180137 1.331300 +vn 0.245369 -0.381661 1.140621 +v 65.627220 14.142529 1.421300 +vn 0.176730 -0.274896 0.821547 +v 65.708618 13.896005 1.321301 +vn 0.168783 0.019572 1.276065 +v 65.449738 15.553556 1.621301 +vn 0.137275 0.015918 1.037852 +v 65.688667 15.449098 1.591300 +vn 0.019339 0.063133 0.837831 +v 65.205086 15.702370 1.641300 +vn 0.161297 0.026904 1.285637 +v 65.648483 15.795632 1.591300 +vn -0.272462 0.155536 1.383491 +v 64.954857 15.859479 1.611300 +vn 0.000000 0.000000 1.379737 +v 64.995323 15.440836 1.641300 +vn 0.000000 0.000000 0.957586 +v 65.256577 15.303184 1.641300 +vn -0.111613 0.087852 0.985513 +v 64.889633 16.225330 1.571301 +vn -0.305607 0.092125 1.340919 +v 64.701759 16.038767 1.541300 +vn 0.013750 0.052556 0.752380 +v 65.390099 15.911107 1.621301 +vn 0.022869 0.087412 1.251356 +v 65.361206 16.204987 1.601300 +vn -0.299121 0.130046 0.884812 +v 64.498459 16.251532 1.441300 +vn -0.313841 0.136446 0.928355 +v 64.438782 15.910154 1.471300 +vn -0.520520 0.182963 1.046556 +v 64.279549 16.200750 1.341300 +vn -0.311921 0.251724 1.375550 +v 64.210403 15.443308 1.481300 +vn -0.228657 0.184529 1.008361 +v 64.381958 15.546600 1.501300 +vn -0.160707 0.189804 0.649983 +v 64.109550 15.700851 1.411301 +vn -0.179815 0.209939 0.716684 +v 64.175095 15.961819 1.351300 +vn -0.626231 0.235585 1.668782 +v 64.283966 15.781966 1.431300 +vn -0.532871 0.132435 0.796133 +v 64.068092 16.371881 1.171300 +vn -0.627620 0.322310 1.145230 +v 64.113297 16.161270 1.261300 +vn -0.089035 -0.320242 1.029890 +v 64.858765 14.192216 1.511300 +vn -0.462691 -0.605591 1.068566 +v 64.702644 13.689597 1.231300 +vn -0.285416 -0.373566 0.659157 +v 64.829979 13.751115 1.321301 +vn -0.483413 -0.652117 1.085812 +v 64.740707 13.883894 1.361300 +vn -0.334555 -0.368637 0.897609 +v 64.815254 13.970164 1.421300 +vn -0.271318 -0.278686 0.737810 +v 64.654297 13.994495 1.371301 +vn -0.406027 -0.730304 1.539949 +v 64.918266 13.870721 1.401300 +vn -0.313143 -0.659893 1.165337 +v 64.331955 14.151323 1.331300 +vn -0.423661 -0.490784 1.181784 +v 64.709106 14.163896 1.461300 +vn -0.197142 -0.226650 1.210442 +v 64.949341 14.433868 1.571301 +vn -0.148877 -0.171161 0.914095 +v 64.685799 14.449477 1.531301 +vn 0.275720 0.035563 1.181113 +v 66.199341 16.069595 1.461300 +vn 0.170557 0.021999 0.730626 +v 65.998581 15.633365 1.521300 +vn 0.153938 0.048027 0.625426 +v 66.053284 16.537748 1.461300 +vn 0.201909 0.064956 0.860891 +v 65.852524 16.101517 1.541300 +vn 0.420308 0.021806 1.292137 +v 66.501236 16.176170 1.361300 +vn 0.387393 0.057940 1.231276 +v 66.317535 16.341864 1.411301 +vn 0.080548 0.079861 0.821288 +v 65.563950 16.136446 1.591300 +vn 0.116461 0.115469 1.187472 +v 65.715477 16.394974 1.551300 +vn 0.044499 0.165892 0.865735 +v 65.510201 17.112514 1.451301 +vn 0.046140 0.140532 0.487478 +v 65.915253 17.083591 1.421300 +vn 0.008046 0.092473 0.525583 +v 65.664131 16.758106 1.511300 +vn 0.031086 0.357277 2.030632 +v 65.693756 16.982874 1.471300 +vn 0.047461 -0.340717 1.052422 +v 65.203003 14.110360 1.491301 +vn 0.051396 -0.143092 0.944309 +v 65.174255 14.368184 1.561300 +vn -0.008906 -0.190532 1.051156 +v 65.027878 14.209519 1.531301 +vn 0.150419 -0.106234 1.130859 +v 65.605225 14.802541 1.571301 +vn 0.126233 -0.089152 0.949027 +v 65.364845 14.568624 1.581300 +vn 0.193311 -0.298256 0.860682 +v 65.404892 14.258145 1.511300 +vn 0.200435 -0.214355 1.065424 +v 65.639969 14.428251 1.501300 +vn -0.000385 0.098334 0.872734 +v 65.266220 16.382122 1.581300 +vn -0.000337 0.085964 0.762941 +v 65.156319 16.115431 1.611300 +vn -0.195468 0.063762 0.750985 +v 64.799652 16.538383 1.521300 +vn -0.038502 0.194450 0.901494 +v 65.292702 16.701180 1.541300 +vn -0.047041 0.237574 1.101423 +v 64.976219 16.777597 1.511300 +vn -0.052471 0.174470 0.997965 +v 65.057899 16.458961 1.571301 +vn 0.020206 0.152666 1.231107 +v 65.471245 16.435621 1.571301 +vn -0.320471 0.117468 0.968968 +v 64.695053 16.335510 1.511300 +vn -0.279991 0.061350 0.712754 +v 64.566582 16.562433 1.441300 +vn -0.497922 0.136697 0.733298 +v 64.141510 16.746593 1.151300 +vn 0.126642 -0.050933 1.324468 +v 65.520546 15.179411 1.611300 +vn 0.077946 -0.031348 0.815186 +v 65.310776 14.917875 1.621301 +vn 0.038669 -0.070979 0.949672 +v 65.046806 15.041651 1.641300 +vn 0.035041 -0.064319 0.860564 +v 65.112030 14.675801 1.611300 +vn -0.122421 0.016975 0.603988 +v 64.700737 15.592226 1.591300 +vn -0.278584 -0.035307 1.232259 +v 64.788422 15.157127 1.621301 +vn -0.202482 -0.128036 0.943608 +v 64.559341 14.870557 1.561300 +vn -0.287153 -0.181576 1.338193 +v 64.856506 14.769101 1.611300 +vn -0.174874 -0.194172 0.546347 +v 64.349998 14.500858 1.461300 +vn -0.345604 -0.284574 1.045904 +v 64.528687 14.199244 1.411301 +vn -0.110132 -0.012675 0.631542 +v 64.297523 15.152430 1.521300 +vn -0.217838 -0.033516 1.189668 +v 64.555069 15.253285 1.571301 +vn -0.099207 0.502424 0.588555 +v 63.902683 16.116070 1.201301 +vn -0.200778 1.016825 1.191139 +v 63.813129 16.320959 1.011300 +vn -0.075788 0.347754 0.423685 +v 63.536129 16.231121 1.041300 +vn -0.275563 1.264425 1.540507 +v 63.664318 16.076305 1.191300 +vn 0.150653 1.199347 1.680370 +v 63.570736 15.892888 1.331300 +vn 0.133378 0.723413 0.730870 +v 63.434109 16.078178 1.211300 +vn -0.098872 0.243124 1.036955 +v 64.008095 15.403687 1.471300 +vn -0.107346 0.298460 1.296695 +v 63.901661 15.669528 1.401300 +vn 0.197083 0.585593 1.854198 +v 63.813942 15.405701 1.491301 +vn 0.064487 0.317745 0.709453 +v 63.787067 15.893735 1.311300 +vn -0.156450 0.670081 1.796994 +v 64.000542 15.916759 1.321301 +vn 0.596162 0.977458 1.763829 +v 63.425491 15.445782 1.571301 +vn 0.098252 0.179197 0.419379 +v 63.608627 15.424311 1.521300 +vn 0.196414 0.657324 1.061600 +v 63.340527 15.894759 1.351300 +vn 0.268303 0.618259 1.049741 +v 63.260822 15.708621 1.481300 +vn 0.136500 0.434879 1.174530 +v 63.699207 15.665962 1.421300 +vn 0.120442 0.383719 1.036356 +v 63.485596 15.678993 1.441300 +vn 0.180071 0.611125 0.562186 +v 62.723175 16.311144 1.141300 +vn 0.171358 0.646675 0.580855 +v 63.184441 16.091068 1.241301 +vn 0.251207 1.518269 1.565308 +v 63.292042 16.235712 1.081300 +vn 0.056516 0.327825 0.329477 +v 63.022915 16.259621 1.101300 +vn 0.064604 0.226989 0.338576 +v 62.898575 16.139872 1.271300 +vn -0.075900 -0.008656 1.604931 +v 64.089638 15.121107 1.511300 +vn 0.128328 0.203584 1.176613 +v 63.889900 15.131418 1.531301 +vn 0.199175 -0.172108 1.085088 +v 63.931076 14.532500 1.501300 +vn 0.109994 -0.095046 0.599237 +v 64.124100 14.818929 1.511300 +vn -0.060609 -0.284781 1.537775 +v 64.334854 14.828074 1.521300 +vn -0.008631 -0.257024 1.596034 +v 64.128090 14.508310 1.461300 +vn 0.450144 -0.111217 1.304590 +v 63.756237 14.559551 1.551300 +vn 0.436682 -0.158725 1.667630 +v 63.924366 14.829240 1.531301 +vn 0.224429 -0.081575 0.857064 +v 63.741230 14.850711 1.581300 +vn 0.347287 0.317622 1.149598 +v 63.704044 15.139011 1.571301 +vn 0.616611 0.221144 1.643587 +v 63.577549 14.861164 1.641300 +vn 0.240908 0.060195 0.839646 +v 63.526485 15.152184 1.621301 +vn 0.799750 -0.604199 0.091014 +v 73.453964 14.885978 0.501300 +vn 1.408498 -0.614492 0.212237 +v 73.613365 15.258254 0.521300 +vn 1.437387 -0.674012 0.155577 +v 73.481720 14.880539 0.221300 +vn 1.438657 -0.671913 0.046678 +v 73.659248 15.243795 0.000000 +vn 1.172609 -0.549854 0.041119 +v 73.517563 14.940428 0.000000 +vn 0.665218 -0.278122 0.391247 +v 73.496902 15.252252 0.811300 +vn 0.694086 -0.281243 0.425779 +v 73.229332 14.879552 1.001300 +vn 1.454897 -0.538401 0.434617 +v 73.376274 14.893993 0.771300 +vn 0.759583 -0.586039 0.186690 +v 73.185966 14.621444 0.761300 +vn 0.756825 0.002969 0.571817 +v 73.576782 16.101263 0.841300 +vn 1.283719 0.005025 0.969895 +v 73.578476 15.668599 0.841300 +vn 0.547306 -0.082592 0.338786 +v 73.359428 15.653874 1.131300 +vn 0.607732 -0.043396 0.037466 +v 73.784958 16.060474 0.231300 +vn 0.604773 -0.174516 0.016546 +v 73.744843 15.540416 0.000000 +vn 1.431752 -0.359548 0.109611 +v 73.756035 15.655426 0.231300 +vn 0.510795 -0.128273 0.039105 +v 73.655014 15.250103 0.221300 +vn 0.487558 -0.122530 0.037165 +v 73.768929 15.636256 0.000000 +vn 0.922218 -0.065852 0.173033 +v 73.700523 15.666304 0.531301 +vn 0.368929 -1.114318 -0.002748 +v 63.401936 13.670636 0.561300 +vn 0.391422 -1.182258 -0.002915 +v 63.293911 13.634156 0.851300 +vn 0.486198 -0.906896 -0.168136 +v 62.380203 13.236739 0.861300 +vn 0.346378 -0.690520 0.087142 +v 62.803722 13.449184 0.861300 +vn 0.294979 -0.588053 -0.098182 +v 62.230545 13.208417 0.581300 +vn 0.284222 -0.366320 0.201923 +v 62.890736 13.893289 1.681300 +vn 0.159682 -0.229149 0.183185 +v 62.199928 13.236032 1.461300 +vn 1.142838 -1.640020 1.311051 +v 62.686832 13.551347 1.431300 +vn 0.502181 -0.579243 0.536366 +v 63.046539 13.769091 1.401300 +vn 0.962502 -1.740341 0.937215 +v 62.928059 13.568933 1.151300 +vn 0.254054 -0.399568 0.146052 +v 62.524002 13.345469 1.151300 +vn 0.465800 -0.692812 0.954099 +v 63.391659 14.169830 1.551300 +vn 0.352614 -0.694018 0.883069 +v 63.317818 13.903282 1.371301 +vn 0.402805 -0.877169 0.511388 +v 63.238113 13.717144 1.161301 +vn 0.931686 -1.285510 1.290749 +v 63.161873 14.063536 1.611300 +vn 0.204465 -0.550817 -0.282123 +v 62.584106 13.578681 0.061300 +vn 0.184615 -0.454843 -0.156855 +v 62.978134 13.530299 0.571301 +vn 0.721968 -1.778744 -0.613409 +v 62.648624 13.393107 0.581300 +vn 0.168822 -0.492406 -0.305013 +v 62.307247 13.452787 0.111300 +vn 0.454840 -1.307734 -0.783869 +v 62.574055 13.611929 0.000000 +vn 0.077852 -0.223837 -0.134170 +v 62.810944 13.694321 0.000000 +vn 0.502722 -1.283726 -1.203339 +v 61.554001 13.271461 0.000000 +vn 0.472979 -1.526375 -1.030375 +v 61.846550 13.362113 0.000000 +vn 0.060931 -0.165607 -0.105079 +v 61.911201 13.307014 0.111300 +vn 0.097374 -0.264658 -0.167927 +v 62.245323 13.500566 0.000000 +vn 0.767290 -1.599014 -0.837963 +v 61.748795 12.992970 0.551300 +vn 0.424122 -0.991420 -0.377608 +v 62.077885 13.238329 0.331300 +vn 0.255856 -0.598085 -0.227796 +v 62.487663 13.417438 0.321301 +vn 0.366120 -0.934907 -0.627485 +v 61.481968 13.138921 0.111300 +vn -0.114412 -0.095896 1.572265 +v 71.801781 16.088764 1.691300 +vn -0.032527 -0.027263 0.666002 +v 71.402458 16.073330 1.661301 +vn -0.072207 -0.318152 1.463416 +v 71.418304 15.565840 1.641300 +vn -0.035514 -0.156477 0.719752 +v 71.456200 15.097263 1.541300 +vn -0.148944 -0.871030 1.075307 +v 71.897263 14.369555 1.151300 +vn -0.151390 -0.923276 1.131050 +v 71.502106 14.706376 1.371301 +vn -0.135863 -0.389803 0.495362 +v 71.525414 14.420794 1.141300 +vn -0.223447 -0.310108 0.572603 +v 70.745972 15.149951 1.361300 +vn -0.251550 -0.457631 0.545914 +v 71.146851 14.768776 1.311300 +vn -0.446838 -0.323906 1.316580 +v 71.087204 15.126327 1.471300 +vn -0.218987 -0.158740 0.645232 +v 71.018837 15.586464 1.561300 +vn -0.135257 -1.331084 0.587516 +v 71.553879 14.235080 0.891300 +vn -0.273546 -0.859718 0.320613 +v 70.973991 14.291052 0.591300 +vn -0.196021 -0.616068 0.229749 +v 71.565460 14.110316 0.611300 +vn -0.243692 -0.798583 0.617270 +v 71.212357 14.330816 0.901300 +vn -0.060698 -0.732850 0.004263 +v 71.646149 14.044067 0.061300 +vn -0.184506 -0.775334 0.021434 +v 71.296333 14.134224 0.311300 +vn -0.364293 -1.332807 0.220589 +v 71.618393 14.049506 0.331300 +vn -0.597100 -1.264616 0.946134 +v 71.181175 14.502652 1.111300 +vn -0.110661 -1.269517 -0.168499 +v 71.970840 14.023901 0.000000 +vn -0.065678 -0.641431 -0.097584 +v 71.727867 14.045026 0.000000 +vn -0.355313 -1.420713 -0.242439 +v 71.653831 14.052607 0.000000 +vn -0.603215 -1.494377 -0.241711 +v 71.329666 14.120486 0.101300 +vn 0.716766 -1.410150 -0.202505 +v 72.616089 14.143581 0.000000 +vn 0.068440 -0.733636 -0.082990 +v 72.281265 14.049330 0.031301 +vn 0.117102 -1.254751 -0.141682 +v 71.965210 14.017583 0.051300 +vn 0.418680 -1.557081 -0.210015 +v 72.616501 14.142168 0.011300 +vn 0.639390 -2.373514 -0.307492 +v 72.319145 14.063589 0.000000 +vn 1.031618 -1.485965 0.706420 +v 73.130310 14.668376 0.941300 +vn 0.974582 -1.138524 0.292936 +v 73.222160 14.585529 0.501300 +vn 0.305965 -0.566169 0.227299 +v 72.945724 14.351472 0.511300 +vn 0.643705 -1.289828 0.740142 +v 72.931564 14.426301 0.771300 +vn 0.624651 -0.746366 0.000000 +v 73.238899 14.560635 0.231300 +vn 1.008149 -1.204590 0.000000 +v 73.238899 14.560635 0.000000 +vn 0.735745 -0.879193 0.000081 +v 72.978249 14.342490 0.000000 +vn 0.300190 -0.570819 0.000000 +v 72.914345 14.298802 0.000000 +vn 0.022650 -0.042978 0.000053 +v 72.616501 14.142168 0.271300 +vn 0.684031 -1.334338 0.225345 +v 72.610779 14.186522 0.551300 +vn 0.968505 -1.151050 0.154230 +v 72.945869 14.315416 0.241301 +vn 0.142950 -1.624833 0.000000 +v 72.281265 14.049330 0.301300 +vn 0.124435 -1.406272 0.289286 +v 71.926155 14.075674 0.601300 +vn 0.072507 -0.727828 0.139790 +v 71.951332 14.020303 0.321301 +vn 0.062549 -0.682505 0.478136 +v 72.249374 14.401442 1.131300 +vn 0.381100 -1.228323 0.866766 +v 72.255661 14.212867 0.861300 +vn 0.177456 -0.640780 0.262825 +v 72.610352 14.294687 0.821301 +vn 0.074160 -0.729199 0.315654 +v 71.906273 14.194858 0.881300 +vn 0.056103 -0.753758 0.301366 +v 72.269966 14.101982 0.581300 +vn 0.328229 -0.132203 0.711604 +v 73.020172 15.172726 1.301300 +vn 0.289999 -0.004775 0.629728 +v 72.649620 15.598397 1.551300 +vn 0.647622 0.002331 1.446906 +v 73.051666 15.627707 1.371301 +vn 0.871260 -0.812280 0.954847 +v 72.971649 14.814752 1.181300 +vn 0.302106 -0.515510 0.597786 +v 72.630836 14.730211 1.301300 +vn 0.306519 -0.523040 0.606518 +v 72.928284 14.556644 1.001300 +vn 0.799471 -0.459970 1.006894 +v 73.325066 15.221069 1.081300 +vn 0.133737 -1.016348 1.255420 +v 72.239952 14.684304 1.361300 +vn 0.074197 -0.371914 0.776945 +v 71.862801 14.671733 1.391300 +vn 0.351737 -1.056831 1.254587 +v 72.606926 14.461086 1.081300 +vn 0.000000 0.000000 0.922632 +v 71.828796 15.564672 1.661301 +vn 0.290595 -0.230923 1.588408 +v 72.648743 15.115800 1.481300 +vn 0.392964 -0.312272 1.453835 +v 72.228119 15.580105 1.661301 +vn 0.087130 -0.281985 1.564549 +v 71.847366 15.071058 1.571301 +vn 0.048983 -0.158529 0.879575 +v 72.238396 15.080912 1.551300 +vn -0.305661 -2.056026 -0.474165 +v 70.240242 14.479275 0.000000 +vn -0.371002 -1.500783 -0.255269 +v 70.676964 14.356455 0.121301 +vn -0.625515 -2.529875 -0.430735 +v 70.522896 14.415181 0.000000 +vn -0.591081 -1.605709 0.711141 +v 70.629608 14.408966 0.571301 +vn -0.227993 -0.615304 0.426007 +v 70.312141 14.737770 0.941300 +vn -0.265013 -0.625673 0.462057 +v 70.590416 14.503112 0.751300 +vn -0.419766 -0.991033 0.731874 +v 70.912476 14.418394 0.821301 +vn -0.328437 -0.775412 0.572639 +v 70.834076 14.606686 1.031301 +vn -0.168580 -0.512428 -0.012345 +v 71.001892 14.249559 0.121301 +vn -0.462708 -1.371162 0.232667 +v 70.979713 14.246699 0.341300 +vn -0.237408 -0.860200 0.167254 +v 70.635330 14.364611 0.351300 +vn -0.337688 -1.606543 0.463387 +v 70.335312 14.488245 0.561300 +vn -0.175735 -0.836058 -0.056652 +v 70.130135 14.470800 0.351300 +vn -0.318895 -1.517138 -0.102802 +v 70.354904 14.441173 0.091300 +vn -0.310639 -0.250572 1.116294 +v 70.458557 15.595362 1.381300 +vn -0.237608 -0.372678 0.689570 +v 70.226898 15.258859 1.241301 +vn -0.274592 -0.418797 0.784285 +v 70.486130 14.927052 1.151300 +vn -0.380504 -0.580329 1.086787 +v 70.802612 14.850634 1.221300 +vn -0.274248 -0.039632 1.089043 +v 70.171562 15.932608 1.321301 +vn -0.212953 -0.009134 0.967275 +v 69.959358 15.585086 1.271300 +vn 0.031482 -0.339492 -0.108712 +v 69.142624 14.505760 0.021300 +vn 0.167964 -1.811282 -0.580006 +v 69.444206 14.540547 0.000000 +vn 0.030350 -0.901750 1.096796 +v 68.825157 14.834567 0.871301 +vn 0.058683 -0.658567 0.421423 +v 68.690079 14.623250 0.701301 +vn 0.016939 -0.934625 -0.047864 +v 69.503181 14.507174 0.121301 +vn 0.022486 -1.240689 -0.063538 +v 69.248070 14.492308 0.321301 +vn 0.042247 -0.849826 0.174632 +v 68.222069 14.441136 0.421300 +vn 0.097409 -0.982466 -0.174831 +v 68.835007 14.443539 0.271300 +vn 0.002849 -0.027343 -0.004731 +v 68.469017 14.414370 0.231300 +vn 0.237055 -2.275452 -0.393725 +v 68.682625 14.476645 0.000000 +vn -0.004321 -0.863511 1.063350 +v 68.428688 14.796957 0.841300 +vn -0.027195 -0.978828 0.582699 +v 68.279739 14.588360 0.671300 +vn 0.038194 -1.119984 0.780107 +v 68.574181 14.473025 0.491301 +vn -0.078366 -0.077103 0.775278 +v 68.567513 15.468695 1.081300 +vn -0.147227 -0.144853 1.456511 +v 68.793869 15.741385 1.131300 +vn -0.030438 -0.682186 1.366236 +v 68.824448 15.014843 0.961300 +vn 0.011836 -0.334930 0.834686 +v 68.834763 15.214577 1.041300 +vn -0.055920 -0.228768 0.768590 +v 68.560905 15.030452 0.971300 +vn -0.050514 -0.242589 0.859032 +v 68.125526 15.014878 0.941300 +vn -0.236845 -0.021150 1.627779 +v 68.292946 15.464846 1.041300 +vn -0.093559 -0.309961 1.480762 +v 68.557343 15.232905 1.031301 +vn -0.030867 -0.086613 0.861631 +v 68.310387 15.259673 1.021300 +vn -0.156549 -1.838497 0.232404 +v 68.320374 9.169060 0.251300 +vn 0.180701 -1.736821 0.429566 +v 68.544724 9.247596 0.471300 +vn 0.078496 -0.734615 0.184974 +v 68.264725 9.215991 0.461300 +vn -0.056589 -0.548359 0.341151 +v 68.078018 9.439915 0.851300 +vn -0.125256 -0.950183 0.608261 +v 67.964699 9.339625 0.671300 +vn 0.066624 -0.741973 0.356013 +v 68.441711 9.347040 0.701301 +vn -0.235405 -1.785775 0.715025 +v 68.189468 9.309996 0.671300 +vn 0.343294 -0.581689 0.410363 +v 69.017471 9.637741 0.741301 +vn 0.455863 -1.371171 0.812148 +v 68.724152 9.464633 0.741301 +vn 0.167766 -0.613442 0.574994 +v 68.562630 9.633186 0.971300 +vn 0.637470 -1.137826 0.203383 +v 68.910713 9.276764 0.231300 +vn 0.540483 -0.964713 0.172439 +v 68.967575 9.267277 0.000000 +vn 0.003847 -0.014108 0.001768 +v 68.614258 9.197945 0.241301 +vn 0.221914 -0.665990 0.210860 +v 68.838326 9.348593 0.481300 +vn 0.750964 -1.437570 0.544219 +v 69.134499 9.499523 0.471300 +vn -0.139101 -1.152788 0.016698 +v 68.076286 9.173651 0.051300 +vn -0.066772 -0.674976 -0.007657 +v 68.313919 9.144234 0.000000 +vn -0.132704 -1.341463 -0.015217 +v 68.374229 9.138268 0.000000 +vn 0.204273 -1.750135 0.070263 +v 68.667053 9.173191 0.021300 +vn 0.007897 -0.067662 0.002716 +v 68.364876 9.138724 0.041300 +vn 0.493700 -1.611240 0.104864 +v 68.669853 9.172663 0.000000 +vn 0.776851 -0.748317 1.023804 +v 69.324379 9.880240 0.721300 +vn 0.404776 -0.396098 0.369709 +v 69.592377 10.144775 0.711300 +vn 1.486810 -0.700580 0.916259 +v 69.814461 10.800194 0.831300 +vn 0.815446 -0.258937 0.578516 +v 69.684830 10.616634 0.901300 +vn 0.796280 -0.212481 0.288493 +v 69.892296 10.756123 0.671300 +vn 0.595771 -0.194105 0.276349 +v 69.868950 10.342776 0.431300 +vn 1.005678 -0.650496 1.126126 +v 69.455605 10.366118 0.961300 +vn 1.234507 -0.676702 1.079860 +v 69.790840 10.458960 0.681300 +vn 0.542013 -0.157938 0.057858 +v 69.891418 10.273529 0.181300 +vn 0.560768 -0.308598 0.067551 +v 69.851913 10.143703 0.000000 +vn 0.427839 -0.222488 0.066290 +v 69.717987 9.940025 0.181300 +vn 0.427673 -0.222790 0.065633 +v 69.899635 10.235312 0.000000 +vn 1.447019 -0.806500 0.425490 +v 69.681648 10.011996 0.441300 +vn 1.364504 -0.370498 0.267201 +v 69.967407 10.698172 0.421300 +vn 0.669818 -0.767649 0.210816 +v 69.491714 9.631363 0.000000 +vn 0.598969 -0.723082 0.330587 +v 69.201309 9.435996 0.211300 +vn 0.462088 -0.415760 0.179670 +v 69.424812 9.730863 0.451301 +vn 0.995402 -0.888049 0.268900 +v 69.544060 9.690175 0.000000 +vn 0.285388 -0.254008 0.077176 +v 69.469452 9.664474 0.191300 +vn -0.209114 -0.587077 0.637777 +v 65.283936 13.273072 1.011300 +vn -0.478612 -1.196690 0.758304 +v 65.223839 13.039861 0.711300 +vn -0.311711 -0.748262 0.507924 +v 65.053726 13.274944 0.961300 +vn -0.356692 -0.617144 -0.038226 +v 64.779305 13.235040 0.611300 +vn -0.398350 -0.768867 0.256820 +v 65.057014 13.144602 0.771300 +vn 0.510745 0.576234 0.992499 +v 69.222183 11.896190 1.011300 +vn 0.286150 0.654507 1.194340 +v 68.281746 11.950752 1.291300 +vn 0.474125 1.148885 1.460602 +v 68.782669 12.227292 0.971300 +vn 0.457757 1.074100 1.417179 +v 68.764343 11.949869 1.191300 +vn 0.018741 0.247275 0.789530 +v 68.471024 11.776760 1.341300 +vn 0.141975 0.341737 1.428070 +v 68.654869 11.575013 1.371301 +vn 0.194967 0.352451 1.533847 +v 68.161255 11.556440 1.431300 +vn -0.002556 0.650090 1.464966 +v 67.838066 11.929597 1.281301 +vn -0.141113 0.282008 0.977392 +v 67.589249 11.726156 1.311300 +vn -0.130683 0.291203 0.890892 +v 67.982994 11.749888 1.361300 +vn 0.179300 0.558763 0.640216 +v 68.550163 12.107119 1.141300 +vn 0.090562 0.482285 0.664812 +v 68.089752 12.110865 1.201301 +vn 0.226207 0.923036 1.678164 +v 68.347153 12.247775 1.091300 +vn -0.083842 -0.029530 0.515328 +v 67.742714 10.780987 1.411301 +vn -0.367349 -0.132812 1.042114 +v 67.398766 10.790733 1.291300 +vn -0.717717 -0.138792 1.883493 +v 67.300766 11.026099 1.271300 +vn -0.299147 -0.040118 0.665524 +v 67.491219 11.262594 1.361300 +vn -0.273019 0.135936 1.001163 +v 67.871086 11.289043 1.461300 +vn -0.332839 0.043510 1.252845 +v 67.611389 11.030088 1.401300 +vn -0.672370 -0.366449 0.769278 +v 67.240349 10.166070 0.971300 +vn -0.635373 -0.335788 0.734346 +v 67.103294 10.459528 0.991301 +vn -1.349859 -0.377531 1.279738 +v 67.224770 10.601453 1.161301 +vn -0.604260 -0.106905 0.644501 +v 67.132217 10.864575 1.141300 +vn -0.558412 -0.106226 0.592359 +v 67.025497 11.202527 1.101300 +vn -0.521459 0.289253 1.659354 +v 67.728737 11.518688 1.391300 +vn -0.421276 0.070616 0.915449 +v 67.222374 11.214392 1.241301 +vn -1.029201 -0.602319 0.520722 +v 67.107986 9.968633 0.581300 +vn -1.082336 -0.588291 0.601626 +v 67.015007 10.339920 0.801300 +vn -0.703697 -0.294910 0.359457 +v 66.943184 10.267527 0.601300 +vn -1.097917 -0.439586 0.835155 +v 66.996857 10.725368 0.991301 +vn -1.226672 -0.730201 0.052853 +v 66.915710 10.200855 0.381300 +vn -1.654087 -0.778648 0.109004 +v 66.756340 10.527507 0.171300 +vn -1.297669 -0.570994 0.380571 +v 66.800407 10.605338 0.621301 +vn -0.506680 -0.232679 0.133787 +v 66.750618 10.571860 0.401300 +vn -0.423013 -0.135990 0.372000 +v 66.888977 10.652834 0.811300 +vn -0.255963 -0.140771 -0.044387 +v 66.918571 10.178678 0.141300 +vn -0.914614 -0.503007 -0.158606 +v 67.126114 9.845859 0.000000 +vn -2.256931 -1.241049 -0.391820 +v 67.053261 9.978347 0.000000 +vn -1.076761 -0.400701 -0.139589 +v 66.774101 10.539454 0.000000 +vn -0.129087 -0.048052 -0.016706 +v 66.619003 10.893074 0.181300 +vn 0.381691 0.357214 -0.089153 +v 69.482025 12.119088 0.051300 +vn 0.135518 0.126828 -0.031653 +v 69.677025 11.900743 0.011300 +vn 1.466248 1.970937 -0.409062 +v 69.422180 12.152962 0.000000 +vn 0.830793 1.053236 -0.273721 +v 69.483948 12.104239 0.000000 +vn 0.593632 0.964276 -0.195635 +v 69.256691 12.292940 0.081300 +vn 0.778623 1.264771 -0.256601 +v 69.253799 12.278226 0.000000 +vn 0.503731 0.781846 -0.138369 +v 68.954910 12.466848 0.000000 +vn 1.335649 1.370396 0.326662 +v 69.554703 11.975152 0.521300 +vn 1.371078 1.323155 0.399575 +v 69.431946 12.157722 0.301300 +vn 0.342293 0.475827 -0.004966 +v 69.198318 12.325994 0.321301 +vn 0.337833 0.381152 0.395378 +v 69.013451 12.081200 1.011300 +vn 0.487787 0.797167 0.654098 +v 69.207314 12.151296 0.781301 +vn 0.268596 0.438953 0.190880 +v 69.354263 12.165742 0.541300 +vn 0.578219 0.641082 0.392626 +v 69.421638 11.957987 0.781301 +vn 0.398863 0.673325 0.342445 +v 68.982124 12.289089 0.781301 +vn 0.556881 0.940078 0.478112 +v 68.937202 12.427589 0.561300 +vn 0.573300 1.377897 1.079877 +v 68.737473 12.437904 0.721300 +vn 0.786062 1.317721 0.061038 +v 69.025909 12.439033 0.101300 +vn 0.905576 1.570184 0.320574 +v 69.131783 12.317410 0.551300 +vn 1.339948 -0.083200 0.035690 +v 70.003090 10.606119 0.000000 +vn 0.661748 -0.041089 0.017626 +v 70.020081 10.879756 0.000000 +vn 0.166029 -0.006835 0.008856 +v 70.000885 10.648380 0.181300 +vn 0.851436 -0.034777 0.175906 +v 69.965996 11.058728 0.431300 +vn 1.278754 0.239601 0.256631 +v 69.892471 11.418998 0.461300 +vn 1.297592 0.218978 0.226050 +v 70.016068 11.020094 0.181300 +vn 1.801932 0.296244 0.051412 +v 69.964989 11.334840 0.000000 +vn 0.751730 0.211202 0.601274 +v 69.781586 11.404692 0.721300 +vn 1.369015 0.063393 0.500332 +v 69.877144 11.083339 0.671300 +vn 0.608123 0.398065 0.577236 +v 69.425629 11.647369 0.991301 +vn 0.847481 0.554745 0.804437 +v 69.611206 11.711889 0.751300 +vn 0.440899 0.309173 0.246057 +v 69.749840 11.720751 0.491301 +vn 0.551666 0.370890 0.000013 +v 69.829567 11.673858 0.000000 +vn 1.729812 1.162969 0.000039 +v 69.725792 11.828214 0.000000 +vn 1.077410 0.466090 0.049481 +v 69.846306 11.648962 0.000000 +vn 0.069331 0.029974 0.003159 +v 69.950844 11.385942 0.201301 +vn 1.677622 0.698475 0.356391 +v 69.816513 11.693275 0.231300 +vn 0.847906 0.623172 0.230738 +v 69.643547 11.950537 0.261300 +vn 1.477184 1.031014 -0.242590 +v 69.677422 11.897516 0.000000 +vn -0.205787 -0.361030 -0.017154 +v 67.551208 9.399022 0.101300 +vn -0.885880 -1.554043 -0.073971 +v 67.572937 9.391458 0.000000 +vn -0.669234 -1.214777 -0.081564 +v 67.819557 9.252767 0.000000 +vn -0.195644 -0.226470 -0.025053 +v 67.323013 9.595050 0.111300 +vn -1.664366 -1.926978 -0.212457 +v 67.456284 9.492213 0.000000 +vn -0.604805 -1.381933 0.860454 +v 67.747940 9.446943 0.691300 +vn -0.364426 -0.544217 0.250965 +v 67.745506 9.360954 0.501300 +vn -0.405858 -0.604726 0.427313 +v 67.772560 9.535791 0.851300 +vn -0.255317 -0.691201 0.094734 +v 68.037376 9.195685 0.271300 +vn -0.429710 -1.163326 0.159442 +v 67.762383 9.300004 0.291300 +vn -0.394643 -1.068389 0.146430 +v 67.804161 9.255790 0.081300 +vn -0.711437 -1.784306 0.379318 +v 67.998314 9.253778 0.471300 +vn -1.320597 -1.139760 0.179145 +v 67.100113 9.854888 0.121301 +vn -0.855130 -0.691730 0.271031 +v 67.094391 9.899240 0.361300 +vn -0.892995 -0.755394 0.252309 +v 67.303413 9.642122 0.331300 +vn -1.291905 -1.354455 0.376309 +v 67.514732 9.507048 0.521300 +vn -0.346135 -0.390803 0.133618 +v 67.523315 9.440516 0.311300 +vn -0.530480 -0.396359 0.461195 +v 67.396576 9.933707 0.951301 +vn -1.171753 -1.128207 0.917405 +v 67.588852 9.701484 0.911301 +vn -1.031482 -1.148636 1.030343 +v 67.336044 9.808661 0.751300 +vn -0.730012 -0.799491 0.457821 +v 67.533768 9.604195 0.721300 +vn -0.539243 -0.424577 0.286623 +v 67.297554 9.722531 0.551300 +vn -0.376544 -0.296475 0.200144 +v 67.160362 10.052043 0.781301 +vn 0.344434 -0.770708 1.399598 +v 68.356323 9.904184 1.171300 +vn 0.156129 -0.953164 1.454961 +v 68.294067 9.512873 0.921300 +vn -0.041367 -0.750967 1.537012 +v 67.884468 9.996634 1.211300 +vn -0.016936 -0.307456 0.629273 +v 68.093491 9.739515 1.091300 +vn 0.001836 -0.290134 0.591170 +v 68.127708 10.208375 1.321301 +vn -0.432553 -1.378091 1.541370 +v 67.936661 9.417174 0.791300 +vn -0.312489 -0.995574 0.940169 +v 67.897041 9.619485 0.981300 +vn -0.188279 -0.330051 0.392771 +v 67.702034 9.837831 1.071301 +vn -0.361868 -0.286325 0.783416 +v 67.680885 10.281510 1.281301 +vn -0.370653 -0.324381 0.786821 +v 67.347809 10.346770 1.151300 +vn -0.515154 -0.450842 1.093566 +v 67.506889 10.092230 1.121301 +vn 0.000548 -0.383357 1.652718 +v 67.912964 10.509849 1.391300 +vn -0.424832 -0.397846 1.730624 +v 67.516212 10.544351 1.301300 +vn 0.395970 -0.207390 0.646872 +v 69.282501 10.659436 1.161301 +vn 0.905609 0.151424 1.251996 +v 69.612610 11.351335 0.951301 +vn 0.904036 0.097157 1.284256 +v 69.550636 10.887916 1.041300 +vn 0.521026 0.055995 0.740159 +v 69.746948 11.044001 0.891300 +vn 0.548737 -0.589836 1.332108 +v 68.855804 9.842348 1.011300 +vn 0.514079 -0.416968 1.452296 +v 68.415161 10.461891 1.401300 +vn 0.243862 -0.197795 0.688920 +v 68.652222 10.127223 1.221300 +vn 0.289418 -0.234135 0.593874 +v 69.171013 10.090425 0.991301 +vn 0.614599 -0.534363 1.385515 +v 68.964569 10.397479 1.201301 +vn 0.037799 -0.018653 0.639981 +v 68.320206 11.337955 1.461300 +vn 0.101042 -0.049860 1.710738 +v 68.013435 11.059400 1.471300 +vn 0.125636 0.042081 0.661863 +v 68.855598 11.312317 1.361300 +vn 0.393315 -0.072156 1.557202 +v 69.075912 11.002542 1.291300 +vn 0.145534 -0.047516 0.892686 +v 68.208717 10.768944 1.451301 +vn 0.119582 -0.039043 0.733501 +v 68.749687 10.735008 1.361300 +vn 0.222548 -0.187367 1.408334 +v 68.518204 11.061376 1.441300 +vn 0.854380 0.583513 1.427651 +v 69.168228 11.510459 1.201301 +vn 0.313981 0.073446 0.704454 +v 69.374672 11.203405 1.141300 +vn 0.238630 0.156272 0.684773 +v 68.959206 11.767578 1.221300 +vn 0.151093 0.573492 1.067344 +v 68.169167 12.369113 1.051300 +vn 0.192711 0.377712 0.535412 +v 68.549179 12.359505 0.921300 +vn 0.096201 0.300963 0.998984 +v 67.537056 12.305620 1.171300 +vn 0.105288 0.329394 1.093355 +v 67.709877 12.084414 1.221300 +vn 0.387160 0.558636 0.253952 +v 68.797997 12.562946 0.361300 +vn 0.883104 1.274237 0.579260 +v 68.698273 12.532049 0.581300 +vn 0.482950 0.751575 0.513123 +v 68.501259 12.556237 0.731300 +vn 0.678490 1.022949 0.417549 +v 68.517433 12.675563 0.541300 +vn 0.682244 0.865277 0.344409 +v 68.500412 12.772571 0.331300 +vn 0.456781 0.579327 0.230592 +v 68.280937 12.866013 0.531301 +vn 0.547332 0.753838 -0.078030 +v 68.627457 12.690372 0.000000 +vn 0.197910 0.311235 -0.053249 +v 68.797127 12.567181 0.000000 +vn -1.504580 -0.558790 -0.110896 +v 66.534798 11.155784 0.000000 +vn -0.475951 -0.132932 0.431746 +v 66.836639 11.268352 0.961300 +vn -1.317556 -0.507055 0.810102 +v 66.795998 11.024122 0.841300 +vn -1.510979 -0.623772 0.450533 +v 66.562645 11.120281 0.411301 +vn -0.570233 -0.235407 0.170028 +v 66.494843 11.436198 0.621301 +vn -0.418012 -0.166593 0.270176 +v 66.701988 10.948869 0.641300 +vn -0.285488 -0.012583 0.851730 +v 67.129814 11.477514 1.181300 +vn -0.529327 0.051413 1.188675 +v 67.332268 11.481080 1.271300 +vn -0.298451 0.114086 1.218416 +v 67.267471 11.738764 1.231300 +vn -0.473917 -0.127835 0.579201 +v 66.937782 10.938699 0.971300 +vn -0.388039 -0.058464 0.802607 +v 67.028961 11.735056 1.151300 +vn -0.430108 -0.129959 0.668930 +v 66.918922 11.504423 1.081300 +vn 0.393375 0.391152 0.726270 +v 67.541824 13.212578 0.841300 +vn 0.184554 0.224941 0.665527 +v 67.556549 12.993526 0.951301 +vn 0.277846 0.338648 1.001949 +v 67.278419 13.192135 0.961300 +vn 0.083384 0.199379 1.302061 +v 66.911263 12.752478 1.131300 +vn 0.105706 0.111169 0.592363 +v 66.951904 12.996704 1.091300 +vn 0.215359 0.318343 1.163193 +v 67.257088 12.972943 1.041300 +vn 0.115685 0.051388 1.177636 +v 66.613533 12.998154 1.111300 +vn 0.112637 0.314555 1.882806 +v 66.777634 12.879535 1.121301 +vn 0.221169 0.240223 0.503983 +v 67.105591 13.413335 0.941300 +vn 0.477838 0.570835 1.582965 +v 67.123466 13.099998 1.041300 +vn 0.303851 0.330134 1.025596 +v 66.998138 13.232637 1.031301 +vn 1.104363 0.988441 0.106923 +v 67.929710 13.316721 0.251300 +vn 1.190825 1.052395 0.503431 +v 67.944008 13.205833 0.491301 +vn 0.497230 0.482445 0.145343 +v 68.041153 13.186800 0.301300 +vn 0.381225 0.369890 0.111434 +v 67.812958 13.382824 0.431300 +vn 0.707813 0.612293 -0.019973 +v 67.862755 13.416305 0.181300 +vn 0.919883 0.947399 1.273797 +v 67.689331 13.082801 0.831300 +vn 0.500066 0.554407 0.814856 +v 67.347107 13.358813 0.861300 +vn 0.673793 0.677039 0.590990 +v 67.819389 13.158197 0.681300 +vn 0.597788 0.574895 -0.076755 +v 67.979782 13.278085 0.091300 +vn 0.793251 0.763075 -0.101791 +v 68.047615 13.195361 0.000000 +vn 0.821198 0.653478 -0.158479 +v 67.882133 13.385351 0.000000 +vn -1.010191 -0.566509 -0.225091 +v 66.025948 12.280878 0.000000 +vn -1.336199 -0.713781 -0.264803 +v 66.084534 12.100235 0.191300 +vn -0.848987 -0.443358 -0.176249 +v 66.294121 11.698896 0.191300 +vn -1.414317 -0.738585 -0.293611 +v 66.264130 11.832375 0.000000 +vn -0.715273 -0.418479 0.926721 +v 66.347229 12.300958 0.951301 +vn -0.598145 -0.372396 0.191180 +v 66.162643 11.984054 0.421300 +vn -0.517151 -0.395933 0.574717 +v 66.160667 12.488826 0.911301 +vn -0.354117 -0.216727 0.401320 +v 66.242348 12.170193 0.811300 +vn -0.405273 -0.282400 0.279868 +v 66.078529 12.216701 0.611300 +vn -0.334625 -0.201644 0.589449 +v 66.489723 12.035258 0.941300 +vn -0.668015 -0.402544 1.176723 +v 66.522064 12.273909 1.041300 +vn -0.323763 -0.223461 0.604441 +v 66.126343 12.754950 0.991301 +vn -0.591454 -0.355163 1.090468 +v 66.346382 12.517290 1.021300 +vn -0.022934 0.023310 0.620699 +v 66.338966 12.994305 1.101300 +vn -0.064795 0.065859 1.753667 +v 66.497490 12.883985 1.111300 +vn -0.101573 -0.073499 0.674011 +v 66.647713 12.768087 1.121301 +vn -0.163092 -0.093142 0.692151 +v 66.387032 12.761518 1.081300 +vn 0.267836 -0.341725 0.515198 +v 67.246140 14.351336 0.461300 +vn 0.725345 -0.866759 1.360629 +v 67.237419 14.453924 0.531301 +vn 0.336982 -0.004924 0.608697 +v 67.171883 14.192957 0.441300 +vn 0.483713 -0.204128 1.046260 +v 67.369171 14.096653 0.331300 +vn 0.389422 -0.381090 0.913262 +v 67.379768 14.224277 0.351300 +vn 0.951819 0.410924 0.768691 +v 66.955833 14.119999 0.641300 +vn 1.147156 -0.291730 1.467146 +v 67.036095 14.161914 0.541300 +vn 0.878986 -0.497723 0.903436 +v 67.110359 14.320296 0.511300 +vn 0.573709 -0.324861 0.589667 +v 67.082184 14.433901 0.601300 +vn 0.788217 -0.452229 0.906933 +v 66.954842 14.372386 0.681300 +vn 0.621009 -0.356295 0.714541 +v 66.999619 14.269938 0.591300 +vn 0.597614 -0.148273 0.466107 +v 66.885727 14.313869 0.751300 +vn 1.123934 -0.397952 0.405373 +v 67.727005 14.084188 0.041300 +vn 1.327180 -0.469915 0.478678 +v 67.734123 14.062222 0.000000 +vn 1.867728 -0.954885 0.781190 +v 67.756516 14.108122 0.000000 +vn 1.016707 -1.273410 0.158367 +v 67.914742 14.306808 0.051300 +vn 0.677050 -0.561875 0.296859 +v 67.829033 14.237134 0.041300 +vn 1.208008 -1.002511 0.529663 +v 67.823395 14.208520 0.000000 +vn 0.694202 -0.576148 0.304323 +v 67.771080 14.162019 0.031301 +vn 1.120183 -0.748527 0.365684 +v 67.842552 14.237189 0.000000 +vn 1.053678 -0.872741 1.249746 +v 67.609978 14.222408 0.231300 +vn 0.623963 -0.332351 0.577273 +v 67.627281 14.053288 0.131300 +vn 0.701692 -0.524833 1.364676 +v 67.523849 14.260898 0.291300 +vn 0.383513 -0.286850 0.745870 +v 67.538155 14.150015 0.241301 +vn 0.401847 -0.743617 1.076519 +v 67.542885 14.358046 0.351300 +vn 1.053399 -0.979302 0.923736 +v 67.767937 14.256309 0.131300 +vn 0.555924 -0.543631 0.703856 +v 67.701691 14.175618 0.121301 +vn 0.234273 -0.497222 0.384853 +v 67.673508 14.289218 0.231300 +vn 0.267325 -0.567371 0.439149 +v 67.861938 14.331559 0.171300 +vn 0.616567 0.256718 0.654883 +v 67.411942 13.800055 0.331300 +vn 0.711584 -0.144954 0.958484 +v 67.505386 14.019532 0.231300 +vn 0.766370 -0.132103 0.687181 +v 67.583351 13.939403 0.161301 +vn 1.045393 -0.180200 0.937373 +v 67.561462 13.864434 0.171300 +vn 0.520706 -0.008982 0.675396 +v 67.311653 13.913379 0.361300 +vn 0.381624 -0.006583 0.494997 +v 67.467026 13.897344 0.241301 +vn 0.858613 -0.182386 1.310227 +v 67.377899 13.994069 0.311300 +vn 0.340461 -0.078356 0.550495 +v 67.241829 14.035137 0.401300 +vn 0.941892 -0.193047 0.385046 +v 67.683075 13.970303 0.051300 +vn 1.099681 -0.225387 0.449551 +v 67.707397 13.986652 0.000000 +vn 0.059211 0.007423 0.024249 +v 67.636711 13.770425 0.101300 +vn 1.445275 0.181176 0.591899 +v 67.677536 13.775703 0.000000 +vn 0.884381 -0.044518 0.476931 +v 67.676659 13.782702 0.000000 +vn 1.189007 -0.330246 0.566002 +v 67.694336 13.922924 0.000000 +vn 0.304673 -0.084829 0.144870 +v 67.630852 13.850835 0.091300 +vn 0.473990 -0.936901 1.219050 +v 67.415405 14.332586 0.381300 +vn 0.084604 -0.839312 0.647083 +v 67.406540 14.471229 0.491301 +vn 0.377579 -0.873816 1.369295 +v 67.438042 14.926208 0.961300 +vn 0.238016 -0.317587 0.650437 +v 67.362366 15.128381 1.061300 +vn 0.441685 -0.589346 1.207015 +v 67.143738 15.005490 1.081300 +vn 0.158145 -0.472655 0.713796 +v 67.507996 14.768392 0.841300 +vn 0.148318 -0.051970 0.709219 +v 66.984787 15.223973 1.181300 +vn 0.438058 -0.004530 1.624477 +v 67.498741 15.714126 1.091300 +vn 0.288448 -0.253240 1.585085 +v 67.583984 15.193036 1.031301 +vn 0.366058 -0.283240 1.402085 +v 67.269943 15.355445 1.131300 +vn 0.057924 0.003375 0.745903 +v 68.032257 15.458277 1.031301 +vn 0.128294 0.007474 1.652072 +v 68.017395 15.713383 1.031301 +vn 0.027120 -0.025961 0.710606 +v 67.759430 15.720694 1.051300 +vn 0.079560 -0.133291 0.760721 +v 67.827934 15.224501 1.011300 +vn 0.277906 -0.149244 1.647153 +v 67.782593 15.471167 1.041300 +vn 0.125587 -0.019291 0.772242 +v 67.533073 15.448004 1.081300 +vn 0.032551 -0.327095 0.616149 +v 67.643066 14.979706 0.951301 +vn 0.078643 -0.790243 1.488580 +v 67.704727 14.816309 0.861300 +vn 0.103545 -0.344957 0.858997 +v 67.884865 14.853073 0.871301 +vn 0.167744 -0.558837 1.391593 +v 67.867554 15.022187 0.941300 +vn 0.081289 -0.473391 1.763212 +v 68.066444 15.228209 1.001300 +vn -0.689814 -1.023333 -0.398205 +v 65.148582 13.133866 0.041300 +vn -1.014706 -1.318315 -0.498190 +v 65.571640 12.755549 0.221300 +vn -0.421966 -0.505186 -0.236441 +v 65.332420 12.932118 0.241301 +vn -1.428072 -1.115757 -0.280599 +v 65.950485 12.335459 0.201301 +vn -0.593520 -0.463719 -0.116620 +v 66.008820 12.311420 0.000000 +vn -0.714095 -0.708333 -0.311936 +v 65.621429 12.789027 0.031301 +vn -0.074719 -0.075080 -0.033895 +v 65.837082 12.588542 0.000000 +vn -0.550194 -0.926766 -0.047290 +v 64.996063 13.127722 0.321301 +vn -0.912163 -1.485308 -0.094364 +v 65.349167 12.907222 0.471300 +vn -0.386115 -0.710496 0.229155 +v 65.149002 13.025701 0.541300 +vn -0.182698 -0.500387 0.548314 +v 65.301239 13.103955 0.861300 +vn -0.712733 -1.190346 0.753398 +v 65.470924 12.977038 0.801300 +vn -0.357269 -0.667389 0.401324 +v 65.396233 12.926823 0.651300 +vn -0.489376 -0.423110 0.616830 +v 65.882118 12.795595 0.881300 +vn -0.672887 -0.553268 0.508667 +v 65.977531 12.510297 0.761300 +vn -0.960818 -0.859256 0.682617 +v 65.804848 12.695447 0.751300 +vn -0.671373 -0.600406 0.476979 +v 65.760780 12.617615 0.591300 +vn -0.526622 -0.590118 0.434831 +v 65.640610 12.850121 0.761300 +vn -0.560110 -0.436396 -0.026628 +v 65.925446 12.354775 0.401300 +vn -0.596501 -0.614726 -0.031458 +v 65.557762 12.758269 0.431300 +vn -0.408873 -0.421366 -0.021563 +v 65.777657 12.556664 0.201301 +vn -1.227116 -1.308908 -0.025886 +v 65.752625 12.575979 0.411301 +vn -0.990149 -1.052707 0.330940 +v 65.585373 12.788886 0.611300 +vn -1.333442 -1.128022 0.404828 +v 65.925163 12.426886 0.601300 +vn -0.083879 -0.395970 0.609481 +v 65.562073 13.074468 0.921300 +vn -0.166787 -0.678435 1.456859 +v 65.675392 13.174759 1.021300 +vn -0.122827 -0.314346 0.755925 +v 65.799728 13.294508 1.091300 +vn -0.428745 -0.806949 1.257603 +v 65.723450 12.941972 0.891300 +vn 0.040314 -0.298042 1.174789 +v 65.969727 13.794407 1.241301 +vn 0.064786 -0.469205 1.872346 +v 65.957268 13.436573 1.151300 +vn -0.039193 -0.257682 0.691493 +v 65.759827 13.568930 1.191300 +vn -0.144140 -0.205189 0.860750 +v 66.091034 13.273460 1.121301 +vn -0.232717 -0.331281 1.389697 +v 65.947235 13.164729 1.071301 +vn -0.267349 -0.353521 1.482678 +v 66.221939 13.132523 1.111300 +vn -0.647658 -0.504627 1.251477 +v 66.024185 12.638062 0.891300 +vn -0.319570 -0.395984 0.725703 +v 65.822899 13.044980 0.991301 +vn -0.732779 -0.738534 1.279852 +v 65.967682 12.901325 0.991301 +vn -0.216876 -0.218579 0.759143 +v 66.092018 13.021072 1.061300 +vn -0.447328 -0.460051 1.529661 +v 66.231224 12.885716 1.061300 +vn 0.588199 -0.050393 1.670071 +v 66.538033 13.863196 1.101300 +vn 0.252623 -0.011063 0.706237 +v 66.307961 13.829014 1.181300 +vn 0.276773 0.087622 1.307459 +v 66.672226 13.591921 1.071301 +vn 0.089763 -0.037404 0.657234 +v 66.106644 13.537005 1.171300 +vn 0.250840 -0.104523 1.836619 +v 66.265305 13.390631 1.141300 +vn 0.311278 0.153441 0.741501 +v 66.582954 13.724700 1.081300 +vn 0.294912 0.087991 0.732162 +v 66.846634 13.673032 0.981300 +vn 0.374119 0.377060 0.833377 +v 67.293884 13.491734 0.821301 +vn 0.676547 0.499704 1.765641 +v 66.963669 13.534817 0.961300 +vn 0.171679 0.028260 1.776735 +v 66.595520 13.347547 1.101300 +vn 0.057871 0.009526 0.598914 +v 66.407372 13.233095 1.121301 +vn 0.105890 -0.020747 0.877410 +v 66.461754 13.510661 1.121301 +vn 0.151569 0.085106 0.770745 +v 66.794830 13.445402 1.051300 +vn 0.208318 0.116971 1.059321 +v 66.720848 13.214910 1.091300 +vn 0.521240 0.396777 0.423131 +v 67.281593 13.796771 0.461300 +vn 0.743904 0.307270 0.590877 +v 67.156273 13.929409 0.491301 +vn 1.073132 0.443259 0.852381 +v 67.075294 14.067769 0.521300 +vn 1.378848 0.203037 1.061942 +v 73.522438 16.522625 0.831300 +vn 0.515489 0.161279 0.215865 +v 73.666801 16.487135 0.531301 +vn 1.442235 1.087728 0.795290 +v 73.005836 17.416447 0.901300 +vn 0.379539 0.286247 0.209289 +v 73.100830 17.239313 0.971300 +vn 0.393158 0.349196 0.155529 +v 73.369957 17.215406 0.511300 +vn 1.183727 1.051368 0.468271 +v 73.122017 17.494560 0.511300 +vn 0.675536 0.600000 0.267235 +v 73.058350 17.463802 0.741301 +vn 1.298424 1.114326 0.555671 +v 73.256210 17.223280 0.761300 +vn 0.394591 0.240146 0.273626 +v 73.423874 16.902210 0.801300 +vn 0.127644 0.111075 0.003123 +v 73.433762 17.210112 0.241301 +vn 0.551261 0.297310 0.032070 +v 73.481956 17.146835 0.000000 +vn 1.637866 0.211237 0.344660 +v 73.718285 16.087950 0.531301 +vn 1.635093 0.164335 0.410272 +v 73.741768 16.465239 0.241301 +vn 1.314205 0.405640 0.334333 +v 73.548782 16.877739 0.521300 +vn 0.831999 0.226914 0.071054 +v 73.629333 16.847546 0.241301 +vn 1.397455 0.410745 0.075691 +v 73.746117 16.494909 0.000000 +vn 0.079679 0.489631 -0.020592 +v 61.756851 16.601351 0.551300 +vn 0.181551 0.689416 -0.106420 +v 61.115593 16.748610 0.411301 +vn 0.200326 0.696090 0.266219 +v 62.162041 16.536373 1.001300 +vn 0.411485 1.429826 0.546836 +v 62.353901 16.412317 1.181300 +vn 0.128687 0.363840 0.039837 +v 61.642826 16.681337 1.021300 +vn 0.147479 0.623447 -0.037685 +v 61.329205 16.735579 0.691300 +vn 0.455942 1.628148 0.035432 +v 62.039856 16.574724 0.811300 +vn 0.254717 0.710075 -0.158799 +v 61.020741 16.889688 1.061300 +vn 0.159672 0.494034 -0.090077 +v 60.776512 16.930334 0.851300 +vn 0.241691 0.674830 0.069791 +v 61.915092 16.563141 1.221300 +vn 0.582856 1.711891 0.147797 +v 61.381859 16.746880 1.291300 +vn 0.443857 1.090621 -0.144542 +v 59.801891 17.214964 0.291300 +vn 0.113072 0.371762 -0.068961 +v 60.554600 16.937786 0.511300 +vn -0.696577 0.775625 1.440451 +v 71.024918 16.867853 1.391300 +vn -0.795244 0.884177 1.632874 +v 70.710876 17.030260 1.151300 +vn -0.238278 0.264925 0.489256 +v 70.653770 16.738817 1.281301 +vn -0.183961 0.901422 1.050879 +v 71.792992 17.625259 1.071301 +vn -0.220730 0.826249 1.469796 +v 71.784233 17.028917 1.481300 +vn -0.206639 0.835206 1.523494 +v 71.403229 17.290909 1.281301 +vn -0.084012 0.339564 0.619397 +v 71.396202 16.960835 1.461300 +vn -0.169296 0.360640 0.422643 +v 71.432716 17.551735 1.071301 +vn -0.535125 1.139941 1.335923 +v 71.069870 17.428280 1.031301 +vn -0.180763 0.386570 0.454749 +v 71.043106 17.181332 1.231300 +vn -0.074029 0.120286 0.827537 +v 71.791504 16.587955 1.621301 +vn -0.144426 0.234669 1.614468 +v 71.395035 16.550348 1.591300 +vn -0.353743 0.217181 1.513156 +v 71.011429 16.063478 1.571301 +vn -0.253378 0.237218 0.657143 +v 71.015312 16.487843 1.511300 +vn -0.236488 0.099655 0.682364 +v 70.667473 16.073227 1.451301 +vn -0.253357 0.439415 0.095597 +v 70.781006 17.535316 0.561300 +vn -0.842380 1.460999 0.317849 +v 71.113098 17.722443 0.581300 +vn -0.295413 1.589105 0.399361 +v 71.822334 17.922140 0.581300 +vn -0.157136 0.845277 0.212428 +v 71.470367 17.854197 0.591300 +vn -0.381950 1.017612 0.238459 +v 71.132271 17.783535 0.351300 +vn -0.501683 1.305076 0.322494 +v 71.475662 17.918009 0.341300 +vn -0.560167 1.600404 0.108568 +v 71.143288 17.802994 0.121301 +vn -0.233419 0.570793 0.409469 +v 71.088623 17.597538 0.811300 +vn -0.249566 1.222865 0.610973 +v 71.445892 17.729292 0.831300 +vn -0.612672 1.129473 0.472763 +v 70.753670 17.432589 0.771300 +vn -0.118618 0.666257 -0.051345 +v 71.609322 17.938103 0.000000 +vn -0.094985 0.263180 -0.032676 +v 71.156479 17.792822 0.000000 +vn -0.373387 0.967700 -0.083891 +v 71.483955 17.923590 0.101300 +vn -0.557024 1.443629 -0.125149 +v 71.488647 17.916618 0.000000 +vn 0.029928 0.039864 -0.005217 +v 73.057358 17.614607 0.000000 +vn 1.023669 1.310961 -0.121968 +v 72.877296 17.750208 0.000000 +vn 0.220521 0.485054 -0.049439 +v 72.876938 17.751539 0.011300 +vn 0.012219 0.026876 -0.002739 +v 72.528198 17.908936 0.000000 +vn 0.036396 1.519389 -0.229018 +v 71.830353 17.999830 0.061300 +vn 0.003531 0.148048 -0.022214 +v 71.830406 17.990589 0.000000 +vn -0.003757 1.582934 -0.175480 +v 72.173195 17.984394 0.000000 +vn -0.001398 0.588880 -0.065282 +v 72.097649 17.984215 0.000000 +vn 0.192126 0.916526 -0.105822 +v 72.174309 17.990084 0.051300 +vn 0.123387 0.576005 0.116905 +v 72.160713 17.920692 0.581300 +vn 0.042630 1.519068 0.339740 +v 72.157707 17.978926 0.321301 +vn 0.018730 0.667429 0.149271 +v 71.827629 17.985952 0.331300 +vn 0.892787 1.170423 0.070879 +v 73.195900 17.508928 0.000000 +vn 0.507246 0.675245 0.142740 +v 73.169090 17.514160 0.251300 +vn 0.952829 1.253270 0.279094 +v 72.854767 17.748678 0.271300 +vn 0.604725 1.346470 0.294099 +v 72.493790 17.855433 0.551300 +vn 0.716106 1.524494 0.111128 +v 72.526840 17.913805 0.041300 +vn 0.227084 0.503272 0.024902 +v 72.510246 17.902647 0.301300 +vn 0.538394 0.774746 0.478939 +v 72.800240 17.507170 0.961300 +vn 0.627198 1.303983 0.802904 +v 72.802536 17.629211 0.761300 +vn 0.217878 0.452982 0.278915 +v 72.488632 17.755566 0.801300 +vn 0.335148 0.740581 0.290720 +v 72.832726 17.709763 0.521300 +vn 0.005503 1.284503 0.929210 +v 72.144539 17.801367 0.831300 +vn 0.002402 0.560705 0.405614 +v 71.806160 17.802816 0.831300 +vn 0.272669 1.235821 0.930478 +v 72.492058 17.589167 1.021300 +vn -0.011169 1.062867 1.219389 +v 72.148949 17.382582 1.281301 +vn -0.005534 0.526598 0.604147 +v 72.147964 17.634970 1.061300 +vn 0.138419 0.386564 0.704605 +v 72.512360 17.361818 1.221300 +vn 0.003507 0.381549 0.710793 +v 71.785683 17.367292 1.291300 +vn 0.395122 0.358412 0.574223 +v 72.915962 16.994520 1.251300 +vn 0.510817 0.851489 1.041611 +v 72.845444 17.296558 1.111300 +vn 0.889488 0.167462 1.169667 +v 73.357590 16.122591 1.131300 +vn 0.474324 0.089300 0.623731 +v 73.300385 16.566132 1.111300 +vn 0.865109 0.188126 1.178438 +v 72.981323 16.592617 1.341300 +vn 0.640575 0.211511 1.403152 +v 72.636490 16.119766 1.561300 +vn 0.357484 0.118037 0.783053 +v 73.027519 16.129620 1.381300 +vn 0.309424 0.092733 0.716030 +v 72.604034 16.616100 1.501300 +vn 1.018611 0.456717 1.399467 +v 73.210121 16.951298 1.051300 +vn 0.080460 0.469263 1.536695 +v 72.193550 16.617264 1.591300 +vn 0.319379 0.463609 1.526906 +v 72.557991 17.043041 1.381300 +vn 0.159444 0.231449 0.762280 +v 72.169678 17.047068 1.461300 +vn 0.146209 0.096378 0.665603 +v 72.209404 16.109776 1.661301 +vn -1.324004 2.121155 -0.467811 +v 70.655052 17.477262 0.000000 +vn -0.794186 1.181201 -0.194028 +v 70.833321 17.597122 0.000000 +vn -0.401484 0.864896 -0.190077 +v 70.227432 17.247475 0.121301 +vn -0.450441 0.765703 -0.163795 +v 70.512444 17.415003 0.121301 +vn -0.384860 0.654222 -0.139947 +v 70.414543 17.331463 0.000000 +vn -0.656862 1.559549 -0.111733 +v 69.936691 17.124302 0.111300 +vn -0.345750 0.820894 -0.058813 +v 69.900635 17.124161 0.321301 +vn -0.220370 0.454181 0.121133 +v 70.158318 17.188961 0.531301 +vn -0.843409 1.513022 0.208684 +v 70.188652 17.233456 0.331300 +vn -0.289434 0.457332 0.001956 +v 70.479248 17.392685 0.351300 +vn -0.894504 1.413399 0.006045 +v 70.783585 17.585249 0.361300 +vn -0.496097 0.783880 0.003352 +v 70.808479 17.601988 0.131300 +vn -0.334345 0.421256 0.350987 +v 70.721046 17.266050 0.971300 +vn -0.352678 0.502431 0.360843 +v 70.432747 17.228865 0.741301 +vn -0.954061 1.469396 0.655770 +v 70.451775 17.326014 0.551300 +vn -0.196114 0.648778 0.425925 +v 70.078903 16.930712 0.871301 +vn -0.704582 1.630103 0.619167 +v 69.870300 17.079664 0.491301 +vn -0.302805 0.700563 0.266097 +v 69.817932 16.996256 0.651300 +vn -0.557099 1.021355 0.533945 +v 70.122688 17.080654 0.701301 +vn -0.677566 1.297463 1.131460 +v 70.408409 17.067905 0.911301 +vn -0.415626 1.082698 1.267601 +v 70.099060 16.739418 1.041300 +vn -0.261760 0.442624 0.529105 +v 70.397957 16.904226 1.051300 +vn -0.635159 0.549369 1.529067 +v 70.671638 16.425478 1.401300 +vn -0.342538 0.436588 1.202345 +v 70.108208 16.528666 1.161301 +vn -0.174475 0.106216 0.816402 +v 70.353142 16.307743 1.311300 +vn -0.045344 1.569234 -0.678110 +v 68.160378 16.737371 0.041300 +vn -0.126198 1.273344 -0.505923 +v 68.344292 16.725096 0.000000 +vn -0.083092 0.702178 -0.165939 +v 68.346237 16.729778 0.011300 +vn -0.083072 1.023937 -0.280825 +v 68.210175 16.770849 0.201301 +vn -0.139126 0.774842 0.018015 +v 69.174797 16.913303 0.461300 +vn -0.264709 1.474266 0.034276 +v 68.989082 16.884840 0.251300 +vn -0.242212 1.640661 -0.035723 +v 68.578880 16.813896 0.431300 +vn -0.264869 1.608360 -0.379173 +v 68.568008 16.758385 0.021300 +vn -0.044152 0.268817 -0.063304 +v 68.570587 16.808317 0.231300 +vn -0.123736 0.753355 -0.177407 +v 68.814377 16.793890 0.000000 +vn -0.283318 0.792813 0.695123 +v 68.609642 16.750227 0.611300 +vn -0.260575 1.276843 0.772958 +v 68.969910 16.823750 0.611300 +vn -0.300617 1.473051 0.495447 +v 68.808952 16.848080 0.441300 +vn -0.224984 1.111722 0.952529 +v 68.332497 16.696444 0.591300 +vn -0.286807 1.172618 1.025236 +v 68.612923 16.619883 0.761300 +vn -0.167104 0.864799 1.230275 +v 67.994690 16.553671 0.701301 +vn -0.105246 0.544670 0.774855 +v 68.006554 16.356798 0.841300 +vn -0.196069 0.682163 0.893404 +v 68.580292 16.453344 0.881300 +vn -0.112559 0.391614 0.512883 +v 68.308029 16.571539 0.731300 +vn -0.281062 0.782176 1.126481 +v 68.294853 16.393982 0.851300 +vn -0.181254 0.335332 0.637976 +v 68.301277 16.169353 0.951301 +vn -0.396814 0.936403 1.180312 +v 68.943565 16.468634 0.991301 +vn -0.136267 0.039624 1.313387 +v 68.970299 16.016655 1.141300 +vn -0.154559 0.079530 0.901012 +v 68.543495 15.934552 1.071301 +vn -0.107073 0.202729 1.557093 +v 68.282814 15.927983 1.011300 +vn -0.060163 0.223335 0.855008 +v 68.010963 15.938013 0.991301 +vn -0.204078 0.216494 0.835537 +v 68.739243 16.234858 1.041300 +vn -0.298682 0.139080 1.573003 +v 68.541626 15.704342 1.091300 +vn -0.185584 0.109071 0.794357 +v 68.272644 15.692194 1.041300 +vn -0.108174 1.045949 1.012305 +v 66.921158 21.555674 1.011300 +vn -0.116218 1.423981 0.972317 +v 67.006020 21.841677 0.671300 +vn -0.044310 0.567677 0.391099 +v 66.981544 21.716772 0.851300 +vn -0.110410 1.414508 0.974521 +v 67.242233 21.723341 0.871301 +vn 0.046837 0.648218 0.448229 +v 67.291603 21.864985 0.671300 +vn 0.029359 0.617545 0.444602 +v 67.533531 21.702293 0.881300 +vn -0.358791 1.300038 1.127696 +v 66.743179 21.677010 0.821301 +vn -0.177983 0.707585 0.343895 +v 67.019470 21.947123 0.461300 +vn -0.205724 0.809394 0.390271 +v 66.742752 21.785175 0.651300 +vn -0.533064 1.209211 0.596640 +v 66.731316 21.873882 0.461300 +vn 0.096759 0.956591 0.276817 +v 67.618530 21.952244 0.451301 +vn -0.124673 1.268299 0.657634 +v 67.313354 21.976011 0.461300 +vn -0.373068 0.919441 0.239210 +v 66.717155 21.948713 0.251300 +vn -0.345219 1.447333 0.301103 +v 66.705856 22.001366 0.031301 +vn -0.578374 2.425189 0.503325 +v 66.984169 22.074251 0.000000 +vn 0.137273 1.491274 0.215059 +v 67.646011 22.018915 0.211300 +vn -0.073532 1.476563 0.334280 +v 67.013611 22.027533 0.241301 +vn -0.066233 1.786164 0.370753 +v 67.238449 22.090130 0.000000 +vn -0.013340 0.362273 0.075161 +v 67.326950 22.045401 0.231300 +vn -0.055945 1.519327 0.315216 +v 67.329460 22.093481 0.000000 +vn -0.027283 0.558048 0.047066 +v 67.016190 22.077467 0.021300 +vn 1.611609 1.147945 -0.080207 +v 68.659294 21.336243 0.000000 +vn 0.777234 0.553677 -0.038612 +v 68.772545 21.185724 0.121301 +vn 1.313387 0.935616 -0.065248 +v 68.765511 21.187140 0.000000 +vn 1.231494 0.827965 -0.000028 +v 68.534203 21.522301 0.000000 +vn 0.977088 1.096867 0.118529 +v 68.246056 21.771648 0.171300 +vn 0.682781 0.716680 0.018596 +v 68.541069 21.512093 0.141300 +vn 0.323462 0.941823 0.124371 +v 67.951469 21.923038 0.191300 +vn 0.196293 0.571545 0.075475 +v 67.697800 22.035421 0.000000 +vn 0.704448 1.354759 0.111672 +v 68.257896 21.779612 0.000000 +vn 0.451069 0.372383 0.091765 +v 68.764252 21.180143 0.391300 +vn 1.222627 0.962701 0.452587 +v 68.706161 21.141088 0.631300 +vn 0.991899 1.140935 0.414092 +v 68.513451 21.481476 0.401300 +vn 0.412104 0.535481 0.627848 +v 68.348183 21.189610 1.011300 +vn 0.734297 0.954134 1.118715 +v 68.411430 21.328533 0.851300 +vn 0.758647 0.985763 0.733330 +v 68.191109 21.638304 0.651300 +vn 0.317104 0.432292 0.298821 +v 68.144463 21.510540 0.871301 +vn 0.422108 0.329521 0.236588 +v 68.480400 21.423103 0.641300 +vn 0.137540 0.496153 0.561393 +v 67.775894 21.431438 1.061300 +vn 0.473010 1.159180 0.899712 +v 67.836136 21.628593 0.881300 +vn 0.442059 1.566304 0.390132 +v 67.926720 21.870245 0.431300 +vn 0.250530 0.525232 0.225746 +v 67.893806 21.775816 0.661301 +vn 0.268002 0.520084 0.251877 +v 68.235184 21.716135 0.421300 +vn 0.305517 1.293638 0.686344 +v 67.582901 21.843937 0.671300 +vn -0.774509 0.814591 0.241519 +v 64.187355 17.789619 0.551300 +vn -0.513327 0.463747 0.243061 +v 64.129539 17.678452 0.641300 +vn -0.961555 0.750192 -0.486846 +v 64.035683 17.567142 0.201301 +vn -0.383062 0.298860 -0.193949 +v 64.303391 17.903786 0.191300 +vn -0.955795 0.745698 -0.483930 +v 64.130623 17.558195 0.000000 +vn -1.049064 0.827497 -0.227151 +v 64.071312 17.675447 0.431300 +vn -0.060984 -0.179576 1.001397 +v 66.737488 19.588526 1.371301 +vn 0.010008 -0.237762 1.030009 +v 67.351418 19.338541 1.331300 +vn 0.012923 -0.307006 0.842308 +v 66.988144 19.323250 1.331300 +vn 0.000000 0.000000 0.720197 +v 67.386665 20.253941 1.441300 +vn 0.000000 0.000000 1.516340 +v 67.039421 20.394030 1.441300 +vn 0.000000 0.000000 0.905056 +v 66.937965 20.096865 1.441300 +vn 0.046678 -0.076085 0.628015 +v 67.136536 19.676067 1.411301 +vn 0.125234 -0.204133 1.684929 +v 67.464317 19.546997 1.371301 +vn 0.124274 -0.223266 1.543806 +v 67.263031 19.953915 1.441300 +vn 0.302565 -0.151159 0.692122 +v 68.100601 19.962744 1.291300 +vn 0.219763 -0.211280 0.589947 +v 68.243797 19.516768 1.131300 +vn 0.161056 -0.143150 0.657079 +v 67.781082 19.398466 1.261300 +vn 0.194783 -0.087775 0.817482 +v 67.607552 19.799948 1.391300 +vn 0.381189 -0.190448 1.569402 +v 67.946487 19.654280 1.291300 +vn 0.257415 -0.504354 1.148274 +v 67.549278 19.098019 1.181300 +vn 0.317733 -0.596441 1.086900 +v 68.067223 19.277552 1.111300 +vn 0.328614 -0.509530 0.961414 +v 67.890373 19.110449 1.071301 +vn -0.582645 0.008316 0.697756 +v 66.108414 20.165730 1.151300 +vn -0.464446 0.006629 0.556205 +v 65.890068 19.970728 0.971300 +vn -0.822969 0.065259 0.927589 +v 66.037575 19.840948 1.111300 +vn -0.546184 0.012713 0.868535 +v 66.228867 19.861113 1.231300 +vn -0.430915 0.172339 0.557747 +v 66.018295 20.514839 1.031301 +vn -0.885119 0.344385 1.157074 +v 66.182259 20.432276 1.181300 +vn -0.317800 0.113272 0.607521 +v 66.387848 20.341555 1.301300 +vn -0.995234 0.180878 1.273629 +v 65.941734 20.234413 1.011300 +vn -0.130971 0.044715 0.742632 +v 66.736679 20.503784 1.381300 +vn -0.268137 0.101718 1.589380 +v 66.632362 20.228798 1.381300 +vn -0.143046 0.009619 0.701598 +v 66.536346 19.959391 1.361300 +vn -0.524928 -0.120626 1.332766 +v 66.302849 20.091604 1.281301 +vn -0.397471 -0.173907 1.545140 +v 66.822495 19.838476 1.421300 +vn -1.257112 0.160411 0.635809 +v 65.600922 20.149874 0.481300 +vn -1.226501 0.424519 0.483460 +v 65.708557 20.993444 0.271300 +vn -1.316535 0.458878 0.515838 +v 65.695808 20.707722 0.491301 +vn -1.400858 0.458435 0.704285 +v 65.861504 20.891424 0.691300 +vn -1.559827 0.305601 0.532377 +v 65.582916 20.499266 0.291300 +vn -0.623107 0.131290 0.226383 +v 65.641289 20.466213 0.481300 +vn -1.065774 0.426244 1.153130 +v 66.117172 20.762070 1.031301 +vn -0.751148 0.159243 0.642629 +v 65.813828 20.317118 0.841300 +vn -1.116989 0.204747 0.988974 +v 65.879372 20.578085 0.861300 +vn -1.532399 0.310266 0.987339 +v 65.719116 20.422140 0.661301 +vn -0.690776 0.219709 0.497185 +v 65.972672 20.833614 0.871301 +vn -0.582346 0.185221 0.419143 +v 65.779221 20.655352 0.681300 +vn -0.600156 0.084546 0.272582 +v 65.683907 20.205669 0.631300 +vn -1.504849 0.211994 0.683481 +v 65.623802 19.972458 0.571301 +vn -0.545422 0.184045 0.157111 +v 65.631859 20.749075 0.291300 +vn -0.707243 0.107383 0.061099 +v 65.558357 20.665438 0.000000 +vn -0.693723 0.117422 0.073823 +v 65.587364 20.779409 0.091300 +vn -1.503474 0.254436 0.160052 +v 65.578491 20.784410 0.000000 +vn -1.475001 0.396024 0.259783 +v 65.651169 21.029087 0.000000 +vn -0.782894 0.044627 0.091017 +v 65.549438 20.549059 0.101300 +vn -2.710432 0.153339 0.318831 +v 65.524239 20.314253 0.000000 +vn 0.723339 -0.790811 -0.209845 +v 68.429291 19.137432 0.000000 +vn 0.175513 -0.192127 -0.050967 +v 68.442360 19.095970 0.201301 +vn 0.923121 -1.010504 -0.268066 +v 68.388817 19.100458 0.000000 +vn 0.680984 -0.749650 -0.192756 +v 68.680023 19.316010 0.191300 +vn 0.260248 -0.405918 0.430257 +v 68.247925 19.170094 0.911301 +vn 0.414262 -0.220381 0.561241 +v 68.636833 19.720774 0.921300 +vn 1.058059 -0.991560 0.911751 +v 68.386848 19.106846 0.681300 +vn 0.509534 -0.483558 0.434082 +v 68.607773 19.351782 0.691300 +vn 0.632076 -0.617684 0.985202 +v 68.477150 19.420609 0.921300 +vn 1.330978 -0.822508 0.031199 +v 68.682739 19.329887 0.441300 +vn 1.345608 -0.841083 0.433943 +v 68.795219 19.646509 0.681300 +vn 0.496600 -0.295599 0.174801 +v 68.861893 19.619034 0.421300 +vn 0.354815 -0.541544 0.123298 +v 68.436920 19.068214 0.441300 +vn 0.881432 -1.310996 0.000021 +v 68.204559 18.911985 0.191300 +vn 1.001877 -0.038707 1.071459 +v 68.572639 20.533163 1.071301 +vn 0.477519 -0.018449 0.510684 +v 68.515816 20.169611 1.111300 +vn 1.377903 -0.041102 0.935269 +v 68.740868 20.067871 0.911301 +vn 0.861263 0.369146 0.431764 +v 68.620308 21.107470 0.831300 +vn 0.531007 0.111971 0.510415 +v 68.772652 20.450743 0.881300 +vn 1.217781 0.230730 1.251002 +v 68.735184 20.811153 0.851300 +vn 1.486539 0.623648 0.133664 +v 68.926620 20.795261 0.381300 +vn 0.576248 0.086822 0.018814 +v 68.948799 20.798120 0.121301 +vn 0.526882 0.098540 0.046028 +v 69.003143 20.376759 0.401300 +vn 0.990222 0.410308 0.286095 +v 68.854507 20.794979 0.631300 +vn 0.563999 -0.177821 0.031963 +v 68.988098 19.968992 0.141300 +vn 0.844626 -0.261338 0.270667 +v 68.901970 20.007484 0.671300 +vn 1.486038 -0.076434 0.452306 +v 68.928177 20.398655 0.651300 +vn 1.421928 -0.091469 0.407720 +v 68.974220 19.971712 0.411301 +vn 0.594742 -0.196231 -0.119069 +v 68.875771 19.616316 0.161301 +vn 1.552105 -0.512108 -0.310736 +v 68.851440 19.640450 0.000000 +vn 0.784049 -0.258692 -0.156969 +v 68.892723 19.765570 0.000000 +vn 1.590307 -0.100915 -0.229295 +v 69.011444 20.382339 0.121301 +vn 0.328885 -0.020815 -0.047260 +v 68.993950 20.382265 0.000000 +vn 0.468655 0.189222 -0.063534 +v 68.852715 20.995369 0.000000 +vn -0.356988 0.495662 0.138748 +v 66.415115 21.878193 0.051300 +vn -0.440110 0.472714 0.144959 +v 65.942375 21.488047 0.061300 +vn -1.064071 1.143534 0.385055 +v 65.933838 21.500744 0.000000 +vn -1.514964 1.629639 0.550056 +v 65.998726 21.561123 0.000000 +vn -0.902599 0.971285 0.326756 +v 66.163437 21.696928 0.051300 +vn -1.013225 1.090329 0.366804 +v 66.156296 21.707550 0.000000 +vn -0.819945 1.265840 0.262671 +v 66.412003 21.886822 0.000000 +vn -0.310145 0.478805 0.099356 +v 66.343414 21.842394 0.000000 +vn -0.796895 0.391809 0.151965 +v 65.664062 21.023779 0.081300 +vn -0.602460 0.296211 0.114887 +v 65.696480 21.121244 0.000000 +vn -1.239742 0.869635 0.310849 +v 65.782402 21.259991 0.061300 +vn -0.178138 0.125030 0.044406 +v 65.772995 21.268492 0.000000 +vn -0.614435 0.293157 0.233727 +v 65.778091 20.943794 0.491301 +vn -0.690572 0.329483 0.262689 +v 65.824173 21.215778 0.271300 +vn -1.218913 0.855024 0.539601 +v 65.984146 21.443834 0.271300 +vn -0.478953 0.349972 0.319271 +v 66.048103 21.402481 0.481300 +vn -1.134768 0.829176 0.756438 +v 65.888130 21.174427 0.491301 +vn -0.619881 0.452948 0.413213 +v 65.977119 21.113758 0.691300 +vn -0.521748 0.795953 0.333646 +v 66.471054 21.759150 0.461300 +vn -0.771989 1.177708 0.493669 +v 66.440292 21.822821 0.261300 +vn -0.331560 0.505812 0.212025 +v 66.191330 21.655434 0.271300 +vn -0.839168 1.192250 0.584634 +v 66.244270 21.594624 0.471300 +vn -0.887739 1.314342 0.750918 +v 66.504669 21.673302 0.651300 +vn -1.185055 1.168147 1.059459 +v 66.577347 21.529364 0.931300 +vn -0.397758 0.387223 0.487839 +v 66.480766 21.404177 0.961300 +vn -0.887481 0.901692 1.046285 +v 66.383476 21.459267 0.831300 +vn -0.897273 0.866746 0.794370 +v 66.128792 21.336233 0.681300 +vn -0.332921 0.495170 0.298340 +v 66.302780 21.525515 0.671300 +vn -0.383794 0.480850 0.392663 +v 66.541008 21.601334 0.811300 +vn -0.464873 0.221799 0.519019 +v 66.227211 20.992702 1.031301 +vn -1.143796 0.594780 0.897423 +v 66.088287 21.055950 0.871301 +vn -0.475425 0.326292 0.398412 +v 66.226082 21.281145 0.851300 +vn -0.687902 0.432504 1.409193 +v 66.396614 20.937897 1.161301 +vn -0.301202 0.189374 0.617023 +v 66.283852 20.693384 1.181300 +vn -0.583211 0.940865 1.061121 +v 66.627846 21.382565 1.061300 +vn -0.220243 0.577353 0.822679 +v 66.710411 21.546526 0.961300 +vn -0.148491 0.469897 0.647846 +v 66.830437 21.350077 1.131300 +vn -0.603855 0.677414 1.151569 +v 66.351128 21.220617 1.001300 +vn -0.364315 0.408694 0.694759 +v 66.512230 21.160231 1.121301 +vn -0.025715 0.452727 0.775840 +v 67.170830 21.542782 1.051300 +vn -0.162784 0.614149 1.252885 +v 67.082970 21.315010 1.181300 +vn -0.358938 0.276912 1.505266 +v 66.483871 20.610962 1.301300 +vn -0.304152 0.279409 1.439150 +v 66.857597 20.789930 1.351300 +vn -0.179201 0.164623 0.847922 +v 66.599342 20.869352 1.281301 +vn -0.285140 0.470409 1.662543 +v 66.720398 21.119444 1.231300 +vn -0.053612 0.208943 0.790549 +v 67.163055 20.694054 1.401300 +vn -0.096067 0.374403 1.416577 +v 67.278389 20.988499 1.331300 +vn -0.068865 0.212332 0.827858 +v 66.975792 21.062199 1.291300 +vn 0.057709 0.168549 1.531911 +v 67.507439 20.576141 1.401300 +vn 0.120271 0.102710 0.776514 +v 67.862976 20.441631 1.351300 +vn 0.249127 0.097296 1.521369 +v 67.747780 20.111132 1.391300 +vn 0.237153 0.796486 1.418856 +v 67.459412 21.507856 1.071301 +vn 0.290593 0.728642 1.448004 +v 68.086937 21.327263 1.051300 +vn 0.166500 0.241725 0.816113 +v 68.029694 21.071875 1.191300 +vn 0.260857 0.498917 1.437185 +v 67.699188 21.187067 1.211300 +vn 0.089291 0.272233 0.745483 +v 67.611610 20.887184 1.331300 +vn 0.092486 0.281975 0.772160 +v 67.382706 21.263487 1.221300 +vn 0.810324 0.515880 2.046720 +v 68.531746 21.059973 0.971300 +vn 0.456205 0.125301 0.786733 +v 68.563065 20.852081 1.011300 +vn 0.712718 0.195754 1.229094 +v 68.329712 20.948240 1.131300 +vn 0.556728 0.377681 1.485655 +v 67.958710 20.783150 1.291300 +vn 0.655471 -0.146389 1.343772 +v 68.397903 19.825232 1.131300 +vn 0.246258 0.081547 0.815435 +v 68.292068 20.645779 1.201301 +vn 0.743072 0.070204 1.475901 +v 68.204636 20.309841 1.261300 +vn -0.039585 -0.223940 1.112033 +v 66.762352 18.906338 1.221300 +vn 0.075877 -0.311510 0.926305 +v 66.925323 19.076160 1.261300 +vn 0.066769 -0.250984 0.826019 +v 67.208183 19.085588 1.241301 +vn 0.283449 -0.534923 0.732350 +v 67.680328 18.921026 1.001300 +vn 0.378286 -0.478775 0.760476 +v 67.209740 18.688982 1.051300 +vn 0.273909 -0.434456 0.913509 +v 67.073112 18.874271 1.181300 +vn 0.283460 -0.528840 0.733978 +v 67.372574 18.894859 1.101300 +vn 0.542619 -0.578063 0.538764 +v 67.321327 18.523008 0.891300 +vn 0.394710 -0.568248 0.553968 +v 67.498039 18.726166 0.931300 +vn 0.286452 -0.537514 0.278226 +v 68.110275 18.908842 0.681300 +vn 0.623022 -0.828677 0.468098 +v 67.777901 18.793827 0.801300 +vn 0.453217 -0.602821 0.340518 +v 67.579010 18.587809 0.701301 +vn 0.690257 -1.160937 0.799157 +v 67.954750 18.960930 0.891300 +vn 0.454247 -0.654465 -0.074723 +v 68.038582 18.800396 0.411301 +vn 0.780395 -1.241099 0.284115 +v 67.825394 18.705261 0.581300 +vn 0.825578 -1.140369 -0.342098 +v 67.712074 18.604969 0.141300 +vn 0.589841 -0.814746 -0.244415 +v 67.724289 18.656200 0.000000 +vn 0.806576 -1.322762 -0.276843 +v 68.043320 18.853704 0.000000 +vn 0.098594 -0.161784 -0.033912 +v 67.886353 18.722139 0.171300 +vn -1.710722 0.571494 -0.007992 +v 65.465134 19.811071 0.000000 +vn -1.023299 0.168783 0.118829 +v 65.550705 20.224562 0.271300 +vn -1.301024 0.214591 0.151079 +v 65.507782 20.155333 0.000000 +vn -1.002517 0.127694 0.257536 +v 65.477287 19.849848 0.171300 +vn -1.079285 0.326592 0.231147 +v 65.546394 19.908363 0.411301 +vn -1.284220 0.355740 0.542005 +v 65.555542 19.697611 0.571301 +vn -0.996422 0.147400 0.834113 +v 65.693481 19.886751 0.751300 +vn -0.434416 -0.001698 0.602432 +v 66.094215 19.541630 1.151300 +vn -0.610275 0.068276 0.706287 +v 65.927254 19.682426 1.031301 +vn -0.417797 -0.043275 0.997803 +v 66.401978 19.567797 1.281301 +vn -0.221416 -0.148866 1.143445 +v 66.270187 19.226137 1.211300 +vn -0.187625 -0.126147 0.968942 +v 66.630737 19.227551 1.281301 +vn 0.352179 0.027556 1.068584 +v 66.398903 18.228174 1.191300 +vn 0.263879 0.020647 0.800666 +v 66.242073 17.905832 1.251300 +vn 0.269403 -0.167417 1.313696 +v 66.675903 18.318012 1.121301 +vn 0.200353 -0.124507 0.976984 +v 66.791664 18.504292 1.121301 +vn 0.434153 -0.058479 1.642962 +v 66.618233 18.170790 1.131300 +vn 0.302291 -0.066500 1.110870 +v 66.494919 18.497583 1.181300 +vn 0.430063 -0.236589 0.635700 +v 66.793076 18.143740 1.051300 +vn 0.540428 -0.297303 0.798836 +v 67.039742 18.189081 0.901300 +vn 0.294015 -0.182712 0.751301 +v 66.947609 18.344038 1.021300 +vn 0.302742 -0.045758 0.677127 +v 66.569008 17.993092 1.141300 +vn 0.737285 -0.231420 1.448207 +v 66.760445 17.977200 1.041300 +vn 0.449273 -0.125294 0.620620 +v 66.910240 17.969467 0.931300 +vn 0.715439 -0.418095 0.659637 +v 67.035568 17.836828 0.711300 +vn 0.765906 -0.348036 0.758416 +v 67.106834 18.053442 0.771300 +vn 0.904847 -0.522373 0.425408 +v 67.217155 18.211964 0.731300 +vn 1.100814 -0.686860 0.043866 +v 67.272949 18.128979 0.291300 +vn 0.669459 -0.271613 -0.388824 +v 67.057465 17.911798 0.031301 +vn 0.216440 -0.111625 -0.133846 +v 67.099564 18.030960 0.000000 +vn 1.008802 -0.599766 -0.587527 +v 67.128563 18.079737 0.000000 +vn -0.758697 0.519954 -0.136462 +v 65.042862 18.882963 0.091300 +vn -1.414895 0.969664 -0.254487 +v 65.045441 18.862764 0.000000 +vn -1.106438 0.595464 -0.366450 +v 64.907112 18.642515 0.000000 +vn -1.106021 0.734996 -0.048646 +v 64.899483 18.666063 0.061300 +vn -1.168316 0.906702 0.073539 +v 64.811203 18.546457 0.261300 +vn -0.679565 0.545149 0.287266 +v 64.932678 18.688383 0.441300 +vn -1.178687 0.956731 0.489633 +v 64.720200 18.412975 0.461300 +vn -0.587688 0.477022 0.244129 +v 64.657097 18.237995 0.651300 +vn -0.545582 0.379171 0.406008 +v 65.283943 18.936602 0.751300 +vn -0.992346 0.782584 0.835111 +v 65.107521 18.661335 0.771300 +vn -1.001778 0.829234 0.810189 +v 64.897186 18.544020 0.631300 +vn -0.583255 0.417360 0.599365 +v 65.138702 18.489498 0.921300 +vn -0.383971 0.333535 0.461910 +v 64.892319 18.372044 0.801300 +vn -0.428314 0.361477 1.120025 +v 65.387939 18.584772 1.031301 +vn -0.070291 0.079419 1.030257 +v 66.291618 18.710348 1.201301 +vn -0.044756 0.099812 1.023555 +v 66.164986 18.468555 1.211300 +vn -0.053042 0.118291 1.213053 +v 65.978279 18.692478 1.181300 +vn -0.238321 0.214074 1.038568 +v 65.815735 18.414492 1.201301 +vn 0.681083 -0.022290 0.347077 +v 66.874290 17.234343 0.571301 +vn 0.770181 0.199159 0.799492 +v 66.971581 17.179253 0.491301 +vn 1.385906 0.617386 0.593019 +v 66.908478 17.004274 0.651300 +vn 1.538477 0.385958 0.220085 +v 66.835800 17.148212 0.641300 +vn 0.884341 0.451077 0.879715 +v 67.032959 17.087967 0.481300 +vn 0.411930 0.217369 0.544086 +v 66.902611 17.084682 0.581300 +vn 0.679693 1.449532 0.488104 +v 67.042107 16.877216 0.631300 +vn 0.538760 0.548744 0.577838 +v 67.002907 16.971361 0.571301 +vn 0.595925 0.490665 0.096034 +v 66.958694 16.929585 0.721300 +vn 0.513337 0.422666 0.082725 +v 66.841667 17.067802 0.741301 +vn 0.895802 1.661852 -0.146333 +v 67.490784 16.858349 0.000000 +vn 0.525387 0.975221 -0.085485 +v 67.558174 16.826540 0.051300 +vn 0.674145 1.251345 -0.109689 +v 67.562920 16.819487 0.000000 +vn 0.327316 0.556834 -0.023350 +v 67.466469 16.873331 0.021300 +vn 0.655126 1.114508 -0.046736 +v 67.471306 16.869595 0.000000 +vn 0.608527 1.035232 -0.043411 +v 67.458969 16.876846 0.000000 +vn 0.722650 0.725109 0.688983 +v 67.244415 16.916838 0.391300 +vn 0.505838 0.446148 0.241983 +v 67.216232 17.030441 0.301300 +vn 1.078503 0.951236 0.515936 +v 67.285629 17.016846 0.181300 +vn 0.633352 0.558614 0.302984 +v 67.224251 17.108131 0.141300 +vn 0.948427 0.543769 0.311566 +v 67.143562 17.174379 0.271300 +vn 0.623451 0.719059 -0.067333 +v 67.350388 16.965075 0.000000 +vn 0.574474 0.513451 -0.016247 +v 67.330124 16.986511 0.041300 +vn 1.970223 1.761433 -0.054041 +v 67.278885 17.042557 0.000000 +vn 1.036833 0.684853 -0.061070 +v 67.166954 17.182276 0.000000 +vn 1.465425 0.967831 -0.086376 +v 67.203659 17.126699 0.000000 +vn 0.447687 0.592777 0.019381 +v 67.522118 16.826399 0.171300 +vn 0.366844 0.564542 0.137668 +v 67.347000 16.925560 0.231300 +vn 0.955345 1.136694 0.080267 +v 67.421974 16.903666 0.121301 +vn 0.639247 0.343299 0.413804 +v 67.073746 17.296141 0.291300 +vn 1.441078 0.539473 0.940913 +v 67.015228 17.365250 0.341300 +vn 0.236613 0.122109 -0.067159 +v 67.054001 17.379269 0.051300 +vn 0.797087 0.443734 -0.042520 +v 66.989769 17.492733 0.031301 +vn 0.602041 0.404802 -0.000022 +v 67.026108 17.420763 0.241301 +vn 1.543770 1.038004 -0.000057 +v 67.076324 17.346075 0.181300 +vn 0.825991 0.261311 0.106783 +v 66.997925 17.534367 0.181300 +vn 1.181485 0.287834 -0.009980 +v 67.017670 17.451239 0.121301 +vn 1.124721 0.524448 -0.244444 +v 67.056465 17.350073 0.000000 +vn 0.983906 0.552253 -0.267033 +v 67.032158 17.393379 0.000000 +vn 0.677678 0.370677 0.108956 +v 67.123817 17.257507 0.111300 +vn 0.969889 0.211127 -0.286092 +v 66.965378 17.562368 0.000000 +vn 2.244148 0.487137 -0.665017 +v 66.973503 17.524937 0.000000 +vn 0.727885 0.385454 0.689786 +v 67.122086 16.991243 0.441300 +vn 0.352770 0.497659 0.418311 +v 67.391922 16.787060 0.421300 +vn 0.574658 0.959762 0.367261 +v 67.153130 16.855463 0.541300 +vn 0.533285 1.019588 0.480011 +v 67.281174 16.736704 0.651300 +vn 0.187683 0.187144 1.464654 +v 67.755722 15.959201 1.021300 +vn 0.181081 0.054806 0.622185 +v 67.202003 15.707416 1.171300 +vn 0.490519 0.412832 1.587802 +v 67.499626 16.196722 1.011300 +vn 0.238874 0.201042 0.840124 +v 67.252533 16.259544 1.071301 +vn 0.202526 0.170451 0.712287 +v 67.492172 15.974810 1.071301 +vn 0.376181 0.127490 1.432469 +v 67.211891 16.015316 1.141300 +vn 0.445753 0.489962 0.736848 +v 67.312355 16.564867 0.881300 +vn 0.310349 0.472714 0.618190 +v 67.498917 16.376997 0.931300 +vn 0.506316 0.818363 1.185729 +v 67.293465 16.431664 0.981300 +vn 0.421767 0.354099 0.789296 +v 67.118347 16.530825 1.021300 +vn 0.641263 0.538379 1.200060 +v 67.038498 16.380741 1.131300 +vn 0.068266 0.283644 0.589547 +v 67.746574 16.169952 0.961300 +vn 0.164317 0.682734 1.419043 +v 68.012840 16.168222 0.931300 +vn 0.221737 0.622155 1.449118 +v 67.740288 16.358528 0.881300 +vn 0.201554 0.573346 0.761202 +v 67.706390 16.516485 0.771300 +vn -0.979222 0.606642 -0.247807 +v 64.601860 18.176760 0.021300 +vn -0.547163 0.352754 -0.266905 +v 64.623901 18.194832 0.000000 +vn -0.693165 0.379194 -0.328093 +v 64.742378 18.415834 0.051300 +vn -0.748363 0.612903 -0.413856 +v 64.441963 17.943811 0.000000 +vn -0.883555 0.775013 -0.306799 +v 64.596001 18.257170 0.241301 +vn -1.582913 1.168913 -0.901094 +v 64.600319 18.158253 0.000000 +vn -0.518070 0.491473 0.582652 +v 64.915207 18.194632 0.971300 +vn -0.939026 0.861304 0.773092 +v 64.347748 17.909506 0.661301 +vn -0.849546 0.750845 1.063787 +v 64.619026 18.043699 0.841300 +vn -0.705521 0.680399 0.951191 +v 64.658791 17.805334 1.041300 +vn -0.922791 0.873071 0.297380 +v 64.264618 17.889765 0.461300 +vn -0.542958 0.439824 0.224728 +v 64.466225 18.109665 0.441300 +vn -0.073020 0.203828 0.970093 +v 66.005295 18.168390 1.251300 +vn -0.208910 0.247137 0.933031 +v 65.488663 18.363289 1.141300 +vn -0.243009 0.287476 1.085325 +v 65.298218 18.126793 1.161301 +vn -0.211734 0.306874 1.307076 +v 65.216072 17.854666 1.231300 +vn -0.151680 0.230294 0.717281 +v 65.581360 18.064110 1.241301 +vn -0.313695 0.309752 0.697681 +v 65.015778 18.009197 1.111300 +vn -0.251706 0.315263 0.920832 +v 64.903305 17.692577 1.201301 +vn -0.330802 0.414332 1.210196 +v 65.117340 17.571381 1.301300 +vn -0.381389 0.397278 1.066026 +v 65.203217 18.303925 1.061300 +vn 0.433151 -0.022355 0.711332 +v 66.716797 17.791203 1.051300 +vn 0.154686 0.151224 1.093303 +v 65.865349 17.785097 1.321301 +vn 0.651481 0.257404 0.658209 +v 66.973877 17.301296 0.441300 +vn 0.783435 0.378469 0.738264 +v 67.121666 17.099409 0.381300 +vn 0.555461 0.309830 0.581018 +v 67.054710 17.198994 0.401300 +vn -0.704213 -0.753647 -0.290067 +v 64.289299 13.712940 0.211300 +vn -1.564390 -1.675802 -0.643253 +v 64.498360 13.598886 0.000000 +vn -0.135114 -0.688996 -0.372068 +v 63.927753 13.963915 0.051300 +vn -0.062210 -0.317113 -0.171315 +v 64.081757 13.961417 0.000000 +vn -0.629368 -0.883874 -0.365692 +v 64.113892 13.884212 0.131300 +vn -0.494187 -0.694028 -0.287145 +v 64.229294 13.856362 0.000000 +vn -0.248562 -0.641328 -0.084069 +v 64.206024 13.729256 0.491301 +vn -0.449446 -1.736126 -0.618326 +v 64.136353 13.814961 0.301300 +vn -0.490313 -0.479122 -0.117906 +v 64.523354 13.436505 0.361300 +vn -0.452885 -0.419034 0.612927 +v 64.655006 13.814219 1.281301 +vn -0.291231 -0.669683 0.234417 +v 64.053223 13.795221 0.751300 +vn -1.216304 -1.323226 0.060776 +v 64.250519 13.698920 0.721300 +vn -0.276575 -0.580225 0.630596 +v 64.471443 13.943855 1.251300 +vn -0.828745 -0.863580 1.176856 +v 64.391457 13.829829 1.111300 +vn -0.459356 -0.440198 0.436051 +v 64.316910 13.743557 0.931300 +vn -0.234798 -0.572989 0.442722 +v 64.199600 13.953885 1.141300 +vn -1.103687 0.654929 0.424517 +v 63.732052 17.194300 0.361300 +vn -0.965574 0.226594 0.700830 +v 63.996021 17.070526 0.911301 +vn -0.557586 0.608986 0.524213 +v 63.590935 16.400520 0.811300 +vn -0.706009 0.138336 0.508715 +v 63.895267 16.593086 0.911301 +vn -1.064261 0.208532 0.766854 +v 63.994007 16.876371 0.971300 +vn -0.682223 0.194719 0.598713 +v 63.827469 16.909002 0.731300 +vn -0.332504 0.935581 0.805322 +v 63.329544 16.574228 0.481300 +vn -0.500597 0.216201 0.501420 +v 63.635891 16.960949 0.471300 +vn -0.650364 0.333899 0.754611 +v 63.645035 16.750196 0.571301 +vn -0.270368 0.410820 0.353702 +v 63.689957 16.611696 0.671300 +vn -0.863108 1.311477 1.129138 +v 63.570629 16.627871 0.561300 +vn -0.358639 0.643147 -0.271021 +v 63.307652 16.499258 0.031301 +vn -0.179707 0.322269 -0.135804 +v 63.459747 16.613569 0.101300 +vn -0.766128 1.373735 -0.578820 +v 63.467945 16.575459 0.000000 +vn -0.960299 -1.330160 -0.456029 +v 64.776443 13.257217 0.351300 +vn -0.821902 -1.090885 -0.413184 +v 64.635475 13.488876 0.000000 +vn -0.803269 -1.065585 -0.403735 +v 64.535355 13.564350 0.000000 +vn -0.178719 -0.998644 0.987718 +v 65.119835 13.391691 1.091300 +vn -0.494947 -0.603646 0.234983 +v 64.645401 13.434210 0.921300 +vn -0.919471 -1.121403 0.436532 +v 64.478432 13.575006 0.931300 +vn -0.585018 -0.779215 0.247937 +v 64.439804 13.524930 0.721300 +vn -0.445302 -1.020999 0.977047 +v 64.703346 13.509321 1.071301 +vn -0.357790 -0.668939 0.476052 +v 64.859573 13.276958 0.861300 +vn -0.367359 -0.690524 0.487684 +v 64.834114 13.404440 1.021300 +vn -0.397251 -0.502291 0.439151 +v 64.561279 13.666857 1.111300 +vn -0.524758 0.432250 0.525796 +v 64.337440 17.709776 0.871301 +vn -1.039821 0.856515 1.041878 +v 64.223686 17.717648 0.751300 +vn -0.992411 0.849452 0.909053 +v 64.202362 17.498457 0.921300 +vn -0.973325 0.486087 0.769614 +v 64.119934 17.298441 0.951301 +vn -0.629349 0.314302 0.497630 +v 64.113510 17.523071 0.801300 +vn -0.406941 0.209029 0.425912 +v 64.129219 17.051634 1.081300 +vn -0.925648 0.518914 0.152751 +v 63.963989 17.458693 0.601300 +vn -0.974425 0.487849 0.538308 +v 63.950958 17.245081 0.771300 +vn -0.810821 0.405940 0.447928 +v 63.812458 17.200163 0.561300 +vn -0.699687 0.468871 -0.112399 +v 63.894882 17.400179 0.381300 +vn 0.069195 -0.737525 -0.217896 +v 63.908722 13.866767 0.321301 +vn 0.080324 -0.856134 -0.252938 +v 63.775940 13.777494 0.581300 +vn 0.219711 -0.742649 -0.305585 +v 63.523556 13.776506 0.291300 +vn 0.008380 -0.027958 -0.011418 +v 63.044243 13.647047 0.261300 +vn 0.227059 -0.757491 -0.309348 +v 63.251408 13.815856 0.000000 +vn 0.206275 -1.031775 1.330245 +v 64.008018 14.005833 1.211300 +vn 0.273095 -0.745135 0.543267 +v 63.592804 13.798965 1.091300 +vn 0.075257 -0.500966 0.333859 +v 63.914299 13.858468 1.011300 +vn 0.117060 -0.492968 0.830227 +v 64.087585 14.228025 1.371301 +vn 0.252199 -0.644013 0.768923 +v 63.833183 14.032883 1.291300 +vn 0.216442 -1.665604 -0.179351 +v 63.983833 13.808817 0.541300 +vn -0.035066 -1.513286 0.349380 +v 64.119614 13.839858 0.951301 +vn 0.201928 -1.365811 0.440136 +v 63.848049 13.777778 0.791300 +vn 0.224156 -0.844260 -0.022704 +v 63.651318 13.729856 0.821301 +vn 0.337139 -0.847511 1.364498 +v 63.893288 14.266093 1.421300 +vn 0.206124 -0.437481 0.723729 +v 63.718452 14.293145 1.481300 +vn 0.228892 -0.485804 0.803669 +v 63.525566 13.970661 1.341300 +vn -0.055995 0.539242 0.316841 +v 63.449009 16.522001 0.591300 +vn -0.094364 0.958586 0.535673 +v 63.182747 16.523731 0.541300 +vn -0.100193 1.017806 0.568766 +v 63.249699 16.424147 0.731300 +vn 0.076374 0.696973 0.144643 +v 62.949959 16.475670 0.641300 +vn 0.202406 1.847110 0.383331 +v 63.036087 16.437178 0.781301 +vn -0.077405 1.034894 0.743775 +v 63.377605 16.341442 0.871301 +vn 0.170073 0.925600 0.485361 +v 63.147396 16.343313 0.921300 +vn 0.159671 0.924652 0.213519 +v 62.420147 16.493008 0.811300 +vn 0.235117 1.361555 0.314408 +v 62.559071 16.429762 0.981300 +vn 0.301004 2.020725 0.586804 +v 62.872692 16.375521 0.951301 +vn 0.085464 1.840377 0.073762 +v 62.281364 16.520201 0.651300 +vn 0.014383 0.589984 0.153364 +v 62.742065 16.444345 0.781301 +vn 1.276662 -0.002885 0.543194 +v 66.911049 14.222443 0.691300 +vn 0.928292 0.065662 0.594292 +v 66.864120 14.166788 0.801300 +vn 1.479031 0.271421 0.768418 +v 66.908897 14.064344 0.751300 +vn 0.972684 0.452377 0.680966 +v 66.915321 13.839714 0.871301 +vn 0.229864 -0.732392 0.527808 +v 67.217682 14.537051 0.631300 +vn 0.504209 -1.270321 0.929055 +v 67.203522 14.611880 0.741301 +vn 0.294597 -1.288620 0.894789 +v 67.319565 14.726051 0.851300 +vn 0.873402 -1.299066 -0.131261 +v 68.031380 14.366311 0.000000 +vn 0.233990 -1.324670 -0.471422 +v 68.171165 14.409321 0.000000 +vn 0.038045 -0.215379 -0.076649 +v 68.314346 14.434612 0.000000 +vn 0.258617 -0.550393 0.227320 +v 68.033783 14.362743 0.051300 +vn 0.031677 -0.684196 0.355463 +v 67.709000 14.433580 0.381300 +vn 0.024696 -1.079975 0.221343 +v 68.183441 14.391065 0.181300 +vn 0.200469 -1.554163 0.550633 +v 68.006020 14.368179 0.181300 +vn 0.051125 -0.991784 0.539340 +v 67.986420 14.415253 0.321301 +vn -0.028317 -0.904633 1.056462 +v 68.134811 14.768072 0.821301 +vn -0.022885 -0.731114 0.853820 +v 68.002037 14.678802 0.741301 +vn -0.087636 -0.719601 0.582069 +v 67.924911 14.542596 0.561300 +vn 0.407823 -1.675680 -0.107892 +v 68.177856 14.399364 0.031301 +vn 0.042451 -0.174778 -0.011710 +v 68.344650 14.441973 0.000000 +vn 0.404214 0.168307 0.312258 +v 67.550720 13.772863 0.211300 +vn 0.563182 0.359347 0.087982 +v 67.726265 13.565536 0.231300 +vn 0.843524 0.538225 0.131777 +v 67.675911 13.676281 0.101300 +vn 1.298663 1.377043 0.764454 +v 67.614960 13.659403 0.251300 +vn 0.417099 0.544738 0.358937 +v 67.512367 13.650679 0.441300 +vn 0.597292 0.738025 0.587945 +v 67.527100 13.431627 0.701301 +vn 0.812836 0.230267 0.246986 +v 67.680634 13.768266 0.000000 +vn 0.998721 0.654196 0.078679 +v 67.737282 13.584995 0.081300 +vn 1.364785 1.017629 -0.290402 +v 67.802185 13.491866 0.000000 +vn 0.741763 0.553114 -0.157560 +v 67.879494 13.391409 0.011300 +vn 0.295550 0.234245 0.027016 +v 67.801376 13.507590 0.051300 +vn 0.745158 0.368060 -0.101069 +v 67.775154 13.546592 0.000000 +vn 0.187135 -0.714612 0.500507 +v 67.344879 14.634625 0.711300 +vn 0.005641 -0.790139 0.671070 +v 67.602982 14.591256 0.621301 +vn 0.007237 -1.013640 0.860891 +v 67.768967 14.702850 0.751300 +vn 0.600067 0.473901 0.384870 +v 66.995308 13.953739 0.681300 +vn 0.780441 0.616351 0.500558 +v 67.151115 13.829543 0.591300 +vn 0.525958 0.770745 0.438881 +v 67.254128 13.730100 0.611300 +vn 0.720233 0.566210 0.826108 +v 66.987862 13.731830 0.871301 +vn 0.368428 0.345092 0.511765 +v 67.102028 13.615788 0.851300 +vn 0.549998 0.515161 0.763974 +v 67.090302 13.776607 0.751300 +vn 1.150729 1.250560 0.931144 +v 67.190453 13.699342 0.731300 +vn 0.686736 0.803688 0.667723 +v 67.315643 13.602761 0.701301 +vn 0.380270 0.523383 0.371821 +v 67.034370 16.727415 0.941300 +vn 0.943756 0.934514 0.677169 +v 66.936943 16.818560 0.951301 +vn 0.846790 0.913035 0.713057 +v 67.073006 16.777491 0.831300 +vn 0.388908 0.547424 0.293150 +v 67.181450 16.705803 0.821301 +vn 0.953964 0.488299 0.333521 +v 66.878143 16.959780 0.831300 +vn 0.669050 0.662044 0.308202 +v 66.972855 16.854755 0.851300 +vn 0.743771 -0.159335 0.301911 +v 66.848694 17.397881 0.691300 +vn 0.997636 -0.213720 0.404960 +v 66.807762 17.225761 0.701301 +vn 1.104600 0.342289 0.348159 +v 66.780426 17.123034 0.881300 +vn 1.328770 0.457075 0.633659 +v 66.786430 17.006569 0.981300 +vn 0.903300 0.433579 0.342514 +v 66.814049 17.037186 0.901300 +vn 1.127188 0.302061 0.306627 +v 66.780144 17.195145 0.811300 +vn 0.749391 -0.196788 0.397394 +v 66.784172 17.583454 0.951301 +vn 1.069277 -0.271857 0.400319 +v 66.779724 17.303310 0.811300 +vn 0.802360 0.003113 0.303435 +v 66.738373 17.239357 0.921300 +vn 1.309246 -0.093151 0.793643 +v 66.757408 17.336506 0.901300 +vn 0.329710 0.638591 -0.160201 +v 67.685944 16.779892 0.051300 +vn 0.715099 1.385022 -0.347456 +v 67.679474 16.770363 0.000000 +vn 0.361931 0.700996 -0.175857 +v 67.636086 16.792765 0.000000 +vn -0.157993 1.758437 -0.723359 +v 68.146309 16.719118 0.000000 +vn 0.207918 1.488414 -0.422126 +v 67.846901 16.755560 0.061300 +vn 0.158690 1.136008 -0.322181 +v 67.853539 16.737247 0.000000 +vn 0.171030 1.124771 -0.331749 +v 68.002281 16.739527 0.081300 +vn 0.298942 0.963808 0.401659 +v 67.630569 16.754713 0.321301 +vn 0.022260 0.880432 0.322048 +v 67.594795 16.682461 0.521300 +vn 0.164852 1.581539 0.058436 +v 67.663765 16.777031 0.191300 +vn -0.078910 1.531126 0.131473 +v 68.013298 16.758986 0.221300 +vn -0.105350 1.117297 0.232601 +v 67.802689 16.713783 0.421300 +vn -0.002699 0.689369 -0.095604 +v 67.833023 16.758280 0.221300 +vn -0.025128 0.596936 0.243741 +v 68.032753 16.747967 0.361300 +vn -0.198825 1.191888 0.500030 +v 68.105148 16.676138 0.561300 +vn -0.118597 0.710949 0.298263 +v 68.332214 16.768555 0.431300 +vn -0.091441 1.285682 0.494845 +v 67.935890 16.694891 0.481300 +vn 1.261193 -0.145951 -0.245707 +v 67.016960 17.631516 0.221300 +vn 1.884031 -0.258939 0.027833 +v 66.992485 17.506611 0.291300 +vn 0.722366 -0.248645 -0.163504 +v 67.058174 17.731524 0.251300 +vn 0.974660 -0.308639 0.360189 +v 66.893188 17.367546 0.541300 +vn 0.813359 -0.435504 0.132375 +v 67.005943 17.612057 0.361300 +vn 0.814793 -0.147769 0.065942 +v 66.973312 17.445518 0.391300 +vn 1.020440 -0.606323 0.306212 +v 67.093948 17.803774 0.451301 +vn 1.227635 -0.528707 0.342869 +v 67.002945 17.670288 0.571301 +vn 0.672928 -0.323514 0.251968 +v 66.903358 17.603334 0.751300 +vn 0.891445 -0.418559 -0.017249 +v 67.146172 17.923241 0.251300 +vn 1.289854 -0.020637 -0.398547 +v 66.981186 17.559263 0.051300 +vn 1.103315 -0.017653 -0.340909 +v 66.965866 17.592463 0.000000 +vn 0.698718 -0.171783 -0.280314 +v 66.991920 17.650831 0.081300 +vn 1.211700 -0.586916 -0.640480 +v 67.030853 17.891016 0.000000 +vn 0.583304 -0.078087 -0.274028 +v 67.027412 17.795193 0.081300 +vn 0.414080 1.417885 0.643034 +v 67.433838 16.706791 0.571301 +vn 0.260709 1.244291 0.966936 +v 67.498352 16.521219 0.821301 +vn 0.330291 1.423803 0.997306 +v 67.639435 16.616072 0.651300 +vn 0.094594 1.009674 0.512908 +v 67.822426 16.630655 0.581300 +vn 0.730665 1.007529 0.772493 +v 67.309212 16.659153 0.761300 +vn 0.510254 0.763158 0.438039 +v 67.089462 16.824705 0.721300 +vn 0.244111 0.526179 0.308739 +v 67.467453 16.620945 0.701301 +vn 1.333415 -0.542546 0.505249 +v 66.837959 17.306311 0.621301 +vn 0.983459 -0.354358 0.317400 +v 66.936974 17.517487 0.551300 +vn 1.021896 -0.393012 0.414741 +v 66.798615 17.436512 0.851300 +vn 0.959709 -0.312736 0.540833 +v 66.877754 17.766872 0.891300 +vn -0.068359 -0.696809 -0.131482 +v 69.751495 14.539770 0.000000 +vn 0.003475 -0.830437 -0.230170 +v 69.611023 14.541245 0.000000 +vn -0.115050 -0.530088 0.412354 +v 69.834846 14.802467 0.891300 +vn -0.095478 -0.713570 0.664083 +v 69.680031 14.674278 0.731300 +vn -0.235013 -1.435839 0.805138 +v 70.110115 14.626039 0.741301 +vn -0.183108 -1.475874 0.755612 +v 69.888489 14.561379 0.561300 +vn -0.155285 -1.547665 -0.056544 +v 69.891487 14.503148 0.121301 +vn 0.024460 -0.762301 0.256121 +v 69.677872 14.516178 0.351300 +vn 0.028587 -0.730211 0.742108 +v 69.396599 14.809070 0.851300 +vn 0.041371 -1.224189 0.825868 +v 69.105865 14.685896 0.741301 +vn 0.026406 -0.781374 0.527134 +v 68.967789 14.532812 0.521300 +vn 0.020202 -0.597774 0.403273 +v 69.416908 14.581721 0.571301 +vn 0.038408 -1.429716 0.946391 +v 69.394310 14.687025 0.731300 +vn -0.172933 -0.230185 0.960874 +v 69.755318 15.279199 1.161301 +vn -0.133394 -0.216938 0.850697 +v 69.493362 15.597128 1.201301 +vn -0.215840 -0.097725 1.471283 +v 69.453598 15.835496 1.211300 +vn -0.230424 -0.827372 1.129026 +v 70.017136 14.997327 1.071301 +vn -0.010773 -0.817005 1.405610 +v 69.105301 14.830115 0.861300 +vn -0.063042 -0.449517 0.624647 +v 69.110176 15.002094 0.961300 +vn -0.091363 -0.347324 0.798040 +v 69.553856 15.023247 1.021300 +vn -0.095317 -0.337917 0.754949 +v 69.286598 15.277363 1.101300 +vn -0.102200 -0.048116 0.740592 +v 69.190338 15.778995 1.171300 +vn -0.092320 -0.221559 0.899350 +v 69.022209 15.509304 1.131300 +vn -0.140416 0.348908 0.621569 +v 69.615158 16.365871 1.141300 +vn -0.101662 0.374269 0.751452 +v 69.805466 16.638420 1.031301 +vn -0.110971 0.520306 0.612423 +v 69.560814 16.787233 0.851300 +vn -0.168393 0.188665 1.452594 +v 69.717003 15.855941 1.251300 +vn -0.094957 0.106389 0.819121 +v 69.424995 16.057264 1.191300 +vn -0.084570 0.193026 0.869740 +v 69.163322 16.303083 1.111300 +vn -0.118511 0.206022 0.820867 +v 69.893288 16.167267 1.231300 +vn -0.118236 0.428446 0.554172 +v 69.334312 16.550598 1.011300 +vn -0.187407 0.679096 0.878375 +v 68.981491 16.698986 0.821301 +vn -0.532272 1.575298 0.197259 +v 69.623634 17.034323 0.291300 +vn -0.176016 0.611420 0.081528 +v 69.379829 16.966803 0.271300 +vn -0.276434 1.473809 1.002843 +v 69.355217 16.877954 0.661301 +vn -0.188701 0.585268 0.243340 +v 69.596024 17.003706 0.461300 +vn -0.616087 2.819464 -0.614629 +v 68.930107 16.817713 0.000000 +vn -0.292793 1.463835 -0.278584 +v 69.244194 16.899708 0.061300 +vn -0.532145 1.243965 -0.456814 +v 69.639763 16.975637 0.000000 +vn -0.048097 0.191584 -0.065511 +v 69.640373 17.009426 0.091300 +vn -0.065753 0.262269 -0.089983 +v 69.329147 16.900074 0.000000 +vn -0.359467 -0.155954 -0.023956 +v 66.489075 11.278922 0.000000 +vn -0.450004 -0.187218 0.484067 +v 66.656082 11.339756 0.811300 +vn -0.537795 -0.255862 0.171718 +v 66.290695 11.865294 0.621301 +vn -0.623241 -0.261028 0.050977 +v 66.462067 11.305714 0.231300 +vn -1.407195 -0.589366 0.115099 +v 66.363930 11.577135 0.421300 +vn -0.656990 -0.375478 0.435366 +v 66.471390 11.757833 0.801300 +vn -0.155495 0.070792 1.068924 +v 67.416138 12.019472 1.221300 +vn -0.090653 0.041271 1.151761 +v 66.993645 12.253567 1.161301 +vn -0.253676 -0.035339 1.166643 +v 67.130554 11.996164 1.181300 +vn -0.509050 -0.149420 1.308845 +v 66.840240 11.764826 1.081300 +vn -0.459414 -0.260094 0.769299 +v 66.692314 12.002769 1.051300 +vn -0.240409 -0.105076 0.750960 +v 66.565437 12.532015 1.091300 +vn -0.279199 -0.119092 0.479038 +v 66.688148 11.650517 0.961300 +vn -0.074329 0.061511 0.916072 +v 67.097961 12.528554 1.151300 +vn -0.177152 -0.038020 0.874764 +v 66.900345 11.998037 1.131300 +vn -0.259923 -0.068772 1.280137 +v 66.743980 12.266457 1.111300 +vn -0.246201 -0.070640 1.259893 +v 66.823402 12.524705 1.141300 +vn 0.257294 0.443092 1.049128 +v 67.853111 12.337367 1.131300 +vn 0.204166 0.318843 0.827464 +v 67.954849 12.562419 1.011300 +vn 0.016907 0.197946 1.099030 +v 67.257050 12.274014 1.181300 +vn 0.110448 0.316888 1.124195 +v 67.649811 12.550129 1.091300 +vn 0.075697 0.167454 1.168184 +v 67.174667 12.772925 1.111300 +vn 0.141835 0.277643 1.098776 +v 67.454803 12.768474 1.061300 +vn 0.079079 0.184463 1.145770 +v 67.353065 12.543422 1.131300 +vn 0.294188 0.355846 0.590252 +v 67.822952 12.955745 0.841300 +vn 0.255754 0.360229 0.959345 +v 67.757126 12.766884 0.981300 +vn 0.682091 0.901384 0.124072 +v 68.436317 12.849977 0.121301 +vn 0.717542 0.910071 0.362216 +v 68.263916 12.963015 0.321301 +vn 0.505212 0.657376 0.714463 +v 68.248871 12.555249 0.891300 +vn 0.396621 0.460925 0.570737 +v 68.275925 12.730089 0.711300 +vn 0.408994 0.480126 0.598410 +v 68.056023 12.931694 0.701301 +vn 0.506145 0.598674 0.739780 +v 68.028969 12.756855 0.861300 +vn 0.818410 0.853161 0.430662 +v 68.072197 13.051016 0.511300 +vn 0.289943 0.383160 -0.047390 +v 68.706146 12.645794 0.121301 +vn 1.126472 1.248913 -0.081439 +v 68.291222 12.972939 0.000000 +vn 0.953786 1.016158 -0.145590 +v 68.093948 13.162043 0.111300 +vn 0.428231 0.456235 -0.065367 +v 68.222000 13.043283 0.121301 +vn 0.642358 -0.911648 -0.268607 +v 67.676582 18.621593 0.000000 +vn 0.134454 -0.190928 -0.056348 +v 67.529503 18.482220 0.121301 +vn 0.527794 -0.540102 -0.250944 +v 67.380272 18.345734 0.101300 +vn 1.116560 -1.234557 -0.483316 +v 67.490517 18.494448 0.000000 +vn 0.623728 -0.379785 -0.367949 +v 67.269806 18.223265 0.091300 +vn 0.440077 -0.267961 -0.259610 +v 67.142891 18.053583 0.051300 +vn 1.496740 -1.293146 -0.692789 +v 67.282242 18.286572 0.000000 +vn 0.421142 -0.363856 -0.194932 +v 67.340126 18.353569 0.000000 +vn 0.619817 -0.531907 0.311281 +v 67.529648 18.446165 0.491301 +vn 0.385514 -0.486364 -0.100251 +v 67.723236 18.588373 0.351300 +vn 0.987209 -0.896371 -0.221229 +v 67.554543 18.462904 0.311300 +vn 0.640526 -0.581588 -0.143539 +v 67.419182 18.323698 0.271300 +vn 1.053033 -1.204726 0.232377 +v 67.670586 18.577072 0.531301 +vn 0.569988 -0.428662 0.550906 +v 67.366249 18.384508 0.711300 +vn 0.719380 -0.582557 0.336892 +v 67.347359 18.251305 0.521300 +vn 0.783839 -0.481665 0.395758 +v 67.203979 18.034409 0.541300 +vn -0.022436 -0.209404 1.071831 +v 66.437714 18.941120 1.221300 +vn 0.382499 -0.491243 1.145894 +v 67.074524 18.513720 1.021300 +vn 0.246846 -0.317024 0.739504 +v 66.935173 18.685133 1.141300 +vn 0.575681 -0.548559 1.053727 +v 67.180534 18.356045 0.881300 +vn 0.250541 -0.213458 1.215262 +v 66.621696 18.703320 1.191300 +vn -0.546611 0.191639 0.677369 +v 65.772156 19.626348 0.891300 +vn -0.556735 0.246589 0.657036 +v 65.845116 19.410299 1.011300 +vn -0.518502 0.117338 0.812489 +v 65.968010 19.191671 1.121301 +vn -0.410705 0.181909 0.820392 +v 65.715904 19.118572 1.011300 +vn -0.239932 0.130875 0.953291 +v 66.113213 18.939850 1.181300 +vn -0.238148 0.091865 0.961897 +v 65.819336 18.910965 1.111300 +vn -0.638733 0.487201 1.070993 +v 65.561653 18.846165 1.011300 +vn -0.534234 0.309142 0.735206 +v 65.640228 19.320744 0.871301 +vn -0.425179 0.267137 0.922504 +v 65.673386 18.644135 1.121301 +vn -0.711215 0.334379 0.298642 +v 65.439507 19.583443 0.371301 +vn -0.690195 0.324497 0.289816 +v 65.288254 19.252802 0.381300 +vn -0.697192 0.375558 0.254328 +v 65.431908 19.397587 0.561300 +vn -0.651016 0.362736 0.124659 +v 65.337479 19.430500 0.121301 +vn -0.585420 0.281829 0.596418 +v 65.592308 19.517477 0.731300 +vn -1.084334 0.607997 0.747517 +v 65.446495 19.214592 0.731300 +vn -0.583256 0.417377 0.599375 +v 65.315125 18.764767 0.901300 +vn -0.868921 0.575011 0.930161 +v 65.491554 19.040037 0.881300 +vn -0.562900 0.405231 0.407989 +v 65.104095 18.827730 0.611300 +vn -0.801060 0.548577 0.156638 +v 65.150314 19.063660 0.211300 +vn -0.704653 0.482557 0.137786 +v 64.984909 18.807850 0.261300 +vn -0.844121 0.500013 0.128612 +v 65.122986 18.960936 0.431300 +vn -1.147585 0.736745 0.507437 +v 65.280518 19.103001 0.581300 +vn -2.426605 1.204040 -0.130401 +v 65.224876 19.190426 0.000000 +vn -1.263412 0.776865 -0.039696 +v 65.145462 19.044971 0.000000 +vn 0.278700 -1.045648 -0.559000 +v 59.912945 12.228607 0.711300 +vn 0.500479 -1.687853 0.564475 +v 60.154316 12.210137 1.391300 +vn 0.470490 -1.265851 0.408407 +v 60.209263 12.343482 1.741301 +vn 0.312233 -0.801833 -0.012802 +v 60.046288 12.173659 1.041300 +vn 0.128603 -0.417131 0.003781 +v 59.326031 11.954503 1.361300 +vn 0.537775 -0.861679 0.418716 +v 61.599560 12.856483 1.451301 +vn 0.479172 -1.048819 0.075019 +v 60.802460 12.429012 1.081300 +vn 0.372300 -0.669466 0.260648 +v 60.918640 12.507126 1.431300 +vn 0.356865 -1.014507 -0.501234 +v 60.530193 12.547207 0.441300 +vn 0.155158 -0.329712 -0.079107 +v 61.483521 12.742313 1.111300 +vn 0.351316 -0.746547 -0.179118 +v 60.669258 12.447905 0.741301 +vn 0.770978 -1.358858 -0.031784 +v 61.890297 12.979656 0.831300 +vn 0.491608 -0.866465 -0.020267 +v 62.050835 13.063490 1.141300 +vn 0.468681 -0.961469 -0.134105 +v 61.333858 12.713992 0.791300 +vn 0.094554 -0.324561 -0.249995 +v 59.757141 12.352805 0.401300 +vn 0.086867 -0.350522 -0.341869 +v 59.982658 12.782785 0.000000 +vn 0.205647 -0.829820 -0.809336 +v 60.499554 12.910883 0.000000 +vn 0.092794 -0.334747 -0.352948 +v 59.631531 12.557554 0.121301 +vn 0.259380 -0.989798 -1.039372 +v 59.598656 12.676315 0.000000 +vn 0.040233 -0.153553 -0.161313 +v 58.705959 12.357010 0.081300 +vn 0.496548 -1.895132 -1.990895 +v 58.993694 12.517808 0.000000 +vn 0.602454 -1.249088 -0.656257 +v 61.623749 13.053497 0.321301 +vn 0.119568 -0.356563 -0.225768 +v 61.088642 13.007025 0.111300 +vn 0.282474 -0.744386 -0.594437 +v 60.443497 12.729919 0.171300 +vn 0.492380 -1.549178 -1.021244 +v 61.091927 12.876682 0.261300 +vn 0.226483 -0.712585 -0.469748 +v 61.189499 12.749482 0.501300 +vn 0.160538 -0.504579 -0.456115 +v 60.892994 13.045387 0.000000 +vn 0.097114 -0.845938 -0.350286 +v 45.058651 9.929425 1.581300 +vn 0.158280 -1.378744 -0.570910 +v 45.005146 10.134463 1.071301 +vn 0.232201 -1.429402 -0.400077 +v 46.497574 10.065414 1.841300 +vn 0.170705 -1.014165 -0.277488 +v 45.851864 9.932532 1.941300 +vn 0.231024 -1.372527 -0.375540 +v 45.726681 10.029115 1.511300 +vn 0.398683 -1.882787 -0.176687 +v 45.904289 9.931046 2.075428 +vn 0.262932 -1.692284 -0.143762 +v 45.190041 9.818310 2.075428 +vn 0.348635 -2.243836 -0.190581 +v 45.739746 9.903720 2.075428 +vn 0.142503 -1.056255 0.210527 +v 47.944515 10.279096 2.021300 +vn 0.063354 -0.467434 -0.023615 +v 47.162743 10.187284 1.741301 +vn 0.373675 -2.974123 -0.068249 +v 47.572392 10.231099 2.075428 +vn 0.237713 -1.351875 -0.066324 +v 46.573864 10.067343 2.075428 +vn 0.243393 -1.306876 -0.049585 +v 47.245647 10.190046 2.075428 +vn 0.084911 -0.828091 -0.365080 +v 47.747219 10.375399 1.291300 +vn 0.136147 -1.525921 -0.613653 +v 47.051434 10.281146 1.371301 +vn 0.069221 -0.530728 -0.226866 +v 46.962154 10.413934 1.021300 +vn 0.070853 -0.467068 -0.139802 +v 46.386261 10.159288 1.441300 +vn 0.111816 -0.696974 -0.387014 +v 45.667740 10.206388 1.081300 +vn 0.194660 -1.321796 -0.716242 +v 46.308010 10.311518 1.061300 +vn 0.079372 -0.568229 -0.314437 +v 46.243492 10.497089 0.701301 +vn 0.234441 -1.279361 -0.794832 +v 44.948944 10.728306 0.000000 +vn 0.150326 -0.865600 -0.555126 +v 45.610531 10.649927 0.321301 +vn 0.207543 -1.195063 -0.766417 +v 45.630836 10.422579 0.681300 +vn 0.096561 -0.556013 -0.356582 +v 45.045792 10.378695 0.591300 +vn 0.094063 -1.034078 -0.587508 +v 47.510300 10.674009 0.651300 +vn 0.065911 -0.591179 -0.428782 +v 46.780613 10.737716 0.451301 +vn 0.171915 -1.169034 -0.755844 +v 46.850571 10.579900 0.711300 +vn 0.102782 -0.653504 -0.495715 +v 46.214748 10.754914 0.311300 +vn -0.192868 0.639199 0.274413 +v 43.605698 13.323599 2.075428 +vn -0.145573 0.733802 0.250379 +v 44.782993 13.744710 1.541300 +vn -0.264468 1.299722 0.437100 +v 44.769821 13.567152 2.061300 +vn -0.214337 1.526641 0.581204 +v 43.740185 13.361049 2.075428 +vn -0.378517 1.828339 0.640227 +v 44.758205 13.559800 2.075428 +vn -0.221007 1.067539 0.373806 +v 44.378937 13.521245 1.961300 +vn -0.265018 1.353103 0.471017 +v 44.399952 13.485633 2.075428 +vn -0.319829 0.856281 -0.382783 +v 44.292023 13.886021 0.000000 +vn -0.318579 0.722781 -0.297885 +v 43.895210 13.810570 0.241301 +vn -0.209956 0.476356 -0.196333 +v 44.110481 13.806005 0.000000 +vn -0.090974 -0.543295 -0.094779 +v 44.319695 9.822633 2.075428 +vn -0.047037 -0.329353 -0.070207 +v 44.384762 9.910145 1.621301 +vn -0.185706 -1.300312 -0.277183 +v 44.478001 9.800024 2.075428 +vn 0.026324 -1.332045 -0.319897 +v 45.181114 9.818973 2.051300 +vn 0.056355 -2.851397 -0.684636 +v 45.064037 9.810865 2.075428 +vn -0.528346 -0.807214 -0.188527 +v 43.087372 10.459766 1.051300 +vn -0.864622 -1.115424 -0.348501 +v 43.113258 10.224118 1.741301 +vn -0.399406 -0.609808 -0.113519 +v 42.590336 10.607592 1.811300 +vn -0.508353 -0.681734 -0.062880 +v 42.863834 10.379290 2.075428 +vn -0.463871 -1.226668 -0.163381 +v 43.791245 9.911121 2.075428 +vn -0.793651 -1.986901 -0.293260 +v 43.456062 10.037872 2.075428 +vn -0.293814 -0.709289 -0.231212 +v 43.716022 9.990729 1.691300 +vn -0.634844 -0.224119 0.020734 +v 42.029095 11.567805 1.911301 +vn -1.540506 -0.543846 0.050314 +v 42.037346 11.559617 2.075428 +vn -1.131611 -0.324959 0.100012 +v 42.172573 11.049717 1.851300 +vn -1.094253 -0.768699 -0.099326 +v 42.609905 10.545606 2.075428 +vn -1.150349 0.584686 0.258146 +v 42.478004 13.086678 1.271300 +vn -0.802091 0.407678 0.179994 +v 42.098099 12.361302 1.221300 +vn -0.884231 0.510874 0.166509 +v 42.475914 12.736847 2.075428 +vn -0.681433 0.468219 0.238274 +v 42.498592 12.787220 2.041300 +vn -0.683189 0.140398 -0.098676 +v 42.119392 11.881567 0.391300 +vn -0.972262 0.474330 -0.636140 +v 42.067196 12.461036 0.431300 +vn -0.138279 0.067449 -0.090455 +v 42.381283 12.997548 0.351300 +vn -1.097132 -0.873700 -0.459800 +v 42.595207 10.779568 1.061300 +vn -1.002834 -0.981024 -0.359014 +v 42.318237 11.388667 0.391300 +vn -0.605354 -0.515331 -0.373856 +v 42.589275 11.421414 0.000000 +vn -1.312047 -0.498776 -0.791185 +v 42.332024 11.942935 0.000000 +vn -0.757028 -0.305399 -0.445345 +v 42.499317 11.510413 0.000000 +vn -1.431901 -0.615949 -0.360971 +v 41.986755 11.756239 1.131300 +vn -0.518594 -0.209210 -0.117956 +v 42.221794 11.227424 1.101300 +vn -0.957120 -1.425160 -0.614172 +v 43.094685 10.717734 0.441300 +vn -0.464634 -1.145261 -0.484310 +v 43.642925 10.242835 1.031301 +vn -0.249165 -0.609477 -0.329950 +v 43.561390 10.525414 0.441300 +vn -0.527797 -1.278618 -0.688888 +v 43.190155 10.916087 0.000000 +vn -0.471475 -0.675636 -0.404816 +v 43.101479 10.963387 0.000000 +vn -0.444944 -0.669195 -0.379315 +v 42.688648 10.999043 0.421300 +vn -0.422880 -0.635323 -0.360610 +v 43.143780 10.935230 0.000000 +vn 0.022771 -0.597335 -0.302005 +v 44.308941 10.148370 0.991301 +vn -0.133865 -1.023285 -0.519551 +v 44.262753 10.611368 0.091300 +vn 0.844814 0.636409 -1.180457 +v 62.902424 15.865308 1.911301 +vn 0.198842 0.149814 -0.277785 +v 63.054657 15.967658 2.075428 +vn 0.749066 1.254716 -2.220967 +v 61.109360 17.701120 2.075428 +vn 0.674736 0.924100 -1.538689 +v 62.072205 16.813374 1.941300 +vn 0.712818 1.126844 -1.435725 +v 60.620708 17.054533 1.461300 +vn 0.353271 0.509854 -0.799771 +v 62.068317 16.389009 1.671300 +vn 0.151019 0.217956 -0.341892 +v 61.487446 16.697371 1.611300 +vn 0.348079 0.626273 -0.987058 +v 61.426247 17.451529 2.041300 +vn 0.393644 0.708255 -1.116268 +v 61.361271 17.046339 1.761300 +vn 0.081116 0.071179 -0.081137 +v 62.507832 16.057909 1.721300 +vn 0.113882 0.085499 -0.145503 +v 62.562214 16.335474 1.921300 +vn 0.615538 0.698478 -1.093680 +v 62.487808 16.213148 1.801300 +vn 0.127147 0.144279 -0.225913 +v 62.014679 16.630096 1.801300 +vn 1.042025 -1.047611 -0.925569 +v 63.075920 14.764900 1.961300 +vn 0.655032 -0.658543 -0.581826 +v 63.175411 14.763028 2.075428 +vn 0.942882 0.374913 -0.986539 +v 63.282753 15.395927 2.075428 +vn 0.344327 -0.056538 -0.265794 +v 63.189487 14.832619 2.075428 +vn 0.039236 -0.006443 -0.030287 +v 63.278690 15.395284 2.071301 +vn 0.093954 0.041137 -0.013897 +v 63.082241 15.275252 1.891300 +vn 2.229359 0.976112 -0.329743 +v 62.878094 15.704349 1.781301 +vn 0.004507 0.005842 0.027332 +v 62.850056 15.781898 1.821301 +vn 0.575483 0.091259 0.792833 +v 63.067619 14.759320 1.961300 +vn 1.226986 0.194573 1.690397 +v 63.092518 14.776059 1.941300 +vn 0.091024 0.117974 0.888537 +v 63.057205 15.294569 1.891300 +vn 0.150678 0.069630 -0.152206 +v 63.129173 15.330907 1.891300 +vn 1.080838 -1.032323 1.103668 +v 62.279865 13.778168 2.075428 +vn 0.824736 -0.762055 0.664591 +v 62.783875 14.267296 2.021300 +vn 1.040593 -0.961507 0.838534 +v 62.757114 14.285540 2.075428 +vn 0.003137 -0.004667 -0.007499 +v 62.817879 14.408042 2.075428 +vn 0.628574 -0.926135 0.967540 +v 62.431446 13.608591 1.811300 +vn 0.928598 -1.271305 1.166165 +v 61.669975 13.289427 2.031301 +vn 0.402326 -0.550808 0.505255 +v 61.676403 13.064797 1.781301 +vn 0.385810 -0.700936 0.594016 +v 60.983620 12.912313 2.021300 +vn 1.017329 -1.896416 1.691566 +v 61.156071 13.053104 2.075428 +vn 0.130704 -0.178942 0.162617 +v 62.292240 13.743947 2.031301 +vn 0.030010 -0.094370 0.089125 +v 60.241611 12.582131 2.021300 +vn 0.408954 -0.996047 0.837230 +v 60.980946 12.956712 2.075428 +vn 0.521574 -1.301272 1.201140 +v 60.987328 12.673805 1.761300 +vn 0.012882 -0.107086 0.073500 +v 50.684547 10.441325 2.075428 +vn 0.063639 -1.623354 -0.428226 +v 47.844650 10.284253 1.651300 +vn -0.025001 -1.309660 -0.383116 +v 49.386444 10.356855 1.441300 +vn -0.002824 -0.462226 -0.126540 +v 49.255676 10.461738 1.091300 +vn -0.037447 -1.646256 -0.647468 +v 48.465321 10.436453 1.201301 +vn 0.031574 -0.326507 0.067372 +v 48.101501 10.305446 2.075428 +vn 0.009639 -0.121924 0.031397 +v 48.693237 10.312539 1.921300 +vn 0.019801 -0.574824 0.143229 +v 49.103966 10.371084 2.075428 +vn 0.008405 -0.192344 0.050663 +v 49.494751 10.321224 1.821301 +vn 0.059708 -1.366378 0.359901 +v 48.718945 10.354259 2.075428 +vn 0.040405 -1.204069 -0.100164 +v 48.590508 10.339871 1.551300 +vn 0.002399 -0.027275 0.005786 +v 51.261173 10.400253 1.621301 +vn 0.101976 -1.746484 -0.279463 +v 51.141705 10.452483 1.251300 +vn 0.009843 -0.456576 -0.045617 +v 50.235027 10.385141 1.341300 +vn 0.071593 -1.449576 0.321789 +v 50.348915 10.341211 1.721300 +vn 0.077339 -1.565959 0.347625 +v 50.357780 10.420261 2.075428 +vn 0.070026 -1.613617 -0.842210 +v 50.866013 10.737076 0.571301 +vn 0.010505 -0.319011 -0.151681 +v 51.013660 10.571243 0.901300 +vn -0.001211 -1.242152 -0.546587 +v 49.124771 10.602675 0.771300 +vn -0.012633 -1.186253 -0.540476 +v 50.098682 10.498322 0.991301 +vn 0.006558 -0.382372 -0.207084 +v 48.339993 10.569092 0.871301 +vn 0.026065 -1.519807 -0.823092 +v 47.621891 10.508035 0.961300 +vn -0.015594 -0.713338 -0.529206 +v 48.965961 10.785105 0.471300 +vn -0.030728 -0.809124 -0.511475 +v 48.080757 10.900900 0.341300 +vn 0.035269 -1.054416 -0.706829 +v 48.214523 10.737786 0.591300 +vn 0.051430 -1.179345 -0.770054 +v 49.948318 10.650276 0.661301 +vn 0.072815 -1.588773 -1.312496 +v 50.327240 11.144835 0.000000 +vn -0.035678 -0.798286 -0.580067 +v 48.712448 11.072558 0.091300 +vn -0.022854 -0.511355 -0.371571 +v 49.619690 10.995679 0.141300 +vn -0.027727 -1.591203 -0.985794 +v 49.789513 10.832706 0.371301 +vn 0.007547 -0.314404 -0.280135 +v 50.038956 11.131642 0.000000 +vn -0.228874 0.523506 -0.275083 +v 44.396420 14.015001 0.201301 +vn -0.376659 0.844613 -0.438910 +v 45.084480 14.211606 0.000000 +vn -0.320185 0.592930 -0.345035 +v 45.362919 14.387664 0.091300 +vn -1.041284 1.928292 -1.122136 +v 45.728420 14.531907 0.000000 +vn -0.260103 0.806052 0.263178 +v 45.469635 14.049714 1.191300 +vn -0.271250 0.840598 0.274457 +v 45.229534 13.743685 1.891300 +vn -0.389962 1.208481 0.394572 +v 45.808292 13.976153 1.751300 +vn -0.356253 0.923717 0.270685 +v 45.650360 13.820261 2.075428 +vn 0.307562 -1.692243 0.529948 +v 57.682102 11.859223 2.075428 +vn 0.027652 -0.152146 0.047646 +v 57.232372 11.777486 2.075428 +vn 0.405436 -1.416724 1.193095 +v 59.383839 12.065671 1.731300 +vn 0.456590 -1.507893 1.190941 +v 58.596207 12.054266 2.001300 +vn 0.219661 -0.776807 0.723264 +v 57.577477 11.562136 1.741301 +vn 0.049361 -0.205532 0.213727 +v 57.703972 11.839984 2.001300 +vn 0.436874 -1.819070 1.891597 +v 58.017132 11.992277 2.075428 +vn 0.192580 -0.801867 0.833847 +v 58.621803 12.137498 2.075428 +vn 0.025454 -0.084830 0.086459 +v 59.432785 12.315480 2.011300 +vn 0.309101 -1.308960 1.071338 +v 55.441036 11.065629 1.791300 +vn 0.482995 -1.879307 1.709301 +v 55.522938 11.323350 2.075428 +vn 0.220450 -0.857764 0.780164 +v 56.527283 11.313953 1.781301 +vn 0.176459 -0.949383 -0.407230 +v 55.235439 11.156350 0.711300 +vn 0.165590 -0.949879 -0.363741 +v 56.391644 11.246858 1.001300 +vn 0.247833 -1.125482 -0.443764 +v 57.386467 11.469862 0.991301 +vn 0.340061 -1.633084 -0.988650 +v 57.072140 11.704380 0.381300 +vn 0.337588 -1.563609 -0.994341 +v 56.274757 11.349020 0.681300 +vn 0.312477 -1.316039 0.312772 +v 56.469475 11.202786 1.371301 +vn 0.541053 -1.888016 -0.171411 +v 59.187389 11.945641 1.021300 +vn 0.087818 -0.327232 0.082596 +v 58.519505 11.809896 1.721300 +vn 0.085381 -0.317150 0.079283 +v 57.489193 11.442529 1.361300 +vn 0.463470 -1.721581 0.430371 +v 58.439518 11.695868 1.351300 +vn 0.074946 -0.267709 -0.167657 +v 59.048470 12.008887 0.691300 +vn 0.280304 -1.274262 -0.780037 +v 57.239101 11.563584 0.671300 +vn 0.293364 -1.292320 -0.769420 +v 57.978252 11.915943 0.361300 +vn 0.110630 -0.379239 -0.119255 +v 58.317474 11.698163 1.001300 +vn 0.295604 -1.079287 -0.384761 +v 58.159092 11.772428 0.671300 +vn 0.253970 -1.489469 -1.282346 +v 55.946129 11.694424 0.131300 +vn 0.228197 -1.110993 -0.983076 +v 56.124393 11.500975 0.391300 +vn 0.282170 -1.473417 -1.711272 +v 56.670681 11.992502 0.000000 +vn 0.031010 -0.156532 -0.189288 +v 56.835644 11.894826 0.111300 +vn 0.132191 -0.667781 -0.807584 +v 56.028870 11.869591 0.000000 +vn 0.192656 -1.107745 -1.318779 +v 55.843189 11.832834 0.000000 +vn 0.005690 -0.032721 -0.038960 +v 54.978783 11.538090 0.121301 +vn 0.235143 -0.911371 -0.824499 +v 58.887085 12.141384 0.371301 +vn 0.033167 -0.137998 -0.161602 +v 57.758354 12.117549 0.091300 +vn 0.401486 -1.670471 -1.956191 +v 58.307098 12.356352 0.000000 +vn 0.153980 -0.640614 -0.750106 +v 57.647381 12.197780 0.000000 +vn 0.245049 -1.512563 0.646796 +v 55.344738 11.266306 2.075428 +vn 0.228791 -1.122168 0.905608 +v 55.348763 11.256640 2.051300 +vn 0.224301 -1.293324 0.795014 +v 53.320770 10.688446 1.821301 +vn 0.004012 -0.023135 0.014220 +v 54.335190 10.864377 1.821301 +vn 0.041471 -0.239136 0.146987 +v 53.305065 10.841936 2.075428 +vn 0.301030 -1.443836 1.074070 +v 54.217609 11.028908 2.075428 +vn 0.054440 -0.261110 0.194240 +v 53.398800 10.858191 2.075428 +vn 0.195180 -1.166440 0.790048 +v 51.369057 10.472788 2.001300 +vn 0.027168 -0.162361 0.109974 +v 51.383316 10.525382 2.075428 +vn 0.260538 -1.514646 0.930932 +v 53.160908 10.817140 2.075428 +vn 0.031107 -0.358818 -0.194232 +v 51.847378 10.854633 0.511300 +vn 0.026655 -0.315637 -0.116852 +v 52.128651 10.561743 1.181300 +vn 0.152910 -1.672860 -0.665665 +v 51.995026 10.688801 0.831300 +vn 0.088772 -0.845798 -0.470495 +v 53.059521 10.826099 0.791300 +vn 0.129397 -1.040168 0.157389 +v 52.311649 10.576326 1.921300 +vn 0.191386 -1.710981 -0.322508 +v 52.225941 10.506653 1.531301 +vn 0.289133 -1.523897 0.274925 +v 54.335472 10.792267 1.421300 +vn 0.051608 -0.295396 -0.066954 +v 55.419140 10.990658 1.381300 +vn 0.197165 -1.128546 -0.255796 +v 54.276958 10.861375 1.071301 +vn 0.043853 -0.318807 -0.070280 +v 53.259960 10.635510 1.461300 +vn 0.124274 -1.179856 -0.717484 +v 54.154491 10.971837 0.741301 +vn 0.201515 -1.596679 -0.675029 +v 53.157093 10.698899 1.121301 +vn 0.185499 -1.226199 -0.510836 +v 55.349609 11.040309 1.031301 +vn 0.052410 -0.689033 -0.492790 +v 50.659992 10.935963 0.271300 +vn 0.105480 -1.080035 -0.881747 +v 52.791702 11.224438 0.171300 +vn 0.102386 -1.048353 -0.855881 +v 52.917454 10.983633 0.481300 +vn 0.109898 -0.979710 -0.760358 +v 51.674553 11.075839 0.201301 +vn 0.158238 -1.264690 -1.295324 +v 52.709126 11.389555 0.000000 +vn 0.050201 -0.466832 -0.441421 +v 52.019882 11.303317 0.000000 +vn 0.133369 -0.989327 -0.833672 +v 55.129429 11.314025 0.411301 +vn 0.135486 -0.986629 -0.824211 +v 53.897690 11.389632 0.121301 +vn 0.039605 -0.237591 -0.290196 +v 54.481789 11.603401 0.000000 +vn 0.086536 -0.771652 -0.635303 +v 54.051197 11.143391 0.441300 +vn 0.049108 0.167669 -0.174216 +v 57.467556 19.091814 2.031301 +vn 0.309775 0.812586 -1.337332 +v 57.323441 18.356268 1.451301 +vn 0.315475 0.669498 -1.451732 +v 58.740009 17.826527 1.491301 +vn 0.348466 0.908828 -1.511545 +v 58.094337 18.392569 1.641300 +vn 0.190527 0.678223 -0.940799 +v 57.394562 18.608936 1.621301 +vn 0.070653 0.251503 -0.348873 +v 58.115383 18.683872 1.821301 +vn 0.077658 0.148259 -0.277079 +v 60.541603 17.423101 1.711300 +vn 0.368016 0.702593 -1.313068 +v 59.672150 17.766386 1.651300 +vn 0.240069 0.628183 -0.966497 +v 58.874802 18.109953 1.651300 +vn 0.254288 0.590150 -1.069041 +v 59.771027 18.013617 1.811300 +vn 0.334220 0.767666 -1.215275 +v 60.498276 17.863920 1.961300 +vn 0.272462 0.548979 -0.773129 +v 60.170979 18.187090 2.075428 +vn 0.330064 0.790175 -1.085536 +v 59.887005 18.328028 2.075428 +vn 0.037292 0.089279 -0.122649 +v 59.075703 18.510128 1.961300 +vn 0.659825 1.579637 -2.170059 +v 59.560181 18.464544 2.075428 +vn 0.111105 -1.079619 -0.349346 +v 46.352238 14.303066 2.075428 +vn 0.183435 -1.782483 -0.576783 +v 46.478279 14.316037 2.075428 +vn -0.187508 -1.193770 -0.348684 +v 46.628666 14.320484 2.075428 +vn -0.188375 0.664343 0.177285 +v 46.207336 14.063696 1.961300 +vn -0.988969 1.570667 0.158996 +v 46.700245 14.262547 2.041300 +vn -1.002020 1.591367 0.161087 +v 46.619328 14.208142 2.075428 +vn -0.593746 1.383270 0.275375 +v 46.551792 14.165618 2.075428 +vn -0.109359 0.307056 0.059730 +v 46.532036 14.157138 2.075428 +vn -0.309706 -0.429030 -0.101061 +v 43.179008 14.678658 2.011300 +vn -0.960162 -1.330098 -0.313314 +v 42.795155 14.962819 1.981300 +vn -0.614840 -0.958771 -0.438597 +v 43.247280 14.953498 1.201301 +vn -0.298393 -0.465310 -0.212859 +v 43.395485 14.643453 1.671300 +vn -0.606444 -0.839206 -0.413257 +v 43.016922 14.991432 1.441300 +vn -0.552389 -0.764403 -0.376422 +v 43.084156 14.819736 1.691300 +vn -0.550144 -0.761296 -0.374892 +v 42.819912 15.015615 1.681300 +vn -0.266333 -0.763411 -0.285205 +v 44.059349 14.390881 1.601300 +vn -0.241360 -0.756822 -0.272336 +v 43.884933 14.309764 1.981300 +vn -0.457241 -0.879253 -0.435004 +v 43.631138 14.669328 1.371301 +vn -0.853116 -1.771620 -0.560042 +v 43.534836 14.472030 2.001300 +vn -0.906321 -1.786871 -0.492455 +v 43.737289 14.475597 1.651300 +vn 0.464055 1.003783 -1.367248 +v 61.434597 17.494154 2.075428 +vn -0.319666 -0.992379 -0.149563 +v 44.285675 14.166492 2.075428 +vn -0.749220 -1.605167 -0.091835 +v 43.567139 14.452711 2.075428 +vn -0.492354 -0.982331 -0.072613 +v 43.839352 14.325652 2.075428 +vn -1.410051 -1.908898 -0.039631 +v 43.124962 14.717250 2.075428 +vn -0.673252 -0.969518 0.016031 +v 43.201180 14.664323 2.075428 +vn -1.186435 -2.042375 -0.015241 +v 43.271114 14.624675 2.075428 +vn 0.061953 -1.340250 -0.503632 +v 45.104385 14.539195 1.121301 +vn 0.127392 -0.996864 -0.368478 +v 45.934868 14.235147 2.075428 +vn 0.191167 0.842466 -0.219606 +v 55.042004 19.473381 1.851300 +vn 0.185344 1.530694 -0.684442 +v 55.638325 19.438332 2.075428 +vn 0.009663 0.037244 -0.026922 +v 55.655506 19.331562 1.841300 +vn 0.538527 2.075684 -1.500446 +v 56.174858 19.366062 2.075428 +vn 0.432653 0.902223 -0.160650 +v 54.962017 19.359354 0.981300 +vn 0.158783 0.382003 -0.130194 +v 55.097797 19.390394 1.521300 +vn 0.641828 1.544118 -0.526265 +v 55.667233 19.170744 1.571301 +vn 0.729841 1.048874 -0.735470 +v 56.181854 18.781693 1.361300 +vn 0.062268 0.256581 -0.353390 +v 56.813259 19.025469 1.821301 +vn 0.230390 0.949345 -1.307535 +v 57.443504 18.858746 1.811300 +vn 0.314059 1.044575 -1.262682 +v 56.775337 18.795111 1.621301 +vn 0.235408 0.962183 -1.079584 +v 56.221939 19.170141 1.821301 +vn 0.084030 0.309886 -0.372857 +v 56.200603 18.950958 1.621301 +vn 0.015496 0.072292 -0.042586 +v 56.862350 19.239216 2.061300 +vn 0.059286 0.398169 -0.366739 +v 56.285934 19.338053 2.075428 +vn -1.144101 -2.449398 -0.912616 +v 42.560959 15.093804 2.075428 +vn -0.037756 -0.080831 -0.030117 +v 42.394455 15.171577 2.075428 +vn -0.183225 -0.371618 -0.214523 +v 42.508446 15.227954 1.781301 +vn -0.589683 -1.375164 -0.894115 +v 42.239037 15.323974 1.811300 +vn -0.207583 -0.484092 -0.314751 +v 42.213295 15.523566 1.521300 +vn -0.526676 -0.875847 -0.479026 +v 42.441208 15.399650 1.541300 +vn -0.449754 -0.629589 -0.315533 +v 42.727352 15.278745 1.341300 +vn -0.768791 -1.076194 -0.539359 +v 42.446365 15.499517 1.301300 +vn -0.767171 -1.039389 -0.347593 +v 42.596867 15.311516 1.531301 +vn -0.621442 -0.908709 -0.033379 +v 42.642212 15.064841 2.051300 +vn -1.052089 -1.538426 -0.056511 +v 42.663734 15.049236 2.075428 +vn 0.444010 -0.708398 -0.895079 +v 58.522594 22.625528 2.075428 +vn 0.781099 -1.251622 -1.574966 +v 58.207966 22.429178 2.075428 +vn 0.515412 -0.919746 -1.136110 +v 56.332119 22.196486 1.381300 +vn 0.332882 -0.633883 -0.635263 +v 56.522671 21.697998 1.871301 +vn 0.100252 -0.185701 -0.191246 +v 57.577591 22.154222 1.981300 +vn 0.404474 -0.858396 -0.861676 +v 54.092350 21.172604 1.311300 +vn 0.190668 -0.455366 -0.403994 +v 54.562763 20.741777 1.961300 +vn 0.375513 -0.896827 -0.795652 +v 55.517681 21.239204 1.851300 +vn 0.460502 -1.099803 -0.975729 +v 55.596569 21.073393 2.075428 +vn 0.361082 -0.551110 -0.818294 +v 57.381466 22.660999 1.481300 +vn 0.498976 -0.758334 -1.237743 +v 58.127113 24.186583 0.821301 +vn 0.486534 -0.838152 -1.218563 +v 57.207512 23.170647 1.061300 +vn 0.146683 -0.211256 -0.398367 +v 57.011234 23.713495 0.661301 +vn 0.372473 -0.754253 -1.270854 +v 54.175694 22.554144 0.411301 +vn 0.226524 -0.458707 -0.772883 +v 54.022503 23.171501 0.000000 +vn 0.195966 -0.351189 -0.640655 +v 54.143463 23.238995 0.000000 +vn 0.297064 -0.532550 -0.901753 +v 55.857605 23.672922 0.271300 +vn 0.420502 -0.753838 -1.276455 +v 56.009106 23.232517 0.581300 +vn 0.211008 -0.402548 -0.732565 +v 55.067497 22.876600 0.481300 +vn 0.425174 -0.865618 -1.222878 +v 55.161331 22.288973 0.881300 +vn 0.273905 -0.512772 -0.731713 +v 55.310532 21.726532 1.331300 +vn 0.167590 -0.313741 -0.447700 +v 56.166458 22.711720 0.961300 +vn 0.194803 -0.397490 -0.650759 +v 54.200272 21.944065 0.791300 +vn 0.236495 -0.305460 -0.383454 +v 59.571724 23.579292 1.891300 +vn 0.569918 -0.732296 -0.923649 +v 59.629414 23.391949 2.075428 +vn 0.068887 -0.058352 -0.102814 +v 62.056744 25.548092 2.075428 +vn 0.274518 -0.279745 -0.486064 +v 61.263992 25.596724 1.591300 +vn 0.254526 -0.282730 -0.415841 +v 60.491322 24.595238 1.731300 +vn 0.820678 -0.736454 -1.360064 +v 61.259926 27.341261 0.661301 +vn 0.421304 -0.378067 -0.698204 +v 61.577255 27.048512 1.011300 +vn 0.407242 -0.426650 -0.784120 +v 60.032108 25.708397 0.851300 +vn 0.637587 -0.667974 -1.227636 +v 59.730675 26.192574 0.431300 +vn 0.966620 -0.918428 -1.571583 +v 61.807991 26.203489 1.571301 +vn 0.531788 -0.716299 -1.283708 +v 59.010662 25.202377 0.641300 +vn 0.588768 -0.659164 -1.167603 +v 60.261719 25.151810 1.281301 +vn 0.625900 -0.852635 -1.279026 +v 58.472446 23.117357 1.661301 +vn 0.610055 -0.837049 -1.247239 +v 59.383751 24.127714 1.431300 +vn 0.791757 -0.938571 -1.409019 +v 60.622883 24.189602 2.075428 +vn 0.277451 -0.328899 -0.493756 +v 60.224655 23.853666 2.075428 +vn 0.368189 -0.487388 -0.813329 +v 58.273453 23.646320 1.211300 +vn 0.398782 -0.524680 -0.864496 +v 59.187477 24.670555 1.011300 +vn -0.330412 -0.418281 -0.208383 +v 41.051586 16.839212 1.011300 +vn -1.161782 -0.908251 -0.616794 +v 40.619244 17.874041 0.000000 +vn -0.948469 -0.711796 -0.529719 +v 40.437836 17.752071 0.521300 +vn -0.332120 -0.344445 -0.184659 +v 40.579441 17.003778 1.461300 +vn -1.230031 -1.275675 -0.683897 +v 40.378296 17.374641 1.131300 +vn -1.370656 -1.034421 -0.773820 +v 40.578026 17.364334 0.791300 +vn 0.163330 -0.336431 -0.553216 +v 53.461437 22.218525 0.391300 +vn 0.155530 -0.317532 -0.517038 +v 52.756756 21.563988 0.581300 +vn 0.383225 -0.723313 -1.119128 +v 52.603210 21.111301 0.821301 +vn 0.294929 -0.632150 -0.937247 +v 53.382999 21.707897 0.681300 +vn 0.208384 -0.410531 -0.725779 +v 52.735321 22.079779 0.261300 +vn 0.488311 -0.766476 -1.260443 +v 51.757053 21.169014 0.481300 +vn 0.558073 -1.392628 -1.182562 +v 53.709518 20.302940 2.075428 +vn 0.854361 -2.132010 -1.810478 +v 53.984390 20.413090 2.075428 +vn 0.229111 -0.617316 -0.492016 +v 54.468300 20.615755 2.075428 +vn 0.372889 -0.859975 -0.608934 +v 52.407665 19.759319 2.075428 +vn -0.646146 -1.051122 -0.308011 +v 41.239277 16.362902 1.871301 +vn -0.986775 -0.330690 -0.119408 +v 42.074745 15.444082 2.075428 +vn -1.109744 -0.371900 -0.134288 +v 42.003696 15.656091 2.075428 +vn -1.304822 -0.475651 -0.144149 +v 41.962498 15.824897 1.891300 +vn -0.639168 -0.232998 -0.070612 +v 42.057774 15.575655 1.851300 +vn -0.494854 -0.553680 -0.438709 +v 41.700455 16.063583 2.075428 +vn -1.257300 -0.456952 -0.138414 +v 41.930061 15.858372 2.075428 +vn -0.614851 -0.131961 -0.116779 +v 42.099728 16.194313 1.161301 +vn -0.594815 -0.127660 -0.112973 +v 42.131474 15.878257 1.351300 +vn -1.151240 -0.327474 -0.300328 +v 42.107002 15.753352 1.581300 +vn -0.840904 -0.239197 -0.219369 +v 42.022743 16.022053 1.611300 +vn -0.442424 -0.860343 -0.348371 +v 41.357323 16.671234 0.931300 +vn -0.376680 -0.791308 -0.296923 +v 41.639019 16.270176 1.611300 +vn -0.621106 -1.304891 -0.489625 +v 41.551540 16.137663 2.075428 +vn -0.071273 -0.135351 -0.050815 +v 41.886818 16.027067 1.911301 +vn -0.264836 -0.502938 -0.188819 +v 41.637230 16.096876 2.075428 +vn 0.616895 1.286754 -0.114530 +v 57.951103 18.139618 0.831300 +vn 0.273691 0.570191 -0.050820 +v 57.248180 18.450281 0.531301 +vn 0.462318 0.981435 -0.139745 +v 59.857262 17.240141 0.651300 +vn 0.614264 1.377486 -0.198557 +v 58.626263 17.834402 0.861300 +vn 0.687041 1.513688 -0.241923 +v 59.215435 17.531622 0.611300 +vn 0.167073 0.370488 -0.043365 +v 58.631985 17.790049 0.571301 +vn 0.759250 1.798079 -0.184436 +v 60.234695 17.180603 1.101300 +vn 0.394230 1.007108 -0.078727 +v 58.681778 17.823524 1.161301 +vn 0.127403 0.325468 -0.025442 +v 59.542793 17.510715 1.471300 +vn 0.704666 1.733675 -0.207804 +v 59.429050 17.518591 1.151300 +vn 0.183963 0.415511 -0.018977 +v 59.243053 17.562239 0.881300 +vn 0.408989 1.003483 -0.008910 +v 58.006615 18.128742 1.471300 +vn 0.706736 1.577892 -0.053433 +v 57.992733 18.131470 1.141300 +vn -0.440442 0.899528 0.118599 +v 46.795696 14.676175 0.491301 +vn -0.700971 1.165416 0.346156 +v 46.762646 14.617802 0.811300 +vn -0.534531 0.888697 0.263964 +v 46.496803 14.511368 0.631300 +vn -0.224356 0.840409 0.232840 +v 46.095600 14.265735 1.131300 +vn 0.099058 -1.321811 -0.442189 +v 46.557186 14.672477 1.061300 +vn 0.072514 -0.967617 -0.323700 +v 46.369038 14.558017 1.361300 +vn -0.470757 -0.610156 -0.159924 +v 46.545319 14.869350 0.491301 +vn 0.144560 -1.125230 -0.429924 +v 46.097759 14.423825 1.621301 +vn 0.055797 -1.687838 -0.579620 +v 46.554897 14.550425 1.401300 +vn -0.241349 -0.216137 -0.157869 +v 46.732452 14.537251 1.371301 +vn -0.983772 -0.881004 -0.643496 +v 46.555454 14.406211 1.821301 +vn -0.332808 1.156207 0.319340 +v 46.506233 14.228505 1.661301 +vn -0.345270 1.199501 0.331297 +v 46.223503 14.183028 1.531301 +vn -0.224203 0.837614 0.244881 +v 46.527843 14.375586 1.151300 +vn -0.775713 0.949034 0.024052 +v 46.768364 14.573447 1.101300 +vn -0.629153 0.895830 0.462958 +v 46.680779 14.273572 1.811300 +vn -0.600202 -1.069431 -0.344076 +v 43.145859 15.355261 0.341300 +vn -0.674871 -0.784073 -0.281753 +v 42.593163 15.550014 0.991301 +vn -0.547619 -0.748108 -0.299011 +v 42.902191 15.251685 1.081300 +vn -0.597380 -0.816087 -0.326181 +v 42.798759 15.459295 0.751300 +vn -0.442533 -0.606651 -0.195827 +v 43.101925 15.241373 0.741301 +vn -0.344596 -0.813083 -0.304852 +v 43.727154 14.938736 0.671300 +vn -0.326036 -0.769289 -0.288433 +v 43.535854 14.918579 0.941300 +vn -0.657139 -1.153971 -0.436716 +v 43.421268 15.142778 0.521300 +vn 0.026675 -0.711380 -0.262401 +v 45.567528 14.549331 1.151300 +vn 0.065881 -0.471942 -0.174841 +v 46.107788 14.695669 0.891300 +vn 0.507655 1.682728 -0.115528 +v 54.901066 19.342474 0.511300 +vn 0.489393 1.274241 0.000755 +v 56.056385 18.950386 0.481300 +vn 0.508374 1.176943 -0.005348 +v 57.314857 18.422798 0.821301 +vn 0.563989 1.345062 -0.033340 +v 56.581463 18.725014 0.271300 +vn 0.162469 0.442603 0.065012 +v 56.726250 18.581358 1.411301 +vn 0.387628 1.055987 0.155110 +v 57.345474 18.395184 1.131300 +vn 0.463011 1.118402 0.114989 +v 56.170273 18.906456 0.801300 +vn 0.159573 0.371591 0.017341 +v 56.703644 18.686672 0.791300 +vn 0.693719 1.672978 0.124718 +v 56.759300 18.639738 1.111300 +vn 0.268263 0.710285 0.081438 +v 56.264843 18.837488 1.091300 +vn 0.135447 0.358626 0.041119 +v 55.634178 19.112370 0.771300 +vn 0.208236 0.404081 0.147508 +v 55.709282 19.054428 1.281301 +vn -0.529014 -0.859751 -0.203853 +v 42.283844 15.920464 0.421300 +vn -0.421902 -0.685673 -0.162578 +v 42.275127 16.023041 0.011300 +vn -1.478593 -0.027675 0.075922 +v 42.140373 16.438543 0.381300 +vn -1.650664 0.196990 0.030223 +v 42.151951 16.313787 0.561300 +vn -1.788444 -0.240098 0.069759 +v 42.150509 15.975405 1.141300 +vn -0.369333 -0.619719 -0.219816 +v 42.301014 15.787395 0.811300 +vn -0.669796 -1.123876 -0.398643 +v 42.376408 15.657333 1.051300 +vn -0.394499 -0.470218 -0.213218 +v 42.179111 15.753633 1.111300 +vn -1.010604 -0.821539 -0.235819 +v 42.122471 16.052954 0.651300 +vn -1.282101 -0.109027 0.041651 +v 42.142494 15.897716 0.861300 +vn -0.618833 -0.871920 -0.280219 +v 42.548244 15.688516 0.591300 +vn 0.467581 -0.202197 -0.677849 +v 50.503815 21.253012 0.000000 +vn 0.080861 -0.034985 -0.117300 +v 50.484531 21.036440 0.051300 +vn 0.587953 -0.457290 -1.066062 +v 50.533146 21.290724 0.000000 +vn 0.454872 -0.654102 -1.333660 +v 50.964127 21.093788 0.261300 +vn 0.234212 -0.336794 -0.686696 +v 50.684124 21.062183 0.181300 +vn 0.207292 -0.447386 -0.878013 +v 51.021397 21.643467 0.000000 +vn 0.720520 -0.640778 -1.285775 +v 50.697014 21.311850 0.081300 +vn 0.295755 -0.402910 -0.821293 +v 50.965858 21.360052 0.131300 +vn 0.277861 -0.456804 -0.838120 +v 51.350311 21.630598 0.111300 +vn 0.227385 -0.420295 -0.748129 +v 51.415382 21.863918 0.000000 +vn 0.213930 -0.427899 -0.772021 +v 51.982574 21.658028 0.271300 +vn 0.096822 -0.193631 -0.349304 +v 51.703648 22.008060 0.000000 +vn -0.569489 -0.541906 -0.077157 +v 42.110317 16.321945 0.811300 +vn -0.332631 -0.598794 -0.221333 +v 41.968113 16.515526 0.501300 +vn -0.399460 -0.720690 -0.251683 +v 41.593826 16.480778 1.101300 +vn -1.603338 -0.202715 -0.187351 +v 42.135784 16.194456 0.731300 +vn -1.433027 -0.152600 -0.099005 +v 42.130768 16.058533 0.921300 +vn -0.478918 -0.855574 -0.326486 +v 41.857510 16.429113 0.901300 +vn -0.622737 -1.053378 -0.371136 +v 41.846916 16.301491 1.281301 +vn -0.868867 -0.612169 -0.203539 +v 39.998005 17.456356 2.031301 +vn -1.179517 -0.851310 -0.309967 +v 40.039291 17.383085 2.075428 +vn -1.105528 -0.797905 -0.290525 +v 40.195396 17.166796 2.075428 +vn -1.022804 -1.173831 -0.449869 +v 40.486897 16.849052 2.075428 +vn -1.012937 -1.265922 -0.516749 +v 40.810982 16.567873 2.075428 +vn -0.834145 -1.042476 -0.425538 +v 40.794003 16.581459 2.075428 +vn -0.756049 -0.959548 -0.442347 +v 40.971882 16.653076 1.551300 +vn -0.531582 -0.863632 -0.338941 +v 41.288498 16.540609 1.341300 +vn -0.735577 -0.705176 -0.344139 +v 40.223339 17.282509 1.651300 +vn 0.524526 -0.400073 -0.345442 +v 50.735542 19.265142 1.381300 +vn 1.250229 -0.414052 -0.644665 +v 50.614803 19.641869 0.761300 +vn 0.995083 -0.548673 -0.440537 +v 50.632530 19.364586 1.061300 +vn 0.851113 0.085188 -0.089185 +v 50.544102 19.281042 0.501300 +vn 0.610679 -0.288737 -0.389209 +v 50.720531 19.556303 1.021300 +vn 0.980344 -0.496292 -0.806853 +v 50.800095 19.778498 0.981300 +vn 0.526215 -0.266392 -0.433091 +v 50.964054 19.695932 1.231300 +vn 0.936767 -0.174462 -0.292931 +v 50.585346 20.079977 0.461300 +vn 1.748316 -0.174604 -0.537778 +v 50.561161 19.882954 0.501300 +vn 1.447558 -0.480808 -0.875400 +v 50.710258 20.055496 0.681300 +vn 0.600599 -0.199490 -0.363208 +v 50.666744 19.833454 0.731300 +vn 0.666361 0.124465 -0.112769 +v 50.448540 19.602396 0.291300 +vn 0.732755 -0.248666 -0.273005 +v 50.551697 19.466888 0.751300 +vn 1.701368 -0.482571 -0.523696 +v 50.556290 19.710978 0.541300 +vn -0.140120 0.802134 0.105571 +v 52.037838 19.586424 1.421300 +vn -0.134284 0.881123 0.090647 +v 52.353611 19.690281 1.051300 +vn -0.168529 1.105822 0.113763 +v 51.904488 19.641380 0.861300 +vn -0.446638 0.923862 0.201169 +v 51.547367 19.473562 1.201301 +vn -0.168315 1.277460 0.160649 +v 52.214825 19.717482 0.581300 +vn -0.302290 1.072041 0.163831 +v 51.438919 19.545250 0.631300 +vn 0.102015 0.391514 0.079664 +v 50.613922 19.159271 1.051300 +vn 0.095867 1.384775 0.334791 +v 50.841412 19.143522 1.051300 +vn -0.390360 0.606833 0.191676 +v 51.087646 19.297039 0.991301 +vn -0.662236 1.595508 0.471776 +v 50.746552 19.284609 0.451301 +vn -0.240502 0.579434 0.171333 +v 50.799492 19.223789 0.731300 +vn -0.330367 0.568061 0.180415 +v 51.642071 19.368547 1.781301 +vn -0.254225 1.462131 0.235775 +v 52.403687 19.651648 1.411301 +vn -0.214521 0.920801 0.286957 +v 52.067257 19.425264 2.075428 +vn -0.312868 1.342922 0.418507 +v 52.003342 19.410374 2.075428 +vn -0.469966 1.295617 0.393007 +v 52.021523 19.503155 1.791300 +vn 0.335311 1.271345 0.181223 +v 50.866871 19.016041 1.431300 +vn 0.873863 0.671815 0.326407 +v 50.825802 18.879976 1.821301 +vn -0.580508 1.656464 0.699929 +v 50.939194 18.849426 2.075428 +vn -0.661362 1.233481 0.386495 +v 50.972595 18.930483 1.911301 +vn -0.681932 1.271932 0.398534 +v 50.876087 18.827311 2.075428 +vn 0.989782 -1.019947 -0.716111 +v 50.842667 18.888840 2.075428 +vn 0.788094 -0.812111 -0.570189 +v 50.775852 18.824001 2.075428 +vn -0.823716 1.302355 0.491199 +v 51.007347 18.890560 2.075428 +vn -0.315880 0.511223 0.173209 +v 51.221138 19.206028 1.551300 +vn -0.263503 0.425000 0.167702 +v 51.235577 19.059095 2.011300 +vn 0.673858 -0.855341 -0.997641 +v 51.101849 19.921127 1.131300 +vn 0.333712 -0.423587 -0.494058 +v 51.337921 19.838846 1.361300 +vn 0.445603 -0.623862 -0.498079 +v 51.355930 19.489454 1.761300 +vn 0.804159 -1.168618 -1.056971 +v 51.153053 19.594053 1.491301 +vn 0.383377 -0.137819 -0.101775 +v 50.747688 18.996159 1.791300 +vn 1.717299 -0.617346 -0.455889 +v 50.675289 19.067995 1.421300 +vn 0.401813 -0.495487 -0.336485 +v 50.983189 19.058107 1.981300 +vn 0.862510 -1.290015 -0.996574 +v 51.151600 19.255686 1.871301 +vn 0.814729 -0.668877 -0.677885 +v 50.848438 19.473598 1.311300 +vn 0.757498 -0.744460 -0.571397 +v 50.993076 19.366005 1.591300 +vn 0.734559 -0.721916 -0.554094 +v 50.866306 19.160261 1.691300 +vn 0.687702 -0.991047 -0.727235 +v 51.253815 19.176825 2.075428 +vn 0.283984 -0.449566 -0.282990 +v 51.141045 19.098572 2.075428 +vn 0.685081 -1.150263 -0.710556 +v 51.013802 19.018194 2.075428 +vn 0.029791 -0.053598 -0.039888 +v 51.829659 19.627220 1.911301 +vn 0.205147 -0.369077 -0.274655 +v 51.571022 19.361322 2.075428 +vn 0.527189 -0.975526 -0.762407 +v 51.556087 19.370977 2.051300 +vn 1.069502 -1.979047 -1.546752 +v 51.504963 19.324492 2.075428 +vn 0.292461 -0.423767 -0.599284 +v 51.735130 20.395107 1.041300 +vn 0.213290 -0.428378 -0.466274 +v 52.363537 20.697107 1.051300 +vn 0.264641 -0.577595 -0.764389 +v 52.123474 21.090008 0.671300 +vn 0.469667 -0.784566 -1.107910 +v 51.944611 20.728750 0.851300 +vn 0.572708 -1.042017 -1.008838 +v 51.539387 20.094799 1.211300 +vn 0.252071 -0.559760 -0.567494 +v 51.825386 20.009949 1.461300 +vn 0.284729 -0.525262 -0.600038 +v 51.253380 20.179659 1.001300 +vn 0.909158 -2.045251 -1.575096 +v 52.358238 19.735779 2.075428 +vn 0.522114 -1.150537 -0.930700 +v 52.128136 19.900187 1.741301 +vn 0.296735 -0.610855 -0.512163 +v 52.414280 19.779272 2.051300 +vn 0.644626 -1.155671 -0.989026 +v 51.576851 19.734388 1.621301 +vn 0.180023 -0.381554 -0.430304 +v 53.185528 21.141325 1.001300 +vn 0.534996 -1.017683 -1.073303 +v 52.095959 20.324417 1.271300 +vn 0.373387 -0.892805 -0.922083 +v 52.824238 20.621254 1.311300 +vn 0.536263 -1.247715 -1.046999 +v 52.829071 20.094313 1.891300 +vn 0.260962 -0.607178 -0.509503 +v 52.465233 20.223242 1.551300 +vn 0.210605 -0.469366 -0.463354 +v 53.326710 20.501196 1.661301 +vn 0.444514 -0.327777 -0.564053 +v 50.633446 20.546118 0.341300 +vn 1.187726 -0.566232 -1.208872 +v 50.601097 20.307468 0.421300 +vn 0.660931 -0.710407 -1.087601 +v 51.000713 20.250780 0.801300 +vn 0.248509 -0.507286 -0.628906 +v 51.116188 20.509171 0.681300 +vn 0.440818 -0.899850 -1.115587 +v 51.415928 20.457647 0.841300 +vn 0.431502 -0.460814 -0.577020 +v 50.784241 20.285990 0.611300 +vn 0.403323 -0.251466 -0.401752 +v 50.893536 19.997971 0.901300 +vn 0.264993 -0.365283 -0.619094 +v 51.338276 21.164591 0.361300 +vn 0.258606 -0.464651 -0.701826 +v 50.918037 20.821810 0.401300 +vn 0.230589 -0.372562 -0.551953 +v 51.567173 20.788298 0.681300 +vn 0.528324 -0.853612 -1.252810 +v 51.225937 20.811922 0.521300 +vn 0.562942 -0.089156 -0.448905 +v 50.463345 20.781193 0.081300 +vn 0.855784 -0.647092 -1.085843 +v 50.849781 20.546957 0.511300 +vn 0.705273 -0.431830 -1.361038 +v 50.654640 20.801357 0.271300 +vn 0.163049 -0.968107 -0.420053 +v 45.258312 14.184795 1.911301 +vn 0.098299 -0.583655 -0.253243 +v 45.657223 14.308386 1.781301 +vn 0.218347 -1.296442 -0.562514 +v 45.463303 14.148107 2.075428 +vn 0.102107 -1.230741 -0.488024 +v 45.004612 14.098666 2.075428 +vn 0.156130 -1.881696 -0.746120 +v 45.176662 14.112942 2.075428 +vn 0.082386 -1.130190 -0.453803 +v 45.327480 14.123936 2.075428 +vn -0.024185 -0.586069 -0.193341 +v 44.811405 14.104142 2.075428 +vn -0.153439 -0.650722 -0.289959 +v 44.266819 14.530369 1.261300 +vn -0.299485 -1.270087 -0.565946 +v 43.869648 14.673037 1.151300 +vn -0.090723 -0.590158 -0.274270 +v 44.570549 14.168226 1.911301 +vn -0.267364 -1.739224 -0.808286 +v 44.218151 14.208457 1.941300 +vn -0.055109 -1.245297 -0.606277 +v 44.917225 14.172359 1.871301 +vn -0.228660 -1.081257 -0.583125 +v 44.403446 14.345078 1.551300 +vn 0.040879 -0.411947 -0.220499 +v 44.772156 14.388125 1.441300 +vn 0.044367 -1.473633 -0.683410 +v 45.268631 14.384522 1.481300 +vn -0.020382 -1.002357 -0.390438 +v 44.751701 14.651537 0.851300 +vn -0.018878 -0.928434 -0.361643 +v 45.195248 14.708736 0.681300 +vn -0.318321 -0.881207 -0.311536 +v 44.026333 15.031433 0.121301 +vn -0.328093 -1.400222 -0.461500 +v 43.954647 14.922986 0.501300 +vn -0.197052 -0.616408 -0.249037 +v 44.038479 14.762449 0.861300 +vn -0.504262 -1.577407 -0.637295 +v 43.791382 14.825280 0.901300 +vn -0.203312 -0.933686 -0.354819 +v 44.416191 14.630799 0.991301 +vn 0.139079 0.835516 -0.032202 +v 53.471458 19.658611 0.921300 +vn 0.164631 0.902371 -0.005840 +v 53.296627 19.685654 0.171300 +vn -0.029549 0.669980 0.076009 +v 52.855659 19.678389 1.351300 +vn 0.097129 1.056269 0.015444 +v 52.736198 19.730608 0.621301 +vn -0.007450 1.358582 0.104843 +v 53.677162 19.610256 2.075428 +vn -0.028516 0.760183 0.123991 +v 52.398388 19.587837 1.801300 +vn -0.004646 0.584448 0.031043 +v 53.080574 19.612705 2.001300 +vn 0.139775 0.650976 -0.072565 +v 54.262379 19.539675 1.251300 +vn 0.251080 1.227214 -0.098361 +v 54.362110 19.570566 1.891300 +vn 0.074745 1.001858 0.039558 +v 53.604668 19.639711 1.571301 +vn 0.123858 1.660146 0.065550 +v 53.665756 19.620544 1.941300 +vn 0.146945 1.143248 -0.279993 +v 55.077896 19.523659 2.075428 +vn -0.062840 -0.103751 -0.044607 +v 64.842834 13.301853 0.081300 +vn -0.445787 -0.765726 -0.313953 +v 64.911766 13.295056 0.000000 +vn 0.440063 1.112052 -0.768265 +v 60.398949 16.836992 0.000000 +vn 0.980259 1.666423 -1.775683 +v 59.982857 17.021887 0.000000 +vn 0.393376 0.885265 -0.621540 +v 60.440853 16.945662 0.181300 +vn 0.184523 1.210957 -1.192482 +v 61.504608 16.564308 0.111300 +vn 0.054868 0.369655 -0.149448 +v 61.573715 16.622822 0.271300 +vn 0.151026 1.017484 -0.411358 +v 62.028839 16.555267 0.271300 +vn 0.054820 0.392826 -0.167338 +v 61.940269 16.507771 0.121301 +vn 0.053243 0.255155 -0.116309 +v 60.996693 16.656618 0.081300 +vn 0.242012 1.099664 -1.221682 +v 60.988380 16.568127 0.000000 +vn 0.478663 1.166650 -0.075765 +v 59.765835 17.214821 0.061300 +vn 0.639545 1.887397 -0.259179 +v 61.043480 16.748327 0.231300 +vn -0.003150 0.439428 -0.216757 +v 63.113354 16.537327 0.111300 +vn -0.005829 0.731325 -0.349682 +v 63.326683 16.596405 0.231300 +vn -0.013182 1.653731 -0.790729 +v 63.301929 16.543612 0.121301 +vn -1.188137 0.113799 -0.370132 +v 63.467762 16.691257 0.211300 +vn -1.472813 0.457826 -0.411900 +v 63.508831 16.827322 0.121301 +vn -0.188071 0.443064 0.269160 +v 63.476204 16.660782 0.441300 +vn -0.001883 1.169332 0.048568 +v 63.146408 16.595699 0.241301 +vn -1.640269 0.881255 0.444035 +v 63.379196 16.643761 0.331300 +vn -0.538200 0.358228 0.419198 +v 63.453461 16.802143 0.291300 +vn -0.714524 0.151191 -0.356184 +v 63.563332 16.869267 0.000000 +vn -0.862996 1.244132 -0.582073 +v 63.702240 17.084846 0.000000 +vn -1.278120 0.511929 -0.397282 +v 63.550045 16.927330 0.051300 +vn -0.373817 0.149726 -0.116195 +v 63.571655 17.074409 0.171300 +vn -1.150105 0.460655 -0.357490 +v 63.586399 16.978283 0.000000 +vn -1.669477 0.669782 -0.519546 +v 63.596924 17.004517 0.000000 +vn -0.562924 0.695288 -0.273127 +v 63.884289 17.272554 0.131300 +vn -0.065887 -0.496392 -0.210336 +v 64.021957 13.973148 0.000000 +vn -0.086647 0.914386 -0.571837 +v 62.622601 16.496574 0.091300 +vn -0.141290 1.491027 -0.932456 +v 62.606987 16.437998 0.000000 +vn -0.068891 0.925834 -0.321217 +v 62.317562 16.484285 0.121301 +vn -0.100352 1.348650 -0.467913 +v 62.444904 16.545803 0.271300 +vn 0.025501 0.887488 -0.420992 +v 62.868229 16.491573 0.000000 +vn -0.060394 0.413852 -0.185673 +v 62.883144 16.539198 0.101300 +vn 0.014357 1.112704 0.438708 +v 63.210220 16.590403 0.371301 +vn -0.123472 1.369238 0.151893 +v 62.907902 16.591991 0.231300 +vn -0.059864 1.249344 0.143449 +v 62.888584 16.566954 0.441300 +vn 0.037279 1.638841 0.172321 +v 62.125984 16.536234 0.431300 +vn 0.023793 0.839513 0.097634 +v 62.589264 16.510311 0.541300 +vn 0.108116 -0.529211 -0.347563 +v 45.068783 10.750266 0.000000 +vn 0.317534 -1.554274 -1.020781 +v 45.446911 10.827517 0.000000 +vn 0.292695 -1.802644 -1.248877 +v 45.862362 10.913415 0.000000 +vn 0.041034 -0.367392 -0.279653 +v 46.640980 10.981247 0.101300 +vn 0.285740 -1.534436 -1.124965 +v 46.582359 11.044599 0.000000 +vn 0.168977 -1.714494 -0.979450 +v 44.303207 10.667513 0.000000 +vn -0.478785 1.254992 -0.495591 +v 43.471535 13.572375 0.000000 +vn -0.436386 1.143420 -0.451517 +v 43.635323 13.634885 0.000000 +vn -0.483772 1.070845 -0.526715 +v 43.120888 13.425936 0.000000 +vn -0.430170 0.497755 -0.077437 +v 42.889648 13.496006 0.731300 +vn -0.687757 0.715561 -0.409565 +v 42.768314 13.318027 0.261300 +vn -0.955805 1.451051 -0.393410 +v 43.221886 13.647070 0.481300 +vn -0.435355 0.772217 -0.180031 +v 43.133743 13.491407 0.121301 +vn -0.208543 0.844628 -0.175793 +v 43.986355 13.908001 0.601300 +vn -0.247163 0.774972 -0.111576 +v 43.468269 13.764523 0.751300 +vn -0.512713 1.352788 -0.201245 +v 43.701054 13.812583 0.481300 +vn -0.351841 0.928329 -0.138101 +v 43.501747 13.714730 0.331300 +vn -0.290282 1.836290 0.699748 +v 44.535336 13.951761 0.931300 +vn -0.187792 1.260646 0.227214 +v 43.803642 13.821305 0.931300 +vn -0.149704 0.754623 0.273212 +v 44.198238 13.628705 1.541300 +vn -0.112868 0.557058 0.220080 +v 43.637951 13.637605 1.311300 +vn -0.159858 0.938492 0.425734 +v 44.164051 13.858772 1.021300 +vn -0.125217 1.221032 0.548463 +v 44.516449 13.818550 1.191300 +vn -0.224424 1.342317 0.372222 +v 43.230328 13.616594 1.141300 +vn -0.136028 0.554061 0.257689 +v 43.017841 13.341183 1.621301 +vn 0.043558 -0.607281 -0.454907 +v 47.907791 11.158160 0.021300 +vn 0.006037 -0.084169 -0.063050 +v 47.340054 10.945148 0.251300 +vn 0.032363 -0.450608 -0.337464 +v 47.821342 11.167915 0.000000 +vn -0.058004 -1.661936 -1.365601 +v 48.630932 11.150424 0.000000 +vn -0.241309 0.655356 -0.010991 +v 44.986332 14.230871 0.121301 +vn -0.188604 0.484641 -0.016984 +v 44.576412 14.087817 0.591300 +vn -0.212330 1.046509 0.474056 +v 45.540756 14.302381 0.581300 +vn -0.621951 1.990246 0.432099 +v 45.774677 14.557912 0.000000 +vn -0.399282 1.277536 0.277426 +v 45.977867 14.584218 0.171300 +vn -0.200418 0.479251 -0.004074 +v 45.229992 14.334455 0.371301 +vn -0.620497 2.117489 0.357071 +v 45.615017 14.460772 0.291300 +vn -0.143426 0.489452 0.082536 +v 45.739498 14.544465 0.011300 +vn -0.083063 0.485426 0.242674 +v 44.939964 14.030997 0.911301 +vn 0.130260 0.273508 -0.020591 +v 59.162041 17.497768 0.000000 +vn 0.689731 1.443121 -0.114034 +v 59.157204 17.528620 0.361300 +vn 0.385129 0.846807 -0.008919 +v 57.851234 18.144773 0.351300 +vn 0.151953 0.333657 -0.008211 +v 57.240231 18.418318 0.000000 +vn 0.175519 0.385210 -0.009272 +v 57.142735 18.463736 0.041300 +vn 0.543808 1.134930 0.010105 +v 58.382030 17.875055 0.121301 +vn 0.196730 0.410576 0.003656 +v 58.159012 17.982996 0.000000 +vn 0.558158 1.118866 -0.023958 +v 57.784557 18.172255 0.081300 +vn 0.012773 0.248093 0.149103 +v 46.181084 14.676624 0.000000 +vn -0.150567 0.673851 0.370501 +v 46.479656 14.674877 0.000000 +vn -0.353164 1.580552 0.869029 +v 46.430099 14.663804 0.000000 +vn -0.162267 0.640798 0.333346 +v 46.418690 14.627550 0.061300 +vn 0.034552 -1.341783 -0.373139 +v 46.527752 15.005525 0.000000 +vn -0.241619 1.107128 0.288296 +v 46.429985 14.574905 0.331300 +vn -0.085539 0.336659 0.069221 +v 46.047825 14.426403 0.581300 +vn -0.230045 0.468499 0.060380 +v 46.776093 14.723256 0.051300 +vn -0.154081 0.621361 0.100072 +v 51.413296 19.637665 0.000000 +vn -0.183331 0.694332 0.097678 +v 51.807198 19.696470 0.321301 +vn -0.104738 1.146648 0.123298 +v 51.745522 19.725386 0.000000 +vn -0.225955 0.633667 0.111896 +v 51.336048 19.608637 0.061300 +vn -0.299301 0.796327 0.179025 +v 50.979065 19.404772 0.371301 +vn -0.054661 0.145452 0.032653 +v 50.965332 19.483084 0.000000 +vn -0.586535 -0.869779 -0.250699 +v 43.045418 15.521140 0.000000 +vn -0.389405 -0.823794 -0.272087 +v 43.684956 15.091114 0.301300 +vn -0.406554 -1.029876 -0.224499 +v 43.379070 15.295156 0.121301 +vn -0.873216 -1.557697 -0.500096 +v 43.102467 15.489160 0.000000 +vn 0.067189 -1.004506 -0.114490 +v 46.023529 14.964370 0.101300 +vn 0.131209 -1.961627 -0.223579 +v 45.968941 14.972264 0.000000 +vn 0.153264 -2.289764 -0.259634 +v 45.362976 14.931705 0.000000 +vn 0.058063 -1.236448 -0.408902 +v 45.638786 14.765943 0.571301 +vn 1.033054 2.528116 -0.132801 +v 55.993706 18.950935 0.000000 +vn 0.221340 0.780943 0.015012 +v 54.459682 19.443365 0.041300 +vn 0.228279 0.657427 -0.024351 +v 55.325996 19.194368 0.221300 +vn 0.126412 0.518449 0.061957 +v 50.668728 19.328671 0.221300 +vn 0.023290 0.093720 0.012024 +v 50.478035 19.402241 0.000000 +vn -0.259500 1.460451 0.402685 +v 50.590897 19.372744 0.011300 +vn -0.665394 -0.030518 0.066050 +v 42.109329 16.574331 0.131300 +vn -1.368261 -0.145439 -0.059043 +v 42.141357 16.326319 0.000000 +vn -0.880568 -0.393048 -0.128429 +v 42.138359 16.244389 0.271300 +vn -0.446832 -0.125486 0.075415 +v 42.267269 16.044231 0.000000 +vn -0.401174 -0.566188 -0.163861 +v 42.826092 15.562021 0.371301 +vn -0.685010 -0.966774 -0.279796 +v 42.517204 15.824296 0.221300 +vn -0.479240 -0.677473 -0.195386 +v 42.709515 15.752081 0.000000 +vn -0.497534 -0.778306 -0.185595 +v 42.679409 15.773377 0.000000 +vn -1.521145 -2.488286 -0.596011 +v 42.335464 15.988862 0.000000 +vn 0.351857 -0.672005 -1.220973 +v 55.600388 24.031174 0.000000 +vn 0.634934 -1.212546 -2.202777 +v 55.220570 23.832287 0.000000 +vn 0.347313 -0.632409 -1.116512 +v 55.017742 23.542051 0.101300 +vn 0.331105 -0.566969 -0.963464 +v 56.669891 24.472103 0.121301 +vn 0.457706 -0.783754 -1.331853 +v 56.572514 24.621365 0.000000 +vn 0.409122 0.284792 -1.156225 +v 60.197067 31.036968 0.031301 +vn 0.106106 0.073861 -0.299867 +v 60.270851 30.803896 0.000000 +vn 0.886181 -0.351600 -1.329693 +v 61.669041 28.399567 0.571301 +vn 0.410924 0.031466 -0.707704 +v 61.276455 28.786329 0.241301 +vn 0.229714 -0.076548 -0.390439 +v 60.844887 27.797266 0.181300 +vn 0.760466 -0.253411 -1.292546 +v 60.861900 28.773060 0.000000 +vn 0.469426 0.270883 -0.831849 +v 60.686691 31.366161 0.381300 +vn 0.687783 0.396887 -1.218789 +v 61.184612 31.700933 0.771300 +vn 0.392125 0.130800 -0.742279 +v 61.219997 29.748512 0.251300 +vn 0.409233 0.135624 -0.637370 +v 61.612225 30.867779 0.741301 +vn 0.932349 0.322002 -1.481832 +v 61.014294 30.574221 0.301300 +vn 0.417194 -0.582216 -1.037076 +v 57.668583 25.358994 0.000000 +vn 0.060608 -0.084581 -0.150661 +v 58.013969 24.749165 0.481300 +vn 0.488366 -0.681532 -1.213989 +v 57.542175 25.268414 0.000000 +vn 0.740613 -0.961619 -1.597745 +v 59.376495 26.623041 0.000000 +vn 0.289387 -0.361670 -0.640432 +v 59.448978 26.593630 0.051300 +vn 0.480405 -0.600497 -1.063461 +v 58.820107 25.700876 0.271300 +vn 0.489873 -0.612331 -1.084419 +v 58.500107 25.925337 0.000000 +vn 0.179725 -0.224652 -0.397852 +v 59.261951 26.534822 0.000000 +vn 0.699896 -0.600843 -1.137908 +v 60.145786 27.134422 0.101300 +vn 0.041554 -0.045633 -0.085520 +v 60.013409 27.203756 0.000000 +vn 1.067030 0.100882 -0.007669 +v 50.433823 19.821438 0.011300 +vn 1.705272 0.161225 -0.012257 +v 50.433590 19.823040 0.000000 +vn 0.978401 0.214445 -0.117072 +v 50.465988 19.397224 0.061300 +vn 1.589545 -0.222977 -0.257982 +v 50.429310 19.802341 0.000000 +vn 1.946858 0.315291 -0.453240 +v 50.447189 19.425182 0.000000 +vn 0.564054 0.091348 -0.131315 +v 50.436943 19.488451 0.000000 +vn 0.598051 0.011867 -0.133373 +v 50.427013 20.110979 0.000000 +vn 0.129894 0.002698 -0.028873 +v 50.491772 19.896551 0.271300 +vn -0.740531 -0.693972 -0.123823 +v 41.389538 16.945930 0.231300 +vn -0.519658 -0.473261 -0.098438 +v 41.091381 17.299776 0.031301 +vn -0.658679 -0.444701 -0.280611 +v 40.676907 17.800282 0.000000 +vn -0.084082 -0.080646 -0.043996 +v 40.741001 17.534153 0.271300 +vn -1.288404 -1.235757 -0.674158 +v 41.062263 17.347210 0.000000 +vn -0.989319 -0.948651 -0.517829 +v 40.793709 17.627277 0.000000 +vn -0.651795 -0.766174 -0.383851 +v 41.131283 17.025352 0.511300 +vn -0.548729 -0.675386 -0.340514 +v 40.844997 17.182323 0.661301 +vn -0.219845 -0.827879 -0.131537 +v 41.909267 16.697502 0.000000 +vn -0.648922 -1.313931 -0.239024 +v 41.388130 16.988703 0.000000 +vn -0.553655 -0.846478 -0.366157 +v 41.587540 16.669352 0.571301 +vn -0.682828 -1.043969 -0.451584 +v 41.301254 16.826323 0.641300 +vn -0.425526 -0.647420 -0.257526 +v 41.803730 16.706255 0.121301 +vn -0.598816 -0.945917 -0.327899 +v 41.664715 16.836308 0.000000 +vn -0.153529 -0.242358 -0.084046 +v 41.592556 16.805275 0.221300 +vn -0.463722 -0.653796 -0.229234 +v 41.605942 16.873539 0.000000 +vn -0.623823 -1.478140 -0.436213 +v 42.044182 16.640574 0.000000 +vn 0.295191 -0.617064 -1.098002 +v 53.096756 22.563786 0.091300 +vn 0.982632 -0.089116 -0.223922 +v 50.492939 20.307037 0.211300 +vn 1.219678 -0.110614 -0.277939 +v 50.474319 20.101730 0.211300 +vn 0.848853 -0.076984 -0.193436 +v 50.432938 20.176369 0.000000 +vn 1.570637 -0.044757 -0.653308 +v 50.469906 20.520515 0.141300 +vn 0.310415 -0.055592 -0.253758 +v 50.441887 21.032480 0.000000 +vn 0.600163 0.071424 -0.248458 +v 50.416592 20.891237 0.000000 +vn 1.065669 -0.072954 -0.433874 +v 50.417271 20.591997 0.000000 +vn 1.546259 -0.111234 -0.617435 +v 50.430431 20.774944 0.000000 +vn -0.459733 -1.313780 -0.435273 +v 43.682434 15.191821 0.000000 +vn 0.003365 -0.678405 -0.219357 +v 45.316448 14.922773 0.051300 +vn 0.002610 -0.526348 -0.170191 +v 44.814808 14.826516 0.341300 +vn 0.004990 -1.045458 -0.338145 +v 44.997395 14.937778 0.000000 +vn 0.029649 -0.827778 -0.201680 +v 45.269882 14.933604 0.000000 +vn -0.102786 -0.863567 -0.276499 +v 44.346096 14.824672 0.521300 +vn -0.199167 -1.691558 -0.540893 +v 44.484798 14.975032 0.000000 +vn 0.257493 1.115414 -0.039654 +v 53.901691 19.574310 0.101300 +vn 0.111329 0.608014 -0.004816 +v 54.173672 19.528233 0.571301 +vn 0.226298 1.221849 0.055048 +v 53.240833 19.703705 0.000000 +vn 0.363988 1.919519 0.093161 +v 53.862198 19.586716 0.000000 +vn 0.014409 0.763723 0.029996 +v 52.259041 19.759249 0.121301 +vn 0.030429 1.847511 0.172668 +v 52.354431 19.769014 0.000000 +vn 0.029874 1.810955 0.169131 +v 52.675400 19.763720 0.000000 +vn 0.062921 0.592932 0.041988 +v 53.047077 19.724266 0.000000 +vn 0.197716 1.862295 0.131669 +v 52.711155 19.749933 0.141300 +vn 0.221254 -0.166760 -0.355918 +v 62.457268 26.133923 2.011300 +vn 0.500637 0.265763 -0.899595 +v 62.941738 32.732666 2.075428 +vn 0.215489 0.072617 -0.345778 +v 62.924271 31.533014 1.711300 +vn 0.553810 0.186628 -0.888652 +v 63.749718 30.817377 2.075428 +vn 0.348422 0.192247 -0.606252 +v 61.732327 32.069183 1.191300 +vn 0.716754 0.395481 -1.247146 +v 62.257229 31.180939 1.211300 +vn 0.797545 -0.269458 -1.121943 +v 62.070946 28.464931 0.841300 +vn 0.399466 -0.134963 -0.561947 +v 61.981915 27.826681 0.931300 +vn 0.906632 -0.383529 -1.121273 +v 62.701897 28.117939 1.351300 +vn 1.549408 -0.041492 -2.164240 +v 63.879547 29.524944 2.075428 +vn 0.107199 -0.002871 -0.149737 +v 63.867805 29.086479 2.075428 +vn 0.425060 0.057197 -0.627346 +v 62.668526 30.264513 1.291300 +vn 0.555007 0.035703 -0.846150 +v 63.782631 29.772425 2.001300 +vn 0.927367 0.109042 -1.350173 +v 61.912354 30.009161 0.751300 +vn 0.686670 0.057915 -0.948339 +v 63.006123 29.045486 1.461300 +vn 0.704390 0.095640 -1.035447 +v 63.399239 30.647348 1.821301 +vn 0.324576 0.044070 -0.477124 +v 63.858501 30.016184 2.075428 +vn 0.537884 -0.066858 -0.709208 +v 63.677570 28.978786 1.941300 +vn 0.634075 -0.531343 -1.074534 +v 61.250008 26.334425 1.171300 +vn 0.330707 -0.144137 -0.466260 +v 62.770679 27.549644 1.601300 +vn 0.672744 -0.293211 -0.948495 +v 63.352257 27.350283 2.075428 +vn 0.474346 -0.050486 -0.670963 +v 62.084862 29.161140 0.801300 +vn 0.345526 -0.306750 -0.590180 +v 60.554966 26.758825 0.551300 +vn 0.354511 -0.218016 -0.568393 +v 62.202347 26.781919 1.541300 +vn 0.457049 -0.457223 -0.799124 +v 62.026871 25.555334 2.051300 +vn 1.348601 -1.349080 -2.357332 +v 61.800392 25.286776 2.075428 +vn 0.651141 -0.166007 -0.941451 +v 62.880753 28.479206 1.411301 +vn 0.316618 -0.243601 -0.492374 +v 62.666050 26.647833 1.891300 +vn 0.580967 -0.058424 -0.814760 +v 62.467407 28.502548 1.121301 +vn 0.865668 -0.548063 -1.187089 +v 62.144852 27.297577 1.261300 +vn 0.809943 -0.334384 -1.104740 +v 63.377190 27.776676 1.961300 +vn 0.548941 -0.226630 -0.748740 +v 63.559708 27.841713 2.075428 +vn 0.822925 -0.026629 -1.126290 +v 63.884701 29.791426 2.075428 +vn 0.987775 -0.848628 -1.524773 +v 62.544075 26.119741 2.075428 +vn 0.168485 -0.110494 -0.264217 +v 62.864372 26.998074 1.871301 +vn 0.469632 -0.053016 -0.577123 +v 63.316845 28.314493 1.781301 +vn 1.259829 -0.015223 -1.697939 +v 63.881615 29.696056 2.075428 +vn -1.116538 -0.837288 -0.243482 +v 40.272598 18.526913 0.000000 +vn -0.147438 -0.109448 -0.032224 +v 40.271191 18.519688 0.031301 +vn -1.404460 -1.042581 -0.306958 +v 40.279541 18.517654 0.000000 +vn -0.932658 -0.692345 -0.203841 +v 40.283421 18.512428 0.000000 +vn -0.030162 -0.396948 -0.246029 +v 44.055286 10.683721 0.000000 +vn -0.070865 -0.918886 -0.568930 +v 44.210339 10.671939 0.000000 +vn -0.126580 -1.641333 -1.016234 +v 44.226353 10.670704 0.000000 +vn -1.472884 -1.180710 -0.431461 +v 41.089275 17.313841 0.000000 +vn 0.000000 0.000000 -2.694137 +v 64.480110 48.682880 0.000000 +vn 0.000000 0.000000 -0.131042 +v 63.987373 48.390396 0.000000 +vn 0.000000 0.000000 -0.557363 +v 63.312641 48.240284 0.000000 +vn 0.000000 0.000000 -2.957559 +v 63.470959 48.246231 0.000000 +vn 0.000000 0.000000 -0.222023 +v 63.109184 48.230141 0.000000 +vn 0.000000 0.000000 -2.165366 +v 65.079231 49.727600 0.000000 +vn 0.000000 0.000000 -2.817055 +v 65.122589 50.122108 0.000000 +vn 0.000000 0.000000 -0.933954 +v 62.752930 48.271626 0.000000 +vn 0.000000 0.000000 -0.014923 +v 65.035187 50.522205 0.000000 +vn 0.000000 0.000000 -0.048211 +v 64.957802 50.735157 0.000000 +vn 0.000000 0.000000 -1.363374 +v 63.759781 51.761776 0.000000 +vn 0.000000 0.000000 -0.076195 +v 63.222897 51.864010 0.000000 +vn 0.000000 0.000000 -1.177278 +v 62.645588 51.850018 0.000000 +vn 0.000000 0.000000 -1.143016 +v 62.461102 51.812378 0.000000 +vn 0.000000 0.000000 -0.051645 +v 62.327553 51.777657 0.000000 +vn 0.000000 0.000000 -0.073002 +v 61.861835 51.598053 0.000000 +vn 0.000000 0.000000 -1.110080 +v 61.675518 51.496643 0.000000 +vn 0.000000 0.000000 -0.037490 +v 61.690296 48.728920 0.000000 +vn 0.000000 0.000000 -1.308676 +v 61.393475 51.356419 0.000000 +vn 0.000000 0.000000 -1.185996 +v 61.624588 48.758369 0.000000 +vn 0.000000 0.000000 -0.012653 +v 61.070553 51.292942 0.000000 +vn 0.000000 0.000000 -1.377572 +v 61.007465 51.303791 0.000000 +vn 0.000000 0.000000 -1.714926 +v 60.741539 48.803917 0.000000 +vn 0.000000 0.000000 -1.402505 +v 60.679977 48.801567 0.000000 +vn 0.000000 0.000000 -0.040493 +v 60.322876 48.776569 0.000000 +vn 0.000000 0.000000 -1.284600 +v 60.188454 48.766445 0.000000 +vn 0.000000 0.000000 -0.914945 +v 59.482933 48.580936 0.000000 +vn 0.000000 0.000000 -0.027399 +v 59.452187 48.570026 0.000000 +vn 0.000000 0.000000 -1.600263 +v 60.448544 51.495804 0.000000 +vn 0.000000 0.000000 -1.290465 +v 60.271732 51.644436 0.000000 +vn 0.000000 0.000000 -0.027308 +v 58.090282 47.994900 0.000000 +vn 0.000000 0.000000 -0.051586 +v 60.262596 51.654442 0.000000 +vn 0.000000 0.000000 -0.013965 +v 60.180035 51.744980 0.000000 +vn 0.000000 0.000000 -3.076042 +v 60.246014 51.674625 0.000000 +vn 0.000000 0.000000 -1.006990 +v 60.127167 51.837410 0.000000 +vn 0.000000 0.000000 -1.675031 +v 60.105438 51.875820 0.000000 +vn 0.000000 0.000000 -1.735282 +v 60.065754 51.966747 0.000000 +vn 0.000000 0.000000 -1.309239 +v 55.256569 50.949829 0.000000 +vn 0.000000 0.000000 -1.787232 +v 55.268635 51.176529 0.000000 +vn 0.000000 0.000000 -2.407997 +v 55.324024 51.742405 0.000000 +vn 0.000000 0.000000 -2.410910 +v 55.335953 51.847431 0.000000 +vn 0.000000 0.000000 -0.824562 +v 55.338779 52.025143 0.000000 +vn 0.000000 0.000000 -1.022635 +v 55.342739 52.232533 0.000000 +vn 0.000000 0.000000 -0.017517 +v 55.212196 52.734253 0.000000 +vn 0.000000 0.000000 -1.632767 +v 55.045216 53.035301 0.000000 +vn 0.000000 0.000000 -1.463109 +v 55.084309 52.946148 0.000000 +vn 0.000000 0.000000 -1.480846 +v 56.928356 54.004257 0.000000 +vn 0.000000 0.000000 -1.507736 +v 56.747494 54.287418 0.000000 +vn 0.000000 0.000000 -1.566263 +v 54.941086 53.207741 0.000000 +vn 0.000000 0.000000 -1.594914 +v 54.894543 53.300442 0.000000 +vn 0.000000 0.000000 -1.562555 +v 56.645294 54.471153 0.000000 +vn 0.000000 0.000000 -1.578781 +v 56.532547 54.690456 0.000000 +vn 0.000000 0.000000 -1.483269 +v 54.444645 54.002571 0.000000 +vn 0.000000 0.000000 -1.392110 +v 54.378174 54.084770 0.000000 +vn 0.000000 0.000000 -2.035538 +v 56.207817 55.705570 0.000000 +vn 0.000000 0.000000 -0.813412 +v 54.114685 54.313580 0.000000 +vn 0.000000 0.000000 -1.116091 +v 53.901756 54.463596 0.000000 +vn 0.000000 0.000000 -2.044781 +v 53.027493 55.290592 0.000000 +vn 0.000000 0.000000 -0.018198 +v 53.255772 54.959660 0.000000 +vn 0.000000 0.000000 -3.060373 +v 53.204803 55.014683 0.000000 +vn 0.000000 0.000000 -2.182216 +v 52.898952 55.605797 0.000000 +vn 0.000000 0.000000 -2.390941 +v 52.877563 56.535179 0.000000 +vn 0.000000 0.000000 -2.854219 +v 53.019302 56.857376 0.000000 +vn 0.000000 0.000000 -0.140468 +v 53.513073 57.339382 0.000000 +vn 0.000000 0.000000 -0.110570 +v 53.688206 57.442547 0.000000 +vn 0.000000 0.000000 -3.008187 +v 52.908985 55.572414 0.000000 +vn 0.000000 0.000000 -2.981461 +v 53.403751 54.808029 0.000000 +vn 0.000000 0.000000 -0.072510 +v 56.167480 56.069714 0.000000 +vn 0.000000 0.000000 -0.038063 +v 54.821514 57.628403 0.000000 +vn 0.000000 0.000000 -2.448975 +v 55.147293 57.549438 0.000000 +vn 0.000000 0.000000 -0.131908 +v 55.286228 57.490658 0.000000 +vn 0.000000 0.000000 -2.915579 +v 55.994617 56.795670 0.000000 +vn 0.000000 0.000000 -2.885711 +v 55.553806 57.337498 0.000000 +vn 0.000000 0.000000 -0.131548 +v 55.761902 57.133377 0.000000 +vn 0.000000 0.000000 -0.088006 +v 56.067764 56.595654 0.000000 +vn 0.000000 0.000000 -0.109900 +v 54.518078 57.637920 0.000000 +vn 0.000000 0.000000 -0.106083 +v 54.279236 57.620731 0.000000 +vn 0.000000 0.000000 -0.043569 +v 56.240940 55.434422 0.000000 +vn 0.000000 0.000000 -3.013422 +v 56.790901 54.230206 0.000000 +vn 0.000000 0.000000 -0.050253 +v 56.846279 54.133682 0.000000 +vn 0.000000 0.000000 -2.970831 +v 56.954494 53.979534 0.000000 +vn 0.000000 0.000000 -0.137009 +v 57.012627 53.901855 0.000000 +vn 0.000000 0.000000 -2.207832 +v 59.999565 52.261093 0.000000 +vn 0.000000 0.000000 -1.973233 +v 60.012703 52.418621 0.000000 +vn 0.000000 0.000000 -1.380072 +v 60.018719 52.483521 0.000000 +vn 0.000000 0.000000 -0.050170 +v 57.480488 53.755138 0.000000 +vn 0.000000 0.000000 -0.084427 +v 57.533550 53.774788 0.000000 +vn 0.000000 0.000000 -0.758180 +v 57.714054 53.844696 0.000000 +vn 0.000000 0.000000 -1.994517 +v 57.949196 54.007008 0.000000 +vn 0.000000 0.000000 -0.052711 +v 57.848919 53.925129 0.000000 +vn 0.000000 0.000000 -3.066508 +v 57.877495 53.951088 0.000000 +vn 0.000000 0.000000 -1.378191 +v 57.995850 54.041027 0.000000 +vn 0.000000 0.000000 -1.676337 +v 58.131786 54.210022 0.000000 +vn 0.000000 0.000000 -1.404683 +v 60.141090 52.914642 0.000000 +vn 0.000000 0.000000 -1.383682 +v 60.178909 53.002491 0.000000 +vn 0.000000 0.000000 -3.016085 +v 58.153782 54.237705 0.000000 +vn 0.000000 0.000000 -0.066082 +v 58.358196 54.476723 0.000000 +vn 0.000000 0.000000 -1.653495 +v 58.468540 54.622490 0.000000 +vn 0.000000 0.000000 -1.459362 +v 58.428577 54.571522 0.000000 +vn 0.000000 0.000000 -1.564926 +v 58.578064 54.785778 0.000000 +vn 0.000000 0.000000 -1.422020 +v 60.554928 53.764297 0.000000 +vn 0.000000 0.000000 -1.523336 +v 58.833389 55.155548 0.000000 +vn 0.000000 0.000000 -1.576223 +v 58.783684 55.078026 0.000000 +vn 0.000000 0.000000 -1.642492 +v 60.891525 54.301373 0.000000 +vn 0.000000 0.000000 -0.094529 +v 60.975754 54.408371 0.000000 +vn 0.000000 0.000000 -1.573391 +v 59.069508 55.535053 0.000000 +vn 0.000000 0.000000 -1.344552 +v 59.267315 55.925316 0.000000 +vn 0.000000 0.000000 -1.305187 +v 59.289764 55.978851 0.000000 +vn 0.000000 0.000000 -1.226500 +v 61.318317 54.725090 0.000000 +vn 0.000000 0.000000 -1.806009 +v 61.109543 54.558697 0.000000 +vn 0.000000 0.000000 -1.912369 +v 59.348137 56.194027 0.000000 +vn 0.000000 0.000000 -0.809577 +v 59.410526 56.615429 0.000000 +vn 0.000000 0.000000 -1.373645 +v 61.484558 54.840233 0.000000 +vn 0.000000 0.000000 -1.229558 +v 61.772243 55.027271 0.000000 +vn 0.000000 0.000000 -1.135567 +v 61.898228 55.095463 0.000000 +vn 0.000000 0.000000 -1.007018 +v 63.209858 57.062675 0.000000 +vn 0.000000 0.000000 -0.388272 +v 59.414654 56.942474 0.000000 +vn 0.000000 0.000000 -1.648532 +v 62.521526 58.329670 0.000000 +vn 0.000000 0.000000 -0.096519 +v 62.984089 57.764629 0.000000 +vn 0.000000 0.000000 -0.129002 +v 61.725990 58.770733 0.000000 +vn 0.000000 0.000000 -0.095972 +v 59.418045 57.138882 0.000000 +vn 0.000000 0.000000 -0.722825 +v 59.483913 57.585758 0.000000 +vn 0.000000 0.000000 -0.121768 +v 59.531609 57.736877 0.000000 +vn 0.000000 0.000000 -0.141231 +v 59.813156 58.230560 0.000000 +vn 0.000000 0.000000 -0.066900 +v 61.518066 58.811329 0.000000 +vn 0.000000 0.000000 -2.874584 +v 60.877388 58.838356 0.000000 +vn 0.000000 0.000000 -2.923540 +v 60.420708 58.709652 0.000000 +vn 0.000000 0.000000 -2.785135 +v 63.160328 56.381805 0.000000 +vn 0.000000 0.000000 -0.093771 +v 62.338779 55.327198 0.000000 +vn 0.000000 0.000000 -0.075702 +v 62.503193 55.434124 0.000000 +vn 0.000000 0.000000 -0.006650 +v 55.280750 49.864838 0.000000 +vn 0.000000 0.000000 -0.869799 +v 55.293175 49.711597 0.000000 +vn 0.000000 0.000000 -2.231943 +v 55.374920 49.197189 0.000000 +vn 0.000000 0.000000 -0.029830 +v 58.032909 47.964275 0.000000 +vn 0.000000 0.000000 -2.024023 +v 57.807449 47.801365 0.000000 +vn 0.000000 0.000000 -0.849285 +v 55.398464 49.092041 0.000000 +vn 0.000000 0.000000 -1.745626 +v 57.035374 47.271183 0.000000 +vn 0.000000 0.000000 -0.335317 +v 55.437077 48.906158 0.000000 +vn 0.000000 0.000000 -3.077427 +v 57.719566 47.735287 0.000000 +vn 0.000000 0.000000 -0.043064 +v 57.202442 47.374229 0.000000 +vn 0.000000 0.000000 -2.391191 +v 55.496349 48.611744 0.000000 +vn 0.000000 0.000000 -2.569008 +v 55.548843 48.369644 0.000000 +vn 0.000000 0.000000 -0.110472 +v 56.776657 47.110851 0.000000 +vn 0.000000 0.000000 -0.971746 +v 56.600754 47.047295 0.000000 +vn 0.000000 0.000000 -0.071955 +v 56.485764 47.026978 0.000000 +vn 0.000000 0.000000 -2.424428 +v 55.581795 47.945587 0.000000 +vn 0.000000 0.000000 -0.645211 +v 55.572525 48.099380 0.000000 +vn 0.000000 0.000000 -2.393122 +v 55.585258 47.887543 0.000000 +vn 0.000000 0.000000 -2.346252 +v 56.216324 47.010548 0.000000 +vn 0.000000 0.000000 -0.212831 +v 55.666901 47.485855 0.000000 +vn 0.000000 0.000000 -2.798083 +v 56.356163 46.995636 0.000000 +vn 0.000000 0.000000 -3.013054 +v 55.368587 49.217400 0.000000 +vn 0.000000 0.000000 -3.066035 +v 58.525620 48.206253 0.000000 +vn 0.000000 0.000000 -3.021613 +v 61.629841 51.474968 0.000000 +vn 0.000000 0.000000 -0.103987 +v 61.652737 51.485184 0.000000 +vn 0.000000 0.000000 -3.061563 +v 62.414181 51.802765 0.000000 +vn 0.000000 0.000000 -2.854345 +v 64.423370 51.444557 0.000000 +vn 0.000000 0.000000 -2.873138 +v 63.999252 51.696117 0.000000 +vn 0.000000 0.000000 -0.116382 +v 64.277756 51.530663 0.000000 +vn 0.000000 0.000000 -2.842994 +v 65.013397 50.632034 0.000000 +vn 0.000000 0.000000 -0.134853 +v 68.873352 9.235017 0.000000 +vn 0.000000 0.000000 -2.900558 +v 68.956184 9.260946 0.000000 +vn 0.000000 0.000000 -0.132818 +v 68.945930 9.258150 0.000000 +vn 0.000000 0.000000 -2.913178 +v 69.235565 9.416610 0.000000 +vn 0.000000 0.000000 -0.137540 +v 69.441864 9.587966 0.000000 +vn 0.000000 0.000000 -0.211376 +v 68.424080 9.143949 0.000000 +vn 0.000000 0.000000 -0.038127 +v 68.086441 9.171682 0.000000 +vn 0.000000 0.000000 -0.061950 +v 67.910439 9.225182 0.000000 +vn 0.000000 0.000000 -2.924140 +v 70.024284 10.981876 0.000000 +vn 0.000000 0.000000 -0.113546 +v 70.007874 11.073989 0.000000 +vn 0.000000 0.000000 -0.374196 +v 67.720558 9.307306 0.000000 +vn 0.000000 0.000000 -1.447375 +v 69.116081 12.363008 0.000000 +vn 0.000000 0.000000 -1.772025 +v 66.943573 10.164520 0.000000 +vn 0.000000 0.000000 -2.927754 +v 67.342682 9.583932 0.000000 +vn 0.000000 0.000000 -0.098563 +v 67.229904 9.724041 0.000000 +vn 0.000000 0.000000 -1.231912 +v 66.826202 10.424577 0.000000 +vn 0.000000 0.000000 -0.063046 +v 66.736610 10.640168 0.000000 +vn 0.000000 0.000000 -1.304698 +v 68.513512 12.776561 0.000000 +vn 0.000000 0.000000 -1.393505 +v 68.375572 12.896859 0.000000 +vn 0.000000 0.000000 -1.245010 +v 66.438766 11.394880 0.000000 +vn 0.000000 0.000000 -1.771534 +v 68.104843 13.135870 0.000000 +vn 0.000000 0.000000 -1.337793 +v 68.159363 13.084682 0.000000 +vn 0.000000 0.000000 -1.708837 +v 67.961029 13.281745 0.000000 +vn 0.000000 0.000000 -0.054450 +v 66.203026 11.949388 0.000000 +vn 0.000000 0.000000 -1.700070 +v 67.873825 13.395792 0.000000 +vn 0.000000 0.000000 -1.529035 +v 65.987228 12.339075 0.000000 +vn 0.000000 0.000000 -1.644051 +v 67.714111 13.630146 0.000000 +vn 0.000000 0.000000 -1.476669 +v 67.738770 13.592499 0.000000 +vn 0.000000 0.000000 -1.259602 +v 65.680344 12.744527 0.000000 +vn 0.000000 0.000000 -0.035516 +v 65.638420 12.790569 0.000000 +vn 0.000000 0.000000 -1.031983 +v 67.681374 13.876369 0.000000 +vn 0.000000 0.000000 -1.858927 +v 65.411888 12.978677 0.000000 +vn 0.000000 0.000000 -1.231759 +v 65.598999 12.822389 0.000000 +vn 0.000000 0.000000 -2.615307 +v 65.209023 13.111238 0.000000 +vn 0.000000 0.000000 -0.570100 +v 65.147392 13.152344 0.000000 +vn 0.000000 0.000000 -3.028625 +v 64.838188 13.337892 0.000000 +vn 0.000000 0.000000 -0.631749 +v 64.275360 13.821058 0.000000 +vn 0.000000 0.000000 -0.094525 +v 63.314678 16.481331 0.000000 +vn 0.000000 0.000000 -1.507289 +v 63.922424 13.986360 0.000000 +vn 0.000000 0.000000 -1.580062 +v 63.683659 13.944038 0.000000 +vn 0.000000 0.000000 -1.547931 +v 63.649193 13.938700 0.000000 +vn 0.000000 0.000000 -1.691625 +v 63.245251 16.479959 0.000000 +vn 0.000000 0.000000 -1.398234 +v 63.110195 16.475554 0.000000 +vn 0.000000 0.000000 -1.666107 +v 63.638710 13.935868 0.000000 +vn 0.000000 0.000000 -1.370631 +v 62.915154 16.490227 0.000000 +vn 0.000000 0.000000 -1.510770 +v 62.806198 16.482521 0.000000 +vn 0.000000 0.000000 -1.583134 +v 63.236858 13.811495 0.000000 +vn 0.000000 0.000000 -1.427451 +v 62.891247 13.724090 0.000000 +vn 0.000000 0.000000 -1.436434 +v 62.248024 16.403791 0.000000 +vn 0.000000 0.000000 -1.694997 +v 62.276100 16.406643 0.000000 +vn 0.000000 0.000000 -1.836354 +v 62.406410 13.555729 0.000000 +vn 0.000000 0.000000 -0.056590 +v 62.222725 16.405340 0.000000 +vn 0.000000 0.000000 -1.328710 +v 61.529652 16.450886 0.000000 +vn 0.000000 0.000000 -1.696271 +v 61.887749 16.430643 0.000000 +vn 0.000000 0.000000 -1.708010 +v 62.094109 13.444930 0.000000 +vn 0.000000 0.000000 -1.168536 +v 61.376125 13.201875 0.000000 +vn 0.000000 0.000000 -0.048567 +v 61.471798 16.459705 0.000000 +vn 0.000000 0.000000 -1.383026 +v 61.378338 16.482306 0.000000 +vn 0.000000 0.000000 -1.928322 +v 61.213146 13.147247 0.000000 +vn 0.000000 0.000000 -1.976024 +v 60.724995 16.631802 0.000000 +vn 0.000000 0.000000 -2.177713 +v 58.650913 12.431946 0.000000 +vn 0.000000 0.000000 -1.498431 +v 60.455036 16.814812 0.000000 +vn 0.000000 0.000000 -1.329817 +v 59.745026 17.161789 0.000000 +vn 0.000000 0.000000 -1.330565 +v 59.311760 17.426477 0.000000 +vn 0.000000 0.000000 -1.482905 +v 59.103264 17.525850 0.000000 +vn 0.000000 0.000000 -2.126536 +v 57.063759 12.071334 0.000000 +vn 0.000000 0.000000 -1.519027 +v 58.961708 17.592510 0.000000 +vn 0.000000 0.000000 -1.401472 +v 58.398205 17.868385 0.000000 +vn 0.000000 0.000000 -1.428497 +v 57.777042 18.173721 0.000000 +vn 0.000000 0.000000 -0.086319 +v 55.659458 11.800885 0.000000 +vn 0.000000 0.000000 -1.079028 +v 54.971992 11.685116 0.000000 +vn 0.000000 0.000000 -1.452301 +v 57.135540 18.465996 0.000000 +vn 0.000000 0.000000 -1.635237 +v 57.070114 18.494247 0.000000 +vn 0.000000 0.000000 -1.678659 +v 56.767548 18.630730 0.000000 +vn 0.000000 0.000000 -1.079917 +v 53.837734 11.515011 0.000000 +vn 0.000000 0.000000 -0.077293 +v 56.513672 18.744816 0.000000 +vn 0.000000 0.000000 -1.457427 +v 55.938515 18.973488 0.000000 +vn 0.000000 0.000000 -1.581304 +v 55.861927 19.000080 0.000000 +vn 0.000000 0.000000 -1.599296 +v 55.225250 19.227179 0.000000 +vn 0.000000 0.000000 -0.091420 +v 53.260376 11.457003 0.000000 +vn 0.000000 0.000000 -1.450876 +v 54.516186 19.428144 0.000000 +vn 0.000000 0.000000 -1.575912 +v 54.448212 19.448380 0.000000 +vn 0.000000 0.000000 -1.599625 +v 54.385056 19.462347 0.000000 +vn 0.000000 0.000000 -1.470298 +v 53.430405 19.668594 0.000000 +vn 0.000000 0.000000 -3.031923 +v 52.215267 19.770016 0.000000 +vn 0.000000 0.000000 -1.470156 +v 52.065884 19.754654 0.000000 +vn 0.000000 0.000000 -3.074801 +v 51.341309 19.619814 0.000000 +vn 0.000000 0.000000 -1.398172 +v 51.299465 19.606417 0.000000 +vn 0.000000 0.000000 -1.395849 +v 51.183216 19.564964 0.000000 +vn 0.000000 0.000000 -1.666267 +v 50.752533 19.409058 0.000000 +vn 0.000000 0.000000 -1.576334 +v 50.631542 19.383081 0.000000 +vn 0.000000 0.000000 -1.553390 +v 50.727352 19.400091 0.000000 +vn 0.000000 0.000000 -1.526064 +v 51.555206 11.253348 0.000000 +vn 0.000000 0.000000 -1.576107 +v 51.233711 11.229512 0.000000 +vn 0.000000 0.000000 -0.886879 +v 49.510178 11.118949 0.000000 +vn 0.000000 0.000000 -2.148497 +v 48.935307 11.140938 0.000000 +vn 0.000000 0.000000 -1.234059 +v 47.947315 11.174286 0.000000 +vn 0.000000 0.000000 -1.895287 +v 47.898708 11.175250 0.000000 +vn 0.000000 0.000000 -0.150376 +v 46.774761 14.749618 0.000000 +vn 0.000000 0.000000 -1.633010 +v 47.262684 11.127792 0.000000 +vn 0.000000 0.000000 -0.013991 +v 46.874310 11.084418 0.000000 +vn 0.000000 0.000000 -1.523740 +v 45.446323 14.379574 0.000000 +vn 0.000000 0.000000 -1.610826 +v 45.253910 14.291708 0.000000 +vn 0.000000 0.000000 -1.647095 +v 46.141029 10.962415 0.000000 +vn 0.000000 0.000000 -1.647063 +v 45.943081 10.926521 0.000000 +vn 0.000000 0.000000 -1.447297 +v 44.906487 14.132229 0.000000 +vn 0.000000 0.000000 -1.609046 +v 44.644337 14.017613 0.000000 +vn 0.000000 0.000000 -1.371001 +v 44.624275 10.699157 0.000000 +vn 0.000000 0.000000 -1.447283 +v 43.714466 13.660912 0.000000 +vn 0.000000 0.000000 -2.959394 +v 43.201855 13.462514 0.000000 +vn 0.000000 0.000000 -0.027841 +v 42.992626 13.328686 0.000000 +vn 0.000000 0.000000 -0.943695 +v 43.623703 10.738845 0.000000 +vn 0.000000 0.000000 -0.117205 +v 42.800236 11.173601 0.000000 +vn 0.000000 0.000000 -2.528530 +v 42.339016 12.283109 0.000000 +vn 0.000000 0.000000 -2.639802 +v 42.332169 12.425735 0.000000 +vn 0.000000 0.000000 -2.727426 +v 42.450073 11.632401 0.000000 +vn 0.000000 0.000000 -2.731195 +v 42.792942 13.192142 0.000000 +vn 0.000000 0.000000 -0.068743 +v 42.403202 12.571362 0.000000 +vn 0.000000 0.000000 -2.841005 +v 42.510204 12.862965 0.000000 +vn 0.000000 0.000000 -0.160394 +v 42.675167 13.078939 0.000000 +vn 0.000000 0.000000 -2.725222 +v 45.759346 14.550605 0.000000 +vn 0.000000 0.000000 -0.410159 +v 45.750504 14.544766 0.000000 +vn 0.000000 0.000000 -0.194271 +v 46.060760 14.647325 0.000000 +vn 0.000000 0.000000 -1.125182 +v 50.586254 19.375347 0.000000 +vn 0.000000 0.000000 -1.642677 +v 46.668919 14.852015 0.000000 +vn 0.000000 0.000000 -2.368835 +v 46.322468 15.000249 0.000000 +vn 0.000000 0.000000 -2.406844 +v 46.085842 14.982454 0.000000 +vn 0.000000 0.000000 -2.942536 +v 46.030151 14.971727 0.000000 +vn 0.000000 0.000000 -2.389075 +v 45.321297 14.935446 0.000000 +vn 0.000000 0.000000 -3.042727 +v 44.877518 14.937206 0.000000 +vn 0.000000 0.000000 -0.067823 +v 44.517513 14.971180 0.000000 +vn 0.000000 0.000000 -2.307491 +v 44.403240 14.992568 0.000000 +vn 0.000000 0.000000 -0.798895 +v 44.036556 15.057985 0.000000 +vn 0.000000 0.000000 -2.155956 +v 43.827244 15.141148 0.000000 +vn 0.000000 0.000000 -0.955354 +v 43.553844 15.252604 0.000000 +vn 0.000000 0.000000 -0.021228 +v 43.368809 15.325649 0.000000 +vn 0.000000 0.000000 -2.011285 +v 43.021832 15.537045 0.000000 +vn 0.000000 0.000000 -2.621086 +v 42.492382 15.892935 0.000000 +vn 0.000000 0.000000 -0.489967 +v 42.124611 16.596766 0.000000 +vn 0.000000 0.000000 -2.581593 +v 42.123726 16.492155 0.000000 +vn 0.000000 0.000000 -0.411910 +v 42.280415 16.020378 0.000000 +vn 0.000000 0.000000 -2.499782 +v 42.272194 16.026695 0.000000 +vn 0.000000 0.000000 -0.362928 +v 50.430889 19.851606 0.000000 +vn 0.000000 0.000000 -0.804928 +v 40.010075 19.741812 0.000000 +vn 0.000000 0.000000 -1.684302 +v 39.456928 20.566322 0.000000 +vn 0.000000 0.000000 -2.621094 +v 39.497070 20.347998 0.000000 +vn 0.000000 0.000000 -0.158795 +v 39.765938 19.859386 0.000000 +vn 0.000000 0.000000 -0.161948 +v 39.526684 20.166491 0.000000 +vn 0.000000 0.000000 -2.594455 +v 39.535103 20.103609 0.000000 +vn 0.000000 0.000000 -0.230016 +v 39.552227 20.082443 0.000000 +vn 0.000000 0.000000 -2.016173 +v 39.367290 20.972610 0.000000 +vn 0.000000 0.000000 -2.025918 +v 39.302460 21.373716 0.000000 +vn 0.000000 0.000000 -3.006933 +v 39.304607 21.867874 0.000000 +vn 0.000000 0.000000 -3.090511 +v 39.656826 23.282156 0.000000 +vn 0.000000 0.000000 -0.746633 +v 40.009979 24.019360 0.000000 +vn 0.000000 0.000000 -1.440502 +v 40.109222 24.608551 0.000000 +vn 0.000000 0.000000 -0.838431 +v 38.056705 29.395361 0.000000 +vn 0.000000 0.000000 -0.886873 +v 37.724396 28.648481 0.000000 +vn 0.000000 0.000000 -0.106217 +v 40.054344 24.745197 0.000000 +vn 0.000000 0.000000 -1.000173 +v 37.527821 28.107817 0.000000 +vn 0.000000 0.000000 -2.078094 +v 37.421741 27.822367 0.000000 +vn 0.000000 0.000000 -1.922583 +v 37.185856 27.180298 0.000000 +vn 0.000000 0.000000 -1.360642 +v 37.168404 27.134924 0.000000 +vn 0.000000 0.000000 -1.760581 +v 37.132416 27.066044 0.000000 +vn 0.000000 0.000000 -1.666827 +v 39.844810 24.458406 0.000000 +vn 0.000000 0.000000 -1.397825 +v 38.916687 23.374853 0.000000 +vn 0.000000 0.000000 -1.690314 +v 38.783157 23.249769 0.000000 +vn 0.000000 0.000000 -1.613397 +v 35.921143 24.995623 0.000000 +vn 0.000000 0.000000 -1.400741 +v 36.157467 25.347952 0.000000 +vn 0.000000 0.000000 -0.118223 +v 38.317684 22.771931 0.000000 +vn 0.000000 0.000000 -1.448078 +v 35.706905 24.674614 0.000000 +vn 0.000000 0.000000 -1.389392 +v 38.175076 22.634008 0.000000 +vn 0.000000 0.000000 -1.664679 +v 35.341370 23.996868 0.000000 +vn 0.000000 0.000000 -2.048049 +v 35.320278 23.938261 0.000000 +vn 0.000000 0.000000 -2.042948 +v 35.315315 23.924500 0.000000 +vn 0.000000 0.000000 -1.937201 +v 35.152420 23.340546 0.000000 +vn 0.000000 0.000000 -0.641033 +v 35.152012 22.871222 0.000000 +vn 0.000000 0.000000 -2.531754 +v 36.223419 21.498837 0.000000 +vn 0.000000 0.000000 -2.733118 +v 35.392735 22.125158 0.000000 +vn 0.000000 0.000000 -0.300325 +v 35.238895 22.413294 0.000000 +vn 0.000000 0.000000 -0.115841 +v 36.093349 21.567907 0.000000 +vn 0.000000 0.000000 -2.686580 +v 35.770149 21.679413 0.000000 +vn 0.000000 0.000000 -0.170077 +v 36.387432 21.518892 0.000000 +vn 0.000000 0.000000 -0.114160 +v 36.960117 21.579193 0.000000 +vn 0.000000 0.000000 -0.330199 +v 39.458752 23.858683 0.000000 +vn 0.000000 0.000000 -1.395856 +v 46.177277 27.010525 0.000000 +vn 0.000000 0.000000 -1.458707 +v 46.331429 27.196156 0.000000 +vn 0.000000 0.000000 -0.064945 +v 39.182190 31.508781 0.000000 +vn 0.000000 0.000000 -1.429014 +v 47.301441 30.078098 0.000000 +vn 0.000000 0.000000 -1.450875 +v 47.308353 30.148684 0.000000 +vn 0.000000 0.000000 -0.010166 +v 39.452679 31.993820 0.000000 +vn 0.000000 0.000000 -0.067738 +v 47.424057 31.637428 0.000000 +vn 0.000000 0.000000 -1.678661 +v 47.419498 32.534515 0.000000 +vn 0.000000 0.000000 -1.425655 +v 47.429344 32.256355 0.000000 +vn 0.000000 0.000000 -0.060133 +v 47.405819 32.937454 0.000000 +vn 0.000000 0.000000 -1.377736 +v 47.401176 33.052399 0.000000 +vn 0.000000 0.000000 -2.103086 +v 40.775406 34.243835 0.000000 +vn 0.000000 0.000000 -0.091764 +v 47.344765 34.067524 0.000000 +vn 0.000000 0.000000 -1.519025 +v 47.286064 34.958225 0.000000 +vn 0.000000 0.000000 -0.056375 +v 47.277752 35.114471 0.000000 +vn 0.000000 0.000000 -1.647496 +v 47.273930 35.179501 0.000000 +vn 0.000000 0.000000 -1.618062 +v 47.264351 35.345135 0.000000 +vn 0.000000 0.000000 -0.091961 +v 42.190029 36.328007 0.000000 +vn 0.000000 0.000000 -1.630999 +v 47.128784 36.574310 0.000000 +vn 0.000000 0.000000 -0.986736 +v 42.598652 36.902905 0.000000 +vn 0.000000 0.000000 -1.957895 +v 43.217243 37.718750 0.000000 +vn 0.000000 0.000000 -1.091560 +v 47.129410 36.634621 0.000000 +vn 0.000000 0.000000 -1.780689 +v 47.102234 37.221626 0.000000 +vn 0.000000 0.000000 -0.113216 +v 43.803967 38.462677 0.000000 +vn 0.000000 0.000000 -0.090796 +v 47.169918 37.615139 0.000000 +vn 0.000000 0.000000 -1.730138 +v 47.184258 37.710217 0.000000 +vn 0.000000 0.000000 -1.328712 +v 47.197926 37.767120 0.000000 +vn 0.000000 0.000000 -0.116611 +v 44.627235 39.424210 0.000000 +vn 0.000000 0.000000 -1.311717 +v 44.847698 39.671604 0.000000 +vn 0.000000 0.000000 -1.384617 +v 47.417294 38.426136 0.000000 +vn 0.000000 0.000000 -0.008857 +v 44.963005 39.805645 0.000000 +vn 0.000000 0.000000 -1.690242 +v 45.186573 40.057060 0.000000 +vn 0.000000 0.000000 -1.695099 +v 47.438641 38.475071 0.000000 +vn 0.000000 0.000000 -1.436332 +v 47.425407 38.450146 0.000000 +vn 0.000000 0.000000 -0.072033 +v 45.407471 40.355961 0.000000 +vn 0.000000 0.000000 -0.152129 +v 47.817223 39.221489 0.000000 +vn 0.000000 0.000000 -0.051734 +v 45.664764 40.669334 0.000000 +vn 0.000000 0.000000 -1.504111 +v 45.816349 40.911514 0.000000 +vn 0.000000 0.000000 -0.093522 +v 47.899738 39.408676 0.000000 +vn 0.000000 0.000000 -1.543959 +v 45.689236 40.707962 0.000000 +vn 0.000000 0.000000 -0.678703 +v 45.814011 41.246258 0.000000 +vn 0.000000 0.000000 -0.012129 +v 48.046307 39.512764 0.000000 +vn 0.000000 0.000000 -2.639771 +v 45.798698 41.302238 0.000000 +vn 0.000000 0.000000 -0.453773 +v 45.677109 41.592594 0.000000 +vn 0.000000 0.000000 -0.008294 +v 45.659031 41.639969 0.000000 +vn 0.000000 0.000000 -0.735472 +v 49.870686 42.963440 0.000000 +vn 0.000000 0.000000 -2.216737 +v 49.827896 43.111443 0.000000 +vn 0.000000 0.000000 -2.202347 +v 49.824829 43.133728 0.000000 +vn 0.000000 0.000000 -0.042905 +v 47.435978 44.422634 0.000000 +vn 0.000000 0.000000 -0.010072 +v 49.894775 43.699387 0.000000 +vn 0.000000 0.000000 -1.028491 +v 47.626629 44.497555 0.000000 +vn 0.000000 0.000000 -2.977221 +v 47.677296 44.545357 0.000000 +vn 0.000000 0.000000 -2.059849 +v 47.752911 44.601379 0.000000 +vn 0.000000 0.000000 -1.500432 +v 47.813637 44.687996 0.000000 +vn 0.000000 0.000000 -1.569929 +v 49.943272 43.793327 0.000000 +vn 0.000000 0.000000 -1.532301 +v 47.903614 44.844048 0.000000 +vn 0.000000 0.000000 -1.540146 +v 48.068996 45.136234 0.000000 +vn 0.000000 0.000000 -1.617147 +v 48.074924 45.147327 0.000000 +vn 0.000000 0.000000 -0.064485 +v 48.278931 45.525852 0.000000 +vn 0.000000 0.000000 -1.654311 +v 50.280952 44.410061 0.000000 +vn 0.000000 0.000000 -1.467036 +v 48.292545 45.559589 0.000000 +vn 0.000000 0.000000 -1.641085 +v 48.325932 45.632645 0.000000 +vn 0.000000 0.000000 -1.499956 +v 50.489052 44.743378 0.000000 +vn 0.000000 0.000000 -1.509632 +v 50.328426 44.480663 0.000000 +vn 0.000000 0.000000 -1.413727 +v 50.550152 44.821453 0.000000 +vn 0.000000 0.000000 -0.082388 +v 48.530819 46.102257 0.000000 +vn 0.000000 0.000000 -1.725191 +v 50.668671 44.981510 0.000000 +vn 0.000000 0.000000 -0.071291 +v 48.599831 46.334225 0.000000 +vn 0.000000 0.000000 -1.248800 +v 50.873936 45.214355 0.000000 +vn 0.000000 0.000000 -2.045308 +v 48.687870 46.705757 0.000000 +vn 0.000000 0.000000 -1.005540 +v 48.731670 47.036217 0.000000 +vn 0.000000 0.000000 -1.407956 +v 51.083038 45.437122 0.000000 +vn 0.000000 0.000000 -1.686971 +v 50.984013 45.341984 0.000000 +vn 0.000000 0.000000 -1.104384 +v 48.747654 47.378941 0.000000 +vn 0.000000 0.000000 -1.078435 +v 51.914932 46.056446 0.000000 +vn 0.000000 0.000000 -0.071047 +v 48.750095 47.537956 0.000000 +vn 0.000000 0.000000 -2.356188 +v 50.327637 49.431858 0.000000 +vn 0.000000 0.000000 -2.498382 +v 48.825817 48.136662 0.000000 +vn 0.000000 0.000000 -2.952479 +v 50.255081 49.426579 0.000000 +vn 0.000000 0.000000 -2.537775 +v 48.892746 48.363255 0.000000 +vn 0.000000 0.000000 -2.686666 +v 49.023560 48.598579 0.000000 +vn 0.000000 0.000000 -2.942421 +v 49.043449 48.636654 0.000000 +vn 0.000000 0.000000 -0.165504 +v 49.066143 48.664684 0.000000 +vn 0.000000 0.000000 -3.005166 +v 49.499317 49.108841 0.000000 +vn 0.000000 0.000000 -0.201107 +v 49.199280 48.846622 0.000000 +vn 0.000000 0.000000 -2.895405 +v 49.243958 48.905216 0.000000 +vn 0.000000 0.000000 -0.094653 +v 49.565548 49.152405 0.000000 +vn 0.000000 0.000000 -0.104868 +v 50.185066 49.407822 0.000000 +vn 0.000000 0.000000 -0.035593 +v 51.448315 49.282784 0.000000 +vn 0.000000 0.000000 -2.937654 +v 51.795750 49.106556 0.000000 +vn 0.000000 0.000000 -0.017888 +v 51.849808 49.062286 0.000000 +vn 0.000000 0.000000 -2.631217 +v 52.398682 48.503826 0.000000 +vn 0.000000 0.000000 -0.206442 +v 52.699615 47.400894 0.000000 +vn 0.000000 0.000000 -0.100636 +v 52.610725 48.059673 0.000000 +vn 0.000000 0.000000 -2.937749 +v 52.512463 46.723049 0.000000 +vn 0.000000 0.000000 -0.095040 +v 52.611538 46.966797 0.000000 +vn 0.000000 0.000000 -0.072760 +v 52.202930 46.312378 0.000000 +vn 0.000000 0.000000 -2.967932 +v 52.069897 46.171722 0.000000 +vn 0.000000 0.000000 -2.166539 +v 45.493698 42.434731 0.000000 +vn 0.000000 0.000000 -1.157938 +v 45.447441 42.672707 0.000000 +vn 0.000000 0.000000 -2.528353 +v 47.332935 44.418064 0.000000 +vn 0.000000 0.000000 -1.205334 +v 45.373375 42.904884 0.000000 +vn 0.000000 0.000000 -0.029610 +v 47.247208 44.418026 0.000000 +vn 0.000000 0.000000 -0.035563 +v 45.358788 42.953396 0.000000 +vn 0.000000 0.000000 -3.006933 +v 46.973759 44.523376 0.000000 +vn 0.000000 0.000000 -0.055075 +v 47.040588 44.469982 0.000000 +vn 0.000000 0.000000 -3.023198 +v 47.034870 44.475655 0.000000 +vn 0.000000 0.000000 -1.483818 +v 45.073341 43.447491 0.000000 +vn 0.000000 0.000000 -1.614434 +v 46.897049 44.591339 0.000000 +vn 0.000000 0.000000 -1.472955 +v 46.762840 44.795124 0.000000 +vn 0.000000 0.000000 -1.416646 +v 44.795292 43.795326 0.000000 +vn 0.000000 0.000000 -1.374319 +v 46.640232 45.036472 0.000000 +vn 0.000000 0.000000 -1.709845 +v 46.689907 44.917561 0.000000 +vn 0.000000 0.000000 -1.756988 +v 46.490143 45.448051 0.000000 +vn 0.000000 0.000000 -1.345476 +v 44.279922 44.311607 0.000000 +vn 0.000000 0.000000 -1.746671 +v 44.368320 44.221260 0.000000 +vn 0.000000 0.000000 -1.251386 +v 43.777550 44.787102 0.000000 +vn 0.000000 0.000000 -1.142556 +v 43.415512 45.159931 0.000000 +vn 0.000000 0.000000 -1.426410 +v 42.905151 46.305698 0.000000 +vn 0.000000 0.000000 -0.062680 +v 42.910809 46.385658 0.000000 +vn 0.000000 0.000000 -0.095879 +v 44.497864 47.847580 0.000000 +vn 0.000000 0.000000 -2.341482 +v 42.929897 46.588161 0.000000 +vn 0.000000 0.000000 -2.562608 +v 42.988979 46.825386 0.000000 +vn 0.000000 0.000000 -0.171367 +v 43.831757 47.679047 0.000000 +vn 0.000000 0.000000 -2.930471 +v 43.141205 47.142586 0.000000 +vn 0.000000 0.000000 -0.116894 +v 43.275745 47.307507 0.000000 +vn 0.000000 0.000000 -0.050362 +v 43.586178 47.566113 0.000000 +vn 0.000000 0.000000 -0.099001 +v 43.341396 47.382256 0.000000 +vn 0.000000 0.000000 -3.016155 +v 43.003536 46.870480 0.000000 +vn 0.000000 0.000000 -0.067141 +v 43.020977 46.907749 0.000000 +vn 0.000000 0.000000 -2.622547 +v 46.257347 46.485935 0.000000 +vn 0.000000 0.000000 -0.257821 +v 46.163300 46.804932 0.000000 +vn 0.000000 0.000000 -0.075432 +v 45.647778 47.502705 0.000000 +vn 0.000000 0.000000 -2.959135 +v 45.889530 47.280968 0.000000 +vn 0.000000 0.000000 -2.984854 +v 46.182514 46.763866 0.000000 +vn 0.000000 0.000000 -0.088710 +v 45.266403 47.719620 0.000000 +vn 0.000000 0.000000 -0.107765 +v 42.989647 45.878578 0.000000 +vn 0.000000 0.000000 -2.944679 +v 42.938622 46.028763 0.000000 +vn 0.000000 0.000000 -2.982101 +v 43.120697 45.582294 0.000000 +vn 0.000000 0.000000 -0.106698 +v 43.271957 45.349361 0.000000 +vn 0.000000 0.000000 -2.937086 +v 43.187710 45.452984 0.000000 +vn 0.000000 0.000000 -2.925716 +v 43.029541 45.745979 0.000000 +vn 0.000000 0.000000 -3.102124 +v 47.383678 44.421333 0.000000 +vn 0.000000 0.000000 -0.028441 +v 45.626976 41.761089 0.000000 +vn 0.000000 0.000000 -3.028619 +v 45.563652 42.005787 0.000000 +vn 0.000000 0.000000 -0.084530 +v 45.551750 42.090088 0.000000 +vn 0.000000 0.000000 -3.098345 +v 49.915398 42.868061 0.000000 +vn 0.000000 0.000000 -0.043492 +v 48.204670 39.516689 0.000000 +vn 0.000000 0.000000 -1.048680 +v 49.964985 42.766563 0.000000 +vn 0.000000 0.000000 -3.065819 +v 50.002602 42.711601 0.000000 +vn 0.000000 0.000000 -1.066516 +v 50.117306 42.546875 0.000000 +vn 0.000000 0.000000 -1.529326 +v 50.250576 42.405720 0.000000 +vn 0.000000 0.000000 -0.563056 +v 48.703735 39.604240 0.000000 +vn 0.000000 0.000000 -0.016943 +v 50.351776 42.351933 0.000000 +vn 0.000000 0.000000 -1.351233 +v 50.238194 40.026909 0.000000 +vn 0.000000 0.000000 -1.581144 +v 50.652233 42.317642 0.000000 +vn 0.000000 0.000000 -0.052929 +v 50.990761 40.146320 0.000000 +vn 0.000000 0.000000 -1.603209 +v 51.047470 40.154205 0.000000 +vn 0.000000 0.000000 -1.328066 +v 51.245625 42.465721 0.000000 +vn 0.000000 0.000000 -1.776317 +v 51.163685 42.431473 0.000000 +vn 0.000000 0.000000 -1.438688 +v 51.348724 42.514309 0.000000 +vn 0.000000 0.000000 -0.028745 +v 52.132771 40.052197 0.000000 +vn 0.000000 0.000000 -2.017366 +v 52.197998 40.037609 0.000000 +vn 0.000000 0.000000 -1.063152 +v 52.275806 40.012321 0.000000 +vn 0.000000 0.000000 -0.080296 +v 51.823593 42.850212 0.000000 +vn 0.000000 0.000000 -0.095041 +v 52.572285 43.278515 0.000000 +vn 0.000000 0.000000 -3.024401 +v 52.185226 43.099018 0.000000 +vn 0.000000 0.000000 -2.952209 +v 52.917561 43.333763 0.000000 +vn 0.000000 0.000000 -0.108048 +v 52.819180 43.318104 0.000000 +vn 0.000000 0.000000 -0.089754 +v 53.049721 43.329594 0.000000 +vn 0.000000 0.000000 -0.117756 +v 53.844395 43.080994 0.000000 +vn 0.000000 0.000000 -0.129985 +v 54.415112 42.522270 0.000000 +vn 0.000000 0.000000 -0.116882 +v 54.679783 41.899975 0.000000 +vn 0.000000 0.000000 -2.321776 +v 54.570595 40.931606 0.000000 +vn 0.000000 0.000000 -0.635623 +v 52.623898 39.909798 0.000000 +vn 0.000000 0.000000 -2.694514 +v 54.463890 40.696224 0.000000 +vn 0.000000 0.000000 -2.939675 +v 54.481937 40.723423 0.000000 +vn 0.000000 0.000000 -2.981106 +v 54.296906 40.462852 0.000000 +vn 0.000000 0.000000 -0.111543 +v 53.602295 39.973305 0.000000 +vn 0.000000 0.000000 -0.069343 +v 54.114731 40.279274 0.000000 +vn 0.000000 0.000000 -0.040086 +v 53.811550 40.068447 0.000000 +vn 0.000000 0.000000 -3.019092 +v 53.095409 39.863384 0.000000 +vn 0.000000 0.000000 -0.058955 +v 54.689972 41.366982 0.000000 +vn 0.000000 0.000000 -2.987726 +v 54.607170 41.016567 0.000000 +vn 0.000000 0.000000 -3.043677 +v 49.204899 39.757912 0.000000 +vn 0.000000 0.000000 -3.004227 +v 48.604885 39.539829 0.000000 +vn 0.000000 0.000000 -3.075128 +v 47.966740 39.452637 0.000000 +vn 0.000000 0.000000 -0.038960 +v 47.121273 29.052452 0.000000 +vn 0.000000 0.000000 -0.048023 +v 46.808228 28.018139 0.000000 +vn 0.000000 0.000000 -3.075269 +v 45.824799 26.348305 0.000000 +vn 0.000000 0.000000 -0.020595 +v 45.941109 26.266359 0.000000 +vn 0.000000 0.000000 -0.045731 +v 45.770081 26.381660 0.000000 +vn 0.000000 0.000000 -3.026153 +v 39.407700 22.571239 0.000000 +vn 0.000000 0.000000 -2.554264 +v 46.347958 26.125608 0.000000 +vn 0.000000 0.000000 -0.513927 +v 50.428135 20.056976 0.000000 +vn 0.000000 0.000000 -0.621438 +v 46.701397 25.960886 0.000000 +vn 0.000000 0.000000 -2.520268 +v 50.410244 20.489355 0.000000 +vn 0.000000 0.000000 -0.562686 +v 46.839329 25.913628 0.000000 +vn 0.000000 0.000000 -0.814370 +v 47.256535 25.770199 0.000000 +vn 0.000000 0.000000 -0.990425 +v 50.478554 21.194626 0.000000 +vn 0.000000 0.000000 -1.244540 +v 47.484127 25.744333 0.000000 +vn 0.000000 0.000000 -1.822788 +v 47.797066 25.851671 0.000000 +vn 0.000000 0.000000 -0.051580 +v 50.721313 21.502308 0.000000 +vn 0.000000 0.000000 -1.502903 +v 47.813282 25.864151 0.000000 +vn 0.000000 0.000000 -1.612730 +v 50.738987 21.512615 0.000000 +vn 0.000000 0.000000 -1.699044 +v 48.393864 26.357960 0.000000 +vn 0.000000 0.000000 -1.670868 +v 49.241760 27.071623 0.000000 +vn 0.000000 0.000000 -0.004734 +v 49.262569 27.088867 0.000000 +vn 0.000000 0.000000 -1.470682 +v 52.420074 22.392569 0.000000 +vn 0.000000 0.000000 -1.666157 +v 52.396252 22.379807 0.000000 +vn 0.000000 0.000000 -1.327514 +v 49.785854 27.552261 0.000000 +vn 0.000000 0.000000 -1.437888 +v 53.046677 22.702288 0.000000 +vn 0.000000 0.000000 -1.593343 +v 52.469482 22.417028 0.000000 +vn 0.000000 0.000000 -1.689530 +v 53.831215 23.077595 0.000000 +vn 0.000000 0.000000 -1.456406 +v 53.990292 23.155605 0.000000 +vn 0.000000 0.000000 -1.679321 +v 53.958092 23.138943 0.000000 +vn 0.000000 0.000000 -1.658697 +v 50.696774 28.365416 0.000000 +vn 0.000000 0.000000 -1.482895 +v 54.893463 23.652643 0.000000 +vn 0.000000 0.000000 -0.135618 +v 51.362865 28.903860 0.000000 +vn 0.000000 0.000000 -0.031867 +v 59.483143 26.720882 0.000000 +vn 0.000000 0.000000 -0.022887 +v 57.302303 25.107368 0.000000 +vn 0.000000 0.000000 -0.033810 +v 56.091858 24.340666 0.000000 +vn 0.000000 0.000000 -1.086967 +v 56.583546 32.305149 0.000000 +vn 0.000000 0.000000 -0.151832 +v 57.114357 32.472233 0.000000 +vn 0.000000 0.000000 -2.560619 +v 58.758507 32.298073 0.000000 +vn 0.000000 0.000000 -2.743504 +v 58.357018 32.498692 0.000000 +vn 0.000000 0.000000 -2.812770 +v 59.557346 31.728876 0.000000 +vn 0.000000 0.000000 -2.915247 +v 59.105873 32.116089 0.000000 +vn 0.000000 0.000000 -2.933305 +v 59.690926 31.608522 0.000000 +vn 0.000000 0.000000 -3.055794 +v 60.010815 31.190662 0.000000 +vn 0.000000 0.000000 -0.054175 +v 60.136810 30.996454 0.000000 +vn 0.000000 0.000000 -0.031205 +v 60.471706 30.455887 0.000000 +vn 0.000000 0.000000 -2.939241 +v 60.601986 30.175140 0.000000 +vn 0.000000 0.000000 -0.136499 +v 60.827629 29.220573 0.000000 +vn 0.000000 0.000000 -2.915254 +v 60.790188 29.610931 0.000000 +vn 0.000000 0.000000 -2.932855 +v 60.540936 30.344267 0.000000 +vn 0.000000 0.000000 -2.930395 +v 60.368454 27.632267 0.000000 +vn 0.000000 0.000000 -2.781592 +v 60.570930 27.887396 0.000000 +vn 0.000000 0.000000 -0.169875 +v 60.682293 28.234045 0.000000 +vn 0.000000 0.000000 -0.031873 +v 55.936268 31.996315 0.000000 +vn 0.000000 0.000000 -3.055599 +v 55.805420 31.934465 0.000000 +vn 0.000000 0.000000 -0.043018 +v 55.680496 31.861681 0.000000 +vn 0.000000 0.000000 -3.082625 +v 52.893593 30.093195 0.000000 +vn 0.000000 0.000000 -3.111169 +v 53.858730 30.746975 0.000000 +vn 0.000000 0.000000 -0.076973 +v 51.135880 21.712704 0.000000 +vn 0.000000 0.000000 -0.004580 +v 50.408981 20.446426 0.000000 +vn 0.000000 0.000000 -2.731868 +v 41.805264 16.725121 0.000000 +vn 0.000000 0.000000 -0.032235 +v 41.570698 16.898537 0.000000 +vn 0.000000 0.000000 -2.936012 +v 41.121155 17.273594 0.000000 +vn 0.000000 0.000000 -2.945117 +v 41.098606 17.298353 0.000000 +vn 0.000000 0.000000 -2.894413 +v 41.086277 17.317581 0.000000 +vn 0.000000 0.000000 -2.782452 +v 40.095097 18.911886 0.000000 +vn 0.000000 0.000000 -0.153040 +v 40.058346 19.225531 0.000000 +vn 0.000000 0.000000 -2.731868 +v 40.008419 19.397646 0.000000 +vn 0.000000 0.000000 -0.032209 +v 40.080498 19.114981 0.000000 +vn 0.000000 0.000000 -0.027246 +v 40.304127 18.474821 0.000000 +vn 0.000000 0.000000 -0.023077 +v 50.404957 19.627077 0.000000 +vn 0.000000 0.000000 -3.047168 +v 63.380672 16.526787 0.000000 +vn 0.000000 0.000000 -2.926152 +v 63.532009 16.719633 0.000000 +vn 0.000000 0.000000 -0.483960 +v 63.554958 16.804472 0.000000 +vn 0.000000 0.000000 -0.190812 +v 63.799191 17.152079 0.000000 +vn 0.000000 0.000000 -1.112329 +v 67.095490 17.266417 0.000000 +vn 0.000000 0.000000 -1.161830 +v 66.989822 17.475414 0.000000 +vn 0.000000 0.000000 -1.445839 +v 66.979759 17.494678 0.000000 +vn 0.000000 0.000000 -0.010025 +v 63.923817 17.252979 0.000000 +vn 0.000000 0.000000 -2.218529 +v 64.051437 17.433138 0.000000 +vn 0.000000 0.000000 -0.913894 +v 64.220146 17.672970 0.000000 +vn 0.000000 0.000000 -1.916606 +v 66.960030 17.637583 0.000000 +vn 0.000000 0.000000 -1.492239 +v 66.966278 17.679260 0.000000 +vn 0.000000 0.000000 -1.360767 +v 64.762955 18.409061 0.000000 +vn 0.000000 0.000000 -1.751111 +v 64.796532 18.470440 0.000000 +vn 0.000000 0.000000 -0.087744 +v 66.982552 17.745388 0.000000 +vn 0.000000 0.000000 -1.640682 +v 64.953247 18.728239 0.000000 +vn 0.000000 0.000000 -1.507591 +v 66.991043 17.808819 0.000000 +vn 0.000000 0.000000 -1.610920 +v 65.182976 19.105980 0.000000 +vn 0.000000 0.000000 -1.445762 +v 65.345406 19.431490 0.000000 +vn 0.000000 0.000000 -1.720387 +v 67.198364 18.194389 0.000000 +vn 0.000000 0.000000 -1.240282 +v 65.403976 19.628002 0.000000 +vn 0.000000 0.000000 -0.022464 +v 67.406921 18.418842 0.000000 +vn 0.000000 0.000000 -0.053298 +v 65.519157 20.224438 0.000000 +vn 0.000000 0.000000 -1.861066 +v 67.612350 18.576361 0.000000 +vn 0.000000 0.000000 -0.027970 +v 67.987747 18.819838 0.000000 +vn 0.000000 0.000000 -0.191451 +v 65.538551 20.534992 0.000000 +vn 0.000000 0.000000 -1.381862 +v 68.981476 20.185173 0.000000 +vn 0.000000 0.000000 -2.936331 +v 68.960335 19.978642 0.000000 +vn 0.000000 0.000000 -0.154462 +v 68.793053 19.554197 0.000000 +vn 0.000000 0.000000 -2.896965 +v 68.933990 20.794069 0.000000 +vn 0.000000 0.000000 -0.127469 +v 68.961670 20.596382 0.000000 +vn 0.000000 0.000000 -1.950572 +v 65.622940 20.923948 0.000000 +vn 0.000000 0.000000 -2.949455 +v 67.966850 21.943018 0.000000 +vn 0.000000 0.000000 -2.921080 +v 67.658104 22.048258 0.000000 +vn 0.000000 0.000000 -0.119509 +v 67.622971 22.051508 0.000000 +vn 0.000000 0.000000 -0.147869 +v 68.180382 21.819918 0.000000 +vn 0.000000 0.000000 -0.103087 +v 68.353790 21.694180 0.000000 +vn 0.000000 0.000000 -2.507194 +v 67.043816 22.080614 0.000000 +vn 0.000000 0.000000 -0.071678 +v 65.883980 21.426619 0.000000 +vn 0.000000 0.000000 -0.093921 +v 66.476028 21.913965 0.000000 +vn 0.000000 0.000000 -0.022073 +v 66.705032 22.007681 0.000000 +vn 0.000000 0.000000 -2.939569 +v 67.016159 22.080700 0.000000 +vn 0.000000 0.000000 -2.879815 +v 68.659492 19.346548 0.000000 +vn 0.000000 0.000000 -3.051165 +v 68.349258 19.069401 0.000000 +vn 0.000000 0.000000 -0.047819 +v 67.043625 17.922495 0.000000 +vn 0.000000 0.000000 -2.507714 +v 67.782898 14.159725 0.000000 +vn 0.000000 0.000000 -0.025464 +v 67.322601 16.989166 0.000000 +vn 0.000000 0.000000 -1.016814 +v 67.869514 14.264352 0.000000 +vn 0.000000 0.000000 -1.290607 +v 67.760712 16.752920 0.000000 +vn 0.000000 0.000000 -0.018400 +v 67.925690 16.727194 0.000000 +vn 0.000000 0.000000 -1.384050 +v 68.073494 14.389446 0.000000 +vn 0.000000 0.000000 -0.013527 +v 68.041016 16.709658 0.000000 +vn 0.000000 0.000000 -0.078997 +v 68.356667 14.443307 0.000000 +vn 0.000000 0.000000 -1.602585 +v 68.326614 16.724300 0.000000 +vn 0.000000 0.000000 -1.615706 +v 68.357109 16.726366 0.000000 +vn 0.000000 0.000000 -1.525382 +v 68.695129 14.477948 0.000000 +vn 0.000000 0.000000 -1.518358 +v 68.563904 16.749237 0.000000 +vn 0.000000 0.000000 -0.064521 +v 68.822067 14.486771 0.000000 +vn 0.000000 0.000000 -1.550602 +v 68.709549 16.776672 0.000000 +vn 0.000000 0.000000 -0.013448 +v 69.127846 14.516309 0.000000 +vn 0.000000 0.000000 -0.049715 +v 68.844879 16.799089 0.000000 +vn 0.000000 0.000000 -1.490018 +v 69.238419 16.870281 0.000000 +vn 0.000000 0.000000 -1.701611 +v 69.517204 16.947222 0.000000 +vn 0.000000 0.000000 -1.330616 +v 69.992355 14.516141 0.000000 +vn 0.000000 0.000000 -1.185150 +v 70.368889 14.456720 0.000000 +vn 0.000000 0.000000 -1.010147 +v 70.692200 14.373321 0.000000 +vn 0.000000 0.000000 -1.606668 +v 69.810745 17.048780 0.000000 +vn 0.000000 0.000000 -1.432789 +v 70.099327 17.161350 0.000000 +vn 0.000000 0.000000 -0.048467 +v 70.837967 14.325399 0.000000 +vn 0.000000 0.000000 -1.660336 +v 69.967628 17.106783 0.000000 +vn 0.000000 0.000000 -0.059975 +v 71.015015 14.258386 0.000000 +vn 0.000000 0.000000 -1.862788 +v 70.246956 17.229879 0.000000 +vn 0.000000 0.000000 -1.190582 +v 70.534920 17.402277 0.000000 +vn 0.000000 0.000000 -0.057102 +v 71.161171 14.204941 0.000000 +vn 0.000000 0.000000 -0.101350 +v 71.005287 17.701412 0.000000 +vn 0.000000 0.000000 -0.046996 +v 73.775551 15.729041 0.000000 +vn 0.000000 0.000000 -1.084456 +v 71.331749 17.856079 0.000000 +vn 0.000000 0.000000 -0.139792 +v 73.772308 16.360571 0.000000 +vn 0.000000 0.000000 -0.358150 +v 72.891144 17.739395 0.000000 +vn 0.000000 0.000000 -2.959756 +v 73.764984 16.430717 0.000000 +vn 0.000000 0.000000 -2.791866 +v 73.434113 17.216492 0.000000 +vn 0.000000 0.000000 -2.920364 +v 73.461105 17.185472 0.000000 +vn 0.000000 0.000000 -2.913238 +v 73.656662 16.822903 0.000000 +vn 0.000000 0.000000 -0.096205 +v 72.860199 17.757998 0.000000 +vn 0.000000 0.000000 -0.120369 +v 72.242874 17.969788 0.000000 +vn 0.000000 0.000000 -2.963489 +v 73.802147 16.034914 0.000000 +vn 0.000000 0.000000 -0.599124 +v 71.553375 14.077730 0.000000 +vn 0.000000 0.000000 -2.636798 +v 72.284027 14.054198 0.000000 +vn 0.000000 0.000000 -0.041229 +v 72.709381 14.191001 0.000000 +vn 0.000000 0.000000 -2.931780 +v 73.486298 14.873734 0.000000 +vn 0.000000 0.000000 -0.102054 +v 73.444092 14.818006 0.000000 +vn 0.000000 0.000000 -2.930219 +v 72.945869 14.315416 0.000000 +vn 0.000000 0.000000 -0.084923 +v 72.242012 14.049209 0.000000 +vn 0.000000 0.000000 -3.012636 +v 71.335487 14.134521 0.000000 +vn 0.000000 0.000000 -0.022675 +v 69.242920 14.521856 0.000000 +vn 0.000000 0.000000 -3.069618 +v 69.164169 14.516268 0.000000 +vn 0.000000 0.000000 -2.989676 +v 67.992371 14.340084 0.000000 +vn 0.000000 0.000000 -0.058348 +v 67.924232 14.308006 0.000000 +vn 0.000000 0.000000 -0.011129 +v 67.701767 13.693666 0.000000 +vn 0.000000 0.000000 -0.089560 +v 69.520699 12.064961 0.000000 +vn 0.000000 0.000000 -0.076952 +v 69.862572 11.611338 0.000000 +vn 0.000000 0.000000 -0.096437 +v 69.929680 10.338419 0.000000 +vn 0.000000 0.000000 -2.959062 +v 69.722130 9.907867 0.000000 +vn 0.000000 0.000000 -0.221192 +v 81.772003 14.757998 0.000000 +vn 0.000000 0.000000 -0.349456 +v 81.188400 14.630599 0.000000 +vn 0.000000 0.000000 -3.025554 +v 81.381310 14.641365 0.000000 +vn 0.000000 0.000000 -2.851159 +v 81.413399 14.641851 0.000000 +vn 0.000000 0.000000 -2.884682 +v 82.799355 16.015680 0.000000 +vn 0.000000 0.000000 -1.978638 +v 80.723106 14.695895 0.000000 +vn 0.000000 0.000000 -0.177048 +v 82.847115 16.498100 0.000000 +vn 0.000000 0.000000 -1.239659 +v 80.149590 15.045832 0.000000 +vn 0.000000 0.000000 -1.880268 +v 80.200775 14.998549 0.000000 +vn 0.000000 0.000000 -1.274002 +v 79.462891 16.612038 0.000000 +vn 0.000000 0.000000 -1.728283 +v 82.123055 17.694923 0.000000 +vn 0.000000 0.000000 -2.140162 +v 81.980194 17.785530 0.000000 +vn 0.000000 0.000000 -2.114925 +v 81.687859 17.943611 0.000000 +vn 0.000000 0.000000 -0.043608 +v 81.303246 18.158106 0.000000 +vn 0.000000 0.000000 -1.799374 +v 79.350372 16.942478 0.000000 +vn 0.000000 0.000000 -1.357982 +v 81.129433 18.291885 0.000000 +vn 0.000000 0.000000 -1.750045 +v 81.071632 18.341473 0.000000 +vn 0.000000 0.000000 -3.016042 +v 79.237518 17.127003 0.000000 +vn 0.000000 0.000000 -1.431269 +v 80.912201 18.507452 0.000000 +vn 0.000000 0.000000 -1.476304 +v 80.853920 18.566715 0.000000 +vn 0.000000 0.000000 -1.486163 +v 79.133362 17.320269 0.000000 +vn 0.000000 0.000000 -0.056988 +v 79.023445 17.470137 0.000000 +vn 0.000000 0.000000 -1.555728 +v 80.561676 18.899227 0.000000 +vn 0.000000 0.000000 -1.532023 +v 80.455414 19.034685 0.000000 +vn 0.000000 0.000000 -0.017083 +v 78.859489 17.679588 0.000000 +vn 0.000000 0.000000 -1.595732 +v 78.826263 17.721478 0.000000 +vn 0.000000 0.000000 -1.550887 +v 78.567200 18.029184 0.000000 +vn 0.000000 0.000000 -1.321964 +v 80.150658 19.496754 0.000000 +vn 0.000000 0.000000 -1.287767 +v 80.139671 19.525639 0.000000 +vn 0.000000 0.000000 -0.013854 +v 78.422806 18.229977 0.000000 +vn 0.000000 0.000000 -0.025022 +v 78.261292 18.367327 0.000000 +vn 0.000000 0.000000 -1.310513 +v 80.121841 19.579929 0.000000 +vn 0.000000 0.000000 -1.315240 +v 78.223511 18.403261 0.000000 +vn 0.000000 0.000000 -0.061769 +v 80.146088 19.770233 0.000000 +vn 0.000000 0.000000 -0.068541 +v 79.634361 22.917200 0.000000 +vn 0.000000 0.000000 -1.417903 +v 79.614136 22.933485 0.000000 +vn 0.000000 0.000000 -1.798912 +v 76.773705 18.935480 0.000000 +vn 0.000000 0.000000 -1.800524 +v 76.592773 19.009768 0.000000 +vn 0.000000 0.000000 -0.041175 +v 79.466125 23.079790 0.000000 +vn 0.000000 0.000000 -0.004858 +v 75.849976 19.338675 0.000000 +vn 0.000000 0.000000 -3.074524 +v 75.660179 19.431822 0.000000 +vn 0.000000 0.000000 -0.069358 +v 75.232063 19.686718 0.000000 +vn 0.000000 0.000000 -3.012764 +v 75.216698 19.696392 0.000000 +vn 0.000000 0.000000 -0.059470 +v 75.200378 19.709881 0.000000 +vn 0.000000 0.000000 -0.018911 +v 79.437469 23.116318 0.000000 +vn 0.000000 0.000000 -0.020392 +v 75.111885 19.771366 0.000000 +vn 0.000000 0.000000 -1.553227 +v 79.369034 23.204304 0.000000 +vn 0.000000 0.000000 -1.297617 +v 79.331627 23.287722 0.000000 +vn 0.000000 0.000000 -0.870031 +v 74.954323 19.877270 0.000000 +vn 0.000000 0.000000 -1.856217 +v 79.314545 23.321186 0.000000 +vn 0.000000 0.000000 -1.282338 +v 79.320419 23.308868 0.000000 +vn 0.000000 0.000000 -3.066333 +v 75.478233 23.004763 0.000000 +vn 0.000000 0.000000 -0.684070 +v 75.557434 23.077658 0.000000 +vn 0.000000 0.000000 -2.441109 +v 75.623543 23.145119 0.000000 +vn 0.000000 0.000000 -0.052613 +v 79.229805 23.543653 0.000000 +vn 0.000000 0.000000 -2.351027 +v 75.801117 23.346451 0.000000 +vn 0.000000 0.000000 -2.377106 +v 75.873550 23.421175 0.000000 +vn 0.000000 0.000000 -2.284613 +v 76.096352 23.659904 0.000000 +vn 0.000000 0.000000 -0.020690 +v 76.165955 23.727547 0.000000 +vn 0.000000 0.000000 -0.008221 +v 79.221069 23.607548 0.000000 +vn 0.000000 0.000000 -0.950771 +v 76.187408 23.751734 0.000000 +vn 0.000000 0.000000 -2.148772 +v 76.281769 23.871447 0.000000 +vn 0.000000 0.000000 -1.718564 +v 79.220795 23.691833 0.000000 +vn 0.000000 0.000000 -1.613163 +v 79.224960 23.745852 0.000000 +vn 0.000000 0.000000 -1.518966 +v 79.222794 23.719688 0.000000 +vn 0.000000 0.000000 -1.284614 +v 76.617981 24.330061 0.000000 +vn 0.000000 0.000000 -1.807628 +v 76.678078 24.450724 0.000000 +vn 0.000000 0.000000 -1.466437 +v 79.233292 23.865200 0.000000 +vn 0.000000 0.000000 -1.704579 +v 76.835991 24.771990 0.000000 +vn 0.000000 0.000000 -1.382041 +v 79.246109 23.970699 0.000000 +vn 0.000000 0.000000 -1.713530 +v 76.861343 24.828196 0.000000 +vn 0.000000 0.000000 -0.018705 +v 76.950165 25.002028 0.000000 +vn 0.000000 0.000000 -1.626130 +v 79.286568 24.184559 0.000000 +vn 0.000000 0.000000 -1.512514 +v 79.284538 24.177534 0.000000 +vn 0.000000 0.000000 -1.607936 +v 77.044495 25.236315 0.000000 +vn 0.000000 0.000000 -0.005338 +v 79.336853 24.304768 0.000000 +vn 0.000000 0.000000 -1.487393 +v 77.051514 25.257063 0.000000 +vn 0.000000 0.000000 -1.344279 +v 79.420486 24.414621 0.000000 +vn 0.000000 0.000000 -1.842570 +v 77.122498 25.452402 0.000000 +vn 0.000000 0.000000 -1.807583 +v 79.428246 24.423330 0.000000 +vn 0.000000 0.000000 -0.063040 +v 77.149986 25.735022 0.000000 +vn 0.000000 0.000000 -2.027407 +v 79.683258 24.667206 0.000000 +vn 0.000000 0.000000 -1.079419 +v 79.865616 24.815722 0.000000 +vn 0.000000 0.000000 -0.035173 +v 80.209419 25.171108 0.000000 +vn 0.000000 0.000000 -1.175275 +v 80.292694 25.281683 0.000000 +vn 0.000000 0.000000 -1.198580 +v 80.563721 25.776846 0.000000 +vn 0.000000 0.000000 -0.203028 +v 77.113274 26.093409 0.000000 +vn 0.000000 0.000000 -1.144329 +v 77.095581 26.284796 0.000000 +vn 0.000000 0.000000 -2.160844 +v 77.127510 26.891657 0.000000 +vn 0.000000 0.000000 -0.066894 +v 77.152306 26.996899 0.000000 +vn 0.000000 0.000000 -2.987003 +v 77.134232 26.938112 0.000000 +vn 0.000000 0.000000 -0.750453 +v 80.072945 28.155853 0.000000 +vn 0.000000 0.000000 -2.992943 +v 77.223534 27.237225 0.000000 +vn 0.000000 0.000000 -0.082019 +v 77.309708 27.421808 0.000000 +vn 0.000000 0.000000 -2.693870 +v 78.160095 28.336018 0.000000 +vn 0.000000 0.000000 -2.856452 +v 78.411064 28.444141 0.000000 +vn 0.000000 0.000000 -0.129014 +v 79.115341 28.530245 0.000000 +vn 0.000000 0.000000 -2.907181 +v 77.597252 27.891687 0.000000 +vn 0.000000 0.000000 -2.817029 +v 79.735420 28.387785 0.000000 +vn 0.000000 0.000000 -2.842449 +v 80.166382 28.094316 0.000000 +vn 0.000000 0.000000 -0.152077 +v 80.739563 26.506973 0.000000 +vn 0.000000 0.000000 -2.958125 +v 80.718842 26.280600 0.000000 +vn 0.000000 0.000000 -3.056573 +v 80.594795 25.853046 0.000000 +vn 0.000000 0.000000 -3.100374 +v 80.266815 25.245247 0.000000 +vn 0.000000 0.000000 -0.012079 +v 79.471199 24.468597 0.000000 +vn 0.000000 0.000000 -1.043078 +v 74.765709 22.431959 0.000000 +vn 0.000000 0.000000 -1.832556 +v 74.043388 21.974390 0.000000 +vn 0.000000 0.000000 -0.088671 +v 74.201859 22.090216 0.000000 +vn 0.000000 0.000000 -0.033998 +v 73.797279 21.795305 0.000000 +vn 0.000000 0.000000 -0.685526 +v 74.499649 20.183239 0.000000 +vn 0.000000 0.000000 -2.345597 +v 74.258308 20.307163 0.000000 +vn 0.000000 0.000000 -2.072303 +v 73.672035 21.656393 0.000000 +vn 0.000000 0.000000 -0.717784 +v 74.119385 20.373783 0.000000 +vn 0.000000 0.000000 -2.282861 +v 73.752266 20.598232 0.000000 +vn 0.000000 0.000000 -0.334921 +v 73.725761 20.626085 0.000000 +vn 0.000000 0.000000 -0.461814 +v 73.492935 21.314255 0.000000 +vn 0.000000 0.000000 -1.038686 +v 79.782951 22.836351 0.000000 +vn 0.000000 0.000000 -1.047016 +v 79.933800 22.789072 0.000000 +vn 0.000000 0.000000 -1.786482 +v 80.139038 22.753904 0.000000 +vn 0.000000 0.000000 -1.944540 +v 80.512360 20.216761 0.000000 +vn 0.000000 0.000000 -2.029888 +v 80.675079 20.309175 0.000000 +vn 0.000000 0.000000 -0.055116 +v 80.441811 22.720810 0.000000 +vn 0.000000 0.000000 -1.791529 +v 80.895302 20.385422 0.000000 +vn 0.000000 0.000000 -1.342490 +v 80.878357 20.378006 0.000000 +vn 0.000000 0.000000 -1.709240 +v 81.327385 20.508068 0.000000 +vn 0.000000 0.000000 -1.705105 +v 81.391983 20.527403 0.000000 +vn 0.000000 0.000000 -0.191906 +v 81.626373 20.584013 0.000000 +vn 0.000000 0.000000 -1.523216 +v 81.628380 22.819201 0.000000 +vn 0.000000 0.000000 -1.516108 +v 81.850395 22.849054 0.000000 +vn 0.000000 0.000000 -0.102268 +v 82.023315 20.664114 0.000000 +vn 0.000000 0.000000 -1.615561 +v 82.470177 20.743801 0.000000 +vn 0.000000 0.000000 -1.670900 +v 82.139854 22.930038 0.000000 +vn 0.000000 0.000000 -1.305198 +v 82.957970 20.776051 0.000000 +vn 0.000000 0.000000 -1.811970 +v 82.899918 20.775463 0.000000 +vn 0.000000 0.000000 -1.276895 +v 82.998093 20.771576 0.000000 +vn 0.000000 0.000000 -1.451068 +v 82.599358 23.147034 0.000000 +vn 0.000000 0.000000 -0.015656 +v 83.535103 20.672197 0.000000 +vn 0.000000 0.000000 -1.674865 +v 82.562431 23.127752 0.000000 +vn 0.000000 0.000000 -1.319366 +v 82.623505 23.163631 0.000000 +vn 0.000000 0.000000 -1.971014 +v 82.851204 23.314072 0.000000 +vn 0.000000 0.000000 -1.109475 +v 83.009605 23.439972 0.000000 +vn 0.000000 0.000000 -0.127943 +v 83.305359 23.685089 0.000000 +vn 0.000000 0.000000 -3.072088 +v 83.505112 23.845543 0.000000 +vn 0.000000 0.000000 -0.102869 +v 83.666176 23.957449 0.000000 +vn 0.000000 0.000000 -0.149440 +v 84.174965 24.181435 0.000000 +vn 0.000000 0.000000 -2.938232 +v 84.031807 24.142544 0.000000 +vn 0.000000 0.000000 -2.935254 +v 83.889114 24.092394 0.000000 +vn 0.000000 0.000000 -0.033419 +v 86.354553 22.881727 0.000000 +vn 0.000000 0.000000 -2.910925 +v 85.335907 24.067385 0.000000 +vn 0.000000 0.000000 -2.953416 +v 84.265533 24.200151 0.000000 +vn 0.000000 0.000000 -0.120360 +v 84.791771 24.208368 0.000000 +vn 0.000000 0.000000 -0.124969 +v 86.410156 22.698116 0.000000 +vn 0.000000 0.000000 -2.887784 +v 86.482773 22.336149 0.000000 +vn 0.000000 0.000000 -0.053879 +v 86.421921 21.770697 0.000000 +vn 0.000000 0.000000 -0.751911 +v 84.080635 20.457083 0.000000 +vn 0.000000 0.000000 -2.372024 +v 86.081306 20.990641 0.000000 +vn 0.000000 0.000000 -2.906170 +v 85.306664 20.423666 0.000000 +vn 0.000000 0.000000 -2.947777 +v 85.627045 20.576052 0.000000 +vn 0.000000 0.000000 -0.118573 +v 84.678276 20.335087 0.000000 +vn 0.000000 0.000000 -2.940833 +v 84.971611 20.341312 0.000000 +vn 0.000000 0.000000 -0.173222 +v 84.927269 20.338974 0.000000 +vn 0.000000 0.000000 -0.073997 +v 84.519325 20.349443 0.000000 +vn 0.000000 0.000000 -2.971368 +v 84.267357 20.391750 0.000000 +vn 0.000000 0.000000 -3.066457 +v 80.547188 20.233429 0.000000 +vn 0.000000 0.000000 -3.116380 +v 80.343323 20.079615 0.000000 +vn 0.000000 0.000000 -0.037503 +v 80.215897 19.939718 0.000000 +vn 0.000000 0.000000 -3.072393 +v 80.186836 19.860893 0.000000 +vn 0.000000 0.000000 -0.081123 +v 80.165161 19.460838 0.000000 +vn 0.000000 0.000000 -3.012414 +v 80.395607 19.121845 0.000000 +vn 0.000000 0.000000 -0.050048 +v 80.327126 19.209553 0.000000 +vn 0.000000 0.000000 -2.859224 +v 82.704346 17.060650 0.000000 +vn 0.000000 0.000000 -2.981507 +v 79.652496 15.767079 0.000000 +vn 0.000000 0.000000 -2.932243 +v 79.957382 15.236534 0.000000 +vn 0.000000 0.000000 -0.125125 +v 79.737068 15.572821 0.000000 +vn 0.000000 0.000000 -0.075769 +v 79.768791 15.504855 0.000000 +vn 0.000000 0.000000 -0.073841 +v 79.779510 15.486036 0.000000 +vn 0.000000 0.000000 -0.112135 +v 80.692955 14.710809 0.000000 +vn 0.000000 0.000000 -2.920699 +v 80.434708 14.825176 0.000000 +vn 0.000000 0.000000 -0.109882 +v 82.693665 15.731091 0.000000 +vn 0.000000 0.000000 0.200479 +v 56.234081 50.674374 2.075428 +vn 0.000000 0.000000 2.770904 +v 56.365257 50.774521 2.075428 +vn 0.000000 0.000000 0.232727 +v 56.472031 50.812645 2.075428 +vn 0.000000 0.000000 0.058397 +v 56.221519 50.650063 2.075428 +vn 0.000000 0.000000 0.548034 +v 56.966919 50.916168 2.075428 +vn 0.000000 0.000000 0.619809 +v 56.094604 50.334255 2.075428 +vn 0.000000 0.000000 2.406720 +v 56.124645 50.475998 2.075428 +vn 0.000000 0.000000 2.397900 +v 57.033463 50.917110 2.075428 +vn 0.000000 0.000000 2.345339 +v 56.055511 49.944481 2.075428 +vn 0.000000 0.000000 0.773755 +v 56.047810 49.894039 2.075428 +vn 0.000000 0.000000 0.913511 +v 56.055676 49.569012 2.075428 +vn 0.000000 0.000000 2.802846 +v 56.026924 49.496235 2.075428 +vn 0.000000 0.000000 1.462610 +v 57.756615 50.618671 2.075428 +vn 0.000000 0.000000 0.130630 +v 55.638184 48.818298 2.075428 +vn 0.000000 0.000000 0.037834 +v 58.003365 50.084438 2.075428 +vn 0.000000 0.000000 2.661141 +v 55.439007 48.496746 2.075428 +vn 0.000000 0.000000 2.642514 +v 55.281895 48.226963 2.075428 +vn 0.000000 0.000000 2.143101 +v 58.029800 49.859421 2.075428 +vn 0.000000 0.000000 0.979047 +v 58.031860 49.935375 2.075428 +vn 0.000000 0.000000 2.515076 +v 55.256557 48.177429 2.075428 +vn 0.000000 0.000000 2.546960 +v 55.035023 47.651146 2.075428 +vn 0.000000 0.000000 0.080123 +v 54.980812 47.498280 2.075428 +vn 0.000000 0.000000 1.159339 +v 58.072609 49.518684 2.075428 +vn 0.000000 0.000000 0.588039 +v 54.901520 47.294510 2.075428 +vn 0.000000 0.000000 0.022989 +v 54.737465 46.768875 2.075428 +vn 0.000000 0.000000 1.683043 +v 58.370346 48.601212 2.075428 +vn 0.000000 0.000000 0.811962 +v 54.648602 46.267941 2.075428 +vn 0.000000 0.000000 1.246889 +v 58.219734 49.021664 2.075428 +vn 0.000000 0.000000 0.037701 +v 54.678463 46.482998 2.075428 +vn 0.000000 0.000000 0.763809 +v 54.694279 46.551060 2.075428 +vn 0.000000 0.000000 1.001255 +v 54.619320 46.016476 2.075428 +vn 0.000000 0.000000 0.969264 +v 54.627785 45.765255 2.075428 +vn 0.000000 0.000000 1.028804 +v 54.655972 45.553459 2.075428 +vn 0.000000 0.000000 2.171133 +v 58.546429 47.466419 2.075428 +vn 0.000000 0.000000 1.691352 +v 54.778526 45.234688 2.075428 +vn 0.000000 0.000000 2.154815 +v 58.552624 47.656811 2.075428 +vn 0.000000 0.000000 1.729915 +v 54.709373 45.399651 2.075428 +vn 0.000000 0.000000 1.980745 +v 58.554405 47.789284 2.075428 +vn 0.000000 0.000000 0.033758 +v 58.505970 48.118397 2.075428 +vn 0.000000 0.000000 1.143643 +v 58.398411 48.544704 2.075428 +vn 0.000000 0.000000 2.038737 +v 58.546688 47.014992 2.075428 +vn 0.000000 0.000000 1.464364 +v 54.841949 45.103397 2.075428 +vn 0.000000 0.000000 1.576655 +v 55.136585 44.658588 2.075428 +vn 0.000000 0.000000 2.263948 +v 58.510525 46.711216 2.075428 +vn 0.000000 0.000000 0.034367 +v 58.446121 46.155476 2.075428 +vn 0.000000 0.000000 2.353276 +v 58.460453 46.215942 2.075428 +vn 0.000000 0.000000 0.068167 +v 56.417641 43.762966 2.075428 +vn 0.000000 0.000000 0.230217 +v 56.784595 43.812740 2.075428 +vn 0.000000 0.000000 0.123919 +v 57.427998 44.207756 2.075428 +vn 0.000000 0.000000 0.003347 +v 44.356289 39.072502 2.075428 +vn 0.000000 0.000000 3.071761 +v 43.910389 38.703392 2.075428 +vn 0.000000 0.000000 0.156134 +v 43.629189 38.449497 2.075428 +vn 0.000000 0.000000 2.950279 +v 45.794250 39.732346 2.075428 +vn 0.000000 0.000000 0.281696 +v 42.639694 37.367569 2.075428 +vn 0.000000 0.000000 0.272967 +v 42.771351 37.528927 2.075428 +vn 0.000000 0.000000 2.821686 +v 43.175514 38.013817 2.075428 +vn 0.000000 0.000000 0.011231 +v 42.106117 36.702030 2.075428 +vn 0.000000 0.000000 2.868716 +v 42.492893 37.181824 2.075428 +vn 0.000000 0.000000 0.014730 +v 46.325687 39.914921 2.075428 +vn 0.000000 0.000000 1.326793 +v 47.313847 39.374828 2.075428 +vn 0.000000 0.000000 0.338133 +v 41.743446 36.196869 2.075428 +vn 0.000000 0.000000 1.549010 +v 47.325920 39.361725 2.075428 +vn 0.000000 0.000000 2.896442 +v 40.182739 34.139526 2.075428 +vn 0.000000 0.000000 1.487333 +v 47.336845 39.343426 2.075428 +vn 0.000000 0.000000 0.384198 +v 38.950378 32.347984 2.075428 +vn 0.000000 0.000000 0.031415 +v 47.859463 38.366043 2.075428 +vn 0.000000 0.000000 2.747257 +v 39.991035 33.878563 2.075428 +vn 0.000000 0.000000 0.425610 +v 38.407295 31.457802 2.075428 +vn 0.000000 0.000000 1.897003 +v 47.957855 37.997475 2.075428 +vn 0.000000 0.000000 1.217236 +v 47.881527 38.304447 2.075428 +vn 0.000000 0.000000 0.004907 +v 37.881588 30.607119 2.075428 +vn 0.000000 0.000000 1.912076 +v 48.117111 37.350208 2.075428 +vn 0.000000 0.000000 0.400546 +v 38.166992 31.069754 2.075428 +vn 0.000000 0.000000 0.465240 +v 37.540051 29.991734 2.075428 +vn 0.000000 0.000000 0.001794 +v 48.131191 37.220184 2.075428 +vn 0.000000 0.000000 0.487862 +v 37.431618 29.770828 2.075428 +vn 0.000000 0.000000 0.022725 +v 37.397232 29.697077 2.075428 +vn 0.000000 0.000000 0.522127 +v 37.057858 28.954586 2.075428 +vn 0.000000 0.000000 0.031360 +v 48.197109 36.906097 2.075428 +vn 0.000000 0.000000 0.021390 +v 48.293026 35.853706 2.075428 +vn 0.000000 0.000000 0.018937 +v 36.370792 27.520161 2.075428 +vn 0.000000 0.000000 2.088171 +v 48.316380 35.537544 2.075428 +vn 0.000000 0.000000 2.144086 +v 48.319469 35.183369 2.075428 +vn 0.000000 0.000000 2.701311 +v 35.176155 25.615433 2.075428 +vn 0.000000 0.000000 0.425699 +v 34.889610 25.138609 2.075428 +vn 0.000000 0.000000 0.859589 +v 48.309414 34.719345 2.075428 +vn 0.000000 0.000000 0.571104 +v 34.659214 24.611364 2.075428 +vn 0.000000 0.000000 0.026654 +v 34.838612 25.031755 2.075428 +vn 0.000000 0.000000 2.307953 +v 48.145210 33.022816 2.075428 +vn 0.000000 0.000000 2.417159 +v 34.605133 24.483898 2.075428 +vn 0.000000 0.000000 2.377034 +v 47.977520 32.169163 2.075428 +vn 0.000000 0.000000 0.966066 +v 34.436432 23.138363 2.075428 +vn 0.000000 0.000000 2.328645 +v 48.026974 32.392345 2.075428 +vn 0.000000 0.000000 0.017599 +v 48.122505 32.930122 2.075428 +vn 0.000000 0.000000 0.755090 +v 34.447701 23.808199 2.075428 +vn 0.000000 0.000000 0.824886 +v 47.636379 30.799818 2.075428 +vn 0.000000 0.000000 0.008090 +v 34.707870 22.290630 2.075428 +vn 0.000000 0.000000 1.231853 +v 34.531273 22.772686 2.075428 +vn 0.000000 0.000000 1.878504 +v 35.198936 21.663321 2.075428 +vn 0.000000 0.000000 0.283277 +v 39.414074 24.744007 2.075428 +vn 0.000000 0.000000 0.000913 +v 34.879818 21.911196 2.075428 +vn 0.000000 0.000000 0.306273 +v 38.448963 23.671598 2.075428 +vn 0.000000 0.000000 2.349884 +v 35.471786 21.535551 2.075428 +vn 0.000000 0.000000 0.014505 +v 35.312027 21.562868 2.075428 +vn 0.000000 0.000000 0.036628 +v 38.578991 23.828514 2.075428 +vn 0.000000 0.000000 2.915989 +v 38.769382 24.054653 2.075428 +vn 0.000000 0.000000 0.479418 +v 37.671169 22.541416 2.075428 +vn 0.000000 0.000000 2.628556 +v 37.803082 22.741533 2.075428 +vn 0.000000 0.000000 0.481757 +v 36.553406 21.523241 2.075428 +vn 0.000000 0.000000 1.859630 +v 39.571312 24.864080 2.075428 +vn 0.000000 0.000000 0.627545 +v 47.552383 30.420103 2.075428 +vn 0.000000 0.000000 2.484050 +v 47.400223 29.964451 2.075428 +vn 0.000000 0.000000 2.656224 +v 39.540936 24.634264 2.075428 +vn 0.000000 0.000000 2.722003 +v 39.481361 24.522434 2.075428 +vn 0.000000 0.000000 0.408096 +v 39.335892 24.294260 2.075428 +vn 0.000000 0.000000 0.376607 +v 39.114410 23.938858 2.075428 +vn 0.000000 0.000000 0.648308 +v 47.278568 29.671610 2.075428 +vn 0.000000 0.000000 0.024541 +v 38.861656 23.505539 2.075428 +vn 0.000000 0.000000 0.005459 +v 38.783516 23.351587 2.075428 +vn 0.000000 0.000000 0.008604 +v 46.990391 28.892334 2.075428 +vn 0.000000 0.000000 0.315867 +v 46.612797 28.184395 2.075428 +vn 0.000000 0.000000 0.623669 +v 38.661606 23.020468 2.075428 +vn 0.000000 0.000000 0.276343 +v 45.422550 27.054577 2.075428 +vn 0.000000 0.000000 0.000488 +v 38.575016 22.660215 2.075428 +vn 0.000000 0.000000 3.120974 +v 45.684128 27.244184 2.075428 +vn 0.000000 0.000000 2.891086 +v 46.300331 27.780468 2.075428 +vn 0.000000 0.000000 0.010037 +v 45.561237 27.025419 2.075428 +vn 0.000000 0.000000 0.001381 +v 38.555050 22.395617 2.075428 +vn 0.000000 0.000000 1.507493 +v 45.314617 26.951759 2.075428 +vn 0.000000 0.000000 0.480256 +v 57.979229 35.341831 2.075428 +vn 0.000000 0.000000 0.007843 +v 45.908791 27.261673 2.075428 +vn 0.000000 0.000000 3.090194 +v 45.844479 27.222382 2.075428 +vn 0.000000 0.000000 0.010675 +v 45.607002 27.059975 2.075428 +vn 0.000000 0.000000 3.098399 +v 45.729454 27.147474 2.075428 +vn 0.000000 0.000000 0.056995 +v 53.144485 33.523819 2.075428 +vn 0.000000 0.000000 3.075570 +v 52.908669 33.388023 2.075428 +vn 0.000000 0.000000 3.038154 +v 53.560875 33.765007 2.075428 +vn 0.000000 0.000000 0.001381 +v 49.757694 31.002039 2.075428 +vn 0.000000 0.000000 2.947737 +v 50.037369 31.277369 2.075428 +vn 0.000000 0.000000 0.158654 +v 54.492245 34.219769 2.075428 +vn 0.000000 0.000000 0.189666 +v 48.664005 29.950466 2.075428 +vn 0.000000 0.000000 2.849941 +v 55.821400 34.822208 2.075428 +vn 0.000000 0.000000 2.916691 +v 48.497814 29.773611 2.075428 +vn 0.000000 0.000000 0.261033 +v 56.601845 35.080238 2.075428 +vn 0.000000 0.000000 2.817580 +v 56.818996 35.137753 2.075428 +vn 0.000000 0.000000 0.011305 +v 47.814049 29.071543 2.075428 +vn 0.000000 0.000000 0.004340 +v 47.266979 28.502447 2.075428 +vn 0.000000 0.000000 2.946030 +v 46.882538 28.134729 2.075428 +vn 0.000000 0.000000 3.002497 +v 46.819344 28.071089 2.075428 +vn 0.000000 0.000000 2.647958 +v 57.335880 35.269627 2.075428 +vn 0.000000 0.000000 0.002290 +v 57.790314 35.320995 2.075428 +vn 0.000000 0.000000 0.578427 +v 58.512608 35.348492 2.075428 +vn 0.000000 0.000000 0.004943 +v 38.553982 22.186829 2.075428 +vn 0.000000 0.000000 0.002441 +v 38.546112 22.287930 2.075428 +vn 0.000000 0.000000 1.107460 +v 38.626778 21.468037 2.075428 +vn 0.000000 0.000000 1.228024 +v 38.739700 21.013430 2.075428 +vn 0.000000 0.000000 2.293950 +v 59.575596 35.219601 2.075428 +vn 0.000000 0.000000 2.147694 +v 38.780415 20.825079 2.075428 +vn 0.000000 0.000000 2.178652 +v 59.781605 35.164070 2.075428 +vn 0.000000 0.000000 0.948954 +v 60.192085 35.009476 2.075428 +vn 0.000000 0.000000 0.002584 +v 60.351326 34.946815 2.075428 +vn 0.000000 0.000000 1.834836 +v 38.826923 20.424088 2.075428 +vn 0.000000 0.000000 1.304577 +v 38.923794 20.130630 2.075428 +vn 0.000000 0.000000 0.004129 +v 60.639061 34.804604 2.075428 +vn 0.000000 0.000000 1.104768 +v 61.339962 34.401516 2.075428 +vn 0.000000 0.000000 1.076043 +v 39.403492 19.035862 2.075428 +vn 0.000000 0.000000 0.001656 +v 61.689827 34.099583 2.075428 +vn 0.000000 0.000000 1.894412 +v 39.487587 18.536222 2.075428 +vn 0.000000 0.000000 1.295712 +v 39.625675 18.129988 2.075428 +vn 0.000000 0.000000 0.003418 +v 62.156437 33.706173 2.075428 +vn 0.000000 0.000000 1.808600 +v 39.774197 17.829796 2.075428 +vn 0.000000 0.000000 1.671177 +v 62.803780 32.937862 2.075428 +vn 0.000000 0.000000 1.548936 +v 39.990990 17.451641 2.075428 +vn 0.000000 0.000000 1.665120 +v 63.413902 31.835888 2.075428 +vn 0.000000 0.000000 1.449966 +v 40.264950 17.099878 2.075428 +vn 0.000000 0.000000 1.146917 +v 40.852112 16.541084 2.075428 +vn 0.000000 0.000000 1.979268 +v 41.241943 16.301447 2.075428 +vn 0.000000 0.000000 0.002367 +v 63.602139 31.255314 2.075428 +vn 0.000000 0.000000 1.826003 +v 41.965843 15.759918 2.075428 +vn 0.000000 0.000000 1.842525 +v 42.309940 15.243636 2.075428 +vn 0.000000 0.000000 0.968888 +v 42.349445 15.189347 2.075428 +vn 0.000000 0.000000 0.013948 +v 42.822800 14.940449 2.075428 +vn 0.000000 0.000000 0.003453 +v 63.841488 28.874748 2.075428 +vn 0.000000 0.000000 2.545028 +v 63.438755 27.548742 2.075428 +vn 0.000000 0.000000 0.632654 +v 63.650658 28.097712 2.075428 +vn 0.000000 0.000000 0.002889 +v 63.758644 28.479376 2.075428 +vn 0.000000 0.000000 0.103923 +v 50.964535 18.988852 2.075428 +vn 0.000000 0.000000 3.051367 +v 51.799854 19.488516 2.075428 +vn 0.000000 0.000000 2.658833 +v 63.261669 27.183199 2.075428 +vn 0.000000 0.000000 0.175253 +v 51.963348 19.560242 2.075428 +vn 0.000000 0.000000 0.210838 +v 52.430676 19.769297 2.075428 +vn 0.000000 0.000000 2.929718 +v 52.490452 19.793827 2.075428 +vn 0.000000 0.000000 2.655220 +v 63.042614 26.781746 2.075428 +vn 0.000000 0.000000 2.806525 +v 62.590221 26.173454 2.075428 +vn 0.000000 0.000000 2.817585 +v 62.725430 26.352846 2.075428 +vn 0.000000 0.000000 0.312702 +v 62.968727 26.669081 2.075428 +vn 0.000000 0.000000 2.964302 +v 53.202267 20.111670 2.075428 +vn 0.000000 0.000000 2.970186 +v 52.976051 20.011082 2.075428 +vn 0.000000 0.000000 2.897191 +v 54.617710 20.671207 2.075428 +vn 0.000000 0.000000 0.262207 +v 62.479675 26.047384 2.075428 +vn 0.000000 0.000000 2.954693 +v 61.600262 25.087408 2.075428 +vn 0.000000 0.000000 0.185509 +v 61.639114 25.125555 2.075428 +vn 0.000000 0.000000 0.009135 +v 54.844208 20.758369 2.075428 +vn 0.000000 0.000000 0.180643 +v 56.230759 21.374355 2.075428 +vn 0.000000 0.000000 2.995561 +v 60.997261 24.544561 2.075428 +vn 0.000000 0.000000 0.014394 +v 56.906792 21.695147 2.075428 +vn 0.000000 0.000000 0.116563 +v 56.591270 21.529451 2.075428 +vn 0.000000 0.000000 0.075057 +v 59.844166 23.559082 2.075428 +vn 0.000000 0.000000 0.011016 +v 57.606915 22.073116 2.075428 +vn 0.000000 0.000000 3.097891 +v 58.624866 22.689631 2.075428 +vn 0.000000 0.000000 0.011840 +v 58.892208 22.873938 2.075428 +vn 0.000000 0.000000 2.789801 +v 43.021832 13.147427 2.075428 +vn 0.000000 0.000000 2.986443 +v 42.548466 12.808186 2.075428 +vn 0.000000 0.000000 2.773044 +v 42.504036 12.777775 2.075428 +vn 0.000000 0.000000 0.796463 +v 42.069599 11.705271 2.075428 +vn 0.000000 0.000000 0.039408 +v 42.151672 12.175643 2.075428 +vn 0.000000 0.000000 2.759142 +v 44.069675 13.420945 2.075428 +vn 0.000000 0.000000 2.718547 +v 43.834576 13.374301 2.075428 +vn 0.000000 0.000000 0.272210 +v 45.369095 13.729284 2.075428 +vn 0.000000 0.000000 2.854888 +v 45.174713 13.668085 2.075428 +vn 0.000000 0.000000 2.765228 +v 44.778179 13.564629 2.075428 +vn 0.000000 0.000000 0.073024 +v 46.702568 14.257439 2.075428 +vn 0.000000 0.000000 0.000488 +v 42.083496 11.428891 2.075428 +vn 0.000000 0.000000 0.191359 +v 46.456085 14.130088 2.075428 +vn 0.000000 0.000000 2.940729 +v 46.227108 14.043373 2.075428 +vn 0.000000 0.000000 0.211271 +v 46.111660 13.995070 2.075428 +vn 0.000000 0.000000 2.919321 +v 45.888264 13.912014 2.075428 +vn 0.000000 0.000000 0.748681 +v 46.580822 14.327999 2.075428 +vn 0.000000 0.000000 0.640362 +v 54.859623 19.551714 2.075428 +vn 0.000000 0.000000 0.844978 +v 56.231297 19.351419 2.075428 +vn 0.000000 0.000000 1.726966 +v 42.484062 10.724745 2.075428 +vn 0.000000 0.000000 0.026320 +v 55.242962 19.486204 2.075428 +vn 0.000000 0.000000 1.388304 +v 42.199306 11.025602 2.075428 +vn 0.000000 0.000000 0.738422 +v 57.493614 19.118504 2.075428 +vn 0.000000 0.000000 0.789123 +v 57.399208 19.132460 2.075428 +vn 0.000000 0.000000 2.328636 +v 56.865135 19.246941 2.075428 +vn 0.000000 0.000000 2.377040 +v 56.639797 19.285364 2.075428 +vn 0.000000 0.000000 0.009630 +v 43.166683 10.153462 2.075428 +vn 0.000000 0.000000 0.004567 +v 57.659340 19.081493 2.075428 +vn 0.000000 0.000000 2.537573 +v 44.607567 9.801844 2.075428 +vn 0.000000 0.000000 0.004100 +v 58.275635 18.900988 2.075428 +vn 0.000000 0.000000 0.004448 +v 58.792229 18.727203 2.075428 +vn 0.000000 0.000000 0.017377 +v 46.198830 9.993416 2.075428 +vn 0.000000 0.000000 2.710531 +v 46.805336 10.108043 2.075428 +vn 0.000000 0.000000 0.006450 +v 59.126667 18.630350 2.075428 +vn 0.000000 0.000000 0.456228 +v 47.876793 10.280747 2.075428 +vn 0.000000 0.000000 2.682964 +v 47.954472 10.291227 2.075428 +vn 0.000000 0.000000 0.994516 +v 60.630344 17.987095 2.075428 +vn 0.000000 0.000000 0.522129 +v 49.542118 10.386177 2.075428 +vn 0.000000 0.000000 1.178792 +v 61.375343 17.521547 2.075428 +vn 0.000000 0.000000 0.510781 +v 50.439056 10.424275 2.075428 +vn 0.000000 0.000000 2.628885 +v 50.489597 10.428721 2.075428 +vn 0.000000 0.000000 2.686593 +v 51.919449 10.615095 2.075428 +vn 0.000000 0.000000 1.874986 +v 61.490444 17.459442 2.075428 +vn 0.000000 0.000000 0.054973 +v 52.369488 10.691193 2.075428 +vn 0.000000 0.000000 1.217248 +v 62.285221 16.881170 2.075428 +vn 0.000000 0.000000 1.896991 +v 62.029755 17.067699 2.075428 +vn 0.000000 0.000000 2.747256 +v 55.208923 11.244303 2.075428 +vn 0.000000 0.000000 0.031417 +v 62.333939 16.837494 2.075428 +vn 0.000000 0.000000 1.533081 +v 62.697517 16.459219 2.075428 +vn 0.000000 0.000000 1.534546 +v 63.041832 15.984680 2.075428 +vn 0.000000 0.000000 1.767942 +v 63.188450 15.633094 2.075428 +vn 0.000000 0.000000 0.034840 +v 63.062237 15.951530 2.075428 +vn 0.000000 0.000000 0.317070 +v 56.460266 11.564248 2.075428 +vn 0.000000 0.000000 0.037002 +v 63.267582 15.308228 2.075428 +vn 0.000000 0.000000 0.354031 +v 59.212082 12.314615 2.075428 +vn 0.000000 0.000000 0.281697 +v 59.439491 12.380464 2.075428 +vn 0.000000 0.000000 0.026905 +v 59.638603 12.441494 2.075428 +vn 0.000000 0.000000 2.950633 +v 62.819862 14.409375 2.075428 +vn 0.000000 0.000000 2.967667 +v 60.814831 12.888509 2.075428 +vn 0.000000 0.000000 0.022065 +v 60.240162 12.632792 2.075428 +vn 0.000000 0.000000 0.012691 +v 62.538883 14.049358 2.075428 +vn 0.000000 0.000000 0.007843 +v 51.314476 19.221550 2.075428 +vn 0.000000 0.000000 3.042975 +v 50.803253 18.788261 2.075428 +vn 0.000000 0.000000 0.002128 +v 43.930012 14.280212 2.075428 +vn 0.000000 0.000000 0.072487 +v 50.867485 18.908133 2.075428 +vn 0.000000 0.000000 2.913265 +v 51.942669 19.388365 2.075428 +vn 0.000000 0.000000 2.956867 +v 51.555435 19.224749 2.075428 +vn 0.000000 0.000000 0.002128 +v 44.033112 14.247848 2.075428 +vn 0.000000 0.000000 0.031589 +v 51.213497 19.020102 2.075428 +vn 0.000000 0.000000 0.022919 +v 51.145775 18.978113 2.075428 +vn 0.000000 0.000000 0.014971 +v 52.434647 19.525291 2.075428 +vn 0.000000 0.000000 2.410729 +v 44.502392 14.137234 2.075428 +vn 0.000000 0.000000 2.358320 +v 44.651970 14.110722 2.075428 +vn 0.000000 0.000000 0.484779 +v 52.959007 19.581669 2.075428 +vn 0.000000 0.000000 0.446467 +v 53.076862 19.598299 2.075428 +vn 0.000000 0.000000 0.006059 +v 53.232727 19.607819 2.075428 +vn 0.000000 0.000000 0.400778 +v 45.673332 14.183478 2.075428 +vn 0.000000 0.000000 2.654272 +v 46.086033 14.254465 2.075428 +vn 0.000000 0.000000 0.581126 +v 54.380238 19.582754 2.075428 +vn 0.000000 0.000000 2.541611 +v 54.063137 19.580608 2.075428 +vn 0.000000 0.000000 3.077860 +v 51.278751 19.063839 2.075428 +vn 0.000000 0.000000 0.067960 +v 62.151127 13.680976 2.075428 +vn 0.000000 0.000000 3.003119 +v 61.666157 13.326741 2.075428 +vn 0.000000 0.000000 1.243180 +v 70.620583 21.767792 2.075428 +vn 0.000000 0.000000 0.714018 +v 73.108353 23.772078 2.075428 +vn 0.000000 0.000000 2.389801 +v 72.938049 23.794815 2.075428 +vn 0.000000 0.000000 2.528176 +v 72.589226 23.794392 2.075428 +vn 0.000000 0.000000 1.016538 +v 70.505074 22.323326 2.075428 +vn 0.000000 0.000000 0.676004 +v 70.494598 22.496624 2.075428 +vn 0.000000 0.000000 0.068166 +v 70.561447 22.726238 2.075428 +vn 0.000000 0.000000 0.060507 +v 71.992607 23.720201 2.075428 +vn 0.000000 0.000000 0.283129 +v 70.606979 22.877270 2.075428 +vn 0.000000 0.000000 2.897632 +v 71.354637 23.494038 2.075428 +vn 0.000000 0.000000 2.836619 +v 70.868111 23.190075 2.075428 +vn 0.000000 0.000000 2.967754 +v 71.233971 23.439495 2.075428 +vn 0.000000 0.000000 2.387317 +v 73.603958 23.692320 2.075428 +vn 0.000000 0.000000 0.748861 +v 73.631729 23.687227 2.075428 +vn 0.000000 0.000000 0.093770 +v 70.664093 21.650951 2.075428 +vn 0.000000 0.000000 0.021766 +v 74.081505 23.551786 2.075428 +vn 0.000000 0.000000 0.058598 +v 70.930855 21.165604 2.075428 +vn 0.000000 0.000000 2.203240 +v 74.535881 23.404108 2.075428 +vn 0.000000 0.000000 1.555827 +v 71.208145 20.761209 2.075428 +vn 0.000000 0.000000 1.691347 +v 71.305794 20.652929 2.075428 +vn 0.000000 0.000000 0.032143 +v 74.973068 23.233927 2.075428 +vn 0.000000 0.000000 0.038749 +v 75.096420 23.185585 2.075428 +vn 0.000000 0.000000 1.115418 +v 71.554749 20.419142 2.075428 +vn 0.000000 0.000000 0.045592 +v 75.737122 22.756050 2.075428 +vn 0.000000 0.000000 2.124283 +v 71.982162 20.204891 2.075428 +vn 0.000000 0.000000 1.430982 +v 75.778854 22.708738 2.075428 +vn 0.000000 0.000000 0.040362 +v 75.814781 22.669079 2.075428 +vn 0.000000 0.000000 0.048789 +v 72.213615 20.142687 2.075428 +vn 0.000000 0.000000 0.758224 +v 72.424042 20.089186 2.075428 +vn 0.000000 0.000000 0.680437 +v 72.711052 20.035942 2.075428 +vn 0.000000 0.000000 1.933221 +v 76.111382 22.410595 2.075428 +vn 0.000000 0.000000 0.011555 +v 72.493042 20.078146 2.075428 +vn 0.000000 0.000000 2.470515 +v 73.259727 19.989508 2.075428 +vn 0.000000 0.000000 1.310944 +v 76.397423 22.165785 2.075428 +vn 0.000000 0.000000 0.641137 +v 73.640381 19.978552 2.075428 +vn 0.000000 0.000000 0.018987 +v 76.516136 22.086784 2.075428 +vn 0.000000 0.000000 0.621243 +v 73.817116 19.977043 2.075428 +vn 0.000000 0.000000 0.932793 +v 76.886642 21.891802 2.075428 +vn 0.000000 0.000000 2.534515 +v 74.211349 19.985100 2.075428 +vn 0.000000 0.000000 2.599573 +v 74.266777 19.989874 2.075428 +vn 0.000000 0.000000 0.043660 +v 74.312485 19.994015 2.075428 +vn 0.000000 0.000000 2.661136 +v 74.575905 20.033560 2.075428 +vn 0.000000 0.000000 0.430903 +v 74.646965 20.051510 2.075428 +vn 0.000000 0.000000 1.921854 +v 77.013924 21.809160 2.075428 +vn 0.000000 0.000000 2.761448 +v 75.102150 20.133596 2.075428 +vn 0.000000 0.000000 1.458403 +v 77.214737 21.680517 2.075428 +vn 0.000000 0.000000 0.572537 +v 75.448715 20.193022 2.075428 +vn 0.000000 0.000000 2.527062 +v 75.801605 20.199989 2.075428 +vn 0.000000 0.000000 0.886668 +v 76.099632 20.070049 2.075428 +vn 0.000000 0.000000 2.231717 +v 76.149246 20.058146 2.075428 +vn 0.000000 0.000000 2.438368 +v 76.524956 19.947256 2.075428 +vn 0.000000 0.000000 0.048353 +v 77.393036 20.535477 2.075428 +vn 0.000000 0.000000 2.580930 +v 77.289917 20.308975 2.075428 +vn 0.000000 0.000000 0.142874 +v 76.697861 19.918613 2.075428 +vn 0.000000 0.000000 2.861669 +v 77.215431 20.221037 2.075428 +vn 0.000000 0.000000 0.518195 +v 76.865311 19.945612 2.075428 +vn 0.000000 0.000000 0.125624 +v 76.921684 19.958090 2.075428 +# 9176 vertices, 0 vertices normals + +f 5//5 1//1 28//28 +f 2//2 1057//1057 1059//1059 +f 1059//1059 4//4 2//2 +f 1059//1059 3//3 4//4 +f 2//2 4//4 5//5 +f 10//10 6//6 8//8 +f 8//8 9//9 10//10 +f 8//8 7//7 11//11 +f 11//11 9//9 8//8 +f 11//11 5//5 4//4 +f 4//4 9//9 11//11 +f 4//4 3//3 10//10 +f 10//10 9//9 4//4 +f 1100//1100 42//42 124//124 +f 124//124 1//1 1100//1100 +f 1//1 5//5 11//11 +f 11//11 7//7 1100//1100 +f 1100//1100 1//1 11//11 +f 129//129 149//149 12//12 +f 12//12 146//146 13//13 +f 20//20 12//12 13//13 +f 129//129 12//12 20//20 +f 15//15 1224//1224 17//17 +f 14//14 15//15 17//17 +f 13//13 15//15 14//14 +f 13//13 146//146 15//15 +f 16//16 1132//1132 19//19 +f 19//19 13//13 14//14 +f 14//14 16//16 19//19 +f 14//14 17//17 855//855 +f 855//855 16//16 14//14 +f 18//18 131//131 135//135 +f 135//135 20//20 18//18 +f 135//135 129//129 20//20 +f 20//20 13//13 19//19 +f 19//19 1132//1132 18//18 +f 18//18 20//20 19//19 +f 21//21 1057//1057 2//2 +f 2//2 23//23 21//21 +f 2//2 5//5 22//22 +f 22//22 23//23 2//2 +f 22//22 24//24 25//25 +f 25//25 23//23 22//22 +f 25//25 26//26 21//21 +f 21//21 23//23 25//25 +f 127//127 31//31 27//27 +f 27//27 28//28 127//127 +f 27//27 24//24 22//22 +f 22//22 28//28 27//27 +f 22//22 5//5 28//28 +f 132//132 131//131 29//29 +f 29//29 30//30 132//132 +f 29//29 1141//1141 34//34 +f 34//34 30//30 29//29 +f 34//34 24//24 27//27 +f 27//27 30//30 34//34 +f 27//27 31//31 132//132 +f 132//132 30//30 27//27 +f 32//32 1356//1356 1355//1355 +f 1355//1355 33//33 32//32 +f 1355//1355 26//26 25//25 +f 25//25 33//33 1355//1355 +f 25//25 24//24 34//34 +f 34//34 33//33 25//25 +f 34//34 1141//1141 32//32 +f 32//32 33//33 34//34 +f 602//602 601//601 1304//1304 +f 1304//1304 37//37 602//602 +f 1304//1304 1301//1301 37//37 +f 35//35 36//36 602//602 +f 602//602 37//37 35//35 +f 37//37 1301//1301 53//53 +f 40//40 49//49 38//38 +f 38//38 69//69 39//39 +f 39//39 40//40 38//38 +f 39//39 37//37 53//53 +f 53//53 40//40 39//39 +f 41//41 42//42 43//43 +f 43//43 44//44 41//41 +f 43//43 36//36 35//35 +f 35//35 44//44 43//43 +f 35//35 37//37 39//39 +f 39//39 44//44 35//35 +f 39//39 69//69 41//41 +f 41//41 44//44 39//39 +f 357//357 45//45 631//631 +f 631//631 45//45 633//633 +f 60//60 45//45 357//357 +f 56//56 45//45 60//60 +f 56//56 633//633 45//45 +f 78//78 46//46 58//58 +f 46//46 633//633 56//56 +f 58//58 46//46 56//56 +f 48//48 648//648 47//47 +f 47//47 46//46 48//48 +f 633//633 46//46 47//47 +f 46//46 78//78 48//48 +f 649//649 648//648 49//49 +f 49//49 40//40 649//649 +f 40//40 53//53 54//54 +f 54//54 650//650 649//649 +f 649//649 40//40 54//54 +f 571//571 50//50 51//51 +f 51//51 1301//1301 571//571 +f 53//53 1301//1301 51//51 +f 1299//1299 1300//1300 52//52 +f 52//52 650//650 54//54 +f 54//54 1299//1299 52//52 +f 54//54 53//53 51//51 +f 51//51 1299//1299 54//54 +f 51//51 50//50 1299//1299 +f 15//15 55//55 1224//1224 +f 146//146 55//55 15//15 +f 1227//1227 1224//1224 55//55 +f 55//55 148//148 1227//1227 +f 146//146 148//148 55//55 +f 144//144 78//78 58//58 +f 58//58 56//56 61//61 +f 57//57 58//58 61//61 +f 57//57 97//97 144//144 +f 144//144 58//58 57//57 +f 60//60 357//357 1209//1209 +f 1209//1209 59//59 63//63 +f 63//63 60//60 1209//1209 +f 61//61 60//60 63//63 +f 61//61 56//56 60//60 +f 62//62 61//61 63//63 +f 63//63 105//105 62//62 +f 63//63 59//59 64//64 +f 64//64 105//105 63//63 +f 57//57 65//65 97//97 +f 57//57 61//61 62//62 +f 62//62 65//65 57//57 +f 38//38 49//49 66//66 +f 66//66 71//71 38//38 +f 71//71 67//67 68//68 +f 68//68 69//69 38//38 +f 38//38 71//71 68//68 +f 161//161 67//67 71//71 +f 71//71 70//70 161//161 +f 71//71 66//66 167//167 +f 167//167 70//70 71//71 +f 113//113 121//121 73//73 +f 73//73 72//72 113//113 +f 73//73 67//67 161//161 +f 161//161 72//72 73//73 +f 120//120 42//42 41//41 +f 41//41 74//74 120//120 +f 41//41 69//69 68//68 +f 68//68 74//74 41//41 +f 68//68 67//67 73//73 +f 73//73 74//74 68//68 +f 73//73 121//121 120//120 +f 120//120 74//74 73//73 +f 76//76 75//75 77//77 +f 78//78 75//75 76//76 +f 167//167 66//66 77//77 +f 49//49 648//648 48//48 +f 48//48 76//76 49//49 +f 48//48 78//78 76//76 +f 76//76 77//77 66//66 +f 49//49 76//76 66//66 +f 79//79 113//113 80//80 +f 82//82 79//79 80//80 +f 82//82 84//84 86//86 +f 86//86 79//79 82//82 +f 86//86 83//83 79//79 +f 84//84 82//82 8844//8844 +f 82//82 8840//8840 8844//8844 +f 82//82 80//80 81//81 +f 80//80 8838//8838 81//81 +f 82//82 81//81 8840//8840 +f 114//114 85//85 115//115 +f 114//114 83//83 86//86 +f 86//86 85//85 114//114 +f 84//84 85//85 86//86 +f 84//84 145//145 115//115 +f 115//115 85//85 84//84 +f 145//145 84//84 87//87 +f 87//87 91//91 89//89 +f 89//89 145//145 87//87 +f 89//89 151//151 153//153 +f 153//153 145//145 89//89 +f 91//91 87//87 88//88 +f 87//87 8848//8848 88//88 +f 87//87 8843//8843 8848//8848 +f 87//87 84//84 8843//8843 +f 84//84 8844//8844 8843//8843 +f 91//91 88//88 92//92 +f 170//170 155//155 90//90 +f 90//90 93//93 170//170 +f 90//90 151//151 89//89 +f 89//89 93//93 90//90 +f 89//89 91//91 94//94 +f 91//91 92//92 94//94 +f 93//93 89//89 8853//8853 +f 89//89 94//94 8853//8853 +f 170//170 96//96 95//95 +f 170//170 93//93 96//96 +f 93//93 8853//8853 96//96 +f 138//138 97//97 65//65 +f 65//65 101//101 138//138 +f 65//65 62//62 107//107 +f 107//107 101//101 65//65 +f 107//107 98//98 8829//8829 +f 101//101 107//107 8826//8826 +f 107//107 8829//8829 8826//8826 +f 99//99 138//138 100//100 +f 138//138 102//102 100//100 +f 138//138 101//101 102//102 +f 101//101 8826//8826 102//102 +f 105//105 64//64 103//103 +f 103//103 106//106 105//105 +f 103//103 1164//1164 104//104 +f 104//104 106//106 103//103 +f 107//107 104//104 98//98 +f 104//104 8832//8832 98//98 +f 107//107 106//106 104//104 +f 107//107 62//62 105//105 +f 105//105 106//106 107//107 +f 110//110 8835//8835 8834//8834 +f 110//110 8834//8834 108//108 +f 104//104 8831//8831 8832//8832 +f 104//104 109//109 8831//8831 +f 104//104 1164//1164 110//110 +f 104//104 110//110 109//109 +f 110//110 108//108 109//109 +f 99//99 100//100 8827//8827 +f 79//79 111//111 113//113 +f 79//79 83//83 116//116 +f 116//116 111//111 79//79 +f 116//116 112//112 122//122 +f 122//122 111//111 116//116 +f 122//122 121//121 113//113 +f 113//113 111//111 122//122 +f 114//114 115//115 128//128 +f 119//119 114//114 128//128 +f 119//119 112//112 116//116 +f 116//116 114//114 119//119 +f 116//116 83//83 114//114 +f 28//28 117//117 125//125 +f 28//28 1//1 118//118 +f 118//118 117//117 28//28 +f 118//118 112//112 119//119 +f 119//119 117//117 118//118 +f 119//119 128//128 125//125 +f 125//125 117//117 119//119 +f 124//124 42//42 120//120 +f 120//120 123//123 124//124 +f 120//120 121//121 122//122 +f 122//122 123//123 120//120 +f 122//122 112//112 118//118 +f 118//118 123//123 122//122 +f 118//118 1//1 124//124 +f 124//124 123//123 118//118 +f 127//127 28//28 125//125 +f 128//128 133//133 126//126 +f 126//126 125//125 128//128 +f 126//126 31//31 127//127 +f 127//127 125//125 126//126 +f 115//115 133//133 128//128 +f 115//115 130//130 133//133 +f 130//130 149//149 129//129 +f 134//134 130//130 129//129 +f 133//133 130//130 134//134 +f 135//135 131//131 132//132 +f 132//132 134//134 135//135 +f 132//132 31//31 126//126 +f 126//126 134//134 132//132 +f 126//126 133//133 134//134 +f 134//134 129//129 135//135 +f 138//138 136//136 97//97 +f 138//138 99//99 137//137 +f 137//137 136//136 138//138 +f 137//137 139//139 136//136 +f 142//142 139//139 137//137 +f 142//142 137//137 140//140 +f 137//137 141//141 140//140 +f 137//137 99//99 8828//8828 +f 99//99 8827//8827 8828//8828 +f 137//137 8828//8828 141//141 +f 167//167 77//77 139//139 +f 142//142 167//167 139//139 +f 167//167 142//142 143//143 +f 142//142 140//140 143//143 +f 75//75 78//78 144//144 +f 144//144 97//97 136//136 +f 136//136 75//75 144//144 +f 139//139 75//75 136//136 +f 139//139 77//77 75//75 +f 115//115 145//145 130//130 +f 152//152 130//130 145//145 +f 130//130 152//152 149//149 +f 1171//1171 1227//1227 148//148 +f 148//148 146//146 147//147 +f 147//147 158//158 157//157 +f 157//157 148//148 147//147 +f 157//157 156//156 1171//1171 +f 1171//1171 148//148 157//157 +f 149//149 152//152 150//150 +f 150//150 12//12 149//149 +f 150//150 158//158 147//147 +f 147//147 12//12 150//150 +f 147//147 146//146 12//12 +f 152//152 145//145 153//153 +f 153//153 151//151 154//154 +f 154//154 152//152 153//153 +f 154//154 158//158 150//150 +f 150//150 152//152 154//154 +f 90//90 155//155 1174//1174 +f 1174//1174 159//159 90//90 +f 1174//1174 156//156 157//157 +f 157//157 159//159 1174//1174 +f 157//157 158//158 154//154 +f 154//154 159//159 157//157 +f 154//154 151//151 90//90 +f 90//90 159//159 154//154 +f 80//80 166//166 8838//8838 +f 162//162 160//160 164//164 +f 80//80 113//113 72//72 +f 72//72 163//163 80//80 +f 72//72 161//161 162//162 +f 162//162 163//163 72//72 +f 163//163 162//162 165//165 +f 162//162 164//164 165//165 +f 80//80 163//163 166//166 +f 163//163 165//165 166//166 +f 167//167 143//143 8830//8830 +f 70//70 167//167 8833//8833 +f 167//167 8830//8830 8833//8833 +f 162//162 70//70 168//168 +f 70//70 8833//8833 168//168 +f 162//162 161//161 70//70 +f 162//162 168//168 160//160 +f 169//169 155//155 170//170 +f 169//169 170//170 8864//8864 +f 170//170 8865//8865 8864//8864 +f 170//170 95//95 8851//8851 +f 170//170 8851//8851 8865//8865 +f 169//169 8864//8864 8863//8863 +f 232//232 176//176 8068//8068 +f 176//176 171//171 8068//8068 +f 176//176 172//172 171//171 +f 176//176 173//173 8067//8067 +f 173//173 183//183 8067//8067 +f 176//176 8067//8067 172//172 +f 234//234 174//174 253//253 +f 253//253 175//175 234//234 +f 253//253 180//180 181//181 +f 181//181 175//175 253//253 +f 181//181 173//173 176//176 +f 176//176 175//175 181//181 +f 176//176 232//232 234//234 +f 234//234 175//175 176//176 +f 248//248 177//177 665//665 +f 665//665 178//178 248//248 +f 665//665 179//179 182//182 +f 182//182 178//178 665//665 +f 182//182 173//173 181//181 +f 181//181 178//178 182//182 +f 181//181 180//180 248//248 +f 248//248 178//178 181//181 +f 173//173 182//182 183//183 +f 182//182 8066//8066 183//183 +f 182//182 184//184 8066//8066 +f 182//182 179//179 8061//8061 +f 179//179 675//675 8061//8061 +f 182//182 8061//8061 184//184 +f 185//185 8842//8842 1256//1256 +f 185//185 8845//8845 8842//8842 +f 185//185 187//187 8845//8845 +f 187//187 186//186 8845//8845 +f 187//187 8846//8846 188//188 +f 187//187 188//188 186//186 +f 197//197 192//192 189//189 +f 189//189 1254//1254 197//197 +f 187//187 189//189 8846//8846 +f 189//189 8847//8847 8846//8846 +f 187//187 1254//1254 189//189 +f 193//193 1513//1513 8850//8850 +f 1513//1513 8855//8855 8850//8850 +f 194//194 193//193 190//190 +f 193//193 8850//8850 190//190 +f 194//194 190//190 191//191 +f 189//189 8849//8849 8847//8847 +f 189//189 194//194 8849//8849 +f 194//194 191//191 8849//8849 +f 189//189 192//192 193//193 +f 193//193 194//194 189//189 +f 196//196 1246//1246 202//202 +f 202//202 208//208 195//195 +f 195//195 196//196 202//202 +f 195//195 192//192 197//197 +f 197//197 196//196 195//195 +f 198//198 695//695 200//200 +f 200//200 201//201 198//198 +f 200//200 692//692 199//199 +f 199//199 201//201 200//200 +f 199//199 208//208 202//202 +f 202//202 201//201 199//199 +f 202//202 1246//1246 198//198 +f 198//198 201//201 202//202 +f 692//692 203//203 205//205 +f 205//205 206//206 692//692 +f 205//205 1516//1516 204//204 +f 204//204 206//206 205//205 +f 204//204 208//208 199//199 +f 199//199 206//206 204//204 +f 692//692 206//206 199//199 +f 209//209 1513//1513 193//193 +f 193//193 207//207 209//209 +f 193//193 192//192 195//195 +f 195//195 207//207 193//193 +f 195//195 208//208 204//204 +f 204//204 207//207 195//195 +f 204//204 1516//1516 209//209 +f 209//209 207//207 204//204 +f 711//711 210//210 262//262 +f 262//262 211//211 711//711 +f 262//262 217//217 216//216 +f 216//216 211//211 262//262 +f 216//216 218//218 222//222 +f 222//222 211//211 216//216 +f 222//222 221//221 711//711 +f 711//711 211//211 222//222 +f 258//258 212//212 214//214 +f 214//214 213//213 258//258 +f 214//214 220//220 215//215 +f 215//215 213//213 214//214 +f 215//215 218//218 216//216 +f 216//216 213//213 215//215 +f 216//216 217//217 258//258 +f 258//258 213//213 216//216 +f 224//224 218//218 215//215 +f 215//215 219//219 224//224 +f 220//220 219//219 215//215 +f 792//792 221//221 222//222 +f 222//222 223//223 792//792 +f 222//222 218//218 224//224 +f 224//224 223//223 222//222 +f 214//214 212//212 246//246 +f 246//246 225//225 214//214 +f 246//246 245//245 230//230 +f 230//230 225//225 246//246 +f 230//230 268//268 267//267 +f 267//267 225//225 230//230 +f 267//267 220//220 214//214 +f 214//214 225//225 267//267 +f 226//226 227//227 8063//8063 +f 229//229 226//226 228//228 +f 226//226 8063//8063 228//228 +f 275//275 8062//8062 8058//8058 +f 275//275 229//229 8062//8062 +f 229//229 228//228 8062//8062 +f 275//275 268//268 230//230 +f 230//230 229//229 275//275 +f 230//230 245//245 226//226 +f 226//226 229//229 230//230 +f 254//254 174//174 234//234 +f 234//234 231//231 254//254 +f 234//234 232//232 233//233 +f 233//233 231//231 234//234 +f 233//233 243//243 244//244 +f 244//244 231//231 233//233 +f 244//244 255//255 254//254 +f 254//254 231//231 244//244 +f 243//243 233//233 241//241 +f 233//233 235//235 241//241 +f 233//233 237//237 235//235 +f 233//233 232//232 236//236 +f 232//232 8068//8068 236//236 +f 233//233 236//236 237//237 +f 226//226 8064//8064 227//227 +f 226//226 238//238 8064//8064 +f 226//226 245//245 239//239 +f 226//226 239//239 238//238 +f 239//239 240//240 238//238 +f 239//239 243//243 8065//8065 +f 243//243 241//241 8065//8065 +f 239//239 8065//8065 240//240 +f 246//246 212//212 242//242 +f 242//242 247//247 246//246 +f 242//242 255//255 244//244 +f 244//244 247//247 242//242 +f 244//244 243//243 239//239 +f 239//239 247//247 244//244 +f 239//239 245//245 246//246 +f 246//246 247//247 239//239 +f 249//249 177//177 248//248 +f 248//248 250//250 249//249 +f 248//248 180//180 251//251 +f 251//251 250//250 248//248 +f 251//251 260//260 252//252 +f 252//252 250//250 251//251 +f 252//252 759//759 249//249 +f 249//249 250//250 252//252 +f 253//253 174//174 254//254 +f 254//254 257//257 253//253 +f 254//254 255//255 256//256 +f 256//256 257//257 254//254 +f 256//256 260//260 251//251 +f 251//251 257//257 256//256 +f 251//251 180//180 253//253 +f 253//253 257//257 251//251 +f 242//242 212//212 258//258 +f 258//258 261//261 242//242 +f 258//258 217//217 259//259 +f 259//259 261//261 258//258 +f 259//259 260//260 256//256 +f 256//256 261//261 259//259 +f 256//256 255//255 242//242 +f 242//242 261//261 256//256 +f 262//262 210//210 763//763 +f 763//763 263//263 262//262 +f 763//763 759//759 252//252 +f 252//252 263//263 763//763 +f 252//252 260//260 259//259 +f 259//259 263//263 252//252 +f 259//259 217//217 262//262 +f 262//262 263//263 259//259 +f 280//280 279//279 264//264 +f 279//279 8048//8048 264//264 +f 279//279 8049//8049 8048//8048 +f 279//279 8052//8052 265//265 +f 279//279 265//265 8049//8049 +f 266//266 220//220 267//267 +f 267//267 269//269 266//266 +f 267//267 268//268 271//271 +f 271//271 269//269 267//267 +f 271//271 270//270 273//273 +f 273//273 269//269 271//271 +f 273//273 272//272 266//266 +f 266//266 269//269 273//273 +f 275//275 8058//8058 8053//8053 +f 278//278 275//275 274//274 +f 275//275 8053//8053 274//274 +f 284//284 276//276 277//277 +f 284//284 278//278 276//276 +f 278//278 274//274 276//276 +f 284//284 270//270 271//271 +f 271//271 278//278 284//284 +f 271//271 268//268 275//275 +f 275//275 278//278 271//271 +f 279//279 280//280 281//281 +f 281//281 282//282 279//279 +f 281//281 286//286 283//283 +f 283//283 282//282 281//281 +f 283//283 270//270 284//284 +f 284//284 282//282 283//283 +f 279//279 284//284 8052//8052 +f 284//284 277//277 8052//8052 +f 279//279 282//282 284//284 +f 1401//1401 292//292 297//297 +f 297//297 285//285 1401//1401 +f 297//297 272//272 273//273 +f 273//273 285//285 297//297 +f 273//273 270//270 283//283 +f 283//283 285//285 273//273 +f 283//283 286//286 1401//1401 +f 1401//1401 285//285 283//283 +f 290//290 792//792 223//223 +f 223//223 224//224 287//287 +f 287//287 288//288 289//289 +f 289//289 223//223 287//287 +f 289//289 299//299 290//290 +f 290//290 223//223 289//289 +f 219//219 220//220 266//266 +f 266//266 291//291 219//219 +f 266//266 272//272 296//296 +f 296//296 291//291 266//266 +f 296//296 288//288 287//287 +f 287//287 291//291 296//296 +f 287//287 224//224 219//219 +f 219//219 291//291 287//287 +f 297//297 292//292 293//293 +f 293//293 294//294 297//297 +f 293//293 1413//1413 295//295 +f 295//295 294//294 293//293 +f 295//295 288//288 296//296 +f 296//296 294//294 295//295 +f 296//296 272//272 297//297 +f 297//297 294//294 296//296 +f 1409//1409 298//298 793//793 +f 793//793 299//299 289//289 +f 289//289 1409//1409 793//793 +f 289//289 288//288 295//295 +f 295//295 1409//1409 289//289 +f 295//295 1413//1413 1409//1409 +f 307//307 300//300 8039//8039 +f 300//300 8041//8041 8039//8039 +f 300//300 1400//1400 8041//8041 +f 307//307 8039//8039 8040//8040 +f 304//304 317//317 1407//1407 +f 1407//1407 1408//1408 303//303 +f 303//303 301//301 302//302 +f 302//302 1407//1407 303//303 +f 304//304 1407//1407 302//302 +f 300//300 307//307 305//305 +f 305//305 306//306 300//300 +f 305//305 301//301 303//303 +f 303//303 306//306 305//305 +f 303//303 1408//1408 306//306 +f 305//305 1314//1314 301//301 +f 305//305 307//307 8038//8038 +f 307//307 8040//8040 8038//8038 +f 1314//1314 305//305 308//308 +f 305//305 8038//8038 308//308 +f 302//302 1337//1337 309//309 +f 309//309 304//304 302//302 +f 312//312 310//310 311//311 +f 311//311 315//315 312//312 +f 311//311 313//313 314//314 +f 314//314 315//315 311//311 +f 315//315 316//316 312//312 +f 1412//1412 317//317 304//304 +f 304//304 319//319 1412//1412 +f 314//314 313//313 1412//1412 +f 1412//1412 319//319 314//314 +f 309//309 1337//1337 318//318 +f 318//318 319//319 309//309 +f 318//318 321//321 320//320 +f 320//320 319//319 318//318 +f 320//320 314//314 319//319 +f 319//319 304//304 309//309 +f 608//608 815//815 316//316 +f 316//316 315//315 608//608 +f 315//315 314//314 320//320 +f 320//320 321//321 608//608 +f 608//608 315//315 320//320 +f 330//330 324//324 322//322 +f 324//324 323//323 322//322 +f 324//324 8003//8003 323//323 +f 324//324 329//329 325//325 +f 324//324 325//325 8003//8003 +f 325//325 327//327 8003//8003 +f 325//325 8004//8004 326//326 +f 325//325 326//326 327//327 +f 426//426 444//444 443//443 +f 443//443 328//328 426//426 +f 443//443 448//448 333//333 +f 333//333 328//328 443//443 +f 333//333 329//329 324//324 +f 324//324 328//328 333//333 +f 324//324 330//330 426//426 +f 426//426 328//328 324//324 +f 439//439 331//331 343//343 +f 343//343 332//332 439//439 +f 343//343 342//342 338//338 +f 338//338 332//332 343//343 +f 338//338 329//329 333//333 +f 333//333 332//332 338//338 +f 333//333 448//448 439//439 +f 439//439 332//332 333//333 +f 334//334 352//352 8005//8005 +f 337//337 334//334 336//336 +f 334//334 8005//8005 336//336 +f 325//325 335//335 8004//8004 +f 325//325 337//337 335//335 +f 337//337 336//336 335//335 +f 325//325 329//329 338//338 +f 338//338 337//337 325//325 +f 338//338 342//342 334//334 +f 334//334 337//337 338//338 +f 343//343 331//331 462//462 +f 462//462 339//339 343//343 +f 462//462 340//340 341//341 +f 341//341 339//339 462//462 +f 341//341 350//350 344//344 +f 344//344 339//339 341//341 +f 344//344 342//342 343//343 +f 343//343 339//339 344//344 +f 457//457 414//414 345//345 +f 345//345 346//346 457//457 +f 345//345 410//410 351//351 +f 351//351 346//346 345//345 +f 351//351 350//350 341//341 +f 341//341 346//346 351//351 +f 341//341 340//340 457//457 +f 457//457 346//346 341//341 +f 408//408 407//407 8011//8011 +f 348//348 408//408 8010//8010 +f 408//408 8011//8011 8010//8010 +f 349//349 8017//8017 347//347 +f 349//349 348//348 8017//8017 +f 348//348 8010//8010 8017//8017 +f 349//349 350//350 351//351 +f 351//351 348//348 349//349 +f 351//351 410//410 408//408 +f 408//408 348//348 351//351 +f 334//334 8006//8006 352//352 +f 334//334 354//354 8006//8006 +f 354//354 353//353 8006//8006 +f 334//334 342//342 344//344 +f 344//344 354//354 334//334 +f 344//344 350//350 349//349 +f 349//349 354//354 344//344 +f 349//349 347//347 8018//8018 +f 354//354 349//349 353//353 +f 349//349 8018//8018 353//353 +f 1213//1213 622//622 355//355 +f 1213//1213 358//358 356//356 +f 356//356 622//622 1213//1213 +f 356//356 624//624 622//622 +f 622//622 615//615 355//355 +f 357//357 623//623 359//359 +f 623//623 624//624 356//356 +f 356//356 358//358 359//359 +f 359//359 623//623 356//356 +f 362//362 1564//1564 360//360 +f 355//355 361//361 1200//1200 +f 355//355 615//615 362//362 +f 362//362 361//361 355//355 +f 1200//1200 361//361 362//362 +f 615//615 1564//1564 362//362 +f 400//400 417//417 474//474 +f 474//474 363//363 400//400 +f 474//474 467//467 364//364 +f 364//364 363//363 474//474 +f 364//364 480//480 370//370 +f 370//370 363//363 364//364 +f 370//370 399//399 400//400 +f 400//400 363//363 370//370 +f 365//365 454//454 366//366 +f 366//366 369//369 365//365 +f 366//366 367//367 368//368 +f 368//368 369//369 366//366 +f 368//368 480//480 364//364 +f 364//364 369//369 368//368 +f 364//364 467//467 365//365 +f 365//365 369//369 364//364 +f 370//370 476//476 399//399 +f 480//480 476//476 370//370 +f 366//366 454//454 371//371 +f 371//371 372//372 366//366 +f 371//371 376//376 377//377 +f 377//377 372//372 371//371 +f 377//377 521//521 520//520 +f 520//520 372//372 377//377 +f 520//520 367//367 366//366 +f 366//366 372//372 520//520 +f 450//450 373//373 374//374 +f 374//374 375//375 450//450 +f 374//374 378//378 380//380 +f 380//380 375//375 374//374 +f 380//380 521//521 377//377 +f 377//377 375//375 380//380 +f 377//377 376//376 450//450 +f 450//450 375//375 377//377 +f 378//378 390//390 379//379 +f 380//380 379//379 521//521 +f 378//378 379//379 380//380 +f 374//374 373//373 381//381 +f 381//381 384//384 374//374 +f 381//381 431//431 382//382 +f 382//382 384//384 381//381 +f 382//382 383//383 391//391 +f 391//391 384//384 382//382 +f 391//391 378//378 374//374 +f 374//374 384//384 391//391 +f 387//387 8000//8000 8008//8008 +f 388//388 386//386 385//385 +f 388//388 387//387 386//386 +f 387//387 8008//8008 386//386 +f 388//388 383//383 382//382 +f 382//382 387//387 388//388 +f 382//382 431//431 8001//8001 +f 431//431 432//432 8001//8001 +f 387//387 382//382 8000//8000 +f 382//382 8001//8001 8000//8000 +f 392//392 383//383 388//388 +f 388//388 503//503 392//392 +f 503//503 388//388 7998//7998 +f 388//388 385//385 7998//7998 +f 389//389 390//390 378//378 +f 378//378 391//391 389//389 +f 391//391 383//383 392//392 +f 389//389 391//391 392//392 +f 423//423 394//394 393//393 +f 423//423 395//395 394//394 +f 395//395 398//398 394//394 +f 423//423 422//422 403//403 +f 403//403 395//395 423//423 +f 403//403 406//406 396//396 +f 396//396 395//395 403//403 +f 396//396 397//397 8009//8009 +f 395//395 396//396 398//398 +f 396//396 8009//8009 398//398 +f 401//401 417//417 400//400 +f 400//400 402//402 401//401 +f 400//400 399//399 405//405 +f 405//405 402//402 400//400 +f 405//405 406//406 403//403 +f 403//403 402//402 405//405 +f 403//403 422//422 401//401 +f 401//401 402//402 403//403 +f 484//484 406//406 405//405 +f 405//405 404//404 484//484 +f 399//399 404//404 405//405 +f 396//396 485//485 397//397 +f 485//485 7996//7996 397//397 +f 396//396 406//406 484//484 +f 484//484 485//485 396//396 +f 408//408 8012//8012 407//407 +f 408//408 409//409 8012//8012 +f 409//409 8014//8014 8012//8012 +f 408//408 410//410 411//411 +f 411//411 409//409 408//408 +f 411//411 419//419 413//413 +f 413//413 409//409 411//411 +f 413//413 412//412 8015//8015 +f 409//409 413//413 8014//8014 +f 413//413 8015//8015 8014//8014 +f 345//345 414//414 460//460 +f 460//460 416//416 345//345 +f 460//460 459//459 415//415 +f 415//415 416//416 460//460 +f 415//415 419//419 411//411 +f 411//411 416//416 415//415 +f 411//411 410//410 345//345 +f 345//345 416//416 411//411 +f 471//471 417//417 401//401 +f 401//401 418//418 471//471 +f 401//401 422//422 424//424 +f 424//424 418//418 401//401 +f 424//424 419//419 415//415 +f 415//415 418//418 424//424 +f 415//415 459//459 471//471 +f 471//471 418//418 415//415 +f 423//423 393//393 8016//8016 +f 420//420 423//423 8013//8013 +f 423//423 8016//8016 8013//8013 +f 413//413 421//421 412//412 +f 413//413 420//420 421//421 +f 420//420 8013//8013 421//421 +f 413//413 419//419 424//424 +f 424//424 420//420 413//413 +f 424//424 422//422 423//423 +f 423//423 420//420 424//424 +f 425//425 444//444 426//426 +f 426//426 427//427 425//425 +f 426//426 330//330 429//429 +f 429//429 427//427 426//426 +f 429//429 438//438 436//436 +f 436//436 427//427 429//429 +f 436//436 452//452 425//425 +f 425//425 427//427 436//436 +f 438//438 429//429 8007//8007 +f 429//429 8002//8002 8007//8007 +f 429//429 428//428 8002//8002 +f 429//429 330//330 430//430 +f 330//330 322//322 430//430 +f 429//429 430//430 428//428 +f 431//431 433//433 432//432 +f 433//433 434//434 432//432 +f 433//433 7999//7999 434//434 +f 433//433 438//438 435//435 +f 438//438 8007//8007 435//435 +f 433//433 435//435 7999//7999 +f 381//381 373//373 453//453 +f 453//453 437//437 381//381 +f 453//453 452//452 436//436 +f 436//436 437//437 453//453 +f 436//436 438//438 433//433 +f 433//433 437//437 436//436 +f 433//433 431//431 381//381 +f 381//381 437//437 433//433 +f 463//463 331//331 439//439 +f 439//439 440//440 463//463 +f 439//439 448//448 441//441 +f 441//441 440//440 439//439 +f 441//441 447//447 456//456 +f 456//456 440//440 441//441 +f 456//456 442//442 463//463 +f 463//463 440//440 456//456 +f 443//443 444//444 425//425 +f 425//425 445//445 443//443 +f 425//425 452//452 446//446 +f 446//446 445//445 425//425 +f 446//446 447//447 441//441 +f 441//441 445//445 446//446 +f 441//441 448//448 443//443 +f 443//443 445//445 441//441 +f 453//453 373//373 450//450 +f 450//450 449//449 453//453 +f 450//450 376//376 451//451 +f 451//451 449//449 450//450 +f 451//451 447//447 446//446 +f 446//446 449//449 451//451 +f 446//446 452//452 453//453 +f 453//453 449//449 446//446 +f 371//371 454//454 466//466 +f 466//466 455//455 371//371 +f 466//466 442//442 456//456 +f 456//456 455//455 466//466 +f 456//456 447//447 451//451 +f 451//451 455//455 456//456 +f 451//451 376//376 371//371 +f 371//371 455//455 451//451 +f 460//460 414//414 457//457 +f 457//457 461//461 460//460 +f 457//457 340//340 458//458 +f 458//458 461//461 457//457 +f 458//458 465//465 473//473 +f 473//473 461//461 458//458 +f 473//473 459//459 460//460 +f 460//460 461//461 473//473 +f 462//462 331//331 463//463 +f 463//463 464//464 462//462 +f 463//463 442//442 470//470 +f 470//470 464//464 463//463 +f 470//470 465//465 458//458 +f 458//458 464//464 470//470 +f 458//458 340//340 462//462 +f 462//462 464//464 458//458 +f 466//466 454//454 365//365 +f 365//365 469//469 466//466 +f 365//365 467//467 468//468 +f 468//468 469//469 365//365 +f 468//468 465//465 470//470 +f 470//470 469//469 468//468 +f 470//470 442//442 466//466 +f 466//466 469//469 470//470 +f 474//474 417//417 471//471 +f 471//471 472//472 474//474 +f 471//471 459//459 473//473 +f 473//473 472//472 471//471 +f 473//473 465//465 468//468 +f 468//468 472//472 473//473 +f 468//468 467//467 474//474 +f 474//474 472//472 468//468 +f 475//475 399//399 476//476 +f 476//476 480//480 479//479 +f 479//479 1453//1453 477//477 +f 477//477 476//476 479//479 +f 477//477 493//493 475//475 +f 475//475 476//476 477//477 +f 368//368 367//367 478//478 +f 478//478 1441//1441 1452//1452 +f 1452//1452 368//368 478//478 +f 1452//1452 1453//1453 479//479 +f 479//479 368//368 1452//1452 +f 479//479 480//480 368//368 +f 477//477 481//481 493//493 +f 1453//1453 481//481 477//477 +f 485//485 483//483 7996//7996 +f 485//485 482//482 483//483 +f 482//482 8019//8019 483//483 +f 485//485 484//484 490//490 +f 490//490 482//482 485//485 +f 490//490 489//489 498//498 +f 498//498 482//482 490//490 +f 498//498 486//486 487//487 +f 482//482 498//498 8019//8019 +f 498//498 487//487 8019//8019 +f 404//404 399//399 475//475 +f 475//475 491//491 404//404 +f 475//475 493//493 488//488 +f 488//488 491//491 475//475 +f 488//488 489//489 490//490 +f 490//490 491//491 488//488 +f 490//490 484//484 404//404 +f 404//404 491//491 490//490 +f 492//492 1456//1456 497//497 +f 497//497 489//489 488//488 +f 488//488 492//492 497//497 +f 493//493 492//492 488//488 +f 495//495 1455//1455 496//496 +f 498//498 494//494 486//486 +f 498//498 495//495 494//494 +f 495//495 496//496 494//494 +f 498//498 489//489 497//497 +f 497//497 495//495 498//498 +f 497//497 1456//1456 495//495 +f 502//502 390//390 389//389 +f 389//389 499//499 502//502 +f 389//389 392//392 506//506 +f 506//506 499//499 389//389 +f 506//506 500//500 517//517 +f 517//517 499//499 506//506 +f 517//517 501//501 502//502 +f 502//502 499//499 517//517 +f 503//503 7998//7998 504//504 +f 507//507 503//503 7997//7997 +f 503//503 504//504 7997//7997 +f 513//513 505//505 514//514 +f 513//513 507//507 505//505 +f 507//507 7997//7997 505//505 +f 513//513 500//500 506//506 +f 506//506 507//507 513//513 +f 506//506 392//392 503//503 +f 503//503 507//507 506//506 +f 508//508 509//509 510//510 +f 508//508 511//511 509//509 +f 511//511 7994//7994 509//509 +f 508//508 1437//1437 512//512 +f 512//512 511//511 508//508 +f 512//512 500//500 513//513 +f 513//513 511//511 512//512 +f 513//513 514//514 7995//7995 +f 511//511 513//513 7994//7994 +f 513//513 7995//7995 7994//7994 +f 518//518 515//515 525//525 +f 525//525 516//516 518//518 +f 525//525 501//501 517//517 +f 517//517 516//516 525//525 +f 517//517 500//500 512//512 +f 512//512 516//516 517//517 +f 512//512 1437//1437 518//518 +f 518//518 516//516 512//512 +f 478//478 367//367 520//520 +f 520//520 519//519 478//478 +f 520//520 521//521 522//522 +f 522//522 519//519 520//520 +f 522//522 528//528 526//526 +f 526//526 519//519 522//522 +f 526//526 1441//1441 478//478 +f 478//478 519//519 526//526 +f 379//379 390//390 502//502 +f 502//502 523//523 379//379 +f 502//502 501//501 524//524 +f 524//524 523//523 502//502 +f 524//524 528//528 522//522 +f 522//522 523//523 524//524 +f 522//522 521//521 379//379 +f 379//379 523//523 522//522 +f 525//525 515//515 1446//1446 +f 524//524 1446//1446 528//528 +f 524//524 501//501 525//525 +f 525//525 1446//1446 524//524 +f 526//526 527//527 1441//1441 +f 528//528 527//527 526//526 +f 536//536 1451//1451 1450//1450 +f 542//542 1451//1451 536//536 +f 534//534 529//529 1447//1447 +f 1450//1450 529//529 534//534 +f 531//531 530//530 658//658 +f 658//658 532//532 531//531 +f 658//658 657//657 533//533 +f 533//533 532//532 658//658 +f 533//533 1450//1450 534//534 +f 534//534 532//532 533//533 +f 534//534 1447//1447 531//531 +f 531//531 532//532 534//534 +f 535//535 1348//1348 537//537 +f 537//537 542//542 536//536 +f 536//536 535//535 537//537 +f 536//536 1450//1450 533//533 +f 533//533 535//535 536//536 +f 533//533 657//657 535//535 +f 1457//1457 539//539 538//538 +f 539//539 7989//7989 538//538 +f 540//540 539//539 1457//1457 +f 540//540 544//544 539//539 +f 539//539 541//541 7989//7989 +f 541//541 8020//8020 7989//7989 +f 542//542 543//543 545//545 +f 543//543 544//544 540//540 +f 545//545 543//543 540//540 +f 537//537 1348//1348 1322//1322 +f 1322//1322 543//543 537//537 +f 1322//1322 1323//1323 544//544 +f 544//544 543//543 1322//1322 +f 543//543 542//542 537//537 +f 541//541 539//539 1320//1320 +f 544//544 1323//1323 1320//1320 +f 1320//1320 539//539 544//544 +f 541//541 8021//8021 8020//8020 +f 541//541 546//546 8021//8021 +f 1438//1438 7986//7986 7987//7987 +f 617//617 550//550 549//549 +f 617//617 549//549 547//547 +f 549//549 7985//7985 547//547 +f 549//549 1438//1438 548//548 +f 1438//1438 7987//7987 548//548 +f 549//549 548//548 7985//7985 +f 617//617 547//547 619//619 +f 558//558 1440//1440 554//554 +f 1444//1444 1440//1440 558//558 +f 555//555 1439//1439 1438//1438 +f 554//554 1439//1439 555//555 +f 549//549 550//550 553//553 +f 553//553 551//551 549//549 +f 553//553 559//559 552//552 +f 552//552 551//551 553//553 +f 552//552 554//554 555//555 +f 555//555 551//551 552//552 +f 555//555 1438//1438 549//549 +f 549//549 551//551 555//555 +f 557//557 643//643 564//564 +f 564//564 556//556 557//557 +f 564//564 1444//1444 558//558 +f 558//558 556//556 564//564 +f 558//558 554//554 552//552 +f 552//552 556//556 558//558 +f 552//552 559//559 557//557 +f 557//557 556//556 552//552 +f 561//561 560//560 1449//1449 +f 1447//1447 560//560 561//561 +f 566//566 562//562 1444//1444 +f 1449//1449 562//562 566//566 +f 564//564 643//643 563//563 +f 563//563 565//565 564//564 +f 563//563 646//646 568//568 +f 568//568 565//565 563//563 +f 568//568 1449//1449 566//566 +f 566//566 565//565 568//568 +f 566//566 1444//1444 564//564 +f 564//564 565//565 566//566 +f 567//567 530//530 531//531 +f 531//531 569//569 567//567 +f 531//531 1447//1447 561//561 +f 561//561 569//569 531//531 +f 561//561 1449//1449 568//568 +f 568//568 569//569 561//561 +f 568//568 646//646 567//567 +f 567//567 569//569 568//568 +f 570//570 599//599 571//571 +f 664//664 1297//1297 571//571 +f 599//599 664//664 571//571 +f 1298//1298 50//50 1297//1297 +f 1297//1297 572//572 1298//1298 +f 664//664 572//572 1297//1297 +f 574//574 590//590 573//573 +f 573//573 578//578 574//574 +f 573//573 586//586 575//575 +f 575//575 578//578 573//573 +f 575//575 582//582 576//576 +f 578//578 575//575 8028//8028 +f 575//575 576//576 8028//8028 +f 574//574 8027//8027 577//577 +f 574//574 578//578 8027//8027 +f 578//578 8028//8028 8027//8027 +f 585//585 1305//1305 579//579 +f 1305//1305 8031//8031 579//579 +f 585//585 579//579 580//580 +f 575//575 581//581 582//582 +f 575//575 8029//8029 581//581 +f 575//575 586//586 585//585 +f 575//575 585//585 8029//8029 +f 585//585 580//580 8029//8029 +f 590//590 598//598 573//573 +f 587//587 586//586 573//573 +f 573//573 598//598 587//587 +f 583//583 1305//1305 585//585 +f 585//585 584//584 583//583 +f 585//585 586//586 587//587 +f 587//587 584//584 585//585 +f 584//584 1341//1341 583//583 +f 588//588 1315//1315 1319//1319 +f 1319//1319 659//659 588//588 +f 1319//1319 660//660 659//659 +f 588//588 659//659 662//662 +f 589//589 590//590 574//574 +f 574//574 591//591 589//589 +f 591//591 574//574 592//592 +f 574//574 577//577 592//592 +f 591//591 592//592 593//593 +f 591//591 662//662 589//589 +f 1326//1326 1315//1315 588//588 +f 588//588 594//594 1326//1326 +f 588//588 662//662 591//591 +f 591//591 594//594 588//588 +f 591//591 593//593 595//595 +f 594//594 591//591 597//597 +f 591//591 595//595 597//597 +f 1326//1326 596//596 1325//1325 +f 1326//1326 594//594 596//596 +f 594//594 597//597 596//596 +f 587//587 600//600 584//584 +f 584//584 1334//1334 1341//1341 +f 598//598 600//600 587//587 +f 598//598 599//599 600//600 +f 598//598 590//590 589//589 +f 589//589 599//599 598//598 +f 570//570 1336//1336 1335//1335 +f 1335//1335 1334//1334 584//584 +f 600//600 1335//1335 584//584 +f 600//600 599//599 570//570 +f 570//570 1335//1335 600//600 +f 605//605 601//601 602//602 +f 602//602 603//603 605//605 +f 602//602 36//36 607//607 +f 607//607 603//603 602//602 +f 607//607 611//611 614//614 +f 614//614 603//603 607//607 +f 614//614 604//604 605//605 +f 605//605 603//603 614//614 +f 43//43 42//42 1099//1099 +f 1099//1099 606//606 43//43 +f 1099//1099 1097//1097 612//612 +f 612//612 606//606 1099//1099 +f 612//612 611//611 607//607 +f 607//607 606//606 612//612 +f 607//607 36//36 43//43 +f 43//43 606//606 607//607 +f 1095//1095 815//815 608//608 +f 608//608 610//610 1095//1095 +f 608//608 321//321 609//609 +f 609//609 610//610 608//608 +f 609//609 611//611 612//612 +f 612//612 610//610 609//609 +f 612//612 1097//1097 1095//1095 +f 1095//1095 610//610 612//612 +f 318//318 1337//1337 1342//1342 +f 1342//1342 613//613 318//318 +f 1342//1342 604//604 614//614 +f 614//614 613//613 1342//1342 +f 614//614 611//611 609//609 +f 609//609 613//613 614//614 +f 609//609 321//321 318//318 +f 318//318 613//613 609//609 +f 615//615 628//628 1560//1560 +f 1560//1560 1564//1564 615//615 +f 1564//1564 1560//1560 616//616 +f 1560//1560 7981//7981 616//616 +f 620//620 550//550 617//617 +f 620//620 617//617 7984//7984 +f 617//617 618//618 7984//7984 +f 617//617 619//619 618//618 +f 1560//1560 628//628 620//620 +f 1560//1560 620//620 7983//7983 +f 620//620 7984//7984 7983//7983 +f 624//624 629//629 621//621 +f 621//621 622//622 624//624 +f 621//621 628//628 615//615 +f 615//615 622//622 621//621 +f 623//623 357//357 637//637 +f 637//637 636//636 627//627 +f 627//627 623//623 637//637 +f 627//627 629//629 624//624 +f 624//624 623//623 627//627 +f 644//644 643//643 557//557 +f 557//557 625//625 644//644 +f 557//557 559//559 626//626 +f 626//626 625//625 557//557 +f 626//626 629//629 627//627 +f 627//627 625//625 626//626 +f 627//627 636//636 644//644 +f 644//644 625//625 627//627 +f 553//553 550//550 620//620 +f 620//620 630//630 553//553 +f 620//620 628//628 621//621 +f 621//621 630//630 620//620 +f 621//621 629//629 626//626 +f 626//626 630//630 621//621 +f 626//626 559//559 553//553 +f 553//553 630//630 626//626 +f 637//637 357//357 631//631 +f 631//631 632//632 637//637 +f 631//631 633//633 639//639 +f 639//639 632//632 631//631 +f 639//639 634//634 635//635 +f 635//635 632//632 639//639 +f 635//635 636//636 637//637 +f 637//637 632//632 635//635 +f 47//47 648//648 638//638 +f 638//638 640//640 47//47 +f 638//638 656//656 642//642 +f 642//642 640//640 638//638 +f 642//642 634//634 639//639 +f 639//639 640//640 642//642 +f 639//639 633//633 47//47 +f 47//47 640//640 639//639 +f 656//656 530//530 567//567 +f 567//567 641//641 656//656 +f 567//567 646//646 645//645 +f 645//645 641//641 567//567 +f 645//645 634//634 642//642 +f 642//642 641//641 645//645 +f 656//656 641//641 642//642 +f 563//563 643//643 644//644 +f 644//644 647//647 563//563 +f 644//644 636//636 635//635 +f 635//635 647//647 644//644 +f 635//635 634//634 645//645 +f 645//645 647//647 635//635 +f 645//645 646//646 563//563 +f 563//563 647//647 645//645 +f 638//638 648//648 649//649 +f 649//649 652//652 638//638 +f 649//649 650//650 651//651 +f 651//651 652//652 649//649 +f 651//651 657//657 652//652 +f 652//652 656//656 638//638 +f 52//52 1300//1300 653//653 +f 653//653 655//655 52//52 +f 653//653 1348//1348 655//655 +f 655//655 657//657 651//651 +f 651//651 650//650 52//52 +f 52//52 655//655 651//651 +f 535//535 654//654 1348//1348 +f 657//657 654//654 535//535 +f 655//655 654//654 657//657 +f 1348//1348 654//654 655//655 +f 658//658 530//530 656//656 +f 652//652 658//658 656//656 +f 657//657 658//658 652//652 +f 659//659 660//660 661//661 +f 661//661 663//663 659//659 +f 661//661 1344//1344 663//663 +f 659//659 663//663 662//662 +f 1344//1344 1298//1298 572//572 +f 572//572 664//664 662//662 +f 663//663 572//572 662//662 +f 1344//1344 572//572 663//663 +f 664//664 599//599 589//589 +f 664//664 589//589 662//662 +f 665//665 177//177 762//762 +f 762//762 667//667 665//665 +f 762//762 666//666 672//672 +f 672//672 667//667 762//762 +f 672//672 679//679 677//677 +f 677//677 667//667 672//672 +f 677//677 179//179 665//665 +f 665//665 667//667 677//677 +f 668//668 669//669 746//746 +f 746//746 671//671 668//668 +f 746//746 741//741 670//670 +f 670//670 671//671 746//746 +f 670//670 679//679 672//672 +f 672//672 671//671 670//670 +f 672//672 666//666 668//668 +f 668//668 671//671 672//672 +f 679//679 670//670 680//680 +f 670//670 8060//8060 680//680 +f 670//670 673//673 8060//8060 +f 670//670 741//741 674//674 +f 741//741 742//742 674//674 +f 670//670 674//674 673//673 +f 179//179 677//677 675//675 +f 677//677 676//676 675//675 +f 677//677 678//678 676//676 +f 677//677 679//679 8059//8059 +f 679//679 680//680 8059//8059 +f 677//677 8059//8059 678//678 +f 690//690 681//681 684//684 +f 684//684 682//682 690//690 +f 682//682 684//684 8870//8870 +f 684//684 8871//8871 8870//8870 +f 683//683 1282//1282 685//685 +f 684//684 685//685 8871//8871 +f 685//685 686//686 8871//8871 +f 684//684 683//683 685//685 +f 681//681 683//683 684//684 +f 1281//1281 1280//1280 8866//8866 +f 685//685 8869//8869 686//686 +f 685//685 1281//1281 8869//8869 +f 1281//1281 8866//8866 8869//8869 +f 685//685 1282//1282 1281//1281 +f 705//705 687//687 1532//1532 +f 687//687 688//688 1294//1294 +f 689//689 1533//1533 1532//1532 +f 1532//1532 1294//1294 689//689 +f 687//687 1294//1294 1532//1532 +f 1291//1291 1533//1533 689//689 +f 1291//1291 1535//1535 1533//1533 +f 1291//1291 681//681 690//690 +f 690//690 1535//1535 1291//1291 +f 691//691 203//203 692//692 +f 692//692 693//693 691//691 +f 694//694 693//693 692//692 +f 694//694 698//698 706//706 +f 706//706 693//693 694//694 +f 706//706 1549//1549 691//691 +f 691//691 693//693 706//706 +f 200//200 695//695 697//697 +f 697//697 699//699 200//200 +f 697//697 702//702 696//696 +f 696//696 699//699 697//697 +f 696//696 698//698 694//694 +f 694//694 699//699 696//696 +f 694//694 692//692 200//200 +f 200//200 699//699 694//694 +f 703//703 688//688 687//687 +f 687//687 700//700 703//703 +f 701//701 700//700 687//687 +f 701//701 698//698 696//696 +f 696//696 700//700 701//701 +f 696//696 702//702 703//703 +f 703//703 700//700 696//696 +f 704//704 701//701 705//705 +f 704//704 1549//1549 706//706 +f 706//706 701//701 704//704 +f 706//706 698//698 701//701 +f 701//701 687//687 705//705 +f 735//735 734//734 709//709 +f 709//709 787//787 735//735 +f 709//709 716//716 707//707 +f 707//707 787//787 709//709 +f 710//710 752//752 754//754 +f 754//754 708//708 710//710 +f 754//754 714//714 713//713 +f 713//713 708//708 754//754 +f 713//713 716//716 709//709 +f 709//709 708//708 713//713 +f 709//709 734//734 710//710 +f 710//710 708//708 709//709 +f 765//765 210//210 711//711 +f 711//711 715//715 765//765 +f 711//711 221//221 712//712 +f 712//712 715//715 711//711 +f 712//712 716//716 713//713 +f 713//713 715//715 712//712 +f 713//713 714//714 765//765 +f 765//765 715//715 713//713 +f 707//707 716//716 712//712 +f 712//712 717//717 707//707 +f 712//712 221//221 792//792 +f 792//792 717//717 712//712 +f 729//729 8070//8070 718//718 +f 729//729 721//721 8070//8070 +f 721//721 719//719 8070//8070 +f 729//729 728//728 720//720 +f 720//720 721//721 729//729 +f 730//730 722//722 723//723 +f 724//724 726//726 725//725 +f 726//726 727//727 725//725 +f 726//726 730//730 727//727 +f 730//730 723//723 727//727 +f 726//726 728//728 729//729 +f 729//729 730//730 726//726 +f 729//729 718//718 8071//8071 +f 730//730 729//729 722//722 +f 729//729 8071//8071 722//722 +f 731//731 752//752 710//710 +f 710//710 733//733 731//731 +f 710//710 734//734 732//732 +f 732//732 733//733 710//710 +f 732//732 728//728 726//726 +f 726//726 733//733 732//732 +f 726//726 724//724 731//731 +f 731//731 733//733 726//726 +f 720//720 728//728 732//732 +f 732//732 777//777 720//720 +f 732//732 734//734 735//735 +f 735//735 777//777 732//732 +f 736//736 739//739 737//737 +f 739//739 8069//8069 737//737 +f 739//739 738//738 8069//8069 +f 739//739 724//724 740//740 +f 724//724 725//725 740//740 +f 739//739 740//740 738//738 +f 741//741 743//743 742//742 +f 743//743 8057//8057 742//742 +f 743//743 744//744 8057//8057 +f 743//743 736//736 745//745 +f 736//736 737//737 745//745 +f 743//743 745//745 744//744 +f 746//746 669//669 758//758 +f 758//758 748//748 746//746 +f 758//758 750//750 747//747 +f 747//747 748//748 758//758 +f 747//747 736//736 743//743 +f 743//743 748//748 747//747 +f 743//743 741//741 746//746 +f 746//746 748//748 743//743 +f 751//751 752//752 731//731 +f 731//731 749//749 751//751 +f 731//731 724//724 739//739 +f 739//739 749//749 731//731 +f 739//739 736//736 747//747 +f 747//747 749//749 739//739 +f 747//747 750//750 751//751 +f 751//751 749//749 747//747 +f 754//754 752//752 751//751 +f 751//751 755//755 754//754 +f 751//751 750//750 753//753 +f 753//753 755//755 751//751 +f 753//753 760//760 766//766 +f 766//766 755//755 753//753 +f 766//766 714//714 754//754 +f 754//754 755//755 766//766 +f 758//758 669//669 668//668 +f 668//668 756//756 758//758 +f 668//668 666//666 757//757 +f 757//757 756//756 668//668 +f 757//757 760//760 753//753 +f 753//753 756//756 757//757 +f 753//753 750//750 758//758 +f 758//758 756//756 753//753 +f 762//762 177//177 249//249 +f 249//249 761//761 762//762 +f 249//249 759//759 767//767 +f 767//767 761//761 249//249 +f 767//767 760//760 757//757 +f 757//757 761//761 767//767 +f 757//757 666//666 762//762 +f 762//762 761//761 757//757 +f 763//763 210//210 765//765 +f 765//765 764//764 763//763 +f 765//765 714//714 766//766 +f 766//766 764//764 765//765 +f 766//766 760//760 767//767 +f 767//767 764//764 766//766 +f 767//767 759//759 763//763 +f 763//763 764//764 767//767 +f 768//768 1427//1427 8050//8050 +f 1427//1427 8051//8051 8050//8050 +f 768//768 8050//8050 770//770 +f 768//768 769//769 8054//8054 +f 768//768 770//770 769//769 +f 772//772 1427//1427 768//768 +f 768//768 773//773 772//772 +f 776//776 768//768 775//775 +f 768//768 8054//8054 775//775 +f 776//776 773//773 768//768 +f 776//776 771//771 778//778 +f 778//778 773//773 776//776 +f 778//778 1420//1420 772//772 +f 772//772 773//773 778//778 +f 721//721 8056//8056 719//719 +f 721//721 720//720 774//774 +f 774//774 771//771 776//776 +f 776//776 721//721 774//774 +f 776//776 775//775 8055//8055 +f 721//721 776//776 8056//8056 +f 776//776 8055//8055 8056//8056 +f 777//777 735//735 791//791 +f 791//791 790//790 779//779 +f 779//779 777//777 791//791 +f 779//779 771//771 774//774 +f 774//774 777//777 779//779 +f 774//774 720//720 777//777 +f 782//782 781//781 1418//1418 +f 1418//1418 780//780 782//782 +f 1418//1418 1420//1420 778//778 +f 778//778 780//780 1418//1418 +f 778//778 771//771 779//779 +f 779//779 780//780 778//778 +f 779//779 790//790 782//782 +f 782//782 780//780 779//779 +f 785//785 781//781 782//782 +f 782//782 786//786 785//785 +f 782//782 790//790 783//783 +f 783//783 786//786 782//782 +f 783//783 797//797 784//784 +f 784//784 786//786 783//783 +f 784//784 795//795 785//785 +f 785//785 786//786 784//784 +f 791//791 735//735 787//787 +f 787//787 788//788 791//791 +f 787//787 707//707 789//789 +f 789//789 788//788 787//787 +f 789//789 797//797 783//783 +f 783//783 788//788 789//789 +f 783//783 790//790 791//791 +f 791//791 788//788 783//783 +f 717//717 792//792 290//290 +f 290//290 299//299 798//798 +f 798//798 717//717 290//290 +f 798//798 797//797 789//789 +f 789//789 717//717 798//798 +f 789//789 707//707 717//717 +f 793//793 298//298 794//794 +f 794//794 796//796 793//793 +f 794//794 795//795 784//784 +f 784//784 796//796 794//794 +f 784//784 797//797 798//798 +f 798//798 796//796 784//784 +f 798//798 299//299 793//793 +f 793//793 796//796 798//798 +f 800//800 1369//1369 802//802 +f 1369//1369 1367//1367 802//802 +f 800//800 799//799 1375//1375 +f 1375//1375 1369//1369 800//800 +f 800//800 801//801 799//799 +f 801//801 800//800 1423//1423 +f 800//800 802//802 1423//1423 +f 803//803 809//809 807//807 +f 806//806 803//803 807//807 +f 799//799 803//803 806//806 +f 805//805 804//804 1370//1370 +f 1370//1370 806//806 805//805 +f 1375//1375 806//806 1370//1370 +f 1375//1375 799//799 806//806 +f 806//806 807//807 805//805 +f 808//808 804//804 805//805 +f 805//805 812//812 808//808 +f 805//805 807//807 812//812 +f 811//811 1098//1098 808//808 +f 808//808 812//812 811//811 +f 807//807 809//809 1415//1415 +f 1415//1415 810//810 813//813 +f 813//813 811//811 812//812 +f 812//812 1415//1415 813//813 +f 807//807 1415//1415 812//812 +f 814//814 310//310 312//312 +f 312//312 817//817 814//814 +f 312//312 316//316 817//817 +f 817//817 811//811 813//813 +f 813//813 810//810 814//814 +f 814//814 817//817 813//813 +f 316//316 815//815 816//816 +f 816//816 817//817 316//316 +f 816//816 1098//1098 811//811 +f 811//811 817//817 816//816 +f 850//850 967//967 818//818 +f 818//818 821//821 850//850 +f 818//818 819//819 822//822 +f 822//822 821//821 818//818 +f 822//822 826//826 820//820 +f 820//820 821//821 822//822 +f 820//820 848//848 850//850 +f 850//850 821//821 820//820 +f 953//953 952//952 941//941 +f 941//941 823//823 953//953 +f 941//941 940//940 829//829 +f 829//829 823//823 941//941 +f 829//829 826//826 822//822 +f 822//822 823//823 829//829 +f 822//822 819//819 953//953 +f 953//953 823//823 822//822 +f 830//830 824//824 7943//7943 +f 827//827 830//830 825//825 +f 830//830 7943//7943 825//825 +f 828//828 7942//7942 834//834 +f 828//828 827//827 7942//7942 +f 827//827 825//825 7942//7942 +f 828//828 826//826 829//829 +f 829//829 827//827 828//828 +f 829//829 940//940 830//830 +f 830//830 827//827 829//829 +f 833//833 832//832 852//852 +f 833//833 836//836 832//832 +f 836//836 831//831 832//832 +f 833//833 848//848 820//820 +f 820//820 836//836 833//833 +f 820//820 826//826 828//828 +f 828//828 836//836 820//820 +f 828//828 834//834 835//835 +f 836//836 828//828 831//831 +f 828//828 835//835 831//831 +f 841//841 837//837 8098//8098 +f 841//841 838//838 837//837 +f 838//838 839//839 837//837 +f 841//841 840//840 846//846 +f 846//846 838//838 841//841 +f 846//846 844//844 842//842 +f 842//842 838//838 846//846 +f 842//842 8101//8101 7951//7951 +f 838//838 842//842 839//839 +f 842//842 7951//7951 839//839 +f 843//843 973//973 977//977 +f 977//977 845//845 843//843 +f 977//977 976//976 851//851 +f 851//851 845//845 977//977 +f 851//851 844//844 846//846 +f 846//846 845//845 851//851 +f 846//846 840//840 843//843 +f 843//843 845//845 846//846 +f 847//847 967//967 850//850 +f 850//850 849//849 847//847 +f 850//850 848//848 853//853 +f 853//853 849//849 850//850 +f 853//853 844//844 851//851 +f 851//851 849//849 853//853 +f 851//851 976//976 847//847 +f 847//847 849//849 851//851 +f 833//833 852//852 7947//7947 +f 854//854 833//833 7948//7948 +f 833//833 7947//7947 7948//7948 +f 842//842 7950//7950 8101//8101 +f 842//842 854//854 7950//7950 +f 854//854 7948//7948 7950//7950 +f 842//842 844//844 853//853 +f 853//853 854//854 842//842 +f 853//853 848//848 833//833 +f 833//833 854//854 853//853 +f 855//855 17//17 856//856 +f 856//856 1121//1121 855//855 +f 858//858 1121//1121 856//856 +f 17//17 1224//1224 1225//1225 +f 1225//1225 856//856 17//17 +f 857//857 856//856 1225//1225 +f 857//857 858//858 856//856 +f 860//860 859//859 1236//1236 +f 860//860 858//858 857//857 +f 857//857 859//859 860//860 +f 860//860 1123//1123 858//858 +f 860//860 1236//1236 861//861 +f 861//861 1123//1123 860//860 +f 861//861 863//863 1112//1112 +f 863//863 862//862 1112//1112 +f 861//861 1236//1236 863//863 +f 863//863 7969//7969 7968//7968 +f 863//863 7968//7968 862//862 +f 867//867 985//985 882//882 +f 864//864 985//985 867//867 +f 879//879 963//963 866//866 +f 866//866 865//865 879//879 +f 866//866 966//966 870//870 +f 870//870 865//865 866//866 +f 870//870 864//864 867//867 +f 867//867 865//865 870//870 +f 867//867 882//882 879//879 +f 879//879 865//865 867//867 +f 869//869 978//978 905//905 +f 905//905 868//868 869//869 +f 905//905 903//903 871//871 +f 871//871 868//868 905//905 +f 871//871 864//864 870//870 +f 870//870 868//868 871//871 +f 870//870 966//966 869//869 +f 869//869 868//868 870//870 +f 871//871 988//988 864//864 +f 903//903 988//988 871//871 +f 875//875 1029//1029 877//877 +f 872//872 1029//1029 875//875 +f 887//887 946//946 873//873 +f 873//873 874//874 887//887 +f 873//873 951//951 876//876 +f 876//876 874//874 873//873 +f 876//876 872//872 875//875 +f 875//875 874//874 876//876 +f 875//875 877//877 887//887 +f 887//887 874//874 875//875 +f 961//961 963//963 879//879 +f 879//879 880//880 961//961 +f 879//879 882//882 878//878 +f 878//878 880//880 879//879 +f 878//878 872//872 876//876 +f 876//876 880//880 878//878 +f 876//876 951//951 961//961 +f 961//961 880//880 876//876 +f 878//878 881//881 872//872 +f 882//882 881//881 878//878 +f 884//884 883//883 896//896 +f 889//889 883//883 884//884 +f 885//885 929//929 933//933 +f 933//933 884//884 885//885 +f 933//933 890//890 886//886 +f 886//886 884//884 933//933 +f 886//886 889//889 884//884 +f 884//884 896//896 885//885 +f 891//891 946//946 887//887 +f 887//887 888//888 891//891 +f 887//887 877//877 893//893 +f 893//893 888//888 887//887 +f 893//893 889//889 886//886 +f 886//886 888//888 893//893 +f 886//886 890//890 891//891 +f 891//891 888//888 886//886 +f 893//893 892//892 889//889 +f 877//877 892//892 893//893 +f 929//929 885//885 894//894 +f 885//885 895//895 894//894 +f 885//885 897//897 895//895 +f 885//885 896//896 897//897 +f 896//896 1008//1008 897//897 +f 900//900 898//898 899//899 +f 898//898 901//901 899//899 +f 900//900 899//899 1005//1005 +f 911//911 7954//7954 7955//7955 +f 911//911 7955//7955 8097//8097 +f 898//898 911//911 901//901 +f 911//911 7956//7956 901//901 +f 911//911 8097//8097 7956//7956 +f 904//904 902//902 903//903 +f 912//912 902//902 904//904 +f 905//905 978//978 914//914 +f 914//914 907//907 905//905 +f 914//914 922//922 906//906 +f 906//906 907//907 914//914 +f 906//906 912//912 904//904 +f 904//904 907//907 906//906 +f 904//904 903//903 905//905 +f 905//905 907//907 904//904 +f 911//911 919//919 7954//7954 +f 919//919 908//908 7954//7954 +f 911//911 909//909 919//919 +f 911//911 898//898 910//910 +f 910//910 909//909 911//911 +f 910//910 912//912 906//906 +f 906//906 909//909 910//910 +f 906//906 922//922 919//919 +f 919//919 909//909 906//906 +f 910//910 997//997 912//912 +f 910//910 898//898 900//900 +f 900//900 997//997 910//910 +f 914//914 978//978 982//982 +f 982//982 913//913 914//914 +f 982//982 981//981 917//917 +f 917//917 913//913 982//982 +f 917//917 925//925 924//924 +f 924//924 913//913 917//917 +f 924//924 922//922 914//914 +f 914//914 913//913 924//924 +f 974//974 973//973 843//843 +f 843//843 915//915 974//974 +f 843//843 840//840 916//916 +f 916//916 915//915 843//843 +f 916//916 925//925 917//917 +f 917//917 915//915 916//916 +f 917//917 981//981 974//974 +f 974//974 915//915 917//917 +f 841//841 8098//8098 8100//8100 +f 918//918 841//841 8099//8099 +f 841//841 8100//8100 8099//8099 +f 926//926 7952//7952 927//927 +f 926//926 918//918 7952//7952 +f 918//918 8099//8099 7952//7952 +f 926//926 925//925 916//916 +f 916//916 918//918 926//926 +f 916//916 840//840 841//841 +f 841//841 918//918 916//916 +f 919//919 921//921 908//908 +f 919//919 923//923 921//921 +f 923//923 920//920 921//921 +f 919//919 922//922 924//924 +f 924//924 923//923 919//919 +f 924//924 925//925 926//926 +f 926//926 923//923 924//924 +f 926//926 927//927 7953//7953 +f 923//923 926//926 920//920 +f 926//926 7953//7953 920//920 +f 929//929 894//894 928//928 +f 933//933 929//929 7949//7949 +f 929//929 928//928 7949//7949 +f 931//931 933//933 930//930 +f 933//933 7949//7949 930//930 +f 937//937 932//932 7946//7946 +f 937//937 931//931 932//932 +f 931//931 930//930 932//932 +f 937//937 943//943 942//942 +f 942//942 931//931 937//937 +f 942//942 890//890 933//933 +f 933//933 931//931 942//942 +f 830//830 934//934 824//824 +f 830//830 935//935 934//934 +f 935//935 7945//7945 934//934 +f 830//830 940//940 936//936 +f 936//936 935//935 830//830 +f 936//936 943//943 937//937 +f 937//937 935//935 936//936 +f 937//937 7946//7946 7944//7944 +f 935//935 937//937 7945//7945 +f 937//937 7944//7944 7945//7945 +f 941//941 952//952 955//955 +f 955//955 938//938 941//941 +f 955//955 944//944 939//939 +f 939//939 938//938 955//955 +f 939//939 943//943 936//936 +f 936//936 938//938 939//939 +f 936//936 940//940 941//941 +f 941//941 938//938 936//936 +f 947//947 946//946 891//891 +f 891//891 945//945 947//947 +f 891//891 890//890 942//942 +f 942//942 945//945 891//891 +f 942//942 943//943 939//939 +f 939//939 945//945 942//942 +f 939//939 944//944 947//947 +f 947//947 945//945 939//939 +f 873//873 946//946 947//947 +f 947//947 950//950 873//873 +f 947//947 944//944 948//948 +f 948//948 950//950 947//947 +f 948//948 957//957 949//949 +f 949//949 950//950 948//948 +f 949//949 951//951 873//873 +f 873//873 950//950 949//949 +f 955//955 952//952 953//953 +f 953//953 954//954 955//955 +f 953//953 819//819 959//959 +f 959//959 954//954 953//953 +f 959//959 957//957 948//948 +f 948//948 954//954 959//959 +f 948//948 944//944 955//955 +f 955//955 954//954 948//948 +f 818//818 967//967 968//968 +f 968//968 956//956 818//818 +f 968//968 971//971 958//958 +f 958//958 956//956 968//968 +f 958//958 957//957 959//959 +f 959//959 956//956 958//958 +f 959//959 819//819 818//818 +f 818//818 956//956 959//959 +f 960//960 963//963 961//961 +f 961//961 962//962 960//960 +f 961//961 951//951 949//949 +f 949//949 962//962 961//961 +f 949//949 957//957 958//958 +f 958//958 962//962 949//949 +f 958//958 971//971 960//960 +f 960//960 962//962 958//958 +f 866//866 963//963 960//960 +f 960//960 964//964 866//866 +f 960//960 971//971 970//970 +f 970//970 964//964 960//960 +f 970//970 965//965 979//979 +f 979//979 964//964 970//970 +f 979//979 966//966 866//866 +f 866//866 964//964 979//979 +f 968//968 967//967 847//847 +f 847//847 972//972 968//968 +f 847//847 976//976 969//969 +f 969//969 972//972 847//847 +f 969//969 965//965 970//970 +f 970//970 972//972 969//969 +f 970//970 971//971 968//968 +f 968//968 972//972 970//970 +f 977//977 973//973 974//974 +f 974//974 975//975 977//977 +f 974//974 981//981 980//980 +f 980//980 975//975 974//974 +f 980//980 965//965 969//969 +f 969//969 975//975 980//980 +f 969//969 976//976 977//977 +f 977//977 975//975 969//969 +f 982//982 978//978 869//869 +f 869//869 983//983 982//982 +f 869//869 966//966 979//979 +f 979//979 983//983 869//869 +f 979//979 965//965 980//980 +f 980//980 983//983 979//979 +f 980//980 981//981 982//982 +f 982//982 983//983 980//980 +f 984//984 1492//1492 1032//1032 +f 985//985 984//984 1032//1032 +f 985//985 986//986 1484//1484 +f 1484//1484 984//984 985//985 +f 985//985 864//864 986//986 +f 985//985 1032//1032 882//882 +f 988//988 903//903 996//996 +f 987//987 988//988 996//996 +f 986//986 988//988 987//987 +f 986//986 864//864 988//988 +f 989//989 990//990 1485//1485 +f 1484//1484 986//986 987//987 +f 987//987 1485//1485 1484//1484 +f 987//987 996//996 989//989 +f 989//989 1485//1485 987//987 +f 1472//1472 990//990 989//989 +f 989//989 993//993 1472//1472 +f 989//989 996//996 994//994 +f 994//994 993//993 989//989 +f 994//994 991//991 992//992 +f 992//992 993//993 994//994 +f 992//992 1474//1474 1472//1472 +f 1472//1472 993//993 992//992 +f 996//996 903//903 902//902 +f 902//902 912//912 995//995 +f 995//995 991//991 994//994 +f 994//994 902//902 995//995 +f 996//996 902//902 994//994 +f 997//997 900//900 1007//1007 +f 1007//1007 1006//1006 1000//1000 +f 1000//1000 997//997 1007//1007 +f 1000//1000 991//991 995//995 +f 995//995 997//997 1000//1000 +f 995//995 912//912 997//997 +f 1001//1001 1475//1475 998//998 +f 998//998 999//999 1001//1001 +f 998//998 1474//1474 992//992 +f 992//992 999//999 998//998 +f 992//992 991//991 1000//1000 +f 1000//1000 999//999 992//992 +f 1000//1000 1006//1006 1001//1001 +f 1001//1001 999//999 1000//1000 +f 1460//1460 1475//1475 1001//1001 +f 1460//1460 1001//1001 7960//7960 +f 1001//1001 1002//1002 7960//7960 +f 1001//1001 1006//1006 8095//8095 +f 1006//1006 8096//8096 8095//8095 +f 1001//1001 8095//8095 1002//1002 +f 1460//1460 1004//1004 1003//1003 +f 1460//1460 7960//7960 1004//1004 +f 1007//1007 900//900 7957//7957 +f 900//900 1005//1005 7957//7957 +f 1006//1006 1007//1007 8096//8096 +f 1007//1007 7958//7958 8096//8096 +f 1007//1007 7957//7957 7958//7958 +f 896//896 1019//1019 1008//1008 +f 1019//1019 1009//1009 1008//1008 +f 1019//1019 1018//1018 7959//7959 +f 1018//1018 7961//7961 7959//7959 +f 1019//1019 7959//7959 1009//1009 +f 1010//1010 1506//1506 1011//1011 +f 1506//1506 1507//1507 1011//1011 +f 1010//1010 1011//1011 1013//1013 +f 1018//1018 1010//1010 7961//7961 +f 1010//1010 1012//1012 7961//7961 +f 1010//1010 1013//1013 1012//1012 +f 1014//1014 1506//1506 1010//1010 +f 1010//1010 1016//1016 1014//1014 +f 1010//1010 1018//1018 1015//1015 +f 1015//1015 1016//1016 1010//1010 +f 1015//1015 1020//1020 1023//1023 +f 1023//1023 1016//1016 1015//1015 +f 1023//1023 1017//1017 1014//1014 +f 1014//1014 1016//1016 1023//1023 +f 1019//1019 896//896 883//883 +f 883//883 889//889 1021//1021 +f 1021//1021 1020//1020 1015//1015 +f 1015//1015 883//883 1021//1021 +f 1015//1015 1018//1018 1019//1019 +f 1019//1019 883//883 1015//1015 +f 892//892 877//877 1026//1026 +f 1024//1024 892//892 1026//1026 +f 1024//1024 1020//1020 1021//1021 +f 1021//1021 892//892 1024//1024 +f 1021//1021 889//889 892//892 +f 1502//1502 1025//1025 1022//1022 +f 1502//1502 1017//1017 1023//1023 +f 1023//1023 1025//1025 1502//1502 +f 1023//1023 1020//1020 1024//1024 +f 1024//1024 1025//1025 1023//1023 +f 1024//1024 1026//1026 1022//1022 +f 1022//1022 1025//1025 1024//1024 +f 1022//1022 1026//1026 1027//1027 +f 1027//1027 1490//1490 1022//1022 +f 1027//1027 1030//1030 1028//1028 +f 1028//1028 1490//1490 1027//1027 +f 1026//1026 877//877 1029//1029 +f 1029//1029 872//872 1030//1030 +f 1027//1027 1029//1029 1030//1030 +f 1026//1026 1029//1029 1027//1027 +f 882//882 1032//1032 881//881 +f 1030//1030 872//872 881//881 +f 1032//1032 1492//1492 1031//1031 +f 1028//1028 1030//1030 881//881 +f 881//881 1031//1031 1028//1028 +f 1032//1032 1031//1031 881//881 +f 1034//1034 1033//1033 1048//1048 +f 1048//1048 1035//1035 1034//1034 +f 1048//1048 1492//1492 1035//1035 +f 1036//1036 1142//1142 1034//1034 +f 1034//1034 1035//1035 1036//1036 +f 1481//1481 1134//1134 1136//1136 +f 1136//1136 1489//1489 1481//1481 +f 1136//1136 1142//1142 1036//1036 +f 1036//1036 1489//1489 1136//1136 +f 1483//1483 1134//1134 1481//1481 +f 1384//1384 1465//1465 1037//1037 +f 1509//1509 1039//1039 1038//1038 +f 1039//1039 7964//7964 1038//1038 +f 1124//1124 1039//1039 1509//1509 +f 1499//1499 1040//1040 1124//1124 +f 1041//1041 1040//1040 1499//1499 +f 1041//1041 1042//1042 1040//1040 +f 1504//1504 1042//1042 1041//1041 +f 1504//1504 1120//1120 1042//1042 +f 1495//1495 1120//1120 1504//1504 +f 1043//1043 1045//1045 1495//1495 +f 1043//1043 1047//1047 1044//1044 +f 1044//1044 1045//1045 1043//1043 +f 1496//1496 1043//1043 1495//1495 +f 1047//1047 1043//1043 1496//1496 +f 1046//1046 1493//1493 1492//1492 +f 1047//1047 1493//1493 1046//1046 +f 1048//1048 1033//1033 1127//1127 +f 1044//1044 1047//1047 1046//1046 +f 1046//1046 1127//1127 1044//1044 +f 1046//1046 1492//1492 1048//1048 +f 1048//1048 1127//1127 1046//1046 +f 1049//1049 1050//1050 1143//1143 +f 1143//1143 1051//1051 1049//1049 +f 1093//1093 1051//1051 1143//1143 +f 1093//1093 1053//1053 1058//1058 +f 1058//1058 1051//1051 1093//1093 +f 1058//1058 1358//1358 1049//1049 +f 1049//1049 1051//1051 1058//1058 +f 1093//1093 1075//1075 1052//1052 +f 1052//1052 1053//1053 1093//1093 +f 1094//1094 1353//1353 1054//1054 +f 1054//1054 1055//1055 1094//1094 +f 1054//1054 3//3 1056//1056 +f 1056//1056 1055//1055 1054//1054 +f 1056//1056 1053//1053 1052//1052 +f 1052//1052 1055//1055 1056//1056 +f 1052//1052 1075//1075 1094//1094 +f 1094//1094 1055//1055 1052//1052 +f 1057//1057 1358//1358 1058//1058 +f 1058//1058 1059//1059 1057//1057 +f 1058//1058 1053//1053 1056//1056 +f 1056//1056 1059//1059 1058//1058 +f 1056//1056 3//3 1059//1059 +f 1060//1060 1061//1061 8024//8024 +f 1061//1061 1062//1062 8024//8024 +f 1061//1061 1063//1063 1062//1062 +f 1061//1061 1064//1064 1065//1065 +f 1064//1064 7978//7978 1065//1065 +f 1061//1061 1065//1065 1063//1063 +f 1066//1066 7976//7976 1067//1067 +f 1064//1064 1066//1066 7978//7978 +f 1066//1066 7977//7977 7978//7978 +f 1066//1066 1067//1067 7977//7977 +f 1071//1071 1397//1397 1094//1094 +f 1094//1094 1068//1068 1071//1071 +f 1094//1094 1075//1075 1069//1069 +f 1069//1069 1068//1068 1094//1094 +f 1069//1069 1074//1074 1070//1070 +f 1070//1070 1068//1068 1069//1069 +f 1070//1070 1078//1078 1071//1071 +f 1071//1071 1068//1068 1070//1070 +f 1075//1075 1072//1072 1073//1073 +f 1077//1077 1074//1074 1069//1069 +f 1069//1069 1073//1073 1077//1077 +f 1075//1075 1073//1073 1069//1069 +f 1066//1066 1090//1090 7976//7976 +f 1090//1090 7974//7974 7976//7976 +f 1066//1066 1076//1076 1090//1090 +f 1066//1066 1064//1064 1079//1079 +f 1079//1079 1076//1076 1066//1066 +f 1079//1079 1074//1074 1077//1077 +f 1077//1077 1076//1076 1079//1079 +f 1090//1090 1076//1076 1077//1077 +f 1061//1061 1060//1060 1362//1362 +f 1362//1362 1080//1080 1061//1061 +f 1362//1362 1078//1078 1070//1070 +f 1070//1070 1080//1080 1362//1362 +f 1070//1070 1074//1074 1079//1079 +f 1079//1079 1080//1080 1070//1070 +f 1079//1079 1064//1064 1061//1061 +f 1061//1061 1080//1080 1079//1079 +f 1082//1082 1050//1050 1381//1381 +f 1381//1381 1081//1081 1082//1082 +f 1381//1381 1085//1085 1087//1087 +f 1087//1087 1081//1081 1381//1381 +f 1091//1091 1081//1081 1087//1087 +f 1091//1091 1072//1072 1082//1082 +f 1082//1082 1081//1081 1091//1091 +f 1083//1083 1084//1084 1086//1086 +f 1083//1083 1088//1088 1084//1084 +f 1087//1087 1085//1085 1086//1086 +f 1086//1086 1084//1084 1087//1087 +f 1090//1090 1088//1088 7974//7974 +f 1088//1088 7975//7975 7974//7974 +f 1090//1090 1077//1077 1089//1089 +f 1089//1089 1087//1087 1084//1084 +f 1084//1084 1090//1090 1089//1089 +f 1088//1088 1090//1090 1084//1084 +f 1072//1072 1091//1091 1073//1073 +f 1091//1091 1087//1087 1089//1089 +f 1089//1089 1077//1077 1073//1073 +f 1073//1073 1091//1091 1089//1089 +f 1088//1088 7973//7973 7975//7975 +f 1088//1088 7971//7971 7973//7973 +f 1088//1088 1083//1083 7971//7971 +f 1083//1083 1092//1092 7971//7971 +f 1083//1083 1387//1387 1092//1092 +f 1093//1093 1072//1072 1075//1075 +f 1397//1397 1353//1353 1094//1094 +f 816//816 815//815 1095//1095 +f 1095//1095 1096//1096 816//816 +f 1095//1095 1097//1097 1104//1104 +f 1104//1104 1096//1096 1095//1095 +f 1104//1104 1103//1103 1107//1107 +f 1107//1107 1096//1096 1104//1104 +f 1107//1107 1098//1098 816//816 +f 816//816 1096//1096 1107//1107 +f 1099//1099 42//42 1100//1100 +f 1100//1100 1102//1102 1099//1099 +f 1100//1100 7//7 1101//1101 +f 1101//1101 1102//1102 1100//1100 +f 1101//1101 1103//1103 1104//1104 +f 1104//1104 1102//1102 1101//1101 +f 1104//1104 1097//1097 1099//1099 +f 1099//1099 1102//1102 1104//1104 +f 8//8 6//6 1396//1396 +f 1396//1396 1106//1106 8//8 +f 1396//1396 1105//1105 1108//1108 +f 1108//1108 1106//1106 1396//1396 +f 1108//1108 1103//1103 1101//1101 +f 1101//1101 1106//1106 1108//1108 +f 1101//1101 7//7 8//8 +f 8//8 1106//1106 1101//1101 +f 1392//1392 804//804 808//808 +f 808//808 1109//1109 1392//1392 +f 808//808 1098//1098 1107//1107 +f 1107//1107 1109//1109 808//808 +f 1107//1107 1103//1103 1108//1108 +f 1108//1108 1109//1109 1107//1107 +f 1108//1108 1105//1105 1392//1392 +f 1392//1392 1109//1109 1108//1108 +f 1039//1039 1124//1124 1115//1115 +f 1115//1115 1116//1116 1039//1039 +f 1039//1039 7965//7965 7964//7964 +f 1039//1039 1116//1116 7965//7965 +f 1116//1116 1110//1110 7965//7965 +f 1113//1113 861//861 1111//1111 +f 861//861 1112//1112 1111//1111 +f 1113//1113 1111//1111 7967//7967 +f 1116//1116 1114//1114 1110//1110 +f 1116//1116 7966//7966 1114//1114 +f 1116//1116 1115//1115 1113//1113 +f 1116//1116 1113//1113 7966//7966 +f 1113//1113 7967//7967 7966//7966 +f 1120//1120 1495//1495 1117//1117 +f 1117//1117 1122//1122 1120//1120 +f 1122//1122 1118//1118 1119//1119 +f 1119//1119 1042//1042 1120//1120 +f 1120//1120 1122//1122 1119//1119 +f 1130//1130 855//855 1121//1121 +f 1121//1121 1122//1122 1130//1130 +f 1121//1121 858//858 1118//1118 +f 1118//1118 1122//1122 1121//1121 +f 1122//1122 1117//1117 1130//1130 +f 1123//1123 861//861 1113//1113 +f 1113//1113 1115//1115 1125//1125 +f 1125//1125 1123//1123 1113//1113 +f 1118//1118 1123//1123 1125//1125 +f 1118//1118 858//858 1123//1123 +f 1115//1115 1124//1124 1040//1040 +f 1040//1040 1042//1042 1119//1119 +f 1119//1119 1118//1118 1125//1125 +f 1125//1125 1040//1040 1119//1119 +f 1115//1115 1040//1040 1125//1125 +f 1033//1033 1126//1126 1128//1128 +f 1128//1128 1127//1127 1033//1033 +f 1133//1133 1127//1127 1128//1128 +f 1133//1133 1044//1044 1127//1127 +f 1126//1126 131//131 18//18 +f 18//18 1128//1128 1126//1126 +f 18//18 1132//1132 1129//1129 +f 1129//1129 1128//1128 18//18 +f 1129//1129 1133//1133 1128//1128 +f 16//16 855//855 1130//1130 +f 1130//1130 1131//1131 16//16 +f 1130//1130 1117//1117 1131//1131 +f 1131//1131 1133//1133 1129//1129 +f 1129//1129 1132//1132 16//16 +f 16//16 1131//1131 1129//1129 +f 1117//1117 1495//1495 1045//1045 +f 1045//1045 1131//1131 1117//1117 +f 1045//1045 1044//1044 1133//1133 +f 1133//1133 1131//1131 1045//1045 +f 1136//1136 1134//1134 1135//1135 +f 1135//1135 1138//1138 1136//1136 +f 1140//1140 1142//1142 1136//1136 +f 1136//1136 1138//1138 1140//1140 +f 32//32 1138//1138 1356//1356 +f 32//32 1141//1141 1137//1137 +f 1137//1137 1138//1138 32//32 +f 1137//1137 1140//1140 1138//1138 +f 1138//1138 1135//1135 1356//1356 +f 29//29 131//131 1126//1126 +f 1126//1126 1139//1139 29//29 +f 1139//1139 1140//1140 1137//1137 +f 1137//1137 1141//1141 29//29 +f 29//29 1139//1139 1137//1137 +f 1034//1034 1142//1142 1140//1140 +f 1139//1139 1034//1034 1140//1140 +f 1139//1139 1126//1126 1033//1033 +f 1033//1033 1034//1034 1139//1139 +f 1082//1082 1143//1143 1050//1050 +f 1082//1082 1072//1072 1143//1143 +f 1093//1093 1143//1143 1072//1072 +f 1144//1144 1214//1214 1145//1145 +f 1145//1145 1152//1152 1144//1144 +f 1145//1145 1147//1147 1146//1146 +f 1146//1146 1152//1152 1145//1145 +f 1146//1146 1147//1147 1202//1202 +f 1148//1148 1149//1149 1151//1151 +f 1151//1151 1202//1202 1148//1148 +f 1151//1151 1154//1154 1150//1150 +f 1150//1150 1202//1202 1151//1151 +f 1150//1150 1146//1146 1202//1202 +f 1202//1202 1203//1203 1148//1148 +f 1247//1247 1158//1158 1157//1157 +f 1157//1157 1153//1153 1247//1247 +f 1157//1157 1144//1144 1152//1152 +f 1152//1152 1153//1153 1157//1157 +f 1152//1152 1146//1146 1150//1150 +f 1150//1150 1153//1153 1152//1152 +f 1150//1150 1154//1154 1247//1247 +f 1247//1247 1153//1153 1150//1150 +f 103//103 64//64 1222//1222 +f 1222//1222 1166//1166 103//103 +f 1215//1215 1166//1166 1222//1222 +f 1215//1215 1162//1162 1166//1166 +f 1166//1166 1164//1164 103//103 +f 1216//1216 1214//1214 1144//1144 +f 1144//1144 1155//1155 1216//1216 +f 1156//1156 1155//1155 1144//1144 +f 1156//1156 1162//1162 1215//1215 +f 1215//1215 1155//1155 1156//1156 +f 1216//1216 1155//1155 1215//1215 +f 1157//1157 1158//1158 1160//1160 +f 1160//1160 1159//1159 1157//1157 +f 1160//1160 1167//1167 1161//1161 +f 1161//1161 1159//1159 1160//1160 +f 1161//1161 1162//1162 1156//1156 +f 1156//1156 1159//1159 1161//1161 +f 1156//1156 1144//1144 1157//1157 +f 1157//1157 1159//1159 1156//1156 +f 110//110 1163//1163 8835//8835 +f 1163//1163 8836//8836 8835//8835 +f 110//110 1165//1165 1163//1163 +f 110//110 1164//1164 1166//1166 +f 1166//1166 1165//1165 110//110 +f 1166//1166 1162//1162 1161//1161 +f 1161//1161 1165//1165 1166//1166 +f 1161//1161 1167//1167 1163//1163 +f 1163//1163 1165//1165 1161//1161 +f 1169//1169 1237//1237 1231//1231 +f 1231//1231 1168//1168 1169//1169 +f 1231//1231 1230//1230 1173//1173 +f 1173//1173 1168//1168 1231//1231 +f 1173//1173 1172//1172 1181//1181 +f 1181//1181 1168//1168 1173//1173 +f 1181//1181 1190//1190 1169//1169 +f 1169//1169 1168//1168 1181//1181 +f 1226//1226 1227//1227 1171//1171 +f 1171//1171 1170//1170 1226//1226 +f 1171//1171 156//156 1177//1177 +f 1177//1177 1170//1170 1171//1171 +f 1177//1177 1172//1172 1173//1173 +f 1173//1173 1170//1170 1177//1177 +f 1173//1173 1230//1230 1226//1226 +f 1226//1226 1170//1170 1173//1173 +f 1174//1174 155//155 1278//1278 +f 1278//1278 1178//1178 1174//1174 +f 1278//1278 1175//1175 1176//1176 +f 1176//1176 1178//1178 1278//1278 +f 1176//1176 1172//1172 1177//1177 +f 1177//1177 1178//1178 1176//1176 +f 1177//1177 156//156 1174//1174 +f 1174//1174 1178//1178 1177//1177 +f 1274//1274 1179//1179 1191//1191 +f 1191//1191 1180//1180 1274//1274 +f 1191//1191 1190//1190 1181//1181 +f 1181//1181 1180//1180 1191//1191 +f 1181//1181 1172//1172 1176//1176 +f 1176//1176 1180//1180 1181//1181 +f 1176//1176 1175//1175 1274//1274 +f 1274//1274 1180//1180 1176//1176 +f 1234//1234 1187//1187 1182//1182 +f 1187//1187 1183//1183 1182//1182 +f 1187//1187 1186//1186 1195//1195 +f 1187//1187 1195//1195 1183//1183 +f 1195//1195 8094//8094 1183//1183 +f 1195//1195 1184//1184 8094//8094 +f 1185//1185 1237//1237 1169//1169 +f 1169//1169 1190//1190 1189//1189 +f 1189//1189 1185//1185 1169//1169 +f 1189//1189 1186//1186 1187//1187 +f 1187//1187 1185//1185 1189//1189 +f 1187//1187 1234//1234 1185//1185 +f 1191//1191 1179//1179 1188//1188 +f 1188//1188 1192//1192 1191//1191 +f 1188//1188 1197//1197 1196//1196 +f 1196//1196 1192//1192 1188//1188 +f 1196//1196 1186//1186 1189//1189 +f 1189//1189 1192//1192 1196//1196 +f 1189//1189 1190//1190 1191//1191 +f 1191//1191 1192//1192 1189//1189 +f 1194//1194 1198//1198 8076//8076 +f 1198//1198 1284//1284 8076//8076 +f 1194//1194 1193//1193 1198//1198 +f 1195//1195 1194//1194 1184//1184 +f 1194//1194 7972//7972 1184//1184 +f 1195//1195 1193//1193 1194//1194 +f 1195//1195 1186//1186 1196//1196 +f 1196//1196 1193//1193 1195//1195 +f 1196//1196 1197//1197 1198//1198 +f 1198//1198 1193//1193 1196//1196 +f 1199//1199 355//355 1200//1200 +f 1200//1200 362//362 1201//1201 +f 1206//1206 1200//1200 1201//1201 +f 1206//1206 1211//1211 1199//1199 +f 1199//1199 1200//1200 1206//1206 +f 1201//1201 360//360 1561//1561 +f 1201//1201 362//362 360//360 +f 1202//1202 1147//1147 1207//1207 +f 1207//1207 1203//1203 1202//1202 +f 1207//1207 1201//1201 1561//1561 +f 1561//1561 1203//1203 1207//1207 +f 1145//1145 1214//1214 1204//1204 +f 1204//1204 1205//1205 1145//1145 +f 1204//1204 1211//1211 1206//1206 +f 1206//1206 1205//1205 1204//1204 +f 1206//1206 1201//1201 1207//1207 +f 1207//1207 1205//1205 1206//1206 +f 1207//1207 1147//1147 1145//1145 +f 1145//1145 1205//1205 1207//1207 +f 1209//1209 357//357 359//359 +f 359//359 1210//1210 1209//1209 +f 359//359 358//358 1212//1212 +f 1212//1212 1210//1210 359//359 +f 1212//1212 1208//1208 1219//1219 +f 1219//1219 1210//1210 1212//1212 +f 1219//1219 59//59 1209//1209 +f 1209//1209 1210//1210 1219//1219 +f 1213//1213 355//355 1199//1199 +f 1199//1199 1211//1211 1217//1217 +f 1217//1217 1213//1213 1199//1199 +f 1217//1217 1208//1208 1212//1212 +f 1212//1212 1213//1213 1217//1217 +f 1212//1212 358//358 1213//1213 +f 1204//1204 1214//1214 1216//1216 +f 1216//1216 1218//1218 1204//1204 +f 1216//1216 1215//1215 1221//1221 +f 1221//1221 1218//1218 1216//1216 +f 1221//1221 1208//1208 1217//1217 +f 1217//1217 1218//1218 1221//1221 +f 1217//1217 1211//1211 1204//1204 +f 1204//1204 1218//1218 1217//1217 +f 64//64 1220//1220 1222//1222 +f 64//64 59//59 1219//1219 +f 1219//1219 1220//1220 64//64 +f 1219//1219 1208//1208 1221//1221 +f 1221//1221 1220//1220 1219//1219 +f 1221//1221 1215//1215 1222//1222 +f 1222//1222 1220//1220 1221//1221 +f 859//859 1228//1228 1236//1236 +f 859//859 857//857 1229//1229 +f 1229//1229 1228//1228 859//859 +f 1223//1223 1225//1225 1224//1224 +f 1229//1229 1225//1225 1223//1223 +f 1229//1229 857//857 1225//1225 +f 1226//1226 1223//1223 1227//1227 +f 1230//1230 1223//1223 1226//1226 +f 1230//1230 1229//1229 1223//1223 +f 1223//1223 1224//1224 1227//1227 +f 1237//1237 1228//1228 1231//1231 +f 1237//1237 1236//1236 1228//1228 +f 1228//1228 1229//1229 1230//1230 +f 1231//1231 1228//1228 1230//1230 +f 1236//1236 1232//1232 863//863 +f 863//863 1233//1233 7969//7969 +f 863//863 1232//1232 1233//1233 +f 1232//1232 1235//1235 1233//1233 +f 1232//1232 1234//1234 1235//1235 +f 1234//1234 1238//1238 1235//1235 +f 1232//1232 1185//1185 1234//1234 +f 1232//1232 1236//1236 1237//1237 +f 1237//1237 1185//1185 1232//1232 +f 1234//1234 1182//1182 1238//1238 +f 1251//1251 1149//1149 1568//1568 +f 1568//1568 1239//1239 1251//1251 +f 1568//1568 1566//1566 1243//1243 +f 1243//1243 1239//1239 1568//1568 +f 1243//1243 1246//1246 1240//1240 +f 1240//1240 1239//1239 1243//1243 +f 1240//1240 1241//1241 1251//1251 +f 1251//1251 1239//1239 1240//1240 +f 1584//1584 1246//1246 1243//1243 +f 1243//1243 1566//1566 8083//8083 +f 1566//1566 1242//1242 8083//8083 +f 1584//1584 1243//1243 8088//8088 +f 1243//1243 8083//8083 8088//8088 +f 1244//1244 695//695 198//198 +f 198//198 1584//1584 1244//1244 +f 1246//1246 1584//1584 198//198 +f 196//196 197//197 1245//1245 +f 1245//1245 1241//1241 1240//1240 +f 1240//1240 196//196 1245//1245 +f 1246//1246 196//196 1240//1240 +f 1264//1264 1158//1158 1247//1247 +f 1247//1247 1248//1248 1264//1264 +f 1247//1247 1154//1154 1249//1249 +f 1249//1249 1248//1248 1247//1247 +f 1249//1249 1258//1258 1260//1260 +f 1260//1260 1248//1248 1249//1249 +f 1260//1260 1250//1250 1264//1264 +f 1264//1264 1248//1248 1260//1260 +f 1151//1151 1149//1149 1251//1251 +f 1251//1251 1253//1253 1151//1151 +f 1251//1251 1241//1241 1252//1252 +f 1252//1252 1253//1253 1251//1251 +f 1252//1252 1258//1258 1249//1249 +f 1249//1249 1253//1253 1252//1252 +f 1249//1249 1154//1154 1151//1151 +f 1151//1151 1253//1253 1249//1249 +f 1245//1245 197//197 1254//1254 +f 1254//1254 1255//1255 1245//1245 +f 1254//1254 187//187 1259//1259 +f 1259//1259 1255//1255 1254//1254 +f 1259//1259 1258//1258 1252//1252 +f 1252//1252 1255//1255 1259//1259 +f 1252//1252 1241//1241 1245//1245 +f 1245//1245 1255//1255 1252//1252 +f 1273//1273 185//185 8841//8841 +f 185//185 1256//1256 8841//8841 +f 1273//1273 1257//1257 185//185 +f 1273//1273 1250//1250 1260//1260 +f 1260//1260 1257//1257 1273//1273 +f 1260//1260 1258//1258 1259//1259 +f 1259//1259 1257//1257 1260//1260 +f 1259//1259 187//187 185//185 +f 185//185 1257//1257 1259//1259 +f 1163//1163 8837//8837 8836//8836 +f 1163//1163 1262//1262 8837//8837 +f 1163//1163 1167//1167 1265//1265 +f 1163//1163 1265//1265 1262//1262 +f 1265//1265 1261//1261 1262//1262 +f 1265//1265 1267//1267 1263//1263 +f 1265//1265 1263//1263 1261//1261 +f 1160//1160 1158//1158 1264//1264 +f 1264//1264 1268//1268 1160//1160 +f 1264//1264 1250//1250 1269//1269 +f 1269//1269 1268//1268 1264//1264 +f 1265//1265 1269//1269 1267//1267 +f 1269//1269 1266//1266 1267//1267 +f 1265//1265 1268//1268 1269//1269 +f 1265//1265 1167//1167 1160//1160 +f 1160//1160 1268//1268 1265//1265 +f 1273//1273 8841//8841 1270//1270 +f 1273//1273 1270//1270 1271//1271 +f 1269//1269 1272//1272 1266//1266 +f 1269//1269 8839//8839 1272//1272 +f 1269//1269 1250//1250 1273//1273 +f 1269//1269 1273//1273 8839//8839 +f 1273//1273 1271//1271 8839//8839 +f 1289//1289 1179//1179 1274//1274 +f 1274//1274 1276//1276 1289//1289 +f 1274//1274 1175//1175 1275//1275 +f 1275//1275 1276//1276 1274//1274 +f 1275//1275 1282//1282 1276//1276 +f 1276//1276 1277//1277 1289//1289 +f 1278//1278 155//155 169//169 +f 169//169 1279//1279 1278//1278 +f 1279//1279 1282//1282 1275//1275 +f 1275//1275 1175//1175 1278//1278 +f 1278//1278 1279//1279 1275//1275 +f 1281//1281 8859//8859 1280//1280 +f 1281//1281 1279//1279 8859//8859 +f 1279//1279 8861//8861 8859//8859 +f 1282//1282 1279//1279 1281//1281 +f 1279//1279 169//169 8861//8861 +f 169//169 8863//8863 8861//8861 +f 683//683 681//681 1277//1277 +f 1277//1277 1276//1276 683//683 +f 683//683 1276//1276 1282//1282 +f 1198//1198 1287//1287 1284//1284 +f 1287//1287 1283//1283 1284//1284 +f 1198//1198 1288//1288 1287//1287 +f 1198//1198 1197//1197 1286//1286 +f 1286//1286 1288//1288 1198//1198 +f 1286//1286 1296//1296 1285//1285 +f 1285//1285 1288//1288 1286//1286 +f 1285//1285 1579//1579 1287//1287 +f 1287//1287 1288//1288 1285//1285 +f 1188//1188 1179//1179 1289//1289 +f 1289//1289 1290//1290 1188//1188 +f 1289//1289 1277//1277 1293//1293 +f 1293//1293 1290//1290 1289//1289 +f 1293//1293 1296//1296 1286//1286 +f 1286//1286 1290//1290 1293//1293 +f 1286//1286 1197//1197 1188//1188 +f 1188//1188 1290//1290 1286//1286 +f 1277//1277 681//681 1291//1291 +f 1291//1291 1293//1293 1277//1277 +f 1291//1291 689//689 1292//1292 +f 1292//1292 1293//1293 1291//1291 +f 1292//1292 1296//1296 1293//1293 +f 1294//1294 688//688 1581//1581 +f 1581//1581 1295//1295 1294//1294 +f 1581//1581 1579//1579 1285//1285 +f 1285//1285 1295//1295 1581//1581 +f 1285//1285 1296//1296 1292//1292 +f 1292//1292 1295//1295 1285//1285 +f 1292//1292 689//689 1294//1294 +f 1294//1294 1295//1295 1292//1292 +f 50//50 571//571 1297//1297 +f 1299//1299 1298//1298 1350//1350 +f 50//50 1298//1298 1299//1299 +f 1299//1299 1350//1350 1300//1300 +f 571//571 1301//1301 1302//1302 +f 1302//1302 570//570 571//571 +f 1304//1304 601//601 1303//1303 +f 1303//1303 1302//1302 1304//1304 +f 1303//1303 1336//1336 570//570 +f 570//570 1302//1302 1303//1303 +f 1302//1302 1301//1301 1304//1304 +f 1305//1305 1309//1309 8031//8031 +f 1309//1309 8032//8032 8031//8031 +f 1309//1309 8030//8030 8032//8032 +f 1309//1309 1306//1306 8033//8033 +f 1306//1306 1307//1307 8033//8033 +f 1309//1309 8033//8033 8030//8030 +f 1306//1306 8034//8034 1307//1307 +f 1309//1309 1305//1305 583//583 +f 583//583 1310//1310 1309//1309 +f 583//583 1341//1341 1308//1308 +f 1308//1308 1310//1310 583//583 +f 1308//1308 1311//1311 1312//1312 +f 1312//1312 1310//1310 1308//1308 +f 1312//1312 1306//1306 1309//1309 +f 1309//1309 1310//1310 1312//1312 +f 1339//1339 1311//1311 1308//1308 +f 1341//1341 1339//1339 1308//1308 +f 1338//1338 1337//1337 302//302 +f 302//302 1339//1339 1338//1338 +f 302//302 301//301 1311//1311 +f 1311//1311 1339//1339 302//302 +f 1314//1314 308//308 8037//8037 +f 1306//1306 1312//1312 8034//8034 +f 1312//1312 1313//1313 8034//8034 +f 1312//1312 1314//1314 1313//1313 +f 1314//1314 8037//8037 1313//1313 +f 1311//1311 1314//1314 1312//1312 +f 1311//1311 301//301 1314//1314 +f 1319//1319 1315//1315 1318//1318 +f 1318//1318 1346//1346 1319//1319 +f 1318//1318 1316//1316 1317//1317 +f 1317//1317 1346//1346 1318//1318 +f 1317//1317 1323//1323 1346//1346 +f 1346//1346 660//660 1319//1319 +f 1321//1321 541//541 1320//1320 +f 1317//1317 1320//1320 1323//1323 +f 1317//1317 1316//1316 1321//1321 +f 1321//1321 1320//1320 1317//1317 +f 1322//1322 1348//1348 1349//1349 +f 1349//1349 1323//1323 1322//1322 +f 1318//1318 1315//1315 1326//1326 +f 1326//1326 1324//1324 1318//1318 +f 1326//1326 1325//1325 1327//1327 +f 1324//1324 1326//1326 1328//1328 +f 1326//1326 1327//1327 1328//1328 +f 1324//1324 1328//1328 1330//1330 +f 1316//1316 1318//1318 8023//8023 +f 1318//1318 1329//1329 8023//8023 +f 1318//1318 1324//1324 1329//1329 +f 1324//1324 1330//1330 1329//1329 +f 541//541 1321//1321 546//546 +f 1321//1321 7988//7988 546//546 +f 1321//1321 8022//8022 7988//7988 +f 1321//1321 1316//1316 1331//1331 +f 1316//1316 8023//8023 1331//1331 +f 1321//1321 1331//1331 8022//8022 +f 1303//1303 601//601 605//605 +f 605//605 1332//1332 1303//1303 +f 605//605 604//604 1333//1333 +f 1333//1333 1332//1332 605//605 +f 1333//1333 1334//1334 1335//1335 +f 1335//1335 1332//1332 1333//1333 +f 1335//1335 1336//1336 1303//1303 +f 1303//1303 1332//1332 1335//1335 +f 1342//1342 1337//1337 1338//1338 +f 1338//1338 1340//1340 1342//1342 +f 1338//1338 1339//1339 1341//1341 +f 1341//1341 1340//1340 1338//1338 +f 1341//1341 1334//1334 1333//1333 +f 1333//1333 1340//1340 1341//1341 +f 1333//1333 604//604 1342//1342 +f 1342//1342 1340//1340 1333//1333 +f 1350//1350 1298//1298 1344//1344 +f 1344//1344 1343//1343 1350//1350 +f 1352//1352 1343//1343 1344//1344 +f 1350//1350 1343//1343 1352//1352 +f 661//661 660//660 1346//1346 +f 1346//1346 1345//1345 661//661 +f 1346//1346 1347//1347 1352//1352 +f 1352//1352 1345//1345 1346//1346 +f 1352//1352 1344//1344 661//661 +f 661//661 1345//1345 1352//1352 +f 1347//1347 1349//1349 1348//1348 +f 1346//1346 1349//1349 1347//1347 +f 1346//1346 1323//1323 1349//1349 +f 1300//1300 1351//1351 653//653 +f 1300//1300 1350//1350 1352//1352 +f 1352//1352 1351//1351 1300//1300 +f 1347//1347 1351//1351 1352//1352 +f 1347//1347 1348//1348 653//653 +f 653//653 1351//1351 1347//1347 +f 1353//1353 6//6 10//10 +f 10//10 1054//1054 1353//1353 +f 3//3 1054//1054 10//10 +f 1357//1357 1050//1050 1049//1049 +f 1049//1049 1354//1354 1357//1357 +f 1358//1358 1354//1354 1049//1049 +f 21//21 1358//1358 1057//1057 +f 21//21 26//26 1358//1358 +f 1355//1355 1356//1356 1357//1357 +f 1357//1357 1354//1354 1355//1355 +f 1358//1358 26//26 1355//1355 +f 1355//1355 1354//1354 1358//1358 +f 1363//1363 1060//1060 8025//8025 +f 1060//1060 8024//8024 8025//8025 +f 1363//1363 8025//8025 1359//1359 +f 1363//1363 8026//8026 1364//1364 +f 1363//1363 1359//1359 8026//8026 +f 1394//1394 1397//1397 1071//1071 +f 1071//1071 1078//1078 1360//1360 +f 1360//1360 1394//1394 1071//1071 +f 1360//1360 1361//1361 1373//1373 +f 1373//1373 1394//1394 1360//1360 +f 1373//1373 1372//1372 1394//1394 +f 1362//1362 1060//1060 1363//1363 +f 1363//1363 1366//1366 1362//1362 +f 1368//1368 1363//1363 1365//1365 +f 1363//1363 1364//1364 1365//1365 +f 1368//1368 1366//1366 1363//1363 +f 1368//1368 1361//1361 1360//1360 +f 1360//1360 1366//1366 1368//1368 +f 1360//1360 1078//1078 1362//1362 +f 1362//1362 1366//1366 1360//1360 +f 1369//1369 8036//8036 1367//1367 +f 1369//1369 1375//1375 1376//1376 +f 1376//1376 1361//1361 1368//1368 +f 1368//1368 1369//1369 1376//1376 +f 1368//1368 1365//1365 8035//8035 +f 1369//1369 1368//1368 8036//8036 +f 1368//1368 8035//8035 8036//8036 +f 1370//1370 804//804 1371//1371 +f 1371//1371 1374//1374 1370//1370 +f 1371//1371 1372//1372 1373//1373 +f 1373//1373 1374//1374 1371//1371 +f 1373//1373 1361//1361 1376//1376 +f 1376//1376 1374//1374 1373//1373 +f 1376//1376 1375//1375 1370//1370 +f 1370//1370 1374//1374 1376//1376 +f 1377//1377 1083//1083 1086//1086 +f 1086//1086 1378//1378 1377//1377 +f 1086//1086 1085//1085 1382//1382 +f 1382//1382 1378//1378 1086//1086 +f 1382//1382 1380//1380 1386//1386 +f 1386//1386 1378//1378 1382//1382 +f 1386//1386 1385//1385 1377//1377 +f 1377//1377 1378//1378 1386//1386 +f 1381//1381 1050//1050 1379//1379 +f 1379//1379 1383//1383 1381//1381 +f 1383//1383 1380//1380 1382//1382 +f 1382//1382 1085//1085 1381//1381 +f 1381//1381 1383//1383 1382//1382 +f 1398//1398 1134//1134 1483//1483 +f 1483//1483 1383//1383 1398//1398 +f 1483//1483 1476//1476 1380//1380 +f 1380//1380 1383//1383 1483//1483 +f 1383//1383 1379//1379 1398//1398 +f 1384//1384 1385//1385 1386//1386 +f 1386//1386 1480//1480 1384//1384 +f 1380//1380 1480//1480 1386//1386 +f 1380//1380 1476//1476 1480//1480 +f 1083//1083 1377//1377 1387//1387 +f 1377//1377 7970//7970 1387//1387 +f 1377//1377 1389//1389 7970//7970 +f 1377//1377 1385//1385 1388//1388 +f 1385//1385 1390//1390 1388//1388 +f 1377//1377 1388//1388 1389//1389 +f 1385//1385 1384//1384 1390//1390 +f 1384//1384 1391//1391 1390//1390 +f 1384//1384 1037//1037 1391//1391 +f 1371//1371 804//804 1392//1392 +f 1392//1392 1393//1393 1371//1371 +f 1392//1392 1105//1105 1395//1395 +f 1395//1395 1393//1393 1392//1392 +f 1395//1395 1394//1394 1372//1372 +f 1372//1372 1393//1393 1395//1395 +f 1371//1371 1393//1393 1372//1372 +f 1396//1396 6//6 1353//1353 +f 1353//1353 1397//1397 1396//1396 +f 1397//1397 1394//1394 1395//1395 +f 1395//1395 1105//1105 1396//1396 +f 1396//1396 1397//1397 1395//1395 +f 1357//1357 1379//1379 1050//1050 +f 1356//1356 1398//1398 1357//1357 +f 1356//1356 1135//1135 1398//1398 +f 1357//1357 1398//1398 1379//1379 +f 1135//1135 1134//1134 1398//1398 +f 1403//1403 280//280 8047//8047 +f 280//280 264//264 8047//8047 +f 1403//1403 8047//8047 1399//1399 +f 1405//1405 1403//1403 8043//8043 +f 1403//1403 1399//1399 8043//8043 +f 300//300 1405//1405 1400//1400 +f 1405//1405 8044//8044 1400//1400 +f 1405//1405 8043//8043 8044//8044 +f 1401//1401 1406//1406 292//292 +f 1401//1401 286//286 1404//1404 +f 1404//1404 1406//1406 1401//1401 +f 1404//1404 1408//1408 1406//1406 +f 281//281 280//280 1403//1403 +f 1403//1403 1402//1402 281//281 +f 1403//1403 1405//1405 1402//1402 +f 1402//1402 1408//1408 1404//1404 +f 1404//1404 286//286 281//281 +f 281//281 1402//1402 1404//1404 +f 1405//1405 300//300 306//306 +f 1402//1402 306//306 1408//1408 +f 1405//1405 306//306 1402//1402 +f 1407//1407 317//317 1411//1411 +f 1411//1411 1406//1406 1407//1407 +f 1411//1411 292//292 1406//1406 +f 1407//1407 1406//1406 1408//1408 +f 1410//1410 1409//1409 1413//1413 +f 298//298 1409//1409 1410//1410 +f 1411//1411 317//317 1412//1412 +f 1412//1412 293//293 1411//1411 +f 1412//1412 313//313 1413//1413 +f 1413//1413 293//293 1412//1412 +f 293//293 292//292 1411//1411 +f 310//310 1410//1410 311//311 +f 310//310 298//298 1410//1410 +f 1413//1413 313//313 311//311 +f 311//311 1410//1410 1413//1413 +f 1417//1417 781//781 785//785 +f 785//785 1414//1414 1417//1417 +f 795//795 1414//1414 785//785 +f 1414//1414 809//809 1417//1417 +f 814//814 794//794 298//298 +f 795//795 794//794 814//814 +f 810//810 795//795 814//814 +f 814//814 298//298 310//310 +f 1414//1414 1415//1415 809//809 +f 1414//1414 795//795 810//810 +f 810//810 1415//1415 1414//1414 +f 1428//1428 1427//1427 772//772 +f 772//772 1416//1416 1428//1428 +f 772//772 1420//1420 1422//1422 +f 1422//1422 1416//1416 772//772 +f 1422//1422 799//799 1425//1425 +f 1425//1425 1416//1416 1422//1422 +f 1425//1425 1424//1424 1428//1428 +f 1428//1428 1416//1416 1425//1425 +f 1418//1418 781//781 1417//1417 +f 1417//1417 1421//1421 1418//1418 +f 1417//1417 809//809 1419//1419 +f 1419//1419 1421//1421 1417//1417 +f 1419//1419 799//799 1422//1422 +f 1422//1422 1421//1421 1419//1419 +f 1422//1422 1420//1420 1418//1418 +f 1418//1418 1421//1421 1422//1422 +f 803//803 1419//1419 809//809 +f 799//799 1419//1419 803//803 +f 801//801 1423//1423 8042//8042 +f 1424//1424 1425//1425 1429//1429 +f 1425//1425 1426//1426 1429//1429 +f 1425//1425 801//801 1426//1426 +f 801//801 8042//8042 1426//1426 +f 799//799 801//801 1425//1425 +f 1427//1427 1428//1428 8051//8051 +f 1428//1428 8046//8046 8051//8051 +f 1428//1428 8045//8045 8046//8046 +f 1428//1428 1424//1424 8045//8045 +f 1424//1424 1430//1430 8045//8045 +f 1424//1424 1429//1429 1430//1430 +f 1438//1438 7990//7990 7986//7986 +f 518//518 1432//1432 515//515 +f 1437//1437 1432//1432 518//518 +f 1437//1437 1431//1431 1432//1432 +f 508//508 510//510 1434//1434 +f 1435//1435 508//508 1433//1433 +f 508//508 1434//1434 1433//1433 +f 1435//1435 1433//1433 1436//1436 +f 1435//1435 1431//1431 1437//1437 +f 508//508 1435//1435 1437//1437 +f 1438//1438 1439//1439 7990//7990 +f 1439//1439 7991//7991 7990//7990 +f 1439//1439 1435//1435 7991//7991 +f 1435//1435 1436//1436 7991//7991 +f 1439//1439 554//554 1431//1431 +f 1431//1431 1435//1435 1439//1439 +f 1440//1440 1444//1444 1443//1443 +f 1443//1443 515//515 1432//1432 +f 1432//1432 1440//1440 1443//1443 +f 1431//1431 1440//1440 1432//1432 +f 1431//1431 554//554 1440//1440 +f 1448//1448 1441//1441 527//527 +f 527//527 528//528 1442//1442 +f 560//560 527//527 1442//1442 +f 1448//1448 527//527 560//560 +f 1442//1442 528//528 1446//1446 +f 1443//1443 1444//1444 562//562 +f 562//562 1449//1449 1445//1445 +f 1445//1445 1442//1442 1446//1446 +f 1446//1446 562//562 1445//1445 +f 1446//1446 515//515 1443//1443 +f 1443//1443 562//562 1446//1446 +f 1447//1447 1448//1448 560//560 +f 560//560 1442//1442 1445//1445 +f 1445//1445 1449//1449 560//560 +f 542//542 493//493 481//481 +f 1453//1453 1450//1450 1451//1451 +f 1451//1451 481//481 1453//1453 +f 542//542 481//481 1451//1451 +f 1452//1452 1441//1441 1448//1448 +f 529//529 1452//1452 1448//1448 +f 529//529 1450//1450 1453//1453 +f 1453//1453 1452//1452 529//529 +f 529//529 1448//1448 1447//1447 +f 495//495 1454//1454 1455//1455 +f 1454//1454 7993//7993 1455//1455 +f 1456//1456 1454//1454 495//495 +f 1456//1456 1459//1459 1454//1454 +f 1454//1454 1458//1458 7993//7993 +f 492//492 493//493 542//542 +f 492//492 1459//1459 1456//1456 +f 545//545 540//540 1459//1459 +f 492//492 545//545 1459//1459 +f 542//542 545//545 492//492 +f 1457//1457 538//538 7992//7992 +f 1454//1454 1457//1457 1458//1458 +f 1457//1457 7992//7992 1458//1458 +f 1459//1459 1457//1457 1454//1454 +f 1459//1459 540//540 1457//1457 +f 1464//1464 1475//1475 1460//1460 +f 1460//1460 1463//1463 1464//1464 +f 1460//1460 1003//1003 1461//1461 +f 1463//1463 1460//1460 1462//1462 +f 1460//1460 1461//1461 1462//1462 +f 1470//1470 7962//7962 1469//1469 +f 1470//1470 1463//1463 7962//7962 +f 1463//1463 1462//1462 7962//7962 +f 1470//1470 1467//1467 1464//1464 +f 1464//1464 1463//1463 1470//1470 +f 1384//1384 1466//1466 1465//1465 +f 1466//1466 1468//1468 1465//1465 +f 1466//1466 1467//1467 1470//1470 +f 1466//1466 1470//1470 1468//1468 +f 1470//1470 7963//7963 1468//1468 +f 1470//1470 1469//1469 1471//1471 +f 1470//1470 1471//1471 7963//7963 +f 1472//1472 1473//1473 990//990 +f 1472//1472 1474//1474 1477//1477 +f 1477//1477 1473//1473 1472//1472 +f 1477//1477 1476//1476 1482//1482 +f 1482//1482 1473//1473 1477//1477 +f 1482//1482 1487//1487 990//990 +f 990//990 1473//1473 1482//1482 +f 998//998 1475//1475 1464//1464 +f 1464//1464 1478//1478 998//998 +f 1464//1464 1467//1467 1479//1479 +f 1479//1479 1478//1478 1464//1464 +f 1479//1479 1476//1476 1477//1477 +f 1477//1477 1478//1478 1479//1479 +f 1477//1477 1474//1474 998//998 +f 998//998 1478//1478 1477//1477 +f 1466//1466 1384//1384 1480//1480 +f 1479//1479 1480//1480 1476//1476 +f 1479//1479 1467//1467 1466//1466 +f 1466//1466 1480//1480 1479//1479 +f 1483//1483 1481//1481 1487//1487 +f 1482//1482 1483//1483 1487//1487 +f 1476//1476 1483//1483 1482//1482 +f 984//984 1035//1035 1492//1492 +f 984//984 1484//1484 1488//1488 +f 1488//1488 1035//1035 984//984 +f 990//990 1486//1486 1485//1485 +f 990//990 1487//1487 1486//1486 +f 1488//1488 1484//1484 1485//1485 +f 1485//1485 1486//1486 1488//1488 +f 1487//1487 1481//1481 1489//1489 +f 1489//1489 1486//1486 1487//1487 +f 1489//1489 1036//1036 1488//1488 +f 1488//1488 1486//1486 1489//1489 +f 1488//1488 1036//1036 1035//1035 +f 1500//1500 1022//1022 1490//1490 +f 1490//1490 1028//1028 1491//1491 +f 1497//1497 1490//1490 1491//1491 +f 1500//1500 1490//1490 1497//1497 +f 1491//1491 1028//1028 1031//1031 +f 1493//1493 1031//1031 1492//1492 +f 1493//1493 1047//1047 1494//1494 +f 1494//1494 1031//1031 1493//1493 +f 1494//1494 1491//1491 1031//1031 +f 1496//1496 1495//1495 1505//1505 +f 1505//1505 1500//1500 1497//1497 +f 1497//1497 1496//1496 1505//1505 +f 1497//1497 1491//1491 1494//1494 +f 1494//1494 1496//1496 1497//1497 +f 1494//1494 1047//1047 1496//1496 +f 1498//1498 1506//1506 1014//1014 +f 1014//1014 1499//1499 1498//1498 +f 1014//1014 1017//1017 1503//1503 +f 1503//1503 1499//1499 1014//1014 +f 1499//1499 1124//1124 1498//1498 +f 1502//1502 1022//1022 1500//1500 +f 1500//1500 1501//1501 1502//1502 +f 1503//1503 1017//1017 1502//1502 +f 1502//1502 1501//1501 1503//1503 +f 1505//1505 1495//1495 1504//1504 +f 1504//1504 1501//1501 1505//1505 +f 1041//1041 1501//1501 1504//1504 +f 1041//1041 1503//1503 1501//1501 +f 1501//1501 1500//1500 1505//1505 +f 1499//1499 1503//1503 1041//1041 +f 1506//1506 1498//1498 1507//1507 +f 1498//1498 1508//1508 1507//1507 +f 1498//1498 1509//1509 1508//1508 +f 1509//1509 1510//1510 1508//1508 +f 1498//1498 1124//1124 1509//1509 +f 1509//1509 1038//1038 1510//1510 +f 1513//1513 8854//8854 8855//8855 +f 1515//1515 1542//1542 8868//8868 +f 1515//1515 8868//8868 1512//1512 +f 1511//1511 8860//8860 8862//8862 +f 1511//1511 8867//8867 8860//8860 +f 1511//1511 1515//1515 8867//8867 +f 1515//1515 1512//1512 8867//8867 +f 1513//1513 209//209 8854//8854 +f 209//209 8852//8852 8854//8854 +f 209//209 1514//1514 8852//8852 +f 209//209 1516//1516 1517//1517 +f 209//209 1517//1517 1514//1514 +f 1517//1517 8856//8856 1514//1514 +f 1517//1517 8858//8858 8857//8857 +f 1517//1517 8857//8857 8856//8856 +f 205//205 203//203 1548//1548 +f 1548//1548 1511//1511 205//205 +f 1548//1548 1515//1515 1511//1511 +f 1517//1517 1511//1511 8858//8858 +f 1511//1511 8862//8862 8858//8858 +f 1517//1517 1516//1516 205//205 +f 205//205 1511//1511 1517//1517 +f 1525//1525 1519//1519 1518//1518 +f 1525//1525 690//690 682//682 +f 1525//1525 682//682 1519//1519 +f 682//682 1521//1521 1519//1519 +f 682//682 8870//8870 1520//1520 +f 682//682 1520//1520 1521//1521 +f 1524//1524 1522//1522 1523//1523 +f 1529//1529 8874//8874 1530//1530 +f 1529//1529 1524//1524 8874//8874 +f 1524//1524 1523//1523 8874//8874 +f 1529//1529 1536//1536 1524//1524 +f 1524//1524 1525//1525 1522//1522 +f 1525//1525 1518//1518 1522//1522 +f 1528//1528 1540//1540 1526//1526 +f 1526//1526 1527//1527 1528//1528 +f 1526//1526 1536//1536 1529//1529 +f 1529//1529 1527//1527 1526//1526 +f 1527//1527 1529//1529 1558//1558 +f 1529//1529 1530//1530 1558//1558 +f 1531//1531 705//705 1532//1532 +f 1532//1532 1534//1534 1531//1531 +f 1532//1532 1533//1533 1537//1537 +f 1537//1537 1534//1534 1532//1532 +f 1537//1537 1536//1536 1526//1526 +f 1526//1526 1534//1534 1537//1537 +f 1526//1526 1540//1540 1531//1531 +f 1531//1531 1534//1534 1526//1526 +f 1535//1535 690//690 1525//1525 +f 1524//1524 1535//1535 1525//1525 +f 1524//1524 1536//1536 1537//1537 +f 1537//1537 1535//1535 1524//1524 +f 1537//1537 1533//1533 1535//1535 +f 1546//1546 1538//1538 1539//1539 +f 1539//1539 1541//1541 1546//1546 +f 1539//1539 1540//1540 1528//1528 +f 1528//1528 1541//1541 1539//1539 +f 1515//1515 1544//1544 1542//1542 +f 1515//1515 1543//1543 1544//1544 +f 1543//1543 1547//1547 1544//1544 +f 1545//1545 1543//1543 1515//1515 +f 1545//1545 1538//1538 1546//1546 +f 1546//1546 1543//1543 1545//1545 +f 1543//1543 1546//1546 1547//1547 +f 1546//1546 1553//1553 1547//1547 +f 1548//1548 203//203 691//691 +f 691//691 1545//1545 1548//1548 +f 691//691 1549//1549 1551//1551 +f 1551//1551 1545//1545 691//691 +f 1551//1551 1538//1538 1545//1545 +f 1545//1545 1515//1515 1548//1548 +f 704//704 705//705 1531//1531 +f 1531//1531 1550//1550 704//704 +f 1531//1531 1540//1540 1539//1539 +f 1539//1539 1550//1550 1531//1531 +f 1539//1539 1538//1538 1551//1551 +f 1551//1551 1550//1550 1539//1539 +f 1551//1551 1549//1549 704//704 +f 704//704 1550//1550 1551//1551 +f 1546//1546 1552//1552 1553//1553 +f 1541//1541 1528//1528 8872//8872 +f 1528//1528 1556//1556 8872//8872 +f 1541//1541 8872//8872 1554//1554 +f 1541//1541 1554//1554 1555//1555 +f 1546//1546 1541//1541 1552//1552 +f 1541//1541 1555//1555 1552//1552 +f 1528//1528 1527//1527 1556//1556 +f 1527//1527 8873//8873 1556//1556 +f 1527//1527 1557//1557 8873//8873 +f 1527//1527 1558//1558 1557//1557 +f 1564//1564 616//616 1559//1559 +f 1560//1560 7983//7983 7982//7982 +f 1560//1560 7982//7982 7981//7981 +f 1203//1203 1561//1561 1573//1573 +f 1561//1561 1563//1563 1573//1573 +f 1561//1561 1565//1565 1562//1562 +f 1561//1561 1562//1562 1563//1563 +f 1564//1564 1559//1559 7980//7980 +f 360//360 1564//1564 7979//7979 +f 1564//1564 7980//7980 7979//7979 +f 1561//1561 360//360 1565//1565 +f 360//360 7979//7979 1565//1565 +f 1566//1566 8082//8082 1242//1242 +f 1568//1568 1149//1149 1569//1569 +f 1568//1568 1569//1569 8079//8079 +f 1569//1569 8077//8077 8079//8079 +f 1569//1569 8093//8093 8074//8074 +f 1569//1569 8074//8074 8077//8077 +f 1566//1566 1568//1568 8082//8082 +f 1568//1568 1567//1567 8082//8082 +f 1568//1568 8079//8079 1567//1567 +f 1194//1194 8076//8076 8075//8075 +f 1194//1194 8075//8075 7972//7972 +f 1569//1569 1149//1149 1148//1148 +f 1148//1148 1570//1570 1569//1569 +f 1148//1148 1203//1203 1570//1570 +f 1570//1570 1571//1571 8073//8073 +f 1569//1569 1572//1572 8093//8093 +f 1569//1569 1570//1570 1572//1572 +f 1570//1570 8073//8073 1572//1572 +f 1570//1570 8072//8072 1571//1571 +f 1570//1570 1203//1203 8072//8072 +f 1203//1203 1573//1573 8072//8072 +f 1574//1574 688//688 703//703 +f 703//703 1575//1575 1574//1574 +f 703//703 702//702 8092//8092 +f 702//702 1578//1578 8092//8092 +f 1575//1575 703//703 8086//8086 +f 703//703 8092//8092 8086//8086 +f 1575//1575 8086//8086 8085//8085 +f 1574//1574 8084//8084 8078//8078 +f 1574//1574 1575//1575 8084//8084 +f 1575//1575 8085//8085 8084//8084 +f 697//697 695//695 1576//1576 +f 695//695 1583//1583 1576//1576 +f 697//697 1576//1576 1577//1577 +f 702//702 697//697 1578//1578 +f 697//697 8090//8090 1578//1578 +f 697//697 1577//1577 8090//8090 +f 1287//1287 1579//1579 1283//1283 +f 1579//1579 8080//8080 1283//1283 +f 1579//1579 8081//8081 1580//1580 +f 1579//1579 1580//1580 8080//8080 +f 1581//1581 688//688 1574//1574 +f 1581//1581 1574//1574 1582//1582 +f 1574//1574 8078//8078 1582//1582 +f 1579//1579 1581//1581 8081//8081 +f 1581//1581 1582//1582 8081//8081 +f 695//695 1244//1244 1583//1583 +f 1244//1244 8091//8091 1583//1583 +f 1584//1584 8087//8087 8089//8089 +f 1244//1244 1584//1584 1585//1585 +f 1584//1584 8089//8089 1585//1585 +f 1244//1244 1585//1585 8091//8091 +f 1584//1584 8088//8088 8087//8087 +f 2332//2332 1789//1789 1586//1586 +f 1586//1586 1588//1588 2332//2332 +f 1586//1586 1791//1791 1592//1592 +f 1592//1592 1588//1588 1586//1586 +f 1592//1592 1590//1590 1587//1587 +f 1587//1587 1588//1588 1592//1592 +f 1587//1587 2331//2331 2332//2332 +f 2332//2332 1588//1588 1587//1587 +f 1784//1784 1803//1803 1589//1589 +f 1589//1589 1591//1591 1784//1784 +f 1589//1589 1597//1597 1596//1596 +f 1596//1596 1591//1591 1589//1589 +f 1596//1596 1590//1590 1592//1592 +f 1592//1592 1591//1591 1596//1596 +f 1592//1592 1791//1791 1784//1784 +f 1784//1784 1591//1591 1592//1592 +f 1644//1644 1593//1593 3240//3240 +f 3240//3240 1594//1594 1644//1644 +f 3240//3240 1595//1595 1599//1599 +f 1599//1599 1594//1594 3240//3240 +f 1599//1599 1590//1590 1596//1596 +f 1596//1596 1594//1594 1599//1599 +f 1596//1596 1597//1597 1644//1644 +f 1644//1644 1594//1594 1596//1596 +f 1598//1598 2338//2338 2341//2341 +f 2341//2341 1600//1600 1598//1598 +f 2341//2341 2331//2331 1587//1587 +f 1587//1587 1600//1600 2341//2341 +f 1587//1587 1590//1590 1599//1599 +f 1599//1599 1600//1600 1587//1587 +f 1599//1599 1595//1595 1598//1598 +f 1598//1598 1600//1600 1599//1599 +f 1618//1618 1601//1601 1602//1602 +f 1602//1602 1605//1605 1606//1606 +f 1606//1606 1618//1618 1602//1602 +f 1603//1603 1618//1618 1606//1606 +f 2945//2945 2783//2783 2787//2787 +f 2787//2787 1604//1604 2945//2945 +f 2787//2787 2779//2779 1609//1609 +f 1609//1609 1604//1604 2787//2787 +f 1609//1609 1603//1603 1606//1606 +f 1606//1606 1604//1604 1609//1609 +f 1606//1606 1605//1605 2945//2945 +f 2945//2945 1604//1604 1606//1606 +f 2778//2778 1657//1657 1607//1607 +f 1607//1607 1608//1608 2778//2778 +f 1607//1607 1622//1622 1608//1608 +f 1608//1608 1603//1603 1609//1609 +f 1609//1609 2779//2779 2778//2778 +f 2778//2778 1608//1608 1609//1609 +f 1684//1684 1616//1616 1614//1614 +f 1687//1687 1616//1616 1684//1684 +f 2809//2809 1610//1610 1611//1611 +f 1611//1611 1610//1610 1687//1687 +f 1612//1612 1687//1687 1610//1610 +f 1615//1615 2808//2808 1613//1613 +f 1613//1613 1616//1616 1615//1615 +f 1613//1613 1614//1614 1616//1616 +f 1616//1616 1687//1687 1612//1612 +f 1615//1615 1616//1616 1612//1612 +f 1617//1617 1601//1601 1618//1618 +f 1618//1618 1619//1619 1617//1617 +f 1618//1618 1603//1603 1624//1624 +f 1624//1624 1619//1619 1618//1618 +f 1624//1624 1631//1631 1620//1620 +f 1620//1620 1619//1619 1624//1624 +f 1620//1620 1621//1621 1617//1617 +f 1617//1617 1619//1619 1620//1620 +f 1608//1608 1622//1622 1623//1623 +f 1627//1627 1608//1608 1623//1623 +f 1627//1627 1631//1631 1624//1624 +f 1624//1624 1608//1608 1627//1627 +f 1624//1624 1603//1603 1608//1608 +f 1625//1625 2808//2808 2818//2818 +f 2818//2818 1628//1628 1625//1625 +f 2818//2818 2695//2695 1626//1626 +f 1626//1626 1628//1628 2818//2818 +f 1626//1626 1631//1631 1627//1627 +f 1627//1627 1628//1628 1626//1626 +f 1627//1627 1623//1623 1625//1625 +f 1625//1625 1628//1628 1627//1627 +f 2817//2817 2816//2816 1629//1629 +f 1629//1629 1630//1630 2817//2817 +f 1629//1629 1621//1621 1620//1620 +f 1620//1620 1630//1630 1629//1629 +f 1620//1620 1631//1631 1626//1626 +f 1626//1626 1630//1630 1620//1620 +f 1626//1626 2695//2695 2817//2817 +f 2817//2817 1630//1630 1626//1626 +f 1589//1589 1803//1803 1804//1804 +f 1804//1804 1633//1633 1589//1589 +f 1804//1804 1632//1632 1638//1638 +f 1638//1638 1633//1633 1804//1804 +f 1638//1638 1645//1645 1634//1634 +f 1634//1634 1633//1633 1638//1638 +f 1634//1634 1597//1597 1589//1589 +f 1589//1589 1633//1633 1634//1634 +f 1637//1637 2884//2884 1840//1840 +f 1840//1840 1635//1635 1637//1637 +f 1840//1840 1636//1636 1642//1642 +f 1642//1642 1635//1635 1840//1840 +f 1642//1642 1645//1645 1638//1638 +f 1638//1638 1635//1635 1642//1642 +f 1638//1638 1632//1632 1637//1637 +f 1637//1637 1635//1635 1638//1638 +f 1643//1643 3256//3256 1640//1640 +f 1640//1640 1639//1639 1643//1643 +f 1640//1640 1641//1641 1646//1646 +f 1646//1646 1639//1639 1640//1640 +f 1646//1646 1645//1645 1642//1642 +f 1642//1642 1639//1639 1646//1646 +f 1642//1642 1636//1636 1643//1643 +f 1643//1643 1639//1639 1642//1642 +f 3254//3254 1593//1593 1644//1644 +f 1644//1644 1647//1647 3254//3254 +f 1644//1644 1597//1597 1634//1634 +f 1634//1634 1647//1647 1644//1644 +f 1634//1634 1645//1645 1646//1646 +f 1646//1646 1647//1647 1634//1634 +f 1646//1646 1641//1641 3254//3254 +f 3254//3254 1647//1647 1646//1646 +f 1652//1652 2907//2907 2906//2906 +f 2906//2906 1648//1648 1652//1652 +f 2906//2906 2202//2202 1649//1649 +f 1649//1649 1648//1648 2906//2906 +f 1649//1649 1650//1650 1659//1659 +f 1659//1659 1648//1648 1649//1649 +f 1659//1659 1651//1651 1652//1652 +f 1652//1652 1648//1648 1659//1659 +f 1654//1654 2901//2901 1653//1653 +f 1653//1653 1674//1674 1655//1655 +f 1655//1655 1654//1654 1653//1653 +f 1655//1655 1650//1650 1649//1649 +f 1649//1649 1654//1654 1655//1655 +f 1649//1649 2202//2202 1654//1654 +f 1660//1660 1673//1673 1704//1704 +f 1660//1660 1650//1650 1655//1655 +f 1655//1655 1673//1673 1660//1660 +f 1655//1655 1674//1674 1673//1673 +f 1656//1656 1657//1657 2249//2249 +f 2249//2249 1658//1658 1656//1656 +f 2249//2249 1651//1651 1659//1659 +f 1659//1659 1658//1658 2249//2249 +f 1659//1659 1650//1650 1660//1660 +f 1660//1660 1658//1658 1659//1659 +f 1660//1660 1704//1704 1656//1656 +f 1656//1656 1658//1658 1660//1660 +f 1661//1661 1994//1994 1996//1996 +f 1996//1996 1664//1664 1661//1661 +f 1996//1996 1697//1697 1664//1664 +f 1664//1664 1665//1665 1662//1662 +f 1662//1662 1663//1663 1661//1661 +f 1661//1661 1664//1664 1662//1662 +f 1664//1664 1702//1702 1665//1665 +f 1697//1697 1702//1702 1664//1664 +f 1666//1666 1667//1667 1669//1669 +f 1669//1669 1668//1668 1666//1666 +f 1669//1669 1663//1663 1662//1662 +f 1662//1662 1668//1668 1669//1669 +f 1662//1662 1665//1665 1668//1668 +f 1668//1668 1695//1695 1666//1666 +f 2296//2296 1667//1667 1670//1670 +f 1670//1670 1672//1672 2296//2296 +f 1670//1670 1711//1711 1675//1675 +f 1675//1675 1672//1672 1670//1670 +f 1675//1675 1681//1681 1679//1679 +f 1679//1679 1672//1672 1675//1675 +f 1679//1679 1671//1671 2296//2296 +f 2296//2296 1672//1672 1679//1679 +f 1711//1711 1704//1704 1673//1673 +f 1673//1673 1675//1675 1711//1711 +f 1674//1674 1675//1675 1673//1673 +f 1674//1674 1681//1681 1675//1675 +f 1653//1653 2901//2901 2900//2900 +f 2900//2900 1678//1678 1653//1653 +f 2900//2900 1676//1676 1677//1677 +f 1677//1677 1678//1678 2900//2900 +f 1677//1677 1681//1681 1674//1674 +f 1674//1674 1678//1678 1677//1677 +f 1653//1653 1678//1678 1674//1674 +f 2904//2904 2298//2298 2300//2300 +f 2300//2300 1680//1680 2904//2904 +f 2300//2300 1671//1671 1679//1679 +f 1679//1679 1680//1680 2300//2300 +f 1679//1679 1681//1681 1677//1677 +f 1677//1677 1680//1680 1679//1679 +f 1677//1677 1676//1676 2904//2904 +f 2904//2904 1680//1680 1677//1677 +f 1683//1683 2809//2809 1611//1611 +f 1611//1611 1687//1687 1682//1682 +f 1691//1691 1611//1611 1682//1682 +f 1691//1691 1689//1689 1683//1683 +f 1683//1683 1611//1611 1691//1691 +f 1684//1684 1614//1614 1685//1685 +f 1685//1685 1757//1757 1686//1686 +f 1686//1686 1684//1684 1685//1685 +f 1682//1682 1684//1684 1686//1686 +f 1682//1682 1687//1687 1684//1684 +f 1688//1688 1692//1692 1694//1694 +f 1694//1694 1682//1682 1686//1686 +f 1686//1686 1688//1688 1694//1694 +f 1757//1757 1688//1688 1686//1686 +f 1693//1693 2861//2861 2860//2860 +f 2860//2860 1690//1690 1693//1693 +f 2860//2860 1689//1689 1691//1691 +f 1691//1691 1690//1690 2860//2860 +f 1691//1691 1682//1682 1694//1694 +f 1694//1694 1690//1690 1691//1691 +f 1694//1694 1692//1692 1693//1693 +f 1693//1693 1690//1690 1694//1694 +f 1668//1668 1696//1696 1695//1695 +f 1665//1665 1696//1696 1668//1668 +f 1696//1696 1741//1741 1695//1695 +f 1702//1702 1697//1697 1698//1698 +f 1699//1699 1700//1700 1729//1729 +f 1729//1729 1702//1702 1699//1699 +f 1729//1729 1732//1732 1701//1701 +f 1701//1701 1702//1702 1729//1729 +f 1701//1701 1665//1665 1702//1702 +f 1702//1702 1698//1698 1699//1699 +f 1696//1696 1703//1703 1741//1741 +f 1696//1696 1665//1665 1701//1701 +f 1701//1701 1703//1703 1696//1696 +f 1701//1701 1732//1732 1703//1703 +f 1705//1705 1656//1656 1704//1704 +f 1707//1707 1705//1705 1706//1706 +f 1706//1706 1708//1708 1707//1707 +f 1763//1763 1708//1708 1706//1706 +f 1656//1656 1705//1705 1707//1707 +f 1707//1707 1708//1708 1657//1657 +f 1657//1657 1656//1656 1707//1707 +f 1709//1709 1706//1706 1705//1705 +f 1705//1705 1710//1710 1709//1709 +f 1705//1705 1704//1704 1710//1710 +f 1709//1709 1710//1710 1670//1670 +f 1711//1711 1710//1710 1704//1704 +f 1670//1670 1710//1710 1711//1711 +f 1670//1670 1667//1667 1666//1666 +f 1666//1666 1748//1748 1670//1670 +f 1666//1666 1695//1695 1748//1748 +f 1715//1715 1763//1763 1764//1764 +f 1764//1764 1712//1712 1713//1713 +f 1713//1713 1755//1755 1714//1714 +f 1714//1714 1764//1764 1713//1713 +f 1714//1714 1750//1750 1715//1715 +f 1715//1715 1764//1764 1714//1714 +f 1768//1768 1716//1716 1717//1717 +f 1717//1717 1761//1761 1768//1768 +f 1717//1717 1755//1755 1713//1713 +f 1713//1713 1761//1761 1717//1717 +f 1713//1713 1712//1712 1761//1761 +f 1717//1717 1752//1752 1755//1755 +f 1716//1716 1752//1752 1717//1717 +f 1714//1714 1751//1751 1750//1750 +f 1755//1755 1751//1751 1714//1714 +f 1720//1720 1759//1759 1716//1716 +f 1724//1724 1759//1759 1720//1720 +f 1724//1724 1692//1692 1759//1759 +f 1768//1768 1718//1718 1720//1720 +f 1720//1720 1716//1716 1768//1768 +f 1718//1718 1780//1780 1783//1783 +f 1783//1783 1721//1721 1718//1718 +f 1783//1783 1719//1719 1725//1725 +f 1725//1725 1721//1721 1783//1783 +f 1720//1720 1721//1721 1725//1725 +f 1718//1718 1721//1721 1720//1720 +f 1726//1726 2886//2886 1722//1722 +f 1722//1722 1723//1723 1726//1726 +f 1722//1722 1692//1692 1724//1724 +f 1724//1724 1723//1723 1722//1722 +f 1724//1724 1720//1720 1725//1725 +f 1725//1725 1723//1723 1724//1724 +f 1725//1725 1719//1719 1726//1726 +f 1726//1726 1723//1723 1725//1725 +f 1703//1703 1732//1732 1727//1727 +f 1727//1727 1774//1774 1735//1735 +f 1735//1735 1703//1703 1727//1727 +f 1728//1728 1703//1703 1735//1735 +f 1729//1729 1700//1700 1731//1731 +f 1731//1731 1730//1730 1729//1729 +f 1734//1734 1730//1730 1731//1731 +f 1734//1734 1774//1774 1727//1727 +f 1727//1727 1730//1730 1734//1734 +f 1727//1727 1732//1732 1729//1729 +f 1729//1729 1730//1730 1727//1727 +f 2836//2836 1733//1733 1775//1775 +f 1775//1775 1734//1734 2836//2836 +f 1774//1774 1734//1734 1775//1775 +f 1734//1734 1731//1731 2836//2836 +f 1771//1771 1728//1728 1735//1735 +f 1735//1735 1772//1772 1771//1771 +f 1774//1774 1772//1772 1735//1735 +f 1708//1708 1763//1763 1715//1715 +f 1715//1715 1738//1738 1708//1708 +f 1715//1715 1750//1750 1738//1738 +f 1708//1708 1738//1738 1737//1737 +f 1750//1750 1736//1736 1738//1738 +f 1737//1737 1623//1623 1622//1622 +f 1738//1738 1623//1623 1737//1737 +f 1738//1738 1736//1736 1623//1623 +f 1657//1657 1708//1708 1737//1737 +f 1737//1737 1607//1607 1657//1657 +f 1737//1737 1622//1622 1607//1607 +f 1623//1623 1736//1736 1739//1739 +f 1736//1736 1750//1750 1749//1749 +f 1736//1736 1749//1749 1739//1739 +f 1614//1614 1613//1613 1753//1753 +f 1739//1739 1749//1749 1753//1753 +f 1753//1753 1613//1613 1739//1739 +f 1613//1613 2808//2808 1625//1625 +f 1625//1625 1740//1740 1613//1613 +f 1625//1625 1623//1623 1739//1739 +f 1739//1739 1740//1740 1625//1625 +f 1613//1613 1740//1740 1739//1739 +f 1741//1741 1703//1703 1728//1728 +f 1742//1742 1741//1741 1728//1728 +f 1742//1742 1743//1743 1744//1744 +f 1744//1744 1741//1741 1742//1742 +f 1766//1766 1745//1745 1743//1743 +f 1742//1742 1766//1766 1743//1743 +f 1742//1742 1728//1728 1771//1771 +f 1771//1771 1766//1766 1742//1742 +f 1746//1746 1706//1706 1709//1709 +f 1709//1709 1670//1670 1747//1747 +f 1747//1747 1746//1746 1709//1709 +f 1743//1743 1746//1746 1747//1747 +f 1743//1743 1745//1745 1746//1746 +f 1695//1695 1741//1741 1744//1744 +f 1744//1744 1748//1748 1695//1695 +f 1744//1744 1743//1743 1747//1747 +f 1747//1747 1748//1748 1744//1744 +f 1747//1747 1670//1670 1748//1748 +f 1749//1749 1750//1750 1751//1751 +f 1751//1751 1754//1754 1749//1749 +f 1755//1755 1754//1754 1751//1751 +f 1752//1752 1716//1716 1758//1758 +f 1757//1757 1752//1752 1758//1758 +f 1756//1756 1752//1752 1757//1757 +f 1756//1756 1755//1755 1752//1752 +f 1685//1685 1614//1614 1753//1753 +f 1753//1753 1756//1756 1685//1685 +f 1753//1753 1749//1749 1754//1754 +f 1754//1754 1756//1756 1753//1753 +f 1754//1754 1755//1755 1756//1756 +f 1756//1756 1757//1757 1685//1685 +f 1688//1688 1757//1757 1758//1758 +f 1758//1758 1759//1759 1688//1688 +f 1688//1688 1759//1759 1692//1692 +f 1758//1758 1716//1716 1759//1759 +f 1722//1722 2886//2886 1760//1760 +f 1760//1760 1693//1693 1722//1722 +f 1760//1760 2861//2861 1693//1693 +f 1722//1722 1693//1693 1692//1692 +f 1769//1769 1768//1768 1761//1761 +f 1762//1762 1761//1761 1712//1712 +f 1762//1762 1767//1767 1769//1769 +f 1769//1769 1761//1761 1762//1762 +f 1763//1763 1765//1765 1764//1764 +f 1763//1763 1706//1706 1765//1765 +f 1764//1764 1765//1765 1712//1712 +f 1746//1746 1765//1765 1706//1706 +f 1745//1745 1765//1765 1746//1746 +f 1745//1745 1712//1712 1765//1765 +f 1766//1766 1771//1771 1767//1767 +f 1767//1767 1762//1762 1766//1766 +f 1762//1762 1712//1712 1745//1745 +f 1766//1766 1762//1762 1745//1745 +f 1769//1769 1770//1770 1768//1768 +f 1769//1769 1767//1767 1773//1773 +f 1773//1773 1770//1770 1769//1769 +f 1770//1770 1718//1718 1768//1768 +f 1767//1767 1771//1771 1772//1772 +f 1767//1767 1772//1772 1773//1773 +f 1775//1775 1733//1733 1799//1799 +f 1799//1799 1772//1772 1775//1775 +f 1799//1799 1793//1793 1773//1773 +f 1773//1773 1772//1772 1799//1799 +f 1772//1772 1774//1774 1775//1775 +f 1776//1776 1780//1780 1718//1718 +f 1718//1718 1770//1770 1776//1776 +f 1773//1773 1793//1793 1776//1776 +f 1776//1776 1770//1770 1773//1773 +f 2887//2887 2886//2886 1726//1726 +f 1726//1726 1777//1777 2887//2887 +f 1726//1726 1719//1719 1779//1779 +f 1779//1779 1777//1777 1726//1726 +f 1779//1779 1778//1778 1790//1790 +f 1790//1790 1777//1777 1779//1779 +f 1790//1790 2890//2890 2887//2887 +f 2887//2887 1777//1777 1790//1790 +f 1783//1783 1780//1780 1781//1781 +f 1781//1781 1782//1782 1783//1783 +f 1781//1781 1805//1805 1788//1788 +f 1788//1788 1782//1782 1781//1781 +f 1788//1788 1778//1778 1779//1779 +f 1779//1779 1782//1782 1788//1788 +f 1779//1779 1719//1719 1783//1783 +f 1783//1783 1782//1782 1779//1779 +f 1787//1787 1803//1803 1784//1784 +f 1784//1784 1786//1786 1787//1787 +f 1784//1784 1791//1791 1785//1785 +f 1785//1785 1786//1786 1784//1784 +f 1785//1785 1778//1778 1788//1788 +f 1788//1788 1786//1786 1785//1785 +f 1788//1788 1805//1805 1787//1787 +f 1787//1787 1786//1786 1788//1788 +f 1586//1586 1789//1789 2897//2897 +f 2897//2897 1792//1792 1586//1586 +f 2897//2897 2890//2890 1790//1790 +f 1790//1790 1792//1792 2897//2897 +f 1790//1790 1778//1778 1785//1785 +f 1785//1785 1792//1792 1790//1790 +f 1785//1785 1791//1791 1586//1586 +f 1586//1586 1792//1792 1785//1785 +f 1781//1781 1780//1780 1776//1776 +f 1776//1776 1794//1794 1781//1781 +f 1776//1776 1793//1793 1798//1798 +f 1798//1798 1794//1794 1776//1776 +f 1798//1798 1801//1801 1807//1807 +f 1807//1807 1794//1794 1798//1798 +f 1807//1807 1805//1805 1781//1781 +f 1781//1781 1794//1794 1807//1807 +f 1799//1799 1733//1733 1797//1797 +f 1797//1797 1796//1796 1799//1799 +f 1797//1797 2883//2883 1795//1795 +f 1795//1795 1796//1796 1797//1797 +f 1795//1795 1801//1801 1798//1798 +f 1798//1798 1796//1796 1795//1795 +f 1798//1798 1793//1793 1799//1799 +f 1799//1799 1796//1796 1798//1798 +f 1637//1637 1802//1802 2884//2884 +f 1637//1637 1632//1632 1800//1800 +f 1800//1800 1802//1802 1637//1637 +f 1800//1800 1801//1801 1795//1795 +f 1795//1795 1802//1802 1800//1800 +f 1795//1795 2883//2883 2884//2884 +f 2884//2884 1802//1802 1795//1795 +f 1804//1804 1803//1803 1787//1787 +f 1787//1787 1806//1806 1804//1804 +f 1787//1787 1805//1805 1807//1807 +f 1807//1807 1806//1806 1787//1787 +f 1807//1807 1801//1801 1800//1800 +f 1800//1800 1806//1806 1807//1807 +f 1800//1800 1632//1632 1804//1804 +f 1804//1804 1806//1806 1800//1800 +f 1887//1887 8374//8374 1808//1808 +f 1887//1887 1809//1809 8374//8374 +f 1809//1809 8365//8365 8374//8374 +f 1887//1887 1889//1889 1810//1810 +f 1810//1810 1809//1809 1887//1887 +f 1810//1810 1819//1819 1811//1811 +f 1811//1811 1809//1809 1810//1810 +f 1811//1811 1823//1823 8363//8363 +f 1809//1809 1811//1811 8365//8365 +f 1811//1811 8363//8363 8365//8365 +f 1882//1882 1812//1812 1906//1906 +f 1906//1906 1814//1814 1882//1882 +f 1906//1906 1813//1813 1815//1815 +f 1815//1815 1814//1814 1906//1906 +f 1815//1815 1819//1819 1810//1810 +f 1810//1810 1814//1814 1815//1815 +f 1810//1810 1889//1889 1882//1882 +f 1882//1882 1814//1814 1810//1810 +f 1817//1817 2309//2309 1818//1818 +f 1818//1818 1816//1816 1817//1817 +f 1818//1818 2324//2324 1820//1820 +f 1820//1820 1816//1816 1818//1818 +f 1820//1820 1819//1819 1815//1815 +f 1815//1815 1816//1816 1820//1820 +f 1815//1815 1813//1813 1817//1817 +f 1817//1817 1816//1816 1815//1815 +f 1825//1825 8375//8375 1822//1822 +f 1826//1826 1825//1825 1821//1821 +f 1825//1825 1822//1822 1821//1821 +f 1811//1811 1824//1824 1823//1823 +f 1811//1811 1826//1826 1824//1824 +f 1826//1826 1821//1821 1824//1824 +f 1811//1811 1819//1819 1820//1820 +f 1820//1820 1826//1826 1811//1811 +f 1820//1820 2324//2324 1825//1825 +f 1825//1825 1826//1826 1820//1820 +f 1830//1830 2882//2882 1828//1828 +f 1828//1828 1847//1847 1827//1827 +f 1827//1827 1830//1830 1828//1828 +f 1827//1827 1829//1829 1839//1839 +f 1839//1839 1830//1830 1827//1827 +f 1839//1839 2885//2885 1830//1830 +f 1832//1832 3146//3146 1831//1831 +f 1831//1831 1835//1835 1832//1832 +f 1831//1831 1833//1833 1834//1834 +f 1834//1834 1835//1835 1831//1831 +f 1834//1834 1829//1829 1827//1827 +f 1827//1827 1835//1835 1834//1834 +f 1827//1827 1847//1847 1832//1832 +f 1832//1832 1835//1835 1827//1827 +f 3144//3144 3256//3256 1643//1643 +f 1643//1643 1836//1836 3144//3144 +f 1643//1643 1636//1636 1837//1837 +f 1837//1837 1836//1836 1643//1643 +f 1837//1837 1829//1829 1834//1834 +f 1834//1834 1836//1836 1837//1837 +f 1834//1834 1833//1833 3144//3144 +f 3144//3144 1836//1836 1834//1834 +f 1840//1840 2884//2884 1838//1838 +f 1838//1838 1841//1841 1840//1840 +f 1838//1838 2885//2885 1839//1839 +f 1839//1839 1841//1841 1838//1838 +f 1839//1839 1829//1829 1837//1837 +f 1837//1837 1841//1841 1839//1839 +f 1837//1837 1636//1636 1840//1840 +f 1840//1840 1841//1841 1837//1837 +f 1828//1828 2882//2882 1844//1844 +f 1845//1845 1844//1844 1842//1842 +f 1844//1844 8318//8318 1842//1842 +f 1845//1845 1843//1843 1846//1846 +f 1846//1846 1844//1844 1845//1845 +f 1846//1846 1847//1847 1828//1828 +f 1828//1828 1844//1844 1846//1846 +f 1843//1843 1845//1845 1848//1848 +f 1845//1845 8315//8315 1848//1848 +f 1845//1845 8317//8317 8315//8315 +f 1845//1845 1842//1842 8317//8317 +f 3157//3157 1851//1851 1850//1850 +f 1851//1851 1849//1849 1850//1850 +f 1851//1851 1852//1852 1849//1849 +f 1851//1851 1843//1843 8314//8314 +f 1843//1843 1848//1848 8314//8314 +f 1851//1851 8314//8314 1852//1852 +f 1853//1853 3146//3146 1832//1832 +f 1832//1832 1854//1854 1853//1853 +f 1832//1832 1847//1847 1846//1846 +f 1846//1846 1854//1854 1832//1832 +f 1846//1846 1843//1843 1851//1851 +f 1851//1851 1854//1854 1846//1846 +f 1851//1851 3157//3157 1853//1853 +f 1853//1853 1854//1854 1851//1851 +f 2357//2357 2356//2356 1855//1855 +f 1855//1855 1856//1856 2357//2357 +f 1855//1855 1913//1913 1860//1860 +f 1860//1860 1856//1856 1855//1855 +f 1860//1860 1861//1861 1865//1865 +f 1865//1865 1856//1856 1860//1860 +f 1865//1865 1864//1864 2357//2357 +f 2357//2357 1856//1856 1865//1865 +f 1908//1908 1867//1867 1858//1858 +f 1858//1858 1857//1857 1908//1908 +f 1858//1858 1862//1862 1859//1859 +f 1859//1859 1857//1857 1858//1858 +f 1859//1859 1861//1861 1860//1860 +f 1860//1860 1857//1857 1859//1859 +f 1860//1860 1913//1913 1908//1908 +f 1908//1908 1857//1857 1860//1860 +f 1866//1866 1861//1861 1859//1859 +f 1859//1859 1927//1927 1866//1866 +f 1859//1859 1862//1862 1863//1863 +f 1863//1863 1927//1927 1859//1859 +f 1930//1930 1864//1864 1865//1865 +f 1865//1865 1931//1931 1930//1930 +f 1865//1865 1861//1861 1866//1866 +f 1866//1866 1931//1931 1865//1865 +f 1858//1858 1867//1867 1898//1898 +f 1898//1898 1868//1868 1858//1858 +f 1898//1898 1894//1894 1870//1870 +f 1870//1870 1868//1868 1898//1898 +f 1870//1870 1873//1873 1875//1875 +f 1875//1875 1868//1868 1870//1870 +f 1875//1875 1862//1862 1858//1858 +f 1858//1858 1868//1868 1875//1875 +f 1892//1892 1876//1876 1878//1878 +f 1878//1878 1871//1871 1892//1892 +f 1878//1878 1869//1869 1872//1872 +f 1872//1872 1871//1871 1878//1878 +f 1872//1872 1873//1873 1870//1870 +f 1870//1870 1871//1871 1872//1872 +f 1870//1870 1894//1894 1892//1892 +f 1892//1892 1871//1871 1870//1870 +f 1872//1872 1917//1917 1873//1873 +f 1872//1872 1869//1869 1880//1880 +f 1880//1880 1917//1917 1872//1872 +f 1863//1863 1862//1862 1875//1875 +f 1875//1875 1874//1874 1863//1863 +f 1873//1873 1874//1874 1875//1875 +f 1878//1878 1876//1876 8364//8364 +f 1876//1876 8366//8366 8364//8364 +f 1878//1878 8364//8364 1877//1877 +f 1869//1869 1878//1878 1881//1881 +f 1878//1878 1879//1879 1881//1881 +f 1878//1878 1877//1877 1879//1879 +f 1880//1880 1869//1869 8362//8362 +f 1869//1869 1881//1881 8362//8362 +f 1880//1880 8362//8362 8360//8360 +f 1876//1876 1893//1893 8366//8366 +f 1893//1893 8367//8367 8366//8366 +f 1893//1893 8368//8368 8367//8367 +f 1893//1893 8371//8371 8369//8369 +f 1893//1893 8369//8369 8368//8368 +f 1904//1904 1812//1812 1882//1882 +f 1882//1882 1883//1883 1904//1904 +f 1882//1882 1889//1889 1891//1891 +f 1891//1891 1883//1883 1882//1882 +f 1891//1891 1884//1884 1885//1885 +f 1885//1885 1883//1883 1891//1891 +f 1885//1885 1886//1886 1904//1904 +f 1904//1904 1883//1883 1885//1885 +f 1887//1887 1808//1808 8373//8373 +f 1890//1890 1887//1887 1888//1888 +f 1887//1887 8373//8373 1888//1888 +f 1897//1897 8370//8370 8372//8372 +f 1897//1897 1890//1890 8370//8370 +f 1890//1890 1888//1888 8370//8370 +f 1897//1897 1884//1884 1891//1891 +f 1891//1891 1890//1890 1897//1897 +f 1891//1891 1889//1889 1887//1887 +f 1887//1887 1890//1890 1891//1891 +f 1893//1893 1876//1876 1892//1892 +f 1892//1892 1896//1896 1893//1893 +f 1892//1892 1894//1894 1895//1895 +f 1895//1895 1896//1896 1892//1892 +f 1895//1895 1884//1884 1897//1897 +f 1897//1897 1896//1896 1895//1895 +f 1893//1893 1897//1897 8371//8371 +f 1897//1897 8372//8372 8371//8371 +f 1893//1893 1896//1896 1897//1897 +f 1898//1898 1867//1867 1907//1907 +f 1907//1907 1899//1899 1898//1898 +f 1907//1907 1886//1886 1885//1885 +f 1885//1885 1899//1899 1907//1907 +f 1885//1885 1884//1884 1895//1895 +f 1895//1895 1899//1899 1885//1885 +f 1895//1895 1894//1894 1898//1898 +f 1898//1898 1899//1899 1895//1895 +f 2411//2411 2309//2309 1817//1817 +f 1817//1817 1900//1900 2411//2411 +f 1817//1817 1813//1813 1902//1902 +f 1902//1902 1900//1900 1817//1817 +f 1902//1902 1905//1905 1901//1901 +f 1901//1901 1900//1900 1902//1902 +f 1901//1901 2416//2416 2411//2411 +f 2411//2411 1900//1900 1901//1901 +f 1906//1906 1812//1812 1904//1904 +f 1904//1904 1903//1903 1906//1906 +f 1904//1904 1886//1886 1911//1911 +f 1911//1911 1903//1903 1904//1904 +f 1911//1911 1905//1905 1902//1902 +f 1902//1902 1903//1903 1911//1911 +f 1902//1902 1813//1813 1906//1906 +f 1906//1906 1903//1903 1902//1902 +f 1907//1907 1867//1867 1908//1908 +f 1908//1908 1910//1910 1907//1907 +f 1908//1908 1913//1913 1909//1909 +f 1909//1909 1910//1910 1908//1908 +f 1909//1909 1905//1905 1911//1911 +f 1911//1911 1910//1910 1909//1909 +f 1911//1911 1886//1886 1907//1907 +f 1907//1907 1910//1910 1911//1911 +f 1855//1855 2356//2356 2413//2413 +f 2413//2413 1912//1912 1855//1855 +f 2413//2413 2416//2416 1901//1901 +f 1901//1901 1912//1912 2413//2413 +f 1901//1901 1905//1905 1909//1909 +f 1909//1909 1912//1912 1901//1901 +f 1909//1909 1913//1913 1855//1855 +f 1855//1855 1912//1912 1909//1909 +f 1920//1920 1880//1880 8357//8357 +f 1880//1880 1914//1914 8357//8357 +f 1880//1880 8360//8360 1914//1914 +f 1918//1918 1921//1921 8354//8354 +f 1921//1921 1915//1915 8354//8354 +f 1921//1921 8356//8356 1915//1915 +f 1921//1921 1920//1920 1916//1916 +f 1920//1920 8357//8357 1916//1916 +f 1921//1921 1916//1916 8356//8356 +f 1873//1873 1925//1925 1923//1923 +f 1923//1923 1874//1874 1873//1873 +f 1923//1923 1926//1926 1863//1863 +f 1863//1863 1874//1874 1923//1923 +f 1880//1880 1920//1920 1922//1922 +f 1922//1922 1917//1917 1880//1880 +f 1922//1922 1925//1925 1873//1873 +f 1873//1873 1917//1917 1922//1922 +f 1921//1921 1918//1918 1919//1919 +f 3008//3008 1925//1925 1922//1922 +f 1922//1922 1919//1919 3008//3008 +f 1922//1922 1920//1920 1921//1921 +f 1921//1921 1919//1919 1922//1922 +f 1923//1923 1924//1924 1926//1926 +f 1923//1923 1925//1925 3008//3008 +f 3008//3008 1924//1924 1923//1923 +f 1866//1866 3018//3018 1931//1931 +f 1863//1863 1926//1926 1928//1928 +f 1928//1928 1927//1927 1863//1863 +f 1928//1928 3018//3018 1866//1866 +f 1866//1866 1927//1927 1928//1928 +f 1928//1928 1929//1929 3018//3018 +f 1926//1926 1929//1929 1928//1928 +f 2436//2436 1930//1930 1931//1931 +f 1931//1931 3017//3017 2436//2436 +f 3018//3018 3017//3017 1931//1931 +f 1932//1932 1933//1933 8348//8348 +f 1933//1933 1934//1934 8348//8348 +f 1932//1932 8348//8348 8347//8347 +f 1932//1932 8345//8345 1939//1939 +f 1932//1932 8347//8347 8345//8345 +f 1937//1937 1935//1935 3016//3016 +f 3016//3016 1936//1936 1937//1937 +f 1941//1941 1936//1936 3016//3016 +f 1936//1936 1953//1953 1937//1937 +f 3012//3012 1933//1933 1932//1932 +f 1932//1932 1938//1938 3012//3012 +f 1938//1938 1932//1932 8344//8344 +f 1932//1932 1939//1939 8344//8344 +f 3012//3012 1938//1938 1941//1941 +f 1940//1940 2914//2914 1942//1942 +f 1942//1942 1941//1941 1938//1938 +f 1938//1938 1940//1940 1942//1942 +f 1940//1940 1938//1938 8343//8343 +f 1938//1938 8344//8344 8343//8343 +f 1943//1943 2917//2917 1953//1953 +f 1953//1953 1936//1936 1943//1943 +f 1936//1936 1941//1941 1942//1942 +f 1942//1942 2914//2914 1943//1943 +f 1943//1943 1936//1936 1942//1942 +f 1946//1946 3028//3028 1947//1947 +f 1947//1947 1950//1950 1944//1944 +f 1944//1944 1952//1952 1945//1945 +f 1945//1945 1947//1947 1944//1944 +f 1945//1945 2460//2460 1946//1946 +f 1946//1946 1947//1947 1945//1945 +f 1951//1951 1935//1935 1937//1937 +f 1937//1937 1948//1948 1951//1951 +f 1937//1937 1953//1953 1949//1949 +f 1949//1949 1948//1948 1937//1937 +f 1949//1949 1952//1952 1944//1944 +f 1944//1944 1948//1948 1949//1949 +f 1944//1944 1950//1950 1951//1951 +f 1951//1951 1948//1948 1944//1944 +f 1953//1953 2917//2917 2254//2254 +f 2254//2254 2251//2251 1957//1957 +f 1957//1957 1952//1952 1949//1949 +f 1949//1949 2254//2254 1957//1957 +f 1953//1953 2254//2254 1949//1949 +f 1955//1955 1954//1954 2462//2462 +f 2462//2462 1956//1956 1955//1955 +f 2462//2462 2460//2460 1945//1945 +f 1945//1945 1956//1956 2462//2462 +f 1945//1945 1952//1952 1957//1957 +f 1957//1957 1956//1956 1945//1945 +f 1957//1957 2251//2251 1955//1955 +f 1955//1955 1956//1956 1957//1957 +f 1975//1975 2092//2092 1959//1959 +f 1959//1959 1958//1958 1975//1975 +f 1959//1959 2098//2098 1960//1960 +f 1960//1960 1958//1958 1959//1959 +f 1960//1960 1962//1962 1971//1971 +f 1971//1971 1958//1958 1960//1960 +f 1971//1971 1961//1961 1975//1975 +f 1975//1975 1958//1958 1971//1971 +f 1963//1963 2088//2088 2110//2110 +f 2110//2110 1964//1964 1963//1963 +f 2110//2110 2113//2113 1968//1968 +f 1968//1968 1964//1964 2110//2110 +f 1968//1968 1962//1962 1960//1960 +f 1960//1960 1964//1964 1968//1968 +f 1960//1960 2098//2098 1963//1963 +f 1963//1963 1964//1964 1960//1960 +f 2105//2105 2123//2123 1965//1965 +f 1965//1965 1969//1969 2105//2105 +f 1965//1965 1966//1966 1967//1967 +f 1967//1967 1969//1969 1965//1965 +f 1967//1967 1962//1962 1968//1968 +f 1968//1968 1969//1969 1967//1967 +f 1968//1968 2113//2113 2105//2105 +f 2105//2105 1969//1969 1968//1968 +f 1970//1970 8413//8413 8414//8414 +f 1974//1974 1970//1970 1972//1972 +f 1970//1970 8414//8414 1972//1972 +f 1961//1961 1971//1971 8412//8412 +f 1971//1971 1973//1973 8412//8412 +f 1971//1971 1974//1974 1973//1973 +f 1974//1974 1972//1972 1973//1973 +f 1971//1971 1962//1962 1967//1967 +f 1967//1967 1974//1974 1971//1971 +f 1967//1967 1966//1966 1970//1970 +f 1970//1970 1974//1974 1967//1967 +f 2092//2092 1975//1975 8408//8408 +f 1975//1975 8409//8409 8408//8408 +f 1975//1975 8415//8415 8409//8409 +f 1975//1975 1961//1961 8416//8416 +f 1961//1961 8411//8411 8416//8416 +f 1975//1975 8416//8416 8415//8415 +f 1961//1961 8412//8412 8411//8411 +f 1965//1965 2123//2123 2127//2127 +f 2127//2127 1976//1976 1965//1965 +f 2127//2127 2126//2126 1981//1981 +f 1981//1981 1976//1976 2127//2127 +f 1981//1981 1980//1980 1977//1977 +f 1977//1977 1976//1976 1981//1981 +f 1977//1977 1966//1966 1965//1965 +f 1965//1965 1976//1976 1977//1977 +f 1979//1979 1978//1978 2071//2071 +f 2071//2071 1982//1982 1979//1979 +f 2071//2071 1989//1989 1988//1988 +f 1988//1988 1982//1982 2071//2071 +f 1988//1988 1980//1980 1981//1981 +f 1981//1981 1982//1982 1988//1988 +f 1981//1981 2126//2126 1979//1979 +f 1979//1979 1982//1982 1981//1981 +f 1990//1990 2065//2065 1983//1983 +f 1987//1987 1990//1990 1984//1984 +f 1990//1990 1983//1983 1984//1984 +f 1985//1985 8407//8407 1986//1986 +f 1985//1985 1987//1987 8407//8407 +f 1987//1987 1984//1984 8407//8407 +f 1985//1985 1980//1980 1988//1988 +f 1988//1988 1987//1987 1985//1985 +f 1988//1988 1989//1989 1990//1990 +f 1990//1990 1987//1987 1988//1988 +f 1970//1970 8410//8410 8413//8413 +f 1970//1970 1992//1992 8410//8410 +f 1992//1992 1991//1991 8410//8410 +f 1970//1970 1966//1966 1977//1977 +f 1977//1977 1992//1992 1970//1970 +f 1977//1977 1980//1980 1985//1985 +f 1985//1985 1992//1992 1977//1977 +f 1985//1985 1986//1986 1993//1993 +f 1992//1992 1985//1985 1991//1991 +f 1985//1985 1993//1993 1991//1991 +f 1996//1996 1994//1994 2268//2268 +f 2268//2268 2848//2848 1996//1996 +f 2268//2268 2000//2000 1999//1999 +f 1999//1999 2848//2848 2268//2268 +f 1999//1999 1995//1995 2848//2848 +f 2848//2848 1697//1697 1996//1996 +f 1997//1997 2850//2850 2265//2265 +f 1997//1997 1998//1998 2850//2850 +f 2850//2850 1995//1995 1999//1999 +f 1999//1999 2000//2000 2265//2265 +f 2265//2265 2850//2850 1999//1999 +f 2258//2258 2001//2001 1997//1997 +f 2001//2001 1998//1998 1997//1997 +f 2060//2060 2058//2058 2002//2002 +f 2002//2002 2003//2003 2060//2060 +f 2002//2002 2009//2009 2004//2004 +f 2004//2004 2003//2003 2002//2002 +f 2004//2004 2005//2005 2006//2006 +f 2006//2006 2003//2003 2004//2004 +f 2006//2006 2012//2012 2060//2060 +f 2060//2060 2003//2003 2006//2006 +f 2007//2007 2014//2014 2015//2015 +f 2015//2015 2008//2008 2007//2007 +f 2015//2015 2017//2017 2010//2010 +f 2010//2010 2008//2008 2015//2015 +f 2010//2010 2005//2005 2004//2004 +f 2004//2004 2008//2008 2010//2010 +f 2004//2004 2009//2009 2007//2007 +f 2007//2007 2008//2008 2004//2004 +f 2013//2013 2005//2005 2010//2010 +f 2010//2010 2138//2138 2013//2013 +f 2010//2010 2017//2017 2011//2011 +f 2011//2011 2138//2138 2010//2010 +f 2064//2064 2012//2012 2006//2006 +f 2006//2006 2136//2136 2064//2064 +f 2006//2006 2005//2005 2013//2013 +f 2013//2013 2136//2136 2006//2006 +f 2015//2015 2014//2014 2118//2118 +f 2118//2118 2016//2016 2015//2015 +f 2118//2118 2021//2021 2020//2020 +f 2020//2020 2016//2016 2118//2118 +f 2020//2020 2026//2026 2027//2027 +f 2027//2027 2016//2016 2020//2020 +f 2027//2027 2017//2017 2015//2015 +f 2015//2015 2016//2016 2027//2027 +f 2022//2022 2018//2018 2028//2028 +f 2028//2028 2019//2019 2022//2022 +f 2028//2028 2040//2040 2024//2024 +f 2024//2024 2019//2019 2028//2028 +f 2024//2024 2026//2026 2020//2020 +f 2020//2020 2019//2019 2024//2024 +f 2020//2020 2021//2021 2022//2022 +f 2022//2022 2019//2019 2020//2020 +f 2023//2023 2026//2026 2024//2024 +f 2024//2024 2025//2025 2023//2023 +f 2024//2024 2040//2040 2155//2155 +f 2155//2155 2025//2025 2024//2024 +f 2011//2011 2017//2017 2027//2027 +f 2027//2027 2153//2153 2011//2011 +f 2027//2027 2026//2026 2023//2023 +f 2023//2023 2153//2153 2027//2027 +f 2028//2028 2018//2018 2029//2029 +f 2029//2029 2030//2030 2028//2028 +f 2029//2029 2036//2036 2035//2035 +f 2035//2035 2030//2030 2029//2029 +f 2035//2035 2042//2042 2041//2041 +f 2041//2041 2030//2030 2035//2035 +f 2041//2041 2040//2040 2028//2028 +f 2028//2028 2030//2030 2041//2041 +f 2031//2031 2087//2087 2032//2032 +f 2032//2032 2033//2033 2031//2031 +f 2032//2032 2043//2043 2034//2034 +f 2034//2034 2033//2033 2032//2032 +f 2034//2034 2042//2042 2035//2035 +f 2035//2035 2033//2033 2034//2034 +f 2035//2035 2036//2036 2031//2031 +f 2031//2031 2033//2033 2035//2035 +f 2037//2037 2042//2042 2034//2034 +f 2034//2034 2039//2039 2037//2037 +f 2034//2034 2043//2043 2038//2038 +f 2038//2038 2039//2039 2034//2034 +f 2155//2155 2040//2040 2041//2041 +f 2041//2041 2150//2150 2155//2155 +f 2041//2041 2042//2042 2037//2037 +f 2037//2037 2150//2150 2041//2041 +f 2032//2032 2087//2087 8426//8426 +f 2087//2087 8427//8427 8426//8426 +f 2032//2032 8426//8426 8404//8404 +f 2043//2043 2032//2032 2044//2044 +f 2032//2032 2045//2045 2044//2044 +f 2032//2032 8404//8404 2045//2045 +f 2038//2038 2043//2043 8403//8403 +f 2043//2043 2044//2044 8403//8403 +f 2038//2038 8403//8403 2046//2046 +f 2084//2084 2047//2047 2085//2085 +f 2047//2047 8418//8418 2085//2085 +f 2047//2047 8421//8421 8418//8418 +f 2047//2047 2048//2048 2049//2049 +f 2048//2048 8417//8417 2049//2049 +f 2047//2047 2049//2049 8421//8421 +f 2048//2048 2050//2050 8417//8417 +f 2050//2050 2052//2052 8417//8417 +f 2050//2050 2051//2051 2052//2052 +f 2047//2047 2084//2084 2053//2053 +f 2053//2053 2056//2056 2047//2047 +f 2053//2053 2061//2061 2054//2054 +f 2054//2054 2056//2056 2053//2053 +f 2054//2054 2055//2055 2057//2057 +f 2057//2057 2056//2056 2054//2054 +f 2057//2057 2048//2048 2047//2047 +f 2047//2047 2056//2056 2057//2057 +f 2075//2075 2058//2058 2060//2060 +f 2060//2060 2059//2059 2075//2075 +f 2060//2060 2012//2012 2063//2063 +f 2063//2063 2059//2059 2060//2060 +f 2063//2063 2055//2055 2054//2054 +f 2054//2054 2059//2059 2063//2063 +f 2054//2054 2061//2061 2075//2075 +f 2075//2075 2059//2059 2054//2054 +f 2143//2143 2055//2055 2063//2063 +f 2063//2063 2062//2062 2143//2143 +f 2063//2063 2012//2012 2064//2064 +f 2064//2064 2062//2062 2063//2063 +f 2050//2050 2048//2048 2057//2057 +f 2057//2057 2142//2142 2050//2050 +f 2057//2057 2055//2055 2143//2143 +f 2143//2143 2142//2142 2057//2057 +f 1990//1990 8422//8422 2065//2065 +f 1990//1990 2066//2066 8422//8422 +f 2066//2066 2068//2068 8422//8422 +f 1990//1990 1989//1989 2074//2074 +f 2074//2074 2066//2066 1990//1990 +f 2074//2074 2067//2067 2080//2080 +f 2080//2080 2066//2066 2074//2074 +f 2080//2080 8419//8419 2069//2069 +f 2066//2066 2080//2080 2068//2068 +f 2080//2080 2069//2069 2068//2068 +f 2071//2071 1978//1978 2121//2121 +f 2121//2121 2070//2070 2071//2071 +f 2121//2121 2072//2072 2073//2073 +f 2073//2073 2070//2070 2121//2121 +f 2073//2073 2067//2067 2074//2074 +f 2074//2074 2070//2070 2073//2073 +f 2074//2074 1989//1989 2071//2071 +f 2071//2071 2070//2070 2074//2074 +f 2076//2076 2058//2058 2075//2075 +f 2075//2075 2077//2077 2076//2076 +f 2075//2075 2061//2061 2083//2083 +f 2083//2083 2077//2077 2075//2075 +f 2083//2083 2067//2067 2073//2073 +f 2073//2073 2077//2077 2083//2083 +f 2073//2073 2072//2072 2076//2076 +f 2076//2076 2077//2077 2073//2073 +f 2053//2053 2084//2084 2078//2078 +f 2084//2084 2079//2079 2078//2078 +f 2082//2082 2053//2053 8420//8420 +f 2053//2053 2078//2078 8420//8420 +f 2080//2080 2081//2081 8419//8419 +f 2080//2080 2082//2082 2081//2081 +f 2082//2082 8420//8420 2081//2081 +f 2080//2080 2067//2067 2083//2083 +f 2083//2083 2082//2082 2080//2080 +f 2083//2083 2061//2061 2053//2053 +f 2053//2053 2082//2082 2083//2083 +f 2084//2084 2085//2085 2079//2079 +f 2094//2094 2092//2092 8406//8406 +f 2092//2092 8408//8408 8406//8406 +f 2094//2094 8406//8406 8405//8405 +f 2100//2100 2094//2094 8424//8424 +f 2094//2094 2086//2086 8424//8424 +f 2094//2094 8405//8405 2086//2086 +f 2087//2087 2101//2101 8427//8427 +f 2101//2101 8425//8425 8427//8427 +f 2101//2101 8428//8428 8425//8425 +f 2101//2101 2100//2100 8423//8423 +f 2100//2100 8424//8424 8423//8423 +f 2101//2101 8423//8423 8428//8428 +f 2089//2089 2088//2088 1963//1963 +f 1963//1963 2090//2090 2089//2089 +f 1963//1963 2098//2098 2097//2097 +f 2097//2097 2090//2090 1963//1963 +f 2097//2097 2096//2096 2091//2091 +f 2091//2091 2090//2090 2097//2097 +f 2091//2091 2102//2102 2089//2089 +f 2089//2089 2090//2090 2091//2091 +f 1959//1959 2092//2092 2094//2094 +f 2094//2094 2093//2093 1959//1959 +f 2094//2094 2100//2100 2095//2095 +f 2095//2095 2093//2093 2094//2094 +f 2095//2095 2096//2096 2097//2097 +f 2097//2097 2093//2093 2095//2095 +f 2097//2097 2098//2098 1959//1959 +f 1959//1959 2093//2093 2097//2097 +f 2101//2101 2087//2087 2031//2031 +f 2031//2031 2099//2099 2101//2101 +f 2031//2031 2036//2036 2104//2104 +f 2104//2104 2099//2099 2031//2031 +f 2104//2104 2096//2096 2095//2095 +f 2095//2095 2099//2099 2104//2104 +f 2095//2095 2100//2100 2101//2101 +f 2101//2101 2099//2099 2095//2095 +f 2029//2029 2018//2018 2115//2115 +f 2115//2115 2103//2103 2029//2029 +f 2115//2115 2102//2102 2091//2091 +f 2091//2091 2103//2103 2115//2115 +f 2091//2091 2096//2096 2104//2104 +f 2104//2104 2103//2103 2091//2091 +f 2104//2104 2036//2036 2029//2029 +f 2029//2029 2103//2103 2104//2104 +f 2108//2108 2123//2123 2105//2105 +f 2105//2105 2107//2107 2108//2108 +f 2105//2105 2113//2113 2112//2112 +f 2112//2112 2107//2107 2105//2105 +f 2112//2112 2106//2106 2109//2109 +f 2109//2109 2107//2107 2112//2112 +f 2109//2109 2125//2125 2108//2108 +f 2108//2108 2107//2107 2109//2109 +f 2110//2110 2088//2088 2089//2089 +f 2089//2089 2111//2111 2110//2110 +f 2089//2089 2102//2102 2117//2117 +f 2117//2117 2111//2111 2089//2089 +f 2117//2117 2106//2106 2112//2112 +f 2112//2112 2111//2111 2117//2117 +f 2112//2112 2113//2113 2110//2110 +f 2110//2110 2111//2111 2112//2112 +f 2115//2115 2018//2018 2022//2022 +f 2022//2022 2116//2116 2115//2115 +f 2022//2022 2021//2021 2114//2114 +f 2114//2114 2116//2116 2022//2022 +f 2114//2114 2106//2106 2117//2117 +f 2117//2117 2116//2116 2114//2114 +f 2117//2117 2102//2102 2115//2115 +f 2115//2115 2116//2116 2117//2117 +f 2118//2118 2014//2014 2128//2128 +f 2128//2128 2119//2119 2118//2118 +f 2128//2128 2125//2125 2109//2109 +f 2109//2109 2119//2119 2128//2128 +f 2109//2109 2106//2106 2114//2114 +f 2114//2114 2119//2119 2109//2109 +f 2114//2114 2021//2021 2118//2118 +f 2118//2118 2119//2119 2114//2114 +f 2121//2121 1978//1978 1979//1979 +f 1979//1979 2122//2122 2121//2121 +f 1979//1979 2126//2126 2120//2120 +f 2120//2120 2122//2122 1979//1979 +f 2120//2120 2134//2134 2133//2133 +f 2133//2133 2122//2122 2120//2120 +f 2133//2133 2072//2072 2121//2121 +f 2121//2121 2122//2122 2133//2133 +f 2127//2127 2123//2123 2108//2108 +f 2108//2108 2124//2124 2127//2127 +f 2108//2108 2125//2125 2131//2131 +f 2131//2131 2124//2124 2108//2108 +f 2131//2131 2134//2134 2120//2120 +f 2120//2120 2124//2124 2131//2131 +f 2120//2120 2126//2126 2127//2127 +f 2127//2127 2124//2124 2120//2120 +f 2128//2128 2014//2014 2007//2007 +f 2007//2007 2130//2130 2128//2128 +f 2007//2007 2009//2009 2129//2129 +f 2129//2129 2130//2130 2007//2007 +f 2129//2129 2134//2134 2131//2131 +f 2131//2131 2130//2130 2129//2129 +f 2131//2131 2125//2125 2128//2128 +f 2128//2128 2130//2130 2131//2131 +f 2002//2002 2058//2058 2076//2076 +f 2076//2076 2132//2132 2002//2002 +f 2076//2076 2072//2072 2133//2133 +f 2133//2133 2132//2132 2076//2076 +f 2133//2133 2134//2134 2129//2129 +f 2129//2129 2132//2132 2133//2133 +f 2129//2129 2009//2009 2002//2002 +f 2002//2002 2132//2132 2129//2129 +f 2137//2137 2136//2136 2013//2013 +f 2137//2137 2135//2135 2064//2064 +f 2064//2064 2136//2136 2137//2137 +f 2139//2139 2138//2138 2011//2011 +f 2013//2013 2138//2138 2139//2139 +f 3062//3062 2013//2013 2139//2139 +f 2139//2139 2141//2141 3062//3062 +f 2139//2139 2011//2011 2140//2140 +f 2140//2140 2141//2141 2139//2139 +f 2137//2137 3065//3065 2135//2135 +f 2137//2137 2013//2013 3062//3062 +f 3062//3062 3065//3065 2137//2137 +f 2142//2142 2143//2143 2146//2146 +f 2146//2146 2144//2144 2142//2142 +f 2064//2064 2135//2135 2145//2145 +f 2145//2145 2062//2062 2064//2064 +f 2145//2145 2144//2144 2146//2146 +f 2146//2146 2062//2062 2145//2145 +f 2146//2146 2143//2143 2062//2062 +f 3075//3075 2147//2147 2144//2144 +f 2145//2145 3075//3075 2144//2144 +f 2135//2135 3075//3075 2145//2145 +f 2148//2148 2050//2050 2142//2142 +f 2142//2142 3073//3073 2148//2148 +f 2144//2144 3073//3073 2142//2142 +f 2144//2144 2147//2147 3073//3073 +f 2148//2148 3081//3081 2149//2149 +f 2050//2050 2148//2148 2051//2051 +f 2148//2148 2149//2149 2051//2051 +f 3047//3047 2038//2038 8401//8401 +f 2038//2038 2046//2046 8401//8401 +f 2158//2158 2155//2155 2150//2150 +f 2151//2151 2150//2150 2037//2037 +f 2158//2158 2150//2150 2151//2151 +f 2039//2039 2038//2038 3047//3047 +f 2152//2152 2037//2037 2039//2039 +f 3051//3051 2158//2158 2151//2151 +f 2151//2151 2037//2037 2152//2152 +f 2153//2153 2023//2023 2154//2154 +f 2154//2154 2157//2157 2159//2159 +f 2159//2159 2153//2153 2154//2154 +f 2011//2011 2153//2153 2159//2159 +f 2025//2025 2155//2155 2158//2158 +f 2156//2156 2025//2025 2158//2158 +f 2156//2156 2157//2157 2154//2154 +f 2154//2154 2025//2025 2156//2156 +f 2154//2154 2023//2023 2025//2025 +f 2156//2156 3055//3055 2157//2157 +f 2156//2156 2158//2158 3051//3051 +f 3051//3051 3055//3055 2156//2156 +f 2140//2140 2011//2011 2159//2159 +f 2159//2159 3054//3054 2140//2140 +f 2157//2157 3054//3054 2159//2159 +f 2177//2177 2160//2160 2163//2163 +f 3070//3070 2161//2161 2162//2162 +f 2162//2162 2163//2163 3070//3070 +f 2162//2162 2171//2171 2177//2177 +f 2177//2177 2163//2163 2162//2162 +f 2164//2164 2167//2167 2166//2166 +f 2166//2166 3067//3067 2164//2164 +f 2166//2166 2161//2161 3070//3070 +f 3070//3070 3067//3067 2166//2166 +f 2168//2168 2194//2194 2169//2169 +f 2169//2169 2172//2172 2165//2165 +f 2165//2165 2161//2161 2166//2166 +f 2166//2166 2169//2169 2165//2165 +f 2166//2166 2167//2167 2168//2168 +f 2168//2168 2169//2169 2166//2166 +f 2173//2173 2170//2170 2171//2171 +f 2171//2171 2162//2162 2173//2173 +f 2162//2162 2161//2161 2165//2165 +f 2165//2165 2172//2172 2173//2173 +f 2173//2173 2162//2162 2165//2165 +f 2176//2176 2180//2180 3079//3079 +f 3079//3079 2174//2174 2176//2176 +f 3079//3079 3076//3076 2175//2175 +f 2175//2175 2174//2174 3079//3079 +f 2925//2925 2174//2174 2175//2175 +f 2925//2925 2931//2931 2176//2176 +f 2176//2176 2174//2174 2925//2925 +f 2178//2178 2160//2160 2177//2177 +f 2177//2177 2179//2179 2178//2178 +f 2177//2177 2171//2171 2179//2179 +f 2175//2175 3076//3076 2178//2178 +f 2178//2178 2179//2179 2175//2175 +f 2171//2171 2170//2170 2179//2179 +f 2180//2180 2176//2176 3085//3085 +f 2176//2176 8398//8398 3085//3085 +f 2176//2176 2931//2931 8399//8399 +f 2931//2931 2181//2181 8399//8399 +f 2176//2176 8399//8399 8398//8398 +f 2931//2931 8396//8396 2181//2181 +f 2277//2277 2182//2182 2184//2184 +f 2182//2182 2183//2183 2184//2184 +f 2182//2182 8397//8397 2183//2183 +f 2182//2182 3049//3049 8397//8397 +f 3049//3049 2185//2185 8397//8397 +f 2186//2186 3052//3052 3053//3053 +f 2182//2182 2277//2277 2276//2276 +f 2276//2276 3048//3048 2182//2182 +f 2276//2276 2280//2280 2188//2188 +f 2188//2188 3048//3048 2276//2276 +f 2188//2188 2187//2187 3048//3048 +f 3048//3048 3049//3049 2182//2182 +f 2271//2271 2191//2191 2193//2193 +f 2193//2193 3053//3053 2271//2271 +f 2193//2193 2186//2186 3053//3053 +f 3053//3053 2187//2187 2188//2188 +f 2188//2188 2280//2280 2271//2271 +f 2271//2271 3053//3053 2188//2188 +f 2195//2195 2189//2189 2196//2196 +f 2195//2195 2167//2167 2164//2164 +f 2164//2164 2189//2189 2195//2195 +f 3056//3056 3052//3052 2186//2186 +f 2190//2190 3056//3056 2186//2186 +f 2196//2196 3056//3056 2190//2190 +f 2193//2193 2191//2191 2192//2192 +f 2192//2192 2190//2190 2193//2193 +f 2192//2192 2295//2295 2198//2198 +f 2198//2198 2190//2190 2192//2192 +f 2198//2198 2196//2196 2190//2190 +f 2190//2190 2186//2186 2193//2193 +f 2290//2290 2194//2194 2168//2168 +f 2168//2168 2197//2197 2290//2290 +f 2168//2168 2167//2167 2195//2195 +f 2195//2195 2197//2197 2168//2168 +f 2195//2195 2196//2196 2198//2198 +f 2198//2198 2197//2197 2195//2195 +f 2198//2198 2295//2295 2290//2290 +f 2290//2290 2197//2197 2198//2198 +f 2203//2203 2243//2243 2199//2199 +f 2199//2199 2200//2200 2203//2203 +f 2199//2199 2241//2241 2205//2205 +f 2205//2205 2200//2200 2199//2199 +f 2205//2205 2204//2204 2201//2201 +f 2201//2201 2200//2200 2205//2205 +f 2201//2201 2202//2202 2203//2203 +f 2203//2203 2200//2200 2201//2201 +f 2236//2236 2235//2235 2210//2210 +f 2210//2210 2206//2206 2236//2236 +f 2210//2210 2204//2204 2205//2205 +f 2205//2205 2206//2206 2210//2210 +f 2205//2205 2241//2241 2206//2206 +f 2308//2308 2207//2207 2903//2903 +f 2903//2903 2209//2209 2308//2308 +f 2903//2903 2208//2208 2213//2213 +f 2213//2213 2209//2209 2903//2903 +f 2213//2213 2204//2204 2210//2210 +f 2210//2210 2209//2209 2213//2213 +f 2210//2210 2235//2235 2308//2308 +f 2308//2308 2209//2209 2210//2210 +f 2211//2211 2901//2901 1654//1654 +f 1654//1654 2212//2212 2211//2211 +f 1654//1654 2202//2202 2201//2201 +f 2201//2201 2212//2212 1654//1654 +f 2201//2201 2204//2204 2213//2213 +f 2213//2213 2212//2212 2201//2201 +f 2213//2213 2208//2208 2211//2211 +f 2211//2211 2212//2212 2213//2213 +f 2239//2239 2214//2214 8389//8389 +f 2214//2214 8387//8387 8389//8389 +f 2214//2214 2226//2226 8429//8429 +f 2226//2226 8335//8335 8429//8429 +f 2214//2214 8429//8429 8387//8387 +f 2215//2215 2908//2908 2216//2216 +f 2908//2908 8337//8337 2216//2216 +f 2215//2215 2216//2216 2217//2217 +f 2226//2226 2215//2215 8335//8335 +f 2215//2215 2218//2218 8335//8335 +f 2215//2215 2217//2217 2218//2218 +f 2214//2214 2239//2239 2228//2228 +f 2228//2228 2221//2221 2219//2219 +f 2219//2219 2222//2222 2220//2220 +f 2220//2220 2228//2228 2219//2219 +f 2220//2220 2226//2226 2214//2214 +f 2214//2214 2228//2228 2220//2220 +f 2206//2206 2241//2241 2223//2223 +f 2223//2223 2222//2222 2219//2219 +f 2219//2219 2206//2206 2223//2223 +f 2219//2219 2221//2221 2236//2236 +f 2236//2236 2206//2206 2219//2219 +f 2227//2227 2242//2242 2915//2915 +f 2227//2227 2222//2222 2223//2223 +f 2223//2223 2242//2242 2227//2227 +f 2223//2223 2241//2241 2242//2242 +f 2225//2225 2908//2908 2215//2215 +f 2215//2215 2224//2224 2225//2225 +f 2215//2215 2226//2226 2220//2220 +f 2220//2220 2224//2224 2215//2215 +f 2220//2220 2222//2222 2227//2227 +f 2227//2227 2224//2224 2220//2220 +f 2227//2227 2915//2915 2225//2225 +f 2225//2225 2224//2224 2227//2227 +f 2229//2229 2228//2228 2239//2239 +f 2221//2221 2228//2228 2229//2229 +f 2232//2232 2927//2927 2924//2924 +f 2924//2924 2233//2233 2232//2232 +f 2924//2924 2230//2230 2231//2231 +f 2231//2231 2233//2233 2924//2924 +f 2231//2231 2221//2221 2229//2229 +f 2229//2229 2233//2233 2231//2231 +f 2229//2229 2239//2239 2232//2232 +f 2232//2232 2233//2233 2229//2229 +f 2305//2305 2235//2235 2234//2234 +f 2234//2234 2221//2221 2231//2231 +f 2231//2231 2305//2305 2234//2234 +f 2230//2230 2305//2305 2231//2231 +f 2234//2234 2236//2236 2221//2221 +f 2234//2234 2235//2235 2236//2236 +f 2239//2239 8389//8389 2237//2237 +f 2927//2927 2232//2232 8392//8392 +f 2232//2232 2238//2238 8392//8392 +f 2232//2232 2240//2240 2238//2238 +f 2232//2232 2239//2239 2240//2240 +f 2239//2239 2237//2237 2240//2240 +f 2242//2242 2199//2199 2915//2915 +f 2241//2241 2199//2199 2242//2242 +f 2199//2199 2243//2243 2937//2937 +f 2937//2937 2915//2915 2199//2199 +f 2935//2935 2907//2907 1652//1652 +f 1652//1652 2246//2246 2935//2935 +f 1652//1652 1651//1651 2247//2247 +f 2247//2247 2246//2246 1652//1652 +f 2247//2247 2244//2244 2245//2245 +f 2245//2245 2246//2246 2247//2247 +f 2245//2245 2248//2248 2935//2935 +f 2935//2935 2246//2246 2245//2245 +f 2249//2249 1657//1657 2781//2781 +f 2781//2781 2250//2250 2249//2249 +f 2781//2781 2780//2780 2253//2253 +f 2253//2253 2250//2250 2781//2781 +f 2253//2253 2244//2244 2247//2247 +f 2247//2247 2250//2250 2253//2253 +f 2247//2247 1651//1651 2249//2249 +f 2249//2249 2250//2250 2247//2247 +f 2775//2775 1954//1954 1955//1955 +f 1955//1955 2252//2252 2775//2775 +f 1955//1955 2251//2251 2257//2257 +f 2257//2257 2252//2252 1955//1955 +f 2257//2257 2244//2244 2253//2253 +f 2253//2253 2252//2252 2257//2257 +f 2253//2253 2780//2780 2775//2775 +f 2775//2775 2252//2252 2253//2253 +f 2254//2254 2917//2917 2255//2255 +f 2255//2255 2256//2256 2254//2254 +f 2255//2255 2248//2248 2245//2245 +f 2245//2245 2256//2256 2255//2255 +f 2245//2245 2244//2244 2257//2257 +f 2257//2257 2256//2256 2245//2245 +f 2257//2257 2251//2251 2254//2254 +f 2254//2254 2256//2256 2257//2257 +f 2258//2258 1997//1997 2264//2264 +f 2258//2258 2264//2264 8385//8385 +f 2264//2264 8386//8386 8385//8385 +f 2264//2264 2259//2259 2260//2260 +f 2264//2264 2260//2260 8386//8386 +f 2260//2260 8388//8388 8386//8386 +f 2260//2260 8390//8390 8388//8388 +f 2279//2279 2277//2277 8394//8394 +f 2277//2277 2184//2184 8394//8394 +f 2279//2279 8394//8394 2262//2262 +f 2260//2260 2261//2261 8390//8390 +f 2260//2260 2259//2259 2279//2279 +f 2260//2260 2279//2279 2261//2261 +f 2279//2279 2262//2262 2261//2261 +f 2264//2264 1997//1997 2265//2265 +f 2265//2265 2263//2263 2264//2264 +f 2265//2265 2000//2000 2266//2266 +f 2266//2266 2263//2263 2265//2265 +f 2266//2266 2274//2274 2267//2267 +f 2267//2267 2263//2263 2266//2266 +f 2267//2267 2259//2259 2264//2264 +f 2264//2264 2263//2263 2267//2267 +f 2268//2268 1994//1994 2284//2284 +f 2284//2284 2269//2269 2268//2268 +f 2284//2284 2283//2283 2270//2270 +f 2270//2270 2269//2269 2284//2284 +f 2270//2270 2274//2274 2266//2266 +f 2266//2266 2269//2269 2270//2270 +f 2266//2266 2000//2000 2268//2268 +f 2268//2268 2269//2269 2266//2266 +f 2275//2275 2191//2191 2271//2271 +f 2271//2271 2272//2272 2275//2275 +f 2271//2271 2280//2280 2273//2273 +f 2273//2273 2272//2272 2271//2271 +f 2273//2273 2274//2274 2270//2270 +f 2270//2270 2272//2272 2273//2273 +f 2270//2270 2283//2283 2275//2275 +f 2275//2275 2272//2272 2270//2270 +f 2276//2276 2277//2277 2279//2279 +f 2279//2279 2278//2278 2276//2276 +f 2279//2279 2259//2259 2267//2267 +f 2267//2267 2278//2278 2279//2279 +f 2267//2267 2274//2274 2273//2273 +f 2273//2273 2278//2278 2267//2267 +f 2273//2273 2280//2280 2276//2276 +f 2276//2276 2278//2278 2273//2273 +f 2284//2284 1994//1994 1661//1661 +f 1661//1661 2281//2281 2284//2284 +f 1661//1661 1663//1663 2289//2289 +f 2289//2289 2281//2281 1661//1661 +f 2289//2289 2292//2292 2282//2282 +f 2282//2282 2281//2281 2289//2289 +f 2282//2282 2283//2283 2284//2284 +f 2284//2284 2281//2281 2282//2282 +f 1669//1669 1667//1667 2285//2285 +f 2285//2285 2288//2288 1669//1669 +f 2285//2285 2286//2286 2287//2287 +f 2287//2287 2288//2288 2285//2285 +f 2287//2287 2292//2292 2289//2289 +f 2289//2289 2288//2288 2287//2287 +f 2289//2289 1663//1663 1669//1669 +f 1669//1669 2288//2288 2289//2289 +f 2290//2290 2291//2291 2194//2194 +f 2290//2290 2295//2295 2294//2294 +f 2294//2294 2291//2291 2290//2290 +f 2294//2294 2292//2292 2287//2287 +f 2287//2287 2291//2291 2294//2294 +f 2287//2287 2286//2286 2194//2194 +f 2194//2194 2291//2291 2287//2287 +f 2192//2192 2191//2191 2275//2275 +f 2275//2275 2293//2293 2192//2192 +f 2275//2275 2283//2283 2282//2282 +f 2282//2282 2293//2293 2275//2275 +f 2282//2282 2292//2292 2294//2294 +f 2294//2294 2293//2293 2282//2282 +f 2294//2294 2295//2295 2192//2192 +f 2192//2192 2293//2293 2294//2294 +f 2285//2285 1667//1667 2296//2296 +f 2296//2296 2303//2303 2285//2285 +f 2296//2296 1671//1671 2297//2297 +f 2297//2297 2303//2303 2296//2296 +f 2297//2297 2301//2301 2303//2303 +f 2303//2303 2286//2286 2285//2285 +f 2298//2298 2299//2299 2300//2300 +f 2298//2298 2940//2940 2299//2299 +f 2299//2299 2301//2301 2297//2297 +f 2297//2297 1671//1671 2300//2300 +f 2300//2300 2299//2299 2297//2297 +f 2942//2942 2170//2170 2173//2173 +f 2173//2173 2302//2302 2942//2942 +f 2172//2172 2302//2302 2173//2173 +f 2172//2172 2301//2301 2299//2299 +f 2299//2299 2302//2302 2172//2172 +f 2299//2299 2940//2940 2942//2942 +f 2942//2942 2302//2302 2299//2299 +f 2194//2194 2304//2304 2169//2169 +f 2194//2194 2286//2286 2303//2303 +f 2303//2303 2304//2304 2194//2194 +f 2303//2303 2301//2301 2172//2172 +f 2172//2172 2304//2304 2303//2303 +f 2169//2169 2304//2304 2172//2172 +f 2305//2305 2230//2230 2306//2306 +f 2306//2306 2938//2938 2307//2307 +f 2307//2307 2305//2305 2306//2306 +f 2235//2235 2305//2305 2307//2307 +f 2307//2307 2308//2308 2235//2235 +f 2307//2307 2938//2938 2207//2207 +f 2207//2207 2308//2308 2307//2307 +f 1818//1818 2309//2309 2310//2310 +f 2310//2310 2312//2312 1818//1818 +f 2310//2310 2405//2405 2317//2317 +f 2317//2317 2312//2312 2310//2310 +f 2317//2317 2325//2325 2311//2311 +f 2311//2311 2312//2312 2317//2317 +f 2311//2311 2324//2324 1818//1818 +f 1818//1818 2312//2312 2311//2311 +f 2406//2406 2313//2313 2314//2314 +f 2314//2314 2316//2316 2406//2406 +f 2314//2314 2396//2396 2315//2315 +f 2315//2315 2316//2316 2314//2314 +f 2315//2315 2325//2325 2317//2317 +f 2317//2317 2316//2316 2315//2315 +f 2317//2317 2405//2405 2406//2406 +f 2406//2406 2316//2316 2317//2317 +f 2390//2390 2391//2391 8378//8378 +f 2320//2320 2390//2390 2318//2318 +f 2390//2390 8378//8378 2318//2318 +f 2321//2321 2319//2319 2326//2326 +f 2321//2321 2320//2320 2319//2319 +f 2320//2320 2318//2318 2319//2319 +f 2321//2321 2325//2325 2315//2315 +f 2315//2315 2320//2320 2321//2321 +f 2315//2315 2396//2396 2390//2390 +f 2390//2390 2320//2320 2315//2315 +f 1825//1825 2322//2322 8375//8375 +f 1825//1825 2323//2323 2322//2322 +f 2323//2323 8376//8376 2322//2322 +f 1825//1825 2324//2324 2311//2311 +f 2311//2311 2323//2323 1825//1825 +f 2311//2311 2325//2325 2321//2321 +f 2321//2321 2323//2323 2311//2311 +f 2321//2321 2326//2326 8377//8377 +f 2323//2323 2321//2321 8376//8376 +f 2321//2321 8377//8377 8376//8376 +f 3752//3752 2327//2327 2328//2328 +f 2328//2328 2336//2336 2334//2334 +f 2334//2334 3752//3752 2328//2328 +f 2329//2329 3752//3752 2334//2334 +f 2329//2329 2330//2330 3752//3752 +f 2337//2337 1789//1789 2332//2332 +f 2332//2332 2335//2335 2337//2337 +f 2332//2332 2331//2331 2333//2333 +f 2333//2333 2335//2335 2332//2332 +f 2333//2333 2329//2329 2334//2334 +f 2334//2334 2335//2335 2333//2333 +f 2334//2334 2336//2336 2337//2337 +f 2337//2337 2335//2335 2334//2334 +f 2341//2341 2338//2338 2339//2339 +f 2339//2339 2340//2340 2341//2341 +f 2344//2344 2340//2340 2339//2339 +f 2344//2344 2329//2329 2333//2333 +f 2333//2333 2340//2340 2344//2344 +f 2333//2333 2331//2331 2341//2341 +f 2341//2341 2340//2340 2333//2333 +f 3544//3544 2342//2342 2343//2343 +f 2343//2343 2344//2344 3544//3544 +f 2343//2343 2330//2330 2329//2329 +f 2329//2329 2344//2344 2343//2343 +f 2344//2344 2339//2339 3544//3544 +f 2345//2345 2368//2368 2354//2354 +f 2354//2354 2348//2348 2345//2345 +f 2354//2354 2346//2346 2347//2347 +f 2347//2347 2348//2348 2354//2354 +f 2355//2355 2349//2349 2351//2351 +f 2351//2351 2352//2352 2355//2355 +f 2351//2351 2350//2350 2353//2353 +f 2353//2353 2352//2352 2351//2351 +f 2353//2353 2346//2346 2354//2354 +f 2354//2354 2352//2352 2353//2353 +f 2354//2354 2368//2368 2355//2355 +f 2355//2355 2352//2352 2354//2354 +f 2412//2412 2356//2356 2357//2357 +f 2357//2357 2358//2358 2412//2412 +f 2357//2357 1864//1864 2359//2359 +f 2359//2359 2358//2358 2357//2357 +f 2359//2359 2346//2346 2353//2353 +f 2353//2353 2358//2358 2359//2359 +f 2353//2353 2350//2350 2412//2412 +f 2412//2412 2358//2358 2353//2353 +f 2347//2347 2346//2346 2359//2359 +f 2359//2359 2360//2360 2347//2347 +f 2359//2359 1864//1864 1930//1930 +f 1930//1930 2360//2360 2359//2359 +f 2361//2361 2367//2367 2363//2363 +f 2363//2363 2362//2362 2361//2361 +f 2363//2363 2372//2372 2426//2426 +f 2426//2426 2362//2362 2363//2363 +f 2376//2376 2364//2364 2365//2365 +f 2365//2365 2366//2366 2376//2376 +f 2365//2365 2389//2389 2370//2370 +f 2370//2370 2366//2366 2365//2365 +f 2370//2370 2372//2372 2363//2363 +f 2363//2363 2366//2366 2370//2370 +f 2363//2363 2367//2367 2376//2376 +f 2376//2376 2366//2366 2363//2363 +f 2371//2371 2349//2349 2355//2355 +f 2355//2355 2369//2369 2371//2371 +f 2355//2355 2368//2368 2373//2373 +f 2373//2373 2369//2369 2355//2355 +f 2373//2373 2372//2372 2370//2370 +f 2370//2370 2369//2369 2373//2373 +f 2370//2370 2389//2389 2371//2371 +f 2371//2371 2369//2369 2370//2370 +f 2426//2426 2372//2372 2373//2373 +f 2373//2373 2374//2374 2426//2426 +f 2373//2373 2368//2368 2345//2345 +f 2345//2345 2374//2374 2373//2373 +f 2364//2364 2376//2376 8381//8381 +f 2376//2376 2375//2375 8381//8381 +f 2376//2376 2377//2377 2375//2375 +f 2376//2376 2367//2367 8383//8383 +f 2367//2367 8384//8384 8383//8383 +f 2376//2376 8383//8383 2377//2377 +f 2367//2367 2361//2361 8384//8384 +f 2361//2361 8361//8361 8384//8384 +f 2361//2361 2378//2378 8361//8361 +f 2382//2382 2379//2379 8380//8380 +f 2382//2382 2383//2383 2379//2379 +f 2382//2382 2381//2381 2380//2380 +f 2381//2381 8379//8379 2380//2380 +f 2382//2382 2380//2380 2383//2383 +f 2384//2384 2364//2364 8382//8382 +f 2364//2364 8381//8381 8382//8382 +f 2384//2384 8382//8382 2386//2386 +f 2381//2381 2384//2384 8379//8379 +f 2384//2384 2385//2385 8379//8379 +f 2384//2384 2386//2386 2385//2385 +f 2365//2365 2364//2364 2384//2384 +f 2384//2384 2387//2387 2365//2365 +f 2384//2384 2381//2381 2393//2393 +f 2393//2393 2387//2387 2384//2384 +f 2393//2393 2388//2388 2399//2399 +f 2399//2399 2387//2387 2393//2393 +f 2399//2399 2389//2389 2365//2365 +f 2365//2365 2387//2387 2399//2399 +f 2390//2390 2382//2382 2391//2391 +f 2382//2382 8380//8380 2391//2391 +f 2390//2390 2392//2392 2382//2382 +f 2390//2390 2396//2396 2395//2395 +f 2395//2395 2392//2392 2390//2390 +f 2395//2395 2388//2388 2393//2393 +f 2393//2393 2392//2392 2395//2395 +f 2393//2393 2381//2381 2382//2382 +f 2382//2382 2392//2392 2393//2393 +f 2314//2314 2313//2313 2404//2404 +f 2404//2404 2397//2397 2314//2314 +f 2404//2404 2400//2400 2394//2394 +f 2394//2394 2397//2397 2404//2404 +f 2394//2394 2388//2388 2395//2395 +f 2395//2395 2397//2397 2394//2394 +f 2395//2395 2396//2396 2314//2314 +f 2314//2314 2397//2397 2395//2395 +f 2401//2401 2349//2349 2371//2371 +f 2371//2371 2398//2398 2401//2401 +f 2371//2371 2389//2389 2399//2399 +f 2399//2399 2398//2398 2371//2371 +f 2399//2399 2388//2388 2394//2394 +f 2394//2394 2398//2398 2399//2399 +f 2394//2394 2400//2400 2401//2401 +f 2401//2401 2398//2398 2394//2394 +f 2351//2351 2349//2349 2401//2401 +f 2401//2401 2402//2402 2351//2351 +f 2401//2401 2400//2400 2403//2403 +f 2403//2403 2402//2402 2401//2401 +f 2403//2403 2415//2415 2414//2414 +f 2414//2414 2402//2402 2403//2403 +f 2414//2414 2350//2350 2351//2351 +f 2351//2351 2402//2402 2414//2414 +f 2404//2404 2313//2313 2406//2406 +f 2406//2406 2408//2408 2404//2404 +f 2406//2406 2405//2405 2407//2407 +f 2407//2407 2408//2408 2406//2406 +f 2407//2407 2415//2415 2403//2403 +f 2403//2403 2408//2408 2407//2407 +f 2403//2403 2400//2400 2404//2404 +f 2404//2404 2408//2408 2403//2403 +f 2310//2310 2309//2309 2411//2411 +f 2411//2411 2409//2409 2310//2310 +f 2411//2411 2416//2416 2410//2410 +f 2410//2410 2409//2409 2411//2411 +f 2410//2410 2415//2415 2407//2407 +f 2407//2407 2409//2409 2410//2410 +f 2407//2407 2405//2405 2310//2310 +f 2310//2310 2409//2409 2407//2407 +f 2413//2413 2356//2356 2412//2412 +f 2412//2412 2417//2417 2413//2413 +f 2412//2412 2350//2350 2414//2414 +f 2414//2414 2417//2417 2412//2412 +f 2414//2414 2415//2415 2410//2410 +f 2410//2410 2417//2417 2414//2414 +f 2410//2410 2416//2416 2413//2413 +f 2413//2413 2417//2417 2410//2410 +f 2361//2361 2427//2427 2418//2418 +f 2427//2427 2421//2421 2418//2418 +f 2361//2361 2418//2418 2378//2378 +f 2419//2419 3042//3042 8358//8358 +f 3042//3042 8359//8359 8358//8358 +f 2419//2419 8358//8358 2422//2422 +f 2427//2427 2419//2419 2421//2421 +f 2419//2419 2420//2420 2421//2421 +f 2419//2419 2422//2422 2420//2420 +f 3033//3033 3042//3042 2419//2419 +f 2419//2419 2423//2423 3033//3033 +f 2419//2419 2427//2427 2424//2424 +f 2424//2424 2423//2423 2419//2419 +f 2424//2424 2431//2431 2425//2425 +f 2425//2425 2423//2423 2424//2424 +f 2425//2425 3034//3034 3033//3033 +f 3033//3033 2423//2423 2425//2425 +f 2426//2426 2431//2431 2424//2424 +f 2424//2424 2362//2362 2426//2426 +f 2424//2424 2427//2427 2361//2361 +f 2361//2361 2362//2362 2424//2424 +f 2345//2345 2428//2428 2429//2429 +f 2429//2429 2374//2374 2345//2345 +f 2429//2429 2431//2431 2426//2426 +f 2426//2426 2374//2374 2429//2429 +f 2432//2432 3037//3037 2430//2430 +f 2430//2430 2433//2433 2432//2432 +f 2430//2430 3034//3034 2425//2425 +f 2425//2425 2433//2433 2430//2430 +f 2425//2425 2431//2431 2429//2429 +f 2429//2429 2433//2433 2425//2425 +f 2429//2429 2428//2428 2432//2432 +f 2432//2432 2433//2433 2429//2429 +f 3025//3025 3037//3037 2432//2432 +f 2432//2432 2434//2434 3025//3025 +f 2432//2432 2428//2428 2435//2435 +f 2435//2435 2434//2434 2432//2432 +f 2435//2435 2347//2347 3022//3022 +f 3022//3022 2434//2434 2435//2435 +f 3025//3025 2434//2434 3022//3022 +f 2435//2435 2348//2348 2347//2347 +f 2435//2435 2428//2428 2345//2345 +f 2345//2345 2348//2348 2435//2435 +f 2437//2437 2360//2360 1930//1930 +f 2347//2347 2360//2360 2437//2437 +f 3022//3022 2347//2347 2437//2437 +f 2437//2437 3026//3026 3022//3022 +f 2437//2437 1930//1930 2436//2436 +f 2436//2436 3026//3026 2437//2437 +f 2445//2445 2440//2440 2446//2446 +f 2442//2442 2963//2963 2438//2438 +f 2963//2963 8341//8341 2438//2438 +f 2442//2442 2438//2438 2441//2441 +f 2445//2445 2442//2442 2440//2440 +f 2442//2442 2439//2439 2440//2440 +f 2442//2442 2441//2441 2439//2439 +f 2971//2971 2963//2963 2442//2442 +f 2442//2442 2445//2445 2447//2447 +f 2447//2447 2971//2971 2442//2442 +f 2447//2447 2452//2452 2443//2443 +f 2443//2443 2971//2971 2447//2447 +f 3041//3041 3040//3040 2444//2444 +f 2444//2444 2452//2452 2447//2447 +f 2447//2447 3041//3041 2444//2444 +f 2447//2447 2445//2445 2448//2448 +f 2445//2445 2446//2446 2448//2448 +f 3041//3041 2447//2447 8346//8346 +f 2447//2447 2448//2448 8346//8346 +f 2459//2459 2455//2455 2449//2449 +f 2449//2449 2450//2450 2459//2459 +f 2449//2449 2452//2452 2444//2444 +f 2444//2444 2450//2450 2449//2449 +f 2444//2444 3040//3040 2450//2450 +f 2451//2451 2454//2454 2976//2976 +f 2976//2976 2453//2453 2451//2451 +f 2443//2443 2453//2453 2976//2976 +f 2443//2443 2452//2452 2449//2449 +f 2449//2449 2453//2453 2443//2443 +f 2449//2449 2455//2455 2451//2451 +f 2451//2451 2453//2453 2449//2449 +f 2789//2789 2454//2454 2451//2451 +f 2451//2451 2457//2457 2789//2789 +f 2451//2451 2455//2455 2456//2456 +f 2456//2456 2457//2457 2451//2451 +f 2456//2456 2458//2458 2464//2464 +f 2464//2464 2457//2457 2456//2456 +f 2464//2464 2463//2463 2789//2789 +f 2789//2789 2457//2457 2464//2464 +f 3032//3032 2461//2461 2458//2458 +f 2456//2456 3032//3032 2458//2458 +f 2456//2456 2455//2455 2459//2459 +f 2459//2459 3032//3032 2456//2456 +f 3030//3030 3028//3028 1946//1946 +f 1946//1946 2460//2460 2465//2465 +f 2465//2465 3030//3030 1946//1946 +f 2458//2458 3030//3030 2465//2465 +f 2458//2458 2461//2461 3030//3030 +f 2462//2462 1954//1954 2776//2776 +f 2776//2776 2466//2466 2462//2462 +f 2776//2776 2463//2463 2464//2464 +f 2464//2464 2466//2466 2776//2776 +f 2464//2464 2458//2458 2465//2465 +f 2465//2465 2466//2466 2464//2464 +f 2465//2465 2460//2460 2462//2462 +f 2462//2462 2466//2466 2465//2465 +f 2472//2472 2655//2655 2467//2467 +f 2467//2467 2468//2468 2472//2472 +f 2467//2467 2476//2476 2471//2471 +f 2471//2471 2468//2468 2467//2467 +f 2471//2471 2469//2469 2470//2470 +f 2470//2470 2468//2468 2471//2471 +f 2470//2470 2483//2483 2472//2472 +f 2472//2472 2468//2468 2470//2470 +f 2473//2473 2629//2629 2474//2474 +f 2474//2474 2475//2475 2473//2473 +f 2474//2474 2626//2626 2480//2480 +f 2480//2480 2475//2475 2474//2474 +f 2480//2480 2469//2469 2471//2471 +f 2471//2471 2475//2475 2480//2480 +f 2471//2471 2476//2476 2473//2473 +f 2473//2473 2475//2475 2471//2471 +f 2477//2477 2609//2609 2478//2478 +f 2478//2478 2479//2479 2477//2477 +f 2478//2478 2487//2487 2484//2484 +f 2484//2484 2479//2479 2478//2478 +f 2484//2484 2469//2469 2480//2480 +f 2480//2480 2479//2479 2484//2484 +f 2480//2480 2626//2626 2477//2477 +f 2477//2477 2479//2479 2480//2480 +f 2489//2489 2496//2496 2482//2482 +f 2482//2482 2481//2481 2489//2489 +f 2482//2482 2483//2483 2470//2470 +f 2470//2470 2481//2481 2482//2482 +f 2470//2470 2469//2469 2484//2484 +f 2484//2484 2481//2481 2470//2470 +f 2484//2484 2487//2487 2489//2489 +f 2489//2489 2481//2481 2484//2484 +f 2478//2478 2609//2609 2611//2611 +f 2611//2611 2486//2486 2478//2478 +f 2611//2611 2485//2485 8466//8466 +f 2486//2486 2611//2611 8464//8464 +f 2611//2611 8466//8466 8464//8464 +f 2490//2490 8462//8462 8463//8463 +f 2490//2490 2486//2486 8462//8462 +f 2486//2486 8464//8464 8462//8462 +f 2490//2490 2487//2487 2478//2478 +f 2478//2478 2486//2486 2490//2490 +f 2496//2496 2489//2489 2497//2497 +f 2489//2489 2488//2488 2497//2497 +f 2489//2489 8470//8470 2488//2488 +f 2489//2489 2487//2487 2490//2490 +f 2489//2489 2490//2490 8470//8470 +f 2490//2490 8460//8460 8470//8470 +f 2490//2490 8463//8463 2491//2491 +f 2490//2490 2491//2491 8460//8460 +f 2501//2501 2492//2492 2605//2605 +f 2492//2492 8458//8458 2605//2605 +f 2492//2492 2495//2495 8458//8458 +f 2492//2492 2493//2493 2494//2494 +f 2493//2493 2498//2498 2494//2494 +f 2492//2492 2494//2494 2495//2495 +f 2499//2499 2496//2496 8469//8469 +f 2496//2496 2497//2497 8469//8469 +f 2499//2499 8469//8469 2500//2500 +f 2493//2493 2499//2499 2498//2498 +f 2499//2499 8459//8459 2498//2498 +f 2499//2499 2500//2500 8459//8459 +f 2492//2492 2501//2501 2502//2502 +f 2502//2502 2503//2503 2492//2492 +f 2502//2502 2507//2507 2504//2504 +f 2504//2504 2503//2503 2502//2502 +f 2504//2504 2505//2505 2514//2514 +f 2514//2514 2503//2503 2504//2504 +f 2514//2514 2493//2493 2492//2492 +f 2492//2492 2503//2503 2514//2514 +f 2508//2508 2660//2660 2659//2659 +f 2659//2659 2509//2509 2508//2508 +f 2659//2659 2511//2511 2506//2506 +f 2506//2506 2509//2509 2659//2659 +f 2506//2506 2505//2505 2504//2504 +f 2504//2504 2509//2509 2506//2506 +f 2504//2504 2507//2507 2508//2508 +f 2508//2508 2509//2509 2504//2504 +f 2512//2512 2655//2655 2472//2472 +f 2472//2472 2513//2513 2512//2512 +f 2472//2472 2483//2483 2510//2510 +f 2510//2510 2513//2513 2472//2472 +f 2510//2510 2505//2505 2506//2506 +f 2506//2506 2513//2513 2510//2510 +f 2506//2506 2511//2511 2512//2512 +f 2512//2512 2513//2513 2506//2506 +f 2482//2482 2496//2496 2499//2499 +f 2499//2499 2515//2515 2482//2482 +f 2499//2499 2493//2493 2514//2514 +f 2514//2514 2515//2515 2499//2499 +f 2514//2514 2505//2505 2510//2510 +f 2510//2510 2515//2515 2514//2514 +f 2510//2510 2483//2483 2482//2482 +f 2482//2482 2515//2515 2510//2510 +f 2859//2859 2854//2854 2517//2517 +f 2518//2518 2516//2516 2856//2856 +f 2518//2518 2802//2802 2803//2803 +f 2803//2803 2516//2516 2518//2518 +f 2517//2517 2516//2516 2803//2803 +f 2517//2517 2854//2854 2856//2856 +f 2856//2856 2516//2516 2517//2517 +f 2802//2802 2869//2869 2798//2798 +f 2869//2869 8471//8471 2798//2798 +f 2869//2869 2802//2802 2518//2518 +f 2522//2522 2519//2519 2520//2520 +f 2520//2520 2547//2547 2527//2527 +f 2527//2527 2522//2522 2520//2520 +f 2527//2527 2521//2521 2530//2530 +f 2530//2530 2522//2522 2527//2527 +f 2530//2530 2667//2667 2522//2522 +f 2540//2540 2651//2651 2525//2525 +f 2525//2525 2526//2526 2540//2540 +f 2525//2525 2523//2523 2524//2524 +f 2524//2524 2526//2526 2525//2525 +f 2524//2524 2521//2521 2527//2527 +f 2527//2527 2526//2526 2524//2524 +f 2527//2527 2547//2547 2540//2540 +f 2540//2540 2526//2526 2527//2527 +f 2528//2528 2576//2576 2578//2578 +f 2578//2578 2529//2529 2528//2528 +f 2578//2578 2532//2532 2531//2531 +f 2531//2531 2529//2529 2578//2578 +f 2531//2531 2521//2521 2524//2524 +f 2524//2524 2529//2529 2531//2531 +f 2524//2524 2523//2523 2528//2528 +f 2528//2528 2529//2529 2524//2524 +f 2574//2574 2670//2670 2533//2533 +f 2533//2533 2667//2667 2530//2530 +f 2530//2530 2521//2521 2531//2531 +f 2531//2531 2533//2533 2530//2530 +f 2531//2531 2532//2532 2574//2574 +f 2574//2574 2533//2533 2531//2531 +f 2562//2562 2538//2538 2534//2534 +f 2534//2534 2536//2536 2562//2562 +f 2534//2534 2535//2535 2545//2545 +f 2545//2545 2536//2536 2534//2534 +f 2545//2545 2690//2690 2536//2536 +f 2539//2539 2556//2556 2640//2640 +f 2640//2640 2537//2537 2539//2539 +f 2640//2640 2542//2542 2543//2543 +f 2543//2543 2537//2537 2640//2640 +f 2543//2543 2535//2535 2534//2534 +f 2534//2534 2537//2537 2543//2543 +f 2534//2534 2538//2538 2539//2539 +f 2539//2539 2537//2537 2534//2534 +f 2646//2646 2651//2651 2540//2540 +f 2540//2540 2541//2541 2646//2646 +f 2540//2540 2547//2547 2546//2546 +f 2546//2546 2541//2541 2540//2540 +f 2546//2546 2535//2535 2543//2543 +f 2543//2543 2541//2541 2546//2546 +f 2543//2543 2542//2542 2646//2646 +f 2646//2646 2541//2541 2543//2543 +f 2520//2520 2519//2519 2544//2544 +f 2544//2544 2690//2690 2545//2545 +f 2545//2545 2535//2535 2546//2546 +f 2546//2546 2544//2544 2545//2545 +f 2546//2546 2547//2547 2520//2520 +f 2520//2520 2544//2544 2546//2546 +f 2688//2688 2555//2555 2548//2548 +f 2548//2548 2549//2549 2688//2688 +f 2548//2548 2557//2557 2550//2550 +f 2550//2550 2549//2549 2548//2548 +f 2550//2550 2686//2686 2549//2549 +f 2563//2563 2551//2551 2553//2553 +f 2553//2553 2552//2552 2563//2563 +f 2553//2553 2559//2559 2554//2554 +f 2554//2554 2552//2552 2553//2553 +f 2554//2554 2557//2557 2548//2548 +f 2548//2548 2552//2552 2554//2554 +f 2548//2548 2555//2555 2563//2563 +f 2563//2563 2552//2552 2548//2548 +f 2634//2634 2556//2556 2539//2539 +f 2539//2539 2560//2560 2634//2634 +f 2539//2539 2538//2538 2558//2558 +f 2558//2558 2560//2560 2539//2539 +f 2558//2558 2557//2557 2554//2554 +f 2554//2554 2560//2560 2558//2558 +f 2554//2554 2559//2559 2634//2634 +f 2634//2634 2560//2560 2554//2554 +f 2561//2561 2686//2686 2550//2550 +f 2550//2550 2557//2557 2558//2558 +f 2558//2558 2561//2561 2550//2550 +f 2558//2558 2538//2538 2562//2562 +f 2562//2562 2561//2561 2558//2558 +f 2617//2617 2551//2551 2563//2563 +f 2563//2563 2566//2566 2617//2617 +f 2563//2563 2555//2555 2568//2568 +f 2568//2568 2566//2566 2563//2563 +f 2568//2568 2564//2564 8461//8461 +f 2566//2566 2568//2568 2565//2565 +f 2568//2568 8461//8461 2565//2565 +f 2617//2617 2567//2567 2616//2616 +f 2617//2617 2566//2566 2567//2567 +f 2566//2566 2565//2565 2567//2567 +f 2568//2568 8450//8450 2564//2564 +f 2568//2568 2555//2555 2688//2688 +f 2568//2568 2688//2688 8450//8450 +f 2688//2688 8449//8449 8450//8450 +f 2681//2681 2582//2582 8453//8453 +f 2582//2582 2569//2569 8453//8453 +f 2681//2681 8453//8453 2570//2570 +f 2571//2571 2572//2572 8455//8455 +f 2572//2572 8454//8454 8455//8455 +f 2571//2571 8455//8455 8452//8452 +f 2582//2582 2571//2571 2569//2569 +f 2571//2571 2573//2573 2569//2569 +f 2571//2571 8452//8452 2573//2573 +f 2674//2674 2670//2670 2574//2574 +f 2574//2574 2532//2532 2579//2579 +f 2579//2579 2674//2674 2574//2574 +f 2579//2579 2575//2575 2679//2679 +f 2679//2679 2674//2674 2579//2579 +f 2578//2578 2576//2576 2586//2586 +f 2586//2586 2577//2577 2578//2578 +f 2586//2586 2590//2590 2584//2584 +f 2584//2584 2577//2577 2586//2586 +f 2584//2584 2575//2575 2579//2579 +f 2579//2579 2577//2577 2584//2584 +f 2579//2579 2532//2532 2578//2578 +f 2578//2578 2577//2577 2579//2579 +f 2580//2580 2572//2572 2571//2571 +f 2571//2571 2581//2581 2580//2580 +f 2571//2571 2582//2582 2583//2583 +f 2583//2583 2581//2581 2571//2571 +f 2583//2583 2575//2575 2584//2584 +f 2584//2584 2581//2581 2583//2583 +f 2584//2584 2590//2590 2580//2580 +f 2580//2580 2581//2581 2584//2584 +f 2679//2679 2575//2575 2583//2583 +f 2583//2583 2585//2585 2679//2679 +f 2583//2583 2582//2582 2681//2681 +f 2681//2681 2585//2585 2583//2583 +f 2586//2586 2576//2576 2588//2588 +f 2588//2588 2591//2591 2586//2586 +f 2588//2588 2587//2587 2589//2589 +f 2589//2589 2591//2591 2588//2588 +f 2589//2589 2600//2600 2592//2592 +f 2592//2592 2591//2591 2589//2589 +f 2592//2592 2590//2590 2586//2586 +f 2586//2586 2591//2591 2592//2592 +f 2593//2593 2660//2660 2508//2508 +f 2508//2508 2594//2594 2593//2593 +f 2508//2508 2507//2507 2598//2598 +f 2598//2598 2594//2594 2508//2508 +f 2598//2598 2600//2600 2589//2589 +f 2589//2589 2594//2594 2598//2598 +f 2589//2589 2587//2587 2593//2593 +f 2593//2593 2594//2594 2589//2589 +f 2502//2502 2501//2501 2595//2595 +f 2595//2595 2597//2597 2502//2502 +f 2595//2595 2606//2606 2596//2596 +f 2596//2596 2597//2597 2595//2595 +f 2596//2596 2600//2600 2598//2598 +f 2598//2598 2597//2597 2596//2596 +f 2598//2598 2507//2507 2502//2502 +f 2502//2502 2597//2597 2598//2598 +f 2601//2601 2572//2572 2580//2580 +f 2580//2580 2599//2599 2601//2601 +f 2580//2580 2590//2590 2592//2592 +f 2592//2592 2599//2599 2580//2580 +f 2592//2592 2600//2600 2596//2596 +f 2596//2596 2599//2599 2592//2592 +f 2596//2596 2606//2606 2601//2601 +f 2601//2601 2599//2599 2596//2596 +f 2572//2572 2601//2601 8454//8454 +f 2601//2601 8456//8456 8454//8454 +f 2601//2601 2603//2603 8456//8456 +f 2601//2601 2606//2606 2602//2602 +f 2606//2606 2607//2607 2602//2602 +f 2601//2601 2602//2602 2603//2603 +f 2595//2595 2501//2501 2604//2604 +f 2501//2501 2605//2605 2604//2604 +f 2595//2595 2604//2604 2608//2608 +f 2606//2606 2595//2595 2607//2607 +f 2595//2595 8457//8457 2607//2607 +f 2595//2595 2608//2608 8457//8457 +f 2611//2611 2609//2609 2610//2610 +f 2610//2610 2615//2615 2611//2611 +f 2610//2610 2620//2620 2613//2613 +f 2613//2613 2615//2615 2610//2610 +f 2613//2613 2612//2612 8465//8465 +f 2615//2615 2613//2613 8467//8467 +f 2613//2613 8465//8465 8467//8467 +f 2611//2611 2614//2614 2485//2485 +f 2611//2611 2615//2615 2614//2614 +f 2615//2615 8467//8467 2614//2614 +f 2622//2622 2551//2551 2617//2617 +f 2617//2617 2621//2621 2622//2622 +f 2617//2617 2616//2616 8468//8468 +f 2621//2621 2617//2617 2618//2618 +f 2617//2617 8468//8468 2618//2618 +f 2613//2613 2619//2619 2612//2612 +f 2613//2613 2621//2621 2619//2619 +f 2621//2621 2618//2618 2619//2619 +f 2613//2613 2620//2620 2622//2622 +f 2622//2622 2621//2621 2613//2613 +f 2553//2553 2551//2551 2622//2622 +f 2622//2622 2623//2623 2553//2553 +f 2622//2622 2620//2620 2628//2628 +f 2628//2628 2623//2623 2622//2622 +f 2628//2628 2635//2635 2624//2624 +f 2624//2624 2623//2623 2628//2628 +f 2624//2624 2559//2559 2553//2553 +f 2553//2553 2623//2623 2624//2624 +f 2610//2610 2609//2609 2477//2477 +f 2477//2477 2625//2625 2610//2610 +f 2477//2477 2626//2626 2627//2627 +f 2627//2627 2625//2625 2477//2477 +f 2627//2627 2635//2635 2628//2628 +f 2628//2628 2625//2625 2627//2627 +f 2628//2628 2620//2620 2610//2610 +f 2610//2610 2625//2625 2628//2628 +f 2474//2474 2629//2629 2630//2630 +f 2630//2630 2632//2632 2474//2474 +f 2630//2630 2631//2631 2633//2633 +f 2633//2633 2632//2632 2630//2630 +f 2633//2633 2635//2635 2627//2627 +f 2627//2627 2632//2632 2633//2633 +f 2627//2627 2626//2626 2474//2474 +f 2474//2474 2632//2632 2627//2627 +f 2637//2637 2556//2556 2634//2634 +f 2634//2634 2636//2636 2637//2637 +f 2634//2634 2559//2559 2624//2624 +f 2624//2624 2636//2636 2634//2634 +f 2624//2624 2635//2635 2633//2633 +f 2633//2633 2636//2636 2624//2624 +f 2633//2633 2631//2631 2637//2637 +f 2637//2637 2636//2636 2633//2633 +f 2640//2640 2556//2556 2637//2637 +f 2637//2637 2638//2638 2640//2640 +f 2637//2637 2631//2631 2639//2639 +f 2639//2639 2638//2638 2637//2637 +f 2639//2639 2643//2643 2648//2648 +f 2648//2648 2638//2638 2639//2639 +f 2648//2648 2542//2542 2640//2640 +f 2640//2640 2638//2638 2648//2648 +f 2630//2630 2629//2629 2473//2473 +f 2473//2473 2641//2641 2630//2630 +f 2473//2473 2476//2476 2642//2642 +f 2642//2642 2641//2641 2473//2473 +f 2642//2642 2643//2643 2639//2639 +f 2639//2639 2641//2641 2642//2642 +f 2639//2639 2631//2631 2630//2630 +f 2630//2630 2641//2641 2639//2639 +f 2467//2467 2655//2655 2658//2658 +f 2658//2658 2644//2644 2467//2467 +f 2658//2658 2650//2650 2649//2649 +f 2649//2649 2644//2644 2658//2658 +f 2649//2649 2643//2643 2642//2642 +f 2642//2642 2644//2644 2649//2649 +f 2642//2642 2476//2476 2467//2467 +f 2467//2467 2644//2644 2642//2642 +f 2645//2645 2651//2651 2646//2646 +f 2646//2646 2647//2647 2645//2645 +f 2646//2646 2542//2542 2648//2648 +f 2648//2648 2647//2647 2646//2646 +f 2648//2648 2643//2643 2649//2649 +f 2649//2649 2647//2647 2648//2648 +f 2649//2649 2650//2650 2645//2645 +f 2645//2645 2647//2647 2649//2649 +f 2525//2525 2651//2651 2645//2645 +f 2645//2645 2652//2652 2525//2525 +f 2645//2645 2650//2650 2653//2653 +f 2653//2653 2652//2652 2645//2645 +f 2653//2653 2662//2662 2654//2654 +f 2654//2654 2652//2652 2653//2653 +f 2654//2654 2523//2523 2525//2525 +f 2525//2525 2652//2652 2654//2654 +f 2658//2658 2655//2655 2512//2512 +f 2512//2512 2657//2657 2658//2658 +f 2512//2512 2511//2511 2656//2656 +f 2656//2656 2657//2657 2512//2512 +f 2656//2656 2662//2662 2653//2653 +f 2653//2653 2657//2657 2656//2656 +f 2653//2653 2650//2650 2658//2658 +f 2658//2658 2657//2657 2653//2653 +f 2659//2659 2660//2660 2593//2593 +f 2593//2593 2661//2661 2659//2659 +f 2593//2593 2587//2587 2663//2663 +f 2663//2663 2661//2661 2593//2593 +f 2663//2663 2662//2662 2656//2656 +f 2656//2656 2661//2661 2663//2663 +f 2656//2656 2511//2511 2659//2659 +f 2659//2659 2661//2661 2656//2656 +f 2588//2588 2576//2576 2528//2528 +f 2528//2528 2664//2664 2588//2588 +f 2528//2528 2523//2523 2654//2654 +f 2654//2654 2664//2664 2528//2528 +f 2654//2654 2662//2662 2663//2663 +f 2663//2663 2664//2664 2654//2654 +f 2663//2663 2587//2587 2588//2588 +f 2588//2588 2664//2664 2663//2663 +f 2665//2665 2666//2666 2519//2519 +f 2665//2665 2667//2667 3104//3104 +f 3104//3104 2666//2666 2665//2665 +f 2665//2665 2522//2522 2667//2667 +f 2519//2519 2522//2522 2665//2665 +f 2669//2669 2533//2533 2670//2670 +f 2667//2667 2533//2533 2669//2669 +f 2671//2671 2672//2672 2668//2668 +f 2668//2668 2669//2669 2671//2671 +f 3104//3104 2669//2669 2668//2668 +f 3104//3104 2667//2667 2669//2669 +f 2669//2669 2670//2670 2671//2671 +f 3095//3095 2672//2672 2671//2671 +f 2671//2671 2673//2673 3095//3095 +f 2671//2671 2670//2670 2673//2673 +f 2673//2673 2679//2679 2678//2678 +f 2678//2678 2677//2677 3095//3095 +f 3095//3095 2673//2673 2678//2678 +f 2673//2673 2674//2674 2679//2679 +f 2670//2670 2674//2674 2673//2673 +f 2675//2675 3087//3087 2676//2676 +f 2676//2676 2585//2585 2675//2675 +f 2676//2676 2677//2677 2678//2678 +f 2678//2678 2585//2585 2676//2676 +f 2678//2678 2679//2679 2585//2585 +f 2585//2585 2681//2681 2675//2675 +f 3087//3087 2675//2675 3088//3088 +f 2675//2675 2680//2680 3088//3088 +f 2675//2675 8451//8451 2680//2680 +f 2675//2675 2681//2681 8451//8451 +f 2681//2681 2570//2570 8451//8451 +f 2685//2685 3119//3119 2682//2682 +f 3119//3119 3127//3127 2682//2682 +f 2685//2685 2682//2682 8448//8448 +f 2688//2688 2685//2685 8449//8449 +f 2685//2685 8448//8448 8449//8449 +f 2684//2684 3119//3119 2685//2685 +f 2685//2685 2688//2688 2683//2683 +f 2683//2683 2684//2684 2685//2685 +f 2683//2683 2686//2686 2687//2687 +f 2687//2687 2684//2684 2683//2683 +f 2687//2687 3120//3120 2684//2684 +f 2683//2683 2549//2549 2686//2686 +f 2688//2688 2549//2549 2683//2683 +f 3122//3122 2561//2561 2689//2689 +f 3122//3122 3120//3120 2687//2687 +f 2687//2687 2561//2561 3122//3122 +f 2687//2687 2686//2686 2561//2561 +f 2561//2561 2562//2562 2689//2689 +f 2689//2689 2562//2562 2691//2691 +f 2691//2691 3111//3111 2689//2689 +f 2690//2690 3111//3111 2691//2691 +f 2691//2691 2536//2536 2690//2690 +f 2562//2562 2536//2536 2691//2691 +f 2544//2544 2692//2692 2690//2690 +f 2519//2519 2692//2692 2544//2544 +f 2698//2698 2694//2694 2730//2730 +f 2698//2698 2697//2697 2693//2693 +f 2693//2693 2694//2694 2698//2698 +f 2693//2693 2695//2695 2694//2694 +f 2731//2731 2696//2696 3109//3109 +f 3109//3109 3110//3110 2701//2701 +f 2701//2701 2697//2697 2698//2698 +f 2698//2698 3109//3109 2701//2701 +f 2698//2698 2730//2730 2731//2731 +f 2731//2731 3109//3109 2698//2698 +f 2699//2699 2703//2703 2700//2700 +f 2703//2703 2697//2697 2701//2701 +f 2701//2701 3110//3110 2700//2700 +f 2700//2700 2703//2703 2701//2701 +f 2704//2704 2815//2815 2702//2702 +f 2702//2702 2705//2705 2704//2704 +f 2702//2702 2695//2695 2693//2693 +f 2693//2693 2705//2705 2702//2702 +f 2693//2693 2697//2697 2703//2703 +f 2703//2703 2705//2705 2693//2693 +f 2703//2703 2699//2699 2704//2704 +f 2704//2704 2705//2705 2703//2703 +f 2984//2984 2815//2815 2704//2704 +f 2704//2704 2706//2706 2984//2984 +f 2704//2704 2699//2699 2706//2706 +f 2984//2984 2706//2706 2985//2985 +f 3103//3103 2706//2706 2699//2699 +f 2985//2985 2706//2706 3103//3103 +f 2710//2710 2987//2987 2708//2708 +f 2710//2710 2707//2707 2987//2987 +f 2708//2708 2987//2987 2985//2985 +f 2707//2707 8442//8442 2709//2709 +f 2707//2707 2710//2710 8442//8442 +f 2710//2710 2711//2711 8442//8442 +f 2710//2710 3091//3091 2711//2711 +f 2719//2719 2715//2715 3131//3131 +f 3131//3131 2715//2715 3130//3130 +f 2715//2715 2712//2712 3130//3130 +f 2715//2715 2714//2714 2712//2712 +f 2715//2715 2794//2794 2714//2714 +f 2794//2794 2713//2713 2714//2714 +f 2715//2715 2719//2719 2795//2795 +f 2795//2795 2794//2794 2715//2715 +f 2795//2795 2719//2719 2718//2718 +f 2718//2718 2716//2716 2795//2795 +f 2718//2718 2720//2720 2724//2724 +f 2724//2724 2716//2716 2718//2718 +f 2724//2724 2717//2717 2716//2716 +f 3125//3125 2718//2718 2719//2719 +f 2720//2720 2718//2718 3125//3125 +f 2725//2725 2721//2721 2722//2722 +f 2720//2720 2721//2721 2725//2725 +f 2723//2723 2717//2717 2724//2724 +f 2724//2724 2720//2720 2725//2725 +f 2725//2725 2723//2723 2724//2724 +f 2725//2725 2722//2722 2813//2813 +f 2813//2813 2723//2723 2725//2725 +f 2813//2813 2728//2728 2814//2814 +f 2813//2813 2722//2722 2728//2728 +f 2728//2728 2726//2726 2727//2727 +f 2814//2814 2728//2728 2727//2727 +f 2728//2728 2729//2729 2726//2726 +f 2722//2722 2729//2729 2728//2728 +f 3113//3113 2696//2696 2731//2731 +f 2731//2731 2730//2730 2732//2732 +f 2732//2732 3113//3113 2731//2731 +f 2726//2726 3113//3113 2732//2732 +f 2727//2727 2726//2726 2732//2732 +f 2732//2732 2733//2733 2727//2727 +f 2730//2730 2733//2733 2732//2732 +f 2734//2734 2820//2820 2819//2819 +f 2819//2819 2738//2738 2734//2734 +f 2819//2819 2740//2740 2736//2736 +f 2736//2736 2738//2738 2819//2819 +f 2736//2736 2746//2746 2735//2735 +f 2735//2735 2738//2738 2736//2736 +f 2735//2735 2737//2737 2734//2734 +f 2734//2734 2738//2738 2735//2735 +f 2739//2739 2745//2745 2744//2744 +f 2744//2744 2746//2746 2736//2736 +f 2736//2736 2739//2739 2744//2744 +f 2736//2736 2740//2740 2739//2739 +f 2743//2743 2741//2741 2772//2772 +f 2742//2742 2741//2741 2743//2743 +f 2742//2742 2746//2746 2744//2744 +f 2744//2744 2741//2741 2742//2742 +f 2744//2744 2745//2745 2772//2772 +f 2772//2772 2741//2741 2744//2744 +f 2735//2735 2746//2746 2742//2742 +f 2742//2742 2950//2950 2735//2735 +f 2957//2957 2747//2747 2958//2958 +f 2747//2747 8334//8334 2958//2958 +f 2747//2747 8333//8333 8334//8334 +f 2747//2747 2755//2755 8333//8333 +f 2771//2771 2745//2745 2748//2748 +f 2748//2748 2752//2752 2754//2754 +f 2754//2754 2771//2771 2748//2748 +f 2770//2770 2771//2771 2754//2754 +f 2767//2767 2762//2762 2749//2749 +f 2749//2749 2752//2752 2748//2748 +f 2748//2748 2767//2767 2749//2749 +f 2748//2748 2745//2745 2823//2823 +f 2823//2823 2767//2767 2748//2748 +f 2750//2750 2751//2751 8332//8332 +f 2750//2750 8433//8433 2751//2751 +f 2750//2750 2752//2752 2749//2749 +f 2750//2750 2749//2749 8433//8433 +f 2749//2749 8435//8435 8433//8433 +f 2749//2749 2762//2762 8435//8435 +f 2762//2762 8436//8436 8435//8435 +f 2747//2747 2957//2957 2970//2970 +f 2970//2970 2753//2753 2747//2747 +f 2970//2970 2770//2770 2754//2754 +f 2754//2754 2753//2753 2970//2970 +f 2754//2754 2752//2752 2750//2750 +f 2750//2750 2753//2753 2754//2754 +f 2747//2747 2750//2750 2755//2755 +f 2750//2750 8332//8332 2755//2755 +f 2747//2747 2753//2753 2750//2750 +f 2821//2821 3004//3004 2983//2983 +f 2983//2983 2756//2756 2821//2821 +f 2983//2983 2761//2761 2760//2760 +f 2760//2760 2756//2756 2983//2983 +f 2760//2760 2764//2764 2757//2757 +f 2757//2757 2756//2756 2760//2760 +f 2757//2757 2822//2822 2821//2821 +f 2821//2821 2756//2756 2757//2757 +f 2978//2978 2977//2977 2768//2768 +f 2768//2768 2758//2758 2978//2978 +f 2765//2765 2768//2768 2766//2766 +f 2768//2768 2759//2759 2766//2766 +f 2765//2765 2758//2758 2768//2768 +f 2765//2765 2764//2764 2760//2760 +f 2760//2760 2758//2758 2765//2765 +f 2760//2760 2761//2761 2978//2978 +f 2978//2978 2758//2758 2760//2760 +f 2762//2762 2763//2763 8436//8436 +f 2762//2762 2764//2764 2765//2765 +f 2762//2762 2765//2765 2763//2763 +f 2765//2765 8437//8437 2763//2763 +f 2765//2765 2766//2766 8437//8437 +f 2767//2767 2823//2823 2822//2822 +f 2757//2757 2767//2767 2822//2822 +f 2757//2757 2764//2764 2762//2762 +f 2762//2762 2767//2767 2757//2757 +f 2768//2768 2977//2977 8438//8438 +f 2977//2977 2989//2989 8438//8438 +f 2768//2768 8438//8438 2769//2769 +f 2768//2768 2769//2769 2759//2759 +f 2745//2745 2739//2739 2823//2823 +f 2770//2770 2772//2772 2771//2771 +f 2771//2771 2772//2772 2745//2745 +f 2773//2773 2743//2743 2772//2772 +f 2772//2772 2770//2770 2773//2773 +f 2776//2776 1954//1954 2775//2775 +f 2775//2775 2777//2777 2776//2776 +f 2775//2775 2780//2780 2774//2774 +f 2774//2774 2777//2777 2775//2775 +f 2774//2774 2791//2791 2790//2790 +f 2790//2790 2777//2777 2774//2774 +f 2790//2790 2463//2463 2776//2776 +f 2776//2776 2777//2777 2790//2790 +f 2781//2781 1657//1657 2778//2778 +f 2778//2778 2782//2782 2781//2781 +f 2778//2778 2779//2779 2788//2788 +f 2788//2788 2782//2782 2778//2778 +f 2788//2788 2791//2791 2774//2774 +f 2774//2774 2782//2782 2788//2788 +f 2774//2774 2780//2780 2781//2781 +f 2781//2781 2782//2782 2774//2774 +f 2787//2787 2783//2783 2784//2784 +f 2784//2784 2786//2786 2787//2787 +f 2784//2784 2785//2785 2792//2792 +f 2792//2792 2786//2786 2784//2784 +f 2792//2792 2791//2791 2788//2788 +f 2788//2788 2786//2786 2792//2792 +f 2788//2788 2779//2779 2787//2787 +f 2787//2787 2786//2786 2788//2788 +f 3000//3000 2454//2454 2789//2789 +f 2789//2789 2793//2793 3000//3000 +f 2789//2789 2463//2463 2790//2790 +f 2790//2790 2793//2793 2789//2789 +f 2790//2790 2791//2791 2792//2792 +f 2792//2792 2793//2793 2790//2790 +f 2792//2792 2785//2785 3000//3000 +f 3000//3000 2793//2793 2792//2792 +f 2794//2794 2795//2795 2805//2805 +f 2805//2805 2799//2799 2794//2794 +f 2799//2799 2796//2796 2797//2797 +f 2794//2794 8441//8441 2713//2713 +f 2794//2794 2799//2799 8441//8441 +f 2799//2799 2797//2797 8441//8441 +f 2802//2802 2798//2798 2800//2800 +f 2799//2799 2805//2805 2802//2802 +f 2799//2799 2802//2802 2796//2796 +f 2802//2802 2800//2800 2796//2796 +f 2723//2723 2813//2813 2812//2812 +f 2801//2801 2723//2723 2812//2812 +f 2801//2801 2517//2517 2717//2717 +f 2717//2717 2723//2723 2801//2801 +f 2801//2801 2859//2859 2517//2517 +f 2801//2801 2812//2812 2809//2809 +f 2809//2809 2859//2859 2801//2801 +f 2802//2802 2805//2805 2804//2804 +f 2804//2804 2803//2803 2802//2802 +f 2517//2517 2803//2803 2804//2804 +f 2805//2805 2795//2795 2716//2716 +f 2717//2717 2517//2517 2804//2804 +f 2804//2804 2716//2716 2717//2717 +f 2805//2805 2716//2716 2804//2804 +f 2733//2733 2730//2730 2806//2806 +f 2807//2807 2727//2727 2733//2733 +f 2806//2806 2808//2808 1615//1615 +f 1615//1615 2733//2733 2806//2806 +f 1615//1615 1612//1612 2811//2811 +f 2811//2811 2733//2733 1615//1615 +f 2811//2811 2807//2807 2733//2733 +f 2809//2809 2812//2812 2810//2810 +f 2810//2810 1610//1610 2809//2809 +f 2810//2810 2807//2807 2811//2811 +f 2811//2811 1610//1610 2810//2810 +f 2811//2811 1612//1612 1610//1610 +f 2812//2812 2813//2813 2814//2814 +f 2814//2814 2810//2810 2812//2812 +f 2814//2814 2727//2727 2807//2807 +f 2807//2807 2810//2810 2814//2814 +f 2702//2702 2815//2815 2816//2816 +f 2817//2817 2702//2702 2816//2816 +f 2695//2695 2702//2702 2817//2817 +f 2818//2818 2808//2808 2806//2806 +f 2806//2806 2694//2694 2818//2818 +f 2818//2818 2694//2694 2695//2695 +f 2806//2806 2730//2730 2694//2694 +f 2819//2819 2820//2820 3004//3004 +f 2821//2821 2819//2819 3004//3004 +f 2821//2821 2822//2822 2740//2740 +f 2740//2740 2819//2819 2821//2821 +f 2822//2822 2823//2823 2739//2739 +f 2822//2822 2739//2739 2740//2740 +f 2824//2824 8330//8330 8329//8329 +f 2824//2824 2829//2829 8330//8330 +f 2829//2829 8331//8331 8330//8330 +f 3771//3771 2830//2830 2825//2825 +f 2830//2830 2826//2826 2825//2825 +f 2830//2830 8327//8327 2826//2826 +f 2873//2873 2827//2827 2831//2831 +f 2831//2831 2828//2828 2873//2873 +f 2831//2831 2829//2829 2824//2824 +f 2824//2824 2828//2828 2831//2831 +f 2830//2830 2824//2824 8327//8327 +f 2824//2824 8329//8329 8327//8327 +f 2830//2830 2828//2828 2824//2824 +f 2830//2830 3771//3771 2873//2873 +f 2873//2873 2828//2828 2830//2830 +f 1731//1731 1700//1700 2837//2837 +f 2831//2831 2827//2827 2833//2833 +f 2833//2833 2834//2834 2831//2831 +f 2833//2833 2839//2839 2832//2832 +f 2832//2832 2834//2834 2833//2833 +f 2832//2832 2849//2849 2835//2835 +f 2835//2835 2834//2834 2832//2832 +f 2835//2835 2829//2829 2831//2831 +f 2831//2831 2834//2834 2835//2835 +f 2840//2840 1733//1733 2836//2836 +f 2836//2836 2838//2838 2840//2840 +f 2836//2836 1731//1731 2837//2837 +f 2837//2837 2838//2838 2836//2836 +f 2837//2837 2849//2849 2832//2832 +f 2832//2832 2838//2838 2837//2837 +f 2832//2832 2839//2839 2840//2840 +f 2840//2840 2838//2838 2832//2832 +f 3760//3760 2841//2841 2867//2867 +f 2867//2867 2866//2866 3760//3760 +f 3760//3760 2866//2866 2843//2843 +f 2866//2866 2862//2862 2861//2861 +f 1760//1760 2886//2886 2889//2889 +f 2889//2889 2845//2845 1760//1760 +f 2889//2889 2893//2893 2845//2845 +f 2866//2866 2861//2861 1760//1760 +f 1760//1760 2845//2845 2866//2866 +f 2893//2893 3763//3763 2842//2842 +f 2842//2842 2844//2844 2893//2893 +f 2842//2842 3760//3760 2843//2843 +f 2843//2843 2844//2844 2842//2842 +f 2843//2843 2866//2866 2845//2845 +f 2845//2845 2844//2844 2843//2843 +f 2893//2893 2844//2844 2845//2845 +f 2847//2847 8328//8328 8434//8434 +f 3754//3754 3756//3756 2846//2846 +f 3756//3756 8322//8322 2846//2846 +f 3754//3754 2846//2846 8325//8325 +f 3754//3754 8325//8325 8473//8473 +f 2847//2847 3754//3754 8328//8328 +f 3754//3754 8473//8473 8328//8328 +f 2829//2829 1998//1998 2001//2001 +f 2829//2829 2001//2001 8331//8331 +f 2001//2001 8430//8430 8331//8331 +f 2001//2001 8431//8431 8430//8430 +f 1698//1698 1697//1697 2848//2848 +f 2852//2852 2848//2848 1995//1995 +f 1698//1698 2848//2848 2852//2852 +f 2835//2835 2849//2849 2853//2853 +f 2853//2853 1995//1995 2850//2850 +f 2850//2850 2835//2835 2853//2853 +f 2850//2850 1998//1998 2829//2829 +f 2829//2829 2835//2835 2850//2850 +f 2837//2837 1700//1700 1699//1699 +f 1699//1699 2851//2851 2837//2837 +f 1699//1699 1698//1698 2852//2852 +f 2852//2852 2851//2851 1699//1699 +f 2852//2852 1995//1995 2853//2853 +f 2853//2853 2851//2851 2852//2852 +f 2853//2853 2849//2849 2837//2837 +f 2837//2837 2851//2851 2853//2853 +f 2856//2856 2854//2854 2858//2858 +f 2855//2855 2856//2856 2858//2858 +f 2518//2518 2856//2856 2855//2855 +f 2859//2859 2809//2809 1683//1683 +f 1683//1683 2857//2857 2859//2859 +f 1683//1683 1689//1689 2864//2864 +f 2864//2864 2857//2857 1683//1683 +f 2858//2858 2857//2857 2864//2864 +f 2858//2858 2854//2854 2859//2859 +f 2859//2859 2857//2857 2858//2858 +f 2860//2860 2861//2861 2862//2862 +f 2862//2862 2866//2866 2863//2863 +f 2863//2863 2858//2858 2864//2864 +f 2864//2864 2862//2862 2863//2863 +f 2864//2864 1689//1689 2860//2860 +f 2860//2860 2862//2862 2864//2864 +f 2867//2867 2841//2841 2865//2865 +f 2865//2865 2855//2855 2867//2867 +f 2865//2865 2518//2518 2855//2855 +f 2855//2855 2858//2858 2863//2863 +f 2863//2863 2866//2866 2867//2867 +f 2867//2867 2855//2855 2863//2863 +f 2865//2865 2841//2841 2868//2868 +f 2868//2868 2869//2869 2865//2865 +f 2868//2868 2870//2870 2871//2871 +f 2869//2869 2868//2868 8471//8471 +f 2868//2868 2871//2871 8471//8471 +f 2869//2869 2518//2518 2865//2865 +f 2879//2879 2827//2827 2873//2873 +f 2873//2873 2874//2874 2879//2879 +f 2873//2873 3771//3771 2872//2872 +f 3771//3771 8326//8326 2872//2872 +f 2874//2874 2873//2873 8323//8323 +f 2873//2873 2872//2872 8323//8323 +f 2874//2874 8323//8323 8321//8321 +f 2874//2874 2882//2882 2879//2879 +f 2882//2882 2874//2874 1844//1844 +f 1844//1844 2875//2875 8318//8318 +f 1844//1844 2874//2874 2875//2875 +f 2874//2874 8321//8321 2875//2875 +f 1797//1797 1733//1733 2840//2840 +f 2840//2840 2878//2878 1797//1797 +f 2840//2840 2839//2839 2876//2876 +f 2876//2876 2878//2878 2840//2840 +f 2876//2876 2885//2885 2877//2877 +f 2877//2877 2878//2878 2876//2876 +f 2877//2877 2883//2883 1797//1797 +f 1797//1797 2878//2878 2877//2877 +f 2833//2833 2827//2827 2879//2879 +f 2879//2879 2880//2880 2833//2833 +f 2879//2879 2882//2882 2881//2881 +f 2881//2881 2880//2880 2879//2879 +f 2881//2881 2885//2885 2876//2876 +f 2876//2876 2880//2880 2881//2881 +f 2876//2876 2839//2839 2833//2833 +f 2833//2833 2880//2880 2876//2876 +f 2881//2881 1830//1830 2885//2885 +f 2882//2882 1830//1830 2881//2881 +f 2884//2884 2883//2883 2877//2877 +f 2877//2877 1838//1838 2884//2884 +f 2885//2885 1838//1838 2877//2877 +f 3780//3780 3763//3763 2893//2893 +f 2892//2892 3780//3780 2893//2893 +f 2892//2892 2896//2896 3782//3782 +f 3782//3782 3780//3780 2892//2892 +f 2889//2889 2886//2886 2887//2887 +f 2887//2887 2888//2888 2889//2889 +f 2887//2887 2890//2890 2891//2891 +f 2891//2891 2888//2888 2887//2887 +f 2891//2891 2896//2896 2892//2892 +f 2892//2892 2888//2888 2891//2891 +f 2892//2892 2893//2893 2889//2889 +f 2889//2889 2888//2888 2892//2892 +f 2897//2897 1789//1789 2337//2337 +f 2337//2337 2894//2894 2897//2897 +f 2337//2337 2336//2336 2895//2895 +f 2895//2895 2894//2894 2337//2337 +f 2895//2895 2896//2896 2891//2891 +f 2891//2891 2894//2894 2895//2895 +f 2891//2891 2890//2890 2897//2897 +f 2897//2897 2894//2894 2891//2891 +f 2328//2328 2327//2327 2898//2898 +f 3782//3782 2896//2896 2895//2895 +f 2895//2895 2898//2898 3782//3782 +f 2895//2895 2336//2336 2328//2328 +f 2328//2328 2898//2898 2895//2895 +f 3756//3756 2899//2899 8322//8322 +f 2211//2211 2900//2900 2901//2901 +f 2211//2211 2208//2208 1676//1676 +f 1676//1676 2900//2900 2211//2211 +f 2207//2207 2902//2902 2903//2903 +f 1676//1676 2208//2208 2903//2903 +f 2903//2903 2902//2902 1676//1676 +f 2207//2207 2298//2298 2904//2904 +f 2904//2904 2902//2902 2207//2207 +f 1676//1676 2902//2902 2904//2904 +f 2203//2203 2905//2905 2243//2243 +f 2202//2202 2905//2905 2203//2203 +f 2906//2906 2907//2907 2243//2243 +f 2243//2243 2905//2905 2906//2906 +f 2906//2906 2905//2905 2202//2202 +f 2908//2908 2913//2913 8337//8337 +f 2913//2913 8338//8338 8337//8337 +f 2913//2913 2909//2909 8338//8338 +f 2913//2913 2912//2912 8339//8339 +f 2912//2912 8340//8340 8339//8339 +f 2913//2913 8339//8339 2909//2909 +f 2912//2912 2910//2910 8340//8340 +f 2913//2913 2908//2908 2225//2225 +f 2225//2225 2911//2911 2913//2913 +f 2225//2225 2915//2915 2916//2916 +f 2916//2916 2911//2911 2225//2225 +f 2916//2916 2914//2914 2921//2921 +f 2921//2921 2911//2911 2916//2916 +f 2921//2921 2912//2912 2913//2913 +f 2913//2913 2911//2911 2921//2921 +f 2918//2918 2914//2914 2916//2916 +f 2915//2915 2918//2918 2916//2916 +f 2919//2919 2917//2917 1943//1943 +f 1943//1943 2918//2918 2919//2919 +f 2914//2914 2918//2918 1943//1943 +f 1940//1940 8343//8343 2920//2920 +f 2912//2912 2921//2921 2910//2910 +f 2921//2921 8342//8342 2910//2910 +f 2921//2921 1940//1940 8342//8342 +f 1940//1940 2920//2920 8342//8342 +f 2914//2914 1940//1940 2921//2921 +f 2924//2924 2927//2927 2928//2928 +f 2928//2928 2923//2923 2924//2924 +f 2928//2928 2929//2929 2922//2922 +f 2922//2922 2923//2923 2928//2928 +f 2922//2922 2175//2175 2926//2926 +f 2926//2926 2923//2923 2922//2922 +f 2926//2926 2230//2230 2924//2924 +f 2924//2924 2923//2923 2926//2926 +f 2933//2933 2931//2931 2925//2925 +f 2925//2925 2922//2922 2933//2933 +f 2175//2175 2922//2922 2925//2925 +f 2922//2922 2929//2929 2933//2933 +f 2179//2179 2170//2170 2943//2943 +f 2943//2943 2926//2926 2179//2179 +f 2179//2179 2926//2926 2175//2175 +f 2928//2928 2927//2927 8393//8393 +f 2927//2927 8392//8392 8393//8393 +f 2928//2928 8393//8393 8391//8391 +f 2929//2929 2928//2928 8395//8395 +f 2928//2928 2930//2930 8395//8395 +f 2928//2928 8391//8391 2930//2930 +f 2931//2931 2933//2933 8396//8396 +f 2933//2933 2932//2932 8396//8396 +f 2933//2933 2929//2929 2934//2934 +f 2929//2929 8395//8395 2934//2934 +f 2933//2933 2934//2934 2932//2932 +f 2918//2918 2915//2915 2937//2937 +f 2243//2243 2907//2907 2935//2935 +f 2935//2935 2937//2937 2243//2243 +f 2935//2935 2248//2248 2936//2936 +f 2936//2936 2937//2937 2935//2935 +f 2936//2936 2918//2918 2937//2937 +f 2255//2255 2917//2917 2919//2919 +f 2936//2936 2919//2919 2918//2918 +f 2936//2936 2248//2248 2255//2255 +f 2255//2255 2919//2919 2936//2936 +f 2938//2938 2944//2944 2207//2207 +f 2306//2306 2230//2230 2926//2926 +f 2926//2926 2939//2939 2306//2306 +f 2306//2306 2939//2939 2938//2938 +f 2943//2943 2170//2170 2942//2942 +f 2942//2942 2941//2941 2943//2943 +f 2942//2942 2940//2940 2944//2944 +f 2944//2944 2941//2941 2942//2942 +f 2944//2944 2938//2938 2939//2939 +f 2939//2939 2941//2941 2944//2944 +f 2939//2939 2926//2926 2943//2943 +f 2943//2943 2941//2941 2939//2939 +f 2207//2207 2944//2944 2298//2298 +f 2944//2944 2940//2940 2298//2298 +f 2947//2947 2783//2783 2945//2945 +f 2945//2945 2946//2946 2947//2947 +f 2945//2945 1605//1605 2949//2949 +f 2949//2949 2946//2946 2945//2945 +f 2949//2949 2742//2742 2743//2743 +f 2743//2743 2946//2946 2949//2949 +f 2947//2947 2946//2946 2743//2743 +f 1602//1602 1601//1601 2948//2948 +f 2948//2948 2950//2950 1602//1602 +f 2948//2948 2735//2735 2950//2950 +f 2950//2950 2742//2742 2949//2949 +f 2949//2949 1605//1605 1602//1602 +f 1602//1602 2950//2950 2949//2949 +f 3003//3003 2820//2820 2734//2734 +f 2734//2734 2954//2954 3003//3003 +f 2737//2737 2954//2954 2734//2734 +f 2737//2737 2735//2735 2951//2951 +f 2948//2948 1601//1601 1617//1617 +f 1617//1617 2951//2951 2948//2948 +f 1617//1617 1621//1621 2952//2952 +f 2952//2952 2951//2951 1617//1617 +f 2952//2952 2737//2737 2951//2951 +f 2951//2951 2735//2735 2948//2948 +f 1629//1629 2816//2816 2953//2953 +f 2953//2953 2955//2955 1629//1629 +f 2953//2953 3003//3003 2954//2954 +f 2954//2954 2955//2955 2953//2953 +f 2954//2954 2737//2737 2952//2952 +f 2952//2952 2955//2955 2954//2954 +f 2952//2952 1621//1621 1629//1629 +f 1629//1629 2955//2955 2952//2952 +f 2960//2960 2957//2957 2956//2956 +f 2957//2957 2958//2958 2956//2956 +f 2960//2960 2956//2956 2961//2961 +f 2966//2966 2960//2960 2959//2959 +f 2960//2960 2962//2962 2959//2959 +f 2960//2960 2961//2961 2962//2962 +f 2963//2963 2965//2965 8341//8341 +f 2965//2965 8336//8336 8341//8341 +f 2965//2965 2966//2966 2964//2964 +f 2966//2966 2959//2959 2964//2964 +f 2965//2965 2964//2964 8336//8336 +f 2968//2968 2996//2996 2770//2770 +f 2973//2973 2996//2996 2968//2968 +f 2970//2970 2957//2957 2960//2960 +f 2960//2960 2969//2969 2970//2970 +f 2960//2960 2966//2966 2967//2967 +f 2967//2967 2969//2969 2960//2960 +f 2967//2967 2973//2973 2968//2968 +f 2968//2968 2969//2969 2967//2967 +f 2968//2968 2770//2770 2970//2970 +f 2970//2970 2969//2969 2968//2968 +f 2965//2965 2963//2963 2971//2971 +f 2971//2971 2972//2972 2965//2965 +f 2971//2971 2443//2443 2974//2974 +f 2974//2974 2972//2972 2971//2971 +f 2974//2974 2973//2973 2967//2967 +f 2967//2967 2972//2972 2974//2974 +f 2967//2967 2966//2966 2965//2965 +f 2965//2965 2972//2972 2967//2967 +f 2976//2976 2454//2454 2998//2998 +f 2998//2998 2975//2975 2976//2976 +f 2973//2973 2975//2975 2998//2998 +f 2974//2974 2975//2975 2973//2973 +f 2974//2974 2443//2443 2976//2976 +f 2976//2976 2975//2975 2974//2974 +f 2991//2991 2977//2977 2978//2978 +f 2978//2978 2980//2980 2991//2991 +f 2978//2978 2761//2761 2981//2981 +f 2981//2981 2980//2980 2978//2978 +f 2981//2981 2988//2988 2979//2979 +f 2979//2979 2980//2980 2981//2981 +f 2979//2979 2994//2994 2991//2991 +f 2991//2991 2980//2980 2979//2979 +f 2983//2983 3004//3004 2986//2986 +f 2982//2982 2988//2988 2981//2981 +f 2981//2981 2986//2986 2982//2982 +f 2981//2981 2761//2761 2983//2983 +f 2983//2983 2986//2986 2981//2981 +f 3005//3005 2815//2815 2984//2984 +f 2984//2984 2982//2982 3005//3005 +f 2984//2984 2985//2985 2988//2988 +f 2988//2988 2982//2982 2984//2984 +f 2982//2982 2986//2986 3005//3005 +f 2987//2987 2707//2707 2994//2994 +f 2979//2979 2987//2987 2994//2994 +f 2988//2988 2987//2987 2979//2979 +f 2988//2988 2985//2985 2987//2987 +f 2977//2977 2991//2991 2989//2989 +f 2991//2991 2990//2990 2989//2989 +f 2991//2991 8440//8440 2990//2990 +f 2991//2991 2994//2994 2993//2993 +f 2994//2994 2992//2992 2993//2993 +f 2991//2991 2993//2993 8440//8440 +f 2994//2994 2707//2707 2995//2995 +f 2707//2707 2709//2709 2995//2995 +f 2994//2994 2995//2995 2992//2992 +f 2773//2773 2770//2770 2997//2997 +f 2996//2996 2997//2997 2770//2770 +f 2998//2998 2454//2454 3000//3000 +f 3000//3000 3001//3001 2998//2998 +f 3000//3000 2785//2785 2999//2999 +f 2999//2999 3001//3001 3000//3000 +f 2999//2999 2997//2997 2996//2996 +f 2996//2996 3001//3001 2999//2999 +f 2996//2996 2973//2973 2998//2998 +f 2998//2998 3001//3001 2996//2996 +f 2784//2784 2783//2783 2947//2947 +f 2947//2947 3002//3002 2784//2784 +f 2947//2947 2743//2743 2773//2773 +f 2773//2773 3002//3002 2947//2947 +f 2773//2773 2997//2997 2999//2999 +f 2999//2999 3002//3002 2773//2773 +f 2999//2999 2785//2785 2784//2784 +f 2784//2784 3002//3002 2999//2999 +f 3004//3004 2820//2820 3003//3003 +f 3003//3003 2986//2986 3004//3004 +f 3005//3005 2986//2986 3003//3003 +f 2816//2816 3005//3005 2953//2953 +f 3005//3005 3003//3003 2953//2953 +f 2816//2816 2815//2815 3005//3005 +f 1933//1933 1918//1918 3006//3006 +f 1918//1918 8352//8352 3006//3006 +f 1918//1918 8354//8354 8352//8352 +f 1933//1933 3006//3006 1934//1934 +f 3007//3007 1926//1926 1924//1924 +f 1924//1924 3014//3014 3007//3007 +f 1924//1924 3008//3008 3009//3009 +f 3009//3009 3014//3014 1924//1924 +f 1918//1918 3010//3010 1919//1919 +f 1918//1918 1933//1933 3010//3010 +f 3009//3009 3008//3008 1919//1919 +f 1919//1919 3010//3010 3009//3009 +f 3012//3012 1941//1941 3011//3011 +f 3011//3011 3009//3009 3010//3010 +f 3010//3010 3012//3012 3011//3011 +f 1933//1933 3012//3012 3010//3010 +f 3016//3016 1935//1935 3015//3015 +f 3015//3015 3013//3013 3016//3016 +f 3015//3015 3007//3007 3014//3014 +f 3014//3014 3013//3013 3015//3015 +f 3014//3014 3009//3009 3011//3011 +f 3011//3011 3013//3013 3014//3014 +f 3011//3011 1941//1941 3016//3016 +f 3016//3016 3013//3013 3011//3011 +f 3027//3027 2436//2436 3017//3017 +f 3017//3017 3020//3020 3027//3027 +f 3017//3017 3018//3018 3019//3019 +f 3019//3019 3020//3020 3017//3017 +f 3020//3020 3031//3031 3027//3027 +f 1929//1929 1926//1926 3007//3007 +f 3007//3007 3021//3021 1929//1929 +f 3019//3019 3018//3018 1929//1929 +f 1929//1929 3021//3021 3019//3019 +f 3015//3015 1935//1935 1951//1951 +f 1951//1951 3021//3021 3015//3015 +f 1950//1950 3021//3021 1951//1951 +f 1950//1950 3019//3019 3021//3021 +f 3021//3021 3007//3007 3015//3015 +f 3028//3028 3031//3031 3020//3020 +f 3020//3020 1947//1947 3028//3028 +f 3020//3020 3019//3019 1950//1950 +f 1950//1950 1947//1947 3020//3020 +f 3025//3025 3022//3022 3023//3023 +f 3023//3023 2461//2461 3024//3024 +f 3024//3024 3025//3025 3023//3023 +f 3024//3024 2459//2459 3037//3037 +f 3037//3037 3025//3025 3024//3024 +f 3026//3026 2436//2436 3027//3027 +f 3027//3027 3031//3031 3029//3029 +f 3029//3029 3026//3026 3027//3027 +f 3029//3029 2461//2461 3023//3023 +f 3023//3023 3026//3026 3029//3029 +f 3023//3023 3022//3022 3026//3026 +f 3030//3030 3029//3029 3028//3028 +f 2461//2461 3029//3029 3030//3030 +f 3029//3029 3031//3031 3028//3028 +f 2459//2459 3024//3024 3032//3032 +f 3032//3032 3024//3024 2461//2461 +f 3043//3043 3042//3042 3033//3033 +f 3033//3033 3036//3036 3043//3043 +f 3033//3033 3034//3034 3038//3038 +f 3038//3038 3036//3036 3033//3033 +f 3038//3038 3040//3040 3035//3035 +f 3035//3035 3036//3036 3038//3038 +f 3043//3043 3036//3036 3035//3035 +f 3037//3037 3039//3039 2430//2430 +f 3037//3037 2459//2459 3039//3039 +f 3039//3039 3040//3040 3038//3038 +f 3038//3038 3034//3034 2430//2430 +f 2430//2430 3039//3039 3038//3038 +f 3039//3039 2450//2450 3040//3040 +f 2459//2459 2450//2450 3039//3039 +f 3045//3045 3041//3041 8350//8350 +f 3041//3041 8346//8346 8350//8350 +f 3045//3045 3035//3035 3041//3041 +f 3045//3045 3043//3043 3035//3035 +f 3041//3041 3035//3035 3040//3040 +f 3042//3042 3043//3043 8359//8359 +f 3043//3043 8355//8355 8359//8359 +f 3043//3043 3044//3044 8355//8355 +f 3043//3043 8353//8353 3044//3044 +f 3045//3045 8350//8350 8349//8349 +f 3045//3045 8349//8349 8351//8351 +f 3043//3043 3045//3045 8353//8353 +f 3045//3045 8351//8351 8353//8353 +f 3049//3049 3047//3047 8402//8402 +f 3047//3047 8401//8401 8402//8402 +f 3049//3049 8402//8402 2185//2185 +f 2151//2151 3046//3046 3051//3051 +f 2152//2152 3046//3046 2151//2151 +f 3047//3047 3050//3050 2039//2039 +f 2039//2039 3050//3050 2152//2152 +f 3048//3048 3050//3050 3049//3049 +f 2187//2187 3050//3050 3048//3048 +f 2187//2187 2152//2152 3050//3050 +f 3050//3050 3047//3047 3049//3049 +f 3052//3052 3051//3051 3046//3046 +f 3046//3046 3053//3053 3052//3052 +f 3046//3046 2152//2152 2187//2187 +f 2187//2187 3053//3053 3046//3046 +f 3066//3066 2140//2140 3054//3054 +f 3054//3054 3060//3060 3066//3066 +f 3054//3054 2157//2157 3058//3058 +f 3058//3058 3060//3060 3054//3054 +f 3051//3051 3057//3057 3055//3055 +f 3058//3058 2157//2157 3055//3055 +f 3055//3055 3057//3057 3058//3058 +f 3056//3056 3057//3057 3052//3052 +f 3056//3056 2196//2196 3059//3059 +f 3059//3059 3057//3057 3056//3056 +f 3059//3059 3058//3058 3057//3057 +f 3057//3057 3051//3051 3052//3052 +f 2189//2189 2164//2164 3069//3069 +f 3069//3069 3066//3066 3060//3060 +f 3060//3060 2189//2189 3069//3069 +f 3060//3060 3058//3058 3059//3059 +f 3059//3059 2189//2189 3060//3060 +f 3059//3059 2196//2196 2189//2189 +f 3061//3061 2135//2135 3065//3065 +f 3065//3065 3064//3064 3061//3061 +f 3065//3065 3062//3062 3063//3063 +f 3063//3063 3064//3064 3065//3065 +f 2141//2141 2140//2140 3066//3066 +f 3066//3066 3068//3068 2141//2141 +f 3063//3063 3062//3062 2141//2141 +f 2141//2141 3068//3068 3063//3063 +f 3069//3069 2164//2164 3067//3067 +f 3067//3067 3068//3068 3069//3069 +f 3067//3067 3070//3070 3071//3071 +f 3071//3071 3068//3068 3067//3067 +f 3071//3071 3063//3063 3068//3068 +f 3068//3068 3066//3066 3069//3069 +f 2163//2163 2160//2160 3078//3078 +f 3078//3078 3064//3064 2163//2163 +f 3078//3078 3061//3061 3064//3064 +f 3064//3064 3063//3063 3071//3071 +f 3071//3071 3070//3070 2163//2163 +f 2163//2163 3064//3064 3071//3071 +f 3072//3072 2148//2148 3073//3073 +f 3073//3073 3074//3074 3072//3072 +f 2147//2147 3074//3074 3073//3073 +f 3074//3074 3083//3083 3072//3072 +f 3075//3075 2135//2135 3061//3061 +f 3077//3077 3075//3075 3061//3061 +f 2147//2147 3075//3075 3077//3077 +f 3078//3078 2160//2160 2178//2178 +f 2178//2178 3077//3077 3078//3078 +f 2178//2178 3076//3076 3080//3080 +f 3080//3080 3077//3077 2178//2178 +f 3080//3080 2147//2147 3077//3077 +f 3077//3077 3061//3061 3078//3078 +f 3079//3079 2180//2180 3083//3083 +f 3074//3074 3079//3079 3083//3083 +f 3074//3074 2147//2147 3080//3080 +f 3080//3080 3079//3079 3074//3074 +f 3080//3080 3076//3076 3079//3079 +f 2148//2148 3072//3072 3081//3081 +f 3072//3072 3082//3082 3081//3081 +f 3072//3072 8400//8400 3082//3082 +f 3072//3072 3083//3083 8400//8400 +f 3083//3083 3086//3086 8400//8400 +f 3083//3083 2180//2180 3084//3084 +f 2180//2180 3085//3085 3084//3084 +f 3083//3083 3084//3084 3086//3086 +f 3090//3090 3087//3087 3089//3089 +f 3087//3087 3088//3088 3089//3089 +f 3090//3090 3089//3089 8447//8447 +f 3094//3094 3090//3090 8446//8446 +f 3090//3090 8445//8445 8446//8446 +f 3090//3090 8447//8447 8445//8445 +f 2710//2710 3100//3100 3091//3091 +f 3100//3100 3093//3093 3091//3091 +f 3100//3100 3092//3092 3093//3093 +f 3100//3100 3094//3094 3092//3092 +f 3094//3094 8446//8446 3092//3092 +f 3095//3095 2677//2677 3097//3097 +f 3097//3097 3099//3099 3101//3101 +f 3101//3101 3095//3095 3097//3097 +f 2672//2672 3095//3095 3101//3101 +f 2676//2676 3087//3087 3090//3090 +f 3090//3090 3098//3098 2676//2676 +f 3090//3090 3094//3094 3096//3096 +f 3096//3096 3098//3098 3090//3090 +f 3096//3096 3099//3099 3097//3097 +f 3097//3097 3098//3098 3096//3096 +f 3097//3097 2677//2677 2676//2676 +f 2676//2676 3098//3098 3097//3097 +f 3100//3100 2710//2710 2708//2708 +f 2708//2708 2985//2985 3099//3099 +f 3096//3096 2708//2708 3099//3099 +f 3096//3096 3094//3094 3100//3100 +f 3100//3100 2708//2708 3096//3096 +f 3103//3103 2699//2699 3102//3102 +f 3102//3102 2672//2672 3101//3101 +f 3101//3101 3103//3103 3102//3102 +f 3099//3099 3103//3103 3101//3101 +f 3099//3099 2985//2985 3103//3103 +f 3107//3107 2519//2519 2666//2666 +f 2666//2666 3108//3108 3107//3107 +f 2666//2666 3104//3104 3105//3105 +f 3105//3105 3108//3108 2666//2666 +f 3106//3106 2668//2668 2672//2672 +f 3105//3105 2668//2668 3106//3106 +f 3105//3105 3104//3104 2668//2668 +f 3102//3102 2699//2699 2700//2700 +f 2700//2700 3106//3106 3102//3102 +f 3110//3110 3106//3106 2700//2700 +f 3110//3110 3105//3105 3106//3106 +f 3106//3106 2672//2672 3102//3102 +f 2696//2696 3108//3108 3109//3109 +f 2696//2696 3107//3107 3108//3108 +f 3108//3108 3105//3105 3110//3110 +f 3109//3109 3108//3108 3110//3110 +f 3115//3115 2689//2689 3111//3111 +f 3111//3111 3116//3116 3115//3115 +f 3111//3111 2690//2690 3117//3117 +f 3117//3117 3116//3116 3111//3111 +f 2692//2692 2519//2519 3107//3107 +f 3107//3107 3114//3114 2692//2692 +f 3117//3117 2690//2690 2692//2692 +f 2692//2692 3114//3114 3117//3117 +f 3113//3113 3114//3114 2696//2696 +f 3113//3113 2726//2726 3112//3112 +f 3112//3112 3114//3114 3113//3113 +f 3112//3112 3117//3117 3114//3114 +f 3114//3114 3107//3107 2696//2696 +f 2729//2729 2722//2722 3124//3124 +f 3124//3124 3115//3115 3116//3116 +f 3116//3116 2729//2729 3124//3124 +f 3116//3116 3117//3117 3112//3112 +f 3112//3112 2729//2729 3116//3116 +f 3112//3112 2726//2726 2729//2729 +f 2684//2684 3118//3118 3119//3119 +f 3120//3120 3118//3118 2684//2684 +f 3120//3120 3121//3121 3118//3118 +f 3118//3118 3129//3129 3119//3119 +f 3122//3122 2689//2689 3115//3115 +f 3115//3115 3123//3123 3122//3122 +f 3123//3123 3121//3121 3120//3120 +f 3122//3122 3123//3123 3120//3120 +f 3124//3124 2722//2722 2721//2721 +f 2721//2721 3123//3123 3124//3124 +f 2721//2721 2720//2720 3121//3121 +f 3121//3121 3123//3123 2721//2721 +f 3123//3123 3115//3115 3124//3124 +f 3125//3125 2719//2719 3129//3129 +f 3118//3118 3125//3125 3129//3129 +f 3121//3121 3125//3125 3118//3118 +f 3121//3121 2720//2720 3125//3125 +f 3119//3119 3126//3126 3127//3127 +f 3119//3119 3129//3129 3128//3128 +f 3129//3129 8444//8444 3128//3128 +f 3119//3119 3128//3128 3126//3126 +f 3129//3129 2719//2719 3131//3131 +f 3131//3131 3130//3130 8443//8443 +f 3129//3129 3131//3131 8444//8444 +f 3131//3131 8443//8443 8444//8444 +f 3134//3134 3348//3348 3132//3132 +f 3132//3132 3135//3135 3134//3134 +f 3132//3132 3141//3141 3140//3140 +f 3140//3140 3135//3135 3132//3132 +f 3140//3140 3139//3139 3133//3133 +f 3133//3133 3135//3135 3140//3140 +f 3133//3133 3148//3148 3134//3134 +f 3134//3134 3135//3135 3133//3133 +f 3142//3142 3136//3136 3138//3138 +f 3138//3138 3143//3143 3142//3142 +f 3138//3138 3268//3268 3137//3137 +f 3137//3137 3143//3143 3138//3138 +f 3137//3137 3139//3139 3140//3140 +f 3140//3140 3143//3143 3137//3137 +f 3140//3140 3141//3141 3142//3142 +f 3142//3142 3143//3143 3140//3140 +f 3262//3262 3256//3256 3144//3144 +f 3144//3144 3145//3145 3262//3262 +f 3144//3144 1833//1833 3149//3149 +f 3149//3149 3145//3145 3144//3144 +f 3149//3149 3139//3139 3137//3137 +f 3137//3137 3145//3145 3149//3149 +f 3137//3137 3268//3268 3262//3262 +f 3262//3262 3145//3145 3137//3137 +f 1831//1831 3146//3146 3154//3154 +f 3154//3154 3147//3147 1831//1831 +f 3154//3154 3148//3148 3133//3133 +f 3133//3133 3147//3147 3154//3154 +f 3133//3133 3139//3139 3149//3149 +f 3149//3149 3147//3147 3133//3133 +f 3149//3149 1833//1833 1831//1831 +f 1831//1831 3147//3147 3149//3149 +f 3349//3349 3348//3348 3134//3134 +f 3134//3134 3150//3150 3349//3349 +f 3134//3134 3148//3148 3151//3151 +f 3151//3151 3150//3150 3134//3134 +f 3151//3151 3156//3156 8307//8307 +f 3150//3150 3151//3151 3152//3152 +f 3151//3151 8307//8307 3152//3152 +f 3349//3349 8306//8306 3350//3350 +f 3349//3349 3150//3150 8306//8306 +f 3150//3150 3152//3152 8306//8306 +f 3154//3154 3146//3146 1853//1853 +f 1853//1853 3153//3153 3154//3154 +f 1853//1853 3157//3157 3155//3155 +f 3155//3155 3153//3153 1853//1853 +f 3151//3151 3155//3155 3156//3156 +f 3155//3155 8310//8310 3156//3156 +f 3151//3151 3153//3153 3155//3155 +f 3151//3151 3148//3148 3154//3154 +f 3154//3154 3153//3153 3151//3151 +f 3155//3155 3158//3158 8310//8310 +f 3155//3155 3157//3157 3158//3158 +f 3157//3157 1850//1850 3158//3158 +f 3163//3163 3228//3228 3159//3159 +f 3159//3159 3161//3161 3163//3163 +f 3159//3159 3160//3160 3162//3162 +f 3162//3162 3161//3161 3159//3159 +f 3162//3162 3164//3164 3178//3178 +f 3178//3178 3161//3161 3162//3162 +f 3178//3178 3179//3179 3163//3163 +f 3163//3163 3161//3161 3178//3178 +f 3164//3164 3162//3162 3165//3165 +f 3162//3162 3166//3166 3165//3165 +f 3162//3162 3167//3167 3166//3166 +f 3162//3162 3160//3160 8909//8909 +f 3160//3160 8910//8910 8909//8909 +f 3162//3162 8909//8909 3167//3167 +f 3169//3169 3168//3168 8906//8906 +f 3169//3169 3171//3171 3168//3168 +f 3169//3169 3170//3170 3174//3174 +f 3169//3169 3174//3174 3171//3171 +f 3174//3174 3172//3172 3171//3171 +f 3174//3174 3164//3164 3173//3173 +f 3164//3164 3165//3165 3173//3173 +f 3174//3174 3173//3173 3172//3172 +f 3272//3272 3175//3175 3176//3176 +f 3176//3176 3177//3177 3272//3272 +f 3176//3176 3179//3179 3178//3178 +f 3178//3178 3177//3177 3176//3176 +f 3178//3178 3164//3164 3174//3174 +f 3174//3174 3177//3177 3178//3178 +f 3174//3174 3170//3170 3272//3272 +f 3272//3272 3177//3177 3174//3174 +f 3229//3229 3228//3228 3163//3163 +f 3163//3163 3181//3181 3229//3229 +f 3163//3163 3179//3179 3182//3182 +f 3182//3182 3181//3181 3163//3163 +f 3182//3182 3180//3180 3785//3785 +f 3785//3785 3181//3181 3182//3182 +f 3229//3229 3785//3785 3183//3183 +f 3785//3785 8272//8272 3183//3183 +f 3229//3229 3181//3181 3785//3785 +f 3176//3176 3175//3175 3292//3292 +f 3292//3292 3184//3184 3176//3176 +f 3292//3292 3786//3786 3185//3185 +f 3185//3185 3184//3184 3292//3292 +f 3185//3185 3180//3180 3182//3182 +f 3182//3182 3184//3184 3185//3185 +f 3182//3182 3179//3179 3176//3176 +f 3176//3176 3184//3184 3182//3182 +f 3185//3185 3186//3186 3180//3180 +f 3786//3786 3186//3186 3185//3185 +f 3190//3190 3214//3214 3188//3188 +f 3190//3190 3188//3188 3191//3191 +f 3188//3188 3189//3189 3191//3191 +f 3188//3188 3814//3814 3187//3187 +f 3814//3814 3194//3194 3187//3187 +f 3188//3188 3187//3187 3189//3189 +f 3190//3190 3191//3191 3192//3192 +f 3193//3193 3195//3195 3808//3808 +f 3193//3193 3196//3196 3195//3195 +f 3814//3814 3808//3808 3194//3194 +f 3808//3808 8932//8932 3194//3194 +f 3808//3808 3195//3195 8932//8932 +f 3195//3195 8933//8933 8932//8932 +f 3195//3195 3196//3196 3197//3197 +f 3196//3196 3198//3198 3197//3197 +f 3195//3195 3197//3197 8933//8933 +f 3199//3199 3791//3791 8273//8273 +f 3200//3200 8271//8271 3298//3298 +f 3200//3200 3199//3199 8271//8271 +f 3199//3199 8273//8273 8271//8271 +f 3160//3160 8913//8913 8910//8910 +f 3159//3159 3228//3228 3233//3233 +f 3233//3233 3201//3201 3159//3159 +f 3233//3233 3208//3208 3205//3205 +f 3205//3205 3201//3201 3233//3233 +f 3205//3205 8920//8920 3202//3202 +f 3201//3201 3205//3205 8915//8915 +f 3205//3205 3202//3202 8915//8915 +f 3160//3160 3159//3159 8913//8913 +f 3159//3159 8912//8912 8913//8913 +f 3159//3159 3201//3201 8912//8912 +f 3201//3201 8915//8915 8912//8912 +f 3209//3209 3217//3217 3203//3203 +f 3203//3203 3206//3206 3209//3209 +f 3203//3203 3204//3204 8923//8923 +f 3206//3206 3203//3203 8917//8917 +f 3203//3203 8923//8923 8917//8917 +f 3205//3205 3207//3207 8920//8920 +f 3205//3205 3206//3206 3207//3207 +f 3206//3206 8917//8917 3207//3207 +f 3205//3205 3208//3208 3209//3209 +f 3209//3209 3206//3206 3205//3205 +f 3203//3203 3217//3217 3223//3223 +f 3223//3223 3210//3210 3203//3203 +f 3223//3223 3211//3211 3212//3212 +f 3212//3212 3210//3210 3223//3223 +f 3212//3212 8929//8929 8924//8924 +f 3210//3210 3212//3212 8926//8926 +f 3212//3212 8924//8924 8926//8926 +f 3203//3203 8922//8922 3204//3204 +f 3203//3203 3210//3210 8922//8922 +f 3210//3210 8926//8926 8922//8922 +f 3216//3216 3214//3214 3190//3190 +f 3216//3216 3190//3190 3213//3213 +f 3190//3190 8934//8934 3213//3213 +f 3190//3190 3192//3192 8934//8934 +f 3212//3212 8928//8928 8929//8929 +f 3212//3212 3211//3211 3216//3216 +f 3212//3212 3216//3216 8928//8928 +f 3216//3216 3213//3213 8928//8928 +f 3796//3796 3214//3214 3216//3216 +f 3216//3216 3215//3215 3796//3796 +f 3216//3216 3211//3211 3220//3220 +f 3220//3220 3215//3215 3216//3216 +f 3220//3220 8283//8283 8282//8282 +f 3215//3215 3220//3220 8279//8279 +f 3220//3220 8282//8282 8279//8279 +f 3796//3796 8284//8284 3797//3797 +f 3796//3796 3215//3215 8284//8284 +f 3215//3215 8279//8279 8284//8284 +f 3223//3223 3217//3217 3218//3218 +f 3218//3218 3221//3221 3223//3223 +f 3218//3218 8281//8281 8280//8280 +f 3221//3221 3218//3218 3219//3219 +f 3218//3218 8280//8280 3219//3219 +f 3220//3220 3222//3222 8283//8283 +f 3220//3220 3221//3221 3222//3222 +f 3221//3221 3219//3219 3222//3222 +f 3220//3220 3211//3211 3223//3223 +f 3223//3223 3221//3221 3220//3220 +f 3218//3218 3217//3217 3209//3209 +f 3209//3209 3226//3226 3218//3218 +f 3209//3209 3208//3208 3225//3225 +f 3225//3225 3226//3226 3209//3209 +f 3225//3225 8277//8277 8278//8278 +f 3226//3226 3225//3225 3224//3224 +f 3225//3225 8278//8278 3224//3224 +f 3218//3218 3227//3227 8281//8281 +f 3218//3218 3226//3226 3227//3227 +f 3226//3226 3224//3224 3227//3227 +f 3233//3233 3228//3228 3229//3229 +f 3229//3229 3231//3231 3233//3233 +f 3231//3231 3229//3229 3230//3230 +f 3229//3229 3183//3183 3230//3230 +f 3225//3225 3231//3231 8277//8277 +f 3231//3231 3232//3232 8277//8277 +f 3225//3225 3208//3208 3233//3233 +f 3233//3233 3231//3231 3225//3225 +f 3242//3242 3234//3234 8895//8895 +f 3234//3234 8891//8891 8895//8895 +f 3234//3234 3235//3235 8891//8891 +f 3234//3234 3236//3236 8889//8889 +f 3236//3236 8887//8887 8889//8889 +f 3234//3234 8889//8889 3235//3235 +f 3395//3395 3418//3418 3237//3237 +f 3418//3418 8904//8904 3237//3237 +f 3418//3418 3242//3242 8894//8894 +f 3242//3242 8895//8895 8894//8894 +f 3239//3239 2338//2338 1598//1598 +f 1598//1598 3238//3238 3239//3239 +f 1598//1598 1595//1595 3243//3243 +f 3243//3243 3238//3238 1598//1598 +f 3243//3243 3242//3242 3418//3418 +f 3418//3418 3238//3238 3243//3243 +f 3418//3418 3395//3395 3239//3239 +f 3239//3239 3238//3238 3418//3418 +f 3240//3240 1593//1593 3241//3241 +f 3241//3241 3244//3244 3240//3240 +f 3241//3241 3236//3236 3234//3234 +f 3234//3234 3244//3244 3241//3241 +f 3234//3234 3242//3242 3243//3243 +f 3243//3243 3244//3244 3234//3234 +f 3243//3243 1595//1595 3240//3240 +f 3240//3240 3244//3244 3243//3243 +f 3249//3249 3245//3245 3250//3250 +f 3246//3246 3252//3252 3247//3247 +f 3236//3236 3248//3248 8887//8887 +f 3248//3248 8885//8885 8887//8887 +f 3248//3248 3246//3246 8885//8885 +f 3246//3246 3247//3247 8885//8885 +f 3248//3248 3249//3249 8884//8884 +f 3249//3249 3250//3250 8884//8884 +f 3246//3246 3248//3248 3251//3251 +f 3248//3248 8884//8884 3251//3251 +f 3246//3246 3251//3251 3252//3252 +f 3241//3241 1593//1593 3254//3254 +f 3254//3254 3253//3253 3241//3241 +f 3254//3254 1641//1641 3255//3255 +f 3255//3255 3253//3253 3254//3254 +f 3255//3255 3249//3249 3248//3248 +f 3248//3248 3253//3253 3255//3255 +f 3248//3248 3236//3236 3241//3241 +f 3241//3241 3253//3253 3248//3248 +f 1640//1640 3256//3256 3257//3257 +f 3257//3257 3261//3261 1640//1640 +f 3257//3257 3263//3263 3259//3259 +f 3261//3261 3257//3257 3258//3258 +f 3257//3257 3259//3259 3258//3258 +f 3249//3249 3255//3255 3245//3245 +f 3255//3255 3260//3260 3245//3245 +f 3255//3255 3261//3261 3260//3260 +f 3261//3261 3258//3258 3260//3260 +f 3255//3255 1641//1641 1640//1640 +f 1640//1640 3261//3261 3255//3255 +f 3257//3257 3256//3256 3262//3262 +f 3262//3262 3264//3264 3257//3257 +f 3262//3262 3268//3268 3267//3267 +f 3267//3267 3264//3264 3262//3262 +f 3267//3267 3266//3266 8876//8876 +f 3264//3264 3267//3267 8875//8875 +f 3267//3267 8876//8876 8875//8875 +f 3257//3257 3265//3265 3263//3263 +f 3257//3257 3264//3264 3265//3265 +f 3264//3264 8875//8875 3265//3265 +f 3138//3138 3136//3136 3321//3321 +f 3321//3321 3269//3269 3138//3138 +f 3321//3321 8879//8879 8880//8880 +f 3269//3269 3321//3321 8881//8881 +f 3321//3321 8880//8880 8881//8881 +f 3267//3267 8877//8877 3266//3266 +f 3267//3267 3269//3269 8877//8877 +f 3269//3269 8881//8881 8877//8877 +f 3267//3267 3268//3268 3138//3138 +f 3138//3138 3269//3269 3267//3267 +f 3196//3196 3310//3310 3198//3198 +f 3356//3356 8899//8899 8896//8896 +f 3290//3290 3175//3175 3272//3272 +f 3272//3272 3270//3270 3290//3290 +f 3272//3272 3170//3170 3271//3271 +f 3271//3271 3270//3270 3272//3272 +f 3271//3271 3273//3273 3274//3274 +f 3274//3274 3270//3270 3271//3271 +f 3274//3274 3285//3285 3290//3290 +f 3290//3290 3270//3270 3274//3274 +f 3169//3169 8906//8906 3276//3276 +f 3275//3275 3169//3169 3277//3277 +f 3169//3169 3276//3276 3277//3277 +f 3279//3279 3278//3278 8903//8903 +f 3279//3279 3275//3275 3278//3278 +f 3275//3275 3277//3277 3278//3278 +f 3279//3279 3273//3273 3271//3271 +f 3271//3271 3275//3275 3279//3279 +f 3271//3271 3170//3170 3169//3169 +f 3169//3169 3275//3275 3271//3271 +f 3356//3356 3280//3280 8899//8899 +f 3280//3280 3282//3282 8899//8899 +f 3280//3280 3281//3281 3282//3282 +f 3281//3281 8901//8901 3282//3282 +f 3280//3280 3286//3286 3283//3283 +f 3283//3283 3281//3281 3280//3280 +f 3283//3283 3273//3273 3279//3279 +f 3279//3279 3281//3281 3283//3283 +f 3279//3279 8903//8903 8902//8902 +f 3281//3281 3279//3279 8901//8901 +f 3279//3279 8902//8902 8901//8901 +f 3287//3287 3360//3360 3284//3284 +f 3284//3284 3288//3288 3287//3287 +f 3284//3284 3285//3285 3274//3274 +f 3274//3274 3288//3288 3284//3284 +f 3274//3274 3273//3273 3283//3283 +f 3283//3283 3288//3288 3274//3274 +f 3283//3283 3286//3286 3287//3287 +f 3287//3287 3288//3288 3283//3283 +f 3289//3289 3817//3817 3786//3786 +f 3816//3816 3817//3817 3289//3289 +f 3292//3292 3175//3175 3290//3290 +f 3290//3290 3293//3293 3292//3292 +f 3290//3290 3285//3285 3291//3291 +f 3291//3291 3293//3293 3290//3290 +f 3291//3291 3816//3816 3289//3289 +f 3289//3289 3293//3293 3291//3291 +f 3289//3289 3786//3786 3292//3292 +f 3292//3292 3293//3293 3289//3289 +f 3284//3284 3360//3360 3294//3294 +f 3294//3294 3296//3296 3284//3284 +f 3297//3297 3294//3294 3295//3295 +f 3294//3294 8258//8258 3295//3295 +f 3297//3297 3296//3296 3294//3294 +f 3297//3297 3816//3816 3291//3291 +f 3291//3291 3296//3296 3297//3297 +f 3291//3291 3285//3285 3284//3284 +f 3284//3284 3296//3296 3291//3291 +f 3816//3816 3297//3297 8261//8261 +f 3297//3297 8259//8259 8261//8261 +f 3297//3297 3295//3295 8259//8259 +f 3299//3299 3200//3200 8268//8268 +f 3200//3200 3298//3298 8268//8268 +f 3299//3299 8268//8268 8267//8267 +f 3305//3305 3299//3299 3306//3306 +f 3299//3299 3300//3300 3306//3306 +f 3299//3299 8267//8267 3300//3300 +f 3301//3301 3302//3302 3303//3303 +f 3301//3301 3304//3304 3302//3302 +f 3301//3301 3305//3305 8286//8286 +f 3305//3305 3306//3306 8286//8286 +f 3301//3301 8286//8286 3304//3304 +f 3307//3307 3309//3309 3193//3193 +f 3309//3309 3196//3196 3193//3193 +f 3841//3841 3308//3308 3307//3307 +f 3308//3308 3309//3309 3307//3307 +f 3308//3308 3841//3841 3311//3311 +f 3196//3196 3309//3309 3310//3310 +f 3309//3309 8927//8927 3310//3310 +f 3309//3309 8930//8930 8927//8927 +f 3308//3308 3311//3311 3312//3312 +f 3308//3308 3312//3312 3313//3313 +f 3312//3312 3315//3315 3313//3313 +f 3308//3308 3313//3313 8931//8931 +f 3309//3309 3308//3308 8930//8930 +f 3308//3308 8931//8931 8930//8930 +f 3312//3312 3314//3314 3315//3315 +f 3320//3320 3326//3326 3316//3316 +f 3323//3323 3317//3317 8888//8888 +f 3320//3320 3316//3316 8886//8886 +f 3321//3321 3136//3136 3319//3319 +f 3319//3319 3318//3318 3321//3321 +f 3319//3319 3325//3325 3320//3320 +f 3320//3320 3318//3318 3319//3319 +f 3318//3318 3320//3320 8882//8882 +f 3320//3320 8886//8886 8882//8882 +f 3321//3321 8883//8883 8879//8879 +f 3321//3321 3318//3318 8883//8883 +f 3318//3318 8882//8882 8883//8883 +f 3330//3330 3322//3322 3323//3323 +f 3330//3330 3323//3323 3324//3324 +f 3323//3323 8888//8888 3324//3324 +f 3320//3320 3325//3325 3330//3330 +f 3320//3320 3330//3330 3326//3326 +f 3330//3330 3324//3324 3326//3326 +f 3341//3341 3327//3327 3328//3328 +f 3328//3328 3329//3329 3341//3341 +f 3328//3328 3372//3372 3333//3333 +f 3333//3333 3329//3329 3328//3328 +f 3333//3333 3332//3332 3339//3339 +f 3339//3339 3329//3329 3333//3333 +f 3339//3339 3340//3340 3341//3341 +f 3341//3341 3329//3329 3339//3339 +f 3366//3366 3322//3322 3330//3330 +f 3330//3330 3334//3334 3366//3366 +f 3330//3330 3325//3325 3331//3331 +f 3331//3331 3334//3334 3330//3330 +f 3331//3331 3332//3332 3333//3333 +f 3333//3333 3334//3334 3331//3331 +f 3333//3333 3372//3372 3366//3366 +f 3366//3366 3334//3334 3333//3333 +f 3319//3319 3136//3136 3142//3142 +f 3142//3142 3336//3336 3319//3319 +f 3142//3142 3141//3141 3335//3335 +f 3335//3335 3336//3336 3142//3142 +f 3335//3335 3332//3332 3331//3331 +f 3331//3331 3336//3336 3335//3335 +f 3331//3331 3325//3325 3319//3319 +f 3319//3319 3336//3336 3331//3331 +f 3132//3132 3348//3348 3337//3337 +f 3337//3337 3338//3338 3132//3132 +f 3337//3337 3340//3340 3339//3339 +f 3339//3339 3338//3338 3337//3337 +f 3339//3339 3332//3332 3335//3335 +f 3335//3335 3338//3338 3339//3339 +f 3335//3335 3141//3141 3132//3132 +f 3132//3132 3338//3338 3335//3335 +f 3346//3346 3327//3327 3341//3341 +f 3341//3341 3344//3344 3346//3346 +f 3341//3341 3340//3340 3345//3345 +f 3345//3345 3344//3344 3341//3341 +f 3345//3345 3342//3342 3343//3343 +f 3344//3344 3345//3345 8298//8298 +f 3345//3345 3343//3343 8298//8298 +f 3346//3346 3347//3347 3378//3378 +f 3346//3346 3344//3344 3347//3347 +f 3344//3344 8298//8298 3347//3347 +f 3337//3337 3348//3348 3349//3349 +f 3349//3349 3351//3351 3337//3337 +f 3349//3349 3350//3350 8304//8304 +f 3351//3351 3349//3349 3352//3352 +f 3349//3349 8304//8304 3352//3352 +f 3345//3345 3353//3353 3342//3342 +f 3345//3345 3351//3351 3353//3353 +f 3351//3351 3352//3352 3353//3353 +f 3345//3345 3340//3340 3337//3337 +f 3337//3337 3351//3351 3345//3345 +f 3323//3323 8892//8892 3317//3317 +f 3323//3323 3322//3322 3354//3354 +f 3323//3323 3354//3354 8892//8892 +f 3354//3354 3355//3355 8892//8892 +f 3354//3354 3363//3363 8890//8890 +f 3363//3363 3357//3357 8890//8890 +f 3354//3354 8890//8890 3355//3355 +f 3358//3358 3356//3356 8898//8898 +f 3356//3356 8896//8896 8898//8898 +f 3358//3358 8898//8898 8893//8893 +f 3363//3363 3358//3358 3357//3357 +f 3358//3358 3359//3359 3357//3357 +f 3358//3358 8893//8893 3359//3359 +f 3373//3373 3360//3360 3287//3287 +f 3287//3287 3362//3362 3373//3373 +f 3287//3287 3286//3286 3361//3361 +f 3361//3361 3362//3362 3287//3287 +f 3361//3361 3364//3364 3370//3370 +f 3370//3370 3362//3362 3361//3361 +f 3370//3370 3381//3381 3373//3373 +f 3373//3373 3362//3362 3370//3370 +f 3280//3280 3356//3356 3358//3358 +f 3358//3358 3365//3365 3280//3280 +f 3358//3358 3363//3363 3369//3369 +f 3369//3369 3365//3365 3358//3358 +f 3369//3369 3364//3364 3361//3361 +f 3361//3361 3365//3365 3369//3369 +f 3361//3361 3286//3286 3280//3280 +f 3280//3280 3365//3365 3361//3361 +f 3354//3354 3322//3322 3366//3366 +f 3366//3366 3368//3368 3354//3354 +f 3366//3366 3372//3372 3367//3367 +f 3367//3367 3368//3368 3366//3366 +f 3367//3367 3364//3364 3369//3369 +f 3369//3369 3368//3368 3367//3367 +f 3369//3369 3363//3363 3354//3354 +f 3354//3354 3368//3368 3369//3369 +f 3328//3328 3327//3327 3382//3382 +f 3382//3382 3371//3371 3328//3328 +f 3382//3382 3381//3381 3370//3370 +f 3370//3370 3371//3371 3382//3382 +f 3370//3370 3364//3364 3367//3367 +f 3367//3367 3371//3371 3370//3370 +f 3367//3367 3372//3372 3328//3328 +f 3328//3328 3371//3371 3367//3367 +f 3294//3294 3360//3360 3373//3373 +f 3373//3373 3376//3376 3294//3294 +f 3373//3373 3381//3381 3384//3384 +f 3384//3384 3376//3376 3373//3373 +f 3384//3384 8289//8289 3374//3374 +f 3376//3376 3384//3384 3375//3375 +f 3384//3384 3374//3374 3375//3375 +f 3294//3294 3377//3377 8258//8258 +f 3294//3294 3376//3376 3377//3377 +f 3376//3376 3375//3375 3377//3377 +f 3382//3382 3327//3327 3346//3346 +f 3346//3346 3383//3383 3382//3382 +f 3346//3346 3378//3378 3379//3379 +f 3383//3383 3346//3346 3380//3380 +f 3346//3346 3379//3379 3380//3380 +f 3384//3384 8292//8292 8289//8289 +f 3384//3384 3383//3383 8292//8292 +f 3383//3383 3380//3380 8292//8292 +f 3384//3384 3381//3381 3382//3382 +f 3382//3382 3383//3383 3384//3384 +f 3441//3441 3385//3385 8914//8914 +f 3441//3441 3393//3393 3385//3385 +f 3393//3393 3387//3387 3385//3385 +f 3441//3441 3444//3444 3393//3393 +f 3392//3392 8911//8911 3386//3386 +f 3393//3393 3392//3392 3387//3387 +f 3392//3392 3386//3386 3387//3387 +f 3438//3438 3388//3388 3389//3389 +f 3389//3389 3390//3390 3438//3438 +f 3389//3389 3548//3548 3391//3391 +f 3391//3391 3390//3390 3389//3389 +f 3391//3391 3392//3392 3393//3393 +f 3393//3393 3390//3390 3391//3391 +f 3393//3393 3444//3444 3438//3438 +f 3438//3438 3390//3390 3393//3393 +f 3394//3394 2338//2338 3239//3239 +f 3239//3239 3396//3396 3394//3394 +f 3239//3239 3395//3395 3397//3397 +f 3397//3397 3396//3396 3239//3239 +f 3397//3397 3392//3392 3391//3391 +f 3391//3391 3396//3396 3397//3397 +f 3391//3391 3548//3548 3394//3394 +f 3394//3394 3396//3396 3391//3391 +f 3395//3395 3237//3237 8905//8905 +f 3397//3397 3395//3395 8907//8907 +f 3395//3395 8905//8905 8907//8907 +f 3392//3392 8908//8908 8911//8911 +f 3392//3392 3397//3397 8908//8908 +f 3397//3397 8907//8907 8908//8908 +f 3399//3399 3427//3427 8938//8938 +f 3427//3427 8939//8939 8938//8938 +f 3399//3399 3398//3398 3555//3555 +f 3398//3398 3399//3399 3400//3400 +f 3399//3399 3402//3402 3400//3400 +f 3399//3399 3401//3401 3402//3402 +f 3399//3399 8938//8938 3401//3401 +f 3312//3312 3403//3403 3314//3314 +f 3398//3398 3400//3400 3404//3404 +f 3312//3312 3311//3311 3406//3406 +f 3555//3555 3398//3398 3405//3405 +f 3398//3398 3404//3404 3405//3405 +f 3406//3406 3555//3555 8925//8925 +f 3555//3555 3405//3405 8925//8925 +f 3312//3312 3406//3406 3403//3403 +f 3406//3406 8925//8925 3403//3403 +f 3560//3560 3588//3588 3407//3407 +f 3407//3407 3413//3413 3560//3560 +f 3560//3560 3413//3413 3408//3408 +f 3409//3409 3458//3458 3424//3424 +f 3424//3424 3412//3412 3409//3409 +f 3424//3424 3410//3410 3411//3411 +f 3411//3411 3412//3412 3424//3424 +f 3411//3411 3408//3408 3413//3413 +f 3413//3413 3412//3412 3411//3411 +f 3413//3413 3407//3407 3409//3409 +f 3409//3409 3412//3412 3413//3413 +f 3414//3414 3420//3420 3716//3716 +f 3716//3716 3415//3415 3414//3414 +f 3716//3716 3719//3719 3417//3417 +f 3417//3417 3415//3415 3716//3716 +f 3417//3417 3408//3408 3411//3411 +f 3411//3411 3415//3415 3417//3417 +f 3411//3411 3410//3410 3414//3414 +f 3414//3414 3415//3415 3411//3411 +f 3719//3719 3723//3723 3416//3416 +f 3416//3416 3417//3417 3719//3719 +f 3408//3408 3417//3417 3416//3416 +f 3418//3418 8900//8900 8904//8904 +f 3418//3418 3419//3419 8900//8900 +f 3418//3418 8894//8894 8897//8897 +f 3418//3418 8897//8897 3419//3419 +f 3420//3420 3414//3414 8949//8949 +f 3414//3414 8953//8953 8949//8949 +f 3414//3414 8979//8979 8953//8953 +f 3414//3414 3410//3410 8978//8978 +f 3410//3410 3421//3421 8978//8978 +f 3414//3414 8978//8978 8979//8979 +f 3424//3424 3458//3458 3422//3422 +f 3458//3458 8981//8981 3422//3422 +f 3424//3424 3422//3422 8980//8980 +f 3410//3410 3424//3424 3421//3421 +f 3424//3424 3423//3423 3421//3421 +f 3424//3424 8980//8980 3423//3423 +f 3428//3428 8941//8941 3429//3429 +f 3426//3426 3936//3936 3425//3425 +f 3426//3426 3425//3425 3720//3720 +f 3720//3720 3428//3428 3426//3426 +f 3427//3427 8940//8940 8939//8939 +f 3427//3427 3428//3428 8940//8940 +f 3428//3428 3429//3429 8940//8940 +f 3426//3426 3428//3428 3427//3427 +f 3740//3740 3437//3437 3741//3741 +f 3437//3437 8921//8921 3741//3741 +f 3437//3437 3430//3430 8921//8921 +f 3437//3437 3431//3431 3433//3433 +f 3431//3431 3432//3432 3433//3433 +f 3437//3437 3433//3433 3430//3430 +f 3435//3435 3729//3729 3576//3576 +f 3576//3576 3436//3436 3435//3435 +f 3576//3576 3439//3439 3434//3434 +f 3434//3434 3436//3436 3576//3576 +f 3434//3434 3431//3431 3437//3437 +f 3437//3437 3436//3436 3434//3434 +f 3437//3437 3740//3740 3435//3435 +f 3435//3435 3436//3436 3437//3437 +f 3573//3573 3388//3388 3438//3438 +f 3438//3438 3440//3440 3573//3573 +f 3438//3438 3444//3444 3442//3442 +f 3442//3442 3440//3440 3438//3438 +f 3442//3442 3431//3431 3434//3434 +f 3434//3434 3440//3440 3442//3442 +f 3434//3434 3439//3439 3573//3573 +f 3573//3573 3440//3440 3434//3434 +f 3441//3441 8914//8914 8919//8919 +f 3445//3445 3441//3441 8918//8918 +f 3441//3441 8919//8919 8918//8918 +f 3445//3445 8918//8918 8916//8916 +f 3431//3431 3442//3442 3432//3432 +f 3442//3442 3443//3443 3432//3432 +f 3442//3442 3445//3445 3443//3443 +f 3445//3445 8916//8916 3443//3443 +f 3442//3442 3444//3444 3441//3441 +f 3441//3441 3445//3445 3442//3442 +f 3446//3446 3603//3603 3531//3531 +f 3531//3531 3448//3448 3446//3446 +f 3531//3531 3447//3447 3448//3448 +f 3448//3448 3449//3449 3450//3450 +f 3450//3450 3582//3582 3446//3446 +f 3446//3446 3448//3448 3450//3450 +f 3451//3451 8988//8988 8987//8987 +f 3455//3455 3451//3451 3452//3452 +f 3451//3451 8987//8987 3452//3452 +f 3453//3453 3457//3457 3459//3459 +f 3457//3457 3454//3454 3459//3459 +f 3457//3457 3455//3455 3454//3454 +f 3455//3455 3452//3452 3454//3454 +f 3457//3457 3449//3449 3448//3448 +f 3448//3448 3455//3455 3457//3457 +f 3448//3448 3447//3447 3451//3451 +f 3451//3451 3455//3455 3448//3448 +f 3409//3409 3407//3407 3456//3456 +f 3456//3456 3449//3449 3457//3457 +f 3457//3457 3409//3409 3456//3456 +f 3457//3457 3453//3453 3458//3458 +f 3458//3458 3409//3409 3457//3457 +f 3588//3588 3582//3582 3450//3450 +f 3450//3450 3407//3407 3588//3588 +f 3450//3450 3449//3449 3456//3456 +f 3456//3456 3407//3407 3450//3450 +f 3453//3453 3459//3459 8983//8983 +f 3458//3458 3453//3453 8981//8981 +f 3453//3453 8983//8983 8981//8981 +f 3460//3460 3472//3472 3483//3483 +f 3472//3472 3462//3462 3483//3483 +f 3472//3472 3461//3461 3462//3462 +f 3461//3461 3466//3466 3462//3462 +f 3472//3472 3469//3469 3464//3464 +f 3464//3464 3461//3461 3472//3472 +f 3464//3464 8964//8964 3463//3463 +f 3461//3461 3464//3464 3465//3465 +f 3464//3464 3463//3463 3465//3465 +f 3461//3461 3465//3465 3466//3466 +f 3480//3480 3516//3516 3515//3515 +f 3515//3515 3467//3467 3480//3480 +f 3515//3515 8968//8968 8966//8966 +f 3467//3467 3515//3515 3468//3468 +f 3515//3515 8966//8966 3468//3468 +f 3464//3464 8963//8963 8964//8964 +f 3464//3464 3467//3467 8963//8963 +f 3467//3467 3468//3468 8963//8963 +f 3464//3464 3469//3469 3480//3480 +f 3480//3480 3467//3467 3464//3464 +f 3472//3472 3460//3460 3496//3496 +f 3496//3496 3473//3473 3472//3472 +f 3496//3496 3476//3476 3470//3470 +f 3470//3470 3473//3473 3496//3496 +f 3470//3470 3474//3474 3471//3471 +f 3471//3471 3473//3473 3470//3470 +f 3471//3471 3469//3469 3472//3472 +f 3472//3472 3473//3473 3471//3471 +f 3881//3881 3474//3474 3470//3470 +f 3470//3470 3475//3475 3881//3881 +f 3470//3470 3476//3476 3492//3492 +f 3492//3492 3475//3475 3470//3470 +f 3508//3508 3482//3482 3478//3478 +f 3482//3482 3477//3477 3478//3478 +f 3482//3482 3479//3479 3477//3477 +f 3479//3479 8503//8503 3477//3477 +f 3482//3482 3474//3474 3881//3881 +f 3881//3881 3479//3479 3482//3482 +f 3506//3506 3516//3516 3480//3480 +f 3480//3480 3481//3481 3506//3506 +f 3480//3480 3469//3469 3471//3471 +f 3471//3471 3481//3481 3480//3480 +f 3471//3471 3474//3474 3482//3482 +f 3482//3482 3481//3481 3471//3471 +f 3482//3482 3508//3508 3506//3506 +f 3506//3506 3481//3481 3482//3482 +f 3497//3497 3460//3460 3484//3484 +f 3460//3460 3483//3483 3484//3484 +f 3497//3497 3484//3484 8961//8961 +f 3497//3497 8960//8960 8962//8962 +f 3497//3497 8961//8961 8960//8960 +f 3954//3954 3485//3485 3955//3955 +f 3485//3485 8967//8967 3955//3955 +f 3954//3954 3972//3972 3485//3485 +f 3972//3972 3486//3486 3499//3499 +f 3972//3972 3499//3499 3487//3487 +f 3499//3499 3488//3488 3487//3487 +f 3499//3499 3498//3498 8965//8965 +f 3499//3499 8965//8965 3488//3488 +f 3886//3886 3489//3489 3976//3976 +f 3966//3966 3489//3489 3490//3490 +f 3966//3966 3897//3897 3495//3495 +f 3495//3495 3971//3971 3966//3966 +f 3495//3495 3486//3486 3972//3972 +f 3972//3972 3971//3971 3495//3495 +f 3972//3972 3954//3954 3491//3491 +f 3954//3954 3974//3974 3491//3491 +f 3492//3492 3494//3494 3896//3896 +f 3492//3492 3476//3476 3493//3493 +f 3493//3493 3494//3494 3492//3492 +f 3493//3493 3486//3486 3495//3495 +f 3495//3495 3494//3494 3493//3493 +f 3495//3495 3897//3897 3896//3896 +f 3896//3896 3494//3494 3495//3495 +f 3496//3496 3460//3460 3497//3497 +f 3497//3497 3500//3500 3496//3496 +f 3499//3499 3497//3497 3498//3498 +f 3497//3497 8962//8962 3498//3498 +f 3499//3499 3500//3500 3497//3497 +f 3499//3499 3486//3486 3493//3493 +f 3493//3493 3500//3500 3499//3499 +f 3493//3493 3476//3476 3496//3496 +f 3496//3496 3500//3500 3493//3493 +f 3501//3501 3911//3911 3912//3912 +f 3601//3601 3911//3911 3501//3501 +f 7454//7454 3502//3502 7453//7453 +f 3502//3502 3503//3503 7453//7453 +f 3504//3504 3502//3502 7454//7454 +f 3912//3912 3502//3502 3504//3504 +f 3609//3609 3912//3912 3504//3504 +f 3504//3504 3613//3613 3609//3609 +f 7454//7454 3613//3613 3504//3504 +f 3602//3602 3601//3601 3501//3501 +f 3501//3501 3912//3912 3609//3609 +f 3688//3688 3516//3516 3506//3506 +f 3506//3506 3505//3505 3688//3688 +f 3506//3506 3508//3508 3510//3510 +f 3510//3510 3505//3505 3506//3506 +f 3510//3510 3507//3507 3512//3512 +f 3512//3512 3505//3505 3510//3510 +f 3512//3512 3678//3678 3688//3688 +f 3688//3688 3505//3505 3512//3512 +f 3510//3510 3924//3924 3507//3507 +f 3510//3510 3508//3508 3509//3509 +f 3508//3508 3478//3478 3509//3509 +f 3924//3924 3510//3510 3511//3511 +f 3510//3510 3509//3509 3511//3511 +f 3507//3507 3924//3924 8494//8494 +f 3924//3924 3923//3923 8494//8494 +f 3513//3513 3507//3507 8493//8493 +f 3507//3507 8494//8494 8493//8493 +f 3513//3513 3594//3594 3514//3514 +f 3514//3514 3678//3678 3512//3512 +f 3512//3512 3513//3513 3514//3514 +f 3512//3512 3507//3507 3513//3513 +f 3515//3515 3516//3516 3687//3687 +f 3515//3515 3687//3687 3517//3517 +f 3687//3687 8971//8971 3517//3517 +f 3687//3687 3518//3518 3519//3519 +f 3518//3518 8972//8972 3519//3519 +f 3687//3687 3519//3519 8971//8971 +f 3515//3515 3520//3520 8968//8968 +f 3515//3515 3517//3517 3520//3520 +f 3683//3683 3681//3681 8974//8974 +f 3683//3683 8974//8974 3521//3521 +f 3518//3518 3683//3683 8972//8972 +f 3683//3683 8973//8973 8972//8972 +f 3683//3683 3521//3521 8973//8973 +f 3522//3522 3608//3608 8991//8991 +f 3522//3522 8991//8991 3536//3536 +f 3451//3451 3523//3523 8988//8988 +f 3451//3451 3526//3526 3523//3523 +f 3526//3526 3524//3524 3523//3523 +f 3451//3451 3447//3447 3525//3525 +f 3525//3525 3526//3526 3451//3451 +f 3528//3528 3526//3526 3525//3525 +f 3528//3528 3537//3537 3527//3527 +f 3526//3526 3528//3528 3524//3524 +f 3528//3528 3527//3527 3524//3524 +f 3531//3531 3603//3603 3529//3529 +f 3525//3525 3529//3529 3530//3530 +f 3525//3525 3447//3447 3531//3531 +f 3531//3531 3529//3529 3525//3525 +f 3532//3532 3602//3602 3533//3533 +f 3533//3533 3522//3522 3534//3534 +f 3534//3534 3532//3532 3533//3533 +f 3534//3534 3525//3525 3530//3530 +f 3530//3530 3532//3532 3534//3534 +f 3534//3534 3522//3522 3535//3535 +f 3522//3522 3536//3536 3535//3535 +f 3528//3528 3534//3534 3537//3537 +f 3534//3534 3535//3535 3537//3537 +f 3528//3528 3525//3525 3534//3534 +f 3541//3541 3538//3538 3542//3542 +f 3542//3542 3830//3830 3539//3539 +f 3539//3539 3540//3540 3543//3543 +f 3543//3543 3542//3542 3539//3539 +f 3543//3543 3570//3570 3541//3541 +f 3541//3541 3542//3542 3543//3543 +f 3827//3827 2342//2342 3544//3544 +f 3544//3544 3546//3546 3827//3827 +f 3544//3544 2339//2339 3545//3545 +f 3545//3545 3546//3546 3544//3544 +f 3545//3545 3540//3540 3539//3539 +f 3539//3539 3546//3546 3545//3545 +f 3539//3539 3830//3830 3827//3827 +f 3827//3827 3546//3546 3539//3539 +f 2339//2339 2338//2338 3394//3394 +f 3394//3394 3547//3547 2339//2339 +f 3394//3394 3548//3548 3549//3549 +f 3549//3549 3547//3547 3394//3394 +f 3549//3549 3540//3540 3545//3545 +f 3545//3545 3547//3547 3549//3549 +f 2339//2339 3547//3547 3545//3545 +f 3389//3389 3388//3388 3575//3575 +f 3575//3575 3550//3550 3389//3389 +f 3575//3575 3570//3570 3543//3543 +f 3543//3543 3550//3550 3575//3575 +f 3543//3543 3540//3540 3549//3549 +f 3549//3549 3550//3550 3543//3543 +f 3549//3549 3548//3548 3389//3389 +f 3389//3389 3550//3550 3549//3549 +f 3842//3842 3836//3836 3552//3552 +f 3552//3552 3557//3557 3551//3551 +f 3551//3551 3842//3842 3552//3552 +f 3841//3841 3842//3842 3551//3551 +f 3861//3861 3553//3553 3838//3838 +f 3861//3861 3565//3565 3553//3553 +f 3553//3553 3557//3557 3552//3552 +f 3552//3552 3836//3836 3838//3838 +f 3838//3838 3553//3553 3552//3552 +f 3565//3565 3427//3427 3399//3399 +f 3399//3399 3554//3554 3565//3565 +f 3399//3399 3555//3555 3556//3556 +f 3556//3556 3554//3554 3399//3399 +f 3556//3556 3557//3557 3553//3553 +f 3553//3553 3554//3554 3556//3556 +f 3565//3565 3554//3554 3553//3553 +f 3311//3311 3551//3551 3406//3406 +f 3311//3311 3841//3841 3551//3551 +f 3551//3551 3557//3557 3556//3556 +f 3556//3556 3555//3555 3406//3406 +f 3406//3406 3551//3551 3556//3556 +f 3564//3564 3852//3852 3558//3558 +f 3562//3562 3852//3852 3564//3564 +f 3559//3559 3588//3588 3560//3560 +f 3560//3560 3408//3408 3563//3563 +f 3563//3563 3559//3559 3560//3560 +f 3563//3563 3558//3558 3561//3561 +f 3561//3561 3559//3559 3563//3563 +f 3416//3416 3723//3723 3722//3722 +f 3722//3722 3564//3564 3416//3416 +f 3722//3722 3562//3562 3564//3564 +f 3564//3564 3558//3558 3563//3563 +f 3563//3563 3408//3408 3416//3416 +f 3416//3416 3564//3564 3563//3563 +f 3566//3566 3936//3936 3426//3426 +f 3565//3565 3861//3861 3427//3427 +f 3861//3861 3566//3566 3426//3426 +f 3427//3427 3861//3861 3426//3426 +f 3577//3577 3942//3942 3567//3567 +f 3571//3571 3578//3578 3568//3568 +f 3568//3568 3567//3567 3571//3571 +f 3577//3577 3567//3567 3568//3568 +f 3569//3569 3538//3538 3541//3541 +f 3541//3541 3570//3570 3574//3574 +f 3574//3574 3569//3569 3541//3541 +f 3574//3574 3578//3578 3571//3571 +f 3571//3571 3569//3569 3574//3574 +f 3575//3575 3388//3388 3573//3573 +f 3573//3573 3572//3572 3575//3575 +f 3573//3573 3439//3439 3579//3579 +f 3579//3579 3572//3572 3573//3573 +f 3579//3579 3578//3578 3574//3574 +f 3574//3574 3572//3572 3579//3579 +f 3574//3574 3570//3570 3575//3575 +f 3575//3575 3572//3572 3574//3574 +f 3729//3729 3568//3568 3576//3576 +f 3729//3729 3577//3577 3568//3568 +f 3568//3568 3578//3578 3579//3579 +f 3579//3579 3439//3439 3576//3576 +f 3576//3576 3568//3568 3579//3579 +f 3879//3879 3586//3586 3561//3561 +f 3879//3879 3880//3880 3581//3581 +f 3581//3581 3586//3586 3879//3879 +f 3877//3877 3875//3875 3580//3580 +f 3580//3580 3585//3585 3584//3584 +f 3584//3584 3877//3877 3580//3580 +f 3581//3581 3877//3877 3584//3584 +f 3581//3581 3880//3880 3877//3877 +f 3604//3604 3603//3603 3446//3446 +f 3446//3446 3583//3583 3604//3604 +f 3446//3446 3582//3582 3587//3587 +f 3587//3587 3583//3583 3446//3446 +f 3587//3587 3581//3581 3584//3584 +f 3584//3584 3583//3583 3587//3587 +f 3584//3584 3585//3585 3604//3604 +f 3604//3604 3583//3583 3584//3584 +f 3559//3559 3586//3586 3588//3588 +f 3559//3559 3561//3561 3586//3586 +f 3586//3586 3581//3581 3587//3587 +f 3587//3587 3582//3582 3588//3588 +f 3588//3588 3586//3586 3587//3587 +f 3589//3589 3592//3592 3590//3590 +f 3592//3592 8487//8487 3590//3590 +f 3592//3592 3591//3591 8487//8487 +f 3591//3591 3593//3593 8487//8487 +f 3592//3592 3705//3705 3597//3597 +f 3597//3597 3591//3591 3592//3592 +f 3597//3597 3596//3596 8490//8490 +f 3591//3591 3597//3597 8488//8488 +f 3597//3597 8490//8490 8488//8488 +f 3591//3591 8488//8488 3593//3593 +f 3701//3701 3594//3594 3513//3513 +f 3513//3513 3595//3595 3701//3701 +f 3597//3597 3595//3595 3596//3596 +f 3595//3595 3598//3598 3596//3596 +f 3597//3597 3705//3705 3701//3701 +f 3701//3701 3595//3595 3597//3597 +f 3595//3595 8492//8492 3598//3598 +f 3595//3595 3513//3513 8492//8492 +f 3513//3513 3922//3922 8492//8492 +f 3580//3580 3875//3875 3915//3915 +f 3915//3915 3600//3600 3580//3580 +f 3599//3599 3600//3600 3915//3915 +f 3600//3600 3585//3585 3580//3580 +f 3599//3599 3915//3915 3914//3914 +f 3532//3532 3914//3914 3602//3602 +f 3532//3532 3530//3530 3599//3599 +f 3599//3599 3914//3914 3532//3532 +f 3914//3914 3601//3601 3602//3602 +f 3529//3529 3603//3603 3604//3604 +f 3604//3604 3585//3585 3600//3600 +f 3600//3600 3529//3529 3604//3604 +f 3599//3599 3529//3529 3600//3600 +f 3599//3599 3530//3530 3529//3529 +f 7565//7565 8998//8998 3605//3605 +f 3607//3607 7565//7565 3606//3606 +f 7565//7565 3605//3605 3606//3606 +f 3609//3609 8996//8996 8994//8994 +f 3609//3609 3607//3607 8996//8996 +f 3607//3607 3606//3606 8996//8996 +f 3522//3522 3611//3611 3608//3608 +f 3611//3611 8993//8993 3608//3608 +f 3609//3609 8994//8994 3610//3610 +f 3611//3611 3609//3609 8993//8993 +f 3609//3609 3610//3610 8993//8993 +f 3533//3533 3602//3602 3501//3501 +f 3501//3501 3611//3611 3533//3533 +f 3609//3609 3611//3611 3501//3501 +f 3611//3611 3522//3522 3533//3533 +f 3613//3613 7454//7454 3612//3612 +f 3612//3612 3607//3607 3613//3613 +f 3612//3612 7565//7565 3607//3607 +f 3613//3613 3607//3607 3609//3609 +f 3638//3638 3614//3614 3615//3615 +f 3615//3615 3617//3617 3638//3638 +f 3615//3615 3624//3624 3623//3623 +f 3623//3623 3617//3617 3615//3615 +f 3623//3623 3622//3622 3616//3616 +f 3616//3616 3617//3617 3623//3623 +f 3616//3616 3618//3618 3638//3638 +f 3638//3638 3617//3617 3616//3616 +f 3660//3660 3619//3619 3620//3620 +f 3620//3620 3621//3621 3660//3660 +f 3620//3620 3699//3699 3627//3627 +f 3627//3627 3621//3621 3620//3620 +f 3627//3627 3622//3622 3623//3623 +f 3623//3623 3621//3621 3627//3627 +f 3623//3623 3624//3624 3660//3660 +f 3660//3660 3621//3621 3623//3623 +f 3625//3625 3906//3906 3908//3908 +f 3908//3908 3626//3626 3625//3625 +f 3629//3629 3626//3626 3908//3908 +f 3629//3629 3622//3622 3627//3627 +f 3627//3627 3626//3626 3629//3629 +f 3627//3627 3699//3699 3625//3625 +f 3625//3625 3626//3626 3627//3627 +f 3616//3616 3628//3628 3618//3618 +f 3616//3616 3622//3622 3629//3629 +f 3629//3629 3628//3628 3616//3616 +f 3629//3629 3908//3908 3628//3628 +f 3630//3630 3735//3735 3643//3643 +f 3631//3631 3636//3636 3635//3635 +f 3635//3635 3643//3643 3631//3631 +f 3635//3635 3632//3632 3630//3630 +f 3630//3630 3643//3643 3635//3635 +f 3634//3634 3636//3636 3631//3631 +f 3631//3631 3657//3657 3634//3634 +f 3633//3633 3850//3850 3636//3636 +f 3634//3634 3633//3633 3636//3636 +f 3635//3635 3848//3848 3632//3632 +f 3636//3636 3848//3848 3635//3635 +f 3636//3636 3850//3850 3848//3848 +f 3639//3639 3614//3614 3638//3638 +f 3638//3638 3637//3637 3639//3639 +f 3638//3638 3618//3618 3642//3642 +f 3642//3642 3637//3637 3638//3638 +f 3634//3634 3637//3637 3642//3642 +f 3634//3634 3657//3657 3639//3639 +f 3639//3639 3637//3637 3634//3634 +f 3641//3641 3640//3640 3618//3618 +f 3633//3633 3640//3640 3641//3641 +f 3633//3633 3634//3634 3642//3642 +f 3642//3642 3640//3640 3633//3633 +f 3618//3618 3640//3640 3642//3642 +f 3657//3657 3631//3631 3646//3646 +f 3646//3646 3655//3655 3657//3657 +f 3655//3655 3646//3646 3649//3649 +f 3646//3646 3645//3645 3649//3649 +f 3643//3643 3735//3735 3737//3737 +f 3737//3737 3647//3647 3643//3643 +f 3737//3737 8946//8946 3644//3644 +f 3647//3647 3737//3737 3648//3648 +f 3737//3737 3644//3644 3648//3648 +f 3646//3646 8951//8951 3645//3645 +f 3646//3646 3647//3647 8951//8951 +f 3647//3647 3648//3648 8951//8951 +f 3646//3646 3631//3631 3643//3643 +f 3643//3643 3647//3647 3646//3646 +f 3655//3655 3649//3649 8950//8950 +f 3653//3653 3614//3614 3639//3639 +f 3639//3639 3650//3650 3653//3653 +f 3639//3639 3657//3657 3652//3652 +f 3652//3652 3650//3650 3639//3639 +f 3652//3652 8948//8948 3651//3651 +f 3650//3650 3652//3652 8954//8954 +f 3652//3652 3651//3651 8954//8954 +f 3653//3653 3654//3654 3663//3663 +f 3653//3653 3650//3650 3654//3654 +f 3650//3650 8954//8954 3654//3654 +f 3652//3652 3656//3656 8948//8948 +f 3652//3652 3655//3655 3656//3656 +f 3655//3655 3658//3658 3656//3656 +f 3657//3657 3655//3655 3652//3652 +f 3655//3655 8950//8950 3658//3658 +f 3659//3659 3619//3619 3660//3660 +f 3660//3660 3661//3661 3659//3659 +f 3660//3660 3624//3624 3666//3666 +f 3666//3666 3661//3661 3660//3660 +f 3666//3666 3672//3672 3671//3671 +f 3671//3671 3661//3661 3666//3666 +f 3671//3671 3669//3669 3659//3659 +f 3659//3659 3661//3661 3671//3671 +f 3615//3615 3614//3614 3653//3653 +f 3653//3653 3665//3665 3615//3615 +f 3664//3664 3653//3653 3662//3662 +f 3653//3653 3663//3663 3662//3662 +f 3664//3664 3665//3665 3653//3653 +f 3664//3664 3672//3672 3666//3666 +f 3666//3666 3665//3665 3664//3664 +f 3666//3666 3624//3624 3615//3615 +f 3615//3615 3665//3665 3666//3666 +f 3672//3672 3664//3664 8957//8957 +f 3664//3664 8959//8959 8957//8957 +f 3664//3664 3667//3667 8959//8959 +f 3664//3664 3662//3662 8952//8952 +f 3664//3664 8952//8952 3667//3667 +f 3670//3670 3668//3668 3682//3682 +f 3670//3670 3674//3674 3668//3668 +f 3674//3674 3675//3675 3668//3668 +f 3670//3670 3669//3669 3671//3671 +f 3671//3671 3674//3674 3670//3670 +f 3671//3671 3672//3672 8956//8956 +f 3672//3672 8957//8957 8956//8956 +f 3674//3674 3671//3671 3673//3673 +f 3671//3671 8956//8956 3673//3673 +f 3674//3674 3673//3673 3675//3675 +f 3514//3514 3594//3594 3700//3700 +f 3700//3700 3676//3676 3514//3514 +f 3700//3700 3695//3695 3677//3677 +f 3677//3677 3676//3676 3700//3700 +f 3677//3677 3689//3689 3691//3691 +f 3691//3691 3676//3676 3677//3677 +f 3691//3691 3678//3678 3514//3514 +f 3514//3514 3676//3676 3691//3691 +f 3679//3679 3619//3619 3659//3659 +f 3659//3659 3680//3680 3679//3679 +f 3659//3659 3669//3669 3685//3685 +f 3685//3685 3680//3680 3659//3659 +f 3685//3685 3689//3689 3677//3677 +f 3677//3677 3680//3680 3685//3685 +f 3677//3677 3695//3695 3679//3679 +f 3679//3679 3680//3680 3677//3677 +f 3683//3683 3670//3670 3681//3681 +f 3670//3670 3682//3682 3681//3681 +f 3683//3683 3684//3684 3670//3670 +f 3683//3683 3518//3518 3686//3686 +f 3686//3686 3684//3684 3683//3683 +f 3686//3686 3689//3689 3685//3685 +f 3685//3685 3684//3684 3686//3686 +f 3685//3685 3669//3669 3670//3670 +f 3670//3670 3684//3684 3685//3685 +f 3687//3687 3516//3516 3688//3688 +f 3688//3688 3690//3690 3687//3687 +f 3688//3688 3678//3678 3691//3691 +f 3691//3691 3690//3690 3688//3688 +f 3691//3691 3689//3689 3686//3686 +f 3686//3686 3690//3690 3691//3691 +f 3686//3686 3518//3518 3687//3687 +f 3687//3687 3690//3690 3686//3686 +f 3692//3692 3906//3906 3625//3625 +f 3625//3625 3693//3693 3692//3692 +f 3625//3625 3699//3699 3698//3698 +f 3698//3698 3693//3693 3625//3625 +f 3698//3698 3704//3704 3694//3694 +f 3694//3694 3693//3693 3698//3698 +f 3694//3694 3927//3927 3692//3692 +f 3692//3692 3693//3693 3694//3694 +f 3620//3620 3619//3619 3679//3679 +f 3679//3679 3696//3696 3620//3620 +f 3679//3679 3695//3695 3697//3697 +f 3697//3697 3696//3696 3679//3679 +f 3697//3697 3704//3704 3698//3698 +f 3698//3698 3696//3696 3697//3697 +f 3698//3698 3699//3699 3620//3620 +f 3620//3620 3696//3696 3698//3698 +f 3700//3700 3594//3594 3701//3701 +f 3701//3701 3702//3702 3700//3700 +f 3701//3701 3705//3705 3706//3706 +f 3706//3706 3702//3702 3701//3701 +f 3706//3706 3704//3704 3697//3697 +f 3697//3697 3702//3702 3706//3706 +f 3697//3697 3695//3695 3700//3700 +f 3700//3700 3702//3702 3697//3697 +f 3592//3592 3589//3589 3929//3929 +f 3929//3929 3703//3703 3592//3592 +f 3929//3929 3927//3927 3694//3694 +f 3694//3694 3703//3703 3929//3929 +f 3694//3694 3704//3704 3706//3706 +f 3706//3706 3703//3703 3694//3694 +f 3706//3706 3705//3705 3592//3592 +f 3592//3592 3703//3703 3706//3706 +f 3428//3428 3708//3708 8941//8941 +f 3708//3708 3707//3707 8941//8941 +f 3708//3708 3709//3709 3707//3707 +f 3708//3708 3717//3717 8943//8943 +f 3717//3717 8944//8944 8943//8943 +f 3708//3708 8943//8943 3709//3709 +f 3714//3714 3420//3420 3710//3710 +f 3420//3420 8949//8949 3710//3710 +f 3714//3714 3710//3710 8947//8947 +f 3717//3717 3714//3714 8944//8944 +f 3714//3714 3711//3711 8944//8944 +f 3714//3714 8947//8947 3711//3711 +f 3712//3712 3723//3723 3719//3719 +f 3719//3719 3713//3713 3712//3712 +f 3712//3712 3713//3713 3724//3724 +f 3716//3716 3420//3420 3714//3714 +f 3714//3714 3715//3715 3716//3716 +f 3714//3714 3717//3717 3718//3718 +f 3718//3718 3715//3715 3714//3714 +f 3718//3718 3724//3724 3713//3713 +f 3713//3713 3715//3715 3718//3718 +f 3713//3713 3719//3719 3716//3716 +f 3716//3716 3715//3715 3713//3713 +f 3708//3708 3428//3428 3720//3720 +f 3720//3720 3425//3425 3718//3718 +f 3718//3718 3717//3717 3708//3708 +f 3708//3708 3720//3720 3718//3718 +f 3425//3425 3936//3936 3726//3726 +f 3726//3726 3718//3718 3425//3425 +f 3724//3724 3718//3718 3726//3726 +f 3562//3562 3725//3725 3932//3932 +f 3932//3932 3725//3725 3721//3721 +f 3722//3722 3723//3723 3712//3712 +f 3712//3712 3725//3725 3722//3722 +f 3712//3712 3724//3724 3721//3721 +f 3721//3721 3725//3725 3712//3712 +f 3725//3725 3562//3562 3722//3722 +f 3936//3936 3938//3938 3726//3726 +f 3721//3721 3724//3724 3726//3726 +f 3726//3726 3938//3938 3721//3721 +f 3728//3728 3942//3942 3577//3577 +f 3727//3727 3728//3728 3729//3729 +f 3731//3731 3728//3728 3727//3727 +f 3731//3731 3951//3951 3728//3728 +f 3728//3728 3577//3577 3729//3729 +f 3730//3730 3735//3735 3630//3630 +f 3630//3630 3949//3949 3730//3730 +f 3630//3630 3632//3632 3949//3949 +f 3949//3949 3951//3951 3731//3731 +f 3730//3730 3949//3949 3731//3731 +f 3738//3738 3732//3732 3733//3733 +f 3738//3738 3734//3734 8945//8945 +f 3734//3734 3739//3739 8945//8945 +f 3738//3738 8945//8945 3732//3732 +f 3737//3737 3735//3735 3730//3730 +f 3730//3730 3731//3731 3736//3736 +f 3736//3736 3734//3734 3738//3738 +f 3738//3738 3730//3730 3736//3736 +f 3737//3737 3738//3738 8946//8946 +f 3738//3738 3733//3733 8946//8946 +f 3737//3737 3730//3730 3738//3738 +f 3727//3727 3729//3729 3435//3435 +f 3435//3435 3740//3740 3742//3742 +f 3742//3742 3727//3727 3435//3435 +f 3742//3742 3734//3734 3736//3736 +f 3736//3736 3727//3727 3742//3742 +f 3736//3736 3731//3731 3727//3727 +f 3734//3734 3742//3742 3739//3739 +f 3742//3742 8942//8942 3739//3739 +f 3742//3742 8937//8937 8942//8942 +f 3742//3742 3740//3740 8936//8936 +f 3740//3740 3741//3741 8936//8936 +f 3742//3742 8936//8936 8937//8937 +f 2001//2001 2258//2258 8432//8432 +f 2258//2258 3743//3743 8432//8432 +f 2001//2001 8432//8432 8431//8431 +f 2258//2258 8385//8385 3743//3743 +f 3749//3749 3744//3744 8309//8309 +f 3749//3749 8308//8308 3744//3744 +f 3749//3749 3750//3750 3745//3745 +f 3749//3749 3745//3745 8308//8308 +f 3745//3745 8305//8305 8308//8308 +f 3745//3745 3824//3824 3746//3746 +f 3824//3824 3825//3825 3746//3746 +f 3745//3745 3746//3746 8305//8305 +f 3772//3772 8313//8313 3747//3747 +f 3772//3772 3748//3748 8313//8313 +f 3748//3748 8312//8312 8313//8313 +f 3772//3772 3751//3751 3753//3753 +f 3753//3753 3748//3748 3772//3772 +f 3753//3753 3750//3750 3749//3749 +f 3749//3749 3748//3748 3753//3753 +f 3749//3749 8309//8309 8311//8311 +f 3748//3748 3749//3749 8312//8312 +f 3749//3749 8311//8311 8312//8312 +f 2330//2330 3750//3750 3753//3753 +f 3753//3753 3752//3752 2330//2330 +f 3753//3753 3751//3751 2327//2327 +f 2327//2327 3752//3752 3753//3753 +f 2342//2342 3824//3824 3745//3745 +f 3745//3745 2343//2343 2342//2342 +f 3745//3745 3750//3750 2330//2330 +f 2330//2330 2343//2343 3745//3745 +f 3754//3754 3755//3755 3756//3756 +f 2847//2847 3755//3755 3754//3754 +f 2847//2847 3761//3761 3766//3766 +f 3766//3766 3755//3755 2847//2847 +f 3766//3766 3775//3775 3756//3756 +f 3756//3756 3755//3755 3766//3766 +f 3757//3757 3762//3762 3758//3758 +f 3762//3762 3759//3759 3758//3758 +f 3762//3762 3761//3761 2847//2847 +f 3762//3762 2847//2847 3759//3759 +f 2847//2847 8434//8434 3759//3759 +f 3769//3769 2841//2841 3760//3760 +f 3760//3760 3767//3767 3769//3769 +f 3767//3767 3761//3761 3762//3762 +f 3762//3762 3757//3757 3769//3769 +f 3769//3769 3767//3767 3762//3762 +f 2842//2842 3763//3763 3765//3765 +f 3765//3765 3764//3764 2842//2842 +f 3765//3765 3775//3775 3766//3766 +f 3766//3766 3764//3764 3765//3765 +f 3766//3766 3761//3761 3767//3767 +f 3767//3767 3764//3764 3766//3766 +f 3767//3767 3760//3760 2842//2842 +f 2842//2842 3764//3764 3767//3767 +f 3757//3757 3758//3758 3768//3768 +f 2868//2868 2841//2841 3769//3769 +f 2868//2868 3769//3769 8439//8439 +f 3769//3769 8472//8472 8439//8439 +f 3769//3769 3757//3757 3770//3770 +f 3757//3757 3768//3768 3770//3770 +f 3769//3769 3770//3770 8472//8472 +f 2868//2868 8439//8439 2870//2870 +f 3771//3771 2825//2825 8324//8324 +f 3771//3771 8324//8324 8326//8326 +f 3772//3772 3747//3747 8316//8316 +f 3773//3773 3772//3772 8320//8320 +f 3772//3772 8316//8316 8320//8320 +f 3776//3776 8319//8319 3777//3777 +f 3776//3776 3773//3773 8319//8319 +f 3773//3773 8320//8320 8319//8319 +f 3783//3783 3773//3773 3776//3776 +f 3783//3783 3751//3751 3772//3772 +f 3772//3772 3773//3773 3783//3783 +f 3756//3756 3778//3778 2899//2899 +f 3778//3778 3774//3774 2899//2899 +f 3756//3756 3775//3775 3784//3784 +f 3784//3784 3778//3778 3756//3756 +f 3784//3784 3783//3783 3776//3776 +f 3776//3776 3778//3778 3784//3784 +f 3776//3776 3777//3777 3779//3779 +f 3778//3778 3776//3776 3774//3774 +f 3776//3776 3779//3779 3774//3774 +f 3765//3765 3763//3763 3780//3780 +f 3780//3780 3781//3781 3765//3765 +f 3780//3780 3782//3782 3781//3781 +f 3781//3781 3783//3783 3784//3784 +f 3784//3784 3775//3775 3765//3765 +f 3765//3765 3781//3781 3784//3784 +f 2327//2327 3751//3751 3783//3783 +f 3783//3783 2898//2898 2327//2327 +f 3781//3781 2898//2898 3783//3783 +f 3781//3781 3782//3782 2898//2898 +f 3785//3785 8269//8269 8272//8272 +f 3785//3785 3180//3180 8270//8270 +f 3180//3180 3789//3789 8270//8270 +f 3785//3785 8270//8270 8269//8269 +f 3186//3186 3786//3786 3787//3787 +f 3786//3786 3815//3815 3787//3787 +f 3186//3186 3787//3787 3788//3788 +f 3180//3180 3186//3186 3789//3789 +f 3186//3186 3790//3790 3789//3789 +f 3186//3186 3788//3788 3790//3790 +f 3231//3231 3230//3230 8274//8274 +f 3199//3199 3792//3792 3791//3791 +f 3792//3792 3793//3793 3791//3791 +f 3792//3792 3811//3811 3800//3800 +f 3792//3792 3800//3800 3793//3793 +f 3800//3800 3794//3794 3793//3793 +f 3800//3800 3799//3799 3795//3795 +f 3800//3800 3795//3795 3794//3794 +f 3812//3812 3214//3214 3796//3796 +f 3796//3796 3798//3798 3812//3812 +f 3796//3796 3797//3797 8285//8285 +f 3798//3798 3796//3796 3802//3802 +f 3796//3796 8285//8285 3802//3802 +f 3800//3800 3801//3801 3799//3799 +f 3800//3800 3798//3798 3801//3801 +f 3798//3798 3802//3802 3801//3801 +f 3800//3800 3811//3811 3812//3812 +f 3812//3812 3798//3798 3800//3800 +f 3199//3199 3803//3803 3792//3792 +f 3806//3806 3803//3803 3199//3199 +f 3806//3806 3807//3807 3813//3813 +f 3813//3813 3803//3803 3806//3806 +f 3813//3813 3811//3811 3792//3792 +f 3792//3792 3803//3803 3813//3813 +f 3804//3804 3806//3806 3200//3200 +f 3804//3804 3805//3805 3809//3809 +f 3809//3809 3806//3806 3804//3804 +f 3809//3809 3807//3807 3806//3806 +f 3806//3806 3199//3199 3200//3200 +f 3823//3823 3193//3193 3808//3808 +f 3814//3814 3807//3807 3809//3809 +f 3809//3809 3808//3808 3814//3814 +f 3809//3809 3805//3805 3823//3823 +f 3823//3823 3808//3808 3809//3809 +f 3188//3188 3214//3214 3812//3812 +f 3812//3812 3810//3810 3188//3188 +f 3812//3812 3811//3811 3813//3813 +f 3813//3813 3810//3810 3812//3812 +f 3813//3813 3807//3807 3814//3814 +f 3814//3814 3810//3810 3813//3813 +f 3188//3188 3810//3810 3814//3814 +f 3786//3786 3817//3817 3815//3815 +f 3817//3817 8265//8265 3815//3815 +f 3817//3817 8264//8264 8265//8265 +f 3817//3817 3816//3816 8263//8263 +f 3816//3816 8262//8262 8263//8263 +f 3817//3817 8263//8263 8264//8264 +f 3816//3816 8261//8261 8262//8262 +f 3804//3804 3200//3200 3299//3299 +f 3299//3299 3305//3305 3820//3820 +f 3820//3820 3804//3804 3299//3299 +f 3820//3820 3821//3821 3818//3818 +f 3818//3818 3804//3804 3820//3820 +f 3818//3818 3805//3805 3804//3804 +f 3834//3834 3301//3301 3831//3831 +f 3301//3301 3303//3303 3831//3831 +f 3834//3834 3819//3819 3301//3301 +f 3834//3834 3822//3822 3821//3821 +f 3821//3821 3819//3819 3834//3834 +f 3820//3820 3819//3819 3821//3821 +f 3820//3820 3305//3305 3301//3301 +f 3301//3301 3819//3819 3820//3820 +f 3822//3822 3841//3841 3307//3307 +f 3307//3307 3821//3821 3822//3822 +f 3818//3818 3821//3821 3307//3307 +f 3823//3823 3805//3805 3818//3818 +f 3818//3818 3307//3307 3193//3193 +f 3193//3193 3823//3823 3818//3818 +f 3824//3824 8303//8303 3825//3825 +f 3830//3830 3826//3826 8300//8300 +f 3827//3827 3830//3830 8301//8301 +f 3830//3830 8300//8300 8301//8301 +f 3824//3824 2342//2342 8303//8303 +f 2342//2342 8302//8302 8303//8303 +f 2342//2342 3827//3827 8302//8302 +f 3827//3827 8301//8301 8302//8302 +f 3538//3538 3829//3829 3542//3542 +f 3538//3538 8296//8296 8297//8297 +f 3829//3829 3538//3538 3828//3828 +f 3538//3538 8297//8297 3828//3828 +f 3830//3830 8299//8299 3826//3826 +f 3830//3830 3829//3829 8299//8299 +f 3829//3829 3828//3828 8299//8299 +f 3542//3542 3829//3829 3830//3830 +f 3834//3834 3831//3831 3832//3832 +f 3833//3833 3834//3834 8266//8266 +f 3834//3834 3832//3832 8266//8266 +f 3833//3833 8266//8266 3835//3835 +f 3837//3837 3833//3833 8260//8260 +f 3833//3833 3835//3835 8260//8260 +f 3833//3833 3822//3822 3834//3834 +f 3858//3858 3839//3839 8256//8256 +f 3837//3837 8260//8260 8257//8257 +f 3858//3858 3861//3861 3838//3838 +f 3838//3838 3836//3836 3837//3837 +f 3838//3838 3837//3837 3840//3840 +f 3837//3837 8257//8257 3840//3840 +f 3858//3858 3838//3838 3839//3839 +f 3838//3838 3840//3840 3839//3839 +f 3842//3842 3841//3841 3822//3822 +f 3822//3822 3843//3843 3842//3842 +f 3833//3833 3843//3843 3822//3822 +f 3837//3837 3843//3843 3833//3833 +f 3837//3837 3836//3836 3842//3842 +f 3842//3842 3843//3843 3837//3837 +f 3846//3846 3632//3632 3848//3848 +f 3850//3850 3844//3844 8288//8288 +f 3848//3848 3850//3850 3845//3845 +f 3850//3850 8288//8288 3845//3845 +f 3846//3846 3847//3847 3946//3946 +f 3846//3846 3848//3848 3847//3847 +f 3848//3848 3845//3845 3847//3847 +f 3850//3850 3849//3849 3844//3844 +f 3850//3850 8287//8287 3849//3849 +f 3850//3850 3633//3633 8287//8287 +f 3633//3633 3868//3868 8287//8287 +f 3561//3561 3558//3558 8252//8252 +f 3558//3558 3855//3855 8252//8252 +f 3561//3561 8252//8252 3851//3851 +f 3852//3852 3562//3562 3853//3853 +f 3562//3562 3933//3933 3853//3853 +f 3852//3852 3853//3853 8253//8253 +f 3852//3852 8253//8253 3854//3854 +f 3558//3558 3852//3852 3855//3855 +f 3852//3852 3854//3854 3855//3855 +f 3862//3862 3858//3858 3859//3859 +f 3858//3858 3856//3856 3859//3859 +f 3858//3858 3857//3857 3856//3856 +f 3858//3858 8256//8256 3857//3857 +f 3862//3862 3859//3859 3860//3860 +f 3862//3862 3936//3936 3566//3566 +f 3566//3566 3861//3861 3858//3858 +f 3566//3566 3858//3858 3862//3862 +f 3538//3538 3569//3569 8294//8294 +f 3569//3569 8295//8295 8294//8294 +f 3569//3569 3571//3571 3863//3863 +f 3571//3571 8293//8293 3863//3863 +f 3569//3569 3863//3863 8295//8295 +f 3538//3538 3864//3864 8296//8296 +f 3538//3538 8294//8294 3864//3864 +f 3942//3942 8290//8290 8291//8291 +f 3567//3567 3942//3942 3865//3865 +f 3942//3942 8291//8291 3865//3865 +f 3567//3567 3865//3865 3866//3866 +f 3571//3571 3567//3567 8293//8293 +f 3567//3567 3866//3866 8293//8293 +f 3633//3633 3867//3867 3868//3868 +f 3641//3641 3618//3618 3870//3870 +f 3870//3870 3869//3869 3641//3641 +f 3870//3870 8478//8478 3871//3871 +f 3869//3869 3870//3870 3872//3872 +f 3870//3870 3871//3871 3872//3872 +f 3869//3869 3872//3872 3873//3873 +f 3633//3633 3641//3641 3867//3867 +f 3641//3641 3874//3874 3867//3867 +f 3641//3641 3869//3869 3874//3874 +f 3869//3869 3873//3873 3874//3874 +f 3920//3920 3875//3875 3877//3877 +f 3920//3920 3877//3877 3876//3876 +f 3877//3877 8248//8248 3876//3876 +f 3877//3877 3880//3880 8248//8248 +f 3880//3880 8251//8251 8248//8248 +f 3880//3880 3878//3878 8251//8251 +f 3920//3920 3876//3876 8245//8245 +f 3879//3879 3561//3561 8246//8246 +f 3561//3561 3851//3851 8246//8246 +f 3879//3879 8246//8246 8247//8247 +f 3880//3880 8250//8250 3878//3878 +f 3880//3880 8249//8249 8250//8250 +f 3880//3880 3879//3879 8249//8249 +f 3879//3879 8247//8247 8249//8249 +f 3589//3589 3590//3590 8485//8485 +f 3479//3479 8505//8505 8503//8503 +f 3479//3479 3881//3881 3883//3883 +f 3881//3881 3882//3882 3883//3883 +f 3479//3479 3883//3883 8505//8505 +f 3475//3475 3492//3492 3884//3884 +f 3492//3492 8530//8530 3884//3884 +f 3475//3475 3884//3884 8529//8529 +f 3475//3475 8529//8529 3885//3885 +f 3881//3881 3475//3475 3882//3882 +f 3475//3475 3885//3885 3882//3882 +f 7826//7826 8517//8517 8516//8516 +f 3901//3901 3886//3886 3961//3961 +f 3888//3888 3961//3961 3962//3962 +f 3888//3888 3887//3887 3893//3893 +f 3893//3893 3891//3891 3888//3888 +f 3893//3893 8514//8514 8511//8511 +f 3891//3891 3893//3893 8512//8512 +f 3893//3893 8511//8511 8512//8512 +f 3901//3901 3889//3889 3890//3890 +f 3901//3901 3891//3891 3889//3889 +f 3891//3891 8512//8512 3889//3889 +f 3894//3894 7833//7833 7832//7832 +f 7832//7832 3895//3895 3894//3894 +f 7832//7832 7826//7826 3892//3892 +f 7826//7826 8516//8516 3892//3892 +f 3895//3895 7832//7832 8515//8515 +f 7832//7832 3892//3892 8515//8515 +f 3893//3893 8513//8513 8514//8514 +f 3893//3893 3895//3895 8513//8513 +f 3895//3895 8515//8515 8513//8513 +f 3893//3893 3887//3887 3894//3894 +f 3894//3894 3895//3895 3893//3893 +f 3492//3492 3896//3896 8530//8530 +f 3896//3896 3900//3900 8530//8530 +f 3896//3896 3897//3897 3898//3898 +f 3898//3898 8527//8527 8528//8528 +f 3896//3896 3898//3898 3899//3899 +f 3898//3898 8528//8528 3899//3899 +f 3896//3896 3899//3899 3900//3900 +f 3489//3489 3886//3886 3490//3490 +f 3901//3901 3902//3902 3966//3966 +f 3901//3901 3890//3890 8510//8510 +f 3902//3902 3901//3901 8509//8509 +f 3901//3901 8510//8510 8509//8509 +f 3898//3898 8526//8526 8527//8527 +f 3898//3898 3902//3902 8526//8526 +f 3902//3902 8509//8509 8526//8526 +f 3898//3898 3897//3897 3966//3966 +f 3966//3966 3902//3902 3898//3898 +f 3904//3904 3907//3907 3903//3903 +f 3904//3904 3903//3903 3905//3905 +f 3870//3870 3618//3618 3628//3628 +f 3870//3870 3628//3628 8476//8476 +f 3628//3628 8477//8477 8476//8476 +f 3628//3628 3908//3908 3904//3904 +f 3628//3628 3904//3904 8477//8477 +f 3904//3904 3905//3905 8477//8477 +f 3870//3870 8476//8476 8478//8478 +f 3908//3908 3906//3906 8480//8480 +f 3906//3906 3925//3925 8480//8480 +f 3904//3904 3908//3908 3907//3907 +f 3908//3908 8480//8480 3907//3907 +f 7935//7935 3913//3913 3909//3909 +f 3913//3913 8538//8538 3909//3909 +f 7935//7935 3909//3909 7934//7934 +f 3502//3502 3910//3910 3503//3503 +f 3502//3502 3912//3912 7935//7935 +f 3502//3502 7935//7935 3910//3910 +f 7935//7935 8542//8542 3910//3910 +f 3911//3911 3601//3601 3913//3913 +f 7935//7935 3911//3911 3913//3913 +f 7935//7935 3912//3912 3911//3911 +f 3917//3917 3921//3921 8540//8540 +f 3913//3913 8541//8541 8538//8538 +f 3917//3917 8540//8540 8539//8539 +f 3913//3913 3601//3601 3914//3914 +f 3914//3914 3916//3916 3913//3913 +f 3914//3914 3915//3915 3917//3917 +f 3917//3917 3916//3916 3914//3914 +f 3916//3916 3917//3917 3918//3918 +f 3917//3917 8539//8539 3918//3918 +f 3913//3913 3916//3916 8541//8541 +f 3916//3916 3918//3918 8541//8541 +f 3915//3915 3875//3875 3920//3920 +f 3920//3920 3917//3917 3915//3915 +f 3920//3920 8245//8245 3919//3919 +f 3917//3917 3920//3920 3921//3921 +f 3920//3920 3919//3919 3921//3921 +f 3513//3513 8493//8493 3922//3922 +f 3924//3924 8497//8497 3923//3923 +f 3924//3924 3511//3511 8497//8497 +f 3906//3906 3692//3692 3925//3925 +f 3692//3692 3926//3926 3925//3925 +f 3692//3692 3927//3927 8482//8482 +f 3927//3927 3928//3928 8482//8482 +f 3692//3692 8482//8482 3926//3926 +f 3929//3929 3589//3589 3930//3930 +f 3589//3589 8485//8485 3930//3930 +f 3929//3929 3930//3930 3931//3931 +f 3927//3927 3929//3929 3928//3928 +f 3929//3929 8484//8484 3928//3928 +f 3929//3929 3931//3931 8484//8484 +f 3562//3562 3932//3932 3933//3933 +f 3932//3932 8254//8254 3933//3933 +f 3932//3932 3721//3721 3934//3934 +f 3721//3721 3939//3939 3934//3934 +f 3932//3932 3934//3934 3935//3935 +f 3932//3932 3935//3935 8254//8254 +f 3938//3938 3936//3936 3862//3862 +f 3938//3938 3862//3862 3940//3940 +f 3862//3862 3937//3937 3940//3940 +f 3862//3862 3860//3860 8255//8255 +f 3862//3862 8255//8255 3937//3937 +f 3721//3721 3938//3938 3939//3939 +f 3938//3938 8479//8479 3939//3939 +f 3938//3938 3940//3940 8479//8479 +f 3728//3728 3941//3941 3942//3942 +f 3951//3951 3941//3941 3728//3728 +f 3951//3951 3943//3943 8474//8474 +f 3941//3941 3951//3951 3944//3944 +f 3951//3951 8474//8474 3944//3944 +f 3942//3942 3945//3945 8290//8290 +f 3942//3942 3941//3941 3945//3945 +f 3941//3941 3944//3944 3945//3945 +f 3949//3949 3632//3632 3846//3846 +f 3846//3846 3950//3950 3949//3949 +f 3846//3846 3946//3946 8475//8475 +f 3950//3950 3846//3846 3948//3948 +f 3846//3846 8475//8475 3948//3948 +f 3951//3951 3947//3947 3943//3943 +f 3951//3951 3950//3950 3947//3947 +f 3950//3950 3948//3948 3947//3947 +f 3949//3949 3950//3950 3951//3951 +f 3886//3886 3975//3975 3952//3952 +f 3489//3489 3974//3974 3976//3976 +f 3974//3974 3954//3954 3982//3982 +f 3984//3984 3978//3978 3953//3953 +f 3954//3954 8969//8969 8970//8970 +f 3954//3954 3955//3955 3980//3980 +f 3960//3960 3959//3959 3956//3956 +f 3959//3959 8997//8997 3956//3956 +f 3959//3959 8995//8995 8997//8997 +f 3959//3959 3964//3964 8992//8992 +f 3964//3964 8990//8990 8992//8992 +f 3959//3959 8992//8992 8995//8995 +f 7901//7901 7833//7833 3894//3894 +f 3894//3894 3957//3957 7901//7901 +f 3894//3894 3887//3887 3958//3958 +f 3958//3958 3957//3957 3894//3894 +f 3958//3958 3964//3964 3959//3959 +f 3959//3959 3957//3957 3958//3958 +f 3959//3959 3960//3960 7901//7901 +f 7901//7901 3957//3957 3959//3959 +f 3961//3961 3886//3886 3962//3962 +f 3975//3975 3984//3984 3952//3952 +f 3969//3969 3984//3984 8982//8982 +f 3984//3984 3953//3953 8982//8982 +f 3963//3963 3969//3969 8985//8985 +f 3969//3969 8984//8984 8985//8985 +f 3963//3963 3964//3964 3958//3958 +f 3958//3958 3965//3965 3963//3963 +f 3958//3958 3887//3887 3888//3888 +f 3888//3888 3965//3965 3958//3958 +f 3964//3964 3963//3963 8990//8990 +f 3963//3963 8989//8989 8990//8990 +f 3963//3963 3979//3979 8989//8989 +f 3969//3969 8982//8982 8984//8984 +f 3966//3966 3971//3971 3489//3489 +f 3971//3971 3974//3974 3489//3489 +f 3967//3967 3975//3975 3977//3977 +f 3975//3975 8955//8955 3977//3977 +f 3888//3888 3891//3891 3961//3961 +f 3891//3891 3901//3901 3961//3961 +f 3975//3975 3981//3981 8955//8955 +f 3981//3981 8976//8976 8955//8955 +f 3984//3984 3975//3975 3967//3967 +f 3952//3952 3984//3984 3968//3968 +f 3965//3965 3888//3888 3973//3973 +f 3886//3886 3901//3901 3490//3490 +f 3901//3901 3966//3966 3490//3490 +f 3963//3963 3965//3965 3969//3969 +f 3965//3965 3984//3984 3969//3969 +f 3975//3975 3974//3974 3981//3981 +f 3485//3485 3972//3972 3970//3970 +f 3972//3972 3487//3487 3970//3970 +f 3485//3485 3970//3970 8967//8967 +f 3974//3974 3971//3971 3491//3491 +f 3971//3971 3972//3972 3491//3491 +f 3973//3973 3952//3952 3968//3968 +f 3973//3973 3886//3886 3952//3952 +f 3982//3982 3954//3954 3983//3983 +f 3954//3954 8970//8970 3983//3983 +f 3981//3981 8975//8975 8976//8976 +f 3886//3886 3973//3973 3962//3962 +f 3973//3973 3888//3888 3962//3962 +f 3974//3974 3975//3975 3976//3976 +f 3975//3975 3886//3886 3976//3976 +f 3967//3967 3977//3977 8977//8977 +f 3984//3984 3967//3967 3978//3978 +f 3967//3967 8977//8977 3978//3978 +f 3963//3963 8986//8986 3979//3979 +f 3954//3954 3980//3980 8969//8969 +f 3981//3981 3982//3982 8975//8975 +f 3982//3982 3983//3983 8975//8975 +f 3981//3981 3974//3974 3982//3982 +f 3984//3984 3965//3965 3968//3968 +f 3965//3965 3973//3973 3968//3968 +f 3963//3963 8985//8985 8986//8986 +f 4096//4096 3991//3991 4001//4001 +f 5024//5024 5023//5023 3985//3985 +f 3985//3985 3989//3989 5024//5024 +f 3989//3989 5025//5025 5024//5024 +f 4001//4001 3989//3989 3985//3985 +f 5069//5069 3986//3986 3988//3988 +f 3988//3988 3987//3987 5069//5069 +f 3992//3992 5062//5062 5069//5069 +f 5069//5069 3987//3987 3992//3992 +f 3989//3989 4001//4001 3992//3992 +f 3992//3992 3987//3987 3989//3989 +f 3988//3988 5025//5025 3989//3989 +f 3989//3989 3987//3987 3988//3988 +f 3990//3990 4570//4570 3993//3993 +f 3993//3993 3991//3991 3990//3990 +f 3992//3992 4001//4001 3991//3991 +f 3993//3993 5062//5062 3992//3992 +f 3992//3992 3991//3991 3993//3993 +f 4124//4124 4123//4123 3994//3994 +f 3999//3999 4126//4126 4124//4124 +f 3999//3999 4124//4124 4000//4000 +f 4000//4000 4124//4124 3994//3994 +f 4820//4820 5190//5190 3995//3995 +f 4820//4820 3995//3995 3997//3997 +f 3997//3997 3995//3995 3999//3999 +f 3995//3995 4126//4126 3999//3999 +f 3996//3996 5098//5098 5095//5095 +f 3997//3997 3999//3999 3996//3996 +f 3996//3996 5095//5095 3997//3997 +f 4821//4821 4820//4820 3997//3997 +f 3997//3997 5095//5095 4821//4821 +f 3998//3998 4106//4106 5092//5092 +f 5092//5092 4000//4000 3998//3998 +f 4000//4000 3994//3994 3998//3998 +f 3996//3996 3999//3999 4000//4000 +f 5092//5092 5098//5098 3996//3996 +f 3996//3996 4000//4000 5092//5092 +f 3985//3985 5023//5023 5323//5323 +f 5323//5323 4005//4005 3985//3985 +f 4004//4004 4001//4001 3985//3985 +f 3985//3985 4005//4005 4004//4004 +f 4002//4002 4003//4003 4004//4004 +f 4004//4004 4005//4005 4002//4002 +f 5323//5323 5324//5324 4002//4002 +f 4002//4002 4005//4005 5323//5323 +f 4007//4007 4008//4008 4105//4105 +f 4105//4105 4096//4096 4007//4007 +f 4004//4004 4003//4003 4007//4007 +f 4007//4007 4096//4096 4004//4004 +f 4096//4096 4001//4001 4004//4004 +f 5109//5109 4106//4106 4009//4009 +f 4009//4009 4006//4006 5109//5109 +f 4011//4011 5105//5105 5109//5109 +f 5109//5109 4006//4006 4011//4011 +f 4007//4007 4003//4003 4011//4011 +f 4011//4011 4006//4006 4007//4007 +f 4009//4009 4008//4008 4007//4007 +f 4007//4007 4006//4006 4009//4009 +f 5326//5326 5363//5363 5106//5106 +f 5106//5106 4010//4010 5326//5326 +f 4002//4002 5324//5324 5326//5326 +f 5326//5326 4010//4010 4002//4002 +f 4011//4011 4003//4003 4002//4002 +f 4002//4002 4010//4010 4011//4011 +f 5106//5106 5105//5105 4011//4011 +f 4011//4011 4010//4010 5106//5106 +f 4012//4012 4565//4565 4013//4013 +f 4013//4013 4014//4014 4012//4012 +f 4014//4014 5269//5269 4012//4012 +f 4013//4013 4017//4017 4015//4015 +f 4015//4015 4014//4014 4013//4013 +f 4029//4029 5269//5269 4014//4014 +f 4043//4043 4028//4028 4016//4016 +f 4018//4018 4044//4044 4043//4043 +f 4043//4043 4016//4016 4018//4018 +f 4029//4029 4014//4014 4018//4018 +f 4018//4018 4016//4016 4029//4029 +f 4571//4571 4570//4570 4050//4050 +f 4050//4050 4019//4019 4571//4571 +f 4015//4015 4017//4017 4571//4571 +f 4571//4571 4019//4019 4015//4015 +f 4018//4018 4014//4014 4015//4015 +f 4015//4015 4019//4019 4018//4018 +f 4050//4050 4044//4044 4018//4018 +f 4018//4018 4019//4019 4050//4050 +f 4604//4604 4022//4022 4020//4020 +f 4021//4021 4022//4022 4604//4604 +f 4020//4020 4022//4022 4038//4038 +f 4038//4038 4022//4022 4024//4024 +f 4022//4022 4021//4021 4024//4024 +f 4023//4023 4025//4025 4035//4035 +f 4024//4024 4021//4021 4025//4025 +f 4024//4024 4025//4025 4023//4023 +f 4612//4612 4607//4607 4026//4026 +f 4026//4026 4025//4025 4612//4612 +f 4612//4612 4025//4025 4021//4021 +f 4026//4026 4035//4035 4025//4025 +f 4028//4028 4607//4607 4027//4027 +f 4027//4027 4016//4016 4028//4028 +f 4032//4032 4029//4029 4016//4016 +f 4027//4027 4030//4030 4032//4032 +f 4032//4032 4016//4016 4027//4027 +f 4031//4031 5265//5265 5266//5266 +f 5266//5266 5269//5269 4031//4031 +f 4031//4031 5269//5269 4029//4029 +f 4624//4624 5317//5317 4033//4033 +f 4032//4032 4030//4030 4624//4624 +f 4624//4624 4033//4033 4032//4032 +f 4031//4031 4029//4029 4032//4032 +f 4032//4032 4033//4033 4031//4031 +f 4033//4033 5265//5265 4031//4031 +f 5190//5190 4034//4034 3995//3995 +f 3995//3995 4034//4034 4126//4126 +f 4034//4034 5190//5190 5194//5194 +f 5194//5194 4121//4121 4034//4034 +f 4034//4034 4121//4121 4126//4126 +f 4023//4023 4035//4035 4117//4117 +f 4041//4041 4024//4024 4023//4023 +f 4041//4041 4023//4023 4042//4042 +f 4117//4117 4109//4109 4042//4042 +f 4042//4042 4023//4023 4117//4117 +f 4037//4037 4020//4020 4038//4038 +f 4036//4036 5186//5186 4037//4037 +f 4037//4037 4038//4038 4036//4036 +f 4036//4036 4038//4038 4041//4041 +f 4038//4038 4024//4024 4041//4041 +f 4036//4036 4041//4041 4082//4082 +f 4082//4082 4039//4039 4036//4036 +f 5187//5187 5186//5186 4036//4036 +f 4036//4036 4039//4039 5187//5187 +f 4109//4109 4040//4040 4042//4042 +f 4082//4082 4041//4041 4042//4042 +f 4042//4042 4040//4040 4082//4082 +f 4056//4056 4028//4028 4043//4043 +f 4043//4043 4046//4046 4056//4056 +f 4051//4051 4045//4045 4046//4046 +f 4043//4043 4044//4044 4051//4051 +f 4051//4051 4046//4046 4043//4043 +f 4046//4046 4045//4045 4047//4047 +f 4047//4047 4142//4142 4046//4046 +f 4141//4141 4056//4056 4046//4046 +f 4046//4046 4142//4142 4141//4141 +f 4048//4048 4052//4052 4089//4089 +f 4089//4089 4138//4138 4048//4048 +f 4047//4047 4045//4045 4048//4048 +f 4048//4048 4138//4138 4047//4047 +f 4050//4050 4570//4570 4100//4100 +f 4100//4100 4049//4049 4050//4050 +f 4051//4051 4044//4044 4050//4050 +f 4050//4050 4049//4049 4051//4051 +f 4048//4048 4045//4045 4051//4051 +f 4051//4051 4049//4049 4048//4048 +f 4100//4100 4052//4052 4048//4048 +f 4048//4048 4049//4049 4100//4100 +f 4053//4053 4054//4054 4055//4055 +f 4055//4055 4054//4054 4035//4035 +f 4053//4053 4056//4056 4141//4141 +f 4026//4026 4607//4607 4028//4028 +f 4028//4028 4055//4055 4026//4026 +f 4055//4055 4035//4035 4026//4026 +f 4056//4056 4053//4053 4055//4055 +f 4056//4056 4055//4055 4028//4028 +f 4133//4133 4089//4089 4057//4057 +f 4133//4133 4057//4057 4059//4059 +f 4058//4058 4066//4066 4059//4059 +f 4059//4059 4057//4057 4058//4058 +f 4057//4057 4095//4095 4058//4058 +f 4059//4059 4066//4066 9163//9163 +f 4066//4066 9157//9157 9163//9163 +f 4133//4133 4059//4059 4134//4134 +f 4059//4059 9165//9165 4134//4134 +f 4059//4059 9163//9163 9165//9165 +f 4093//4093 4061//4061 4060//4060 +f 4058//4058 4095//4095 4060//4060 +f 4060//4060 4061//4061 4058//4058 +f 4058//4058 4061//4061 4066//4066 +f 4093//4093 4063//4063 4066//4066 +f 4066//4066 4061//4061 4093//4093 +f 4062//4062 4066//4066 4063//4063 +f 4071//4071 4065//4065 4062//4062 +f 4062//4062 4063//4063 4071//4071 +f 4064//4064 4130//4130 4071//4071 +f 4071//4071 4063//4063 4064//4064 +f 4062//4062 4065//4065 9155//9155 +f 4065//4065 9153//9153 9155//9155 +f 4062//4062 9155//9155 4067//4067 +f 4066//4066 4062//4062 9157//9157 +f 4062//4062 4067//4067 9157//9157 +f 4065//4065 4070//4070 9153//9153 +f 4132//4132 4068//4068 4146//4146 +f 4146//4146 4069//4069 4132//4132 +f 4071//4071 4130//4130 4132//4132 +f 4132//4132 4069//4069 4071//4071 +f 4065//4065 4071//4071 4070//4070 +f 4071//4071 4072//4072 4070//4070 +f 4071//4071 4069//4069 4072//4072 +f 4069//4069 9150//9150 4072//4072 +f 4146//4146 9146//9146 4073//4073 +f 4069//4069 4146//4146 9150//9150 +f 4146//4146 4073//4073 9150//9150 +f 4040//4040 4109//4109 4074//4074 +f 4074//4074 4076//4076 4040//4040 +f 4075//4075 4082//4082 4040//4040 +f 4040//4040 4076//4076 4075//4075 +f 4075//4075 9175//9175 9173//9173 +f 4075//4075 4076//4076 9175//9175 +f 4076//4076 4078//4078 9175//9175 +f 4074//4074 4077//4077 9176//9176 +f 4077//4077 4088//4088 9176//9176 +f 4076//4076 4074//4074 4078//4078 +f 4074//4074 9176//9176 4078//4078 +f 4079//4079 5187//5187 4039//4039 +f 4039//4039 4083//4083 4079//4079 +f 4087//4087 4080//4080 4079//4079 +f 4079//4079 4083//4083 4087//4087 +f 4087//4087 4075//4075 4081//4081 +f 4075//4075 9173//9173 4081//4081 +f 4087//4087 4083//4083 4075//4075 +f 4039//4039 4082//4082 4075//4075 +f 4075//4075 4083//4083 4039//4039 +f 4086//4086 9169//9169 9168//9168 +f 4086//4086 4084//4084 9169//9169 +f 4087//4087 4081//4081 9170//9170 +f 4087//4087 9170//9170 4085//4085 +f 4086//4086 4080//4080 4087//4087 +f 4086//4086 4087//4087 4084//4084 +f 4087//4087 4085//4085 4084//4084 +f 4077//4077 4112//4112 4088//4088 +f 4089//4089 4090//4090 4057//4057 +f 4091//4091 4095//4095 4057//4057 +f 4057//4057 4090//4090 4091//4091 +f 4101//4101 4092//4092 4091//4091 +f 4091//4091 4090//4090 4101//4101 +f 4089//4089 4052//4052 4101//4101 +f 4101//4101 4090//4090 4089//4089 +f 4094//4094 4093//4093 4060//4060 +f 4094//4094 4060//4060 4098//4098 +f 4091//4091 4092//4092 4098//4098 +f 4098//4098 4060//4060 4091//4091 +f 4060//4060 4095//4095 4091//4091 +f 4103//4103 4099//4099 4096//4096 +f 4097//4097 3991//3991 4096//4096 +f 4096//4096 4099//4099 4097//4097 +f 4098//4098 4092//4092 4097//4097 +f 4097//4097 4099//4099 4098//4098 +f 4103//4103 4094//4094 4098//4098 +f 4098//4098 4099//4099 4103//4103 +f 4100//4100 4570//4570 3990//3990 +f 3990//3990 4102//4102 4100//4100 +f 4101//4101 4052//4052 4100//4100 +f 4100//4100 4102//4102 4101//4101 +f 4097//4097 4092//4092 4101//4101 +f 4101//4101 4102//4102 4097//4097 +f 3990//3990 3991//3991 4097//4097 +f 4097//4097 4102//4102 3990//3990 +f 4103//4103 4096//4096 4105//4105 +f 4107//4107 4104//4104 4094//4094 +f 4094//4094 4103//4103 4107//4107 +f 4105//4105 4008//4008 4107//4107 +f 4107//4107 4103//4103 4105//4105 +f 4094//4094 4104//4104 4093//4093 +f 4104//4104 4118//4118 4093//4093 +f 3994//3994 4123//4123 4118//4118 +f 3994//3994 4118//4118 4108//4108 +f 4108//4108 4118//4118 4104//4104 +f 4009//4009 4106//4106 3998//3998 +f 3998//3998 4108//4108 4009//4009 +f 4107//4107 4008//4008 4009//4009 +f 4009//4009 4108//4108 4107//4107 +f 4108//4108 4104//4104 4107//4107 +f 3998//3998 3994//3994 4108//4108 +f 4109//4109 4116//4116 4074//4074 +f 4110//4110 4077//4077 4074//4074 +f 4074//4074 4116//4116 4110//4110 +f 4116//4116 4114//4114 4110//4110 +f 4110//4110 4114//4114 4111//4111 +f 4110//4110 4111//4111 9174//9174 +f 4111//4111 4115//4115 9174//9174 +f 4077//4077 4110//4110 4112//4112 +f 4110//4110 4113//4113 4112//4112 +f 4110//4110 9174//9174 4113//4113 +f 4114//4114 4053//4053 4141//4141 +f 4114//4114 4141//4141 4111//4111 +f 4111//4111 4141//4141 4115//4115 +f 4141//4141 9172//9172 4115//4115 +f 4117//4117 4035//4035 4054//4054 +f 4116//4116 4109//4109 4117//4117 +f 4117//4117 4054//4054 4116//4116 +f 4116//4116 4054//4054 4114//4114 +f 4054//4054 4053//4053 4114//4114 +f 4118//4118 4063//4063 4093//4093 +f 4063//4063 4118//4118 4119//4119 +f 4123//4123 4119//4119 4118//4118 +f 4121//4121 5194//5194 4122//4122 +f 4120//4120 4126//4126 4121//4121 +f 4129//4129 4128//4128 4120//4120 +f 4120//4120 4121//4121 4129//4129 +f 4122//4122 5146//5146 4129//4129 +f 4129//4129 4121//4121 4122//4122 +f 4125//4125 4119//4119 4123//4123 +f 4123//4123 4124//4124 4125//4125 +f 4120//4120 4128//4128 4125//4125 +f 4125//4125 4124//4124 4120//4120 +f 4124//4124 4126//4126 4120//4120 +f 4064//4064 4063//4063 4119//4119 +f 4131//4131 4130//4130 4064//4064 +f 4064//4064 4119//4119 4131//4131 +f 4125//4125 4128//4128 4131//4131 +f 4131//4131 4119//4119 4125//4125 +f 5148//5148 4068//4068 4132//4132 +f 4132//4132 4127//4127 5148//5148 +f 4129//4129 5146//5146 5148//5148 +f 5148//5148 4127//4127 4129//4129 +f 4131//4131 4128//4128 4129//4129 +f 4129//4129 4127//4127 4131//4131 +f 4132//4132 4130//4130 4131//4131 +f 4131//4131 4127//4127 4132//4132 +f 4133//4133 4134//4134 4135//4135 +f 4145//4145 4136//4136 4137//4137 +f 4138//4138 4089//4089 4133//4133 +f 4133//4133 4139//4139 4138//4138 +f 4145//4145 4047//4047 4138//4138 +f 4138//4138 4139//4139 4145//4145 +f 4145//4145 4139//4139 4136//4136 +f 4139//4139 4140//4140 4136//4136 +f 4139//4139 4133//4133 4140//4140 +f 4133//4133 4135//4135 4140//4140 +f 4141//4141 9171//9171 9172//9172 +f 4141//4141 4142//4142 9171//9171 +f 4142//4142 4143//4143 9171//9171 +f 4142//4142 4145//4145 4143//4143 +f 4145//4145 4144//4144 4143//4143 +f 4142//4142 4047//4047 4145//4145 +f 4145//4145 4137//4137 4144//4144 +f 4146//4146 4068//4068 5245//5245 +f 4146//4146 5245//5245 9143//9143 +f 5245//5245 4147//4147 9143//9143 +f 4146//4146 9145//9145 9146//9146 +f 4146//4146 9143//9143 9145//9145 +f 5245//5245 9141//9141 4147//4147 +f 4148//4148 4202//4202 8802//8802 +f 4202//4202 4208//4208 8802//8802 +f 4148//4148 8802//8802 4150//4150 +f 4157//4157 4148//4148 4149//4149 +f 4148//4148 4151//4151 4149//4149 +f 4148//4148 4150//4150 4151//4151 +f 4153//4153 4152//4152 4201//4201 +f 4201//4201 4155//4155 4153//4153 +f 4154//4154 4225//4225 4153//4153 +f 4153//4153 4155//4155 4154//4154 +f 4148//4148 4157//4157 4154//4154 +f 4154//4154 4155//4155 4148//4148 +f 4201//4201 4202//4202 4148//4148 +f 4148//4148 4155//4155 4201//4201 +f 4630//4630 4720//4720 4218//4218 +f 4218//4218 4156//4156 4630//4630 +f 4158//4158 4633//4633 4630//4630 +f 4630//4630 4156//4156 4158//4158 +f 4154//4154 4157//4157 4158//4158 +f 4158//4158 4156//4156 4154//4154 +f 4218//4218 4225//4225 4154//4154 +f 4154//4154 4156//4156 4218//4218 +f 4158//4158 4157//4157 8800//8800 +f 4157//4157 4149//4149 8800//8800 +f 4158//4158 8800//8800 4159//4159 +f 4633//4633 4158//4158 8799//8799 +f 4158//4158 4160//4160 8799//8799 +f 4158//4158 4159//4159 4160//4160 +f 5225//5225 9160//9160 9159//9159 +f 5225//5225 9159//9159 9158//9158 +f 4161//4161 5225//5225 4162//4162 +f 5225//5225 9158//9158 4162//4162 +f 4161//4161 9156//9156 9154//9154 +f 4161//4161 4162//4162 9156//9156 +f 4168//4168 4167//4167 5220//5220 +f 5220//5220 5219//5219 4168//4168 +f 4168//4168 4161//4161 4163//4163 +f 4161//4161 9154//9154 4163//4163 +f 4168//4168 5219//5219 4161//4161 +f 4179//4179 4178//4178 9151//9151 +f 4178//4178 9149//9149 9151//9151 +f 4178//4178 4164//4164 9149//9149 +f 4164//4164 4166//4166 9149//9149 +f 4164//4164 4165//4165 4166//4166 +f 4168//4168 4163//4163 9152//9152 +f 4164//4164 4168//4168 4165//4165 +f 4168//4168 9152//9152 4165//4165 +f 4178//4178 4167//4167 4168//4168 +f 4168//4168 4164//4164 4178//4178 +f 4169//4169 4170//4170 4171//4171 +f 4173//4173 4172//4172 4169//4169 +f 4169//4169 4171//4171 4173//4173 +f 5220//5220 4167//4167 4173//4173 +f 4173//4173 4171//4171 5220//5220 +f 4668//4668 5532//5532 5206//5206 +f 5206//5206 4174//4174 4668//4668 +f 4177//4177 4660//4660 4668//4668 +f 4668//4668 4174//4174 4177//4177 +f 4169//4169 4172//4172 4177//4177 +f 4177//4177 4174//4174 4169//4169 +f 5206//5206 4170//4170 4169//4169 +f 4169//4169 4174//4174 5206//5206 +f 5477//5477 4175//4175 4660//4660 +f 4660//4660 4176//4176 5477//5477 +f 4181//4181 5475//5475 5477//5477 +f 5477//5477 4176//4176 4181//4181 +f 4177//4177 4172//4172 4181//4181 +f 4181//4181 4176//4176 4177//4177 +f 4177//4177 4176//4176 4660//4660 +f 4178//4178 4179//4179 5471//5471 +f 5471//5471 4180//4180 4178//4178 +f 4173//4173 4167//4167 4178//4178 +f 4178//4178 4180//4180 4173//4173 +f 4181//4181 4172//4172 4173//4173 +f 4173//4173 4180//4180 4181//4181 +f 5471//5471 5475//5475 4181//4181 +f 4181//4181 4180//4180 5471//5471 +f 4230//4230 4726//4726 4185//4185 +f 4185//4185 4182//4182 4230//4230 +f 4187//4187 4183//4183 4230//4230 +f 4230//4230 4182//4182 4187//4187 +f 4184//4184 4190//4190 4187//4187 +f 4187//4187 4182//4182 4184//4184 +f 4185//4185 4682//4682 4184//4184 +f 4184//4184 4182//4182 4185//4185 +f 4192//4192 4213//4213 4228//4228 +f 4228//4228 4186//4186 4192//4192 +f 4188//4188 4196//4196 4192//4192 +f 4192//4192 4186//4186 4188//4188 +f 4187//4187 4190//4190 4188//4188 +f 4188//4188 4186//4186 4187//4187 +f 4228//4228 4183//4183 4187//4187 +f 4187//4187 4186//4186 4228//4228 +f 4188//4188 4190//4190 4189//4189 +f 4189//4189 4260//4260 4188//4188 +f 4188//4188 4260//4260 4196//4196 +f 4184//4184 4682//4682 4254//4254 +f 4254//4254 4191//4191 4184//4184 +f 4189//4189 4190//4190 4184//4184 +f 4184//4184 4191//4191 4189//4189 +f 4217//4217 4213//4213 4192//4192 +f 4192//4192 4193//4193 4217//4217 +f 4195//4195 4194//4194 4217//4217 +f 4217//4217 4193//4193 4195//4195 +f 4236//4236 4200//4200 4195//4195 +f 4195//4195 4193//4193 4236//4236 +f 4192//4192 4196//4196 4236//4236 +f 4236//4236 4193//4193 4192//4192 +f 4210//4210 8808//8808 4197//4197 +f 4210//4210 4198//4198 8808//8808 +f 4198//4198 8809//8809 8808//8808 +f 4243//4243 4199//4199 8801//8801 +f 4198//4198 4243//4243 8809//8809 +f 4243//4243 8801//8801 8809//8809 +f 4195//4195 4200//4200 4243//4243 +f 4243//4243 4198//4198 4195//4195 +f 4210//4210 4194//4194 4195//4195 +f 4195//4195 4198//4198 4210//4210 +f 4201//4201 4152//4152 4205//4205 +f 4205//4205 4204//4204 4201//4201 +f 4203//4203 4202//4202 4201//4201 +f 4201//4201 4204//4204 4203//4203 +f 4214//4214 4206//4206 4203//4203 +f 4203//4203 4204//4204 4214//4214 +f 4205//4205 4215//4215 4214//4214 +f 4214//4214 4204//4204 4205//4205 +f 4203//4203 4206//4206 4207//4207 +f 4206//4206 8803//8803 4207//4207 +f 4203//4203 4207//4207 8804//8804 +f 4202//4202 4203//4203 4208//4208 +f 4203//4203 4209//4209 4208//4208 +f 4203//4203 8804//8804 4209//4209 +f 4210//4210 4197//4197 8805//8805 +f 4210//4210 8805//8805 8807//8807 +f 4211//4211 4194//4194 4210//4210 +f 4211//4211 4210//4210 8806//8806 +f 4210//4210 8807//8807 8806//8806 +f 4206//4206 4211//4211 8803//8803 +f 4211//4211 4212//4212 8803//8803 +f 4211//4211 8806//8806 4212//4212 +f 4229//4229 4213//4213 4217//4217 +f 4217//4217 4216//4216 4229//4229 +f 4214//4214 4215//4215 4229//4229 +f 4229//4229 4216//4216 4214//4214 +f 4211//4211 4206//4206 4214//4214 +f 4214//4214 4216//4216 4211//4211 +f 4217//4217 4194//4194 4211//4211 +f 4211//4211 4216//4216 4217//4217 +f 4218//4218 4720//4720 4722//4722 +f 4722//4722 4219//4219 4218//4218 +f 4221//4221 4225//4225 4218//4218 +f 4218//4218 4219//4219 4221//4221 +f 4222//4222 4220//4220 4221//4221 +f 4221//4221 4219//4219 4222//4222 +f 4722//4722 4729//4729 4222//4222 +f 4222//4222 4219//4219 4722//4722 +f 4205//4205 4152//4152 4153//4153 +f 4153//4153 4224//4224 4205//4205 +f 4223//4223 4215//4215 4205//4205 +f 4205//4205 4224//4224 4223//4223 +f 4221//4221 4220//4220 4223//4223 +f 4223//4223 4224//4224 4221//4221 +f 4153//4153 4225//4225 4221//4221 +f 4221//4221 4224//4224 4153//4153 +f 4228//4228 4213//4213 4229//4229 +f 4229//4229 4226//4226 4228//4228 +f 4227//4227 4183//4183 4228//4228 +f 4228//4228 4226//4226 4227//4227 +f 4223//4223 4220//4220 4227//4227 +f 4227//4227 4226//4226 4223//4223 +f 4229//4229 4215//4215 4223//4223 +f 4223//4223 4226//4226 4229//4229 +f 4727//4727 4726//4726 4230//4230 +f 4230//4230 4231//4231 4727//4727 +f 4222//4222 4729//4729 4727//4727 +f 4727//4727 4231//4231 4222//4222 +f 4227//4227 4220//4220 4222//4222 +f 4222//4222 4231//4231 4227//4227 +f 4230//4230 4183//4183 4227//4227 +f 4227//4227 4231//4231 4230//4230 +f 4246//4246 4232//4232 8780//8780 +f 4232//4232 4233//4233 8780//8780 +f 4246//4246 8780//8780 8779//8779 +f 4246//4246 8781//8781 4234//4234 +f 4246//4246 8779//8779 8781//8781 +f 4236//4236 4196//4196 4256//4256 +f 4256//4256 4235//4235 4236//4236 +f 4242//4242 4200//4200 4236//4236 +f 4236//4236 4235//4235 4242//4242 +f 4249//4249 4250//4250 4242//4242 +f 4242//4242 4235//4235 4249//4249 +f 4256//4256 4237//4237 4249//4249 +f 4249//4249 4235//4235 4256//4256 +f 4243//4243 4239//4239 4199//4199 +f 4243//4243 4238//4238 4239//4239 +f 4238//4238 8783//8783 4239//4239 +f 4247//4247 4240//4240 4241//4241 +f 4238//4238 4247//4247 8783//8783 +f 4247//4247 4241//4241 8783//8783 +f 4242//4242 4250//4250 4247//4247 +f 4247//4247 4238//4238 4242//4242 +f 4243//4243 4200//4200 4242//4242 +f 4242//4242 4238//4238 4243//4243 +f 5372//5372 4232//4232 4246//4246 +f 4246//4246 4244//4244 5372//5372 +f 4253//4253 4245//4245 5372//5372 +f 5372//5372 4244//4244 4253//4253 +f 4247//4247 4250//4250 4253//4253 +f 4253//4253 4244//4244 4247//4247 +f 4247//4247 4246//4246 4240//4240 +f 4246//4246 4234//4234 4240//4240 +f 4247//4247 4244//4244 4246//4246 +f 4248//4248 4261//4261 4252//4252 +f 4252//4252 4251//4251 4248//4248 +f 4249//4249 4237//4237 4248//4248 +f 4248//4248 4251//4251 4249//4249 +f 4253//4253 4250//4250 4249//4249 +f 4249//4249 4251//4251 4253//4253 +f 4252//4252 4245//4245 4253//4253 +f 4253//4253 4251//4251 4252//4252 +f 4191//4191 4254//4254 4255//4255 +f 4258//4258 4189//4189 4191//4191 +f 4267//4267 4259//4259 4258//4258 +f 4258//4258 4191//4191 4267//4267 +f 4255//4255 4266//4266 4267//4267 +f 4267//4267 4191//4191 4255//4255 +f 4256//4256 4196//4196 4260//4260 +f 4260//4260 4257//4257 4256//4256 +f 4263//4263 4237//4237 4256//4256 +f 4256//4256 4257//4257 4263//4263 +f 4258//4258 4259//4259 4263//4263 +f 4263//4263 4257//4257 4258//4258 +f 4260//4260 4189//4189 4258//4258 +f 4258//4258 4257//4257 4260//4260 +f 5380//5380 4261//4261 4248//4248 +f 4248//4248 4262//4262 5380//5380 +f 4264//4264 5375//5375 5380//5380 +f 5380//5380 4262//4262 4264//4264 +f 4263//4263 4259//4259 4264//4264 +f 4264//4264 4262//4262 4263//4263 +f 4248//4248 4237//4237 4263//4263 +f 4263//4263 4262//4262 4248//4248 +f 4265//4265 5385//5385 5376//5376 +f 4267//4267 4266//4266 4265//4265 +f 4265//4265 5376//5376 4267//4267 +f 4264//4264 4259//4259 4267//4267 +f 4267//4267 5376//5376 4264//4264 +f 5376//5376 5375//5375 4264//4264 +f 5367//5367 4272//4272 4268//4268 +f 4272//4272 8772//8772 4268//4268 +f 5367//5367 4268//4268 8773//8773 +f 4272//4272 8771//8771 8772//8772 +f 4270//4270 5378//5378 4281//4281 +f 4274//4274 4269//4269 4270//4270 +f 5279//5279 4273//4273 4274//4274 +f 4274//4274 4270//4270 5279//5279 +f 5279//5279 4270//4270 4281//4281 +f 4271//4271 4272//4272 5367//5367 +f 5367//5367 4275//4275 4271//4271 +f 4274//4274 4273//4273 4271//4271 +f 4271//4271 4275//4275 4274//4274 +f 4275//4275 4269//4269 4274//4274 +f 4273//4273 5284//5284 4271//4271 +f 4272//4272 4271//4271 8771//8771 +f 4271//4271 4277//4277 8771//8771 +f 4271//4271 5284//5284 4277//4277 +f 5284//5284 4276//4276 4277//4277 +f 4282//4282 5278//5278 5279//5279 +f 5279//5279 4281//4281 4282//4282 +f 4278//4278 5381//5381 4279//4279 +f 4279//4279 4286//4286 4278//4278 +f 4284//4284 5382//5382 4278//4278 +f 4278//4278 4286//4286 4284//4284 +f 4279//4279 4280//4280 4286//4286 +f 4281//4281 5378//5378 5379//5379 +f 5379//5379 4285//4285 4281//4281 +f 5379//5379 5382//5382 4284//4284 +f 4284//4284 4285//4285 5379//5379 +f 4582//4582 5278//5278 4282//4282 +f 4282//4282 4285//4285 4582//4582 +f 4283//4283 4581//4581 4582//4582 +f 4582//4582 4285//4285 4283//4283 +f 4285//4285 4284//4284 4283//4283 +f 4282//4282 4281//4281 4285//4285 +f 4280//4280 5057//5057 4575//4575 +f 4575//4575 4286//4286 4280//4280 +f 4283//4283 4284//4284 4286//4286 +f 4575//4575 4581//4581 4283//4283 +f 4283//4283 4286//4286 4575//4575 +f 4292//4292 4401//4401 4287//4287 +f 4401//4401 8652//8652 4287//4287 +f 4292//4292 4287//4287 4288//4288 +f 4289//4289 4295//4295 4292//4292 +f 4289//4289 4292//4292 8648//8648 +f 4292//4292 4288//4288 8648//8648 +f 4289//4289 8649//8649 8650//8650 +f 4289//4289 8648//8648 8649//8649 +f 4413//4413 4290//4290 4395//4395 +f 4395//4395 4293//4293 4413//4413 +f 4291//4291 4297//4297 4413//4413 +f 4413//4413 4293//4293 4291//4291 +f 4292//4292 4295//4295 4291//4291 +f 4291//4291 4293//4293 4292//4292 +f 4395//4395 4401//4401 4292//4292 +f 4292//4292 4293//4293 4395//4395 +f 4308//4308 4303//4303 4408//4408 +f 4408//4408 4294//4294 4308//4308 +f 4296//4296 4309//4309 4308//4308 +f 4308//4308 4294//4294 4296//4296 +f 4291//4291 4295//4295 4296//4296 +f 4296//4296 4294//4294 4291//4291 +f 4408//4408 4297//4297 4291//4291 +f 4291//4291 4294//4294 4408//4408 +f 4319//4319 4300//4300 4298//4298 +f 4319//4319 4299//4299 4300//4300 +f 4299//4299 8647//8647 4300//4300 +f 4289//4289 8650//8650 4301//4301 +f 4299//4299 4289//4289 8647//8647 +f 4289//4289 4301//4301 8647//8647 +f 4296//4296 4295//4295 4289//4289 +f 4289//4289 4299//4299 4296//4296 +f 4319//4319 4309//4309 4296//4296 +f 4296//4296 4299//4299 4319//4319 +f 4302//4302 4303//4303 4308//4308 +f 4308//4308 4304//4304 4302//4302 +f 4307//4307 4426//4426 4302//4302 +f 4302//4302 4304//4304 4307//4307 +f 4305//4305 4306//4306 4307//4307 +f 4307//4307 4304//4304 4305//4305 +f 4308//4308 4309//4309 4305//4305 +f 4305//4305 4304//4304 4308//4308 +f 4310//4310 4423//4423 4311//4311 +f 4311//4311 4312//4312 4310//4310 +f 4313//4313 4377//4377 4310//4310 +f 4310//4310 4312//4312 4313//4313 +f 4307//4307 4306//4306 4313//4313 +f 4313//4313 4312//4312 4307//4307 +f 4311//4311 4426//4426 4307//4307 +f 4307//4307 4312//4312 4311//4311 +f 4374//4374 4314//4314 4375//4375 +f 4374//4374 4316//4316 4314//4314 +f 4316//4316 8651//8651 4314//4314 +f 4315//4315 4322//4322 8825//8825 +f 4316//4316 4315//4315 8651//8651 +f 4315//4315 8825//8825 8651//8651 +f 4313//4313 4306//4306 4315//4315 +f 4315//4315 4316//4316 4313//4313 +f 4374//4374 4377//4377 4313//4313 +f 4313//4313 4316//4316 4374//4374 +f 4319//4319 4298//4298 4317//4317 +f 4320//4320 4319//4319 4318//4318 +f 4319//4319 4317//4317 4318//4318 +f 4305//4305 4309//4309 4319//4319 +f 4319//4319 4320//4320 4305//4305 +f 4315//4315 4306//4306 4305//4305 +f 4305//4305 4320//4320 4315//4315 +f 4315//4315 4321//4321 4322//4322 +f 4315//4315 4320//4320 4321//4321 +f 4320//4320 4318//4318 4321//4321 +f 4328//4328 4323//4323 4324//4324 +f 4326//4326 4325//4325 4324//4324 +f 4324//4324 4323//4323 4326//4326 +f 4323//4323 4595//4595 4326//4326 +f 4328//4328 4329//4329 4323//4323 +f 5177//5177 4593//4593 4020//4020 +f 4326//4326 4595//4595 4593//4593 +f 5177//5177 4325//4325 4326//4326 +f 4326//4326 4593//4593 5177//5177 +f 5170//5170 4584//4584 5171//5171 +f 5169//5169 4327//4327 4328//4328 +f 5171//5171 4329//4329 4328//4328 +f 4328//4328 4327//4327 5171//5171 +f 5171//5171 4327//4327 5169//5169 +f 5171//5171 4584//4584 4329//4329 +f 4435//4435 4330//4330 4369//4369 +f 4369//4369 4332//4332 4435//4435 +f 4337//4337 4432//4432 4435//4435 +f 4435//4435 4332//4332 4337//4337 +f 4331//4331 4338//4338 4337//4337 +f 4337//4337 4332//4332 4331//4331 +f 4369//4369 4371//4371 4331//4331 +f 4331//4331 4332//4332 4369//4369 +f 4335//4335 4429//4429 4431//4431 +f 4431//4431 4333//4333 4335//4335 +f 4336//4336 4334//4334 4335//4335 +f 4335//4335 4333//4333 4336//4336 +f 4337//4337 4338//4338 4336//4336 +f 4336//4336 4333//4333 4337//4337 +f 4431//4431 4432//4432 4337//4337 +f 4337//4337 4333//4333 4431//4431 +f 4371//4371 4440//4440 4331//4331 +f 4331//4331 4440//4440 4338//4338 +f 4339//4339 4429//4429 4335//4335 +f 4335//4335 4341//4341 4339//4339 +f 4343//4343 4340//4340 4339//4339 +f 4339//4339 4341//4341 4343//4343 +f 4479//4479 4342//4342 4343//4343 +f 4343//4343 4341//4341 4479//4479 +f 4335//4335 4334//4334 4479//4479 +f 4479//4479 4341//4341 4335//4335 +f 4355//4355 4350//4350 4346//4346 +f 4346//4346 4347//4347 4355//4355 +f 4344//4344 4345//4345 4355//4355 +f 4355//4355 4347//4347 4344//4344 +f 4343//4343 4342//4342 4344//4344 +f 4344//4344 4347//4347 4343//4343 +f 4346//4346 4340//4340 4343//4343 +f 4343//4343 4347//4347 4346//4346 +f 4349//4349 4348//4348 4345//4345 +f 4342//4342 4349//4349 4344//4344 +f 4344//4344 4349//4349 4345//4345 +f 4403//4403 4350//4350 4355//4355 +f 4355//4355 4352//4352 4403//4403 +f 4351//4351 4402//4402 4403//4403 +f 4403//4403 4352//4352 4351//4351 +f 4354//4354 4353//4353 4351//4351 +f 4351//4351 4352//4352 4354//4354 +f 4355//4355 4345//4345 4354//4354 +f 4354//4354 4352//4352 4355//4355 +f 4356//4356 8818//8818 8820//8820 +f 4359//4359 4360//4360 4357//4357 +f 4356//4356 4359//4359 8818//8818 +f 4359//4359 4357//4357 8818//8818 +f 4351//4351 4353//4353 4359//4359 +f 4359//4359 4356//4356 4351//4351 +f 4402//4402 4351//4351 4358//4358 +f 4351//4351 8821//8821 4358//4358 +f 4351//4351 4356//4356 8821//8821 +f 4356//4356 8820//8820 8821//8821 +f 4359//4359 4353//4353 4361//4361 +f 4361//4361 4465//4465 4359//4359 +f 4359//4359 4465//4465 4360//4360 +f 4465//4465 4464//4464 4360//4360 +f 4345//4345 4348//4348 4362//4362 +f 4362//4362 4354//4354 4345//4345 +f 4361//4361 4353//4353 4354//4354 +f 4361//4361 4354//4354 4362//4362 +f 4363//4363 4388//4388 8657//8657 +f 4365//4365 4363//4363 8658//8658 +f 4363//4363 8657//8657 8658//8658 +f 4364//4364 4384//4384 4363//4363 +f 4363//4363 4365//4365 4364//4364 +f 4373//4373 4372//4372 4364//4364 +f 4364//4364 4365//4365 4373//4373 +f 4373//4373 4366//4366 8659//8659 +f 4373//4373 4365//4365 4366//4366 +f 4365//4365 8658//8658 4366//4366 +f 4369//4369 4330//4330 4383//4383 +f 4383//4383 4367//4367 4369//4369 +f 4368//4368 4371//4371 4369//4369 +f 4369//4369 4367//4367 4368//4368 +f 4364//4364 4372//4372 4368//4368 +f 4368//4368 4367//4367 4364//4364 +f 4383//4383 4384//4384 4364//4364 +f 4364//4364 4367//4367 4383//4383 +f 4368//4368 4372//4372 4448//4448 +f 4448//4448 4370//4370 4368//4368 +f 4368//4368 4370//4370 4371//4371 +f 4447//4447 4373//4373 4444//4444 +f 4373//4373 8659//8659 4444//4444 +f 4448//4448 4372//4372 4373//4373 +f 4373//4373 4447//4447 4448//4448 +f 4374//4374 4375//4375 8653//8653 +f 4379//4379 4374//4374 4376//4376 +f 4374//4374 8653//8653 4376//4376 +f 4382//4382 4377//4377 4374//4374 +f 4374//4374 4379//4379 4382//4382 +f 4391//4391 4393//4393 4382//4382 +f 4382//4382 4379//4379 4391//4391 +f 4391//4391 8817//8817 4378//4378 +f 4391//4391 4379//4379 8817//8817 +f 4379//4379 4376//4376 8817//8817 +f 4380//4380 4423//4423 4310//4310 +f 4310//4310 4381//4381 4380//4380 +f 4386//4386 4436//4436 4380//4380 +f 4380//4380 4381//4381 4386//4386 +f 4382//4382 4393//4393 4386//4386 +f 4386//4386 4381//4381 4382//4382 +f 4310//4310 4377//4377 4382//4382 +f 4382//4382 4381//4381 4310//4310 +f 4383//4383 4330//4330 4434//4434 +f 4434//4434 4387//4387 4383//4383 +f 4385//4385 4384//4384 4383//4383 +f 4383//4383 4387//4387 4385//4385 +f 4386//4386 4393//4393 4385//4385 +f 4385//4385 4387//4387 4386//4386 +f 4434//4434 4436//4436 4386//4386 +f 4386//4386 4387//4387 4434//4434 +f 4363//4363 4390//4390 4388//4388 +f 4363//4363 4394//4394 4390//4390 +f 4394//4394 4389//4389 4390//4390 +f 4391//4391 4378//4378 4392//4392 +f 4394//4394 4391//4391 4389//4389 +f 4391//4391 4392//4392 4389//4389 +f 4385//4385 4393//4393 4391//4391 +f 4391//4391 4394//4394 4385//4385 +f 4363//4363 4384//4384 4385//4385 +f 4385//4385 4394//4394 4363//4363 +f 4395//4395 4290//4290 4414//4414 +f 4414//4414 4396//4396 4395//4395 +f 4398//4398 4401//4401 4395//4395 +f 4395//4395 4396//4396 4398//4398 +f 4405//4405 4399//4399 4398//4398 +f 4398//4398 4396//4396 4405//4405 +f 4414//4414 4397//4397 4405//4405 +f 4405//4405 4396//4396 4414//4414 +f 4398//4398 4399//4399 8655//8655 +f 4399//4399 4400//4400 8655//8655 +f 4398//4398 8655//8655 8824//8824 +f 4401//4401 4398//4398 8652//8652 +f 4398//4398 8823//8823 8652//8652 +f 4398//4398 8824//8824 8823//8823 +f 4406//4406 4402//4402 8822//8822 +f 4402//4402 4358//4358 8822//8822 +f 4406//4406 8822//8822 8819//8819 +f 4399//4399 4406//4406 4400//4400 +f 4406//4406 8654//8654 4400//4400 +f 4406//4406 8819//8819 8654//8654 +f 4418//4418 4350//4350 4403//4403 +f 4403//4403 4404//4404 4418//4418 +f 4405//4405 4397//4397 4418//4418 +f 4418//4418 4404//4404 4405//4405 +f 4406//4406 4399//4399 4405//4405 +f 4405//4405 4404//4404 4406//4406 +f 4403//4403 4402//4402 4406//4406 +f 4406//4406 4404//4404 4403//4403 +f 4408//4408 4303//4303 4407//4407 +f 4407//4407 4409//4409 4408//4408 +f 4410//4410 4297//4297 4408//4408 +f 4408//4408 4409//4409 4410//4410 +f 4412//4412 4416//4416 4410//4410 +f 4410//4410 4409//4409 4412//4412 +f 4407//4407 4411//4411 4412//4412 +f 4412//4412 4409//4409 4407//4407 +f 4414//4414 4290//4290 4413//4413 +f 4413//4413 4415//4415 4414//4414 +f 4417//4417 4397//4397 4414//4414 +f 4414//4414 4415//4415 4417//4417 +f 4410//4410 4416//4416 4417//4417 +f 4417//4417 4415//4415 4410//4410 +f 4413//4413 4297//4297 4410//4410 +f 4410//4410 4415//4415 4413//4413 +f 4346//4346 4350//4350 4418//4418 +f 4418//4418 4419//4419 4346//4346 +f 4420//4420 4340//4340 4346//4346 +f 4346//4346 4419//4419 4420//4420 +f 4417//4417 4416//4416 4420//4420 +f 4420//4420 4419//4419 4417//4417 +f 4418//4418 4397//4397 4417//4417 +f 4417//4417 4419//4419 4418//4418 +f 4421//4421 4429//4429 4339//4339 +f 4339//4339 4422//4422 4421//4421 +f 4412//4412 4411//4411 4421//4421 +f 4421//4421 4422//4422 4412//4412 +f 4420//4420 4416//4416 4412//4412 +f 4412//4412 4422//4422 4420//4420 +f 4339//4339 4340//4340 4420//4420 +f 4420//4420 4422//4422 4339//4339 +f 4311//4311 4423//4423 4380//4380 +f 4380//4380 4424//4424 4311//4311 +f 4425//4425 4426//4426 4311//4311 +f 4311//4311 4424//4424 4425//4425 +f 4427//4427 4438//4438 4425//4425 +f 4425//4425 4424//4424 4427//4427 +f 4380//4380 4436//4436 4427//4427 +f 4427//4427 4424//4424 4380//4380 +f 4407//4407 4303//4303 4302//4302 +f 4302//4302 4428//4428 4407//4407 +f 4433//4433 4411//4411 4407//4407 +f 4407//4407 4428//4428 4433//4433 +f 4425//4425 4438//4438 4433//4433 +f 4433//4433 4428//4428 4425//4425 +f 4302//4302 4426//4426 4425//4425 +f 4425//4425 4428//4428 4302//4302 +f 4431//4431 4429//4429 4421//4421 +f 4421//4421 4430//4430 4431//4431 +f 4437//4437 4432//4432 4431//4431 +f 4431//4431 4430//4430 4437//4437 +f 4433//4433 4438//4438 4437//4437 +f 4437//4437 4430//4430 4433//4433 +f 4421//4421 4411//4411 4433//4433 +f 4433//4433 4430//4430 4421//4421 +f 4434//4434 4330//4330 4435//4435 +f 4435//4435 4439//4439 4434//4434 +f 4427//4427 4436//4436 4434//4434 +f 4434//4434 4439//4439 4427//4427 +f 4437//4437 4438//4438 4427//4427 +f 4427//4427 4439//4439 4437//4437 +f 4435//4435 4432//4432 4437//4437 +f 4437//4437 4439//4439 4435//4435 +f 4440//4440 4371//4371 4451//4451 +f 4442//4442 4338//4338 4440//4440 +f 4443//4443 5420//5420 4442//4442 +f 4442//4442 4440//4440 4443//4443 +f 4451//4451 4441//4441 4443//4443 +f 4443//4443 4440//4440 4451//4451 +f 4481//4481 4334//4334 4336//4336 +f 5419//5419 4482//4482 4481//4481 +f 4481//4481 4336//4336 5419//5419 +f 4442//4442 5420//5420 5419//5419 +f 5419//5419 4336//4336 4442//4442 +f 4336//4336 4338//4338 4442//4442 +f 4441//4441 5417//5417 4443//4443 +f 4443//4443 5417//5417 5420//5420 +f 4447//4447 4444//4444 4445//4445 +f 4446//4446 4447//4447 8660//8660 +f 4447//4447 4445//4445 8660//8660 +f 4452//4452 4448//4448 4447//4447 +f 4447//4447 4446//4446 4452//4452 +f 4457//4457 4449//4449 4452//4452 +f 4452//4452 4446//4446 4457//4457 +f 4457//4457 4450//4450 8662//8662 +f 4457//4457 4446//4446 4450//4450 +f 4446//4446 8660//8660 4450//4450 +f 4451//4451 4371//4371 4370//4370 +f 4370//4370 4453//4453 4451//4451 +f 4456//4456 4441//4441 4451//4451 +f 4451//4451 4453//4453 4456//4456 +f 4452//4452 4449//4449 4456//4456 +f 4456//4456 4453//4453 4452//4452 +f 4370//4370 4448//4448 4452//4452 +f 4452//4452 4453//4453 4370//4370 +f 4458//4458 4454//4454 4455//4455 +f 4456//4456 4449//4449 4458//4458 +f 4458//4458 4455//4455 4456//4456 +f 4456//4456 4455//4455 4441//4441 +f 5421//5421 8665//8665 8666//8666 +f 4457//4457 8662//8662 8663//8663 +f 5421//5421 4457//4457 8665//8665 +f 4457//4457 8663//8663 8665//8665 +f 4458//4458 4449//4449 4457//4457 +f 4457//4457 5421//5421 4458//4458 +f 5421//5421 4454//4454 4458//4458 +f 4362//4362 4348//4348 4459//4459 +f 4459//4459 4460//4460 4362//4362 +f 4469//4469 4361//4361 4362//4362 +f 4362//4362 4460//4460 4469//4469 +f 4462//4462 4461//4461 4469//4469 +f 4469//4469 4460//4460 4462//4462 +f 4459//4459 4477//4477 4462//4462 +f 4462//4462 4460//4460 4459//4459 +f 4465//4465 4463//4463 4464//4464 +f 4465//4465 4466//4466 4463//4463 +f 4466//4466 8656//8656 4463//4463 +f 4473//4473 4467//4467 4468//4468 +f 4466//4466 4473//4473 8656//8656 +f 4473//4473 4468//4468 8656//8656 +f 4469//4469 4461//4461 4473//4473 +f 4473//4473 4466//4466 4469//4469 +f 4465//4465 4361//4361 4469//4469 +f 4469//4469 4466//4466 4465//4465 +f 5400//5400 4470//4470 8664//8664 +f 4474//4474 5400//5400 4471//4471 +f 5400//5400 8664//8664 4471//4471 +f 4472//4472 5402//5402 5400//5400 +f 5400//5400 4474//4474 4472//4472 +f 4473//4473 4461//4461 4472//4472 +f 4472//4472 4474//4474 4473//4473 +f 4473//4473 8661//8661 4467//4467 +f 4473//4473 4474//4474 8661//8661 +f 4474//4474 4471//4471 8661//8661 +f 4487//4487 4475//4475 4478//4478 +f 4478//4478 4476//4476 4487//4487 +f 4462//4462 4477//4477 4487//4487 +f 4487//4487 4476//4476 4462//4462 +f 4472//4472 4461//4461 4462//4462 +f 4462//4462 4476//4476 4472//4472 +f 4478//4478 5402//5402 4472//4472 +f 4472//4472 4476//4476 4478//4478 +f 4479//4479 4334//4334 4481//4481 +f 4481//4481 4480//4480 4479//4479 +f 4486//4486 4342//4342 4479//4479 +f 4479//4479 4480//4480 4486//4486 +f 4483//4483 5410//5410 4486//4486 +f 4486//4486 4480//4480 4483//4483 +f 4481//4481 4482//4482 4483//4483 +f 4483//4483 4480//4480 4481//4481 +f 4459//4459 4348//4348 4349//4349 +f 4349//4349 4484//4484 4459//4459 +f 4485//4485 4477//4477 4459//4459 +f 4459//4459 4484//4484 4485//4485 +f 4486//4486 5410//5410 4485//4485 +f 4485//4485 4484//4484 4486//4486 +f 4349//4349 4342//4342 4486//4486 +f 4486//4486 4484//4484 4349//4349 +f 5414//5414 4475//4475 4487//4487 +f 5410//5410 5414//5414 4485//4485 +f 4487//4487 4477//4477 4485//4485 +f 4485//4485 5414//5414 4487//4487 +f 4482//4482 5408//5408 4483//4483 +f 4483//4483 5408//5408 5410//5410 +f 4489//4489 5416//5416 4495//4495 +f 4495//4495 5416//5416 4501//4501 +f 4492//4492 4488//4488 4493//4493 +f 4493//4493 4488//4488 4489//4489 +f 4491//4491 4525//4525 4524//4524 +f 4524//4524 4490//4490 4491//4491 +f 4496//4496 4620//4620 4491//4491 +f 4491//4491 4490//4490 4496//4496 +f 4493//4493 4489//4489 4496//4496 +f 4496//4496 4490//4490 4493//4493 +f 4524//4524 4492//4492 4493//4493 +f 4493//4493 4490//4490 4524//4524 +f 4504//4504 4622//4622 4494//4494 +f 4495//4495 4501//4501 4504//4504 +f 4504//4504 4494//4494 4495//4495 +f 4496//4496 4489//4489 4495//4495 +f 4495//4495 4494//4494 4496//4496 +f 4494//4494 4620//4620 4496//4496 +f 4499//4499 5424//5424 4497//4497 +f 5424//5424 8670//8670 4497//4497 +f 5424//5424 4499//4499 4503//4503 +f 4499//4499 4505//4505 4503//4503 +f 4498//4498 4499//4499 8815//8815 +f 4499//4499 4497//4497 8815//8815 +f 4500//4500 4502//4502 4501//4501 +f 4503//4503 4505//4505 4502//4502 +f 4503//4503 4502//4502 4500//4500 +f 5290//5290 4622//4622 4504//4504 +f 4504//4504 4502//4502 5290//5290 +f 4505//4505 5287//5287 5290//5290 +f 5290//5290 4502//4502 4505//4505 +f 4504//4504 4501//4501 4502//4502 +f 4506//4506 4499//4499 4498//4498 +f 4506//4506 5287//5287 4505//4505 +f 4505//4505 4499//4499 4506//4506 +f 4498//4498 8815//8815 8816//8816 +f 4498//4498 8816//8816 5296//5296 +f 5404//5404 8673//8673 4507//4507 +f 4509//4509 4601//4601 4508//4508 +f 4509//4509 4508//4508 8676//8676 +f 4508//4508 8677//8677 8676//8676 +f 5404//5404 4509//4509 8673//8673 +f 4509//4509 4510//4510 8673//8673 +f 4509//4509 8676//8676 4510//4510 +f 4508//4508 8679//8679 8677//8677 +f 4511//4511 5407//5407 4519//4519 +f 4519//4519 5407//5407 4512//4512 +f 5404//5404 5405//5405 4513//4513 +f 4513//4513 5405//5405 4511//4511 +f 4515//4515 4601//4601 4509//4509 +f 4509//4509 4514//4514 4515//4515 +f 4516//4516 4603//4603 4515//4515 +f 4515//4515 4514//4514 4516//4516 +f 4513//4513 4511//4511 4516//4516 +f 4516//4516 4514//4514 4513//4513 +f 4509//4509 5404//5404 4513//4513 +f 4513//4513 4514//4514 4509//4509 +f 4518//4518 4596//4596 4517//4517 +f 4517//4517 4520//4520 4518//4518 +f 4519//4519 4512//4512 4518//4518 +f 4518//4518 4520//4520 4519//4519 +f 4516//4516 4511//4511 4519//4519 +f 4519//4519 4520//4520 4516//4516 +f 4517//4517 4603//4603 4516//4516 +f 4516//4516 4520//4520 4517//4517 +f 5412//5412 5415//5415 4526//4526 +f 4526//4526 5415//5415 4492//4492 +f 4512//4512 5413//5413 4522//4522 +f 4522//4522 5413//5413 5412//5412 +f 4616//4616 4596//4596 4518//4518 +f 4518//4518 4523//4523 4616//4616 +f 4521//4521 4613//4613 4616//4616 +f 4616//4616 4523//4523 4521//4521 +f 4522//4522 5412//5412 4521//4521 +f 4521//4521 4523//4523 4522//4522 +f 4518//4518 4512//4512 4522//4522 +f 4522//4522 4523//4523 4518//4518 +f 4524//4524 4525//4525 4528//4528 +f 4528//4528 4527//4527 4524//4524 +f 4526//4526 4492//4492 4524//4524 +f 4524//4524 4527//4527 4526//4526 +f 4521//4521 5412//5412 4526//4526 +f 4526//4526 4527//4527 4521//4521 +f 4528//4528 4613//4613 4521//4521 +f 4521//4521 4527//4527 4528//4528 +f 5266//5266 4530//4530 4561//4561 +f 5266//5266 4529//4529 4532//4532 +f 5266//5266 4532//4532 4530//4530 +f 4529//4529 5265//5265 4531//4531 +f 4531//4531 4628//4628 4529//4529 +f 4529//4529 4628//4628 4532//4532 +f 4534//4534 4533//4533 4540//4540 +f 4540//4540 4538//4538 4534//4534 +f 4542//4542 4535//4535 4534//4534 +f 4534//4534 4538//4538 4542//4542 +f 4542//4542 4537//4537 4536//4536 +f 4542//4542 4538//4538 4537//4537 +f 4538//4538 4539//4539 4537//4537 +f 4540//4540 8813//8813 8812//8812 +f 4538//4538 4540//4540 4539//4539 +f 4540//4540 8812//8812 4539//4539 +f 5273//5273 4544//4544 8766//8766 +f 4544//4544 4541//4541 8766//8766 +f 4544//4544 4545//4545 4541//4541 +f 4542//4542 4536//4536 8811//8811 +f 4542//4542 8811//8811 4543//4543 +f 4544//4544 4535//4535 4542//4542 +f 4544//4544 4542//4542 4545//4545 +f 4542//4542 4543//4543 4545//4545 +f 4534//4534 4560//4560 4533//4533 +f 4534//4534 4535//4535 4559//4559 +f 4559//4559 4560//4560 4534//4534 +f 4544//4544 5273//5273 5275//5275 +f 5275//5275 4558//4558 4544//4544 +f 4559//4559 4535//4535 4544//4544 +f 4544//4544 4558//4558 4559//4559 +f 5275//5275 5306//5306 4558//4558 +f 5288//5288 5291//5291 4546//4546 +f 4546//4546 4547//4547 5288//5288 +f 4547//4547 4548//4548 5288//5288 +f 4549//4549 4547//4547 4546//4546 +f 4540//4540 4533//4533 4550//4550 +f 4550//4550 4553//4553 4540//4540 +f 4540//4540 4553//4553 8813//8813 +f 4553//4553 4551//4551 8813//8813 +f 4553//4553 8680//8680 4551//4551 +f 4550//4550 4549//4549 4553//4553 +f 4546//4546 5291//5291 5292//5292 +f 5292//5292 4556//4556 4546//4546 +f 4553//4553 4549//4549 4546//4546 +f 4546//4546 4556//4556 4553//4553 +f 4553//4553 4552//4552 8680//8680 +f 4553//4553 4556//4556 4552//4552 +f 4556//4556 4554//4554 4552//4552 +f 5292//5292 4555//4555 4557//4557 +f 4556//4556 5292//5292 4554//4554 +f 5292//5292 4557//4557 4554//4554 +f 4558//4558 4563//4563 4559//4559 +f 5306//5306 4562//4562 4558//4558 +f 4559//4559 4563//4563 4560//4560 +f 4563//4563 4530//4530 4560//4560 +f 4550//4550 4533//4533 4560//4560 +f 4560//4560 4530//4530 4550//4550 +f 4564//4564 5268//5268 4561//4561 +f 4558//4558 4562//4562 4564//4564 +f 4558//4558 4564//4564 4563//4563 +f 4561//4561 4530//4530 4563//4563 +f 4563//4563 4564//4564 4561//4561 +f 4013//4013 4565//4565 4568//4568 +f 4568//4568 4566//4566 4013//4013 +f 4567//4567 4017//4017 4013//4013 +f 4013//4013 4566//4566 4567//4567 +f 4580//4580 4579//4579 4567//4567 +f 4567//4567 4566//4566 4580//4580 +f 4568//4568 5302//5302 4580//4580 +f 4580//4580 4566//4566 4568//4568 +f 4569//4569 4570//4570 4571//4571 +f 4571//4571 4573//4573 4569//4569 +f 4572//4572 5059//5059 4569//4569 +f 4569//4569 4573//4573 4572//4572 +f 4567//4567 4579//4579 4572//4572 +f 4572//4572 4573//4573 4567//4567 +f 4571//4571 4017//4017 4567//4567 +f 4567//4567 4573//4573 4571//4571 +f 4575//4575 5057//5057 4577//4577 +f 4577//4577 4574//4574 4575//4575 +f 4576//4576 4581//4581 4575//4575 +f 4575//4575 4574//4574 4576//4576 +f 4572//4572 4579//4579 4576//4576 +f 4576//4576 4574//4574 4572//4572 +f 4577//4577 5059//5059 4572//4572 +f 4572//4572 4574//4574 4577//4577 +f 5308//5308 5278//5278 4582//4582 +f 4582//4582 4578//4578 5308//5308 +f 4580//4580 5302//5302 5308//5308 +f 5308//5308 4578//4578 4580//4580 +f 4576//4576 4579//4579 4580//4580 +f 4580//4580 4578//4578 4576//4576 +f 4582//4582 4581//4581 4576//4576 +f 4576//4576 4578//4578 4582//4582 +f 4583//4583 4588//4588 4329//4329 +f 4329//4329 4584//4584 4583//4583 +f 4583//4583 4584//4584 4585//4585 +f 4584//4584 5509//5509 4585//4585 +f 4508//4508 4601//4601 4586//4586 +f 4508//4508 4586//4586 4587//4587 +f 4586//4586 4589//4589 4587//4587 +f 4508//4508 4587//4587 8679//8679 +f 4586//4586 4588//4588 4583//4583 +f 4586//4586 4583//4583 4589//4589 +f 4583//4583 5510//5510 4589//4589 +f 4590//4590 4598//4598 4595//4595 +f 4595//4595 4323//4323 4590//4590 +f 4329//4329 4588//4588 4590//4590 +f 4590//4590 4323//4323 4329//4329 +f 4592//4592 4020//4020 4593//4593 +f 4594//4594 4591//4591 4592//4592 +f 4592//4592 4593//4593 4594//4594 +f 4595//4595 4598//4598 4594//4594 +f 4594//4594 4593//4593 4595//4595 +f 4517//4517 4596//4596 4600//4600 +f 4600//4600 4597//4597 4517//4517 +f 4599//4599 4603//4603 4517//4517 +f 4517//4517 4597//4597 4599//4599 +f 4594//4594 4598//4598 4599//4599 +f 4599//4599 4597//4597 4594//4594 +f 4600//4600 4591//4591 4594//4594 +f 4594//4594 4597//4597 4600//4600 +f 4586//4586 4601//4601 4515//4515 +f 4515//4515 4602//4602 4586//4586 +f 4590//4590 4588//4588 4586//4586 +f 4586//4586 4602//4602 4590//4590 +f 4599//4599 4598//4598 4590//4590 +f 4590//4590 4602//4602 4599//4599 +f 4515//4515 4603//4603 4599//4599 +f 4599//4599 4602//4602 4515//4515 +f 4604//4604 4020//4020 4592//4592 +f 4592//4592 4606//4606 4604//4604 +f 4609//4609 4021//4021 4604//4604 +f 4604//4604 4606//4606 4609//4609 +f 4605//4605 4617//4617 4609//4609 +f 4609//4609 4606//4606 4605//4605 +f 4592//4592 4591//4591 4605//4605 +f 4605//4605 4606//4606 4592//4592 +f 4621//4621 4607//4607 4612//4612 +f 4612//4612 4611//4611 4621//4621 +f 4610//4610 4608//4608 4621//4621 +f 4621//4621 4611//4611 4610//4610 +f 4609//4609 4617//4617 4610//4610 +f 4610//4610 4611//4611 4609//4609 +f 4612//4612 4021//4021 4609//4609 +f 4609//4609 4611//4611 4612//4612 +f 4528//4528 4525//4525 4608//4608 +f 4608//4608 4614//4614 4528//4528 +f 4615//4615 4613//4613 4528//4528 +f 4528//4528 4614//4614 4615//4615 +f 4610//4610 4617//4617 4615//4615 +f 4615//4615 4614//4614 4610//4610 +f 4610//4610 4614//4614 4608//4608 +f 4600//4600 4596//4596 4616//4616 +f 4616//4616 4618//4618 4600//4600 +f 4605//4605 4591//4591 4600//4600 +f 4600//4600 4618//4618 4605//4605 +f 4615//4615 4617//4617 4605//4605 +f 4605//4605 4618//4618 4615//4615 +f 4616//4616 4613//4613 4615//4615 +f 4615//4615 4618//4618 4616//4616 +f 4027//4027 4607//4607 4621//4621 +f 4621//4621 4626//4626 4027//4027 +f 4619//4619 4030//4030 4027//4027 +f 4027//4027 4626//4626 4619//4619 +f 4626//4626 4620//4620 4619//4619 +f 4621//4621 4608//4608 4626//4626 +f 5318//5318 5317//5317 4624//4624 +f 4624//4624 4623//4623 5318//5318 +f 4623//4623 4622//4622 5318//5318 +f 4619//4619 4620//4620 4623//4623 +f 4624//4624 4030//4030 4619//4619 +f 4619//4619 4623//4623 4624//4624 +f 4622//4622 4625//4625 4494//4494 +f 4494//4494 4625//4625 4620//4620 +f 4620//4620 4625//4625 4623//4623 +f 4623//4623 4625//4625 4622//4622 +f 4608//4608 4525//4525 4491//4491 +f 4608//4608 4491//4491 4626//4626 +f 4626//4626 4491//4491 4620//4620 +f 5314//5314 4548//4548 4547//4547 +f 4547//4547 4627//4627 5314//5314 +f 4627//4627 5310//5310 5314//5314 +f 4549//4549 4627//4627 4547//4547 +f 4628//4628 4531//4531 5310//5310 +f 4549//4549 4532//4532 4628//4628 +f 4549//4549 4628//4628 4627//4627 +f 4627//4627 4628//4628 5310//5310 +f 4550//4550 4530//4530 4532//4532 +f 4549//4549 4550//4550 4532//4532 +f 4629//4629 4720//4720 4630//4630 +f 4630//4630 4631//4631 4629//4629 +f 4632//4632 4638//4638 4629//4629 +f 4629//4629 4631//4631 4632//4632 +f 4645//4645 4635//4635 4632//4632 +f 4632//4632 4631//4631 4645//4645 +f 4630//4630 4633//4633 4645//4645 +f 4645//4645 4631//4631 4630//4630 +f 4634//4634 4704//4704 4637//4637 +f 4637//4637 4636//4636 4634//4634 +f 4639//4639 4700//4700 4634//4634 +f 4634//4634 4636//4636 4639//4639 +f 4632//4632 4635//4635 4639//4639 +f 4639//4639 4636//4636 4632//4632 +f 4637//4637 4638//4638 4632//4632 +f 4632//4632 4636//4636 4637//4637 +f 4639//4639 4635//4635 4640//4640 +f 4635//4635 4641//4641 4640//4640 +f 4639//4639 4640//4640 4642//4642 +f 4700//4700 4639//4639 4643//4643 +f 4639//4639 4644//4644 4643//4643 +f 4639//4639 4642//4642 4644//4644 +f 4645//4645 4633//4633 8798//8798 +f 4633//4633 8799//8799 8798//8798 +f 4645//4645 8798//8798 4646//4646 +f 4635//4635 4645//4645 4641//4641 +f 4645//4645 8794//8794 4641//4641 +f 4645//4645 4646//4646 8794//8794 +f 4651//4651 4652//4652 4647//4647 +f 4647//4647 4648//4648 4651//4651 +f 4651//4651 4648//4648 9132//9132 +f 4648//4648 4649//4649 9132//9132 +f 4653//4653 4650//4650 5250//5250 +f 4653//4653 4651//4651 9133//9133 +f 4651//4651 9132//9132 9133//9133 +f 4653//4653 5250//5250 4651//4651 +f 4651//4651 5250//5250 4652//4652 +f 5248//5248 4654//4654 9137//9137 +f 4653//4653 9133//9133 9135//9135 +f 5248//5248 4653//4653 4654//4654 +f 4653//4653 9135//9135 4654//4654 +f 5248//5248 4650//4650 4653//4653 +f 4658//4658 4656//4656 4655//4655 +f 5259//5259 4669//4669 4656//4656 +f 4658//4658 5490//5490 4657//4657 +f 4657//4657 5259//5259 4658//4658 +f 4658//4658 5259//5259 4656//4656 +f 4657//4657 5490//5490 4659//4659 +f 5490//5490 5489//5489 4659//4659 +f 4647//4647 4652//4652 4659//4659 +f 4659//4659 5489//5489 4647//4647 +f 4660//4660 4175//4175 5498//5498 +f 5498//5498 4661//4661 4660//4660 +f 4660//4660 4661//4661 4664//4664 +f 4662//4662 4663//4663 4664//4664 +f 4664//4664 4661//4661 4662//4662 +f 5498//5498 5504//5504 4662//4662 +f 4662//4662 4661//4661 5498//5498 +f 4665//4665 5532//5532 4668//4668 +f 4668//4668 4667//4667 4665//4665 +f 4666//4666 5534//5534 4665//4665 +f 4665//4665 4667//4667 4666//4666 +f 4664//4664 4663//4663 4666//4666 +f 4666//4666 4667//4667 4664//4664 +f 4668//4668 4660//4660 4664//4664 +f 4664//4664 4667//4667 4668//4668 +f 4656//4656 4669//4669 4671//4671 +f 4671//4671 4670//4670 4656//4656 +f 4656//4656 4670//4670 4673//4673 +f 4666//4666 4663//4663 4673//4673 +f 4673//4673 4670//4670 4666//4666 +f 4671//4671 5534//5534 4666//4666 +f 4666//4666 4670//4670 4671//4671 +f 4655//4655 4673//4673 4672//4672 +f 4662//4662 5504//5504 4672//4672 +f 4672//4672 4673//4673 4662//4662 +f 4673//4673 4663//4663 4662//4662 +f 4655//4655 4656//4656 4673//4673 +f 4676//4676 4694//4694 4738//4738 +f 4738//4738 4674//4674 4676//4676 +f 4680//4680 4675//4675 4676//4676 +f 4676//4676 4674//4674 4680//4680 +f 4713//4713 4689//4689 4691//4691 +f 4691//4691 4677//4677 4713//4713 +f 4679//4679 4714//4714 4713//4713 +f 4713//4713 4677//4677 4679//4679 +f 4676//4676 4675//4675 4679//4679 +f 4679//4679 4677//4677 4676//4676 +f 4691//4691 4694//4694 4676//4676 +f 4676//4676 4677//4677 4691//4691 +f 4185//4185 4726//4726 4725//4725 +f 4725//4725 4678//4678 4185//4185 +f 4681//4681 4682//4682 4185//4185 +f 4185//4185 4678//4678 4681//4681 +f 4679//4679 4675//4675 4681//4681 +f 4681//4681 4678//4678 4679//4679 +f 4725//4725 4714//4714 4679//4679 +f 4679//4679 4678//4678 4725//4725 +f 4681//4681 4675//4675 4680//4680 +f 4680//4680 4757//4757 4681//4681 +f 4254//4254 4682//4682 4681//4681 +f 4681//4681 4757//4757 4254//4254 +f 4688//4688 4687//4687 8789//8789 +f 4684//4684 4688//4688 8788//8788 +f 4688//4688 8789//8789 8788//8788 +f 4683//4683 4686//4686 4688//4688 +f 4688//4688 4684//4684 4683//4683 +f 4685//4685 8792//8792 8793//8793 +f 4693//4693 4697//4697 8791//8791 +f 4697//4697 4698//4698 8791//8791 +f 4685//4685 4693//4693 8792//8792 +f 4693//4693 8791//8791 8792//8792 +f 4688//4688 4686//4686 4693//4693 +f 4693//4693 4685//4685 4688//4688 +f 4688//4688 8790//8790 4687//4687 +f 4688//4688 4685//4685 8790//8790 +f 4685//4685 8793//8793 8790//8790 +f 4691//4691 4689//4689 4707//4707 +f 4707//4707 4690//4690 4691//4691 +f 4692//4692 4694//4694 4691//4691 +f 4691//4691 4690//4690 4692//4692 +f 4693//4693 4686//4686 4692//4692 +f 4692//4692 4690//4690 4693//4693 +f 4707//4707 4697//4697 4693//4693 +f 4693//4693 4690//4690 4707//4707 +f 4692//4692 4686//4686 4683//4683 +f 4683//4683 4741//4741 4692//4692 +f 4738//4738 4694//4694 4692//4692 +f 4692//4692 4741//4741 4738//4738 +f 4696//4696 4695//4695 8797//8797 +f 4695//4695 4702//4702 8797//8797 +f 4696//4696 8797//8797 4699//4699 +f 4697//4697 4696//4696 4698//4698 +f 4696//4696 8796//8796 4698//4698 +f 4696//4696 4699//4699 8796//8796 +f 4706//4706 4700//4700 4701//4701 +f 4700//4700 4643//4643 4701//4701 +f 4706//4706 4701//4701 8795//8795 +f 4695//4695 4706//4706 4702//4702 +f 4706//4706 4703//4703 4702//4702 +f 4706//4706 8795//8795 4703//4703 +f 4716//4716 4704//4704 4634//4634 +f 4634//4634 4705//4705 4716//4716 +f 4711//4711 4710//4710 4716//4716 +f 4716//4716 4705//4705 4711//4711 +f 4706//4706 4695//4695 4711//4711 +f 4711//4711 4705//4705 4706//4706 +f 4634//4634 4700//4700 4706//4706 +f 4706//4706 4705//4705 4634//4634 +f 4707//4707 4689//4689 4708//4708 +f 4708//4708 4709//4709 4707//4707 +f 4696//4696 4697//4697 4707//4707 +f 4707//4707 4709//4709 4696//4696 +f 4711//4711 4695//4695 4696//4696 +f 4696//4696 4709//4709 4711//4711 +f 4708//4708 4710//4710 4711//4711 +f 4711//4711 4709//4709 4708//4708 +f 4708//4708 4689//4689 4713//4713 +f 4713//4713 4712//4712 4708//4708 +f 4719//4719 4710//4710 4708//4708 +f 4708//4708 4712//4712 4719//4719 +f 4715//4715 4718//4718 4719//4719 +f 4719//4719 4712//4712 4715//4715 +f 4713//4713 4714//4714 4715//4715 +f 4715//4715 4712//4712 4713//4713 +f 4637//4637 4704//4704 4716//4716 +f 4716//4716 4717//4717 4637//4637 +f 4724//4724 4638//4638 4637//4637 +f 4637//4637 4717//4717 4724//4724 +f 4719//4719 4718//4718 4724//4724 +f 4724//4724 4717//4717 4719//4719 +f 4716//4716 4710//4710 4719//4719 +f 4719//4719 4717//4717 4716//4716 +f 4722//4722 4720//4720 4629//4629 +f 4629//4629 4723//4723 4722//4722 +f 4721//4721 4729//4729 4722//4722 +f 4722//4722 4723//4723 4721//4721 +f 4724//4724 4718//4718 4721//4721 +f 4721//4721 4723//4723 4724//4724 +f 4629//4629 4638//4638 4724//4724 +f 4724//4724 4723//4723 4629//4629 +f 4725//4725 4726//4726 4727//4727 +f 4727//4727 4728//4728 4725//4725 +f 4715//4715 4714//4714 4725//4725 +f 4725//4725 4728//4728 4715//4715 +f 4721//4721 4718//4718 4715//4715 +f 4715//4715 4728//4728 4721//4721 +f 4727//4727 4729//4729 4721//4721 +f 4721//4721 4728//4728 4727//4727 +f 5386//5386 4731//4731 4730//4730 +f 4731//4731 8784//8784 4730//4730 +f 4731//4731 8782//8782 8784//8784 +f 4731//4731 4733//4733 8785//8785 +f 4731//4731 8785//8785 8782//8782 +f 4731//4731 5386//5386 4732//4732 +f 4732//4732 4734//4734 4731//4731 +f 4731//4731 4737//4737 4733//4733 +f 4737//4737 8786//8786 4733//4733 +f 4731//4731 4734//4734 4737//4737 +f 4747//4747 4748//4748 4737//4737 +f 4737//4737 4734//4734 4747//4747 +f 4732//4732 4735//4735 4747//4747 +f 4747//4747 4734//4734 4732//4732 +f 4684//4684 8788//8788 4736//4736 +f 4742//4742 4683//4683 4684//4684 +f 4737//4737 4748//4748 4742//4742 +f 4742//4742 4684//4684 4737//4737 +f 4737//4737 8787//8787 8786//8786 +f 4737//4737 4684//4684 8787//8787 +f 4684//4684 4736//4736 8787//8787 +f 4756//4756 4738//4738 4741//4741 +f 4739//4739 4740//4740 4756//4756 +f 4756//4756 4741//4741 4739//4739 +f 4742//4742 4748//4748 4739//4739 +f 4739//4739 4741//4741 4742//4742 +f 4741//4741 4683//4683 4742//4742 +f 4745//4745 4743//4743 4744//4744 +f 4744//4744 4746//4746 4745//4745 +f 4747//4747 4735//4735 4745//4745 +f 4745//4745 4746//4746 4747//4747 +f 4739//4739 4748//4748 4747//4747 +f 4747//4747 4746//4746 4739//4739 +f 4744//4744 4740//4740 4739//4739 +f 4739//4739 4746//4746 4744//4744 +f 4744//4744 4743//4743 4749//4749 +f 4749//4749 4750//4750 4744//4744 +f 4754//4754 4740//4740 4744//4744 +f 4744//4744 4750//4750 4754//4754 +f 4751//4751 4758//4758 4754//4754 +f 4754//4754 4750//4750 4751//4751 +f 4749//4749 4752//4752 4751//4751 +f 4751//4751 4750//4750 4749//4749 +f 4674//4674 4738//4738 4756//4756 +f 4756//4756 4755//4755 4674//4674 +f 4753//4753 4680//4680 4674//4674 +f 4674//4674 4755//4755 4753//4753 +f 4754//4754 4758//4758 4753//4753 +f 4753//4753 4755//4755 4754//4754 +f 4756//4756 4740//4740 4754//4754 +f 4754//4754 4755//4755 4756//4756 +f 4255//4255 4254//4254 4757//4757 +f 4759//4759 4266//4266 4255//4255 +f 4255//4255 4757//4757 4759//4759 +f 4753//4753 4758//4758 4759//4759 +f 4759//4759 4757//4757 4753//4753 +f 4757//4757 4680//4680 4753//4753 +f 4760//4760 5385//5385 4265//4265 +f 4265//4265 4761//4761 4760//4760 +f 4751//4751 4752//4752 4760//4760 +f 4760//4760 4761//4761 4751//4751 +f 4759//4759 4758//4758 4751//4751 +f 4751//4751 4761//4761 4759//4759 +f 4265//4265 4266//4266 4759//4759 +f 4759//4759 4761//4761 4265//4265 +f 5340//5340 4762//4762 4763//4763 +f 4762//4762 4767//4767 4763//4763 +f 4764//4764 4771//4771 4762//4762 +f 4762//4762 5340//5340 4764//4764 +f 4771//4771 4765//4765 4762//4762 +f 4762//4762 4765//4765 4767//4767 +f 4765//4765 4766//4766 4767//4767 +f 4769//4769 5390//5390 4768//4768 +f 4769//4769 4768//4768 4770//4770 +f 4770//4770 4768//4768 4771//4771 +f 5342//5342 4773//4773 4772//4772 +f 4772//4772 4770//4770 5342//5342 +f 5342//5342 4770//4770 4764//4764 +f 4770//4770 4771//4771 4764//4764 +f 4772//4772 4769//4769 4770//4770 +f 4772//4772 4773//4773 4775//4775 +f 4775//4775 4774//4774 4772//4772 +f 4774//4774 4769//4769 4772//4772 +f 4775//4775 5070//5070 4778//4778 +f 4778//4778 4774//4774 4775//4775 +f 4776//4776 5390//5390 4769//4769 +f 4777//4777 4780//4780 4776//4776 +f 4774//4774 4778//4778 4777//4777 +f 4777//4777 4776//4776 4774//4774 +f 4774//4774 4776//4776 4769//4769 +f 4279//4279 5381//5381 4779//4779 +f 4779//4779 4781//4781 4279//4279 +f 4781//4781 4280//4280 4279//4279 +f 4777//4777 4778//4778 4781//4781 +f 4779//4779 4780//4780 4777//4777 +f 4777//4777 4781//4781 4779//4779 +f 5058//5058 5057//5057 4280//4280 +f 4280//4280 4781//4781 5058//5058 +f 4778//4778 5070//5070 5058//5058 +f 5058//5058 4781//4781 4778//4778 +f 4783//4783 4929//4929 4782//4782 +f 4782//4782 4784//4784 4783//4783 +f 4785//4785 4790//4790 4783//4783 +f 4783//4783 4784//4784 4785//4785 +f 4798//4798 4794//4794 4785//4785 +f 4785//4785 4784//4784 4798//4798 +f 4782//4782 4818//4818 4798//4798 +f 4798//4798 4784//4784 4782//4782 +f 4902//4902 4786//4786 4916//4916 +f 4916//4916 4789//4789 4902//4902 +f 4787//4787 4788//4788 4902//4902 +f 4902//4902 4789//4789 4787//4787 +f 4785//4785 4794//4794 4787//4787 +f 4787//4787 4789//4789 4785//4785 +f 4916//4916 4790//4790 4785//4785 +f 4785//4785 4789//4789 4916//4916 +f 4901//4901 4792//4792 8744//8744 +f 4901//4901 4791//4791 4792//4792 +f 4791//4791 4793//4793 4792//4792 +f 4795//4795 4800//4800 8741//8741 +f 4791//4791 4795//4795 4793//4793 +f 4795//4795 8741//8741 4793//4793 +f 4787//4787 4794//4794 4795//4795 +f 4795//4795 4791//4791 4787//4787 +f 4901//4901 4788//4788 4787//4787 +f 4787//4787 4791//4791 4901//4901 +f 4796//4796 4816//4816 8743//8743 +f 4799//4799 4796//4796 4797//4797 +f 4796//4796 8743//8743 4797//4797 +f 4798//4798 4818//4818 4796//4796 +f 4796//4796 4799//4799 4798//4798 +f 4795//4795 4794//4794 4798//4798 +f 4798//4798 4799//4799 4795//4795 +f 4795//4795 8742//8742 4800//4800 +f 4795//4795 4799//4799 8742//8742 +f 4799//4799 4797//4797 8742//8742 +f 4802//4802 4886//4886 4801//4801 +f 4808//4808 4802//4802 4803//4803 +f 4802//4802 4801//4801 4803//4803 +f 4805//4805 4880//4880 4802//4802 +f 4802//4802 4808//4808 4805//4805 +f 4806//4806 4804//4804 4805//4805 +f 4805//4805 4808//4808 4806//4806 +f 4806//4806 4807//4807 8746//8746 +f 4806//4806 4808//4808 4807//4807 +f 4808//4808 4803//4803 4807//4807 +f 4934//4934 4809//4809 4881//4881 +f 4881//4881 4811//4811 4934//4934 +f 4810//4810 4814//4814 4934//4934 +f 4934//4934 4811//4811 4810//4810 +f 4805//4805 4804//4804 4810//4810 +f 4810//4810 4811//4811 4805//4805 +f 4881//4881 4880//4880 4805//4805 +f 4805//4805 4811//4811 4881//4881 +f 4782//4782 4929//4929 4812//4812 +f 4812//4812 4813//4813 4782//4782 +f 4817//4817 4818//4818 4782//4782 +f 4782//4782 4813//4813 4817//4817 +f 4810//4810 4804//4804 4817//4817 +f 4817//4817 4813//4813 4810//4810 +f 4812//4812 4814//4814 4810//4810 +f 4810//4810 4813//4813 4812//4812 +f 4796//4796 4815//4815 4816//4816 +f 4796//4796 4819//4819 4815//4815 +f 4819//4819 8745//8745 4815//4815 +f 4806//4806 8746//8746 8738//8738 +f 4819//4819 4806//4806 8745//8745 +f 4806//4806 8738//8738 8745//8745 +f 4817//4817 4804//4804 4806//4806 +f 4806//4806 4819//4819 4817//4817 +f 4796//4796 4818//4818 4817//4817 +f 4817//4817 4819//4819 4796//4796 +f 4823//4823 4820//4820 4821//4821 +f 4821//4821 4822//4822 4823//4823 +f 4823//4823 4822//4822 5086//5086 +f 5192//5192 5190//5190 4820//4820 +f 4820//4820 4823//4823 5192//5192 +f 5192//5192 4823//4823 4824//4824 +f 4823//4823 5086//5086 4824//4824 +f 5196//5196 5189//5189 4825//4825 +f 4824//4824 5086//5086 4825//4825 +f 4825//4825 5189//5189 4824//4824 +f 5086//5086 5084//5084 4825//4825 +f 4826//4826 5196//5196 4825//4825 +f 4825//4825 5084//5084 4826//4826 +f 5197//5197 4826//4826 8708//8708 +f 4826//4826 4827//4827 8708//8708 +f 5197//5197 5196//5196 4826//4826 +f 5197//5197 8707//8707 8705//8705 +f 5197//5197 8708//8708 8707//8707 +f 4848//4848 4828//4828 4831//4831 +f 4831//4831 4828//4828 4829//4829 +f 4924//4924 4843//4843 4842//4842 +f 4842//4842 4830//4830 4924//4924 +f 4834//4834 4939//4939 4924//4924 +f 4924//4924 4830//4830 4834//4834 +f 4831//4831 4829//4829 4834//4834 +f 4834//4834 4830//4830 4831//4831 +f 4842//4842 4848//4848 4831//4831 +f 4831//4831 4830//4830 4842//4842 +f 4833//4833 4866//4866 4836//4836 +f 4836//4836 4832//4832 4833//4833 +f 4835//4835 4955//4955 4833//4833 +f 4833//4833 4832//4832 4835//4835 +f 4834//4834 4829//4829 4835//4835 +f 4835//4835 4832//4832 4834//4834 +f 4836//4836 4939//4939 4834//4834 +f 4834//4834 4832//4832 4836//4836 +f 4829//4829 4945//4945 4835//4835 +f 4835//4835 4945//4945 4955//4955 +f 4852//4852 4993//4993 4837//4837 +f 4837//4837 4993//4993 4996//4996 +f 4838//4838 4906//4906 4841//4841 +f 4841//4841 4839//4839 4838//4838 +f 4840//4840 4846//4846 4838//4838 +f 4838//4838 4839//4839 4840//4840 +f 4837//4837 4996//4996 4840//4840 +f 4840//4840 4839//4839 4837//4837 +f 4841//4841 4852//4852 4837//4837 +f 4837//4837 4839//4839 4841//4841 +f 4842//4842 4843//4843 4845//4845 +f 4845//4845 4844//4844 4842//4842 +f 4847//4847 4848//4848 4842//4842 +f 4842//4842 4844//4844 4847//4847 +f 4840//4840 4996//4996 4847//4847 +f 4847//4847 4844//4844 4840//4840 +f 4845//4845 4846//4846 4840//4840 +f 4840//4840 4844//4844 4845//4845 +f 4996//4996 4995//4995 4847//4847 +f 4847//4847 4995//4995 4848//4848 +f 4849//4849 4983//4983 4850//4850 +f 4850//4850 4983//4983 4987//4987 +f 4851//4851 4857//4857 4859//4859 +f 4859//4859 4850//4850 4851//4851 +f 4855//4855 4908//4908 4851//4851 +f 4851//4851 4850//4850 4855//4855 +f 4850//4850 4987//4987 4855//4855 +f 4859//4859 4849//4849 4850//4850 +f 4841//4841 4906//4906 4854//4854 +f 4854//4854 4856//4856 4841//4841 +f 4853//4853 4852//4852 4841//4841 +f 4841//4841 4856//4856 4853//4853 +f 4855//4855 4987//4987 4853//4853 +f 4853//4853 4856//4856 4855//4855 +f 4854//4854 4908//4908 4855//4855 +f 4855//4855 4856//4856 4854//4854 +f 4987//4987 4984//4984 4853//4853 +f 4853//4853 4984//4984 4852//4852 +f 4859//4859 4857//4857 4858//4858 +f 4857//4857 4894//4894 4858//4858 +f 4859//4859 4858//4858 8734//8734 +f 4849//4849 4859//4859 8733//8733 +f 4859//4859 8734//8734 8733//8733 +f 4864//4864 4957//4957 4860//4860 +f 4957//4957 4861//4861 4860//4860 +f 4957//4957 4862//4862 4861//4861 +f 4869//4869 8731//8731 4863//4863 +f 4869//4869 8750//8750 8731//8731 +f 4869//4869 4864//4864 8730//8730 +f 4864//4864 4860//4860 8730//8730 +f 4869//4869 8730//8730 8750//8750 +f 4955//4955 4865//4865 4868//4868 +f 4868//4868 4865//4865 4875//4875 +f 4878//4878 4866//4866 4833//4833 +f 4833//4833 4867//4867 4878//4878 +f 4873//4873 4872//4872 4878//4878 +f 4878//4878 4867//4867 4873//4873 +f 4868//4868 4875//4875 4873//4873 +f 4873//4873 4867//4867 4868//4868 +f 4833//4833 4955//4955 4868//4868 +f 4868//4868 4867//4867 4833//4833 +f 4890//4890 4869//4869 4870//4870 +f 4869//4869 4863//4863 4870//4870 +f 4890//4890 4874//4874 4869//4869 +f 4871//4871 4864//4864 4869//4869 +f 4869//4869 4874//4874 4871//4871 +f 4873//4873 4875//4875 4871//4871 +f 4871//4871 4874//4874 4873//4873 +f 4890//4890 4872//4872 4873//4873 +f 4873//4873 4874//4874 4890//4890 +f 4875//4875 4958//4958 4871//4871 +f 4957//4957 4864//4864 4871//4871 +f 4871//4871 4958//4958 4957//4957 +f 4941//4941 4866//4866 4878//4878 +f 4878//4878 4879//4879 4941//4941 +f 4876//4876 4884//4884 4941//4941 +f 4941//4941 4879//4879 4876//4876 +f 4892//4892 4877//4877 4876//4876 +f 4876//4876 4879//4879 4892//4892 +f 4878//4878 4872//4872 4892//4892 +f 4892//4892 4879//4879 4878//4878 +f 4881//4881 4809//4809 4933//4933 +f 4933//4933 4882//4882 4881//4881 +f 4883//4883 4880//4880 4881//4881 +f 4881//4881 4882//4882 4883//4883 +f 4876//4876 4877//4877 4883//4883 +f 4883//4883 4882//4882 4876//4876 +f 4933//4933 4884//4884 4876//4876 +f 4876//4876 4882//4882 4933//4933 +f 4802//4802 4885//4885 4886//4886 +f 4802//4802 4889//4889 4885//4885 +f 4889//4889 4887//4887 4885//4885 +f 4888//4888 8748//8748 8747//8747 +f 4889//4889 4888//4888 4887//4887 +f 4888//4888 8747//8747 4887//4887 +f 4883//4883 4877//4877 4888//4888 +f 4888//4888 4889//4889 4883//4883 +f 4802//4802 4880//4880 4883//4883 +f 4883//4883 4889//4889 4802//4802 +f 4890//4890 4870//4870 8732//8732 +f 4891//4891 4890//4890 8749//8749 +f 4890//4890 8732//8732 8749//8749 +f 4892//4892 4872//4872 4890//4890 +f 4890//4890 4891//4891 4892//4892 +f 4888//4888 4877//4877 4892//4892 +f 4892//4892 4891//4891 4888//4888 +f 4888//4888 4893//4893 8748//8748 +f 4888//4888 4891//4891 4893//4893 +f 4891//4891 8749//8749 4893//4893 +f 4857//4857 4895//4895 4894//4894 +f 4857//4857 4851//4851 4895//4895 +f 4851//4851 8735//8735 4895//4895 +f 4851//4851 4896//4896 8735//8735 +f 4896//4896 8737//8737 8735//8735 +f 4897//4897 8739//8739 8736//8736 +f 4896//4896 4897//4897 8737//8737 +f 4897//4897 8736//8736 8737//8737 +f 4910//4910 4904//4904 4897//4897 +f 4897//4897 4896//4896 4910//4910 +f 4851//4851 4908//4908 4910//4910 +f 4910//4910 4896//4896 4851//4851 +f 4901//4901 8744//8744 4898//4898 +f 4899//4899 4901//4901 4900//4900 +f 4901//4901 4898//4898 4900//4900 +f 4905//4905 4788//4788 4901//4901 +f 4901//4901 4899//4899 4905//4905 +f 4897//4897 4904//4904 4905//4905 +f 4905//4905 4899//4899 4897//4897 +f 4897//4897 8740//8740 8739//8739 +f 4897//4897 4899//4899 8740//8740 +f 4899//4899 4900//4900 8740//8740 +f 4919//4919 4786//4786 4902//4902 +f 4902//4902 4903//4903 4919//4919 +f 4911//4911 4912//4912 4919//4919 +f 4919//4919 4903//4903 4911//4911 +f 4905//4905 4904//4904 4911//4911 +f 4911//4911 4903//4903 4905//4905 +f 4902//4902 4788//4788 4905//4905 +f 4905//4905 4903//4903 4902//4902 +f 4854//4854 4906//4906 4907//4907 +f 4907//4907 4909//4909 4854//4854 +f 4910//4910 4908//4908 4854//4854 +f 4854//4854 4909//4909 4910//4910 +f 4911//4911 4904//4904 4910//4910 +f 4910//4910 4909//4909 4911//4911 +f 4907//4907 4912//4912 4911//4911 +f 4911//4911 4909//4909 4907//4907 +f 4907//4907 4906//4906 4838//4838 +f 4838//4838 4914//4914 4907//4907 +f 4913//4913 4912//4912 4907//4907 +f 4907//4907 4914//4914 4913//4913 +f 4915//4915 4918//4918 4913//4913 +f 4913//4913 4914//4914 4915//4915 +f 4838//4838 4846//4846 4915//4915 +f 4915//4915 4914//4914 4838//4838 +f 4916//4916 4786//4786 4919//4919 +f 4919//4919 4920//4920 4916//4916 +f 4917//4917 4790//4790 4916//4916 +f 4916//4916 4920//4920 4917//4917 +f 4913//4913 4918//4918 4917//4917 +f 4917//4917 4920//4920 4913//4913 +f 4919//4919 4912//4912 4913//4913 +f 4913//4913 4920//4920 4919//4919 +f 4930//4930 4929//4929 4783//4783 +f 4783//4783 4921//4921 4930//4930 +f 4923//4923 4932//4932 4930//4930 +f 4930//4930 4921//4921 4923//4923 +f 4917//4917 4918//4918 4923//4923 +f 4923//4923 4921//4921 4917//4917 +f 4783//4783 4790//4790 4917//4917 +f 4917//4917 4921//4921 4783//4783 +f 4845//4845 4843//4843 4925//4925 +f 4925//4925 4922//4922 4845//4845 +f 4915//4915 4846//4846 4845//4845 +f 4845//4845 4922//4922 4915//4915 +f 4923//4923 4918//4918 4915//4915 +f 4915//4915 4922//4922 4923//4923 +f 4925//4925 4932//4932 4923//4923 +f 4923//4923 4922//4922 4925//4925 +f 4925//4925 4843//4843 4924//4924 +f 4924//4924 4927//4927 4925//4925 +f 4926//4926 4932//4932 4925//4925 +f 4925//4925 4927//4927 4926//4926 +f 4928//4928 4935//4935 4926//4926 +f 4926//4926 4927//4927 4928//4928 +f 4924//4924 4939//4939 4928//4928 +f 4928//4928 4927//4927 4924//4924 +f 4812//4812 4929//4929 4930//4930 +f 4930//4930 4931//4931 4812//4812 +f 4937//4937 4814//4814 4812//4812 +f 4812//4812 4931//4931 4937//4937 +f 4926//4926 4935//4935 4937//4937 +f 4937//4937 4931//4931 4926//4926 +f 4930//4930 4932//4932 4926//4926 +f 4926//4926 4931//4931 4930//4930 +f 4933//4933 4809//4809 4934//4934 +f 4934//4934 4938//4938 4933//4933 +f 4936//4936 4884//4884 4933//4933 +f 4933//4933 4938//4938 4936//4936 +f 4937//4937 4935//4935 4936//4936 +f 4936//4936 4938//4938 4937//4937 +f 4934//4934 4814//4814 4937//4937 +f 4937//4937 4938//4938 4934//4934 +f 4836//4836 4866//4866 4941//4941 +f 4941//4941 4940//4940 4836//4836 +f 4928//4928 4939//4939 4836//4836 +f 4836//4836 4940//4940 4928//4928 +f 4936//4936 4935//4935 4928//4928 +f 4928//4928 4940//4940 4936//4936 +f 4941//4941 4884//4884 4936//4936 +f 4936//4936 4940//4940 4941//4941 +f 4943//4943 5012//5012 4942//4942 +f 4943//4943 4942//4942 4828//4828 +f 4948//4948 4946//4946 4828//4828 +f 4828//4828 4942//4942 4948//4948 +f 4946//4946 4829//4829 4828//4828 +f 4848//4848 4943//4943 4828//4828 +f 4944//4944 4955//4955 4945//4945 +f 4944//4944 4945//4945 4947//4947 +f 4947//4947 4945//4945 4946//4946 +f 4945//4945 4829//4829 4946//4946 +f 5445//5445 4950//4950 4949//4949 +f 4947//4947 4946//4946 4948//4948 +f 4948//4948 5445//5445 4947//4947 +f 4949//4949 4944//4944 4947//4947 +f 4947//4947 5445//5445 4949//4949 +f 4949//4949 4950//4950 4952//4952 +f 4952//4952 4951//4951 4949//4949 +f 4956//4956 4944//4944 4949//4949 +f 4949//4949 4951//4951 4956//4956 +f 4954//4954 4962//4962 4956//4956 +f 4956//4956 4951//4951 4954//4954 +f 4952//4952 4953//4953 4954//4954 +f 4954//4954 4951//4951 4952//4952 +f 4865//4865 4955//4955 4944//4944 +f 4959//4959 4875//4875 4865//4865 +f 4956//4956 4962//4962 4959//4959 +f 4959//4959 4865//4865 4956//4956 +f 4956//4956 4865//4865 4944//4944 +f 4971//4971 4957//4957 4958//4958 +f 4961//4961 4963//4963 4971//4971 +f 4971//4971 4958//4958 4961//4961 +f 4959//4959 4962//4962 4961//4961 +f 4961//4961 4958//4958 4959//4959 +f 4958//4958 4875//4875 4959//4959 +f 4960//4960 4965//4965 4966//4966 +f 4966//4966 4964//4964 4960//4960 +f 4954//4954 4953//4953 4960//4960 +f 4960//4960 4964//4964 4954//4954 +f 4961//4961 4962//4962 4954//4954 +f 4954//4954 4964//4964 4961//4961 +f 4966//4966 4963//4963 4961//4961 +f 4961//4961 4964//4964 4966//4966 +f 4966//4966 4965//4965 4969//4969 +f 4966//4966 4969//4969 4967//4967 +f 4969//4969 8751//8751 4967//4967 +f 4963//4963 4966//4966 8728//8728 +f 4966//4966 4968//4968 8728//8728 +f 4966//4966 4967//4967 4968//4968 +f 4969//4969 8726//8726 4970//4970 +f 4969//4969 4970//4970 8751//8751 +f 4957//4957 4971//4971 4862//4862 +f 4971//4971 8729//8729 4862//4862 +f 4971//4971 4963//4963 4972//4972 +f 4963//4963 8728//8728 4972//4972 +f 4971//4971 4972//4972 8729//8729 +f 4973//4973 4849//4849 4974//4974 +f 4849//4849 8733//8733 4974//4974 +f 4975//4975 4973//4973 4976//4976 +f 4973//4973 8727//8727 4976//4976 +f 4973//4973 4974//4974 8727//8727 +f 5465//5465 4977//4977 4978//4978 +f 4977//4977 8723//8723 4978//4978 +f 4977//4977 8725//8725 8723//8723 +f 4977//4977 4975//4975 4979//4979 +f 4975//4975 4976//4976 4979//4979 +f 4977//4977 4979//4979 8725//8725 +f 4977//4977 5465//5465 5459//5459 +f 5459//5459 4980//4980 4977//4977 +f 4982//4982 4975//4975 4977//4977 +f 4977//4977 4980//4980 4982//4982 +f 4981//4981 4986//4986 4982//4982 +f 4982//4982 4980//4980 4981//4981 +f 5459//5459 5458//5458 4981//4981 +f 4981//4981 4980//4980 5459//5459 +f 4983//4983 4849//4849 4973//4973 +f 4988//4988 4987//4987 4983//4983 +f 4982//4982 4986//4986 4988//4988 +f 4988//4988 4983//4983 4982//4982 +f 4973//4973 4975//4975 4982//4982 +f 4982//4982 4983//4983 4973//4973 +f 4994//4994 4852//4852 4984//4984 +f 4994//4994 4984//4984 4985//4985 +f 4988//4988 4986//4986 4985//4985 +f 4985//4985 4984//4984 4988//4988 +f 4984//4984 4987//4987 4988//4988 +f 4992//4992 4990//4990 4989//4989 +f 4981//4981 5458//5458 4989//4989 +f 4989//4989 4990//4990 4981//4981 +f 4985//4985 4986//4986 4981//4981 +f 4981//4981 4990//4990 4985//4985 +f 4992//4992 4994//4994 4985//4985 +f 4985//4985 4990//4990 4992//4992 +f 4991//4991 4994//4994 4992//4992 +f 4992//4992 5449//5449 4991//4991 +f 4998//4998 4997//4997 4991//4991 +f 4991//4991 5449//5449 4998//4998 +f 4993//4993 4852//4852 4994//4994 +f 4997//4997 4996//4996 4993//4993 +f 4997//4997 4993//4993 4991//4991 +f 4991//4991 4993//4993 4994//4994 +f 4995//4995 4943//4943 4848//4848 +f 4995//4995 4996//4996 4997//4997 +f 5450//5450 5012//5012 4943//4943 +f 4995//4995 4997//4997 4998//4998 +f 4998//4998 5450//5450 4995//4995 +f 4995//4995 5450//5450 4943//4943 +f 5000//5000 5110//5110 5002//5002 +f 5002//5002 4999//4999 5000//5000 +f 4999//4999 5012//5012 5000//5000 +f 5002//5002 5003//5003 5001//5001 +f 5001//5001 4999//4999 5002//5002 +f 5101//5101 5364//5364 5442//5442 +f 5442//5442 5004//5004 5101//5101 +f 5001//5001 5003//5003 5101//5101 +f 5101//5101 5004//5004 5001//5001 +f 5442//5442 5364//5364 5443//5443 +f 5355//5355 8714//8714 8716//8716 +f 5005//5005 5466//5466 8717//8717 +f 5466//5466 8718//8718 8717//8717 +f 5466//5466 5005//5005 5087//5087 +f 5087//5087 5088//5088 5457//5457 +f 5457//5457 5088//5088 5463//5463 +f 5088//5088 5006//5006 5463//5463 +f 5463//5463 5006//5006 5462//5462 +f 5006//5006 5081//5081 5462//5462 +f 5462//5462 5081//5081 5079//5079 +f 5079//5079 5099//5099 5007//5007 +f 5008//5008 5456//5456 5007//5007 +f 5007//5007 5099//5099 5008//5008 +f 5079//5079 5007//5007 5452//5452 +f 5452//5452 5007//5007 5456//5456 +f 5012//5012 5009//5009 5011//5011 +f 5011//5011 5009//5009 5456//5456 +f 5010//5010 5110//5110 5000//5000 +f 5011//5011 5456//5456 5008//5008 +f 5008//5008 5010//5010 5011//5011 +f 5000//5000 5012//5012 5011//5011 +f 5011//5011 5010//5010 5000//5000 +f 5013//5013 5347//5347 5322//5322 +f 5322//5322 5014//5014 5013//5013 +f 5013//5013 5014//5014 5015//5015 +f 5021//5021 5019//5019 5015//5015 +f 5015//5015 5014//5014 5021//5021 +f 5322//5322 5022//5022 5021//5021 +f 5021//5021 5014//5014 5322//5322 +f 5016//5016 5039//5039 5015//5015 +f 5015//5015 5019//5019 5016//5016 +f 5018//5018 5320//5320 5033//5033 +f 5033//5033 5020//5020 5018//5018 +f 5017//5017 5025//5025 5018//5018 +f 5018//5018 5020//5020 5017//5017 +f 5016//5016 5019//5019 5017//5017 +f 5017//5017 5020//5020 5016//5016 +f 5033//5033 5039//5039 5016//5016 +f 5016//5016 5020//5020 5033//5033 +f 5021//5021 5022//5022 5023//5023 +f 5023//5023 5024//5024 5021//5021 +f 5017//5017 5019//5019 5021//5021 +f 5021//5021 5024//5024 5017//5017 +f 5024//5024 5025//5025 5017//5017 +f 5028//5028 5026//5026 5027//5027 +f 5026//5026 8763//8763 5027//5027 +f 5028//5028 5027//5027 8681//8681 +f 5031//5031 5028//5028 5032//5032 +f 5028//5028 8682//8682 5032//5032 +f 5028//5028 8681//8681 8682//8682 +f 5029//5029 5030//5030 8691//8691 +f 5029//5029 5031//5031 8685//8685 +f 5031//5031 5032//5032 8685//8685 +f 5029//5029 8685//8685 5030//5030 +f 5033//5033 5360//5360 5330//5330 +f 5330//5330 5035//5035 5033//5033 +f 5038//5038 5039//5039 5033//5033 +f 5033//5033 5035//5035 5038//5038 +f 5034//5034 5042//5042 5038//5038 +f 5038//5038 5035//5035 5034//5034 +f 5330//5330 5044//5044 5034//5034 +f 5034//5034 5035//5035 5330//5330 +f 5036//5036 5037//5037 5039//5039 +f 5038//5038 5042//5042 5043//5043 +f 5043//5043 5036//5036 5038//5038 +f 5038//5038 5036//5036 5039//5039 +f 5040//5040 5029//5029 8693//8693 +f 5029//5029 8691//8691 8693//8693 +f 5040//5040 5041//5041 5029//5029 +f 5045//5045 5031//5031 5029//5029 +f 5029//5029 5041//5041 5045//5045 +f 5043//5043 5042//5042 5045//5045 +f 5045//5045 5041//5041 5043//5043 +f 5043//5043 5041//5041 5040//5040 +f 5336//5336 5026//5026 5028//5028 +f 5028//5028 5046//5046 5336//5336 +f 5034//5034 5044//5044 5336//5336 +f 5336//5336 5046//5046 5034//5034 +f 5045//5045 5042//5042 5034//5034 +f 5034//5034 5046//5046 5045//5045 +f 5028//5028 5031//5031 5045//5045 +f 5045//5045 5046//5046 5028//5028 +f 5348//5348 5347//5347 5111//5111 +f 5111//5111 5047//5047 5348//5348 +f 5052//5052 5051//5051 5348//5348 +f 5348//5348 5047//5047 5052//5052 +f 5052//5052 5047//5047 5048//5048 +f 5111//5111 5037//5037 5048//5048 +f 5048//5048 5047//5047 5111//5111 +f 5049//5049 5054//5054 5353//5353 +f 5054//5054 5050//5050 5353//5353 +f 5049//5049 5051//5051 5052//5052 +f 5052//5052 5054//5054 5049//5049 +f 5050//5050 5040//5040 8694//8694 +f 5040//5040 8693//8693 8694//8694 +f 5053//5053 5043//5043 5040//5040 +f 5054//5054 5052//5052 5053//5053 +f 5053//5053 5040//5040 5054//5054 +f 5054//5054 5040//5040 5050//5050 +f 5036//5036 5048//5048 5037//5037 +f 5053//5053 5052//5052 5048//5048 +f 5036//5036 5043//5043 5053//5053 +f 5053//5053 5048//5048 5036//5036 +f 5050//5050 8694//8694 8697//8697 +f 5050//5050 8697//8697 8696//8696 +f 5353//5353 5050//5050 5055//5055 +f 5050//5050 8696//8696 5055//5055 +f 5353//5353 5055//5055 5056//5056 +f 5039//5039 5037//5037 5015//5015 +f 5033//5033 5320//5320 5360//5360 +f 4577//4577 5057//5057 5058//5058 +f 5058//5058 5061//5061 4577//4577 +f 5060//5060 5059//5059 4577//4577 +f 4577//4577 5061//5061 5060//5060 +f 5071//5071 5067//5067 5060//5060 +f 5060//5060 5061//5061 5071//5071 +f 5058//5058 5070//5070 5071//5071 +f 5071//5071 5061//5061 5058//5058 +f 3993//3993 4570//4570 4569//4569 +f 4569//4569 5063//5063 3993//3993 +f 5068//5068 5062//5062 3993//3993 +f 3993//3993 5063//5063 5068//5068 +f 5060//5060 5067//5067 5068//5068 +f 5068//5068 5063//5063 5060//5060 +f 4569//4569 5059//5059 5060//5060 +f 5060//5060 5063//5063 4569//4569 +f 5066//5066 3986//3986 5069//5069 +f 5069//5069 5064//5064 5066//5066 +f 5073//5073 5065//5065 5066//5066 +f 5066//5066 5064//5064 5073//5073 +f 5068//5068 5067//5067 5073//5073 +f 5073//5073 5064//5064 5068//5068 +f 5069//5069 5062//5062 5068//5068 +f 5068//5068 5064//5064 5069//5069 +f 4775//4775 4773//4773 5357//5357 +f 5357//5357 5072//5072 4775//4775 +f 5071//5071 5070//5070 4775//4775 +f 4775//4775 5072//5072 5071//5071 +f 5073//5073 5067//5067 5071//5071 +f 5071//5071 5072//5072 5073//5073 +f 5357//5357 5065//5065 5073//5073 +f 5073//5073 5072//5072 5357//5357 +f 5074//5074 5087//5087 5005//5005 +f 5005//5005 5075//5075 5074//5074 +f 5005//5005 8717//8717 8715//8715 +f 5075//5075 5005//5005 5077//5077 +f 5005//5005 8715//8715 5077//5077 +f 4826//4826 5083//5083 4827//4827 +f 5083//5083 5076//5076 4827//4827 +f 5083//5083 8712//8712 5076//5076 +f 5075//5075 5077//5077 5078//5078 +f 5075//5075 5078//5078 8713//8713 +f 5083//5083 5074//5074 5075//5075 +f 5083//5083 5075//5075 8712//8712 +f 5075//5075 8713//8713 8712//8712 +f 5100//5100 5079//5079 5081//5081 +f 5081//5081 5082//5082 5100//5100 +f 5080//5080 5085//5085 5082//5082 +f 5081//5081 5006//5006 5080//5080 +f 5080//5080 5082//5082 5081//5081 +f 4822//4822 4821//4821 5094//5094 +f 5094//5094 5082//5082 4822//4822 +f 5085//5085 5086//5086 4822//4822 +f 4822//4822 5082//5082 5085//5085 +f 5094//5094 5100//5100 5082//5082 +f 5083//5083 4826//4826 5084//5084 +f 5089//5089 5074//5074 5083//5083 +f 5083//5083 5084//5084 5089//5089 +f 5089//5089 5084//5084 5085//5085 +f 5084//5084 5086//5086 5085//5085 +f 5088//5088 5087//5087 5074//5074 +f 5080//5080 5006//5006 5088//5088 +f 5089//5089 5085//5085 5080//5080 +f 5080//5080 5088//5088 5089//5089 +f 5089//5089 5088//5088 5074//5074 +f 5093//5093 5091//5091 5110//5110 +f 5110//5110 5010//5010 5093//5093 +f 5093//5093 5010//5010 5090//5090 +f 5010//5010 5008//5008 5090//5090 +f 5092//5092 4106//4106 5091//5091 +f 5091//5091 5093//5093 5092//5092 +f 5097//5097 5098//5098 5092//5092 +f 5092//5092 5093//5093 5097//5097 +f 5093//5093 5090//5090 5097//5097 +f 5094//5094 4821//4821 5095//5095 +f 5095//5095 5096//5096 5094//5094 +f 5096//5096 5100//5100 5094//5094 +f 5097//5097 5090//5090 5096//5096 +f 5095//5095 5098//5098 5097//5097 +f 5097//5097 5096//5096 5095//5095 +f 5099//5099 5079//5079 5100//5100 +f 5100//5100 5096//5096 5099//5099 +f 5090//5090 5008//5008 5099//5099 +f 5099//5099 5096//5096 5090//5090 +f 5102//5102 5364//5364 5101//5101 +f 5101//5101 5107//5107 5102//5102 +f 5101//5101 5003//5003 5103//5103 +f 5103//5103 5107//5107 5101//5101 +f 5363//5363 5107//5107 5106//5106 +f 5104//5104 5105//5105 5106//5106 +f 5106//5106 5107//5107 5104//5104 +f 5107//5107 5103//5103 5104//5104 +f 5363//5363 5102//5102 5107//5107 +f 5091//5091 4106//4106 5109//5109 +f 5109//5109 5108//5108 5091//5091 +f 5104//5104 5103//5103 5108//5108 +f 5109//5109 5105//5105 5104//5104 +f 5104//5104 5108//5108 5109//5109 +f 5103//5103 5003//5003 5002//5002 +f 5103//5103 5002//5002 5108//5108 +f 5110//5110 5091//5091 5108//5108 +f 5108//5108 5002//5002 5110//5110 +f 5347//5347 5013//5013 5111//5111 +f 5013//5013 5037//5037 5111//5111 +f 5037//5037 5013//5013 5015//5015 +f 5176//5176 5122//5122 5112//5112 +f 5112//5112 5119//5119 5176//5176 +f 5113//5113 5114//5114 5176//5176 +f 5176//5176 5119//5119 5113//5113 +f 5117//5117 5114//5114 5113//5113 +f 5214//5214 5201//5201 5115//5115 +f 5115//5115 5117//5117 5214//5214 +f 5116//5116 5210//5210 5214//5214 +f 5214//5214 5117//5117 5116//5116 +f 5117//5117 5113//5113 5116//5116 +f 5115//5115 5513//5513 5117//5117 +f 5127//5127 5118//5118 5209//5209 +f 5209//5209 5120//5120 5127//5127 +f 5119//5119 5112//5112 5127//5127 +f 5127//5127 5120//5120 5119//5119 +f 5116//5116 5113//5113 5119//5119 +f 5119//5119 5120//5120 5116//5116 +f 5209//5209 5210//5210 5116//5116 +f 5116//5116 5120//5120 5209//5209 +f 5121//5121 5187//5187 4079//4079 +f 4079//4079 5131//5131 5121//5121 +f 5121//5121 5131//5131 5125//5125 +f 5131//5131 5129//5129 5125//5125 +f 4079//4079 4080//4080 5131//5131 +f 5112//5112 5122//5122 5123//5123 +f 5123//5123 5126//5126 5112//5112 +f 5112//5112 5126//5126 5124//5124 +f 5125//5125 5129//5129 5124//5124 +f 5124//5124 5126//5126 5125//5125 +f 5125//5125 5126//5126 5123//5123 +f 5238//5238 5118//5118 5127//5127 +f 5127//5127 5128//5128 5238//5238 +f 5132//5132 5230//5230 5238//5238 +f 5238//5238 5128//5128 5132//5132 +f 5124//5124 5129//5129 5132//5132 +f 5132//5132 5128//5128 5124//5124 +f 5127//5127 5112//5112 5124//5124 +f 5124//5124 5128//5128 5127//5127 +f 5133//5133 4086//4086 9167//9167 +f 4086//4086 9168//9168 9167//9167 +f 5133//5133 5130//5130 4086//4086 +f 5131//5131 4080//4080 4086//4086 +f 4086//4086 5130//5130 5131//5131 +f 5132//5132 5129//5129 5131//5131 +f 5131//5131 5130//5130 5132//5132 +f 5133//5133 5230//5230 5132//5132 +f 5132//5132 5130//5130 5133//5133 +f 5135//5135 5153//5153 5134//5134 +f 5134//5134 5136//5136 5135//5135 +f 5142//5142 5143//5143 5135//5135 +f 5135//5135 5136//5136 5142//5142 +f 5139//5139 5137//5137 5142//5142 +f 5142//5142 5136//5136 5139//5139 +f 5134//5134 5138//5138 5139//5139 +f 5139//5139 5136//5136 5134//5134 +f 4122//4122 5194//5194 5144//5144 +f 5144//5144 5141//5141 4122//4122 +f 5140//5140 5146//5146 4122//4122 +f 4122//4122 5141//5141 5140//5140 +f 5142//5142 5137//5137 5140//5140 +f 5140//5140 5141//5141 5142//5142 +f 5144//5144 5143//5143 5142//5142 +f 5142//5142 5141//5141 5144//5144 +f 5145//5145 4068//4068 5148//5148 +f 5148//5148 5147//5147 5145//5145 +f 5149//5149 5247//5247 5145//5145 +f 5145//5145 5147//5147 5149//5149 +f 5140//5140 5137//5137 5149//5149 +f 5149//5149 5147//5147 5140//5140 +f 5148//5148 5146//5146 5140//5140 +f 5140//5140 5147//5147 5148//5148 +f 5157//5157 5156//5156 5151//5151 +f 5151//5151 5150//5150 5157//5157 +f 5139//5139 5138//5138 5157//5157 +f 5157//5157 5150//5150 5139//5139 +f 5149//5149 5137//5137 5139//5139 +f 5139//5139 5150//5150 5149//5149 +f 5151//5151 5247//5247 5149//5149 +f 5149//5149 5150//5150 5151//5151 +f 5155//5155 5200//5200 8699//8699 +f 5200//5200 8700//8700 8699//8699 +f 5165//5165 5164//5164 5155//5155 +f 5165//5165 5155//5155 8698//8698 +f 5155//5155 8699//8699 8698//8698 +f 5165//5165 8698//8698 5152//5152 +f 5134//5134 5153//5153 5199//5199 +f 5154//5154 5138//5138 5134//5134 +f 5134//5134 5199//5199 5154//5154 +f 5155//5155 5164//5164 5154//5154 +f 5154//5154 5199//5199 5155//5155 +f 5199//5199 5200//5200 5155//5155 +f 5160//5160 5156//5156 5157//5157 +f 5157//5157 5158//5158 5160//5160 +f 5161//5161 5159//5159 5160//5160 +f 5160//5160 5158//5158 5161//5161 +f 5154//5154 5164//5164 5161//5161 +f 5161//5161 5158//5158 5154//5154 +f 5157//5157 5138//5138 5154//5154 +f 5154//5154 5158//5158 5157//5157 +f 5163//5163 5538//5538 5251//5251 +f 5251//5251 5166//5166 5163//5163 +f 5163//5163 5165//5165 5162//5162 +f 5165//5165 5152//5152 5162//5162 +f 5163//5163 5166//5166 5165//5165 +f 5161//5161 5164//5164 5165//5165 +f 5165//5165 5166//5166 5161//5161 +f 5251//5251 5159//5159 5161//5161 +f 5161//5161 5166//5166 5251//5251 +f 5169//5169 4328//4328 5167//5167 +f 5168//5168 5171//5171 5169//5169 +f 5168//5168 5169//5169 5174//5174 +f 5167//5167 5183//5183 5174//5174 +f 5174//5174 5169//5169 5167//5167 +f 5515//5515 5170//5170 5168//5168 +f 5170//5170 5171//5171 5168//5168 +f 5175//5175 5114//5114 5117//5117 +f 5117//5117 5513//5513 5175//5175 +f 5515//5515 5168//5168 5175//5175 +f 5175//5175 5513//5513 5515//5515 +f 5172//5172 5122//5122 5176//5176 +f 5176//5176 5173//5173 5172//5172 +f 5174//5174 5183//5183 5172//5172 +f 5172//5172 5173//5173 5174//5174 +f 5175//5175 5168//5168 5174//5174 +f 5174//5174 5173//5173 5175//5175 +f 5176//5176 5114//5114 5175//5175 +f 5175//5175 5173//5173 5176//5176 +f 5177//5177 4020//4020 4037//4037 +f 4037//4037 5178//5178 5177//5177 +f 5180//5180 4325//4325 5177//5177 +f 5177//5177 5178//5178 5180//5180 +f 5181//5181 5179//5179 5180//5180 +f 5180//5180 5178//5178 5181//5181 +f 4037//4037 5186//5186 5181//5181 +f 5181//5181 5178//5178 4037//4037 +f 5167//5167 4328//4328 4324//4324 +f 5182//5182 5183//5183 5167//5167 +f 5167//5167 4324//4324 5182//5182 +f 5180//5180 5179//5179 5182//5182 +f 5182//5182 4324//4324 5180//5180 +f 4324//4324 4325//4325 5180//5180 +f 5123//5123 5122//5122 5172//5172 +f 5172//5172 5184//5184 5123//5123 +f 5188//5188 5125//5125 5123//5123 +f 5123//5123 5184//5184 5188//5188 +f 5182//5182 5179//5179 5188//5188 +f 5188//5188 5184//5184 5182//5182 +f 5172//5172 5183//5183 5182//5182 +f 5182//5182 5184//5184 5172//5172 +f 5121//5121 5185//5185 5187//5187 +f 5181//5181 5186//5186 5187//5187 +f 5187//5187 5185//5185 5181//5181 +f 5188//5188 5179//5179 5181//5181 +f 5181//5181 5185//5185 5188//5188 +f 5121//5121 5125//5125 5188//5188 +f 5188//5188 5185//5185 5121//5121 +f 5196//5196 5195//5195 5189//5189 +f 5193//5193 4824//4824 5189//5189 +f 5189//5189 5195//5195 5193//5193 +f 5190//5190 5192//5192 5191//5191 +f 5191//5191 5192//5192 5193//5193 +f 5192//5192 4824//4824 5193//5193 +f 5194//5194 5191//5191 5144//5144 +f 5144//5144 5191//5191 5143//5143 +f 5191//5191 5193//5193 5143//5143 +f 5194//5194 5190//5190 5191//5191 +f 5135//5135 5195//5195 5153//5153 +f 5195//5195 5196//5196 5153//5153 +f 5143//5143 5193//5193 5195//5195 +f 5143//5143 5195//5195 5135//5135 +f 5197//5197 5198//5198 5196//5196 +f 5197//5197 8705//8705 8704//8704 +f 5198//5198 5197//5197 8703//8703 +f 5197//5197 8704//8704 8703//8703 +f 5200//5200 5198//5198 8702//8702 +f 5198//5198 8703//8703 8702//8702 +f 5200//5200 5199//5199 5198//5198 +f 5153//5153 5196//5196 5198//5198 +f 5198//5198 5199//5199 5153//5153 +f 5200//5200 8702//8702 8700//8700 +f 5202//5202 5201//5201 5213//5213 +f 5213//5213 5204//5204 5202//5202 +f 5203//5203 5519//5519 5202//5202 +f 5202//5202 5204//5204 5203//5203 +f 5208//5208 4170//4170 5203//5203 +f 5203//5203 5204//5204 5208//5208 +f 5213//5213 5215//5215 5208//5208 +f 5208//5208 5204//5204 5213//5213 +f 5203//5203 4170//4170 5541//5541 +f 5519//5519 5203//5203 5205//5205 +f 5203//5203 8756//8756 5205//5205 +f 5203//5203 5541//5541 8756//8756 +f 5541//5541 8757//8757 8756//8756 +f 5206//5206 5532//5532 5207//5207 +f 5207//5207 5541//5541 5206//5206 +f 5206//5206 5541//5541 4170//4170 +f 5223//5223 5220//5220 4171//4171 +f 5208//5208 5215//5215 5223//5223 +f 5223//5223 4171//4171 5208//5208 +f 5208//5208 4171//4171 4170//4170 +f 5209//5209 5118//5118 5235//5235 +f 5235//5235 5212//5212 5209//5209 +f 5217//5217 5210//5210 5209//5209 +f 5209//5209 5212//5212 5217//5217 +f 5211//5211 5222//5222 5217//5217 +f 5217//5217 5212//5212 5211//5211 +f 5235//5235 5228//5228 5211//5211 +f 5211//5211 5212//5212 5235//5235 +f 5213//5213 5201//5201 5214//5214 +f 5214//5214 5216//5216 5213//5213 +f 5218//5218 5215//5215 5213//5213 +f 5213//5213 5216//5216 5218//5218 +f 5217//5217 5222//5222 5218//5218 +f 5218//5218 5216//5216 5217//5217 +f 5214//5214 5210//5210 5217//5217 +f 5217//5217 5216//5216 5214//5214 +f 5219//5219 5220//5220 5223//5223 +f 5223//5223 5224//5224 5219//5219 +f 5221//5221 4161//4161 5219//5219 +f 5219//5219 5224//5224 5221//5221 +f 5218//5218 5222//5222 5221//5221 +f 5221//5221 5224//5224 5218//5218 +f 5223//5223 5215//5215 5218//5218 +f 5218//5218 5224//5224 5223//5223 +f 5225//5225 5227//5227 9160//9160 +f 5227//5227 9161//9161 9160//9160 +f 5225//5225 5226//5226 5227//5227 +f 5211//5211 5228//5228 5227//5227 +f 5227//5227 5226//5226 5211//5211 +f 5221//5221 5222//5222 5211//5211 +f 5211//5211 5226//5226 5221//5221 +f 5225//5225 4161//4161 5221//5221 +f 5221//5221 5226//5226 5225//5225 +f 5133//5133 9167//9167 5229//5229 +f 5133//5133 5229//5229 5231//5231 +f 5234//5234 5230//5230 5133//5133 +f 5234//5234 5133//5133 9166//9166 +f 5133//5133 5231//5231 9166//9166 +f 5234//5234 5232//5232 5233//5233 +f 5234//5234 9166//9166 5232//5232 +f 5235//5235 5118//5118 5238//5238 +f 5238//5238 5236//5236 5235//5235 +f 5237//5237 5228//5228 5235//5235 +f 5235//5235 5236//5236 5237//5237 +f 5237//5237 5234//5234 9164//9164 +f 5234//5234 5233//5233 9164//9164 +f 5237//5237 5236//5236 5234//5234 +f 5238//5238 5230//5230 5234//5234 +f 5234//5234 5236//5236 5238//5238 +f 5227//5227 9162//9162 9161//9161 +f 5227//5227 5240//5240 9162//9162 +f 5237//5237 9164//9164 5239//5239 +f 5237//5237 5239//5239 5241//5241 +f 5227//5227 5228//5228 5237//5237 +f 5227//5227 5237//5237 5240//5240 +f 5237//5237 5241//5241 5240//5240 +f 5151//5151 5156//5156 5242//5242 +f 5242//5242 5244//5244 5151//5151 +f 5243//5243 5247//5247 5151//5151 +f 5151//5151 5244//5244 5243//5243 +f 5244//5244 4650//4650 5243//5243 +f 5242//5242 5256//5256 5244//5244 +f 5245//5245 4068//4068 5145//5145 +f 5145//5145 5246//5246 5245//5245 +f 5243//5243 4650//4650 5246//5246 +f 5145//5145 5247//5247 5243//5243 +f 5243//5243 5246//5246 5145//5145 +f 5248//5248 9137//9137 5249//5249 +f 5246//5246 5248//5248 9140//9140 +f 5248//5248 5249//5249 9140//9140 +f 5248//5248 5246//5246 4650//4650 +f 5245//5245 5246//5246 9141//9141 +f 5246//5246 9140//9140 9141//9141 +f 5256//5256 4652//4652 5250//5250 +f 5250//5250 5244//5244 5256//5256 +f 4650//4650 5244//5244 5250//5250 +f 5251//5251 5538//5538 5254//5254 +f 5254//5254 5252//5252 5251//5251 +f 5253//5253 5159//5159 5251//5251 +f 5251//5251 5252//5252 5253//5253 +f 5262//5262 5261//5261 5253//5253 +f 5253//5253 5252//5252 5262//5262 +f 5254//5254 5260//5260 5262//5262 +f 5262//5262 5252//5252 5254//5254 +f 5242//5242 5156//5156 5160//5160 +f 5160//5160 5255//5255 5242//5242 +f 5257//5257 5256//5256 5242//5242 +f 5242//5242 5255//5255 5257//5257 +f 5253//5253 5261//5261 5257//5257 +f 5257//5257 5255//5255 5253//5253 +f 5160//5160 5159//5159 5253//5253 +f 5253//5253 5255//5255 5160//5160 +f 4659//4659 4652//4652 5256//5256 +f 5256//5256 5257//5257 4659//4659 +f 5263//5263 4657//4657 4659//4659 +f 4659//4659 5257//5257 5263//5263 +f 5257//5257 5261//5261 5263//5263 +f 5258//5258 4669//4669 5259//5259 +f 5259//5259 5264//5264 5258//5258 +f 5262//5262 5260//5260 5258//5258 +f 5258//5258 5264//5264 5262//5262 +f 5263//5263 5261//5261 5262//5262 +f 5262//5262 5264//5264 5263//5263 +f 5259//5259 4657//4657 5263//5263 +f 5263//5263 5264//5264 5259//5259 +f 4529//4529 5266//5266 5265//5265 +f 5309//5309 4531//4531 4033//4033 +f 4033//4033 4531//4531 5265//5265 +f 5317//5317 5309//5309 4033//4033 +f 5267//5267 5269//5269 5266//5266 +f 5266//5266 4561//4561 5267//5267 +f 5304//5304 4565//4565 4012//4012 +f 4012//4012 5267//5267 5304//5304 +f 4561//4561 5268//5268 5304//5304 +f 5304//5304 5267//5267 4561//4561 +f 4012//4012 5269//5269 5267//5267 +f 5270//5270 5273//5273 8810//8810 +f 5273//5273 8766//8766 8810//8810 +f 5270//5270 8810//8810 5271//5271 +f 5281//5281 5270//5270 5272//5272 +f 5270//5270 8767//8767 5272//5272 +f 5270//5270 5271//5271 8767//8767 +f 5281//5281 5272//5272 8770//8770 +f 5275//5275 5273//5273 5270//5270 +f 5270//5270 5276//5276 5275//5275 +f 5274//5274 5306//5306 5275//5275 +f 5275//5275 5276//5276 5274//5274 +f 5280//5280 5283//5283 5274//5274 +f 5274//5274 5276//5276 5280//5280 +f 5270//5270 5281//5281 5280//5280 +f 5280//5280 5276//5276 5270//5270 +f 5274//5274 5283//5283 5277//5277 +f 5274//5274 5277//5277 5306//5306 +f 5279//5279 5278//5278 5305//5305 +f 5305//5305 5277//5277 5279//5279 +f 5283//5283 4273//4273 5279//5279 +f 5279//5279 5277//5277 5283//5283 +f 5284//5284 5282//5282 4276//4276 +f 5280//5280 5281//5281 8769//8769 +f 5281//5281 8770//8770 8769//8769 +f 5284//5284 5280//5280 5282//5282 +f 5280//5280 8769//8769 5282//5282 +f 5280//5280 5284//5284 5283//5283 +f 5284//5284 4273//4273 5283//5283 +f 5285//5285 5291//5291 5288//5288 +f 5288//5288 5286//5286 5285//5285 +f 5289//5289 5294//5294 5285//5285 +f 5285//5285 5286//5286 5289//5289 +f 5286//5286 5287//5287 5289//5289 +f 5288//5288 4548//4548 5286//5286 +f 4506//4506 4498//4498 5298//5298 +f 5287//5287 4506//4506 5289//5289 +f 5298//5298 5294//5294 5289//5289 +f 5289//5289 4506//4506 5298//5298 +f 5316//5316 4622//4622 5290//5290 +f 5290//5290 5287//5287 5316//5316 +f 5292//5292 5291//5291 5285//5285 +f 5285//5285 5293//5293 5292//5292 +f 5292//5292 8678//8678 4555//4555 +f 5292//5292 5293//5293 8678//8678 +f 5293//5293 8675//8675 8678//8678 +f 5293//5293 8674//8674 8675//8675 +f 5285//5285 5294//5294 8814//8814 +f 5294//5294 5300//5300 8814//8814 +f 5293//5293 5285//5285 8674//8674 +f 5285//5285 8814//8814 8674//8674 +f 5298//5298 4498//4498 5295//5295 +f 4498//4498 5296//5296 5295//5295 +f 5298//5298 5295//5295 5297//5297 +f 5294//5294 5298//5298 5300//5300 +f 5298//5298 5299//5299 5300//5300 +f 5298//5298 5297//5297 5299//5299 +f 4568//4568 4565//4565 5304//5304 +f 5304//5304 5303//5303 4568//4568 +f 5301//5301 5302//5302 4568//4568 +f 4568//4568 5303//5303 5301//5301 +f 4564//4564 4562//4562 5301//5301 +f 5301//5301 5303//5303 4564//4564 +f 5304//5304 5268//5268 4564//4564 +f 4564//4564 5303//5303 5304//5304 +f 5305//5305 5278//5278 5308//5308 +f 5308//5308 5307//5307 5305//5305 +f 5306//5306 5277//5277 5305//5305 +f 5305//5305 5307//5307 5306//5306 +f 5301//5301 4562//4562 5306//5306 +f 5306//5306 5307//5307 5301//5301 +f 5308//5308 5302//5302 5301//5301 +f 5301//5301 5307//5307 5308//5308 +f 5310//5310 4531//4531 5309//5309 +f 5309//5309 5311//5311 5310//5310 +f 5310//5310 5311//5311 5313//5313 +f 5313//5313 5311//5311 5309//5309 +f 5286//5286 4548//4548 5314//5314 +f 5314//5314 5312//5312 5286//5286 +f 5313//5313 5315//5315 5286//5286 +f 5286//5286 5312//5312 5313//5313 +f 5314//5314 5310//5310 5313//5313 +f 5313//5313 5312//5312 5314//5314 +f 4622//4622 5316//5316 5315//5315 +f 5315//5315 5316//5316 5286//5286 +f 5316//5316 5287//5287 5286//5286 +f 5318//5318 5319//5319 5317//5317 +f 5313//5313 5309//5309 5317//5317 +f 5317//5317 5319//5319 5313//5313 +f 5313//5313 5319//5319 5315//5315 +f 5318//5318 4622//4622 5315//5315 +f 5315//5315 5319//5319 5318//5318 +f 3988//3988 3986//3986 5320//5320 +f 5320//5320 5018//5018 3988//3988 +f 3988//3988 5018//5018 5025//5025 +f 5322//5322 5347//5347 5321//5321 +f 5321//5321 5325//5325 5322//5322 +f 5322//5322 5325//5325 5022//5022 +f 5023//5023 5022//5022 5323//5323 +f 5022//5022 5324//5324 5323//5323 +f 5321//5321 5363//5363 5326//5326 +f 5326//5326 5325//5325 5321//5321 +f 5326//5326 5324//5324 5022//5022 +f 5022//5022 5325//5325 5326//5326 +f 5026//5026 5327//5327 8763//8763 +f 5327//5327 8764//8764 8763//8763 +f 5327//5327 5328//5328 8764//8764 +f 5327//5327 8765//8765 5329//5329 +f 5327//5327 5329//5329 5328//5328 +f 5330//5330 5360//5360 5361//5361 +f 5332//5332 5044//5044 5330//5330 +f 5330//5330 5361//5361 5332//5332 +f 5333//5333 5331//5331 5332//5332 +f 5332//5332 5361//5361 5333//5333 +f 5361//5361 5358//5358 5333//5333 +f 5327//5327 5026//5026 5336//5336 +f 5336//5336 5334//5334 5327//5327 +f 5327//5327 5338//5338 8765//8765 +f 5338//5338 5335//5335 8765//8765 +f 5327//5327 5334//5334 5338//5338 +f 5332//5332 5331//5331 5338//5338 +f 5338//5338 5334//5334 5332//5332 +f 5336//5336 5044//5044 5332//5332 +f 5332//5332 5334//5334 5336//5336 +f 5340//5340 4763//4763 5337//5337 +f 5339//5339 4764//4764 5340//5340 +f 5338//5338 5331//5331 5339//5339 +f 5339//5339 5340//5340 5338//5338 +f 5338//5338 8768//8768 5335//5335 +f 5338//5338 5340//5340 8768//8768 +f 5340//5340 5337//5337 8768//8768 +f 5341//5341 4773//4773 5342//5342 +f 5342//5342 5343//5343 5341//5341 +f 5333//5333 5358//5358 5341//5341 +f 5341//5341 5343//5343 5333//5333 +f 5339//5339 5331//5331 5333//5333 +f 5333//5333 5343//5343 5339//5339 +f 5342//5342 4764//4764 5339//5339 +f 5339//5339 5343//5343 5342//5342 +f 5049//5049 5353//5353 5354//5354 +f 5354//5354 5344//5344 5049//5049 +f 5345//5345 5051//5051 5049//5049 +f 5049//5049 5344//5344 5345//5345 +f 5346//5346 5352//5352 5345//5345 +f 5345//5345 5344//5344 5346//5346 +f 5354//5354 5351//5351 5346//5346 +f 5346//5346 5344//5344 5354//5354 +f 5349//5349 5347//5347 5348//5348 +f 5348//5348 5350//5350 5349//5349 +f 5345//5345 5352//5352 5350//5350 +f 5348//5348 5051//5051 5345//5345 +f 5345//5345 5350//5350 5348//5348 +f 5443//5443 5364//5364 5362//5362 +f 5362//5362 5350//5350 5443//5443 +f 5352//5352 5432//5432 5443//5443 +f 5443//5443 5350//5350 5352//5352 +f 5362//5362 5349//5349 5350//5350 +f 5346//5346 5351//5351 5355//5355 +f 5355//5355 5439//5439 5346//5346 +f 5346//5346 5439//5439 5352//5352 +f 5439//5439 5432//5432 5352//5352 +f 5354//5354 5353//5353 8701//8701 +f 5353//5353 5056//5056 8701//8701 +f 5354//5354 8701//8701 8706//8706 +f 5351//5351 5354//5354 8711//8711 +f 5354//5354 8709//8709 8711//8711 +f 5354//5354 8706//8706 8709//8709 +f 5355//5355 5351//5351 8710//8710 +f 5351//5351 8711//8711 8710//8710 +f 5355//5355 8710//8710 8714//8714 +f 5357//5357 4773//4773 5341//5341 +f 5341//5341 5359//5359 5357//5357 +f 5356//5356 5065//5065 5357//5357 +f 5357//5357 5359//5359 5356//5356 +f 5358//5358 5361//5361 5356//5356 +f 5356//5356 5359//5359 5358//5358 +f 5358//5358 5359//5359 5341//5341 +f 5320//5320 3986//3986 5066//5066 +f 5066//5066 5360//5360 5320//5320 +f 5356//5356 5361//5361 5360//5360 +f 5066//5066 5065//5065 5356//5356 +f 5356//5356 5360//5360 5066//5066 +f 5347//5347 5349//5349 5321//5321 +f 5321//5321 5362//5362 5363//5363 +f 5362//5362 5102//5102 5363//5363 +f 5349//5349 5362//5362 5321//5321 +f 5362//5362 5364//5364 5102//5102 +f 4232//4232 5369//5369 4233//4233 +f 5369//5369 8777//8777 4233//4233 +f 5369//5369 5365//5365 8777//8777 +f 5369//5369 5373//5373 5365//5365 +f 5373//5373 8776//8776 5365//5365 +f 5373//5373 5367//5367 5366//5366 +f 5367//5367 8773//8773 5366//5366 +f 5373//5373 5366//5366 8776//8776 +f 4261//4261 5368//5368 4252//4252 +f 5371//5371 4245//4245 4252//4252 +f 4252//4252 5368//5368 5371//5371 +f 5368//5368 4269//4269 5371//5371 +f 5369//5369 4232//4232 5372//5372 +f 5372//5372 5370//5370 5369//5369 +f 5370//5370 5373//5373 5369//5369 +f 5371//5371 4269//4269 5370//5370 +f 5372//5372 4245//4245 5371//5371 +f 5371//5371 5370//5370 5372//5372 +f 4275//4275 5367//5367 5373//5373 +f 4269//4269 4275//4275 5370//5370 +f 5370//5370 4275//4275 5373//5373 +f 5374//5374 5378//5378 4270//4270 +f 4270//4270 5368//5368 5374//5374 +f 5368//5368 4261//4261 5374//5374 +f 4269//4269 5368//5368 4270//4270 +f 5375//5375 5376//5376 5377//5377 +f 5377//5377 5376//5376 5385//5385 +f 5379//5379 5378//5378 5374//5374 +f 5374//5374 5380//5380 5379//5379 +f 5375//5375 5382//5382 5379//5379 +f 5379//5379 5380//5380 5375//5375 +f 5374//5374 4261//4261 5380//5380 +f 4278//4278 5377//5377 5381//5381 +f 5377//5377 5385//5385 5381//5381 +f 4278//4278 5382//5382 5375//5375 +f 5375//5375 5377//5377 4278//4278 +f 4749//4749 4743//4743 5383//5383 +f 5383//5383 5384//5384 4749//4749 +f 4749//4749 5384//5384 4752//4752 +f 5383//5383 5390//5390 5384//5384 +f 5385//5385 4760//4760 4779//4779 +f 4779//4779 4760//4760 4752//4752 +f 4779//4779 4752//4752 4780//4780 +f 5381//5381 5385//5385 4779//4779 +f 5390//5390 4776//4776 5384//5384 +f 4780//4780 4752//4752 5384//5384 +f 5384//5384 4776//4776 4780//4780 +f 4732//4732 5386//5386 5389//5389 +f 5389//5389 5387//5387 4732//4732 +f 5392//5392 4735//4735 4732//4732 +f 4732//4732 5387//5387 5392//5392 +f 5388//5388 4771//4771 5392//5392 +f 5392//5392 5387//5387 5388//5388 +f 5389//5389 5394//5394 5388//5388 +f 5388//5388 5387//5387 5389//5389 +f 5383//5383 4743//4743 4745//4745 +f 4745//4745 5393//5393 5383//5383 +f 5391//5391 5390//5390 5383//5383 +f 5383//5383 5393//5393 5391//5391 +f 5392//5392 4771//4771 5391//5391 +f 5391//5391 5393//5393 5392//5392 +f 4745//4745 4735//4735 5392//5392 +f 5392//5392 5393//5393 4745//4745 +f 5390//5390 5391//5391 4768//4768 +f 4768//4768 5391//5391 4771//4771 +f 4765//4765 5396//5396 4766//4766 +f 5388//5388 5394//5394 5395//5395 +f 5394//5394 8774//8774 5395//5395 +f 4765//4765 5388//5388 5396//5396 +f 5388//5388 5395//5395 5396//5396 +f 5388//5388 4765//4765 4771//4771 +f 5389//5389 5386//5386 8778//8778 +f 5386//5386 4730//4730 8778//8778 +f 5389//5389 8778//8778 5397//5397 +f 5394//5394 5389//5389 8775//8775 +f 5389//5389 5397//5397 8775//8775 +f 5394//5394 8775//8775 8774//8774 +f 5404//5404 4507//4507 5398//5398 +f 4475//4475 5399//5399 4478//4478 +f 4478//4478 5399//5399 5402//5402 +f 5399//5399 5403//5403 5402//5402 +f 5400//5400 8667//8667 4470//4470 +f 5400//5400 5401//5401 8667//8667 +f 5401//5401 8668//8668 8667//8667 +f 5401//5401 8671//8671 8668//8668 +f 5402//5402 5403//5403 5401//5401 +f 5402//5402 5401//5401 5400//5400 +f 5405//5405 5404//5404 8672//8672 +f 5404//5404 5398//5398 8672//8672 +f 5401//5401 5405//5405 8671//8671 +f 5405//5405 8672//8672 8671//8671 +f 5403//5403 4511//4511 5405//5405 +f 5405//5405 5401//5401 5403//5403 +f 5406//5406 4512//4512 5407//5407 +f 5399//5399 4475//4475 5406//5406 +f 5406//5406 5407//5407 5399//5399 +f 5399//5399 5407//5407 5403//5403 +f 5407//5407 4511//4511 5403//5403 +f 5408//5408 4482//4482 5418//5418 +f 5409//5409 5410//5410 5408//5408 +f 5409//5409 5408//5408 5415//5415 +f 5415//5415 5408//5408 5418//5418 +f 5414//5414 5410//5410 5409//5409 +f 5413//5413 4512//4512 5406//5406 +f 5411//5411 5412//5412 5413//5413 +f 5414//5414 5409//5409 5411//5411 +f 5411//5411 5413//5413 5414//5414 +f 5406//5406 4475//4475 5414//5414 +f 5414//5414 5413//5413 5406//5406 +f 5415//5415 5418//5418 4492//4492 +f 5411//5411 5409//5409 5415//5415 +f 5415//5415 5412//5412 5411//5411 +f 5417//5417 4441//4441 4501//4501 +f 5416//5416 4489//4489 5420//5420 +f 5420//5420 5417//5417 5416//5416 +f 5416//5416 5417//5417 4501//4501 +f 5418//5418 4482//4482 5419//5419 +f 5418//5418 5419//5419 4488//4488 +f 5420//5420 4489//4489 4488//4488 +f 4488//4488 5419//5419 5420//5420 +f 4492//4492 5418//5418 4488//4488 +f 5425//5425 5421//5421 5422//5422 +f 5421//5421 8666//8666 5422//5422 +f 5421//5421 5425//5425 4454//4454 +f 5425//5425 5426//5426 4454//4454 +f 5425//5425 5422//5422 5423//5423 +f 4501//4501 4441//4441 4455//4455 +f 4454//4454 5426//5426 4455//4455 +f 5426//5426 4503//4503 4500//4500 +f 5426//5426 4500//4500 4455//4455 +f 4455//4455 4500//4500 4501//4501 +f 5424//5424 8669//8669 8670//8670 +f 5424//5424 5425//5425 8669//8669 +f 5425//5425 5423//5423 8669//8669 +f 5425//5425 5424//5424 5426//5426 +f 5424//5424 4503//4503 5426//5426 +f 4969//4969 4965//4965 5436//5436 +f 5436//5436 5427//5427 4969//4969 +f 4969//4969 8724//8724 8726//8726 +f 4969//4969 5427//5427 8724//8724 +f 5427//5427 8722//8722 8724//8724 +f 5429//5429 8719//8719 5428//5428 +f 5427//5427 5429//5429 8722//8722 +f 5429//5429 5428//5428 8722//8722 +f 5436//5436 5440//5440 5429//5429 +f 5429//5429 5427//5427 5436//5436 +f 5441//5441 5355//5355 5430//5430 +f 5355//5355 8716//8716 5430//5430 +f 5429//5429 5440//5440 5441//5441 +f 5429//5429 5441//5441 5431//5431 +f 5441//5441 5430//5430 5431//5431 +f 5429//5429 8720//8720 8719//8719 +f 5429//5429 5431//5431 8720//8720 +f 4950//4950 5435//5435 4952//4952 +f 5433//5433 4953//4953 4952//4952 +f 4952//4952 5435//5435 5433//5433 +f 5434//5434 5432//5432 5433//5433 +f 5433//5433 5435//5435 5434//5434 +f 4950//4950 5444//5444 5434//5434 +f 5434//5434 5435//5435 4950//4950 +f 5436//5436 4965//4965 4960//4960 +f 4960//4960 5438//5438 5436//5436 +f 5437//5437 5440//5440 5436//5436 +f 5436//5436 5438//5438 5437//5437 +f 5433//5433 5432//5432 5437//5437 +f 5437//5437 5438//5438 5433//5433 +f 4960//4960 4953//4953 5433//5433 +f 5433//5433 5438//5438 4960//4960 +f 5439//5439 5355//5355 5441//5441 +f 5432//5432 5439//5439 5437//5437 +f 5441//5441 5440//5440 5437//5437 +f 5437//5437 5439//5439 5441//5441 +f 5444//5444 5442//5442 5443//5443 +f 5444//5444 5443//5443 5434//5434 +f 5434//5434 5443//5443 5432//5432 +f 5012//5012 4999//4999 4942//4942 +f 5447//5447 4948//4948 4942//4942 +f 4942//4942 4999//4999 5447//5447 +f 5445//5445 5446//5446 4950//4950 +f 5446//5446 5444//5444 4950//4950 +f 5445//5445 4948//4948 5447//5447 +f 5447//5447 5446//5446 5445//5445 +f 5004//5004 5442//5442 5444//5444 +f 5444//5444 5446//5446 5004//5004 +f 5447//5447 5001//5001 5004//5004 +f 5004//5004 5446//5446 5447//5447 +f 4999//4999 5001//5001 5447//5447 +f 5449//5449 4992//4992 5448//5448 +f 5454//5454 4998//4998 5449//5449 +f 5454//5454 5449//5449 5455//5455 +f 5455//5455 5449//5449 5448//5448 +f 5450//5450 4998//4998 5454//5454 +f 5012//5012 5450//5450 5009//5009 +f 5453//5453 5456//5456 5009//5009 +f 5009//5009 5450//5450 5453//5453 +f 5450//5450 5454//5454 5453//5453 +f 5451//5451 5079//5079 5452//5452 +f 5455//5455 5448//5448 5451//5451 +f 5451//5451 5452//5452 5455//5455 +f 5453//5453 5454//5454 5455//5455 +f 5455//5455 5452//5452 5453//5453 +f 5452//5452 5456//5456 5453//5453 +f 5459//5459 5465//5465 5464//5464 +f 5464//5464 5457//5457 5459//5459 +f 5460//5460 5458//5458 5459//5459 +f 5459//5459 5457//5457 5460//5460 +f 5464//5464 5087//5087 5457//5457 +f 5448//5448 4992//4992 4989//4989 +f 4989//4989 5461//5461 5448//5448 +f 4989//4989 5458//5458 5460//5460 +f 5460//5460 5461//5461 4989//4989 +f 5462//5462 5079//5079 5451//5451 +f 5451//5451 5461//5461 5462//5462 +f 5462//5462 5461//5461 5463//5463 +f 5461//5461 5460//5460 5463//5463 +f 5451//5451 5448//5448 5461//5461 +f 5463//5463 5460//5460 5457//5457 +f 5464//5464 5465//5465 8721//8721 +f 5465//5465 4978//4978 8721//8721 +f 5466//5466 5464//5464 5467//5467 +f 5464//5464 8721//8721 5467//5467 +f 5466//5466 5087//5087 5464//5464 +f 5466//5466 5467//5467 8718//8718 +f 4179//4179 9151//9151 9148//9148 +f 5493//5493 5469//5469 5468//5468 +f 5493//5493 9136//9136 5469//5469 +f 5476//5476 5470//5470 9139//9139 +f 5476//5476 9139//9139 9138//9138 +f 5493//5493 5476//5476 9136//9136 +f 5476//5476 9138//9138 9136//9136 +f 5471//5471 4179//4179 9147//9147 +f 4179//4179 9148//9148 9147//9147 +f 5471//5471 9147//9147 9144//9144 +f 5472//5472 5475//5475 5471//5471 +f 5472//5472 5471//5471 5474//5474 +f 5471//5471 9144//9144 5474//5474 +f 5472//5472 5473//5473 9142//9142 +f 5472//5472 5474//5474 5473//5473 +f 5496//5496 4175//4175 5477//5477 +f 5477//5477 5476//5476 5496//5496 +f 5476//5476 5493//5493 5496//5496 +f 5476//5476 5472//5472 5470//5470 +f 5472//5472 9142//9142 5470//5470 +f 5477//5477 5475//5475 5472//5472 +f 5472//5472 5476//5476 5477//5477 +f 5478//5478 5483//5483 9123//9123 +f 4648//4648 4647//4647 5478//5478 +f 4648//4648 5478//5478 9122//9122 +f 5478//5478 9123//9123 9122//9122 +f 4648//4648 9121//9121 4649//4649 +f 4648//4648 9122//9122 9121//9121 +f 5482//5482 5479//5479 9127//9127 +f 5481//5481 9131//9131 9129//9129 +f 5482//5482 5481//5481 5479//5479 +f 5481//5481 9129//9129 5479//5479 +f 5482//5482 5480//5480 5481//5481 +f 5478//5478 5482//5482 5483//5483 +f 5482//5482 9127//9127 5483//5483 +f 5484//5484 5487//5487 5492//5492 +f 5492//5492 5485//5485 5484//5484 +f 5481//5481 5480//5480 5484//5484 +f 5484//5484 5485//5485 5481//5481 +f 5481//5481 5485//5485 9131//9131 +f 5485//5485 5486//5486 9131//9131 +f 4658//4658 4655//4655 5501//5501 +f 5501//5501 5488//5488 4658//4658 +f 5491//5491 5490//5490 4658//4658 +f 4658//4658 5488//5488 5491//5491 +f 5484//5484 5480//5480 5491//5491 +f 5491//5491 5488//5488 5484//5484 +f 5501//5501 5487//5487 5484//5484 +f 5484//5484 5488//5488 5501//5501 +f 5478//5478 4647//4647 5489//5489 +f 5478//5478 5489//5489 5482//5482 +f 5491//5491 5480//5480 5482//5482 +f 5482//5482 5489//5489 5491//5491 +f 5489//5489 5490//5490 5491//5491 +f 5500//5500 5503//5503 5505//5505 +f 5505//5505 5507//5507 5500//5500 +f 5492//5492 5487//5487 5500//5500 +f 5500//5500 5507//5507 5492//5492 +f 5493//5493 5468//5468 5494//5494 +f 5495//5495 5493//5493 9134//9134 +f 5493//5493 5494//5494 9134//9134 +f 5493//5493 5495//5495 5497//5497 +f 5505//5505 5503//5503 5497//5497 +f 5497//5497 5495//5495 5505//5505 +f 5505//5505 5495//5495 9120//9120 +f 5495//5495 9134//9134 9120//9120 +f 5498//5498 4175//4175 5496//5496 +f 5496//5496 5497//5497 5498//5498 +f 5502//5502 5504//5504 5498//5498 +f 5498//5498 5497//5497 5502//5502 +f 5497//5497 5503//5503 5502//5502 +f 5496//5496 5493//5493 5497//5497 +f 5501//5501 4655//4655 4672//4672 +f 4672//4672 5499//5499 5501//5501 +f 5500//5500 5487//5487 5501//5501 +f 5501//5501 5499//5499 5500//5500 +f 5502//5502 5503//5503 5500//5500 +f 5500//5500 5499//5499 5502//5502 +f 4672//4672 5504//5504 5502//5502 +f 5502//5502 5499//5499 4672//4672 +f 5505//5505 9120//9120 5506//5506 +f 5492//5492 5507//5507 9128//9128 +f 5507//5507 9126//9126 9128//9128 +f 5507//5507 9125//9125 9126//9126 +f 5507//5507 9124//9124 9125//9125 +f 5507//5507 5505//5505 9124//9124 +f 5505//5505 5506//5506 9124//9124 +f 5485//5485 5492//5492 5508//5508 +f 5492//5492 9128//9128 5508//5508 +f 5485//5485 5508//5508 9130//9130 +f 5485//5485 9130//9130 5486//5486 +f 4584//4584 5517//5517 5509//5509 +f 4583//4583 5511//5511 5510//5510 +f 4583//4583 4585//4585 5511//5511 +f 5515//5515 5513//5513 5512//5512 +f 5513//5513 5514//5514 5512//5512 +f 5515//5515 5516//5516 8684//8684 +f 5515//5515 5512//5512 5516//5516 +f 4584//4584 5518//5518 5517//5517 +f 4584//4584 5170//5170 5518//5518 +f 5170//5170 8683//8683 5518//5518 +f 5170//5170 5515//5515 8683//8683 +f 5515//5515 8684//8684 8683//8683 +f 5519//5519 5205//5205 5520//5520 +f 5525//5525 5201//5201 5202//5202 +f 5525//5525 5202//5202 8692//8692 +f 5202//5202 8695//8695 8692//8692 +f 5525//5525 8690//8690 8689//8689 +f 5525//5525 8692//8692 8690//8690 +f 5202//5202 5519//5519 5521//5521 +f 5519//5519 5520//5520 5521//5521 +f 5202//5202 5521//5521 8695//8695 +f 5538//5538 5522//5522 8752//8752 +f 5538//5538 5163//5163 5522//5522 +f 5163//5163 5523//5523 5522//5522 +f 5163//5163 5162//5162 5523//5523 +f 5115//5115 5201//5201 5525//5525 +f 5525//5525 5526//5526 5115//5115 +f 5526//5526 5513//5513 5115//5115 +f 5526//5526 5524//5524 8687//8687 +f 5525//5525 8689//8689 8688//8688 +f 5526//5526 5525//5525 5524//5524 +f 5525//5525 8688//8688 5524//5524 +f 5526//5526 8687//8687 8686//8686 +f 5513//5513 5526//5526 5514//5514 +f 5526//5526 8686//8686 5514//5514 +f 4671//4671 4669//4669 5527//5527 +f 5527//5527 5531//5531 4671//4671 +f 5534//5534 4671//4671 5528//5528 +f 4671//4671 5530//5530 5528//5528 +f 4671//4671 5531//5531 5530//5530 +f 5531//5531 5529//5529 5530//5530 +f 5531//5531 8758//8758 5529//5529 +f 5527//5527 8753//8753 8755//8755 +f 5531//5531 5527//5527 8758//8758 +f 5527//5527 8755//8755 8758//8758 +f 5532//5532 4665//4665 5540//5540 +f 4665//4665 5533//5533 5540//5540 +f 4665//4665 5535//5535 5533//5533 +f 4665//4665 5534//5534 8762//8762 +f 5534//5534 5528//5528 8762//8762 +f 4665//4665 8762//8762 5535//5535 +f 5538//5538 5260//5260 5254//5254 +f 5260//5260 5536//5536 8754//8754 +f 5538//5538 8752//8752 5537//5537 +f 5260//5260 5538//5538 5536//5536 +f 5538//5538 5537//5537 5536//5536 +f 5527//5527 4669//4669 5258//5258 +f 5527//5527 5258//5258 8753//8753 +f 5258//5258 5539//5539 8753//8753 +f 5258//5258 5260//5260 5539//5539 +f 5260//5260 8754//8754 5539//5539 +f 5207//5207 5532//5532 8761//8761 +f 5532//5532 5540//5540 8761//8761 +f 5541//5541 5542//5542 8759//8759 +f 5541//5541 5207//5207 5542//5542 +f 5207//5207 8760//8760 5542//5542 +f 5207//5207 8761//8761 8760//8760 +f 5541//5541 8759//8759 8757//8757 +f 5750//5750 5746//5746 6295//6295 +f 6295//6295 5546//5546 5750//5750 +f 5545//5545 5550//5550 5750//5750 +f 5750//5750 5546//5546 5545//5545 +f 5543//5543 5544//5544 5545//5545 +f 5545//5545 5546//5546 5543//5543 +f 6295//6295 6301//6301 5543//5543 +f 5543//5543 5546//5546 6295//6295 +f 5547//5547 5740//5740 5743//5743 +f 5743//5743 5548//5548 5547//5547 +f 5549//5549 5554//5554 5547//5547 +f 5547//5547 5548//5548 5549//5549 +f 5545//5545 5544//5544 5549//5549 +f 5549//5549 5548//5548 5545//5545 +f 5743//5743 5550//5550 5545//5545 +f 5545//5545 5548//5548 5743//5743 +f 7202//7202 7212//7212 5553//5553 +f 5553//5553 5551//5551 7202//7202 +f 5552//5552 7198//7198 7202//7202 +f 7202//7202 5551//5551 5552//5552 +f 5549//5549 5544//5544 5552//5552 +f 5552//5552 5551//5551 5549//5549 +f 5553//5553 5554//5554 5549//5549 +f 5549//5549 5551//5551 5553//5553 +f 6302//6302 7197//7197 7199//7199 +f 7199//7199 5555//5555 6302//6302 +f 5543//5543 6301//6301 6302//6302 +f 6302//6302 5555//5555 5543//5543 +f 5552//5552 5544//5544 5543//5543 +f 5543//5543 5555//5555 5552//5552 +f 7199//7199 7198//7198 5552//5552 +f 5552//5552 5555//5555 7199//7199 +f 5556//5556 6916//6916 5567//5567 +f 5557//5557 6908//6908 5556//5556 +f 5556//5556 5567//5567 5557//5557 +f 5557//5557 5567//5567 5568//5568 +f 6752//6752 5558//5558 6907//6907 +f 6907//6907 5559//5559 6752//6752 +f 5560//5560 6753//6753 6752//6752 +f 6752//6752 5559//5559 5560//5560 +f 5557//5557 5568//5568 5560//5560 +f 5560//5560 5559//5559 5557//5557 +f 6907//6907 6908//6908 5557//5557 +f 5557//5557 5559//5559 6907//6907 +f 5692//5692 5648//5648 5561//5561 +f 5561//5561 5562//5562 5692//5692 +f 5562//5562 5693//5693 5692//5692 +f 5560//5560 5568//5568 5562//5562 +f 5561//5561 6753//6753 5560//5560 +f 5560//5560 5562//5562 5561//5561 +f 5630//5630 5563//5563 5632//5632 +f 5632//5632 5563//5563 5564//5564 +f 5628//5628 6776//6776 6767//6767 +f 5564//5564 6776//6776 5628//5628 +f 6776//6776 5564//5564 6777//6777 +f 5696//5696 5574//5574 5565//5565 +f 5565//5565 5563//5563 5696//5696 +f 5563//5563 5630//5630 5696//5696 +f 6777//6777 5564//5564 5563//5563 +f 6777//6777 5563//5563 5565//5565 +f 5567//5567 6916//6916 5566//5566 +f 5566//5566 5569//5569 5567//5567 +f 5571//5571 5568//5568 5567//5567 +f 5567//5567 5569//5569 5571//5571 +f 5570//5570 5581//5581 5571//5571 +f 5571//5571 5569//5569 5570//5570 +f 5566//5566 5572//5572 5570//5570 +f 5570//5570 5569//5569 5566//5566 +f 5690//5690 5693//5693 5562//5562 +f 5690//5690 5562//5562 5573//5573 +f 5571//5571 5581//5581 5573//5573 +f 5573//5573 5562//5562 5571//5571 +f 5562//5562 5568//5568 5571//5571 +f 5575//5575 5574//5574 5697//5697 +f 5697//5697 5576//5576 5575//5575 +f 5577//5577 5582//5582 5575//5575 +f 5575//5575 5576//5576 5577//5577 +f 5573//5573 5581//5581 5577//5577 +f 5577//5577 5576//5576 5573//5573 +f 5697//5697 5690//5690 5573//5573 +f 5573//5573 5576//5576 5697//5697 +f 5580//5580 6919//6919 5578//5578 +f 5578//5578 5579//5579 5580//5580 +f 5570//5570 5572//5572 5580//5580 +f 5580//5580 5579//5579 5570//5570 +f 5577//5577 5581//5581 5570//5570 +f 5570//5570 5579//5579 5577//5577 +f 5578//5578 5582//5582 5577//5577 +f 5577//5577 5579//5579 5578//5578 +f 5762//5762 5740//5740 5547//5547 +f 5547//5547 5584//5584 5762//5762 +f 5583//5583 5761//5761 5762//5762 +f 5762//5762 5584//5584 5583//5583 +f 5585//5585 5592//5592 5583//5583 +f 5583//5583 5584//5584 5585//5585 +f 5547//5547 5554//5554 5585//5585 +f 5585//5585 5584//5584 5547//5547 +f 5792//5792 6850//6850 5586//5586 +f 5586//5586 5587//5587 5792//5792 +f 5590//5590 5795//5795 5792//5792 +f 5792//5792 5587//5587 5590//5590 +f 5583//5583 5592//5592 5590//5590 +f 5590//5590 5587//5587 5583//5583 +f 5586//5586 5761//5761 5583//5583 +f 5583//5583 5587//5587 5586//5586 +f 5588//5588 7222//7222 5786//5786 +f 5786//5786 5589//5589 5588//5588 +f 5593//5593 7215//7215 5588//5588 +f 5588//5588 5589//5589 5593//5593 +f 5590//5590 5592//5592 5593//5593 +f 5593//5593 5589//5589 5590//5590 +f 5786//5786 5795//5795 5590//5590 +f 5590//5590 5589//5589 5786//5786 +f 5553//5553 7212//7212 7211//7211 +f 7211//7211 5591//5591 5553//5553 +f 5585//5585 5554//5554 5553//5553 +f 5553//5553 5591//5591 5585//5585 +f 5593//5593 5592//5592 5585//5585 +f 5585//5585 5591//5591 5593//5593 +f 7211//7211 7215//7215 5593//5593 +f 5593//5593 5591//5591 7211//7211 +f 5594//5594 6870//6870 5595//5595 +f 5595//5595 5598//5598 5594//5594 +f 5601//5601 5603//5603 5594//5594 +f 5594//5594 5598//5598 5601//5601 +f 5597//5597 5596//5596 5601//5601 +f 5601//5601 5598//5598 5597//5597 +f 5595//5595 6203//6203 5597//5597 +f 5597//5597 5598//5598 5595//5595 +f 5599//5599 5619//5619 5602//5602 +f 5600//5600 5621//5621 5599//5599 +f 5599//5599 5602//5602 5600//5600 +f 5601//5601 5596//5596 5600//5600 +f 5600//5600 5602//5602 5601//5601 +f 5602//5602 5603//5603 5601//5601 +f 5606//5606 5617//5617 5604//5604 +f 5600//5600 5596//5596 5604//5604 +f 5604//5604 5617//5617 5600//5600 +f 5617//5617 5621//5621 5600//5600 +f 6205//6205 5648//5648 5607//5607 +f 5607//5607 5605//5605 6205//6205 +f 5597//5597 6203//6203 6205//6205 +f 6205//6205 5605//5605 5597//5597 +f 5604//5604 5596//5596 5597//5597 +f 5597//5597 5605//5605 5604//5604 +f 5607//5607 5606//5606 5604//5604 +f 5604//5604 5605//5605 5607//5607 +f 5954//5954 5608//5608 5611//5611 +f 5611//5611 5609//5609 5954//5954 +f 5609//5609 6817//6817 5954//5954 +f 5610//5610 5643//5643 5609//5609 +f 5611//5611 5612//5612 5610//5610 +f 5610//5610 5609//5609 5611//5611 +f 5643//5643 5641//5641 5609//5609 +f 5609//5609 5641//5641 6817//6817 +f 6250//6250 6248//6248 5655//5655 +f 5655//5655 5613//5613 6250//6250 +f 5610//5610 5612//5612 6250//6250 +f 6250//6250 5613//5613 5610//5610 +f 5613//5613 5643//5643 5610//5610 +f 5655//5655 5638//5638 5613//5613 +f 5653//5653 6248//6248 6260//6260 +f 6260//6260 5614//5614 5653//5653 +f 5615//5615 5652//5652 5653//5653 +f 5653//5653 5614//5614 5615//5615 +f 5616//5616 5620//5620 5615//5615 +f 5615//5615 5614//5614 5616//5616 +f 6260//6260 6259//6259 5616//5616 +f 5616//5616 5614//5614 6260//6260 +f 5617//5617 5606//5606 5652//5652 +f 5652//5652 5615//5615 5617//5617 +f 5617//5617 5615//5615 5621//5621 +f 5615//5615 5620//5620 5621//5621 +f 5618//5618 5619//5619 5599//5599 +f 5599//5599 5622//5622 5618//5618 +f 5625//5625 6865//6865 5618//5618 +f 5618//5618 5622//5622 5625//5625 +f 5621//5621 5620//5620 5625//5625 +f 5625//5625 5622//5622 5621//5621 +f 5621//5621 5622//5622 5599//5599 +f 5623//5623 6867//6867 5626//5626 +f 5626//5626 5624//5624 5623//5623 +f 5616//5616 6259//6259 5623//5623 +f 5623//5623 5624//5624 5616//5616 +f 5625//5625 5620//5620 5616//5616 +f 5616//5616 5624//5624 5625//5625 +f 5626//5626 6865//6865 5625//5625 +f 5625//5625 5624//5624 5626//5626 +f 5628//5628 6767//6767 5629//5629 +f 5636//5636 5564//5564 5628//5628 +f 5636//5636 5628//5628 5627//5627 +f 5629//5629 5634//5634 5627//5627 +f 5627//5627 5628//5628 5629//5629 +f 5711//5711 5630//5630 5632//5632 +f 5631//5631 5709//5709 5711//5711 +f 5711//5711 5632//5632 5631//5631 +f 5631//5631 5632//5632 5636//5636 +f 5632//5632 5564//5564 5636//5636 +f 5633//5633 5637//5637 5715//5715 +f 5631//5631 5636//5636 5633//5633 +f 5633//5633 5715//5715 5631//5631 +f 5631//5631 5715//5715 5709//5709 +f 6830//6830 6804//6804 5716//5716 +f 5716//5716 5635//5635 6830//6830 +f 5627//5627 5634//5634 6830//6830 +f 6830//6830 5635//5635 5627//5627 +f 5633//5633 5636//5636 5627//5627 +f 5627//5627 5635//5635 5633//5633 +f 5716//5716 5637//5637 5633//5633 +f 5633//5633 5635//5635 5716//5716 +f 5638//5638 5645//5645 5613//5613 +f 5613//5613 5645//5645 5643//5643 +f 5638//5638 5700//5700 5645//5645 +f 5639//5639 6817//6817 5641//5641 +f 5679//5679 5678//5678 5640//5640 +f 5640//5640 5641//5641 5679//5679 +f 5642//5642 5683//5683 5679//5679 +f 5679//5679 5641//5641 5642//5642 +f 5641//5641 5643//5643 5642//5642 +f 5640//5640 5639//5639 5641//5641 +f 5700//5700 5644//5644 5645//5645 +f 5642//5642 5643//5643 5645//5645 +f 5645//5645 5644//5644 5642//5642 +f 5644//5644 5683//5683 5642//5642 +f 5606//5606 5607//5607 5646//5646 +f 5649//5649 5646//5646 5647//5647 +f 5647//5647 5689//5689 5649//5649 +f 5649//5649 5689//5689 5657//5657 +f 5647//5647 5646//5646 5607//5607 +f 5648//5648 5689//5689 5647//5647 +f 5647//5647 5607//5607 5648//5648 +f 5646//5646 5649//5649 5651//5651 +f 5651//5651 5650//5650 5646//5646 +f 5650//5650 5606//5606 5646//5646 +f 5653//5653 5650//5650 5651//5651 +f 5606//5606 5650//5650 5652//5652 +f 5652//5652 5650//5650 5653//5653 +f 5655//5655 6248//6248 5653//5653 +f 5653//5653 5654//5654 5655//5655 +f 5654//5654 5638//5638 5655//5655 +f 5656//5656 5657//5657 5659//5659 +f 5658//5658 5662//5662 5656//5656 +f 5665//5665 5708//5708 5658//5658 +f 5658//5658 5656//5656 5665//5665 +f 5659//5659 5694//5694 5665//5665 +f 5665//5665 5656//5656 5659//5659 +f 5660//5660 5664//5664 5721//5721 +f 5721//5721 5661//5661 5660//5660 +f 5658//5658 5708//5708 5660//5660 +f 5660//5660 5661//5661 5658//5658 +f 5661//5661 5662//5662 5658//5658 +f 5708//5708 5663//5663 5660//5660 +f 5660//5660 5663//5663 5664//5664 +f 5694//5694 5666//5666 5665//5665 +f 5665//5665 5666//5666 5708//5708 +f 5664//5664 5667//5667 5668//5668 +f 5668//5668 5667//5667 5669//5669 +f 5667//5667 5637//5637 5669//5669 +f 5668//5668 5671//5671 5721//5721 +f 5721//5721 5664//5664 5668//5668 +f 5672//5672 5670//5670 5671//5671 +f 5671//5671 5674//5674 5672//5672 +f 5673//5673 5739//5739 5672//5672 +f 5672//5672 5674//5674 5673//5673 +f 5673//5673 5674//5674 5668//5668 +f 5668//5668 5674//5674 5671//5671 +f 5675//5675 5730//5730 5729//5729 +f 5729//5729 5676//5676 5675//5675 +f 5669//5669 5637//5637 5675//5675 +f 5675//5675 5676//5676 5669//5669 +f 5673//5673 5668//5668 5669//5669 +f 5669//5669 5676//5676 5673//5673 +f 5729//5729 5739//5739 5673//5673 +f 5673//5673 5676//5676 5729//5729 +f 5681//5681 5683//5683 5644//5644 +f 5677//5677 5685//5685 5681//5681 +f 5681//5681 5644//5644 5677//5677 +f 5677//5677 5644//5644 5702//5702 +f 6793//6793 5678//5678 5679//5679 +f 5679//5679 5680//5680 6793//6793 +f 6793//6793 5680//5680 5682//5682 +f 5681//5681 5685//5685 5682//5682 +f 5682//5682 5680//5680 5681//5681 +f 5679//5679 5683//5683 5681//5681 +f 5681//5681 5680//5680 5679//5679 +f 5726//5726 5684//5684 6796//6796 +f 6796//6796 5682//5682 5726//5726 +f 5726//5726 5682//5682 5685//5685 +f 6796//6796 6793//6793 5682//5682 +f 5677//5677 5702//5702 5686//5686 +f 5686//5686 5687//5687 5677//5677 +f 5677//5677 5687//5687 5685//5685 +f 5659//5659 5657//5657 5689//5689 +f 5689//5689 5691//5691 5659//5659 +f 5691//5691 5694//5694 5659//5659 +f 5688//5688 5691//5691 5689//5689 +f 5691//5691 5695//5695 5694//5694 +f 5693//5693 5690//5690 5688//5688 +f 5688//5688 5690//5690 5691//5691 +f 5690//5690 5695//5695 5691//5691 +f 5688//5688 5689//5689 5648//5648 +f 5648//5648 5692//5692 5688//5688 +f 5692//5692 5693//5693 5688//5688 +f 5698//5698 5695//5695 5690//5690 +f 5713//5713 5694//5694 5695//5695 +f 5698//5698 5713//5713 5695//5695 +f 5710//5710 5696//5696 5630//5630 +f 5710//5710 5713//5713 5698//5698 +f 5698//5698 5696//5696 5710//5710 +f 5697//5697 5574//5574 5696//5696 +f 5696//5696 5699//5699 5697//5697 +f 5698//5698 5690//5690 5697//5697 +f 5697//5697 5699//5699 5698//5698 +f 5698//5698 5699//5699 5696//5696 +f 5702//5702 5644//5644 5700//5700 +f 5702//5702 5700//5700 5701//5701 +f 5705//5705 5704//5704 5701//5701 +f 5701//5701 5700//5700 5705//5705 +f 5704//5704 5718//5718 5720//5720 +f 5704//5704 5720//5720 5701//5701 +f 5686//5686 5702//5702 5701//5701 +f 5701//5701 5720//5720 5686//5686 +f 5651//5651 5649//5649 5703//5703 +f 5706//5706 5653//5653 5651//5651 +f 5651//5651 5703//5703 5706//5706 +f 5706//5706 5703//5703 5704//5704 +f 5703//5703 5718//5718 5704//5704 +f 5705//5705 5700//5700 5638//5638 +f 5638//5638 5654//5654 5705//5705 +f 5706//5706 5704//5704 5705//5705 +f 5705//5705 5654//5654 5706//5706 +f 5654//5654 5653//5653 5706//5706 +f 5666//5666 5694//5694 5713//5713 +f 5713//5713 5707//5707 5666//5666 +f 5666//5666 5707//5707 5708//5708 +f 5714//5714 5664//5664 5663//5663 +f 5714//5714 5663//5663 5709//5709 +f 5709//5709 5663//5663 5712//5712 +f 5663//5663 5708//5708 5712//5712 +f 5710//5710 5630//5630 5711//5711 +f 5711//5711 5712//5712 5710//5710 +f 5707//5707 5713//5713 5710//5710 +f 5710//5710 5712//5712 5707//5707 +f 5712//5712 5708//5708 5707//5707 +f 5711//5711 5709//5709 5712//5712 +f 5714//5714 5709//5709 5715//5715 +f 5715//5715 5667//5667 5714//5714 +f 5637//5637 5667//5667 5715//5715 +f 5667//5667 5664//5664 5714//5714 +f 6803//6803 5730//5730 5675//5675 +f 5675//5675 5716//5716 6803//6803 +f 5716//5716 6804//6804 6803//6803 +f 5637//5637 5716//5716 5675//5675 +f 5661//5661 5721//5721 5722//5722 +f 5662//5662 5661//5661 5719//5719 +f 5722//5722 5724//5724 5719//5719 +f 5719//5719 5661//5661 5722//5722 +f 5656//5656 5717//5717 5657//5657 +f 5717//5717 5649//5649 5657//5657 +f 5662//5662 5717//5717 5656//5656 +f 5649//5649 5717//5717 5703//5703 +f 5703//5703 5717//5717 5718//5718 +f 5717//5717 5662//5662 5718//5718 +f 5724//5724 5686//5686 5720//5720 +f 5720//5720 5719//5719 5724//5724 +f 5718//5718 5662//5662 5719//5719 +f 5718//5718 5719//5719 5720//5720 +f 5721//5721 5728//5728 5722//5722 +f 5723//5723 5724//5724 5722//5722 +f 5722//5722 5728//5728 5723//5723 +f 5721//5721 5671//5671 5728//5728 +f 5687//5687 5686//5686 5724//5724 +f 5723//5723 5687//5687 5724//5724 +f 5725//5725 5684//5684 5726//5726 +f 5726//5726 5687//5687 5725//5725 +f 5723//5723 5755//5755 5725//5725 +f 5725//5725 5687//5687 5723//5723 +f 5726//5726 5685//5685 5687//5687 +f 5671//5671 5670//5670 5727//5727 +f 5727//5727 5728//5728 5671//5671 +f 5727//5727 5755//5755 5723//5723 +f 5723//5723 5728//5728 5727//5727 +f 5729//5729 5730//5730 5731//5731 +f 5731//5731 5732//5732 5729//5729 +f 5738//5738 5739//5739 5729//5729 +f 5729//5729 5732//5732 5738//5738 +f 5734//5734 5733//5733 5738//5738 +f 5738//5738 5732//5732 5734//5734 +f 5731//5731 5748//5748 5734//5734 +f 5734//5734 5732//5732 5731//5731 +f 5735//5735 5670//5670 5672//5672 +f 5672//5672 5736//5736 5735//5735 +f 5744//5744 5737//5737 5735//5735 +f 5735//5735 5736//5736 5744//5744 +f 5738//5738 5733//5733 5744//5744 +f 5744//5744 5736//5736 5738//5738 +f 5672//5672 5739//5739 5738//5738 +f 5738//5738 5736//5736 5672//5672 +f 5743//5743 5740//5740 5741//5741 +f 5741//5741 5745//5745 5743//5743 +f 5742//5742 5550//5550 5743//5743 +f 5743//5743 5745//5745 5742//5742 +f 5744//5744 5733//5733 5742//5742 +f 5742//5742 5745//5745 5744//5744 +f 5741//5741 5737//5737 5744//5744 +f 5744//5744 5745//5745 5741//5741 +f 5749//5749 5746//5746 5750//5750 +f 5750//5750 5747//5747 5749//5749 +f 5734//5734 5748//5748 5749//5749 +f 5749//5749 5747//5747 5734//5734 +f 5742//5742 5733//5733 5734//5734 +f 5734//5734 5747//5747 5742//5742 +f 5750//5750 5550//5550 5742//5742 +f 5742//5742 5747//5747 5750//5750 +f 5727//5727 5670//5670 5735//5735 +f 5735//5735 5751//5751 5727//5727 +f 5754//5754 5755//5755 5727//5727 +f 5727//5727 5751//5751 5754//5754 +f 5752//5752 5758//5758 5754//5754 +f 5754//5754 5751//5751 5752//5752 +f 5735//5735 5737//5737 5752//5752 +f 5752//5752 5751//5751 5735//5735 +f 6843//6843 5684//5684 5725//5725 +f 5725//5725 5756//5756 6843//6843 +f 5753//5753 6849//6849 6843//6843 +f 6843//6843 5756//5756 5753//5753 +f 5754//5754 5758//5758 5753//5753 +f 5753//5753 5756//5756 5754//5754 +f 5725//5725 5755//5755 5754//5754 +f 5754//5754 5756//5756 5725//5725 +f 6850//6850 5757//5757 5586//5586 +f 5759//5759 5761//5761 5586//5586 +f 5586//5586 5757//5757 5759//5759 +f 5753//5753 5758//5758 5759//5759 +f 5759//5759 5757//5757 5753//5753 +f 6850//6850 6849//6849 5753//5753 +f 5753//5753 5757//5757 6850//6850 +f 5741//5741 5740//5740 5762//5762 +f 5762//5762 5760//5760 5741//5741 +f 5752//5752 5737//5737 5741//5741 +f 5741//5741 5760//5760 5752//5752 +f 5759//5759 5758//5758 5752//5752 +f 5752//5752 5760//5760 5759//5759 +f 5762//5762 5761//5761 5759//5759 +f 5759//5759 5760//5760 5762//5762 +f 5842//5842 5843//5843 8634//8634 +f 5765//5765 5842//5842 8633//8633 +f 5842//5842 8634//8634 8633//8633 +f 5763//5763 5839//5839 5842//5842 +f 5842//5842 5765//5765 5763//5763 +f 5778//5778 5764//5764 5763//5763 +f 5763//5763 5765//5765 5778//5778 +f 5778//5778 5767//5767 5766//5766 +f 5778//5778 5765//5765 5767//5767 +f 5765//5765 8633//8633 5767//5767 +f 5769//5769 5838//5838 5771//5771 +f 5771//5771 5770//5770 5769//5769 +f 5768//5768 5863//5863 5769//5769 +f 5769//5769 5770//5770 5768//5768 +f 5763//5763 5764//5764 5768//5768 +f 5768//5768 5770//5770 5763//5763 +f 5771//5771 5839//5839 5763//5763 +f 5763//5763 5770//5770 5771//5771 +f 5772//5772 6365//6365 5774//5774 +f 5774//5774 5773//5773 5772//5772 +f 5780//5780 6287//6287 5772//5772 +f 5772//5772 5773//5773 5780//5780 +f 5768//5768 5764//5764 5780//5780 +f 5780//5780 5773//5773 5768//5768 +f 5774//5774 5863//5863 5768//5768 +f 5768//5768 5773//5773 5774//5774 +f 5775//5775 8619//8619 8629//8629 +f 5775//5775 5777//5777 8619//8619 +f 5777//5777 5779//5779 8619//8619 +f 5778//5778 5766//5766 5776//5776 +f 5777//5777 5778//5778 5779//5779 +f 5778//5778 5776//5776 5779//5779 +f 5780//5780 5764//5764 5778//5778 +f 5778//5778 5777//5777 5780//5780 +f 5775//5775 6287//6287 5780//5780 +f 5780//5780 5777//5777 5775//5775 +f 5797//5797 5781//5781 5782//5782 +f 5784//5784 5798//5798 5797//5797 +f 5797//5797 5782//5782 5784//5784 +f 5794//5794 5790//5790 5784//5784 +f 5784//5784 5782//5782 5794//5794 +f 5782//5782 6841//6841 5794//5794 +f 7100//7100 5806//5806 5785//5785 +f 5785//5785 5783//5783 7100//7100 +f 5791//5791 7101//7101 7100//7100 +f 7100//7100 5783//5783 5791//5791 +f 5784//5784 5790//5790 5791//5791 +f 5791//5791 5783//5783 5784//5784 +f 5785//5785 5798//5798 5784//5784 +f 5784//5784 5783//5783 5785//5785 +f 5786//5786 7222//7222 5787//5787 +f 5787//5787 5788//5788 5786//5786 +f 5789//5789 5795//5795 5786//5786 +f 5786//5786 5788//5788 5789//5789 +f 5791//5791 5790//5790 5789//5789 +f 5789//5789 5788//5788 5791//5791 +f 5787//5787 7101//7101 5791//5791 +f 5791//5791 5788//5788 5787//5787 +f 6851//6851 6850//6850 5792//5792 +f 5792//5792 5793//5793 6851//6851 +f 5794//5794 6841//6841 6851//6851 +f 6851//6851 5793//5793 5794//5794 +f 5789//5789 5790//5790 5794//5794 +f 5794//5794 5793//5793 5789//5789 +f 5792//5792 5795//5795 5789//5789 +f 5789//5789 5793//5793 5792//5792 +f 6838//6838 5781//5781 5797//5797 +f 6838//6838 5796//5796 8149//8149 +f 5796//5796 5801//5801 8149//8149 +f 5808//5808 5799//5799 5796//5796 +f 5796//5796 6838//6838 5808//5808 +f 5797//5797 5798//5798 5808//5808 +f 5808//5808 6838//6838 5797//5797 +f 5796//5796 5799//5799 8152//8152 +f 5799//5799 5805//5805 8152//8152 +f 5796//5796 8152//8152 5800//5800 +f 5796//5796 5800//5800 5801//5801 +f 5804//5804 5809//5809 5802//5802 +f 5809//5809 8157//8157 5802//5802 +f 5804//5804 5802//5802 5803//5803 +f 5799//5799 5804//5804 5805//5805 +f 5804//5804 8156//8156 5805//5805 +f 5804//5804 5803//5803 8156//8156 +f 5785//5785 5806//5806 7110//7110 +f 7110//7110 5807//5807 5785//5785 +f 5808//5808 5798//5798 5785//5785 +f 5785//5785 5807//5807 5808//5808 +f 5804//5804 5799//5799 5808//5808 +f 5808//5808 5807//5807 5804//5804 +f 7110//7110 5809//5809 5804//5804 +f 5804//5804 5807//5807 7110//7110 +f 5867//5867 5810//5810 5811//5811 +f 5811//5811 5812//5812 5867//5867 +f 5813//5813 5870//5870 5867//5867 +f 5867//5867 5812//5812 5813//5813 +f 5820//5820 5819//5819 5813//5813 +f 5813//5813 5812//5812 5820//5820 +f 5811//5811 6317//6317 5820//5820 +f 5820//5820 5812//5812 5811//5811 +f 5816//5816 5814//5814 5865//5865 +f 5865//5865 5815//5815 5816//5816 +f 5818//5818 5828//5828 5816//5816 +f 5816//5816 5815//5815 5818//5818 +f 5813//5813 5819//5819 5818//5818 +f 5818//5818 5815//5815 5813//5813 +f 5865//5865 5870//5870 5813//5813 +f 5813//5813 5815//5815 5865//5865 +f 5818//5818 5819//5819 5817//5817 +f 5817//5817 5889//5889 5818//5818 +f 5879//5879 5828//5828 5818//5818 +f 5818//5818 5889//5889 5879//5879 +f 5820//5820 6317//6317 6319//6319 +f 6319//6319 5886//5886 5820//5820 +f 5817//5817 5819//5819 5820//5820 +f 5820//5820 5886//5886 5817//5817 +f 5855//5855 5814//5814 5816//5816 +f 5816//5816 5821//5821 5855//5855 +f 5823//5823 5850//5850 5855//5855 +f 5855//5855 5821//5821 5823//5823 +f 5824//5824 5822//5822 5823//5823 +f 5823//5823 5821//5821 5824//5824 +f 5816//5816 5828//5828 5824//5824 +f 5824//5824 5821//5821 5816//5816 +f 5825//5825 5835//5835 5851//5851 +f 5851//5851 5827//5827 5825//5825 +f 5826//5826 5832//5832 5825//5825 +f 5825//5825 5827//5827 5826//5826 +f 5823//5823 5822//5822 5826//5826 +f 5826//5826 5827//5827 5823//5823 +f 5851//5851 5850//5850 5823//5823 +f 5823//5823 5827//5827 5851//5851 +f 5822//5822 5881//5881 5826//5826 +f 5880//5880 5832//5832 5826//5826 +f 5826//5826 5881//5881 5880//5880 +f 5824//5824 5828//5828 5879//5879 +f 5879//5879 5878//5878 5824//5824 +f 5824//5824 5878//5878 5822//5822 +f 5835//5835 5825//5825 5829//5829 +f 5825//5825 5830//5830 5829//5829 +f 5825//5825 5831//5831 5830//5830 +f 5825//5825 5832//5832 8630//8630 +f 5832//5832 8637//8637 8630//8630 +f 5825//5825 8630//8630 5831//5831 +f 5832//5832 5880//5880 8637//8637 +f 5880//5880 8617//8617 8637//8637 +f 5880//5880 8614//8614 8617//8617 +f 5836//5836 5833//5833 8632//8632 +f 5834//5834 5835//5835 8636//8636 +f 5835//5835 5829//5829 8636//8636 +f 5834//5834 8636//8636 8631//8631 +f 5836//5836 5834//5834 5833//5833 +f 5834//5834 5837//5837 5833//5833 +f 5834//5834 8631//8631 5837//5837 +f 5771//5771 5838//5838 5862//5862 +f 5862//5862 5841//5841 5771//5771 +f 5840//5840 5839//5839 5771//5771 +f 5771//5771 5841//5841 5840//5840 +f 5854//5854 5847//5847 5840//5840 +f 5840//5840 5841//5841 5854//5854 +f 5862//5862 5866//5866 5854//5854 +f 5854//5854 5841//5841 5862//5862 +f 5842//5842 5844//5844 5843//5843 +f 5842//5842 5848//5848 5844//5844 +f 5848//5848 8635//8635 5844//5844 +f 5846//5846 5836//5836 5845//5845 +f 5836//5836 8632//8632 5845//5845 +f 5848//5848 5846//5846 8635//8635 +f 5846//5846 5845//5845 8635//8635 +f 5840//5840 5847//5847 5846//5846 +f 5846//5846 5848//5848 5840//5840 +f 5842//5842 5839//5839 5840//5840 +f 5840//5840 5848//5848 5842//5842 +f 5851//5851 5835//5835 5834//5834 +f 5834//5834 5849//5849 5851//5851 +f 5856//5856 5850//5850 5851//5851 +f 5851//5851 5849//5849 5856//5856 +f 5846//5846 5847//5847 5856//5856 +f 5856//5856 5849//5849 5846//5846 +f 5834//5834 5836//5836 5846//5846 +f 5846//5846 5849//5849 5834//5834 +f 5852//5852 5814//5814 5855//5855 +f 5855//5855 5853//5853 5852//5852 +f 5854//5854 5866//5866 5852//5852 +f 5852//5852 5853//5853 5854//5854 +f 5856//5856 5847//5847 5854//5854 +f 5854//5854 5853//5853 5856//5856 +f 5855//5855 5850//5850 5856//5856 +f 5856//5856 5853//5853 5855//5855 +f 5774//5774 6365//6365 6369//6369 +f 6369//6369 5859//5859 5774//5774 +f 5857//5857 5863//5863 5774//5774 +f 5774//5774 5859//5859 5857//5857 +f 5858//5858 5868//5868 5857//5857 +f 5857//5857 5859//5859 5858//5858 +f 6369//6369 6368//6368 5858//5858 +f 5858//5858 5859//5859 6369//6369 +f 5862//5862 5838//5838 5769//5769 +f 5769//5769 5860//5860 5862//5862 +f 5861//5861 5866//5866 5862//5862 +f 5862//5862 5860//5860 5861//5861 +f 5857//5857 5868//5868 5861//5861 +f 5861//5861 5860//5860 5857//5857 +f 5769//5769 5863//5863 5857//5857 +f 5857//5857 5860//5860 5769//5769 +f 5865//5865 5814//5814 5852//5852 +f 5852//5852 5864//5864 5865//5865 +f 5871//5871 5870//5870 5865//5865 +f 5865//5865 5864//5864 5871//5871 +f 5861//5861 5868//5868 5871//5871 +f 5871//5871 5864//5864 5861//5861 +f 5852//5852 5866//5866 5861//5861 +f 5861//5861 5864//5864 5852//5852 +f 6375//6375 5810//5810 5867//5867 +f 5867//5867 5869//5869 6375//6375 +f 5858//5858 6368//6368 6375//6375 +f 6375//6375 5869//5869 5858//5858 +f 5871//5871 5868//5868 5858//5858 +f 5858//5858 5869//5869 5871//5871 +f 5867//5867 5870//5870 5871//5871 +f 5871//5871 5869//5869 5867//5867 +f 5880//5880 5873//5873 8612//8612 +f 5873//5873 8609//8609 8612//8612 +f 5880//5880 8612//8612 8614//8614 +f 5885//5885 6972//6972 5872//5872 +f 6972//6972 8607//8607 5872//5872 +f 5885//5885 5872//5872 8608//8608 +f 5873//5873 5885//5885 8609//8609 +f 5885//5885 5874//5874 8609//8609 +f 5885//5885 8608//8608 5874//5874 +f 5877//5877 5875//5875 5822//5822 +f 5822//5822 5878//5878 5877//5877 +f 5879//5879 5876//5876 5877//5877 +f 5877//5877 5878//5878 5879//5879 +f 5882//5882 5873//5873 5880//5880 +f 5880//5880 5881//5881 5882//5882 +f 5822//5822 5875//5875 5882//5882 +f 5882//5882 5881//5881 5822//5822 +f 5884//5884 6972//6972 5885//5885 +f 5882//5882 5875//5875 5883//5883 +f 5883//5883 5884//5884 5882//5882 +f 5885//5885 5873//5873 5882//5882 +f 5882//5882 5884//5884 5885//5885 +f 5876//5876 6970//6970 5877//5877 +f 5883//5883 5875//5875 5877//5877 +f 5877//5877 6970//6970 5883//5883 +f 5886//5886 5887//5887 5817//5817 +f 5888//5888 5876//5876 5879//5879 +f 5879//5879 5889//5889 5888//5888 +f 5817//5817 5887//5887 5888//5888 +f 5888//5888 5889//5889 5817//5817 +f 5887//5887 6982//6982 5888//5888 +f 5888//5888 6982//6982 5876//5876 +f 5886//5886 6319//6319 5890//5890 +f 5890//5890 5891//5891 5886//5886 +f 5886//5886 5891//5891 5887//5887 +f 5896//5896 5892//5892 5893//5893 +f 5892//5892 8638//8638 5893//5893 +f 5892//5892 8639//8639 8638//8638 +f 5892//5892 8601//8601 8603//8603 +f 5892//5892 8603//8603 8639//8639 +f 6975//6975 6983//6983 5894//5894 +f 5894//5894 5895//5895 6975//6975 +f 6975//6975 5895//5895 6976//6976 +f 5894//5894 5902//5902 5895//5895 +f 5892//5892 5896//5896 5897//5897 +f 5897//5897 5899//5899 5892//5892 +f 5892//5892 5899//5899 8601//8601 +f 5899//5899 8599//8599 8601//8601 +f 6976//6976 5899//5899 5897//5897 +f 5904//5904 5898//5898 5900//5900 +f 5899//5899 6976//6976 5904//5904 +f 5904//5904 5900//5900 5899//5899 +f 5899//5899 5900//5900 8599//8599 +f 5900//5900 5901//5901 8599//8599 +f 5902//5902 6879//6879 5903//5903 +f 5903//5903 5895//5895 5902//5902 +f 5904//5904 6976//6976 5895//5895 +f 5903//5903 5898//5898 5904//5904 +f 5904//5904 5895//5895 5903//5903 +f 6988//6988 6987//6987 5906//5906 +f 5908//5908 6986//6986 6988//6988 +f 5905//5905 5912//5912 5908//5908 +f 5908//5908 6988//6988 5905//5905 +f 5906//5906 6428//6428 5905//5905 +f 5905//5905 6988//6988 5906//5906 +f 5894//5894 6983//6983 6984//6984 +f 6984//6984 5907//5907 5894//5894 +f 5909//5909 5902//5902 5894//5894 +f 5894//5894 5907//5907 5909//5909 +f 5908//5908 5912//5912 5909//5909 +f 5909//5909 5907//5907 5908//5908 +f 6984//6984 6986//6986 5908//5908 +f 5908//5908 5907//5907 6984//6984 +f 5910//5910 6879//6879 5902//5902 +f 5913//5913 6219//6219 5910//5910 +f 5909//5909 5912//5912 5913//5913 +f 5913//5913 5910//5910 5909//5909 +f 5909//5909 5910//5910 5902//5902 +f 6429//6429 6210//6210 6209//6209 +f 6209//6209 5911//5911 6429//6429 +f 5905//5905 6428//6428 6429//6429 +f 6429//6429 5911//5911 5905//5905 +f 5913//5913 5912//5912 5905//5905 +f 5905//5905 5911//5911 5913//5913 +f 6209//6209 6219//6219 5913//5913 +f 5913//5913 5911//5911 6209//6209 +f 6045//6045 5929//5929 5933//5933 +f 5933//5933 5914//5914 6045//6045 +f 5916//5916 6048//6048 6045//6045 +f 6045//6045 5914//5914 5916//5916 +f 5926//5926 5915//5915 5916//5916 +f 5916//5916 5914//5914 5926//5926 +f 5933//5933 5932//5932 5926//5926 +f 5926//5926 5914//5914 5933//5933 +f 5917//5917 6065//6065 5918//5918 +f 5918//5918 5920//5920 5917//5917 +f 5919//5919 6061//6061 5917//5917 +f 5917//5917 5920//5920 5919//5919 +f 5916//5916 5915//5915 5919//5919 +f 5919//5919 5920//5920 5916//5916 +f 5918//5918 6048//6048 5916//5916 +f 5916//5916 5920//5920 5918//5918 +f 5921//5921 6077//6077 5923//5923 +f 5923//5923 5922//5922 5921//5921 +f 5927//5927 5928//5928 5921//5921 +f 5921//5921 5922//5922 5927//5927 +f 5919//5919 5915//5915 5927//5927 +f 5927//5927 5922//5922 5919//5919 +f 5923//5923 6061//6061 5919//5919 +f 5919//5919 5922//5922 5923//5923 +f 5950//5950 5925//5925 8105//8105 +f 5950//5950 5924//5924 5925//5925 +f 5924//5924 8103//8103 5925//5925 +f 5926//5926 5932//5932 8104//8104 +f 5932//5932 8102//8102 8104//8104 +f 5924//5924 5926//5926 8103//8103 +f 5926//5926 8104//8104 8103//8103 +f 5927//5927 5915//5915 5926//5926 +f 5926//5926 5924//5924 5927//5927 +f 5950//5950 5928//5928 5927//5927 +f 5927//5927 5924//5924 5950//5950 +f 5933//5933 5929//5929 5930//5930 +f 5929//5929 8108//8108 5930//5930 +f 5933//5933 5930//5930 5931//5931 +f 5932//5932 5933//5933 5934//5934 +f 5933//5933 8107//8107 5934//5934 +f 5933//5933 5931//5931 8107//8107 +f 5932//5932 5934//5934 8102//8102 +f 6080//6080 6077//6077 5921//5921 +f 5921//5921 5935//5935 6080//6080 +f 5936//5936 5941//5941 6080//6080 +f 6080//6080 5935//5935 5936//5936 +f 5951//5951 5947//5947 5936//5936 +f 5936//5936 5935//5935 5951//5951 +f 5921//5921 5928//5928 5951//5951 +f 5951//5951 5935//5935 5921//5921 +f 5939//5939 5937//5937 5938//5938 +f 5938//5938 5942//5942 5939//5939 +f 5940//5940 5948//5948 5939//5939 +f 5939//5939 5942//5942 5940//5940 +f 5936//5936 5947//5947 5940//5940 +f 5940//5940 5942//5942 5936//5936 +f 5938//5938 5941//5941 5936//5936 +f 5936//5936 5942//5942 5938//5938 +f 6020//6020 8645//8645 6018//6018 +f 6020//6020 5943//5943 8645//8645 +f 5943//5943 5946//5946 8645//8645 +f 5945//5945 8646//8646 5944//5944 +f 5943//5943 5945//5945 5946//5946 +f 5945//5945 5944//5944 5946//5946 +f 5940//5940 5947//5947 5945//5945 +f 5945//5945 5943//5943 5940//5940 +f 6020//6020 5948//5948 5940//5940 +f 5940//5940 5943//5943 6020//6020 +f 5950//5950 8105//8105 8106//8106 +f 5953//5953 5950//5950 5949//5949 +f 5950//5950 8106//8106 5949//5949 +f 5951//5951 5928//5928 5950//5950 +f 5950//5950 5953//5953 5951//5951 +f 5945//5945 5947//5947 5951//5951 +f 5951//5951 5953//5953 5945//5945 +f 5945//5945 5952//5952 8646//8646 +f 5945//5945 5953//5953 5952//5952 +f 5953//5953 5949//5949 5952//5952 +f 6230//6230 5608//5608 5954//5954 +f 5954//5954 5956//5956 6230//6230 +f 5958//5958 5955//5955 6230//6230 +f 6230//6230 5956//5956 5958//5958 +f 5956//5956 6822//6822 5958//5958 +f 5954//5954 6817//6817 5956//5956 +f 6229//6229 5957//5957 6227//6227 +f 5957//5957 6814//6814 6227//6227 +f 5958//5958 6822//6822 5957//5957 +f 6229//6229 5955//5955 5958//5958 +f 5958//5958 5957//5957 6229//6229 +f 6227//6227 7697//7697 6220//6220 +f 6227//6227 6814//6814 7697//7697 +f 6091//6091 5959//5959 6009//6009 +f 6009//6009 5962//5962 6091//6091 +f 5963//5963 5964//5964 6091//6091 +f 6091//6091 5962//5962 5963//5963 +f 5969//5969 5960//5960 5963//5963 +f 5963//5963 5962//5962 5969//5969 +f 6009//6009 5961//5961 5969//5969 +f 5969//5969 5962//5962 6009//6009 +f 5976//5976 6083//6083 6082//6082 +f 6082//6082 5965//5965 5976//5976 +f 5968//5968 5983//5983 5976//5976 +f 5976//5976 5965//5965 5968//5968 +f 5963//5963 5960//5960 5968//5968 +f 5968//5968 5965//5965 5963//5963 +f 6082//6082 5964//5964 5963//5963 +f 5963//5963 5965//5965 6082//6082 +f 5968//5968 5960//5960 5970//5970 +f 5970//5970 5966//5966 5968//5968 +f 5967//5967 5983//5983 5968//5968 +f 5968//5968 5966//5966 5967//5967 +f 5969//5969 5961//5961 6093//6093 +f 6093//6093 5971//5971 5969//5969 +f 5970//5970 5960//5960 5969//5969 +f 5969//5969 5971//5971 5970//5970 +f 5972//5972 6083//6083 5976//5976 +f 5976//5976 5977//5977 5972//5972 +f 5973//5973 6072//6072 5972//5972 +f 5972//5972 5977//5977 5973//5973 +f 5975//5975 5974//5974 5973//5973 +f 5973//5973 5977//5977 5975//5975 +f 5976//5976 5983//5983 5975//5975 +f 5975//5975 5977//5977 5976//5976 +f 5979//5979 5978//5978 6069//6069 +f 6069//6069 5980//5980 5979//5979 +f 5981//5981 5988//5988 5979//5979 +f 5979//5979 5980//5980 5981//5981 +f 5973//5973 5974//5974 5981//5981 +f 5981//5981 5980//5980 5973//5973 +f 6069//6069 6072//6072 5973//5973 +f 5973//5973 5980//5980 6069//6069 +f 5981//5981 5974//5974 5984//5984 +f 5984//5984 5982//5982 5981//5981 +f 6113//6113 5988//5988 5981//5981 +f 5981//5981 5982//5982 6113//6113 +f 5975//5975 5983//5983 5967//5967 +f 5967//5967 6111//6111 5975//5975 +f 5984//5984 5974//5974 5975//5975 +f 5975//5975 6111//6111 5984//5984 +f 6059//6059 5978//5978 5979//5979 +f 5979//5979 5986//5986 6059//6059 +f 5987//5987 5985//5985 6059//6059 +f 6059//6059 5986//5986 5987//5987 +f 5993//5993 5991//5991 5987//5987 +f 5987//5987 5986//5986 5993//5993 +f 5979//5979 5988//5988 5993//5993 +f 5993//5993 5986//5986 5979//5979 +f 5994//5994 6049//6049 6050//6050 +f 6050//6050 5989//5989 5994//5994 +f 5992//5992 5990//5990 5994//5994 +f 5994//5994 5989//5989 5992//5992 +f 5987//5987 5991//5991 5992//5992 +f 5992//5992 5989//5989 5987//5987 +f 6050//6050 5985//5985 5987//5987 +f 5987//5987 5989//5989 6050//6050 +f 5992//5992 5991//5991 6109//6109 +f 6109//6109 6107//6107 5992//5992 +f 5998//5998 5990//5990 5992//5992 +f 5992//5992 6107//6107 5998//5998 +f 5993//5993 5988//5988 6113//6113 +f 6113//6113 6106//6106 5993//5993 +f 6109//6109 5991//5991 5993//5993 +f 5993//5993 6106//6106 6109//6109 +f 6049//6049 5994//5994 5995//5995 +f 5994//5994 5996//5996 5995//5995 +f 5994//5994 8114//8114 5996//5996 +f 5994//5994 5990//5990 8117//8117 +f 5990//5990 5997//5997 8117//8117 +f 5994//5994 8117//8117 8114//8114 +f 5990//5990 5998//5998 5997//5997 +f 5998//5998 8118//8118 5997//5997 +f 5998//5998 6104//6104 8118//8118 +f 5999//5999 6000//6000 8643//8643 +f 6000//6000 6036//6036 8643//8643 +f 5999//5999 8643//8643 6002//6002 +f 6003//6003 5999//5999 6004//6004 +f 5999//5999 6001//6001 6004//6004 +f 5999//5999 6002//6002 6001//6001 +f 6016//6016 6003//6003 8113//8113 +f 6003//6003 6004//6004 8113//8113 +f 6016//6016 8113//8113 6005//6005 +f 6035//6035 6000//6000 5999//5999 +f 5999//5999 6007//6007 6035//6035 +f 6011//6011 6006//6006 6035//6035 +f 6035//6035 6007//6007 6011//6011 +f 6008//6008 6017//6017 6011//6011 +f 6011//6011 6007//6007 6008//6008 +f 5999//5999 6003//6003 6008//6008 +f 6008//6008 6007//6007 5999//5999 +f 6009//6009 5959//5959 6012//6012 +f 6012//6012 6010//6010 6009//6009 +f 6013//6013 5961//5961 6009//6009 +f 6009//6009 6010//6010 6013//6013 +f 6011//6011 6017//6017 6013//6013 +f 6013//6013 6010//6010 6011//6011 +f 6012//6012 6006//6006 6011//6011 +f 6011//6011 6010//6010 6012//6012 +f 6013//6013 6017//6017 6014//6014 +f 6014//6014 6015//6015 6013//6013 +f 6093//6093 5961//5961 6013//6013 +f 6013//6013 6015//6015 6093//6093 +f 6008//6008 6003//6003 6016//6016 +f 6016//6016 6096//6096 6008//6008 +f 6014//6014 6017//6017 6008//6008 +f 6008//6008 6096//6096 6014//6014 +f 6020//6020 6018//6018 6019//6019 +f 6023//6023 6020//6020 8110//8110 +f 6020//6020 6019//6019 8110//8110 +f 6021//6021 5948//5948 6020//6020 +f 6020//6020 6023//6023 6021//6021 +f 6033//6033 6022//6022 6021//6021 +f 6021//6021 6023//6023 6033//6033 +f 6033//6033 8111//8111 6024//6024 +f 6033//6033 6023//6023 8111//8111 +f 6023//6023 8110//8110 8111//8111 +f 6076//6076 5937//5937 5939//5939 +f 5939//5939 6026//6026 6076//6076 +f 6025//6025 6074//6074 6076//6076 +f 6076//6076 6026//6026 6025//6025 +f 6021//6021 6022//6022 6025//6025 +f 6025//6025 6026//6026 6021//6021 +f 5939//5939 5948//5948 6021//6021 +f 6021//6021 6026//6026 5939//5939 +f 6012//6012 5959//5959 6027//6027 +f 6027//6027 6028//6028 6012//6012 +f 6029//6029 6006//6006 6012//6012 +f 6012//6012 6028//6028 6029//6029 +f 6025//6025 6022//6022 6029//6029 +f 6029//6029 6028//6028 6025//6025 +f 6027//6027 6074//6074 6025//6025 +f 6025//6025 6028//6028 6027//6027 +f 6000//6000 6035//6035 6031//6031 +f 6035//6035 6030//6030 6031//6031 +f 6035//6035 6034//6034 6030//6030 +f 6034//6034 6032//6032 6030//6030 +f 6033//6033 6024//6024 8644//8644 +f 6034//6034 6033//6033 6032//6032 +f 6033//6033 8644//8644 6032//6032 +f 6029//6029 6022//6022 6033//6033 +f 6033//6033 6034//6034 6029//6029 +f 6035//6035 6006//6006 6029//6029 +f 6029//6029 6034//6034 6035//6035 +f 6000//6000 6031//6031 6036//6036 +f 5929//5929 6047//6047 8108//8108 +f 6047//6047 8109//8109 8108//8108 +f 6047//6047 6039//6039 8109//8109 +f 6047//6047 6037//6037 8112//8112 +f 6037//6037 6038//6038 8112//8112 +f 6047//6047 8112//8112 6039//6039 +f 6040//6040 6049//6049 8116//8116 +f 6049//6049 5995//5995 8116//8116 +f 6040//6040 8116//8116 8115//8115 +f 6037//6037 6040//6040 6038//6038 +f 6040//6040 6041//6041 6038//6038 +f 6040//6040 8115//8115 6041//6041 +f 5918//5918 6065//6065 6044//6044 +f 6044//6044 6042//6042 5918//5918 +f 6043//6043 6048//6048 5918//5918 +f 5918//5918 6042//6042 6043//6043 +f 6057//6057 6052//6052 6043//6043 +f 6043//6043 6042//6042 6057//6057 +f 6044//6044 6055//6055 6057//6057 +f 6057//6057 6042//6042 6044//6044 +f 6047//6047 5929//5929 6045//6045 +f 6045//6045 6046//6046 6047//6047 +f 6053//6053 6037//6037 6047//6047 +f 6047//6047 6046//6046 6053//6053 +f 6043//6043 6052//6052 6053//6053 +f 6053//6053 6046//6046 6043//6043 +f 6045//6045 6048//6048 6043//6043 +f 6043//6043 6046//6046 6045//6045 +f 6050//6050 6049//6049 6040//6040 +f 6040//6040 6051//6051 6050//6050 +f 6058//6058 5985//5985 6050//6050 +f 6050//6050 6051//6051 6058//6058 +f 6053//6053 6052//6052 6058//6058 +f 6058//6058 6051//6051 6053//6053 +f 6040//6040 6037//6037 6053//6053 +f 6053//6053 6051//6051 6040//6040 +f 6054//6054 5978//5978 6059//6059 +f 6059//6059 6056//6056 6054//6054 +f 6057//6057 6055//6055 6054//6054 +f 6054//6054 6056//6056 6057//6057 +f 6058//6058 6052//6052 6057//6057 +f 6057//6057 6056//6056 6058//6058 +f 6059//6059 5985//5985 6058//6058 +f 6058//6058 6056//6056 6059//6059 +f 5923//5923 6077//6077 6079//6079 +f 6079//6079 6060//6060 5923//5923 +f 6063//6063 6061//6061 5923//5923 +f 5923//5923 6060//6060 6063//6063 +f 6064//6064 6062//6062 6063//6063 +f 6063//6063 6060//6060 6064//6064 +f 6079//6079 6078//6078 6064//6064 +f 6064//6064 6060//6060 6079//6079 +f 6044//6044 6065//6065 5917//5917 +f 5917//5917 6066//6066 6044//6044 +f 6067//6067 6055//6055 6044//6044 +f 6044//6044 6066//6066 6067//6067 +f 6063//6063 6062//6062 6067//6067 +f 6067//6067 6066//6066 6063//6063 +f 5917//5917 6061//6061 6063//6063 +f 6063//6063 6066//6066 5917//5917 +f 6069//6069 5978//5978 6054//6054 +f 6054//6054 6070//6070 6069//6069 +f 6068//6068 6072//6072 6069//6069 +f 6069//6069 6070//6070 6068//6068 +f 6067//6067 6062//6062 6068//6068 +f 6068//6068 6070//6070 6067//6067 +f 6054//6054 6055//6055 6067//6067 +f 6067//6067 6070//6070 6054//6054 +f 6086//6086 6083//6083 5972//5972 +f 5972//5972 6071//6071 6086//6086 +f 6064//6064 6078//6078 6086//6086 +f 6086//6086 6071//6071 6064//6064 +f 6068//6068 6062//6062 6064//6064 +f 6064//6064 6071//6071 6068//6068 +f 5972//5972 6072//6072 6068//6068 +f 6068//6068 6071//6071 5972//5972 +f 5938//5938 5937//5937 6076//6076 +f 6076//6076 6075//6075 5938//5938 +f 6073//6073 5941//5941 5938//5938 +f 5938//5938 6075//6075 6073//6073 +f 6090//6090 6085//6085 6073//6073 +f 6073//6073 6075//6075 6090//6090 +f 6076//6076 6074//6074 6090//6090 +f 6090//6090 6075//6075 6076//6076 +f 6079//6079 6077//6077 6080//6080 +f 6080//6080 6081//6081 6079//6079 +f 6087//6087 6078//6078 6079//6079 +f 6079//6079 6081//6081 6087//6087 +f 6073//6073 6085//6085 6087//6087 +f 6087//6087 6081//6081 6073//6073 +f 6080//6080 5941//5941 6073//6073 +f 6073//6073 6081//6081 6080//6080 +f 6082//6082 6083//6083 6086//6086 +f 6086//6086 6088//6088 6082//6082 +f 6084//6084 5964//5964 6082//6082 +f 6082//6082 6088//6088 6084//6084 +f 6087//6087 6085//6085 6084//6084 +f 6084//6084 6088//6088 6087//6087 +f 6086//6086 6078//6078 6087//6087 +f 6087//6087 6088//6088 6086//6086 +f 6027//6027 5959//5959 6091//6091 +f 6091//6091 6089//6089 6027//6027 +f 6090//6090 6074//6074 6027//6027 +f 6027//6027 6089//6089 6090//6090 +f 6084//6084 6085//6085 6090//6090 +f 6090//6090 6089//6089 6084//6084 +f 6091//6091 5964//5964 6084//6084 +f 6084//6084 6089//6089 6091//6091 +f 5970//5970 5971//5971 6092//6092 +f 6093//6093 7035//7035 6092//6092 +f 6092//6092 5971//5971 6093//6093 +f 5967//5967 5966//5966 6095//6095 +f 6095//6095 5966//5966 5970//5970 +f 6095//6095 5970//5970 7024//7024 +f 7024//7024 6094//6094 6095//6095 +f 7013//7013 5967//5967 6095//6095 +f 6095//6095 6094//6094 7013//7013 +f 7035//7035 7025//7025 6092//6092 +f 7024//7024 5970//5970 6092//6092 +f 6092//6092 7025//7025 7024//7024 +f 6097//6097 6014//6014 6096//6096 +f 6096//6096 6099//6099 6097//6097 +f 6098//6098 7035//7035 6093//6093 +f 6093//6093 6015//6015 6098//6098 +f 6097//6097 6099//6099 6098//6098 +f 6098//6098 6015//6015 6097//6097 +f 6015//6015 6014//6014 6097//6097 +f 6099//6099 6101//6101 7036//7036 +f 6099//6099 7036//7036 6098//6098 +f 6098//6098 7036//7036 7035//7035 +f 6096//6096 6016//6016 7040//7040 +f 7040//7040 6100//6100 6096//6096 +f 6096//6096 6100//6100 6099//6099 +f 6100//6100 6101//6101 6099//6099 +f 7040//7040 6103//6103 6102//6102 +f 7040//7040 6016//6016 6103//6103 +f 6016//6016 6005//6005 6103//6103 +f 5998//5998 7010//7010 6104//6104 +f 7010//7010 7007//7007 6104//6104 +f 6106//6106 6113//6113 6105//6105 +f 6109//6109 6106//6106 7008//7008 +f 7008//7008 6106//6106 6105//6105 +f 7010//7010 5998//5998 6107//6107 +f 6107//6107 6109//6109 6108//6108 +f 7008//7008 6105//6105 7019//7019 +f 6108//6108 6109//6109 7008//7008 +f 6110//6110 5984//5984 6111//6111 +f 6112//6112 6114//6114 6110//6110 +f 6110//6110 6111//6111 6112//6112 +f 6112//6112 6111//6111 5967//5967 +f 6105//6105 6113//6113 5982//5982 +f 6105//6105 5982//5982 6115//6115 +f 6110//6110 6114//6114 6115//6115 +f 6115//6115 5982//5982 6110//6110 +f 5982//5982 5984//5984 6110//6110 +f 6114//6114 7016//7016 6115//6115 +f 7019//7019 6105//6105 6115//6115 +f 6115//6115 7016//7016 7019//7019 +f 6112//6112 5967//5967 7013//7013 +f 7013//7013 7015//7015 6112//6112 +f 6112//6112 7015//7015 6114//6114 +f 6117//6117 6132//6132 6116//6116 +f 6118//6118 6125//6125 6121//6121 +f 6121//6121 6117//6117 6118//6118 +f 6116//6116 6133//6133 6118//6118 +f 6118//6118 6117//6117 6116//6116 +f 6120//6120 6123//6123 6119//6119 +f 6119//6119 7028//7028 6120//6120 +f 6121//6121 6125//6125 6120//6120 +f 6120//6120 7028//7028 6121//6121 +f 6272//6272 6269//6269 6122//6122 +f 6126//6126 6271//6271 6272//6272 +f 6120//6120 6125//6125 6126//6126 +f 6126//6126 6272//6272 6120//6120 +f 6122//6122 6123//6123 6120//6120 +f 6120//6120 6272//6272 6122//6122 +f 6133//6133 6266//6266 6124//6124 +f 6124//6124 6118//6118 6133//6133 +f 6126//6126 6125//6125 6118//6118 +f 6124//6124 6271//6271 6126//6126 +f 6126//6126 6118//6118 6124//6124 +f 6129//6129 7042//7042 6135//6135 +f 6135//6135 6127//6127 6129//6129 +f 6130//6130 6128//6128 6129//6129 +f 6129//6129 6127//6127 6130//6130 +f 6130//6130 6127//6127 6131//6131 +f 6135//6135 6893//6893 6131//6131 +f 6131//6131 6127//6127 6135//6135 +f 6116//6116 6132//6132 6134//6134 +f 6134//6134 6889//6889 6116//6116 +f 6889//6889 6133//6133 6116//6116 +f 6134//6134 6128//6128 6130//6130 +f 6130//6130 6889//6889 6134//6134 +f 6889//6889 6266//6266 6133//6133 +f 6135//6135 7042//7042 6136//6136 +f 7042//7042 8122//8122 6136//6136 +f 6893//6893 6135//6135 6137//6137 +f 6135//6135 8124//8124 6137//6137 +f 6135//6135 6136//6136 8124//8124 +f 6893//6893 6137//6137 8126//8126 +f 6139//6139 6223//6223 6138//6138 +f 6223//6223 6224//6224 6138//6138 +f 6139//6139 6138//6138 8125//8125 +f 6140//6140 6139//6139 6141//6141 +f 6139//6139 8125//8125 6141//6141 +f 6145//6145 6147//6147 6142//6142 +f 6238//6238 6223//6223 6139//6139 +f 6139//6139 6143//6143 6238//6238 +f 6146//6146 6243//6243 6238//6238 +f 6238//6238 6143//6143 6146//6146 +f 6143//6143 7009//7009 6146//6146 +f 6139//6139 6140//6140 6143//6143 +f 6144//6144 6254//6254 6234//6234 +f 6234//6234 6145//6145 6144//6144 +f 6145//6145 6142//6142 6144//6144 +f 6146//6146 7009//7009 6145//6145 +f 6234//6234 6243//6243 6146//6146 +f 6146//6146 6145//6145 6234//6234 +f 7018//7018 7023//7023 6153//6153 +f 6119//6119 6123//6123 6153//6153 +f 6153//6153 7023//7023 6119//6119 +f 6142//6142 6147//6147 6148//6148 +f 6142//6142 6148//6148 6150//6150 +f 6150//6150 6148//6148 7018//7018 +f 6149//6149 6254//6254 6144//6144 +f 6144//6144 6150//6150 6149//6149 +f 6154//6154 6258//6258 6149//6149 +f 6149//6149 6150//6150 6154//6154 +f 6150//6150 7018//7018 6154//6154 +f 6144//6144 6142//6142 6150//6150 +f 6122//6122 6269//6269 6151//6151 +f 6151//6151 6152//6152 6122//6122 +f 6153//6153 6123//6123 6122//6122 +f 6122//6122 6152//6152 6153//6153 +f 6154//6154 7018//7018 6153//6153 +f 6153//6153 6152//6152 6154//6154 +f 6151//6151 6258//6258 6154//6154 +f 6154//6154 6152//6152 6151//6151 +f 6200//6200 6896//6896 6868//6868 +f 6868//6868 6156//6156 6200//6200 +f 6155//6155 6199//6199 6200//6200 +f 6200//6200 6156//6156 6155//6155 +f 6163//6163 6162//6162 6155//6155 +f 6155//6155 6156//6156 6163//6163 +f 6868//6868 5603//5603 6163//6163 +f 6163//6163 6156//6156 6868//6868 +f 6157//6157 6191//6191 6158//6158 +f 6158//6158 6159//6159 6157//6157 +f 6155//6155 6162//6162 6157//6157 +f 6157//6157 6159//6159 6155//6155 +f 6159//6159 6199//6199 6155//6155 +f 6160//6160 6899//6899 6275//6275 +f 6275//6275 6161//6161 6160//6160 +f 6165//6165 6864//6864 6160//6160 +f 6160//6160 6161//6161 6165//6165 +f 6157//6157 6162//6162 6165//6165 +f 6165//6165 6161//6161 6157//6157 +f 6275//6275 6191//6191 6157//6157 +f 6157//6157 6161//6161 6275//6275 +f 5602//5602 5619//5619 6166//6166 +f 6166//6166 6164//6164 5602//5602 +f 6163//6163 5603//5603 5602//5602 +f 5602//5602 6164//6164 6163//6163 +f 6165//6165 6162//6162 6163//6163 +f 6163//6163 6164//6164 6165//6165 +f 6166//6166 6864//6864 6165//6165 +f 6165//6165 6164//6164 6166//6166 +f 6167//6167 6192//6192 6168//6168 +f 6192//6192 6193//6193 6168//6168 +f 6173//6173 6167//6167 8589//8589 +f 6167//6167 6169//6169 8589//8589 +f 6167//6167 6168//6168 6169//6169 +f 6170//6170 6171//6171 8641//8641 +f 6171//6171 8591//8591 8641//8641 +f 6171//6171 6174//6174 8591//8591 +f 6171//6171 6173//6173 6172//6172 +f 6173//6173 8589//8589 6172//6172 +f 6171//6171 6172//6172 6174//6174 +f 6176//6176 6192//6192 6167//6167 +f 6178//6178 6185//6185 6176//6176 +f 6181//6181 6175//6175 6178//6178 +f 6178//6178 6176//6176 6181//6181 +f 6167//6167 6173//6173 6181//6181 +f 6181//6181 6176//6176 6167//6167 +f 6177//6177 6199//6199 6159//6159 +f 6178//6178 6175//6175 6177//6177 +f 6177//6177 6159//6159 6178//6178 +f 6158//6158 6185//6185 6178//6178 +f 6178//6178 6159//6159 6158//6158 +f 6875//6875 6179//6179 6182//6182 +f 6177//6177 6175//6175 6182//6182 +f 6182//6182 6179//6179 6177//6177 +f 6179//6179 6199//6199 6177//6177 +f 6171//6171 6170//6170 6183//6183 +f 6183//6183 6180//6180 6171//6171 +f 6181//6181 6173//6173 6171//6171 +f 6171//6171 6180//6180 6181//6181 +f 6182//6182 6175//6175 6181//6181 +f 6181//6181 6180//6180 6182//6182 +f 6183//6183 6875//6875 6182//6182 +f 6182//6182 6180//6180 6183//6183 +f 6192//6192 6176//6176 6186//6186 +f 6186//6186 6176//6176 6185//6185 +f 6884//6884 6194//6194 6198//6198 +f 6198//6198 6187//6187 6884//6884 +f 6189//6189 6184//6184 6884//6884 +f 6884//6884 6187//6187 6189//6189 +f 6186//6186 6185//6185 6189//6189 +f 6189//6189 6187//6187 6186//6186 +f 6198//6198 6192//6192 6186//6186 +f 6186//6186 6187//6187 6198//6198 +f 6190//6190 6191//6191 6188//6188 +f 6189//6189 6185//6185 6190//6190 +f 6190//6190 6188//6188 6189//6189 +f 6189//6189 6188//6188 6184//6184 +f 6185//6185 6158//6158 6190//6190 +f 6158//6158 6191//6191 6190//6190 +f 6192//6192 6197//6197 6193//6193 +f 6198//6198 6194//6194 6196//6196 +f 6194//6194 6195//6195 6196//6196 +f 6198//6198 6196//6196 8132//8132 +f 6192//6192 6198//6198 6197//6197 +f 6198//6198 8132//8132 6197//6197 +f 6875//6875 6200//6200 6179//6179 +f 6179//6179 6200//6200 6199//6199 +f 6897//6897 6896//6896 6200//6200 +f 6200//6200 6875//6875 6897//6897 +f 5595//5595 6870//6870 6204//6204 +f 6204//6204 6201//6201 5595//5595 +f 6202//6202 6203//6203 5595//5595 +f 5595//5595 6201//6201 6202//6202 +f 6215//6215 6207//6207 6202//6202 +f 6202//6202 6201//6201 6215//6215 +f 6204//6204 6216//6216 6215//6215 +f 6215//6215 6201//6201 6204//6204 +f 6744//6744 5648//5648 6205//6205 +f 6205//6205 6208//6208 6744//6744 +f 6214//6214 6206//6206 6744//6744 +f 6744//6744 6208//6208 6214//6214 +f 6202//6202 6207//6207 6214//6214 +f 6214//6214 6208//6208 6202//6202 +f 6205//6205 6203//6203 6202//6202 +f 6202//6202 6208//6208 6205//6205 +f 6209//6209 6210//6210 6211//6211 +f 6211//6211 6213//6213 6209//6209 +f 6212//6212 6219//6219 6209//6209 +f 6209//6209 6213//6213 6212//6212 +f 6214//6214 6207//6207 6212//6212 +f 6212//6212 6213//6213 6214//6214 +f 6211//6211 6206//6206 6214//6214 +f 6214//6214 6213//6213 6211//6211 +f 6217//6217 6879//6879 5910//5910 +f 5910//5910 6218//6218 6217//6217 +f 6215//6215 6216//6216 6217//6217 +f 6217//6217 6218//6218 6215//6215 +f 6212//6212 6207//6207 6215//6215 +f 6215//6215 6218//6218 6212//6212 +f 5910//5910 6219//6219 6212//6212 +f 6212//6212 6218//6218 5910//5910 +f 6222//6222 6227//6227 6220//6220 +f 6222//6222 6220//6220 8133//8133 +f 6220//6220 8135//8135 8133//8133 +f 6225//6225 6221//6221 6222//6222 +f 6225//6225 6222//6222 8134//8134 +f 6222//6222 8133//8133 8134//8134 +f 6225//6225 8134//8134 8131//8131 +f 6223//6223 6240//6240 6224//6224 +f 6240//6240 8127//8127 6224//6224 +f 6240//6240 6226//6226 8127//8127 +f 6225//6225 8131//8131 8130//8130 +f 6240//6240 6221//6221 6225//6225 +f 6240//6240 6225//6225 6226//6226 +f 6225//6225 8130//8130 6226//6226 +f 6229//6229 6227//6227 6222//6222 +f 6222//6222 6228//6228 6229//6229 +f 6232//6232 5955//5955 6229//6229 +f 6229//6229 6228//6228 6232//6232 +f 6239//6239 6242//6242 6232//6232 +f 6232//6232 6228//6228 6239//6239 +f 6222//6222 6221//6221 6239//6239 +f 6239//6239 6228//6228 6222//6222 +f 6244//6244 5608//5608 6230//6230 +f 6230//6230 6231//6231 6244//6244 +f 6237//6237 6247//6247 6244//6244 +f 6244//6244 6231//6231 6237//6237 +f 6232//6232 6242//6242 6237//6237 +f 6237//6237 6231//6231 6232//6232 +f 6230//6230 5955//5955 6232//6232 +f 6232//6232 6231//6231 6230//6230 +f 6234//6234 6254//6254 6233//6233 +f 6233//6233 6235//6235 6234//6234 +f 6236//6236 6243//6243 6234//6234 +f 6234//6234 6235//6235 6236//6236 +f 6237//6237 6242//6242 6236//6236 +f 6236//6236 6235//6235 6237//6237 +f 6233//6233 6247//6247 6237//6237 +f 6237//6237 6235//6235 6233//6233 +f 6240//6240 6223//6223 6238//6238 +f 6238//6238 6241//6241 6240//6240 +f 6239//6239 6221//6221 6240//6240 +f 6240//6240 6241//6241 6239//6239 +f 6236//6236 6242//6242 6239//6239 +f 6239//6239 6241//6241 6236//6236 +f 6238//6238 6243//6243 6236//6236 +f 6236//6236 6241//6241 6238//6238 +f 5611//5611 5608//5608 6244//6244 +f 6244//6244 6245//6245 5611//5611 +f 6246//6246 5612//5612 5611//5611 +f 5611//5611 6245//6245 6246//6246 +f 6255//6255 6252//6252 6246//6246 +f 6246//6246 6245//6245 6255//6255 +f 6244//6244 6247//6247 6255//6255 +f 6255//6255 6245//6245 6244//6244 +f 6262//6262 6248//6248 6250//6250 +f 6250//6250 6249//6249 6262//6262 +f 6251//6251 6263//6263 6262//6262 +f 6262//6262 6249//6249 6251//6251 +f 6246//6246 6252//6252 6251//6251 +f 6251//6251 6249//6249 6246//6246 +f 6250//6250 5612//5612 6246//6246 +f 6246//6246 6249//6249 6250//6250 +f 6269//6269 6253//6253 6151//6151 +f 6257//6257 6258//6258 6151//6151 +f 6151//6151 6253//6253 6257//6257 +f 6251//6251 6252//6252 6257//6257 +f 6257//6257 6253//6253 6251//6251 +f 6269//6269 6263//6263 6251//6251 +f 6251//6251 6253//6253 6269//6269 +f 6233//6233 6254//6254 6149//6149 +f 6149//6149 6256//6256 6233//6233 +f 6255//6255 6247//6247 6233//6233 +f 6233//6233 6256//6256 6255//6255 +f 6257//6257 6252//6252 6255//6255 +f 6255//6255 6256//6256 6257//6257 +f 6149//6149 6258//6258 6257//6257 +f 6257//6257 6256//6256 6149//6149 +f 6260//6260 6248//6248 6262//6262 +f 6262//6262 6270//6270 6260//6260 +f 6264//6264 6259//6259 6260//6260 +f 6260//6260 6270//6270 6264//6264 +f 6270//6270 6261//6261 6264//6264 +f 6262//6262 6263//6263 6270//6270 +f 5623//5623 6265//6265 6867//6867 +f 6265//6265 6902//6902 6867//6867 +f 6264//6264 6261//6261 6265//6265 +f 5623//5623 6259//6259 6264//6264 +f 6264//6264 6265//6265 5623//5623 +f 6124//6124 6266//6266 6903//6903 +f 6903//6903 6267//6267 6124//6124 +f 6124//6124 6267//6267 6271//6271 +f 6265//6265 6261//6261 6271//6271 +f 6271//6271 6267//6267 6265//6265 +f 6903//6903 6902//6902 6265//6265 +f 6265//6265 6267//6267 6903//6903 +f 6272//6272 6268//6268 6269//6269 +f 6270//6270 6263//6263 6269//6269 +f 6269//6269 6268//6268 6270//6270 +f 6271//6271 6261//6261 6270//6270 +f 6270//6270 6268//6268 6271//6271 +f 6271//6271 6268//6268 6272//6272 +f 6273//6273 6184//6184 6188//6188 +f 6274//6274 6900//6900 6273//6273 +f 6273//6273 6188//6188 6274//6274 +f 6274//6274 6188//6188 6191//6191 +f 6191//6191 6275//6275 6274//6274 +f 6899//6899 6900//6900 6274//6274 +f 6274//6274 6275//6275 6899//6899 +f 6366//6366 6365//6365 5772//5772 +f 5772//5772 6276//6276 6366//6366 +f 6284//6284 6371//6371 6366//6366 +f 6366//6366 6276//6276 6284//6284 +f 6277//6277 6289//6289 6284//6284 +f 6284//6284 6276//6276 6277//6277 +f 5772//5772 6287//6287 6277//6277 +f 6277//6277 6276//6276 5772//5772 +f 6282//6282 6278//6278 6279//6279 +f 6279//6279 6283//6283 6282//6282 +f 6280//6280 6281//6281 6282//6282 +f 6282//6282 6283//6283 6280//6280 +f 6284//6284 6289//6289 6280//6280 +f 6280//6280 6283//6283 6284//6284 +f 6279//6279 6371//6371 6284//6284 +f 6284//6284 6283//6283 6279//6279 +f 6347//6347 8624//8624 6346//6346 +f 6347//6347 6285//6285 8624//8624 +f 6285//6285 8625//8625 8624//8624 +f 6290//6290 8626//8626 6286//6286 +f 6285//6285 6290//6290 8625//8625 +f 6290//6290 6286//6286 8625//8625 +f 6280//6280 6289//6289 6290//6290 +f 6290//6290 6285//6285 6280//6280 +f 6347//6347 6281//6281 6280//6280 +f 6280//6280 6285//6285 6347//6347 +f 5775//5775 8629//8629 8621//8621 +f 6288//6288 5775//5775 8623//8623 +f 5775//5775 8621//8621 8623//8623 +f 6277//6277 6287//6287 5775//5775 +f 5775//5775 6288//6288 6277//6277 +f 6290//6290 6289//6289 6277//6277 +f 6277//6277 6288//6288 6290//6290 +f 6290//6290 6291//6291 8626//8626 +f 6290//6290 6288//6288 6291//6291 +f 6288//6288 8623//8623 6291//6291 +f 6862//6862 7736//7736 6292//6292 +f 6298//6298 6859//6859 6862//6862 +f 6862//6862 6292//6292 6298//6298 +f 6298//6298 6292//6292 6297//6297 +f 6292//6292 6293//6293 6297//6297 +f 6295//6295 5746//5746 6860//6860 +f 6860//6860 6294//6294 6295//6295 +f 6296//6296 6301//6301 6295//6295 +f 6295//6295 6294//6294 6296//6296 +f 6298//6298 6297//6297 6296//6296 +f 6296//6296 6294//6294 6298//6298 +f 6860//6860 6859//6859 6298//6298 +f 6298//6298 6294//6294 6860//6860 +f 7490//7490 7197//7197 6302//6302 +f 6302//6302 6299//6299 7490//7490 +f 7490//7490 6299//6299 6300//6300 +f 6296//6296 6297//6297 6300//6300 +f 6300//6300 6299//6299 6296//6296 +f 6302//6302 6301//6301 6296//6296 +f 6296//6296 6299//6299 6302//6302 +f 6304//6304 6303//6303 7486//7486 +f 7486//7486 6300//6300 6304//6304 +f 6297//6297 6293//6293 6304//6304 +f 6304//6304 6300//6300 6297//6297 +f 7486//7486 7490//7490 6300//6300 +f 6314//6314 6313//6313 6388//6388 +f 6388//6388 6306//6306 6314//6314 +f 6307//6307 6305//6305 6314//6314 +f 6314//6314 6306//6306 6307//6307 +f 6362//6362 6308//6308 6312//6312 +f 6312//6312 6310//6310 6362//6362 +f 6311//6311 6309//6309 6362//6362 +f 6362//6362 6310//6310 6311//6311 +f 6314//6314 6305//6305 6311//6311 +f 6311//6311 6310//6310 6314//6314 +f 6312//6312 6313//6313 6314//6314 +f 6314//6314 6310//6310 6312//6312 +f 5811//5811 5810//5810 6315//6315 +f 6315//6315 6316//6316 5811//5811 +f 6318//6318 6317//6317 5811//5811 +f 5811//5811 6316//6316 6318//6318 +f 6311//6311 6305//6305 6318//6318 +f 6318//6318 6316//6316 6311//6311 +f 6315//6315 6309//6309 6311//6311 +f 6311//6311 6316//6316 6315//6315 +f 6318//6318 6305//6305 6307//6307 +f 6307//6307 6398//6398 6318//6318 +f 6319//6319 6317//6317 6318//6318 +f 6318//6318 6398//6398 6319//6319 +f 6324//6324 6326//6326 6387//6387 +f 6387//6387 6386//6386 6324//6324 +f 6320//6320 6321//6321 6324//6324 +f 6324//6324 6386//6386 6320//6320 +f 6345//6345 6338//6338 6332//6332 +f 6332//6332 6325//6325 6345//6345 +f 6323//6323 6322//6322 6345//6345 +f 6345//6345 6325//6325 6323//6323 +f 6324//6324 6321//6321 6323//6323 +f 6323//6323 6325//6325 6324//6324 +f 6332//6332 6326//6326 6324//6324 +f 6324//6324 6325//6325 6332//6332 +f 6312//6312 6308//6308 6357//6357 +f 6357//6357 6328//6328 6312//6312 +f 6327//6327 6313//6313 6312//6312 +f 6312//6312 6328//6328 6327//6327 +f 6323//6323 6321//6321 6327//6327 +f 6327//6327 6328//6328 6323//6323 +f 6357//6357 6322//6322 6323//6323 +f 6323//6323 6328//6328 6357//6357 +f 6327//6327 6321//6321 6320//6320 +f 6320//6320 6329//6329 6327//6327 +f 6388//6388 6313//6313 6327//6327 +f 6327//6327 6329//6329 6388//6388 +f 6332//6332 6338//6338 6330//6330 +f 6338//6338 6339//6339 6330//6330 +f 6332//6332 6330//6330 6333//6333 +f 6326//6326 6332//6332 6331//6331 +f 6332//6332 8620//8620 6331//6331 +f 6332//6332 6333//6333 8620//8620 +f 6387//6387 6326//6326 8618//8618 +f 6326//6326 6331//6331 8618//8618 +f 6387//6387 8618//8618 6377//6377 +f 6336//6336 6334//6334 8622//8622 +f 6336//6336 8622//8622 6335//6335 +f 6350//6350 6336//6336 6337//6337 +f 6336//6336 8627//8627 6337//6337 +f 6336//6336 6335//6335 8627//8627 +f 6338//6338 6342//6342 6339//6339 +f 6342//6342 6341//6341 6339//6339 +f 6342//6342 6340//6340 6341//6341 +f 6342//6342 6350//6350 8628//8628 +f 6350//6350 6337//6337 8628//8628 +f 6342//6342 8628//8628 6340//6340 +f 6342//6342 6338//6338 6345//6345 +f 6345//6345 6344//6344 6342//6342 +f 6351//6351 6350//6350 6342//6342 +f 6342//6342 6344//6344 6351//6351 +f 6343//6343 6349//6349 6351//6351 +f 6351//6351 6344//6344 6343//6343 +f 6345//6345 6322//6322 6343//6343 +f 6343//6343 6344//6344 6345//6345 +f 6336//6336 6347//6347 6334//6334 +f 6347//6347 6346//6346 6334//6334 +f 6336//6336 6348//6348 6347//6347 +f 6355//6355 6281//6281 6347//6347 +f 6347//6347 6348//6348 6355//6355 +f 6351//6351 6349//6349 6355//6355 +f 6355//6355 6348//6348 6351//6351 +f 6336//6336 6350//6350 6351//6351 +f 6351//6351 6348//6348 6336//6336 +f 6352//6352 6278//6278 6282//6282 +f 6282//6282 6353//6353 6352//6352 +f 6354//6354 6358//6358 6352//6352 +f 6352//6352 6353//6353 6354//6354 +f 6355//6355 6349//6349 6354//6354 +f 6354//6354 6353//6353 6355//6355 +f 6282//6282 6281//6281 6355//6355 +f 6355//6355 6353//6353 6282//6282 +f 6357//6357 6308//6308 6360//6360 +f 6360//6360 6356//6356 6357//6357 +f 6343//6343 6322//6322 6357//6357 +f 6357//6357 6356//6356 6343//6343 +f 6354//6354 6349//6349 6343//6343 +f 6343//6343 6356//6356 6354//6354 +f 6360//6360 6358//6358 6354//6354 +f 6354//6354 6356//6356 6360//6360 +f 6360//6360 6308//6308 6362//6362 +f 6362//6362 6359//6359 6360//6360 +f 6361//6361 6358//6358 6360//6360 +f 6360//6360 6359//6359 6361//6361 +f 6374//6374 6373//6373 6361//6361 +f 6361//6361 6359//6359 6374//6374 +f 6362//6362 6309//6309 6374//6374 +f 6374//6374 6359//6359 6362//6362 +f 6279//6279 6278//6278 6352//6352 +f 6352//6352 6364//6364 6279//6279 +f 6363//6363 6371//6371 6279//6279 +f 6279//6279 6364//6364 6363//6363 +f 6361//6361 6373//6373 6363//6363 +f 6363//6363 6364//6364 6361//6361 +f 6352//6352 6358//6358 6361//6361 +f 6361//6361 6364//6364 6352//6352 +f 6369//6369 6365//6365 6366//6366 +f 6366//6366 6367//6367 6369//6369 +f 6370//6370 6368//6368 6369//6369 +f 6369//6369 6367//6367 6370//6370 +f 6363//6363 6373//6373 6370//6370 +f 6370//6370 6367//6367 6363//6363 +f 6366//6366 6371//6371 6363//6363 +f 6363//6363 6367//6367 6366//6366 +f 6315//6315 5810//5810 6375//6375 +f 6375//6375 6372//6372 6315//6315 +f 6374//6374 6309//6309 6315//6315 +f 6315//6315 6372//6372 6374//6374 +f 6370//6370 6373//6373 6374//6374 +f 6374//6374 6372//6372 6370//6370 +f 6375//6375 6368//6368 6370//6370 +f 6370//6370 6372//6372 6375//6375 +f 6379//6379 6387//6387 8616//8616 +f 6387//6387 6376//6376 8616//8616 +f 6387//6387 6377//6377 6376//6376 +f 6381//6381 6378//6378 8613//8613 +f 6378//6378 8611//8611 8613//8613 +f 6378//6378 8615//8615 8611//8611 +f 6378//6378 6379//6379 6380//6380 +f 6379//6379 8616//8616 6380//6380 +f 6378//6378 6380//6380 8615//8615 +f 6378//6378 6381//6381 6382//6382 +f 6382//6382 6384//6384 6378//6378 +f 6385//6385 6379//6379 6378//6378 +f 6378//6378 6384//6384 6385//6385 +f 6383//6383 6390//6390 6385//6385 +f 6385//6385 6384//6384 6383//6383 +f 6382//6382 6392//6392 6383//6383 +f 6383//6383 6384//6384 6382//6382 +f 6385//6385 6390//6390 6320//6320 +f 6320//6320 6386//6386 6385//6385 +f 6387//6387 6379//6379 6385//6385 +f 6385//6385 6386//6386 6387//6387 +f 6389//6389 6395//6395 6388//6388 +f 6388//6388 6329//6329 6389//6389 +f 6320//6320 6390//6390 6389//6389 +f 6389//6389 6329//6329 6320//6320 +f 6393//6393 6991//6991 6391//6391 +f 6391//6391 6394//6394 6393//6393 +f 6383//6383 6392//6392 6393//6393 +f 6393//6393 6394//6394 6383//6383 +f 6389//6389 6390//6390 6383//6383 +f 6383//6383 6394//6394 6389//6389 +f 6391//6391 6395//6395 6389//6389 +f 6389//6389 6394//6394 6391//6391 +f 6391//6391 6991//6991 6990//6990 +f 6990//6990 6396//6396 6391//6391 +f 6397//6397 6395//6395 6391//6391 +f 6391//6391 6396//6396 6397//6397 +f 6399//6399 6307//6307 6397//6397 +f 6397//6397 6396//6396 6399//6399 +f 6399//6399 6396//6396 6990//6990 +f 6307//6307 6306//6306 6397//6397 +f 6388//6388 6395//6395 6397//6397 +f 6397//6397 6306//6306 6388//6388 +f 6319//6319 6398//6398 6400//6400 +f 6400//6400 6398//6398 6307//6307 +f 6400//6400 6307//6307 6399//6399 +f 6399//6399 6995//6995 6400//6400 +f 5890//5890 6319//6319 6400//6400 +f 6400//6400 6995//6995 5890//5890 +f 6408//6408 8602//8602 8600//8600 +f 6401//6401 6403//6403 6926//6926 +f 6403//6403 8597//8597 6926//6926 +f 6403//6403 6402//6402 8597//8597 +f 6403//6403 6408//6408 8598//8598 +f 6408//6408 8600//8600 8598//8598 +f 6403//6403 8598//8598 6402//6402 +f 6403//6403 6401//6401 6404//6404 +f 6409//6409 6408//6408 6403//6403 +f 6403//6403 6404//6404 6409//6409 +f 6938//6938 6407//6407 6409//6409 +f 6409//6409 6404//6404 6938//6938 +f 6413//6413 6405//6405 6406//6406 +f 6409//6409 6407//6407 6413//6413 +f 6413//6413 6406//6406 6409//6409 +f 6408//6408 6409//6409 8602//8602 +f 6409//6409 6410//6410 8602//8602 +f 6409//6409 6406//6406 6410//6410 +f 6406//6406 8604//8604 6410//6410 +f 6411//6411 6415//6415 6997//6997 +f 6997//6997 6412//6412 6411//6411 +f 6413//6413 6407//6407 6411//6411 +f 6411//6411 6412//6412 6413//6413 +f 6412//6412 6405//6405 6413//6413 +f 6937//6937 6416//6416 6419//6419 +f 6419//6419 6414//6414 6937//6937 +f 6937//6937 6414//6414 6938//6938 +f 6411//6411 6407//6407 6938//6938 +f 6938//6938 6414//6414 6411//6411 +f 6419//6419 6415//6415 6411//6411 +f 6411//6411 6414//6414 6419//6419 +f 6419//6419 6416//6416 6417//6417 +f 6417//6417 6420//6420 6419//6419 +f 6418//6418 6415//6415 6419//6419 +f 6419//6419 6420//6420 6418//6418 +f 6421//6421 6427//6427 6418//6418 +f 6418//6418 6420//6420 6421//6421 +f 6417//6417 6755//6755 6421//6421 +f 6421//6421 6420//6420 6417//6417 +f 6427//6427 6994//6994 6422//6422 +f 6427//6427 6422//6422 6418//6418 +f 6997//6997 6415//6415 6418//6418 +f 6418//6418 6422//6422 6997//6997 +f 5906//5906 6987//6987 6423//6423 +f 6424//6424 6428//6428 5906//5906 +f 5906//5906 6423//6423 6424//6424 +f 6424//6424 6423//6423 6427//6427 +f 6423//6423 6994//6994 6427//6427 +f 6426//6426 6210//6210 6429//6429 +f 6429//6429 6425//6425 6426//6426 +f 6421//6421 6755//6755 6426//6426 +f 6426//6426 6425//6425 6421//6421 +f 6424//6424 6427//6427 6421//6421 +f 6421//6421 6425//6425 6424//6424 +f 6429//6429 6428//6428 6424//6424 +f 6424//6424 6425//6425 6429//6429 +f 6604//6604 6616//6616 6435//6435 +f 6435//6435 6433//6433 6604//6604 +f 6432//6432 6430//6430 6604//6604 +f 6604//6604 6433//6433 6432//6432 +f 6434//6434 6431//6431 6432//6432 +f 6432//6432 6433//6433 6434//6434 +f 6435//6435 6473//6473 6434//6434 +f 6434//6434 6433//6433 6435//6435 +f 6593//6593 6588//6588 6600//6600 +f 6600//6600 6436//6436 6593//6593 +f 6438//6438 6587//6587 6593//6593 +f 6593//6593 6436//6436 6438//6438 +f 6432//6432 6431//6431 6438//6438 +f 6438//6438 6436//6436 6432//6432 +f 6600//6600 6430//6430 6432//6432 +f 6432//6432 6436//6436 6600//6600 +f 6442//6442 6584//6584 6583//6583 +f 6583//6583 6439//6439 6442//6442 +f 6437//6437 6446//6446 6442//6442 +f 6442//6442 6439//6439 6437//6437 +f 6438//6438 6431//6431 6437//6437 +f 6437//6437 6439//6439 6438//6438 +f 6583//6583 6587//6587 6438//6438 +f 6438//6438 6439//6439 6583//6583 +f 6440//6440 6445//6445 6448//6448 +f 6448//6448 6441//6441 6440//6440 +f 6434//6434 6473//6473 6440//6440 +f 6440//6440 6441//6441 6434//6434 +f 6437//6437 6431//6431 6434//6434 +f 6434//6434 6441//6441 6437//6437 +f 6448//6448 6446//6446 6437//6437 +f 6437//6437 6441//6441 6448//6448 +f 6565//6565 6584//6584 6442//6442 +f 6442//6442 6443//6443 6565//6565 +f 6565//6565 8583//8583 6571//6571 +f 6565//6565 6443//6443 8583//8583 +f 6443//6443 8584//8584 8583//8583 +f 6450//6450 8585//8585 6444//6444 +f 6443//6443 6450//6450 8584//8584 +f 6450//6450 6444//6444 8584//8584 +f 6442//6442 6446//6446 6450//6450 +f 6450//6450 6443//6443 6442//6442 +f 6448//6448 6445//6445 8578//8578 +f 6445//6445 8577//8577 8578//8578 +f 6448//6448 8578//8578 6449//6449 +f 6450//6450 6446//6446 6448//6448 +f 6450//6450 6448//6448 6447//6447 +f 6448//6448 6449//6449 6447//6447 +f 6450//6450 8581//8581 8585//8585 +f 6450//6450 6447//6447 8581//8581 +f 6456//6456 6452//6452 6451//6451 +f 6452//6452 6453//6453 6451//6451 +f 6456//6456 6451//6451 6454//6454 +f 6455//6455 6456//6456 6459//6459 +f 6456//6456 8580//8580 6459//6459 +f 6456//6456 6454//6454 8580//8580 +f 6445//6445 6457//6457 8577//8577 +f 6457//6457 6458//6458 8577//8577 +f 6457//6457 8576//8576 6458//6458 +f 6457//6457 6455//6455 8579//8579 +f 6455//6455 6459//6459 8579//8579 +f 6457//6457 8579//8579 8576//8576 +f 6460//6460 6452//6452 6456//6456 +f 6456//6456 6462//6462 6460//6460 +f 6467//6467 6461//6461 6460//6460 +f 6460//6460 6462//6462 6467//6467 +f 6472//6472 6465//6465 6467//6467 +f 6467//6467 6462//6462 6472//6472 +f 6456//6456 6455//6455 6472//6472 +f 6472//6472 6462//6462 6456//6456 +f 6463//6463 6622//6622 6548//6548 +f 6548//6548 6464//6464 6463//6463 +f 6466//6466 6617//6617 6463//6463 +f 6463//6463 6464//6464 6466//6466 +f 6467//6467 6465//6465 6466//6466 +f 6466//6466 6464//6464 6467//6467 +f 6548//6548 6461//6461 6467//6467 +f 6467//6467 6464//6464 6548//6548 +f 6435//6435 6616//6616 6468//6468 +f 6468//6468 6469//6469 6435//6435 +f 6471//6471 6473//6473 6435//6435 +f 6435//6435 6469//6469 6471//6471 +f 6466//6466 6465//6465 6471//6471 +f 6471//6471 6469//6469 6466//6466 +f 6468//6468 6617//6617 6466//6466 +f 6466//6466 6469//6469 6468//6468 +f 6457//6457 6445//6445 6440//6440 +f 6440//6440 6470//6470 6457//6457 +f 6472//6472 6455//6455 6457//6457 +f 6457//6457 6470//6470 6472//6472 +f 6471//6471 6465//6465 6472//6472 +f 6472//6472 6470//6470 6471//6471 +f 6440//6440 6473//6473 6471//6471 +f 6471//6471 6470//6470 6440//6440 +f 6765//6765 6826//6826 6825//6825 +f 6475//6475 6474//6474 6479//6479 +f 6768//6768 6477//6477 6479//6479 +f 6479//6479 6474//6474 6768//6768 +f 6768//6768 6474//6474 6765//6765 +f 6475//6475 6826//6826 6765//6765 +f 6765//6765 6474//6474 6475//6475 +f 6476//6476 6477//6477 6478//6478 +f 6477//6477 8553//8553 6478//6478 +f 6479//6479 6477//6477 6476//6476 +f 6480//6480 6659//6659 6482//6482 +f 6486//6486 6509//6509 6480//6480 +f 6480//6480 6482//6482 6486//6486 +f 6481//6481 6487//6487 6486//6486 +f 6486//6486 6482//6482 6481//6481 +f 6482//6482 6631//6631 6481//6481 +f 6483//6483 6484//6484 6485//6485 +f 6485//6485 6488//6488 6483//6483 +f 6492//6492 6615//6615 6483//6483 +f 6483//6483 6488//6488 6492//6492 +f 6486//6486 6487//6487 6492//6492 +f 6492//6492 6488//6488 6486//6486 +f 6485//6485 6509//6509 6486//6486 +f 6486//6486 6488//6488 6485//6485 +f 6490//6490 6626//6626 6489//6489 +f 6489//6489 6493//6493 6490//6490 +f 6491//6491 6495//6495 6490//6490 +f 6490//6490 6493//6493 6491//6491 +f 6492//6492 6487//6487 6491//6491 +f 6491//6491 6493//6493 6492//6492 +f 6489//6489 6615//6615 6492//6492 +f 6492//6492 6493//6493 6489//6489 +f 6494//6494 6632//6632 6496//6496 +f 6481//6481 6631//6631 6494//6494 +f 6491//6491 6487//6487 6481//6481 +f 6481//6481 6494//6494 6491//6491 +f 6496//6496 6495//6495 6491//6491 +f 6491//6491 6494//6494 6496//6496 +f 6497//6497 6504//6504 6498//6498 +f 6498//6498 6499//6499 6497//6497 +f 6500//6500 6508//6508 6497//6497 +f 6497//6497 6499//6499 6500//6500 +f 6499//6499 6655//6655 6500//6500 +f 6598//6598 6516//6516 6501//6501 +f 6501//6501 6502//6502 6598//6598 +f 6503//6503 6606//6606 6598//6598 +f 6598//6598 6502//6502 6503//6503 +f 6497//6497 6508//6508 6503//6503 +f 6503//6503 6502//6502 6497//6497 +f 6501//6501 6504//6504 6497//6497 +f 6497//6497 6502//6502 6501//6501 +f 6485//6485 6484//6484 6505//6505 +f 6505//6505 6506//6506 6485//6485 +f 6507//6507 6509//6509 6485//6485 +f 6485//6485 6506//6506 6507//6507 +f 6503//6503 6508//6508 6507//6507 +f 6507//6507 6506//6506 6503//6503 +f 6505//6505 6606//6606 6503//6503 +f 6503//6503 6506//6506 6505//6505 +f 6657//6657 6659//6659 6480//6480 +f 6500//6500 6655//6655 6657//6657 +f 6507//6507 6508//6508 6500//6500 +f 6500//6500 6657//6657 6507//6507 +f 6480//6480 6509//6509 6507//6507 +f 6507//6507 6657//6657 6480//6480 +f 6515//6515 6514//6514 6649//6649 +f 6649//6649 6510//6510 6515//6515 +f 6522//6522 6519//6519 6515//6515 +f 6515//6515 6510//6510 6522//6522 +f 6510//6510 6523//6523 6522//6522 +f 6577//6577 6511//6511 6524//6524 +f 6524//6524 6512//6512 6577//6577 +f 6521//6521 6513//6513 6577//6577 +f 6577//6577 6512//6512 6521//6521 +f 6515//6515 6519//6519 6521//6521 +f 6521//6521 6512//6512 6515//6515 +f 6524//6524 6514//6514 6515//6515 +f 6515//6515 6512//6512 6524//6524 +f 6501//6501 6516//6516 6520//6520 +f 6520//6520 6518//6518 6501//6501 +f 6517//6517 6504//6504 6501//6501 +f 6501//6501 6518//6518 6517//6517 +f 6521//6521 6519//6519 6517//6517 +f 6517//6517 6518//6518 6521//6521 +f 6520//6520 6513//6513 6521//6521 +f 6521//6521 6518//6518 6520//6520 +f 6522//6522 6523//6523 6654//6654 +f 6517//6517 6519//6519 6522//6522 +f 6522//6522 6654//6654 6517//6517 +f 6498//6498 6504//6504 6517//6517 +f 6517//6517 6654//6654 6498//6498 +f 6524//6524 6511//6511 6573//6573 +f 6573//6573 6526//6526 6524//6524 +f 6529//6529 6514//6514 6524//6524 +f 6524//6524 6526//6526 6529//6529 +f 6529//6529 6525//6525 8569//8569 +f 6529//6529 6526//6526 6525//6525 +f 6526//6526 6527//6527 6525//6525 +f 6573//6573 6528//6528 8575//8575 +f 6526//6526 6573//6573 6527//6527 +f 6573//6573 8575//8575 6527//6527 +f 6529//6529 8569//8569 6530//6530 +f 6649//6649 6514//6514 6529//6529 +f 6649//6649 6529//6529 8566//8566 +f 6529//6529 6530//6530 8566//8566 +f 6532//6532 6544//6544 6533//6533 +f 6544//6544 8587//8587 6533//6533 +f 6544//6544 6646//6646 8587//8587 +f 6559//6559 6534//6534 6560//6560 +f 6534//6534 8572//8572 6560//6560 +f 6534//6534 8586//8586 8572//8572 +f 6534//6534 6532//6532 6531//6531 +f 6532//6532 6533//6533 6531//6531 +f 6534//6534 6531//6531 8586//8586 +f 6496//6496 6632//6632 6641//6641 +f 6535//6535 6495//6495 6496//6496 +f 6496//6496 6641//6641 6535//6535 +f 6638//6638 6537//6537 6535//6535 +f 6535//6535 6641//6641 6638//6638 +f 6536//6536 6626//6626 6490//6490 +f 6490//6490 6539//6539 6536//6536 +f 6538//6538 6541//6541 6536//6536 +f 6536//6536 6539//6539 6538//6538 +f 6535//6535 6537//6537 6538//6538 +f 6538//6538 6539//6539 6535//6535 +f 6490//6490 6495//6495 6535//6535 +f 6535//6535 6539//6539 6490//6490 +f 6534//6534 6559//6559 6542//6542 +f 6542//6542 6540//6540 6534//6534 +f 6543//6543 6532//6532 6534//6534 +f 6534//6534 6540//6540 6543//6543 +f 6538//6538 6537//6537 6543//6543 +f 6543//6543 6540//6540 6538//6538 +f 6542//6542 6541//6541 6538//6538 +f 6538//6538 6540//6540 6542//6542 +f 6543//6543 6537//6537 6638//6638 +f 6638//6638 6642//6642 6543//6543 +f 6544//6544 6532//6532 6543//6543 +f 6543//6543 6642//6642 6544//6544 +f 6546//6546 6626//6626 6536//6536 +f 6536//6536 6547//6547 6546//6546 +f 6549//6549 6545//6545 6546//6546 +f 6546//6546 6547//6547 6549//6549 +f 6556//6556 6557//6557 6549//6549 +f 6549//6549 6547//6547 6556//6556 +f 6536//6536 6541//6541 6556//6556 +f 6556//6556 6547//6547 6536//6536 +f 6548//6548 6622//6622 6623//6623 +f 6623//6623 6550//6550 6548//6548 +f 6554//6554 6461//6461 6548//6548 +f 6548//6548 6550//6550 6554//6554 +f 6549//6549 6557//6557 6554//6554 +f 6554//6554 6550//6550 6549//6549 +f 6623//6623 6545//6545 6549//6549 +f 6549//6549 6550//6550 6623//6623 +f 6552//6552 6452//6452 6460//6460 +f 6460//6460 6551//6551 6552//6552 +f 6553//6553 6562//6562 6552//6552 +f 6552//6552 6551//6551 6553//6553 +f 6554//6554 6557//6557 6553//6553 +f 6553//6553 6551//6551 6554//6554 +f 6460//6460 6461//6461 6554//6554 +f 6554//6554 6551//6551 6460//6460 +f 6542//6542 6559//6559 6555//6555 +f 6555//6555 6558//6558 6542//6542 +f 6556//6556 6541//6541 6542//6542 +f 6542//6542 6558//6558 6556//6556 +f 6553//6553 6557//6557 6556//6556 +f 6556//6556 6558//6558 6553//6553 +f 6555//6555 6562//6562 6553//6553 +f 6553//6553 6558//6558 6555//6555 +f 6555//6555 6559//6559 6561//6561 +f 6559//6559 6560//6560 6561//6561 +f 6555//6555 6561//6561 8571//8571 +f 6562//6562 6555//6555 6563//6563 +f 6555//6555 8570//8570 6563//6563 +f 6555//6555 8571//8571 8570//8570 +f 6452//6452 6552//6552 6453//6453 +f 6552//6552 6564//6564 6453//6453 +f 6552//6552 8573//8573 6564//6564 +f 6552//6552 6562//6562 8574//8574 +f 6562//6562 6563//6563 8574//8574 +f 6552//6552 8574//8574 8573//8573 +f 6585//6585 6584//6584 6565//6565 +f 6565//6565 6569//6569 6585//6585 +f 6566//6566 6579//6579 6585//6585 +f 6585//6585 6569//6569 6566//6566 +f 6566//6566 6568//6568 6567//6567 +f 6566//6566 6569//6569 6568//6568 +f 6569//6569 6570//6570 6568//6568 +f 6565//6565 6571//6571 6572//6572 +f 6569//6569 6565//6565 6570//6570 +f 6565//6565 6572//6572 6570//6570 +f 6573//6573 6511//6511 6578//6578 +f 6578//6578 6575//6575 6573//6573 +f 6573//6573 6574//6574 6528//6528 +f 6573//6573 6575//6575 6574//6574 +f 6575//6575 6576//6576 6574//6574 +f 6566//6566 6567//6567 8582//8582 +f 6575//6575 6566//6566 6576//6576 +f 6566//6566 8582//8582 6576//6576 +f 6578//6578 6579//6579 6566//6566 +f 6566//6566 6575//6575 6578//6578 +f 6578//6578 6511//6511 6577//6577 +f 6577//6577 6581//6581 6578//6578 +f 6580//6580 6579//6579 6578//6578 +f 6578//6578 6581//6581 6580//6580 +f 6582//6582 6591//6591 6580//6580 +f 6580//6580 6581//6581 6582//6582 +f 6577//6577 6513//6513 6582//6582 +f 6582//6582 6581//6581 6577//6577 +f 6583//6583 6584//6584 6585//6585 +f 6585//6585 6586//6586 6583//6583 +f 6592//6592 6587//6587 6583//6583 +f 6583//6583 6586//6586 6592//6592 +f 6580//6580 6591//6591 6592//6592 +f 6592//6592 6586//6586 6580//6580 +f 6585//6585 6579//6579 6580//6580 +f 6580//6580 6586//6586 6585//6585 +f 6589//6589 6588//6588 6593//6593 +f 6593//6593 6590//6590 6589//6589 +f 6596//6596 6602//6602 6589//6589 +f 6589//6589 6590//6590 6596//6596 +f 6592//6592 6591//6591 6596//6596 +f 6596//6596 6590//6590 6592//6592 +f 6593//6593 6587//6587 6592//6592 +f 6592//6592 6590//6590 6593//6593 +f 6520//6520 6516//6516 6594//6594 +f 6594//6594 6595//6595 6520//6520 +f 6582//6582 6513//6513 6520//6520 +f 6520//6520 6595//6595 6582//6582 +f 6596//6596 6591//6591 6582//6582 +f 6582//6582 6595//6595 6596//6596 +f 6594//6594 6602//6602 6596//6596 +f 6596//6596 6595//6595 6594//6594 +f 6594//6594 6516//6516 6598//6598 +f 6598//6598 6597//6597 6594//6594 +f 6603//6603 6602//6602 6594//6594 +f 6594//6594 6597//6597 6603//6603 +f 6608//6608 6609//6609 6603//6603 +f 6603//6603 6597//6597 6608//6608 +f 6598//6598 6606//6606 6608//6608 +f 6608//6608 6597//6597 6598//6598 +f 6600//6600 6588//6588 6589//6589 +f 6589//6589 6599//6599 6600//6600 +f 6601//6601 6430//6430 6600//6600 +f 6600//6600 6599//6599 6601//6601 +f 6603//6603 6609//6609 6601//6601 +f 6601//6601 6599//6599 6603//6603 +f 6589//6589 6602//6602 6603//6603 +f 6603//6603 6599//6599 6589//6589 +f 6621//6621 6616//6616 6604//6604 +f 6604//6604 6605//6605 6621//6621 +f 6612//6612 6611//6611 6621//6621 +f 6621//6621 6605//6605 6612//6612 +f 6601//6601 6609//6609 6612//6612 +f 6612//6612 6605//6605 6601//6601 +f 6604//6604 6430//6430 6601//6601 +f 6601//6601 6605//6605 6604//6604 +f 6505//6505 6484//6484 6610//6610 +f 6610//6610 6607//6607 6505//6505 +f 6608//6608 6606//6606 6505//6505 +f 6505//6505 6607//6607 6608//6608 +f 6612//6612 6609//6609 6608//6608 +f 6608//6608 6607//6607 6612//6612 +f 6610//6610 6611//6611 6612//6612 +f 6612//6612 6607//6607 6610//6610 +f 6610//6610 6484//6484 6483//6483 +f 6483//6483 6613//6613 6610//6610 +f 6620//6620 6611//6611 6610//6610 +f 6610//6610 6613//6613 6620//6620 +f 6614//6614 6625//6625 6620//6620 +f 6620//6620 6613//6613 6614//6614 +f 6483//6483 6615//6615 6614//6614 +f 6614//6614 6613//6613 6483//6483 +f 6468//6468 6616//6616 6621//6621 +f 6621//6621 6619//6619 6468//6468 +f 6618//6618 6617//6617 6468//6468 +f 6468//6468 6619//6619 6618//6618 +f 6620//6620 6625//6625 6618//6618 +f 6618//6618 6619//6619 6620//6620 +f 6621//6621 6611//6611 6620//6620 +f 6620//6620 6619//6619 6621//6621 +f 6623//6623 6622//6622 6463//6463 +f 6463//6463 6624//6624 6623//6623 +f 6627//6627 6545//6545 6623//6623 +f 6623//6623 6624//6624 6627//6627 +f 6618//6618 6625//6625 6627//6627 +f 6627//6627 6624//6624 6618//6618 +f 6463//6463 6617//6617 6618//6618 +f 6618//6618 6624//6624 6463//6463 +f 6489//6489 6626//6626 6546//6546 +f 6546//6546 6628//6628 6489//6489 +f 6614//6614 6615//6615 6489//6489 +f 6489//6489 6628//6628 6614//6614 +f 6627//6627 6625//6625 6614//6614 +f 6614//6614 6628//6628 6627//6627 +f 6546//6546 6545//6545 6627//6627 +f 6627//6627 6628//6628 6546//6546 +f 6659//6659 6629//6629 6630//6630 +f 6634//6634 6631//6631 6630//6630 +f 6630//6630 6629//6629 6634//6634 +f 6631//6631 6482//6482 6630//6630 +f 6630//6630 6482//6482 6659//6659 +f 6632//6632 6494//6494 6635//6635 +f 6635//6635 6494//6494 6631//6631 +f 6633//6633 6636//6636 6637//6637 +f 6637//6637 6635//6635 6633//6633 +f 6633//6633 6635//6635 6634//6634 +f 6635//6635 6631//6631 6634//6634 +f 6637//6637 6632//6632 6635//6635 +f 6637//6637 6636//6636 6640//6640 +f 6640//6640 6639//6639 6637//6637 +f 6639//6639 6632//6632 6637//6637 +f 6643//6643 6638//6638 6639//6639 +f 6640//6640 7056//7056 6643//6643 +f 6643//6643 6639//6639 6640//6640 +f 6638//6638 6641//6641 6639//6639 +f 6639//6639 6641//6641 6632//6632 +f 7053//7053 6644//6644 6647//6647 +f 6647//6647 6642//6642 7053//7053 +f 6643//6643 7056//7056 7053//7053 +f 7053//7053 6642//6642 6643//6643 +f 6642//6642 6638//6638 6643//6643 +f 6647//6647 6544//6544 6642//6642 +f 6647//6647 6644//6644 6645//6645 +f 6644//6644 7044//7044 6645//6645 +f 6647//6647 6645//6645 8568//8568 +f 6544//6544 6647//6647 6646//6646 +f 6647//6647 8568//8568 6646//6646 +f 7077//7077 6651//6651 8564//8564 +f 6651//6651 6648//6648 8564//8564 +f 6651//6651 6650//6650 6648//6648 +f 6651//6651 6649//6649 6650//6650 +f 6649//6649 8566//8566 6650//6650 +f 6651//6651 7077//7077 7074//7074 +f 6652//6652 6649//6649 6651//6651 +f 6651//6651 7074//7074 6652//6652 +f 6653//6653 6523//6523 6652//6652 +f 6652//6652 7074//7074 6653//6653 +f 7074//7074 7076//7076 6653//6653 +f 6523//6523 6510//6510 6652//6652 +f 6652//6652 6510//6510 6649//6649 +f 7065//7065 6654//6654 7078//7078 +f 6653//6653 7076//7076 7078//7078 +f 7078//7078 6654//6654 6653//6653 +f 6654//6654 6523//6523 6653//6653 +f 7065//7065 6498//6498 6654//6654 +f 6656//6656 6498//6498 7065//7065 +f 7065//7065 7066//7066 6656//6656 +f 6656//6656 7066//7066 6655//6655 +f 6655//6655 6499//6499 6656//6656 +f 6656//6656 6499//6499 6498//6498 +f 6655//6655 6658//6658 6657//6657 +f 6657//6657 6658//6658 6659//6659 +f 6770//6770 6661//6661 6660//6660 +f 6669//6669 6664//6664 6660//6660 +f 6660//6660 6661//6661 6669//6669 +f 6661//6661 5582//5582 6669//6669 +f 6665//6665 6693//6693 6694//6694 +f 6662//6662 6663//6663 6665//6665 +f 6660//6660 6664//6664 6662//6662 +f 6662//6662 6665//6665 6660//6660 +f 6694//6694 6770//6770 6660//6660 +f 6660//6660 6665//6665 6694//6694 +f 6668//6668 6666//6666 6667//6667 +f 6662//6662 6664//6664 6666//6666 +f 6668//6668 6663//6663 6662//6662 +f 6662//6662 6666//6666 6668//6668 +f 6779//6779 6965//6965 6671//6671 +f 6671//6671 6670//6670 6779//6779 +f 6669//6669 5582//5582 6779//6779 +f 6779//6779 6670//6670 6669//6669 +f 6666//6666 6664//6664 6669//6669 +f 6669//6669 6670//6670 6666//6666 +f 6671//6671 6667//6667 6666//6666 +f 6666//6666 6670//6670 6671//6671 +f 6671//6671 6965//6965 6672//6672 +f 6672//6672 6673//6673 6671//6671 +f 6673//6673 6667//6667 6671//6671 +f 7059//7059 6673//6673 6672//6672 +f 6667//6667 6673//6673 6674//6674 +f 6674//6674 6673//6673 7059//7059 +f 6675//6675 6949//6949 7049//7049 +f 6949//6949 6676//6676 7049//7049 +f 7059//7059 6949//6949 6675//6675 +f 6676//6676 6953//6953 8588//8588 +f 7049//7049 6676//6676 6677//6677 +f 6676//6676 8588//8588 6677//6677 +f 7049//7049 6677//6677 6678//6678 +f 6679//6679 6682//6682 7084//7084 +f 6682//6682 6679//6679 8559//8559 +f 6679//6679 6680//6680 8559//8559 +f 6682//6682 8559//8559 6681//6681 +f 6760//6760 6682//6682 8557//8557 +f 6682//6682 6681//6681 8557//8557 +f 6683//6683 7084//7084 6682//6682 +f 6682//6682 6760//6760 6683//6683 +f 6684//6684 7084//7084 6683//6683 +f 6683//6683 6685//6685 6684//6684 +f 6689//6689 7082//7082 6684//6684 +f 6684//6684 6685//6685 6689//6689 +f 6685//6685 6686//6686 6689//6689 +f 7084//7084 6684//6684 7085//7085 +f 7085//7085 6684//6684 7082//7082 +f 7080//7080 6687//6687 6688//6688 +f 6688//6688 6687//6687 7082//7082 +f 6689//6689 6686//6686 6691//6691 +f 6688//6688 7082//7082 6689//6689 +f 6689//6689 6691//6691 6688//6688 +f 6690//6690 7080//7080 6688//6688 +f 6688//6688 6691//6691 6690//6690 +f 6778//6778 6692//6692 6690//6690 +f 6692//6692 7080//7080 6690//6690 +f 6771//6771 7073//7073 6692//6692 +f 6771//6771 6692//6692 6778//6778 +f 7073//7073 7071//7071 6692//6692 +f 6692//6692 7071//7071 7080//7080 +f 6694//6694 6693//6693 6695//6695 +f 6696//6696 6770//6770 6694//6694 +f 6694//6694 6695//6695 6696//6696 +f 6696//6696 6695//6695 7073//7073 +f 6696//6696 7073//7073 6771//6771 +f 6771//6771 6774//6774 6696//6696 +f 6696//6696 6774//6774 6770//6770 +f 6697//6697 6962//6962 6914//6914 +f 6914//6914 6700//6700 6697//6697 +f 6702//6702 6698//6698 6697//6697 +f 6697//6697 6700//6700 6702//6702 +f 6706//6706 6699//6699 6702//6702 +f 6702//6702 6700//6700 6706//6706 +f 6914//6914 6918//6918 6706//6706 +f 6706//6706 6700//6700 6914//6914 +f 6704//6704 6739//6739 6701//6701 +f 6702//6702 6699//6699 6704//6704 +f 6704//6704 6701//6701 6702//6702 +f 6701//6701 6698//6698 6702//6702 +f 6741//6741 6703//6703 6960//6960 +f 6960//6960 6703//6703 6705//6705 +f 6704//6704 6699//6699 6705//6705 +f 6705//6705 6703//6703 6704//6704 +f 6741//6741 6739//6739 6704//6704 +f 6704//6704 6703//6703 6741//6741 +f 6705//6705 6699//6699 6706//6706 +f 6706//6706 6911//6911 6705//6705 +f 6710//6710 6708//6708 6707//6707 +f 6708//6708 6709//6709 6707//6707 +f 6710//6710 6707//6707 6711//6711 +f 6710//6710 6711//6711 6712//6712 +f 6714//6714 6739//6739 6713//6713 +f 6724//6724 6715//6715 6714//6714 +f 6714//6714 6713//6713 6724//6724 +f 6724//6724 6713//6713 6740//6740 +f 6716//6716 6736//6736 6717//6717 +f 6714//6714 6715//6715 6716//6716 +f 6716//6716 6717//6717 6714//6714 +f 6782//6782 6739//6739 6714//6714 +f 6714//6714 6717//6717 6782//6782 +f 6719//6719 6718//6718 8590//8590 +f 6719//6719 8590//8590 6720//6720 +f 6716//6716 6715//6715 6719//6719 +f 6716//6716 6719//6719 6722//6722 +f 6719//6719 6720//6720 6722//6722 +f 6736//6736 6716//6716 6721//6721 +f 6716//6716 6722//6722 6721//6721 +f 6723//6723 6708//6708 6710//6710 +f 6710//6710 6725//6725 6723//6723 +f 6724//6724 6740//6740 6723//6723 +f 6723//6723 6725//6725 6724//6724 +f 6719//6719 6715//6715 6724//6724 +f 6724//6724 6725//6725 6719//6719 +f 6719//6719 6710//6710 6718//6718 +f 6710//6710 6712//6712 6718//6718 +f 6719//6719 6725//6725 6710//6710 +f 6945//6945 6943//6943 6781//6781 +f 6781//6781 6727//6727 6945//6945 +f 6730//6730 6941//6941 6945//6945 +f 6945//6945 6727//6727 6730//6730 +f 6726//6726 6731//6731 6730//6730 +f 6730//6730 6727//6727 6726//6726 +f 6781//6781 6783//6783 6726//6726 +f 6726//6726 6727//6727 6781//6781 +f 6729//6729 6950//6950 6732//6732 +f 6732//6732 6733//6733 6729//6729 +f 6729//6729 6728//6728 8549//8549 +f 6728//6728 6735//6735 8549//8549 +f 6729//6729 6733//6733 6728//6728 +f 6730//6730 6731//6731 6728//6728 +f 6728//6728 6733//6733 6730//6730 +f 6732//6732 6941//6941 6730//6730 +f 6730//6730 6733//6733 6732//6732 +f 6736//6736 6721//6721 8548//8548 +f 6728//6728 6731//6731 6736//6736 +f 6728//6728 6736//6736 6734//6734 +f 6736//6736 8548//8548 6734//6734 +f 6728//6728 6734//6734 6735//6735 +f 6783//6783 6782//6782 6717//6717 +f 6783//6783 6717//6717 6726//6726 +f 6736//6736 6731//6731 6726//6726 +f 6726//6726 6717//6717 6736//6736 +f 6950//6950 6729//6729 6737//6737 +f 6729//6729 6738//6738 6737//6737 +f 6729//6729 8550//8550 6738//6738 +f 6729//6729 8549//8549 8550//8550 +f 6782//6782 6701//6701 6739//6739 +f 6713//6713 6741//6741 6740//6740 +f 6739//6739 6741//6741 6713//6713 +f 6741//6741 6960//6960 6742//6742 +f 6742//6742 6740//6740 6741//6741 +f 6211//6211 6210//6210 6426//6426 +f 6426//6426 6743//6743 6211//6211 +f 6747//6747 6206//6206 6211//6211 +f 6211//6211 6743//6743 6747//6747 +f 6754//6754 6745//6745 6747//6747 +f 6747//6747 6743//6743 6754//6754 +f 6426//6426 6755//6755 6754//6754 +f 6754//6754 6743//6743 6426//6426 +f 5561//5561 5648//5648 6744//6744 +f 6744//6744 6748//6748 5561//5561 +f 6746//6746 6753//6753 5561//5561 +f 5561//5561 6748//6748 6746//6746 +f 6747//6747 6745//6745 6746//6746 +f 6746//6746 6748//6748 6747//6747 +f 6744//6744 6206//6206 6747//6747 +f 6747//6747 6748//6748 6744//6744 +f 6749//6749 5558//5558 6752//6752 +f 6752//6752 6751//6751 6749//6749 +f 6750//6750 6956//6956 6749//6749 +f 6749//6749 6751//6751 6750//6750 +f 6746//6746 6745//6745 6750//6750 +f 6750//6750 6751//6751 6746//6746 +f 6752//6752 6753//6753 6746//6746 +f 6746//6746 6751//6751 6752//6752 +f 6417//6417 6416//6416 6757//6757 +f 6757//6757 6756//6756 6417//6417 +f 6754//6754 6755//6755 6417//6417 +f 6417//6417 6756//6756 6754//6754 +f 6750//6750 6745//6745 6754//6754 +f 6754//6754 6756//6756 6750//6750 +f 6757//6757 6956//6956 6750//6750 +f 6750//6750 6756//6756 6757//6757 +f 6762//6762 6683//6683 6760//6760 +f 6760//6760 6758//6758 6762//6762 +f 6758//6758 6759//6759 6763//6763 +f 6760//6760 8557//8557 8556//8556 +f 6758//6758 6760//6760 6759//6759 +f 6760//6760 8556//8556 6759//6759 +f 6477//6477 6761//6761 8553//8553 +f 6477//6477 6762//6762 6758//6758 +f 6477//6477 6758//6758 6761//6761 +f 6758//6758 6763//6763 6761//6761 +f 6764//6764 6690//6690 6691//6691 +f 6764//6764 6691//6691 6766//6766 +f 6686//6686 6765//6765 6766//6766 +f 6766//6766 6691//6691 6686//6686 +f 6765//6765 6825//6825 6766//6766 +f 6767//6767 6764//6764 6766//6766 +f 6766//6766 6825//6825 6767//6767 +f 6769//6769 6762//6762 6477//6477 +f 6477//6477 6768//6768 6769//6769 +f 6769//6769 6768//6768 6765//6765 +f 6685//6685 6683//6683 6762//6762 +f 6769//6769 6765//6765 6686//6686 +f 6686//6686 6685//6685 6769//6769 +f 6769//6769 6685//6685 6762//6762 +f 6780//6780 6770//6770 6774//6774 +f 6774//6774 6771//6771 6772//6772 +f 5565//5565 5574//5574 6780//6780 +f 6780//6780 6774//6774 5565//5565 +f 6773//6773 6777//6777 5565//5565 +f 5565//5565 6774//6774 6773//6773 +f 6774//6774 6772//6772 6773//6773 +f 6775//6775 6764//6764 6767//6767 +f 6767//6767 6776//6776 6775//6775 +f 6773//6773 6772//6772 6775//6775 +f 6775//6775 6776//6776 6773//6773 +f 6776//6776 6777//6777 6773//6773 +f 6778//6778 6690//6690 6764//6764 +f 6764//6764 6775//6775 6778//6778 +f 6772//6772 6771//6771 6778//6778 +f 6778//6778 6775//6775 6772//6772 +f 6919//6919 6965//6965 6779//6779 +f 6919//6919 6779//6779 5578//5578 +f 5578//5578 6779//6779 5582//5582 +f 6780//6780 5574//5574 5575//5575 +f 5575//5575 6661//6661 6780//6780 +f 5582//5582 6661//6661 5575//5575 +f 6661//6661 6770//6770 6780//6780 +f 6943//6943 6962//6962 6697//6697 +f 6943//6943 6697//6697 6781//6781 +f 6698//6698 6783//6783 6781//6781 +f 6781//6781 6697//6697 6698//6698 +f 6701//6701 6782//6782 6783//6783 +f 6698//6698 6701//6701 6783//6783 +f 6784//6784 8138//8138 6785//6785 +f 6792//6792 6784//6784 6816//6816 +f 6784//6784 6785//6785 6816//6816 +f 6788//6788 6786//6786 6787//6787 +f 6786//6786 7726//7726 6787//6787 +f 6788//6788 6787//6787 6789//6789 +f 6790//6790 6845//6845 6835//6835 +f 6835//6835 6791//6791 6790//6790 +f 6784//6784 6792//6792 6790//6790 +f 6790//6790 6791//6791 6784//6784 +f 6784//6784 6788//6788 8138//8138 +f 6788//6788 6789//6789 8138//8138 +f 6784//6784 6791//6791 6788//6788 +f 6835//6835 6786//6786 6788//6788 +f 6788//6788 6791//6791 6835//6835 +f 6824//6824 5678//5678 6793//6793 +f 6794//6794 6845//6845 6790//6790 +f 6790//6790 6795//6795 6794//6794 +f 6798//6798 6846//6846 6794//6794 +f 6794//6794 6795//6795 6798//6798 +f 6820//6820 6819//6819 6798//6798 +f 6798//6798 6795//6795 6820//6820 +f 6790//6790 6792//6792 6820//6820 +f 6820//6820 6795//6795 6790//6790 +f 6796//6796 5684//5684 6799//6799 +f 6799//6799 6797//6797 6796//6796 +f 6824//6824 6793//6793 6796//6796 +f 6796//6796 6797//6797 6824//6824 +f 6798//6798 6819//6819 6824//6824 +f 6824//6824 6797//6797 6798//6798 +f 6799//6799 6846//6846 6798//6798 +f 6798//6798 6797//6797 6799//6799 +f 6833//6833 6800//6800 6807//6807 +f 6807//6807 6805//6805 6833//6833 +f 6808//6808 6805//6805 6807//6807 +f 6804//6804 6801//6801 6805//6805 +f 6802//6802 5730//5730 6803//6803 +f 6803//6803 6809//6809 6802//6802 +f 6809//6809 6852//6852 6802//6802 +f 6803//6803 6804//6804 6805//6805 +f 6805//6805 6809//6809 6803//6803 +f 7715//7715 6806//6806 6852//6852 +f 6852//6852 6810//6810 7715//7715 +f 6808//6808 6807//6807 7715//7715 +f 7715//7715 6810//6810 6808//6808 +f 6809//6809 6805//6805 6808//6808 +f 6808//6808 6810//6810 6809//6809 +f 6809//6809 6810//6810 6852//6852 +f 6812//6812 8545//8545 6813//6813 +f 7710//7710 6811//6811 8144//8144 +f 6811//6811 8143//8143 8144//8144 +f 6811//6811 8139//8139 8143//8143 +f 6811//6811 8544//8544 8139//8139 +f 6811//6811 6812//6812 8544//8544 +f 6812//6812 6813//6813 8544//8544 +f 7697//7697 6814//6814 6792//6792 +f 7697//7697 6792//6792 6815//6815 +f 6792//6792 6816//6816 6815//6815 +f 7697//7697 6815//6815 8137//8137 +f 5956//5956 6817//6817 5639//5639 +f 6822//6822 5956//5956 6823//6823 +f 6823//6823 5956//5956 5639//5639 +f 6818//6818 6819//6819 6820//6820 +f 5957//5957 6822//6822 6818//6818 +f 6818//6818 6820//6820 5957//5957 +f 6792//6792 6814//6814 5957//5957 +f 5957//5957 6820//6820 6792//6792 +f 5640//5640 5678//5678 6824//6824 +f 6824//6824 6821//6821 5640//5640 +f 6823//6823 5639//5639 5640//5640 +f 5640//5640 6821//6821 6823//6823 +f 6818//6818 6822//6822 6823//6823 +f 6823//6823 6821//6821 6818//6818 +f 6824//6824 6819//6819 6818//6818 +f 6818//6818 6821//6821 6824//6824 +f 6829//6829 6826//6826 6475//6475 +f 6829//6829 6475//6475 6831//6831 +f 6831//6831 6475//6475 6479//6479 +f 5629//5629 6767//6767 6825//6825 +f 6825//6825 6827//6827 5629//5629 +f 6828//6828 5634//5634 5629//5629 +f 5629//5629 6827//6827 6828//6828 +f 6828//6828 6827//6827 6829//6829 +f 6825//6825 6826//6826 6829//6829 +f 6829//6829 6827//6827 6825//6825 +f 6801//6801 6804//6804 6830//6830 +f 6832//6832 6805//6805 6801//6801 +f 6828//6828 6829//6829 6832//6832 +f 6832//6832 6801//6801 6828//6828 +f 6830//6830 5634//5634 6828//6828 +f 6828//6828 6801//6801 6830//6830 +f 6834//6834 6800//6800 6833//6833 +f 6833//6833 6831//6831 6834//6834 +f 6831//6831 6479//6479 6834//6834 +f 6832//6832 6829//6829 6831//6831 +f 6833//6833 6805//6805 6832//6832 +f 6832//6832 6831//6831 6833//6833 +f 7725//7725 6800//6800 6834//6834 +f 6834//6834 6476//6476 7725//7725 +f 7725//7725 8552//8552 8551//8551 +f 7725//7725 6476//6476 8552//8552 +f 6476//6476 6478//6478 8552//8552 +f 6834//6834 6479//6479 6476//6476 +f 6835//6835 6845//6845 6836//6836 +f 6836//6836 6837//6837 6835//6835 +f 6786//6786 6835//6835 8141//8141 +f 6835//6835 8142//8142 8141//8141 +f 6835//6835 6837//6837 8142//8142 +f 6837//6837 8145//8145 8142//8142 +f 6837//6837 6839//6839 8145//8145 +f 6836//6836 5781//5781 6837//6837 +f 6838//6838 6837//6837 5781//5781 +f 6838//6838 8149//8149 8148//8148 +f 6837//6837 6838//6838 6839//6839 +f 6838//6838 8148//8148 6839//6839 +f 6799//6799 5684//5684 6843//6843 +f 6843//6843 6840//6840 6799//6799 +f 6842//6842 6846//6846 6799//6799 +f 6799//6799 6840//6840 6842//6842 +f 6844//6844 6841//6841 6842//6842 +f 6842//6842 6840//6840 6844//6844 +f 6843//6843 6849//6849 6844//6844 +f 6844//6844 6840//6840 6843//6843 +f 6836//6836 6845//6845 6794//6794 +f 6794//6794 6847//6847 6836//6836 +f 6848//6848 5781//5781 6836//6836 +f 6836//6836 6847//6847 6848//6848 +f 6842//6842 6841//6841 6848//6848 +f 6848//6848 6847//6847 6842//6842 +f 6794//6794 6846//6846 6842//6842 +f 6842//6842 6847//6847 6794//6794 +f 6841//6841 5782//5782 6848//6848 +f 6848//6848 5782//5782 5781//5781 +f 6844//6844 6849//6849 6850//6850 +f 6850//6850 6851//6851 6844//6844 +f 6844//6844 6851//6851 6841//6841 +f 6852//6852 6806//6806 6853//6853 +f 6852//6852 6853//6853 6854//6854 +f 6855//6855 6856//6856 6854//6854 +f 6854//6854 6853//6853 6855//6855 +f 5731//5731 5730//5730 6802//6802 +f 6802//6802 6857//6857 5731//5731 +f 6858//6858 5748//5748 5731//5731 +f 5731//5731 6857//6857 6858//6858 +f 6854//6854 6856//6856 6858//6858 +f 6858//6858 6857//6857 6854//6854 +f 6802//6802 6852//6852 6854//6854 +f 6854//6854 6857//6857 6802//6802 +f 6860//6860 5746//5746 5749//5749 +f 5749//5749 6861//6861 6860//6860 +f 6863//6863 6859//6859 6860//6860 +f 6860//6860 6861//6861 6863//6863 +f 6858//6858 6856//6856 6863//6863 +f 6863//6863 6861//6861 6858//6858 +f 5749//5749 5748//5748 6858//6858 +f 6858//6858 6861//6861 5749//5749 +f 7737//7737 7736//7736 6862//6862 +f 6863//6863 6856//6856 6855//6855 +f 6855//6855 7737//7737 6863//6863 +f 6862//6862 6859//6859 6863//6863 +f 6863//6863 7737//7737 6862//6862 +f 7710//7710 8144//8144 8146//8146 +f 5619//5619 5618//5618 6166//6166 +f 6865//6865 6864//6864 6166//6166 +f 6166//6166 5618//5618 6865//6865 +f 6160//6160 6866//6866 6899//6899 +f 6160//6160 6864//6864 6865//6865 +f 6865//6865 6866//6866 6160//6160 +f 5626//5626 6867//6867 6899//6899 +f 6899//6899 6866//6866 5626//5626 +f 5626//5626 6866//6866 6865//6865 +f 6896//6896 6869//6869 6868//6868 +f 6868//6868 6869//6869 5603//5603 +f 6896//6896 6870//6870 5594//5594 +f 5594//5594 6869//6869 6896//6896 +f 5603//5603 6869//6869 5594//5594 +f 6874//6874 6170//6170 8640//8640 +f 6170//6170 8641//8641 8640//8640 +f 6874//6874 8640//8640 6871//6871 +f 6882//6882 6874//6874 6872//6872 +f 6874//6874 8594//8594 6872//6872 +f 6874//6874 6871//6871 8594//8594 +f 6882//6882 6872//6872 6873//6873 +f 6183//6183 6170//6170 6874//6874 +f 6874//6874 6877//6877 6183//6183 +f 6878//6878 6875//6875 6183//6183 +f 6183//6183 6877//6877 6878//6878 +f 6876//6876 5898//5898 6878//6878 +f 6878//6878 6877//6877 6876//6876 +f 6874//6874 6882//6882 6876//6876 +f 6876//6876 6877//6877 6874//6874 +f 6878//6878 5898//5898 6881//6881 +f 6878//6878 6881//6881 6875//6875 +f 5903//5903 6879//6879 6880//6880 +f 6880//6880 6881//6881 5903//5903 +f 5903//5903 6881//6881 5898//5898 +f 5900//5900 8596//8596 5901//5901 +f 6876//6876 6882//6882 6883//6883 +f 6882//6882 6873//6873 6883//6883 +f 5900//5900 6876//6876 8596//8596 +f 6876//6876 6883//6883 8596//8596 +f 6876//6876 5900//5900 5898//5898 +f 6886//6886 6194//6194 6884//6884 +f 6884//6884 6887//6887 6886//6886 +f 6885//6885 6891//6891 6886//6886 +f 6886//6886 6887//6887 6885//6885 +f 6888//6888 6130//6130 6885//6885 +f 6885//6885 6887//6887 6888//6888 +f 6884//6884 6184//6184 6888//6888 +f 6888//6888 6887//6887 6884//6884 +f 6131//6131 6893//6893 6894//6894 +f 6894//6894 6885//6885 6131//6131 +f 6131//6131 6885//6885 6130//6130 +f 6894//6894 6891//6891 6885//6885 +f 6906//6906 6266//6266 6889//6889 +f 6889//6889 6888//6888 6906//6906 +f 6130//6130 6888//6888 6889//6889 +f 6194//6194 6886//6886 6195//6195 +f 6886//6886 6890//6890 6195//6195 +f 6886//6886 8642//8642 6890//6890 +f 6886//6886 6891//6891 8128//8128 +f 6891//6891 8129//8129 8128//8128 +f 6886//6886 8128//8128 8642//8642 +f 6894//6894 6893//6893 6892//6892 +f 6893//6893 8126//8126 6892//6892 +f 6891//6891 6894//6894 8129//8129 +f 6894//6894 6895//6895 8129//8129 +f 6894//6894 6892//6892 6895//6895 +f 6897//6897 6875//6875 6881//6881 +f 6204//6204 6870//6870 6896//6896 +f 6896//6896 6897//6897 6204//6204 +f 6898//6898 6216//6216 6204//6204 +f 6204//6204 6897//6897 6898//6898 +f 6897//6897 6881//6881 6898//6898 +f 6880//6880 6879//6879 6217//6217 +f 6881//6881 6880//6880 6898//6898 +f 6217//6217 6216//6216 6898//6898 +f 6898//6898 6880//6880 6217//6217 +f 6899//6899 6904//6904 6900//6900 +f 6888//6888 6184//6184 6273//6273 +f 6273//6273 6901//6901 6888//6888 +f 6900//6900 6901//6901 6273//6273 +f 6903//6903 6266//6266 6906//6906 +f 6906//6906 6905//6905 6903//6903 +f 6904//6904 6902//6902 6903//6903 +f 6903//6903 6905//6905 6904//6904 +f 6901//6901 6900//6900 6904//6904 +f 6904//6904 6905//6905 6901//6901 +f 6906//6906 6888//6888 6901//6901 +f 6901//6901 6905//6905 6906//6906 +f 6867//6867 6904//6904 6899//6899 +f 6867//6867 6902//6902 6904//6904 +f 6907//6907 5558//5558 6910//6910 +f 6910//6910 6909//6909 6907//6907 +f 6912//6912 6908//6908 6907//6907 +f 6907//6907 6909//6909 6912//6912 +f 6960//6960 6705//6705 6912//6912 +f 6912//6912 6909//6909 6960//6960 +f 6960//6960 6909//6909 6910//6910 +f 6917//6917 6916//6916 5556//5556 +f 5556//5556 6911//6911 6917//6917 +f 6911//6911 6706//6706 6917//6917 +f 6912//6912 6705//6705 6911//6911 +f 5556//5556 6908//6908 6912//6912 +f 6912//6912 6911//6911 5556//5556 +f 6914//6914 6962//6962 6913//6913 +f 6913//6913 6920//6920 6914//6914 +f 6914//6914 6920//6920 6918//6918 +f 6915//6915 6706//6706 6918//6918 +f 5566//5566 6916//6916 6917//6917 +f 6917//6917 6915//6915 5566//5566 +f 6921//6921 5572//5572 5566//5566 +f 5566//5566 6915//6915 6921//6921 +f 6915//6915 6918//6918 6921//6921 +f 6917//6917 6706//6706 6915//6915 +f 6964//6964 6919//6919 5580//5580 +f 5580//5580 6922//6922 6964//6964 +f 6920//6920 6913//6913 6964//6964 +f 6964//6964 6922//6922 6920//6920 +f 6921//6921 6918//6918 6920//6920 +f 6920//6920 6922//6922 6921//6921 +f 5580//5580 5572//5572 6921//6921 +f 6921//6921 6922//6922 5580//5580 +f 6708//6708 6923//6923 6709//6709 +f 6923//6923 6925//6925 6709//6709 +f 6923//6923 6924//6924 6925//6925 +f 6923//6923 6927//6927 8592//8592 +f 6927//6927 6928//6928 8592//8592 +f 6923//6923 8592//8592 6924//6924 +f 6929//6929 6401//6401 8595//8595 +f 6401//6401 6926//6926 8595//8595 +f 6927//6927 6929//6929 6928//6928 +f 6929//6929 8593//8593 6928//6928 +f 6929//6929 8595//8595 8593//8593 +f 6740//6740 6931//6931 6930//6930 +f 6930//6930 6931//6931 6934//6934 +f 6923//6923 6708//6708 6723//6723 +f 6723//6723 6932//6932 6923//6923 +f 6935//6935 6927//6927 6923//6923 +f 6923//6923 6932//6932 6935//6935 +f 6930//6930 6934//6934 6935//6935 +f 6935//6935 6932//6932 6930//6930 +f 6723//6723 6740//6740 6930//6930 +f 6930//6930 6932//6932 6723//6723 +f 6404//6404 6401//6401 6929//6929 +f 6929//6929 6933//6933 6404//6404 +f 6936//6936 6938//6938 6404//6404 +f 6404//6404 6933//6933 6936//6936 +f 6935//6935 6934//6934 6936//6936 +f 6936//6936 6933//6933 6935//6935 +f 6929//6929 6927//6927 6935//6935 +f 6935//6935 6933//6933 6929//6929 +f 6958//6958 6416//6416 6937//6937 +f 6937//6937 6939//6939 6958//6958 +f 6958//6958 6939//6939 6934//6934 +f 6934//6934 6939//6939 6936//6936 +f 6937//6937 6938//6938 6936//6936 +f 6936//6936 6939//6939 6937//6937 +f 6732//6732 6950//6950 6952//6952 +f 6952//6952 6940//6940 6732//6732 +f 6944//6944 6941//6941 6732//6732 +f 6732//6732 6940//6940 6944//6944 +f 6942//6942 6946//6946 6944//6944 +f 6944//6944 6940//6940 6942//6942 +f 6952//6952 6954//6954 6942//6942 +f 6942//6942 6940//6940 6952//6952 +f 6963//6963 6943//6943 6945//6945 +f 6944//6944 6946//6946 6947//6947 +f 6947//6947 6963//6963 6944//6944 +f 6945//6945 6941//6941 6944//6944 +f 6944//6944 6963//6963 6945//6945 +f 6672//6672 6965//6965 6948//6948 +f 6948//6948 6947//6947 6672//6672 +f 6946//6946 7059//7059 6672//6672 +f 6672//6672 6947//6947 6946//6946 +f 6948//6948 6963//6963 6947//6947 +f 6954//6954 6676//6676 6949//6949 +f 6954//6954 6949//6949 6942//6942 +f 6942//6942 6949//6949 6946//6946 +f 6949//6949 7059//7059 6946//6946 +f 6952//6952 6950//6950 6951//6951 +f 6950//6950 6737//6737 6951//6951 +f 6952//6952 6951//6951 8554//8554 +f 6954//6954 6952//6952 8558//8558 +f 6952//6952 8555//8555 8558//8558 +f 6952//6952 8554//8554 8555//8555 +f 6676//6676 6954//6954 6953//6953 +f 6954//6954 8560//8560 6953//6953 +f 6954//6954 8558//8558 8560//8560 +f 6955//6955 6740//6740 6742//6742 +f 6740//6740 6955//6955 6931//6931 +f 6757//6757 6416//6416 6958//6958 +f 6958//6958 6957//6957 6757//6757 +f 6961//6961 6956//6956 6757//6757 +f 6757//6757 6957//6957 6961//6961 +f 6931//6931 6955//6955 6961//6961 +f 6961//6961 6957//6957 6931//6931 +f 6958//6958 6934//6934 6931//6931 +f 6931//6931 6957//6957 6958//6958 +f 6910//6910 5558//5558 6749//6749 +f 6749//6749 6959//6959 6910//6910 +f 6742//6742 6960//6960 6910//6910 +f 6910//6910 6959//6959 6742//6742 +f 6961//6961 6955//6955 6742//6742 +f 6742//6742 6959//6959 6961//6961 +f 6749//6749 6956//6956 6961//6961 +f 6961//6961 6959//6959 6749//6749 +f 6913//6913 6962//6962 6943//6943 +f 6943//6943 6963//6963 6913//6913 +f 6913//6913 6963//6963 6948//6948 +f 6964//6964 6948//6948 6919//6919 +f 6964//6964 6913//6913 6948//6948 +f 6948//6948 6965//6965 6919//6919 +f 6972//6972 5896//5896 6966//6966 +f 5896//5896 6967//6967 6966//6966 +f 6972//6972 6966//6966 8607//8607 +f 5896//5896 5893//5893 6967//6967 +f 6970//6970 5876//5876 6968//6968 +f 6968//6968 6969//6969 6970//6970 +f 6971//6971 5883//5883 6970//6970 +f 6970//6970 6969//6969 6971//6971 +f 5884//5884 6973//6973 6972//6972 +f 6973//6973 5896//5896 6972//6972 +f 5884//5884 5883//5883 6971//6971 +f 6971//6971 6973//6973 5884//5884 +f 6977//6977 6976//6976 5897//5897 +f 6973//6973 6971//6971 6977//6977 +f 6977//6977 5897//5897 6973//6973 +f 6973//6973 5897//5897 5896//5896 +f 6974//6974 6983//6983 6975//6975 +f 6975//6975 6978//6978 6974//6974 +f 6969//6969 6968//6968 6974//6974 +f 6974//6974 6978//6978 6969//6969 +f 6977//6977 6971//6971 6969//6969 +f 6969//6969 6978//6978 6977//6977 +f 6975//6975 6976//6976 6977//6977 +f 6977//6977 6978//6978 6975//6975 +f 5891//5891 5890//5890 6992//6992 +f 6992//6992 6980//6980 5891//5891 +f 6979//6979 5887//5887 5891//5891 +f 5891//5891 6980//6980 6979//6979 +f 6992//6992 6981//6981 6980//6980 +f 6968//6968 5876//5876 6982//6982 +f 6982//6982 6985//6985 6968//6968 +f 6982//6982 5887//5887 6979//6979 +f 6979//6979 6985//6985 6982//6982 +f 6984//6984 6983//6983 6974//6974 +f 6974//6974 6985//6985 6984//6984 +f 6984//6984 6985//6985 6986//6986 +f 6985//6985 6979//6979 6986//6986 +f 6974//6974 6968//6968 6985//6985 +f 6980//6980 6981//6981 6987//6987 +f 6987//6987 6988//6988 6980//6980 +f 6986//6986 6979//6979 6980//6980 +f 6980//6980 6988//6988 6986//6986 +f 6989//6989 6399//6399 6990//6990 +f 6996//6996 6994//6994 6989//6989 +f 6989//6989 6990//6990 6996//6996 +f 6991//6991 6997//6997 6996//6996 +f 6996//6996 6990//6990 6991//6991 +f 6992//6992 5890//5890 6995//6995 +f 6993//6993 6981//6981 6992//6992 +f 6992//6992 6995//6995 6993//6993 +f 6989//6989 6994//6994 6993//6993 +f 6993//6993 6995//6995 6989//6989 +f 6995//6995 6399//6399 6989//6989 +f 6987//6987 6993//6993 6423//6423 +f 6423//6423 6993//6993 6994//6994 +f 6987//6987 6981//6981 6993//6993 +f 6422//6422 6996//6996 6997//6997 +f 6994//6994 6996//6996 6422//6422 +f 6382//6382 6381//6381 7005//7005 +f 7005//7005 6998//6998 6382//6382 +f 7001//7001 6392//6392 6382//6382 +f 6382//6382 6998//6998 7001//7001 +f 6999//6999 6405//6405 7001//7001 +f 7001//7001 6998//6998 6999//6999 +f 6999//6999 6998//6998 7005//7005 +f 6393//6393 7000//7000 6991//6991 +f 7000//7000 6997//6997 6991//6991 +f 7001//7001 6405//6405 7000//7000 +f 6393//6393 6392//6392 7001//7001 +f 7001//7001 7000//7000 6393//6393 +f 6405//6405 6412//6412 7000//7000 +f 7000//7000 6412//6412 6997//6997 +f 6406//6406 7003//7003 8604//8604 +f 7003//7003 7002//7002 8604//8604 +f 6406//6406 6999//6999 7003//7003 +f 6999//6999 7005//7005 7003//7003 +f 6405//6405 6999//6999 6406//6406 +f 7005//7005 6381//6381 8610//8610 +f 6381//6381 8613//8613 8610//8610 +f 7005//7005 8610//8610 7004//7004 +f 7005//7005 7004//7004 8606//8606 +f 7003//7003 8605//8605 7002//7002 +f 7003//7003 7006//7006 8605//8605 +f 7003//7003 7005//7005 7006//7006 +f 7005//7005 8606//8606 7006//7006 +f 7010//7010 6140//6140 7007//7007 +f 6140//6140 8121//8121 7007//7007 +f 6140//6140 6141//6141 8121//8121 +f 7019//7019 7012//7012 7008//7008 +f 7008//7008 7012//7012 6108//6108 +f 6107//6107 7011//7011 7010//7010 +f 6108//6108 7011//7011 6107//6107 +f 6140//6140 7011//7011 6143//6143 +f 6143//6143 7011//7011 7009//7009 +f 7011//7011 6108//6108 7009//7009 +f 6140//6140 7010//7010 7011//7011 +f 7012//7012 7019//7019 6147//6147 +f 6147//6147 6145//6145 7012//7012 +f 7009//7009 6108//6108 7012//7012 +f 7012//7012 6145//6145 7009//7009 +f 7015//7015 7013//7013 7026//7026 +f 7026//7026 7014//7014 7015//7015 +f 7021//7021 6114//6114 7015//7015 +f 7015//7015 7014//7014 7021//7021 +f 7016//7016 7017//7017 7019//7019 +f 7016//7016 6114//6114 7021//7021 +f 7021//7021 7017//7017 7016//7016 +f 6147//6147 7017//7017 6148//6148 +f 7022//7022 7018//7018 6148//6148 +f 6148//6148 7017//7017 7022//7022 +f 7017//7017 7021//7021 7022//7022 +f 6147//6147 7019//7019 7017//7017 +f 7020//7020 6119//6119 7023//7023 +f 7014//7014 7026//7026 7020//7020 +f 7020//7020 7023//7023 7014//7014 +f 7022//7022 7021//7021 7014//7014 +f 7014//7014 7023//7023 7022//7022 +f 7023//7023 7018//7018 7022//7022 +f 7025//7025 7035//7035 7038//7038 +f 7038//7038 7032//7032 7025//7025 +f 7027//7027 7024//7024 7025//7025 +f 7025//7025 7032//7032 7027//7027 +f 7026//7026 7013//7013 6094//6094 +f 6094//6094 7030//7030 7026//7026 +f 6094//6094 7024//7024 7027//7027 +f 7027//7027 7030//7030 6094//6094 +f 7028//7028 6119//6119 7020//7020 +f 7020//7020 7030//7030 7028//7028 +f 7029//7029 6121//6121 7028//7028 +f 7028//7028 7030//7030 7029//7029 +f 7030//7030 7027//7027 7029//7029 +f 7020//7020 7026//7026 7030//7030 +f 7031//7031 6132//6132 6117//6117 +f 6117//6117 7032//7032 7031//7031 +f 7032//7032 7038//7038 7031//7031 +f 7029//7029 7027//7027 7032//7032 +f 6117//6117 6121//6121 7029//7029 +f 7029//7029 7032//7032 6117//6117 +f 6100//6100 7040//7040 7033//7033 +f 7033//7033 7034//7034 6100//6100 +f 6100//6100 7034//7034 6101//6101 +f 7033//7033 7043//7043 7034//7034 +f 7038//7038 7035//7035 7036//7036 +f 7038//7038 7036//7036 7037//7037 +f 7037//7037 7036//7036 6101//6101 +f 6134//6134 6132//6132 7031//7031 +f 7031//7031 7037//7037 6134//6134 +f 7039//7039 6128//6128 6134//6134 +f 6134//6134 7037//7037 7039//7039 +f 7037//7037 6101//6101 7039//7039 +f 7031//7031 7038//7038 7037//7037 +f 7043//7043 7042//7042 6129//6129 +f 7043//7043 6129//6129 7034//7034 +f 7039//7039 6101//6101 7034//7034 +f 7034//7034 6129//6129 7039//7039 +f 6129//6129 6128//6128 7039//7039 +f 7033//7033 7040//7040 8119//8119 +f 7040//7040 6102//6102 8119//8119 +f 7033//7033 8119//8119 8120//8120 +f 7043//7043 7033//7033 7041//7041 +f 7033//7033 8120//8120 7041//7041 +f 7042//7042 7043//7043 8122//8122 +f 7043//7043 8123//8123 8122//8122 +f 7043//7043 7041//7041 8123//8123 +f 6644//6644 7045//7045 7044//7044 +f 7045//7045 8567//8567 7044//7044 +f 7045//7045 7047//7047 8567//8567 +f 7045//7045 7046//7046 8565//8565 +f 7046//7046 7051//7051 8565//8565 +f 7045//7045 8565//8565 7047//7047 +f 7048//7048 7049//7049 8563//8563 +f 7049//7049 6678//6678 8563//8563 +f 7048//7048 8563//8563 7050//7050 +f 7046//7046 7048//7048 7051//7051 +f 7048//7048 7050//7050 7051//7051 +f 7052//7052 7056//7056 6640//6640 +f 7057//7057 7058//7058 7052//7052 +f 7052//7052 6640//6640 7057//7057 +f 7057//7057 6640//6640 6636//6636 +f 7045//7045 6644//6644 7053//7053 +f 7053//7053 7054//7054 7045//7045 +f 7055//7055 7046//7046 7045//7045 +f 7045//7045 7054//7054 7055//7055 +f 7052//7052 7058//7058 7055//7055 +f 7055//7055 7054//7054 7052//7052 +f 7053//7053 7056//7056 7052//7052 +f 7052//7052 7054//7054 7053//7053 +f 6675//6675 7049//7049 7048//7048 +f 7058//7058 7059//7059 6675//6675 +f 7058//7058 6675//6675 7055//7055 +f 7048//7048 7046//7046 7055//7055 +f 7055//7055 6675//6675 7048//7048 +f 7063//7063 6667//6667 6674//6674 +f 7057//7057 6636//6636 7063//7063 +f 7063//7063 6674//6674 7057//7057 +f 7057//7057 6674//6674 7058//7058 +f 6674//6674 7059//7059 7058//7058 +f 6629//6629 6659//6659 7060//7060 +f 7060//7060 7064//7064 6629//6629 +f 7062//7062 6634//6634 6629//6629 +f 6629//6629 7064//7064 7062//7062 +f 6636//6636 6633//6633 7061//7061 +f 7061//7061 6633//6633 7062//7062 +f 6633//6633 6634//6634 7062//7062 +f 6668//6668 6667//6667 7063//7063 +f 7063//7063 7061//7061 6668//6668 +f 6668//6668 7061//7061 6663//6663 +f 7061//7061 7062//7062 6663//6663 +f 7063//7063 6636//6636 7061//7061 +f 6665//6665 7064//7064 6693//6693 +f 7064//7064 7060//7060 6693//6693 +f 6663//6663 7062//7062 7064//7064 +f 6663//6663 7064//7064 6665//6665 +f 7066//7066 7065//7065 7072//7072 +f 7072//7072 7068//7068 7066//7066 +f 7067//7067 6655//6655 7066//7066 +f 7066//7066 7068//7068 7067//7067 +f 7060//7060 6659//6659 6658//6658 +f 6658//6658 7069//7069 7060//7060 +f 6658//6658 6655//6655 7067//7067 +f 7067//7067 7069//7069 6658//6658 +f 6693//6693 7069//7069 6695//6695 +f 7070//7070 7073//7073 6695//6695 +f 6695//6695 7069//7069 7070//7070 +f 7069//7069 7067//7067 7070//7070 +f 6693//6693 7060//7060 7069//7069 +f 7081//7081 7080//7080 7071//7071 +f 7068//7068 7072//7072 7081//7081 +f 7081//7081 7071//7071 7068//7068 +f 7070//7070 7067//7067 7068//7068 +f 7068//7068 7071//7071 7070//7070 +f 7071//7071 7073//7073 7070//7070 +f 7077//7077 7075//7075 7074//7074 +f 7074//7074 7075//7075 7076//7076 +f 7075//7075 7086//7086 7076//7076 +f 7077//7077 7083//7083 7075//7075 +f 7072//7072 7065//7065 7078//7078 +f 7078//7078 7079//7079 7072//7072 +f 7076//7076 7086//7086 7079//7079 +f 7076//7076 7079//7079 7078//7078 +f 6687//6687 7080//7080 7081//7081 +f 7081//7081 7079//7079 6687//6687 +f 7086//7086 7082//7082 6687//6687 +f 6687//6687 7079//7079 7086//7086 +f 7081//7081 7072//7072 7079//7079 +f 7083//7083 7084//7084 7085//7085 +f 7083//7083 7085//7085 7075//7075 +f 7075//7075 7085//7085 7086//7086 +f 7085//7085 7082//7082 7086//7086 +f 7077//7077 8564//8564 8562//8562 +f 7083//7083 7077//7077 8561//8561 +f 7077//7077 7087//7087 8561//8561 +f 7077//7077 8562//8562 7087//7087 +f 6679//6679 7084//7084 7083//7083 +f 6679//6679 7088//7088 6680//6680 +f 6679//6679 7083//7083 7088//7088 +f 7083//7083 8561//8561 7088//7088 +f 7292//7292 7304//7304 7103//7103 +f 7103//7103 7089//7089 7292//7292 +f 7092//7092 7288//7288 7292//7292 +f 7292//7292 7089//7089 7092//7092 +f 7099//7099 7095//7095 7092//7092 +f 7092//7092 7089//7089 7099//7099 +f 7103//7103 7097//7097 7099//7099 +f 7099//7099 7089//7089 7103//7103 +f 7091//7091 7272//7272 7093//7093 +f 7093//7093 7090//7090 7091//7091 +f 7096//7096 7230//7230 7091//7091 +f 7091//7091 7090//7090 7096//7096 +f 7092//7092 7095//7095 7096//7096 +f 7096//7096 7090//7090 7092//7092 +f 7093//7093 7288//7288 7092//7092 +f 7092//7092 7090//7090 7093//7093 +f 5787//5787 7222//7222 7224//7224 +f 7224//7224 7094//7094 5787//5787 +f 7098//7098 7101//7101 5787//5787 +f 5787//5787 7094//7094 7098//7098 +f 7096//7096 7095//7095 7098//7098 +f 7098//7098 7094//7094 7096//7096 +f 7224//7224 7230//7230 7096//7096 +f 7096//7096 7094//7094 7224//7224 +f 7114//7114 5806//5806 7100//7100 +f 7100//7100 7102//7102 7114//7114 +f 7099//7099 7097//7097 7114//7114 +f 7114//7114 7102//7102 7099//7099 +f 7098//7098 7095//7095 7099//7099 +f 7099//7099 7102//7102 7098//7098 +f 7100//7100 7101//7101 7098//7098 +f 7098//7098 7102//7102 7100//7100 +f 7103//7103 7304//7304 7108//7108 +f 7108//7108 7106//7106 7103//7103 +f 7112//7112 7097//7097 7103//7103 +f 7103//7103 7106//7106 7112//7112 +f 7112//7112 7104//7104 7105//7105 +f 7112//7112 7106//7106 7104//7104 +f 7106//7106 7107//7107 7104//7104 +f 7108//7108 8162//8162 7109//7109 +f 7106//7106 7108//7108 7107//7107 +f 7108//7108 7109//7109 7107//7107 +f 7110//7110 5806//5806 7114//7114 +f 7114//7114 7113//7113 7110//7110 +f 7111//7111 5809//5809 7110//7110 +f 7110//7110 7113//7113 7111//7111 +f 7111//7111 7112//7112 7115//7115 +f 7112//7112 7105//7105 7115//7115 +f 7111//7111 7113//7113 7112//7112 +f 7114//7114 7097//7097 7112//7112 +f 7112//7112 7113//7113 7114//7114 +f 7111//7111 7115//7115 8160//8160 +f 5809//5809 7111//7111 8157//8157 +f 7111//7111 8160//8160 8157//8157 +f 7116//7116 7117//7117 7133//7133 +f 7133//7133 7120//7120 7116//7116 +f 7119//7119 7157//7157 7116//7116 +f 7116//7116 7120//7120 7119//7119 +f 7132//7132 7118//7118 7119//7119 +f 7119//7119 7120//7120 7132//7132 +f 7133//7133 7134//7134 7132//7132 +f 7132//7132 7120//7120 7133//7133 +f 7119//7119 7118//7118 9068//9068 +f 7118//7118 7127//7127 9068//9068 +f 7119//7119 9068//9068 7121//7121 +f 7157//7157 7119//7119 7122//7122 +f 7119//7119 7123//7123 7122//7122 +f 7119//7119 7121//7121 7123//7123 +f 7124//7124 9072//9072 9071//9071 +f 7124//7124 9071//9071 7126//7126 +f 7125//7125 7232//7232 7124//7124 +f 7125//7125 7124//7124 7128//7128 +f 7124//7124 7126//7126 7128//7128 +f 7118//7118 7125//7125 7127//7127 +f 7125//7125 9069//9069 7127//7127 +f 7125//7125 7128//7128 9069//9069 +f 7131//7131 7252//7252 7129//7129 +f 7129//7129 7130//7130 7131//7131 +f 7132//7132 7134//7134 7131//7131 +f 7131//7131 7130//7130 7132//7132 +f 7125//7125 7118//7118 7132//7132 +f 7132//7132 7130//7130 7125//7125 +f 7129//7129 7232//7232 7125//7125 +f 7125//7125 7130//7130 7129//7129 +f 7133//7133 7117//7117 7139//7139 +f 7139//7139 7138//7138 7133//7133 +f 7135//7135 7134//7134 7133//7133 +f 7133//7133 7138//7138 7135//7135 +f 7137//7137 7143//7143 7135//7135 +f 7135//7135 7138//7138 7137//7137 +f 7137//7137 7139//7139 7738//7738 +f 7139//7139 7136//7136 7738//7738 +f 7137//7137 7138//7138 7139//7139 +f 7140//7140 7252//7252 7131//7131 +f 7131//7131 7142//7142 7140//7140 +f 7141//7141 7764//7764 7140//7140 +f 7140//7140 7142//7142 7141//7141 +f 7135//7135 7143//7143 7141//7141 +f 7141//7141 7142//7142 7135//7135 +f 7131//7131 7134//7134 7135//7135 +f 7135//7135 7142//7142 7131//7131 +f 7143//7143 7741//7741 7141//7141 +f 7141//7141 7741//7741 7764//7764 +f 7762//7762 7170//7170 7173//7173 +f 7762//7762 7173//7173 9037//9037 +f 7173//7173 9038//9038 9037//9037 +f 7758//7758 7762//7762 7147//7147 +f 7762//7762 7144//7144 7147//7147 +f 7762//7762 9037//9037 7144//7144 +f 7173//7173 9039//9039 9038//9038 +f 7757//7757 7149//7149 7145//7145 +f 7149//7149 7146//7146 7145//7145 +f 7757//7757 7758//7758 9043//9043 +f 7758//7758 7147//7147 9043//9043 +f 7149//7149 7757//7757 9042//9042 +f 7757//7757 9043//9043 9042//9042 +f 7146//7146 7149//7149 7148//7148 +f 7149//7149 7150//7150 7148//7148 +f 7149//7149 9042//9042 7150//7150 +f 7152//7152 7153//7153 8210//8210 +f 7262//7262 8208//8208 7151//7151 +f 7152//7152 7262//7262 7153//7153 +f 7262//7262 7151//7151 7153//7153 +f 7157//7157 7122//7122 7158//7158 +f 7191//7191 7117//7117 7116//7116 +f 7116//7116 7155//7155 7191//7191 +f 7165//7165 7185//7185 7191//7191 +f 7191//7191 7155//7155 7165//7165 +f 7165//7165 7154//7154 7163//7163 +f 7165//7165 7155//7155 7154//7154 +f 7155//7155 7156//7156 7154//7154 +f 7116//7116 7157//7157 9065//9065 +f 7157//7157 7158//7158 9065//9065 +f 7155//7155 7116//7116 7156//7156 +f 7116//7116 9065//9065 7156//7156 +f 7161//7161 7177//7177 7159//7159 +f 7159//7159 7160//7160 7161//7161 +f 7161//7161 7162//7162 7169//7169 +f 7161//7161 7160//7160 7162//7162 +f 7160//7160 9063//9063 7162//7162 +f 7165//7165 7163//7163 7164//7164 +f 7160//7160 7165//7165 9063//9063 +f 7165//7165 7164//7164 9063//9063 +f 7159//7159 7185//7185 7165//7165 +f 7165//7165 7160//7160 7159//7159 +f 7183//7183 7177//7177 7161//7161 +f 7161//7161 7168//7168 7183//7183 +f 7166//7166 7182//7182 7183//7183 +f 7183//7183 7168//7168 7166//7166 +f 7166//7166 9048//9048 7167//7167 +f 7166//7166 7168//7168 9048//9048 +f 7168//7168 9058//9058 9048//9048 +f 7161//7161 7169//7169 9056//9056 +f 7168//7168 7161//7161 9058//9058 +f 7161//7161 9056//9056 9058//9058 +f 7173//7173 7170//7170 7171//7171 +f 7173//7173 7171//7171 7172//7172 +f 7171//7171 9041//9041 7172//7172 +f 7173//7173 7172//7172 9039//9039 +f 7166//7166 7167//7167 9040//9040 +f 7171//7171 7182//7182 7166//7166 +f 7171//7171 7166//7166 9041//9041 +f 7166//7166 9040//9040 9041//9041 +f 7171//7171 7170//7170 7176//7176 +f 7176//7176 7175//7175 7171//7171 +f 7174//7174 7182//7182 7171//7171 +f 7171//7171 7175//7175 7174//7174 +f 7174//7174 8215//8215 7180//7180 +f 7174//7174 7175//7175 8215//8215 +f 7175//7175 8216//8216 8215//8215 +f 7176//7176 8220//8220 8219//8219 +f 7175//7175 7176//7176 8216//8216 +f 7176//7176 8219//8219 8216//8216 +f 7189//7189 7177//7177 7183//7183 +f 7183//7183 7178//7178 7189//7189 +f 7189//7189 7179//7179 8214//8214 +f 7189//7189 7178//7178 7179//7179 +f 7178//7178 7181//7181 7179//7179 +f 7174//7174 7180//7180 8217//8217 +f 7178//7178 7174//7174 7181//7181 +f 7174//7174 8217//8217 7181//7181 +f 7183//7183 7182//7182 7174//7174 +f 7174//7174 7178//7178 7183//7183 +f 7159//7159 7177//7177 7189//7189 +f 7189//7189 7184//7184 7159//7159 +f 7186//7186 7185//7185 7159//7159 +f 7159//7159 7184//7184 7186//7186 +f 7186//7186 7187//7187 8213//8213 +f 7186//7186 7184//7184 7187//7187 +f 7184//7184 7190//7190 7187//7187 +f 7189//7189 8214//8214 7188//7188 +f 7184//7184 7189//7189 7190//7190 +f 7189//7189 7188//7188 7190//7190 +f 7139//7139 7117//7117 7191//7191 +f 7191//7191 7192//7192 7139//7139 +f 7139//7139 7192//7192 7136//7136 +f 7192//7192 8209//8209 7136//7136 +f 7192//7192 7186//7186 7938//7938 +f 7186//7186 8213//8213 7938//7938 +f 7191//7191 7185//7185 7186//7186 +f 7186//7186 7192//7192 7191//7191 +f 7203//7203 7196//7196 9084//9084 +f 7196//7196 9081//9081 9084//9084 +f 7203//7203 9084//9084 9085//9085 +f 7193//7193 7203//7203 7194//7194 +f 7203//7203 9086//9086 7194//7194 +f 7203//7203 9085//9085 9086//9086 +f 7200//7200 7351//7351 7195//7195 +f 7351//7351 9073//9073 7195//7195 +f 7196//7196 7200//7200 9081//9081 +f 7200//7200 9082//9082 9081//9081 +f 7199//7199 7197//7197 7347//7347 +f 7347//7347 7201//7201 7199//7199 +f 7205//7205 7198//7198 7199//7199 +f 7199//7199 7201//7201 7205//7205 +f 7200//7200 7196//7196 7205//7205 +f 7205//7205 7201//7201 7200//7200 +f 7347//7347 7351//7351 7200//7200 +f 7200//7200 7201//7201 7347//7347 +f 7213//7213 7212//7212 7202//7202 +f 7202//7202 7204//7204 7213//7213 +f 7203//7203 7193//7193 7213//7213 +f 7213//7213 7204//7204 7203//7203 +f 7205//7205 7196//7196 7203//7203 +f 7203//7203 7204//7204 7205//7205 +f 7202//7202 7198//7198 7205//7205 +f 7205//7205 7204//7204 7202//7202 +f 7206//7206 7207//7207 9094//9094 +f 7210//7210 9087//9087 7208//7208 +f 7217//7217 7193//7193 9088//9088 +f 7193//7193 7194//7194 9088//9088 +f 7210//7210 7217//7217 9087//9087 +f 7217//7217 9088//9088 9087//9087 +f 7206//7206 7217//7217 7207//7207 +f 7217//7217 7209//7209 7207//7207 +f 7217//7217 7210//7210 7209//7209 +f 7210//7210 9090//9090 7209//7209 +f 7210//7210 7208//7208 9090//9090 +f 7211//7211 7212//7212 7213//7213 +f 7213//7213 7216//7216 7211//7211 +f 7214//7214 7215//7215 7211//7211 +f 7211//7211 7216//7216 7214//7214 +f 7217//7217 7206//7206 7214//7214 +f 7214//7214 7216//7216 7217//7217 +f 7213//7213 7193//7193 7217//7217 +f 7217//7217 7216//7216 7213//7213 +f 7227//7227 7222//7222 5588//5588 +f 5588//5588 7219//7219 7227//7227 +f 7227//7227 9097//9097 7218//7218 +f 7227//7227 7219//7219 9097//9097 +f 7219//7219 7220//7220 9097//9097 +f 7214//7214 7206//7206 7221//7221 +f 7206//7206 9094//9094 7221//7221 +f 7219//7219 7214//7214 7220//7220 +f 7214//7214 7221//7221 7220//7220 +f 5588//5588 7215//7215 7214//7214 +f 7214//7214 7219//7219 5588//5588 +f 7224//7224 7222//7222 7227//7227 +f 7227//7227 7223//7223 7224//7224 +f 7225//7225 7230//7230 7224//7224 +f 7224//7224 7223//7223 7225//7225 +f 7225//7225 7226//7226 7229//7229 +f 7225//7225 7223//7223 7226//7226 +f 7223//7223 9119//9119 7226//7226 +f 7227//7227 7218//7218 9118//9118 +f 7223//7223 7227//7227 9119//9119 +f 7227//7227 9118//9118 9119//9119 +f 7278//7278 7272//7272 7091//7091 +f 7091//7091 7228//7228 7278//7278 +f 7278//7278 9093//9093 9092//9092 +f 7278//7278 7228//7228 9093//9093 +f 7228//7228 9096//9096 9093//9093 +f 7225//7225 7229//7229 9095//9095 +f 7228//7228 7225//7225 9096//9096 +f 7225//7225 9095//9095 9096//9096 +f 7091//7091 7230//7230 7225//7225 +f 7225//7225 7228//7228 7091//7091 +f 7146//7146 7148//7148 9046//9046 +f 7315//7315 7316//7316 7231//7231 +f 7129//7129 7252//7252 7251//7251 +f 7251//7251 7235//7235 7129//7129 +f 7241//7241 7232//7232 7129//7129 +f 7129//7129 7235//7235 7241//7241 +f 7234//7234 7233//7233 7241//7241 +f 7241//7241 7235//7235 7234//7234 +f 7251//7251 7249//7249 7234//7234 +f 7234//7234 7235//7235 7251//7251 +f 7124//7124 7236//7236 9072//9072 +f 7124//7124 7237//7237 7236//7236 +f 7237//7237 7240//7240 7236//7236 +f 7239//7239 9074//9074 7238//7238 +f 7237//7237 7239//7239 7240//7240 +f 7239//7239 7238//7238 7240//7240 +f 7241//7241 7233//7233 7239//7239 +f 7239//7239 7237//7237 7241//7241 +f 7124//7124 7232//7232 7241//7241 +f 7241//7241 7237//7237 7124//7124 +f 7242//7242 7315//7315 9077//9077 +f 7315//7315 7231//7231 9077//9077 +f 7245//7245 7242//7242 9076//9076 +f 7242//7242 9077//9077 9076//9076 +f 7244//7244 7243//7243 7242//7242 +f 7242//7242 7245//7245 7244//7244 +f 7239//7239 7233//7233 7244//7244 +f 7244//7244 7245//7245 7239//7239 +f 7239//7239 7246//7246 9074//9074 +f 7239//7239 7245//7245 7246//7246 +f 7245//7245 9076//9076 7246//7246 +f 7256//7256 7247//7247 7248//7248 +f 7248//7248 7250//7250 7256//7256 +f 7234//7234 7249//7249 7256//7256 +f 7256//7256 7250//7250 7234//7234 +f 7244//7244 7233//7233 7234//7234 +f 7234//7234 7250//7250 7244//7244 +f 7248//7248 7243//7243 7244//7244 +f 7244//7244 7250//7250 7248//7248 +f 7764//7764 7763//7763 7254//7254 +f 7254//7254 7763//7763 7258//7258 +f 7251//7251 7252//7252 7140//7140 +f 7140//7140 7255//7255 7251//7251 +f 7253//7253 7249//7249 7251//7251 +f 7251//7251 7255//7255 7253//7253 +f 7254//7254 7258//7258 7253//7253 +f 7253//7253 7255//7255 7254//7254 +f 7140//7140 7764//7764 7254//7254 +f 7254//7254 7255//7255 7140//7140 +f 7331//7331 7247//7247 7256//7256 +f 7256//7256 7260//7260 7331//7331 +f 7331//7331 7259//7259 7257//7257 +f 7259//7259 7261//7261 7257//7257 +f 7331//7331 7260//7260 7259//7259 +f 7253//7253 7258//7258 7259//7259 +f 7259//7259 7260//7260 7253//7253 +f 7256//7256 7249//7249 7253//7253 +f 7253//7253 7260//7260 7256//7256 +f 7259//7259 7258//7258 8196//8196 +f 7258//7258 8197//8197 8196//8196 +f 7259//7259 8196//8196 7261//7261 +f 7262//7262 7767//7767 8208//8208 +f 7767//7767 8207//8207 8208//8208 +f 7767//7767 7263//7263 8207//8207 +f 7767//7767 7264//7264 8204//8204 +f 7264//7264 8203//8203 8204//8204 +f 7767//7767 8204//8204 7263//7263 +f 7774//7774 7770//7770 8222//8222 +f 7774//7774 8222//8222 8223//8223 +f 7264//7264 7774//7774 8203//8203 +f 7774//7774 7265//7265 8203//8203 +f 7774//7774 8223//8223 7265//7265 +f 7145//7145 7267//7267 7266//7266 +f 7145//7145 7146//7146 7267//7267 +f 7266//7266 7268//7268 7500//7500 +f 7266//7266 7267//7267 7268//7268 +f 7509//7509 7500//7500 7268//7268 +f 7267//7267 7146//7146 9045//9045 +f 7146//7146 9046//9046 9045//9045 +f 7267//7267 9045//9045 9044//9044 +f 7359//7359 7509//7509 7268//7268 +f 7359//7359 7268//7268 9051//9051 +f 7268//7268 9052//9052 9051//9051 +f 7268//7268 7269//7269 9052//9052 +f 7268//7268 7267//7267 7269//7269 +f 7267//7267 9044//9044 7269//7269 +f 7359//7359 9051//9051 9050//9050 +f 7275//7275 7270//7270 7271//7271 +f 7309//7309 7280//7280 7308//7308 +f 7275//7275 7276//7276 7270//7270 +f 7289//7289 7272//7272 7278//7278 +f 7278//7278 7273//7273 7289//7289 +f 7275//7275 7274//7274 7289//7289 +f 7289//7289 7273//7273 7275//7275 +f 7275//7275 7273//7273 7276//7276 +f 7273//7273 7277//7277 7276//7276 +f 7278//7278 9092//9092 9091//9091 +f 7273//7273 7278//7278 7277//7277 +f 7278//7278 9091//9091 7277//7277 +f 7309//7309 7279//7279 7281//7281 +f 7309//7309 7281//7281 7280//7280 +f 7281//7281 9089//9089 7280//7280 +f 7281//7281 7274//7274 7275//7275 +f 7281//7281 7275//7275 9089//9089 +f 7275//7275 7271//7271 9089//9089 +f 7282//7282 7337//7337 7298//7298 +f 7298//7298 7286//7286 7282//7282 +f 7283//7283 7330//7330 7282//7282 +f 7282//7282 7286//7286 7283//7283 +f 7293//7293 7284//7284 7283//7283 +f 7283//7283 7286//7286 7293//7293 +f 7298//7298 7285//7285 7293//7293 +f 7293//7293 7286//7286 7298//7298 +f 7281//7281 7279//7279 7325//7325 +f 7325//7325 7287//7287 7281//7281 +f 7290//7290 7274//7274 7281//7281 +f 7281//7281 7287//7287 7290//7290 +f 7283//7283 7284//7284 7290//7290 +f 7290//7290 7287//7287 7283//7283 +f 7325//7325 7330//7330 7283//7283 +f 7283//7283 7287//7287 7325//7325 +f 7093//7093 7272//7272 7289//7289 +f 7289//7289 7291//7291 7093//7093 +f 7295//7295 7288//7288 7093//7093 +f 7093//7093 7291//7291 7295//7295 +f 7290//7290 7284//7284 7295//7295 +f 7295//7295 7291//7291 7290//7290 +f 7289//7289 7274//7274 7290//7290 +f 7290//7290 7291//7291 7289//7289 +f 7294//7294 7304//7304 7292//7292 +f 7292//7292 7296//7296 7294//7294 +f 7293//7293 7285//7285 7294//7294 +f 7294//7294 7296//7296 7293//7293 +f 7295//7295 7284//7284 7293//7293 +f 7293//7293 7296//7296 7295//7295 +f 7292//7292 7288//7288 7295//7295 +f 7295//7295 7296//7296 7292//7292 +f 7298//7298 7337//7337 7303//7303 +f 7303//7303 7297//7297 7298//7298 +f 7300//7300 7285//7285 7298//7298 +f 7298//7298 7297//7297 7300//7300 +f 7300//7300 7301//7301 7299//7299 +f 7300//7300 7297//7297 7301//7301 +f 7297//7297 7302//7302 7301//7301 +f 7303//7303 8172//8172 8171//8171 +f 7297//7297 7303//7303 7302//7302 +f 7303//7303 8171//8171 7302//7302 +f 7108//7108 7304//7304 7294//7294 +f 7294//7294 7305//7305 7108//7108 +f 7108//7108 7306//7306 8162//8162 +f 7108//7108 7305//7305 7306//7306 +f 7305//7305 7307//7307 7306//7306 +f 7300//7300 7299//7299 8167//8167 +f 7305//7305 7300//7300 7307//7307 +f 7300//7300 8167//8167 7307//7307 +f 7294//7294 7285//7285 7300//7300 +f 7300//7300 7305//7305 7294//7294 +f 7309//7309 7308//7308 9083//9083 +f 7311//7311 7279//7279 7309//7309 +f 7311//7311 7309//7309 7313//7313 +f 7309//7309 9083//9083 7313//7313 +f 7310//7310 7311//7311 7312//7312 +f 7311//7311 7314//7314 7312//7312 +f 7311//7311 7313//7313 7314//7314 +f 7315//7315 7322//7322 7316//7316 +f 7322//7322 9078//9078 7316//7316 +f 7322//7322 9080//9080 9078//9078 +f 7322//7322 7310//7310 7317//7317 +f 7310//7310 7312//7312 7317//7317 +f 7322//7322 7317//7317 9080//9080 +f 7248//7248 7247//7247 7318//7318 +f 7318//7318 7320//7320 7248//7248 +f 7319//7319 7243//7243 7248//7248 +f 7248//7248 7320//7320 7319//7319 +f 7321//7321 7329//7329 7319//7319 +f 7319//7319 7320//7320 7321//7321 +f 7318//7318 7333//7333 7321//7321 +f 7321//7321 7320//7320 7318//7318 +f 7322//7322 7315//7315 7242//7242 +f 7242//7242 7323//7323 7322//7322 +f 7327//7327 7310//7310 7322//7322 +f 7322//7322 7323//7323 7327//7327 +f 7319//7319 7329//7329 7327//7327 +f 7327//7327 7323//7323 7319//7319 +f 7242//7242 7243//7243 7319//7319 +f 7319//7319 7323//7323 7242//7242 +f 7325//7325 7279//7279 7311//7311 +f 7311//7311 7324//7324 7325//7325 +f 7326//7326 7330//7330 7325//7325 +f 7325//7325 7324//7324 7326//7326 +f 7327//7327 7329//7329 7326//7326 +f 7326//7326 7324//7324 7327//7327 +f 7311//7311 7310//7310 7327//7327 +f 7327//7327 7324//7324 7311//7311 +f 7340//7340 7337//7337 7282//7282 +f 7282//7282 7328//7328 7340//7340 +f 7321//7321 7333//7333 7340//7340 +f 7340//7340 7328//7328 7321//7321 +f 7326//7326 7329//7329 7321//7321 +f 7321//7321 7328//7328 7326//7326 +f 7282//7282 7330//7330 7326//7326 +f 7326//7326 7328//7328 7282//7282 +f 7318//7318 7247//7247 7331//7331 +f 7331//7331 7334//7334 7318//7318 +f 7332//7332 7333//7333 7318//7318 +f 7318//7318 7334//7334 7332//7332 +f 7332//7332 7336//7336 7335//7335 +f 7332//7332 7334//7334 7336//7336 +f 7334//7334 8194//8194 7336//7336 +f 7331//7331 7257//7257 8195//8195 +f 7334//7334 7331//7331 8194//8194 +f 7331//7331 8195//8195 8194//8194 +f 7303//7303 7337//7337 7340//7340 +f 7340//7340 7338//7338 7303//7303 +f 7303//7303 7339//7339 8172//8172 +f 7303//7303 7338//7338 7339//7339 +f 7338//7338 8176//8176 7339//7339 +f 7332//7332 7335//7335 8181//8181 +f 7338//7338 7332//7332 8176//8176 +f 7332//7332 8181//8181 8176//8176 +f 7340//7340 7333//7333 7332//7332 +f 7332//7332 7338//7338 7340//7340 +f 7341//7341 9059//9059 9064//9064 +f 7346//7346 7341//7341 9066//9066 +f 7341//7341 9064//9064 9066//9066 +f 7346//7346 7394//7394 7341//7341 +f 7354//7354 9067//9067 9070//9070 +f 7354//7354 7346//7346 9067//9067 +f 7346//7346 9066//9066 9067//9067 +f 7495//7495 7342//7342 7345//7345 +f 7345//7345 7344//7344 7495//7495 +f 7349//7349 7343//7343 7495//7495 +f 7495//7495 7344//7344 7349//7349 +f 7346//7346 7354//7354 7349//7349 +f 7349//7349 7344//7344 7346//7346 +f 7345//7345 7394//7394 7346//7346 +f 7346//7346 7344//7344 7345//7345 +f 7347//7347 7197//7197 7492//7492 +f 7492//7492 7348//7348 7347//7347 +f 7350//7350 7351//7351 7347//7347 +f 7347//7347 7348//7348 7350//7350 +f 7349//7349 7354//7354 7350//7350 +f 7350//7350 7348//7348 7349//7349 +f 7492//7492 7343//7343 7349//7349 +f 7349//7349 7348//7348 7492//7492 +f 7351//7351 7352//7352 9073//9073 +f 7351//7351 7350//7350 7352//7352 +f 7350//7350 7353//7353 7352//7352 +f 7354//7354 9070//9070 7355//7355 +f 7350//7350 7354//7354 7353//7353 +f 7354//7354 7355//7355 7353//7353 +f 7504//7504 7507//7507 7356//7356 +f 7507//7507 7357//7357 7356//7356 +f 7512//7512 7360//7360 7507//7507 +f 7507//7507 7360//7360 7358//7358 +f 7360//7360 9047//9047 7358//7358 +f 7507//7507 7358//7358 9053//9053 +f 7507//7507 9053//9053 7357//7357 +f 7359//7359 9050//9050 9049//9049 +f 7360//7360 7361//7361 9047//9047 +f 7508//7508 7509//7509 7359//7359 +f 7360//7360 7512//7512 7361//7361 +f 7512//7512 7362//7362 7361//7361 +f 7512//7512 7508//7508 7362//7362 +f 7508//7508 7363//7363 7362//7362 +f 7508//7508 7359//7359 7363//7363 +f 7359//7359 9049//9049 7363//7363 +f 7406//7406 7514//7514 7515//7515 +f 7515//7515 7368//7368 7406//7406 +f 7366//7366 7368//7368 7515//7515 +f 7364//7364 7365//7365 7370//7370 +f 7370//7370 7369//7369 7364//7364 +f 7367//7367 7374//7374 7364//7364 +f 7364//7364 7369//7369 7367//7367 +f 7368//7368 7366//7366 7367//7367 +f 7367//7367 7369//7369 7368//7368 +f 7370//7370 7406//7406 7368//7368 +f 7368//7368 7369//7369 7370//7370 +f 7371//7371 7673//7673 7372//7372 +f 7372//7372 7375//7375 7371//7371 +f 7373//7373 7671//7671 7371//7371 +f 7371//7371 7375//7375 7373//7373 +f 7367//7367 7366//7366 7373//7373 +f 7373//7373 7375//7375 7367//7367 +f 7372//7372 7374//7374 7367//7367 +f 7367//7367 7375//7375 7372//7372 +f 7519//7519 7683//7683 7671//7671 +f 7671//7671 7373//7373 7519//7519 +f 7519//7519 7373//7373 7366//7366 +f 7200//7200 7195//7195 9075//9075 +f 7200//7200 9075//9075 7376//7376 +f 7200//7200 9079//9079 9082//9082 +f 7200//7200 7376//7376 9079//9079 +f 7372//7372 7673//7673 9104//9104 +f 7673//7673 7377//7377 9104//9104 +f 7372//7372 9104//9104 9100//9100 +f 7374//7374 7372//7372 7378//7378 +f 7372//7372 7379//7379 7378//7378 +f 7372//7372 9100//9100 7379//7379 +f 7365//7365 7364//7364 9007//9007 +f 7364//7364 7380//7380 9007//9007 +f 7364//7364 7381//7381 7380//7380 +f 7364//7364 7374//7374 7382//7382 +f 7374//7374 7378//7378 7382//7382 +f 7364//7364 7382//7382 7381//7381 +f 7664//7664 7384//7384 9113//9113 +f 7383//7383 7679//7679 7521//7521 +f 7677//7677 7383//7383 7521//7521 +f 7521//7521 7664//7664 7677//7677 +f 7504//7504 7356//7356 9114//9114 +f 7664//7664 7504//7504 7384//7384 +f 7504//7504 9114//9114 7384//7384 +f 7504//7504 7664//7664 7521//7521 +f 7387//7387 7385//7385 9057//9057 +f 7385//7385 7696//7696 9057//9057 +f 7387//7387 9057//9057 7386//7386 +f 7396//7396 7387//7387 9055//9055 +f 7387//7387 7388//7388 9055//9055 +f 7387//7387 7386//7386 7388//7388 +f 7534//7534 7389//7389 7390//7390 +f 7390//7390 7391//7391 7534//7534 +f 7397//7397 7392//7392 7534//7534 +f 7534//7534 7391//7391 7397//7397 +f 7387//7387 7396//7396 7397//7397 +f 7397//7397 7391//7391 7387//7387 +f 7390//7390 7385//7385 7387//7387 +f 7387//7387 7391//7391 7390//7390 +f 7345//7345 7342//7342 7527//7527 +f 7527//7527 7395//7395 7345//7345 +f 7393//7393 7394//7394 7345//7345 +f 7345//7345 7395//7395 7393//7393 +f 7397//7397 7396//7396 7393//7393 +f 7393//7393 7395//7395 7397//7397 +f 7527//7527 7392//7392 7397//7397 +f 7397//7397 7395//7395 7527//7527 +f 7341//7341 9060//9060 9059//9059 +f 7341//7341 7398//7398 9060//9060 +f 7398//7398 9061//9061 9060//9060 +f 7398//7398 9062//9062 9061//9061 +f 7393//7393 7396//7396 7399//7399 +f 7396//7396 9055//9055 7399//7399 +f 7398//7398 7393//7393 9062//9062 +f 7393//7393 7399//7399 9062//9062 +f 7341//7341 7394//7394 7393//7393 +f 7393//7393 7398//7398 7341//7341 +f 7476//7476 7539//7539 7542//7542 +f 7542//7542 7404//7404 7476//7476 +f 7404//7404 7477//7477 7476//7476 +f 7407//7407 7405//7405 7404//7404 +f 7542//7542 7541//7541 7407//7407 +f 7407//7407 7404//7404 7542//7542 +f 7472//7472 9005//9005 7469//7469 +f 7472//7472 7403//7403 9005//9005 +f 7403//7403 9006//9006 9005//9005 +f 7402//7402 7409//7409 7401//7401 +f 7409//7409 7400//7400 7401//7401 +f 7403//7403 7402//7402 9006//9006 +f 7402//7402 7401//7401 9006//9006 +f 7404//7404 7405//7405 7402//7402 +f 7402//7402 7403//7403 7404//7404 +f 7472//7472 7477//7477 7404//7404 +f 7404//7404 7403//7403 7472//7472 +f 7408//7408 7406//7406 7370//7370 +f 7402//7402 7405//7405 7408//7408 +f 7408//7408 7370//7370 7402//7402 +f 7365//7365 7409//7409 7402//7402 +f 7402//7402 7370//7370 7365//7365 +f 7407//7407 7541//7541 7514//7514 +f 7514//7514 7406//7406 7407//7407 +f 7408//7408 7405//7405 7407//7407 +f 7407//7407 7406//7406 7408//7408 +f 7409//7409 7410//7410 7400//7400 +f 7409//7409 7365//7365 7410//7410 +f 7365//7365 9007//9007 7410//7410 +f 7420//7420 7446//7446 7411//7411 +f 7446//7446 9035//9035 7411//7411 +f 7415//7415 7420//7420 7412//7412 +f 7420//7420 7411//7411 7412//7412 +f 7414//7414 7413//7413 7420//7420 +f 7420//7420 7415//7415 7414//7414 +f 7414//7414 9031//9031 9032//9032 +f 7414//7414 7415//7415 9031//9031 +f 7415//7415 9034//9034 9031//9031 +f 7415//7415 7412//7412 9034//9034 +f 7417//7417 7416//7416 7431//7431 +f 7431//7431 7418//7418 7417//7417 +f 7417//7417 9028//9028 9024//9024 +f 7417//7417 7418//7418 9028//9028 +f 7418//7418 7419//7419 9028//9028 +f 7414//7414 9032//9032 9029//9029 +f 7418//7418 7414//7414 7419//7419 +f 7414//7414 9029//9029 7419//7419 +f 7431//7431 7413//7413 7414//7414 +f 7414//7414 7418//7418 7431//7431 +f 7450//7450 7446//7446 7420//7420 +f 7420//7420 7422//7422 7450//7450 +f 7423//7423 7421//7421 7450//7450 +f 7450//7450 7422//7422 7423//7423 +f 7432//7432 7428//7428 7423//7423 +f 7423//7423 7422//7422 7432//7432 +f 7420//7420 7413//7413 7432//7432 +f 7432//7432 7422//7422 7420//7420 +f 7423//7423 7428//7428 7427//7427 +f 7427//7427 7824//7824 7423//7423 +f 7838//7838 7421//7421 7423//7423 +f 7423//7423 7824//7824 7838//7838 +f 7429//7429 7424//7424 7425//7425 +f 7424//7424 8501//8501 7425//7425 +f 7823//7823 7429//7429 7426//7426 +f 7429//7429 7425//7425 7426//7426 +f 7427//7427 7428//7428 7429//7429 +f 7429//7429 7823//7823 7427//7427 +f 7431//7431 7416//7416 7433//7433 +f 7433//7433 7430//7430 7431//7431 +f 7432//7432 7413//7413 7431//7431 +f 7431//7431 7430//7430 7432//7432 +f 7429//7429 7428//7428 7432//7432 +f 7432//7432 7430//7430 7429//7429 +f 7433//7433 7424//7424 7429//7429 +f 7429//7429 7430//7430 7433//7433 +f 7446//7446 7434//7434 9035//9035 +f 7434//7434 9036//9036 9035//9035 +f 7434//7434 7435//7435 9036//9036 +f 7434//7434 7449//7449 9033//9033 +f 7434//7434 9033//9033 7435//7435 +f 7921//7921 7897//7897 7436//7436 +f 7897//7897 9025//9025 7436//7436 +f 7921//7921 7437//7437 7897//7897 +f 7438//7438 7445//7445 7437//7437 +f 7438//7438 7437//7437 9026//9026 +f 7437//7437 9027//9027 9026//9026 +f 7438//7438 9030//9030 7448//7448 +f 7438//7438 9026//9026 9030//9030 +f 7926//7926 7440//7440 7904//7904 +f 7439//7439 7440//7440 7919//7919 +f 7441//7441 7442//7442 7919//7919 +f 7919//7919 7915//7915 7441//7441 +f 7437//7437 7445//7445 7441//7441 +f 7441//7441 7915//7915 7437//7437 +f 7443//7443 7897//7897 7437//7437 +f 7443//7443 7920//7920 7897//7897 +f 7842//7842 7444//7444 7838//7838 +f 7451//7451 7421//7421 7838//7838 +f 7838//7838 7444//7444 7451//7451 +f 7441//7441 7445//7445 7451//7451 +f 7451//7451 7444//7444 7441//7441 +f 7842//7842 7442//7442 7441//7441 +f 7441//7441 7444//7444 7842//7842 +f 7434//7434 7446//7446 7450//7450 +f 7450//7450 7447//7447 7434//7434 +f 7434//7434 7438//7438 7449//7449 +f 7438//7438 7448//7448 7449//7449 +f 7434//7434 7447//7447 7438//7438 +f 7451//7451 7445//7445 7438//7438 +f 7438//7438 7447//7447 7451//7451 +f 7450//7450 7421//7421 7451//7451 +f 7451//7451 7447//7447 7450//7450 +f 7862//7862 7861//7861 7452//7452 +f 7452//7452 7861//7861 7866//7866 +f 7858//7858 7454//7454 7857//7857 +f 7454//7454 7453//7453 7857//7857 +f 7454//7454 7858//7858 7457//7457 +f 7457//7457 7858//7858 7862//7862 +f 7457//7457 7862//7862 7455//7455 +f 7455//7455 7456//7456 7457//7457 +f 7457//7457 7456//7456 7454//7454 +f 7452//7452 7866//7866 7479//7479 +f 7455//7455 7862//7862 7452//7452 +f 7433//7433 7416//7416 7643//7643 +f 7643//7643 7461//7461 7433//7433 +f 7458//7458 7424//7424 7433//7433 +f 7433//7433 7461//7461 7458//7458 +f 7459//7459 7462//7462 7458//7458 +f 7458//7458 7461//7461 7459//7459 +f 7643//7643 7460//7460 7459//7459 +f 7459//7459 7461//7461 7643//7643 +f 7462//7462 7872//7872 7458//7458 +f 7424//7424 7458//7458 8501//8501 +f 7458//7458 8502//8502 8501//8501 +f 7458//7458 7872//7872 8502//8502 +f 7872//7872 8500//8500 8502//8502 +f 7872//7872 7462//7462 8499//8499 +f 7462//7462 8495//8495 8499//8499 +f 7462//7462 7556//7556 8495//8495 +f 7556//7556 8496//8496 8495//8495 +f 7634//7634 7463//7463 7556//7556 +f 7459//7459 7460//7460 7634//7634 +f 7634//7634 7556//7556 7459//7459 +f 7556//7556 7462//7462 7459//7459 +f 7648//7648 7416//7416 7417//7417 +f 7648//7648 7417//7417 7464//7464 +f 7417//7417 7465//7465 7464//7464 +f 7646//7646 7648//7648 9023//9023 +f 7648//7648 9022//9022 9023//9023 +f 7648//7648 7464//7464 9022//9022 +f 7417//7417 9024//9024 7466//7466 +f 7417//7417 7466//7466 7465//7465 +f 7641//7641 7467//7467 7639//7639 +f 7641//7641 9016//9016 7467//7467 +f 7641//7641 7646//7646 9017//9017 +f 7646//7646 9023//9023 9017//9017 +f 7641//7641 9017//9017 9016//9016 +f 7468//7468 9002//9002 9001//9001 +f 7468//7468 7481//7481 9002//9002 +f 7472//7472 7469//7469 7470//7470 +f 7471//7471 7472//7472 9004//9004 +f 7472//7472 7470//7470 9004//9004 +f 7478//7478 7477//7477 7472//7472 +f 7472//7472 7471//7471 7478//7478 +f 7478//7478 7471//7471 7482//7482 +f 7482//7482 7474//7474 7473//7473 +f 7482//7482 7471//7471 7474//7474 +f 7471//7471 9004//9004 7474//7474 +f 7475//7475 7539//7539 7476//7476 +f 7564//7564 7475//7475 7478//7478 +f 7476//7476 7477//7477 7478//7478 +f 7478//7478 7475//7475 7476//7476 +f 7572//7572 7479//7479 7560//7560 +f 7480//7480 7468//7468 7572//7572 +f 7572//7572 7560//7560 7480//7480 +f 7564//7564 7478//7478 7480//7480 +f 7480//7480 7560//7560 7564//7564 +f 7468//7468 7480//7480 7481//7481 +f 7480//7480 7483//7483 7481//7481 +f 7480//7480 7482//7482 7483//7483 +f 7482//7482 7473//7473 7483//7483 +f 7480//7480 7478//7478 7482//7482 +f 7778//7778 7780//7780 7485//7485 +f 7489//7489 7781//7781 7778//7778 +f 7484//7484 7487//7487 7489//7489 +f 7489//7489 7778//7778 7484//7484 +f 7485//7485 7525//7525 7484//7484 +f 7484//7484 7778//7778 7485//7485 +f 7486//7486 6303//6303 7777//7777 +f 7777//7777 7488//7488 7486//7486 +f 7494//7494 7490//7490 7486//7486 +f 7486//7486 7488//7488 7494//7494 +f 7489//7489 7487//7487 7494//7494 +f 7494//7494 7488//7488 7489//7489 +f 7777//7777 7781//7781 7489//7489 +f 7489//7489 7488//7488 7777//7777 +f 7492//7492 7197//7197 7490//7490 +f 7490//7490 7493//7493 7492//7492 +f 7491//7491 7343//7343 7492//7492 +f 7492//7492 7493//7493 7491//7491 +f 7494//7494 7487//7487 7491//7491 +f 7491//7491 7493//7493 7494//7494 +f 7494//7494 7493//7493 7490//7490 +f 7528//7528 7342//7342 7495//7495 +f 7495//7495 7496//7496 7528//7528 +f 7484//7484 7525//7525 7528//7528 +f 7528//7528 7496//7496 7484//7484 +f 7491//7491 7487//7487 7484//7484 +f 7484//7484 7496//7496 7491//7491 +f 7495//7495 7343//7343 7491//7491 +f 7491//7491 7496//7496 7495//7495 +f 7498//7498 7497//7497 7499//7499 +f 7510//7510 7511//7511 7498//7498 +f 7498//7498 7499//7499 7510//7510 +f 7510//7510 7499//7499 7500//7500 +f 7503//7503 7501//7501 7522//7522 +f 7501//7501 7502//7502 7522//7522 +f 7498//7498 7511//7511 7501//7501 +f 7503//7503 7497//7497 7498//7498 +f 7498//7498 7501//7501 7503//7503 +f 7507//7507 7504//7504 7502//7502 +f 7502//7502 7505//7505 7507//7507 +f 7506//7506 7512//7512 7507//7507 +f 7507//7507 7505//7505 7506//7506 +f 7501//7501 7511//7511 7506//7506 +f 7506//7506 7505//7505 7501//7501 +f 7501//7501 7505//7505 7502//7502 +f 7508//7508 7510//7510 7509//7509 +f 7510//7510 7500//7500 7509//7509 +f 7506//7506 7511//7511 7510//7510 +f 7508//7508 7512//7512 7506//7506 +f 7506//7506 7510//7510 7508//7508 +f 7513//7513 7800//7800 7520//7520 +f 7520//7520 7800//7800 7799//7799 +f 7515//7515 7514//7514 7516//7516 +f 7517//7517 7366//7366 7515//7515 +f 7515//7515 7516//7516 7517//7517 +f 7816//7816 7513//7513 7517//7517 +f 7517//7517 7516//7516 7816//7816 +f 7518//7518 7683//7683 7519//7519 +f 7519//7519 7520//7520 7518//7518 +f 7520//7520 7799//7799 7518//7518 +f 7517//7517 7513//7513 7520//7520 +f 7519//7519 7366//7366 7517//7517 +f 7517//7517 7520//7520 7519//7519 +f 7521//7521 7679//7679 7805//7805 +f 7504//7504 7522//7522 7502//7502 +f 7521//7521 7805//7805 7522//7522 +f 7521//7521 7522//7522 7504//7504 +f 7808//7808 7807//7807 7523//7523 +f 7533//7533 7529//7529 7524//7524 +f 7524//7524 7808//7808 7533//7533 +f 7533//7533 7808//7808 7523//7523 +f 7485//7485 7780//7780 7526//7526 +f 7530//7530 7525//7525 7485//7485 +f 7485//7485 7526//7526 7530//7530 +f 7524//7524 7529//7529 7530//7530 +f 7530//7530 7526//7526 7524//7524 +f 7527//7527 7342//7342 7528//7528 +f 7528//7528 7531//7531 7527//7527 +f 7532//7532 7392//7392 7527//7527 +f 7527//7527 7531//7531 7532//7532 +f 7530//7530 7529//7529 7532//7532 +f 7532//7532 7531//7531 7530//7530 +f 7528//7528 7525//7525 7530//7530 +f 7530//7530 7531//7531 7528//7528 +f 7534//7534 7533//7533 7389//7389 +f 7533//7533 7523//7523 7389//7389 +f 7532//7532 7529//7529 7533//7533 +f 7534//7534 7392//7392 7532//7532 +f 7532//7532 7533//7533 7534//7534 +f 7816//7816 7545//7545 7817//7817 +f 7535//7535 7536//7536 7817//7817 +f 7817//7817 7545//7545 7535//7535 +f 7538//7538 7537//7537 7814//7814 +f 7543//7543 7561//7561 7538//7538 +f 7538//7538 7814//7814 7543//7543 +f 7543//7543 7814//7814 7535//7535 +f 7814//7814 7536//7536 7535//7535 +f 7542//7542 7539//7539 7562//7562 +f 7562//7562 7544//7544 7542//7542 +f 7540//7540 7541//7541 7542//7542 +f 7542//7542 7544//7544 7540//7540 +f 7543//7543 7535//7535 7540//7540 +f 7540//7540 7544//7544 7543//7543 +f 7562//7562 7561//7561 7543//7543 +f 7543//7543 7544//7544 7562//7562 +f 7514//7514 7545//7545 7516//7516 +f 7545//7545 7816//7816 7516//7516 +f 7540//7540 7535//7535 7545//7545 +f 7514//7514 7541//7541 7540//7540 +f 7540//7540 7545//7545 7514//7514 +f 7550//7550 7547//7547 7546//7546 +f 7547//7547 8486//8486 7546//7546 +f 7552//7552 7550//7550 7548//7548 +f 7550//7550 7546//7546 7548//7548 +f 7553//7553 7549//7549 7550//7550 +f 7550//7550 7552//7552 7553//7553 +f 7553//7553 8491//8491 7551//7551 +f 7553//7553 7552//7552 8491//8491 +f 7552//7552 8489//8489 8491//8491 +f 7552//7552 7548//7548 8489//8489 +f 7556//7556 7463//7463 7656//7656 +f 7656//7656 7554//7554 7556//7556 +f 7554//7554 7553//7553 8531//8531 +f 7553//7553 7551//7551 8531//8531 +f 7656//7656 7549//7549 7553//7553 +f 7553//7553 7554//7554 7656//7656 +f 7554//7554 8531//8531 7555//7555 +f 7556//7556 7554//7554 7557//7557 +f 7554//7554 7555//7555 7557//7557 +f 7559//7559 7537//7537 7538//7538 +f 7538//7538 7558//7558 7559//7559 +f 7559//7559 7558//7558 7563//7563 +f 7538//7538 7561//7561 7558//7558 +f 7865//7865 7559//7559 7563//7563 +f 7479//7479 7865//7865 7560//7560 +f 7563//7563 7564//7564 7560//7560 +f 7560//7560 7865//7865 7563//7563 +f 7479//7479 7866//7866 7865//7865 +f 7562//7562 7539//7539 7475//7475 +f 7558//7558 7561//7561 7562//7562 +f 7562//7562 7475//7475 7558//7558 +f 7558//7558 7475//7475 7563//7563 +f 7475//7475 7564//7564 7563//7563 +f 7565//7565 7566//7566 8998//8998 +f 7565//7565 7573//7573 7566//7566 +f 7573//7573 7567//7567 7566//7566 +f 7455//7455 7568//7568 9000//9000 +f 7573//7573 7455//7455 7567//7567 +f 7455//7455 9000//9000 7567//7567 +f 7571//7571 7468//7468 7569//7569 +f 7468//7468 9001//9001 7569//7569 +f 7455//7455 7570//7570 7568//7568 +f 7455//7455 7571//7571 7570//7570 +f 7571//7571 7569//7569 7570//7570 +f 7452//7452 7479//7479 7572//7572 +f 7572//7572 7571//7571 7452//7452 +f 7452//7452 7571//7571 7455//7455 +f 7572//7572 7468//7468 7571//7571 +f 3612//3612 7454//7454 7456//7456 +f 7456//7456 7573//7573 3612//3612 +f 7573//7573 7565//7565 3612//3612 +f 7455//7455 7573//7573 7456//7456 +f 7574//7574 7619//7619 7594//7594 +f 7594//7594 7576//7576 7574//7574 +f 7578//7578 7622//7622 7574//7574 +f 7574//7574 7576//7576 7578//7578 +f 7586//7586 7575//7575 7578//7578 +f 7578//7578 7576//7576 7586//7586 +f 7594//7594 7577//7577 7586//7586 +f 7586//7586 7576//7576 7594//7594 +f 7655//7655 7614//7614 7580//7580 +f 7580//7580 7579//7579 7655//7655 +f 7584//7584 7583//7583 7655//7655 +f 7655//7655 7579//7579 7584//7584 +f 7578//7578 7575//7575 7584//7584 +f 7584//7584 7579//7579 7578//7578 +f 7580//7580 7622//7622 7578//7578 +f 7578//7578 7579//7579 7580//7580 +f 7854//7854 7874//7874 7581//7581 +f 7581//7581 7582//7582 7854//7854 +f 7854//7854 7582//7582 7587//7587 +f 7584//7584 7575//7575 7587//7587 +f 7587//7587 7582//7582 7584//7584 +f 7581//7581 7583//7583 7584//7584 +f 7584//7584 7582//7582 7581//7581 +f 7577//7577 7585//7585 7586//7586 +f 7587//7587 7575//7575 7586//7586 +f 7586//7586 7585//7585 7587//7587 +f 7585//7585 7854//7854 7587//7587 +f 7588//7588 7600//7600 7589//7589 +f 7590//7590 7593//7593 7591//7591 +f 7591//7591 7588//7588 7590//7590 +f 7589//7589 7592//7592 7590//7590 +f 7590//7590 7588//7588 7589//7589 +f 7591//7591 7593//7593 7596//7596 +f 7596//7596 7612//7612 7591//7591 +f 7593//7593 7795//7795 7796//7796 +f 7593//7593 7796//7796 7596//7596 +f 7592//7592 7793//7793 7590//7590 +f 7590//7590 7793//7793 7593//7593 +f 7793//7793 7795//7795 7593//7593 +f 7594//7594 7619//7619 7604//7604 +f 7604//7604 7595//7595 7594//7594 +f 7598//7598 7577//7577 7594//7594 +f 7594//7594 7595//7595 7598//7598 +f 7598//7598 7595//7595 7596//7596 +f 7604//7604 7612//7612 7596//7596 +f 7596//7596 7595//7595 7604//7604 +f 7577//7577 7597//7597 7809//7809 +f 7809//7809 7597//7597 7796//7796 +f 7598//7598 7596//7596 7796//7796 +f 7796//7796 7597//7597 7598//7598 +f 7598//7598 7597//7597 7577//7577 +f 7599//7599 7591//7591 7612//7612 +f 7612//7612 7613//7613 7599//7599 +f 7599//7599 7613//7613 9103//9103 +f 7613//7613 9117//9117 9103//9103 +f 7690//7690 7600//7600 7588//7588 +f 7588//7588 7603//7603 7690//7690 +f 7690//7690 7601//7601 9107//9107 +f 7690//7690 7603//7603 7601//7601 +f 7603//7603 7602//7602 7601//7601 +f 7599//7599 9103//9103 9102//9102 +f 7603//7603 7599//7599 7602//7602 +f 7599//7599 9102//9102 7602//7602 +f 7588//7588 7591//7591 7599//7599 +f 7599//7599 7603//7603 7588//7588 +f 7613//7613 9105//9105 9117//9117 +f 7604//7604 7619//7619 7618//7618 +f 7618//7618 7605//7605 7604//7604 +f 7607//7607 7612//7612 7604//7604 +f 7604//7604 7605//7605 7607//7607 +f 7607//7607 7608//7608 7606//7606 +f 7607//7607 7605//7605 7608//7608 +f 7605//7605 9099//9099 7608//7608 +f 7618//7618 7609//7609 7610//7610 +f 7605//7605 7618//7618 9099//9099 +f 7618//7618 7610//7610 9099//9099 +f 7607//7607 7606//7606 7611//7611 +f 7613//7613 7607//7607 9106//9106 +f 7607//7607 7611//7611 9106//9106 +f 7607//7607 7613//7613 7612//7612 +f 7613//7613 9106//9106 9105//9105 +f 7580//7580 7614//7614 7615//7615 +f 7615//7615 7617//7617 7580//7580 +f 7623//7623 7622//7622 7580//7580 +f 7580//7580 7617//7617 7623//7623 +f 7616//7616 7621//7621 7623//7623 +f 7623//7623 7617//7617 7616//7616 +f 7615//7615 7642//7642 7616//7616 +f 7616//7616 7617//7617 7615//7615 +f 7618//7618 7619//7619 7574//7574 +f 7574//7574 7624//7624 7618//7618 +f 7618//7618 7620//7620 7609//7609 +f 7620//7620 9101//9101 7609//7609 +f 7618//7618 7624//7624 7620//7620 +f 7623//7623 7621//7621 7620//7620 +f 7620//7620 7624//7624 7623//7623 +f 7574//7574 7622//7622 7623//7623 +f 7623//7623 7624//7624 7574//7574 +f 7620//7620 7621//7621 7626//7626 +f 7621//7621 7625//7625 7626//7626 +f 7620//7620 7626//7626 7627//7627 +f 7620//7620 9012//9012 9101//9101 +f 7620//7620 7627//7627 9012//9012 +f 7628//7628 9015//9015 9013//9013 +f 7630//7630 7628//7628 7629//7629 +f 7628//7628 9013//9013 7629//7629 +f 7616//7616 7642//7642 7628//7628 +f 7628//7628 7630//7630 7616//7616 +f 7621//7621 7616//7616 7625//7625 +f 7616//7616 9098//9098 7625//7625 +f 7616//7616 7630//7630 9098//9098 +f 7630//7630 7631//7631 9098//9098 +f 7630//7630 7629//7629 7631//7631 +f 7658//7658 7463//7463 7634//7634 +f 7634//7634 7635//7635 7658//7658 +f 7632//7632 7653//7653 7658//7658 +f 7658//7658 7635//7635 7632//7632 +f 7633//7633 7644//7644 7632//7632 +f 7632//7632 7635//7635 7633//7633 +f 7634//7634 7460//7460 7633//7633 +f 7633//7633 7635//7635 7634//7634 +f 7615//7615 7614//7614 7638//7638 +f 7638//7638 7636//7636 7615//7615 +f 7637//7637 7642//7642 7615//7615 +f 7615//7615 7636//7636 7637//7637 +f 7632//7632 7644//7644 7637//7637 +f 7637//7637 7636//7636 7632//7632 +f 7638//7638 7653//7653 7632//7632 +f 7632//7632 7636//7636 7638//7638 +f 7628//7628 7641//7641 9015//9015 +f 7641//7641 7639//7639 9015//9015 +f 7628//7628 7640//7640 7641//7641 +f 7647//7647 7646//7646 7641//7641 +f 7641//7641 7640//7640 7647//7647 +f 7637//7637 7644//7644 7647//7647 +f 7647//7647 7640//7640 7637//7637 +f 7628//7628 7642//7642 7637//7637 +f 7637//7637 7640//7640 7628//7628 +f 7643//7643 7416//7416 7648//7648 +f 7648//7648 7645//7645 7643//7643 +f 7633//7633 7460//7460 7643//7643 +f 7643//7643 7645//7645 7633//7633 +f 7647//7647 7644//7644 7633//7633 +f 7633//7633 7645//7645 7647//7647 +f 7648//7648 7646//7646 7647//7647 +f 7647//7647 7645//7645 7648//7648 +f 7581//7581 7874//7874 7873//7873 +f 7873//7873 7650//7650 7581//7581 +f 7654//7654 7583//7583 7581//7581 +f 7581//7581 7650//7650 7654//7654 +f 7649//7649 7661//7661 7654//7654 +f 7654//7654 7650//7650 7649//7649 +f 7873//7873 7876//7876 7649//7649 +f 7649//7649 7650//7650 7873//7873 +f 7638//7638 7614//7614 7655//7655 +f 7655//7655 7651//7651 7638//7638 +f 7652//7652 7653//7653 7638//7638 +f 7638//7638 7651//7651 7652//7652 +f 7654//7654 7661//7661 7652//7652 +f 7652//7652 7651//7651 7654//7654 +f 7655//7655 7583//7583 7654//7654 +f 7654//7654 7651//7651 7655//7655 +f 7656//7656 7463//7463 7658//7658 +f 7658//7658 7659//7659 7656//7656 +f 7657//7657 7549//7549 7656//7656 +f 7656//7656 7659//7659 7657//7657 +f 7652//7652 7661//7661 7657//7657 +f 7657//7657 7659//7659 7652//7652 +f 7658//7658 7653//7653 7652//7652 +f 7652//7652 7659//7659 7658//7658 +f 7660//7660 7547//7547 7550//7550 +f 7550//7550 7662//7662 7660//7660 +f 7649//7649 7876//7876 7660//7660 +f 7660//7660 7662//7662 7649//7649 +f 7657//7657 7661//7661 7649//7649 +f 7649//7649 7662//7662 7657//7657 +f 7550//7550 7549//7549 7657//7657 +f 7657//7657 7662//7662 7550//7550 +f 7663//7663 7664//7664 7665//7665 +f 7664//7664 9113//9113 7665//7665 +f 7663//7663 7665//7665 7668//7668 +f 7674//7674 7663//7663 7666//7666 +f 7663//7663 7667//7667 7666//7666 +f 7663//7663 7668//7668 7667//7667 +f 7673//7673 7672//7672 7377//7377 +f 7672//7672 9108//9108 7377//7377 +f 7672//7672 9109//9109 9108//9108 +f 7672//7672 7674//7674 7669//7669 +f 7674//7674 7666//7666 7669//7669 +f 7672//7672 7669//7669 9109//9109 +f 7671//7671 7683//7683 7682//7682 +f 7682//7682 7670//7670 7671//7671 +f 7684//7684 7670//7670 7682//7682 +f 7672//7672 7673//7673 7371//7371 +f 7371//7371 7675//7675 7672//7672 +f 7676//7676 7674//7674 7672//7672 +f 7672//7672 7675//7675 7676//7676 +f 7670//7670 7684//7684 7676//7676 +f 7676//7676 7675//7675 7670//7670 +f 7371//7371 7671//7671 7670//7670 +f 7670//7670 7675//7675 7371//7371 +f 7677//7677 7664//7664 7663//7663 +f 7676//7676 7383//7383 7677//7677 +f 7663//7663 7674//7674 7676//7676 +f 7676//7676 7677//7677 7663//7663 +f 7678//7678 7679//7679 7383//7383 +f 7383//7383 7676//7676 7678//7678 +f 7678//7678 7676//7676 7684//7684 +f 7680//7680 7681//7681 7799//7799 +f 7886//7886 7681//7681 7680//7680 +f 7682//7682 7683//7683 7518//7518 +f 7518//7518 7681//7681 7682//7682 +f 7886//7886 7684//7684 7682//7682 +f 7682//7682 7681//7681 7886//7886 +f 7518//7518 7799//7799 7681//7681 +f 7678//7678 7883//7883 7679//7679 +f 7678//7678 7684//7684 7886//7886 +f 7886//7886 7883//7883 7678//7678 +f 7523//7523 7807//7807 7889//7889 +f 7389//7389 7889//7889 7692//7692 +f 7692//7692 7889//7889 7685//7685 +f 7889//7889 7686//7686 7685//7685 +f 7389//7389 7523//7523 7889//7889 +f 7589//7589 7600//7600 7687//7687 +f 7687//7687 7688//7688 7589//7589 +f 7688//7688 7592//7592 7589//7589 +f 7685//7685 7686//7686 7688//7688 +f 7685//7685 7688//7688 7687//7687 +f 7691//7691 9110//9110 9111//9111 +f 7695//7695 7691//7691 7689//7689 +f 7691//7691 9112//9112 7689//7689 +f 7691//7691 9111//9111 9112//9112 +f 7687//7687 7600//7600 7690//7690 +f 7694//7694 7685//7685 7687//7687 +f 7691//7691 7695//7695 7694//7694 +f 7694//7694 7687//7687 7691//7691 +f 7691//7691 7690//7690 9110//9110 +f 7690//7690 9107//9107 9110//9110 +f 7691//7691 7687//7687 7690//7690 +f 7390//7390 7389//7389 7692//7692 +f 7693//7693 7385//7385 7390//7390 +f 7390//7390 7692//7692 7693//7693 +f 7694//7694 7695//7695 7693//7693 +f 7693//7693 7692//7692 7694//7694 +f 7692//7692 7685//7685 7694//7694 +f 7693//7693 7695//7695 9116//9116 +f 7695//7695 7689//7689 9116//9116 +f 7693//7693 9116//9116 9115//9115 +f 7385//7385 7693//7693 7696//7696 +f 7693//7693 9054//9054 7696//7696 +f 7693//7693 9115//9115 9054//9054 +f 6220//6220 7697//7697 8136//8136 +f 7697//7697 7698//7698 8136//8136 +f 7697//7697 8137//8137 7698//7698 +f 6220//6220 8136//8136 8135//8135 +f 7706//7706 7707//7707 8161//8161 +f 7706//7706 8161//8161 8163//8163 +f 7701//7701 7709//7709 7706//7706 +f 7701//7701 7706//7706 7699//7699 +f 7706//7706 8163//8163 7699//7699 +f 7708//7708 7701//7701 8164//8164 +f 7701//7701 7700//7700 8164//8164 +f 7701//7701 7699//7699 7700//7700 +f 7705//7705 8155//8155 8154//8154 +f 7702//7702 7705//7705 8158//8158 +f 7705//7705 8154//8154 8158//8158 +f 7703//7703 7704//7704 7705//7705 +f 7705//7705 7702//7702 7703//7703 +f 7706//7706 7709//7709 7703//7703 +f 7703//7703 7702//7702 7706//7706 +f 7706//7706 8159//8159 7707//7707 +f 7706//7706 7702//7702 8159//8159 +f 7702//7702 8158//8158 8159//8159 +f 7703//7703 7709//7709 6293//6293 +f 6293//6293 6292//6292 7703//7703 +f 7736//7736 7704//7704 7703//7703 +f 7703//7703 6292//6292 7736//7736 +f 7701//7701 7708//7708 6303//6303 +f 6303//6303 6304//6304 7701//7701 +f 6293//6293 7709//7709 7701//7701 +f 7701//7701 6304//6304 6293//6293 +f 7710//7710 7712//7712 6811//6811 +f 6811//6811 7712//7712 6812//6812 +f 7711//7711 7713//7713 6812//6812 +f 6812//6812 7712//7712 7711//7711 +f 7710//7710 7716//7716 7711//7711 +f 7711//7711 7712//7712 7710//7710 +f 7714//7714 7721//7721 8546//8546 +f 7721//7721 7719//7719 8546//8546 +f 6812//6812 7713//7713 7714//7714 +f 6812//6812 7714//7714 8545//8545 +f 7714//7714 8546//8546 8545//8545 +f 6807//6807 6800//6800 7722//7722 +f 7722//7722 7718//7718 6807//6807 +f 7714//7714 7713//7713 7718//7718 +f 7722//7722 7721//7721 7714//7714 +f 7714//7714 7718//7718 7722//7722 +f 7733//7733 6806//6806 7715//7715 +f 7715//7715 7717//7717 7733//7733 +f 7711//7711 7716//7716 7733//7733 +f 7733//7733 7717//7717 7711//7711 +f 7718//7718 7713//7713 7711//7711 +f 7711//7711 7717//7717 7718//7718 +f 7715//7715 6807//6807 7718//7718 +f 7718//7718 7717//7717 7715//7715 +f 7721//7721 7723//7723 7719//7719 +f 7722//7722 6800//6800 7725//7725 +f 7722//7722 7725//7725 7720//7720 +f 7725//7725 8547//8547 7720//7720 +f 7721//7721 7722//7722 7723//7723 +f 7722//7722 7724//7724 7723//7723 +f 7722//7722 7720//7720 7724//7724 +f 7725//7725 8551//8551 8547//8547 +f 6786//6786 8140//8140 7726//7726 +f 6786//6786 8141//8141 8140//8140 +f 7705//7705 8153//8153 8155//8155 +f 7705//7705 7729//7729 8153//8153 +f 7729//7729 8150//8150 8153//8153 +f 7727//7727 7728//7728 8151//8151 +f 7729//7729 7727//7727 8150//8150 +f 7727//7727 8151//8151 8150//8150 +f 7727//7727 7729//7729 7730//7730 +f 7705//7705 7704//7704 7730//7730 +f 7730//7730 7729//7729 7705//7705 +f 7732//7732 7710//7710 7731//7731 +f 7710//7710 8146//8146 7731//7731 +f 7734//7734 7716//7716 7710//7710 +f 7710//7710 7732//7732 7734//7734 +f 7727//7727 7730//7730 7734//7734 +f 7734//7734 7732//7732 7727//7727 +f 7727//7727 8147//8147 7728//7728 +f 7727//7727 7732//7732 8147//8147 +f 7732//7732 7731//7731 8147//8147 +f 6853//6853 6806//6806 7733//7733 +f 7733//7733 7735//7735 6853//6853 +f 7735//7735 6855//6855 6853//6853 +f 7734//7734 7730//7730 7735//7735 +f 7733//7733 7716//7716 7734//7734 +f 7734//7734 7735//7735 7733//7733 +f 7730//7730 7704//7704 7736//7736 +f 7736//7736 7737//7737 7730//7730 +f 7730//7730 7737//7737 7735//7735 +f 7737//7737 6855//6855 7735//7735 +f 7137//7137 7738//7738 7739//7739 +f 7143//7143 7137//7137 8206//8206 +f 7137//7137 7740//7740 8206//8206 +f 7137//7137 7739//7739 7740//7740 +f 7764//7764 7741//7741 8201//8201 +f 7741//7741 8202//8202 8201//8201 +f 7741//7741 7742//7742 8202//8202 +f 7741//7741 7143//7143 8205//8205 +f 7143//7143 8206//8206 8205//8205 +f 7741//7741 8205//8205 7742//7742 +f 7192//7192 7743//7743 8209//8209 +f 7754//7754 7152//7152 7745//7745 +f 7152//7152 8210//8210 7745//7745 +f 7750//7750 7749//7749 7754//7754 +f 7750//7750 7754//7754 7744//7744 +f 7754//7754 7745//7745 7744//7744 +f 7750//7750 8211//8211 7746//7746 +f 7750//7750 7744//7744 8211//8211 +f 7176//7176 7170//7170 7747//7747 +f 7747//7747 7748//7748 7176//7176 +f 7176//7176 8221//8221 8220//8220 +f 7176//7176 7748//7748 8221//8221 +f 7748//7748 8218//8218 8221//8221 +f 7750//7750 7746//7746 8212//8212 +f 7748//7748 7750//7750 8218//8218 +f 7750//7750 8212//8212 8218//8218 +f 7747//7747 7749//7749 7750//7750 +f 7750//7750 7748//7748 7747//7747 +f 7754//7754 7753//7753 7152//7152 +f 7152//7152 7753//7753 7751//7751 +f 7752//7752 7756//7756 7751//7751 +f 7751//7751 7753//7753 7752//7752 +f 7754//7754 7749//7749 7752//7752 +f 7752//7752 7753//7753 7754//7754 +f 7262//7262 7751//7751 7768//7768 +f 7759//7759 7755//7755 7768//7768 +f 7768//7768 7751//7751 7759//7759 +f 7751//7751 7756//7756 7759//7759 +f 7262//7262 7152//7152 7751//7751 +f 7757//7757 7145//7145 7760//7760 +f 7759//7759 7756//7756 7758//7758 +f 7758//7758 7757//7757 7759//7759 +f 7760//7760 7755//7755 7759//7759 +f 7759//7759 7757//7757 7760//7760 +f 7747//7747 7170//7170 7762//7762 +f 7762//7762 7761//7761 7747//7747 +f 7752//7752 7749//7749 7747//7747 +f 7747//7747 7761//7761 7752//7752 +f 7758//7758 7756//7756 7752//7752 +f 7752//7752 7761//7761 7758//7758 +f 7758//7758 7761//7761 7762//7762 +f 7763//7763 7764//7764 7765//7765 +f 7764//7764 8201//8201 7765//7765 +f 7763//7763 7765//7765 8199//8199 +f 7258//7258 7763//7763 7766//7766 +f 7763//7763 8198//8198 7766//7766 +f 7763//7763 8199//8199 8198//8198 +f 7258//7258 7766//7766 8197//8197 +f 7767//7767 7262//7262 7768//7768 +f 7772//7772 7264//7264 7767//7767 +f 7767//7767 7768//7768 7772//7772 +f 7775//7775 7769//7769 7772//7772 +f 7772//7772 7768//7768 7775//7775 +f 7768//7768 7755//7755 7775//7775 +f 7774//7774 7771//7771 7770//7770 +f 7771//7771 8224//8224 7770//7770 +f 7774//7774 7773//7773 7771//7771 +f 7769//7769 7790//7790 7771//7771 +f 7771//7771 7773//7773 7769//7769 +f 7769//7769 7773//7773 7772//7772 +f 7774//7774 7264//7264 7772//7772 +f 7772//7772 7773//7773 7774//7774 +f 7266//7266 7500//7500 7790//7790 +f 7790//7790 7769//7769 7266//7266 +f 7266//7266 7769//7769 7775//7775 +f 7775//7775 7755//7755 7760//7760 +f 7145//7145 7266//7266 7775//7775 +f 7775//7775 7760//7760 7145//7145 +f 7708//7708 8164//8164 8165//8165 +f 7781//7781 8168//8168 8169//8169 +f 7781//7781 7777//7777 8168//8168 +f 7777//7777 8166//8166 8168//8168 +f 6303//6303 7708//7708 7776//7776 +f 7708//7708 8165//8165 7776//7776 +f 7777//7777 6303//6303 8166//8166 +f 6303//6303 7776//7776 8166//8166 +f 7778//7778 7783//7783 7780//7780 +f 7780//7780 7779//7779 8173//8173 +f 7780//7780 7783//7783 7779//7779 +f 7783//7783 8170//8170 7779//7779 +f 7781//7781 8169//8169 7782//7782 +f 7783//7783 7781//7781 8170//8170 +f 7781//7781 7782//7782 8170//8170 +f 7781//7781 7783//7783 7778//7778 +f 7771//7771 7784//7784 8224//8224 +f 7771//7771 7787//7787 7784//7784 +f 7787//7787 7786//7786 7784//7784 +f 7787//7787 7785//7785 7786//7786 +f 7787//7787 7791//7791 7785//7785 +f 7791//7791 8200//8200 7785//7785 +f 7771//7771 7790//7790 7787//7787 +f 7802//7802 8228//8228 8227//8227 +f 7791//7791 8226//8226 8200//8200 +f 7503//7503 7522//7522 7802//7802 +f 7791//7791 7497//7497 7503//7503 +f 7791//7791 7503//7503 8226//8226 +f 7503//7503 7788//7788 8226//8226 +f 7503//7503 7802//7802 7788//7788 +f 7802//7802 8227//8227 7788//7788 +f 7790//7790 7500//7500 7499//7499 +f 7499//7499 7789//7789 7790//7790 +f 7790//7790 7789//7789 7787//7787 +f 7787//7787 7789//7789 7791//7791 +f 7499//7499 7497//7497 7791//7791 +f 7791//7791 7789//7789 7499//7499 +f 7793//7793 7592//7592 7892//7892 +f 7795//7795 7792//7792 8188//8188 +f 7795//7795 7793//7793 7792//7792 +f 7793//7793 7794//7794 7792//7792 +f 7892//7892 8186//8186 8187//8187 +f 7793//7793 7892//7892 7794//7794 +f 7892//7892 8187//8187 7794//7794 +f 7795//7795 8188//8188 8189//8189 +f 7795//7795 8189//8189 8190//8190 +f 7796//7796 7795//7795 7797//7797 +f 7795//7795 8190//8190 7797//7797 +f 7513//7513 7816//7816 7798//7798 +f 7816//7816 8238//8238 7798//7798 +f 7816//7816 7818//7818 8238//8238 +f 7799//7799 7800//7800 7881//7881 +f 7800//7800 8236//8236 7881//7881 +f 7800//7800 8237//8237 8236//8236 +f 7800//7800 7801//7801 8237//8237 +f 7800//7800 7513//7513 7801//7801 +f 7513//7513 7798//7798 7801//7801 +f 7802//7802 7882//7882 7803//7803 +f 7882//7882 7804//7804 7803//7803 +f 7802//7802 7803//7803 8229//8229 +f 7802//7802 8229//8229 8228//8228 +f 7882//7882 8230//8230 7804//7804 +f 7805//7805 7679//7679 7882//7882 +f 7802//7802 7522//7522 7805//7805 +f 7882//7882 7802//7802 7805//7805 +f 7526//7526 7780//7780 8177//8177 +f 7780//7780 8175//8175 8177//8177 +f 7524//7524 7526//7526 8178//8178 +f 7526//7526 7806//7806 8178//8178 +f 7526//7526 8177//8177 7806//7806 +f 7780//7780 8173//8173 8174//8174 +f 7780//7780 8174//8174 8175//8175 +f 7807//7807 8182//8182 8183//8183 +f 7807//7807 7808//7808 8182//8182 +f 7808//7808 8180//8180 8182//8182 +f 7808//7808 8179//8179 8180//8180 +f 7808//7808 7524//7524 8179//8179 +f 7524//7524 8178//8178 8179//8179 +f 7796//7796 7797//7797 8191//8191 +f 7849//7849 7577//7577 7809//7809 +f 7809//7809 7811//7811 7849//7849 +f 7849//7849 7810//7810 7851//7851 +f 7849//7849 7811//7811 7810//7810 +f 7811//7811 8225//8225 7810//7810 +f 7811//7811 8192//8192 8225//8225 +f 7809//7809 7796//7796 8193//8193 +f 7796//7796 8191//8191 8193//8193 +f 7811//7811 7809//7809 8192//8192 +f 7809//7809 8193//8193 8192//8192 +f 7814//7814 7537//7537 7812//7812 +f 7814//7814 7812//7812 7813//7813 +f 7812//7812 8241//8241 7813//7813 +f 7536//7536 7814//7814 7815//7815 +f 7814//7814 7813//7813 7815//7815 +f 7536//7536 7815//7815 8243//8243 +f 7812//7812 8240//8240 8241//8241 +f 7816//7816 7817//7817 7818//7818 +f 7817//7817 7819//7819 7818//7818 +f 7817//7817 8239//8239 7819//7819 +f 7536//7536 8243//8243 8242//8242 +f 7536//7536 8242//8242 7820//7820 +f 7817//7817 7536//7536 8239//8239 +f 7536//7536 7820//7820 8239//8239 +f 7547//7547 7877//7877 8486//8486 +f 7823//7823 7426//7426 8504//8504 +f 7427//7427 7823//7823 7821//7821 +f 7823//7823 7822//7822 7821//7821 +f 7823//7823 8504//8504 7822//7822 +f 7838//7838 7824//7824 7839//7839 +f 7824//7824 8507//8507 7839//7839 +f 7824//7824 7825//7825 8507//8507 +f 7824//7824 8508//8508 7825//7825 +f 7824//7824 7427//7427 8508//8508 +f 7427//7427 7821//7821 8508//8508 +f 7826//7826 7827//7827 8517//8517 +f 7828//7828 7904//7904 7830//7830 +f 7903//7903 7828//7828 7918//7918 +f 7834//7834 7910//7910 7918//7918 +f 7918//7918 7829//7829 7834//7834 +f 7834//7834 8520//8520 8521//8521 +f 7834//7834 7829//7829 8520//8520 +f 7829//7829 7831//7831 8520//8520 +f 7830//7830 8524//8524 8525//8525 +f 7829//7829 7830//7830 7831//7831 +f 7830//7830 8525//8525 7831//7831 +f 7832//7832 7833//7833 7835//7835 +f 7835//7835 7836//7836 7832//7832 +f 7826//7826 7832//7832 7827//7827 +f 7832//7832 8518//8518 7827//7827 +f 7832//7832 7836//7836 8518//8518 +f 7836//7836 8522//8522 8518//8518 +f 7834//7834 8521//8521 8519//8519 +f 7836//7836 7834//7834 8522//8522 +f 7834//7834 8519//8519 8522//8522 +f 7835//7835 7910//7910 7834//7834 +f 7834//7834 7836//7836 7835//7835 +f 7842//7842 7838//7838 7837//7837 +f 7838//7838 7839//7839 7837//7837 +f 7841//7841 7442//7442 7842//7842 +f 7841//7841 7844//7844 7840//7840 +f 7841//7841 7842//7842 7844//7844 +f 7842//7842 7843//7843 7844//7844 +f 7842//7842 7837//7837 7843//7843 +f 7439//7439 7904//7904 7440//7440 +f 7919//7919 7845//7845 7830//7830 +f 7830//7830 8523//8523 8524//8524 +f 7830//7830 7845//7845 8523//8523 +f 7845//7845 7846//7846 8523//8523 +f 7841//7841 7840//7840 8506//8506 +f 7845//7845 7841//7841 7846//7846 +f 7841//7841 8506//8506 7846//7846 +f 7919//7919 7442//7442 7841//7841 +f 7841//7841 7845//7845 7919//7919 +f 7847//7847 7848//7848 8244//8244 +f 7847//7847 7850//7850 7848//7848 +f 7585//7585 7577//7577 7849//7849 +f 7585//7585 7849//7849 8543//8543 +f 7849//7849 7852//7852 8543//8543 +f 7847//7847 7854//7854 7585//7585 +f 7847//7847 7585//7585 7850//7850 +f 7585//7585 8543//8543 7850//7850 +f 7849//7849 7851//7851 7852//7852 +f 7874//7874 7854//7854 7853//7853 +f 7854//7854 8481//8481 7853//7853 +f 7854//7854 7847//7847 8481//8481 +f 7847//7847 8244//8244 8481//8481 +f 7855//7855 7856//7856 7864//7864 +f 7856//7856 8535//8535 7864//7864 +f 7856//7856 8536//8536 8535//8535 +f 7858//7858 7857//7857 7860//7860 +f 7856//7856 7862//7862 7858//7858 +f 7856//7856 7858//7858 7859//7859 +f 7858//7858 7860//7860 7859//7859 +f 7855//7855 7866//7866 7861//7861 +f 7855//7855 7861//7861 7856//7856 +f 7861//7861 7862//7862 7856//7856 +f 7867//7867 8533//8533 7863//7863 +f 7855//7855 7864//7864 8534//8534 +f 7867//7867 7868//7868 8533//8533 +f 7865//7865 7866//7866 7855//7855 +f 7855//7855 7869//7869 7865//7865 +f 7867//7867 7559//7559 7865//7865 +f 7865//7865 7869//7869 7867//7867 +f 7867//7867 7869//7869 7868//7868 +f 7869//7869 7870//7870 7868//7868 +f 7869//7869 7855//7855 7870//7870 +f 7855//7855 8534//8534 7870//7870 +f 7812//7812 7537//7537 7559//7559 +f 7559//7559 7867//7867 7812//7812 +f 7812//7812 7871//7871 8240//8240 +f 7812//7812 7867//7867 7871//7871 +f 7867//7867 7863//7863 7871//7871 +f 7556//7556 7557//7557 8496//8496 +f 7872//7872 8499//8499 8498//8498 +f 7872//7872 8498//8498 8500//8500 +f 7873//7873 7874//7874 7875//7875 +f 7874//7874 7853//7853 7875//7875 +f 7876//7876 7873//7873 8483//8483 +f 7873//7873 8532//8532 8483//8483 +f 7873//7873 7875//7875 8532//8532 +f 7547//7547 7660//7660 7877//7877 +f 7660//7660 7878//7878 7877//7877 +f 7660//7660 7880//7880 7878//7878 +f 7660//7660 7876//7876 7879//7879 +f 7876//7876 8483//8483 7879//7879 +f 7660//7660 7879//7879 7880//7880 +f 7680//7680 7799//7799 8235//8235 +f 7799//7799 7881//7881 8235//8235 +f 7886//7886 7680//7680 7887//7887 +f 7680//7680 8233//8233 7887//7887 +f 7680//7680 8234//8234 8233//8233 +f 7680//7680 8235//8235 8234//8234 +f 7882//7882 7679//7679 7883//7883 +f 7882//7882 7883//7883 7884//7884 +f 7883//7883 8231//8231 7884//7884 +f 7882//7882 7885//7885 8230//8230 +f 7882//7882 7884//7884 7885//7885 +f 7883//7883 7886//7886 8232//8232 +f 7886//7886 7887//7887 8232//8232 +f 7883//7883 8232//8232 8231//8231 +f 7807//7807 7888//7888 7889//7889 +f 7889//7889 7888//7888 7686//7686 +f 7686//7686 8185//8185 7890//7890 +f 7686//7686 7888//7888 8185//8185 +f 7888//7888 7891//7891 8185//8185 +f 7807//7807 8183//8183 8184//8184 +f 7888//7888 7807//7807 7891//7891 +f 7807//7807 8184//8184 7891//7891 +f 7892//7892 7592//7592 7688//7688 +f 7688//7688 7896//7896 7892//7892 +f 7892//7892 7893//7893 8186//8186 +f 7892//7892 7896//7896 7893//7893 +f 7896//7896 7894//7894 7893//7893 +f 7686//7686 7890//7890 7895//7895 +f 7896//7896 7686//7686 7894//7894 +f 7686//7686 7895//7895 7894//7894 +f 7686//7686 7896//7896 7688//7688 +f 7905//7905 7916//7916 7904//7904 +f 7926//7926 7920//7920 7440//7440 +f 7924//7924 7897//7897 7920//7920 +f 7932//7932 9011//9011 9010//9010 +f 7897//7897 9020//9020 9019//9019 +f 7897//7897 7930//7930 9025//9025 +f 7899//7899 3960//3960 7898//7898 +f 3960//3960 3956//3956 7898//7898 +f 7899//7899 7898//7898 8999//8999 +f 7912//7912 7899//7899 7900//7900 +f 7899//7899 9003//9003 7900//7900 +f 7899//7899 8999//8999 9003//9003 +f 7835//7835 7833//7833 7901//7901 +f 7901//7901 7902//7902 7835//7835 +f 7908//7908 7910//7910 7835//7835 +f 7835//7835 7902//7902 7908//7908 +f 7899//7899 7912//7912 7908//7908 +f 7908//7908 7902//7902 7899//7899 +f 7901//7901 3960//3960 7899//7899 +f 7899//7899 7902//7902 7901//7901 +f 7903//7903 7904//7904 7828//7828 +f 7905//7905 7932//7932 7916//7916 +f 7932//7932 7914//7914 9011//9011 +f 7914//7914 9008//9008 9011//9011 +f 7914//7914 7909//7909 7907//7907 +f 7909//7909 7906//7906 7907//7907 +f 7908//7908 7912//7912 7909//7909 +f 7909//7909 7911//7911 7908//7908 +f 7918//7918 7910//7910 7908//7908 +f 7908//7908 7911//7911 7918//7918 +f 7909//7909 7912//7912 7913//7913 +f 7912//7912 7900//7900 7913//7913 +f 7909//7909 7913//7913 7929//7929 +f 7914//7914 7907//7907 9008//9008 +f 7440//7440 7915//7915 7919//7919 +f 7440//7440 7920//7920 7915//7915 +f 7916//7916 7927//7927 7917//7917 +f 7927//7927 9009//9009 7917//7917 +f 7828//7828 7829//7829 7918//7918 +f 7828//7828 7830//7830 7829//7829 +f 7931//7931 7916//7916 9014//9014 +f 7916//7916 7917//7917 9014//9014 +f 7927//7927 7916//7916 7932//7932 +f 7923//7923 7932//7932 7905//7905 +f 7925//7925 7918//7918 7911//7911 +f 7439//7439 7830//7830 7904//7904 +f 7439//7439 7919//7919 7830//7830 +f 7914//7914 7911//7911 7909//7909 +f 7914//7914 7932//7932 7911//7911 +f 7931//7931 7920//7920 7916//7916 +f 7437//7437 7921//7921 9027//9027 +f 7921//7921 7922//7922 9027//9027 +f 7921//7921 7436//7436 7922//7922 +f 7443//7443 7915//7915 7920//7920 +f 7443//7443 7437//7437 7915//7915 +f 7923//7923 7905//7905 7925//7925 +f 7905//7905 7904//7904 7925//7925 +f 7897//7897 7924//7924 9020//9020 +f 7924//7924 9021//9021 9020//9020 +f 7931//7931 9014//9014 9018//9018 +f 7903//7903 7925//7925 7904//7904 +f 7903//7903 7918//7918 7925//7925 +f 7926//7926 7916//7916 7920//7920 +f 7926//7926 7904//7904 7916//7916 +f 7927//7927 7928//7928 9009//9009 +f 7927//7927 7932//7932 7928//7928 +f 7932//7932 9010//9010 7928//7928 +f 7909//7909 7929//7929 7933//7933 +f 7897//7897 9019//9019 7930//7930 +f 7924//7924 7931//7931 9021//9021 +f 7931//7931 9018//9018 9021//9021 +f 7924//7924 7920//7920 7931//7931 +f 7923//7923 7911//7911 7932//7932 +f 7923//7923 7925//7925 7911//7911 +f 7909//7909 7933//7933 7906//7906 +f 3231//3231 8276//8276 3232//3232 +f 3231//3231 8274//8274 8275//8275 +f 3231//3231 8275//8275 8276//8276 +f 7935//7935 7934//7934 7936//7936 +f 7935//7935 7936//7936 7937//7937 +f 7935//7935 7937//7937 8542//8542 +f 7192//7192 7938//7938 7939//7939 +f 7192//7192 7939//7939 7940//7940 +f 7192//7192 7940//7940 7743//7743 +f 7856//7856 7941//7941 8536//8536 +f 7856//7856 7859//7859 8537//8537 +f 7856//7856 8537//8537 7941//7941 +f 7943//7943 7942//7942 825//825 +f 7942//7942 7943//7943 832//832 +f 934//934 832//832 7943//7943 +f 7943//7943 824//824 934//934 +f 7947//7947 832//832 934//934 +f 7944//7944 7947//7947 934//934 +f 934//934 7945//7945 7944//7944 +f 7947//7947 7944//7944 7946//7946 +f 7946//7946 7950//7950 7947//7947 +f 7950//7950 7948//7948 7947//7947 +f 932//932 7950//7950 7946//7946 +f 7949//7949 7950//7950 932//932 +f 932//932 930//930 7949//7949 +f 7949//7949 928//928 7950//7950 +f 928//928 894//894 7950//7950 +f 7950//7950 894//894 7951//7951 +f 894//894 895//895 7951//7951 +f 895//895 897//897 7951//7951 +f 897//897 1008//1008 7951//7951 +f 7951//7951 1008//1008 7952//7952 +f 1008//1008 7953//7953 7952//7952 +f 927//927 7952//7952 7953//7953 +f 1008//1008 921//921 7953//7953 +f 920//920 7953//7953 921//921 +f 1008//1008 7954//7954 921//921 +f 908//908 921//921 7954//7954 +f 7954//7954 1008//1008 7955//7955 +f 1009//1009 7955//7955 1008//1008 +f 7955//7955 1009//1009 7956//7956 +f 1009//1009 1005//1005 7956//7956 +f 899//899 7956//7956 1005//1005 +f 901//901 7956//7956 899//899 +f 7957//7957 1005//1005 1009//1009 +f 7957//7957 1009//1009 7959//7959 +f 7957//7957 7959//7959 7958//7958 +f 7959//7959 8096//8096 7958//7958 +f 8096//8096 7959//7959 1002//1002 +f 7959//7959 7960//7960 1002//1002 +f 7960//7960 7959//7959 1003//1003 +f 1003//1003 7959//7959 1461//1461 +f 7959//7959 7961//7961 1461//1461 +f 7961//7961 1012//1012 1461//1461 +f 1012//1012 1013//1013 1461//1461 +f 1461//1461 1013//1013 1462//1462 +f 1462//1462 1013//1013 1011//1011 +f 1462//1462 1011//1011 1507//1507 +f 1507//1507 1508//1508 1462//1462 +f 1462//1462 1508//1508 7962//7962 +f 7962//7962 1508//1508 1510//1510 +f 7962//7962 1510//1510 1469//1469 +f 1510//1510 1038//1038 1469//1469 +f 1469//1469 1038//1038 1471//1471 +f 7963//7963 1471//1471 1038//1038 +f 7964//7964 7963//7963 1038//1038 +f 7964//7964 7965//7965 7963//7963 +f 7963//7963 7965//7965 1468//1468 +f 1468//1468 7965//7965 1465//1465 +f 1465//1465 7965//7965 1110//1110 +f 1110//1110 1114//1114 1465//1465 +f 1114//1114 7966//7966 1465//1465 +f 7966//7966 1037//1037 1465//1465 +f 7967//7967 1037//1037 7966//7966 +f 1391//1391 1037//1037 7967//7967 +f 1111//1111 1391//1391 7967//7967 +f 1111//1111 1112//1112 1391//1391 +f 1391//1391 1112//1112 1390//1390 +f 1390//1390 1112//1112 1388//1388 +f 1388//1388 1112//1112 862//862 +f 862//862 7968//7968 1388//1388 +f 7968//7968 7969//7969 1388//1388 +f 1388//1388 7969//7969 1389//1389 +f 7970//7970 1389//1389 7969//7969 +f 7970//7970 7969//7969 1233//1233 +f 1233//1233 1235//1235 7970//7970 +f 1235//1235 1238//1238 7970//7970 +f 1238//1238 1182//1182 7970//7970 +f 1182//1182 1183//1183 7970//7970 +f 7970//7970 1183//1183 1387//1387 +f 1092//1092 1387//1387 1183//1183 +f 1183//1183 1184//1184 1092//1092 +f 1184//1184 7972//7972 1092//1092 +f 1092//1092 7972//7972 7971//7971 +f 7971//7971 7972//7972 7973//7973 +f 7972//7972 7974//7974 7973//7973 +f 7973//7973 7974//7974 7975//7975 +f 7974//7974 7972//7972 7976//7976 +f 7972//7972 8073//8073 7976//7976 +f 8073//8073 8072//8072 7976//7976 +f 8072//8072 1573//1573 7976//7976 +f 7976//7976 1573//1573 1563//1563 +f 1067//1067 7976//7976 1563//1563 +f 7977//7977 1067//1067 1563//1563 +f 7977//7977 1563//1563 1562//1562 +f 7977//7977 1562//1562 1565//1565 +f 7978//7978 7977//7977 1565//1565 +f 7978//7978 1565//1565 7979//7979 +f 7978//7978 7979//7979 7980//7980 +f 1065//1065 7978//7978 7980//7980 +f 1065//1065 7980//7980 616//616 +f 616//616 7980//7980 1559//1559 +f 1065//1065 616//616 1063//1063 +f 1063//1063 616//616 8027//8027 +f 8027//8027 616//616 7981//7981 +f 8027//8027 7981//7981 7982//7982 +f 8027//8027 7982//7982 7983//7983 +f 8027//8027 7983//7983 577//577 +f 7983//7983 593//593 577//577 +f 577//577 593//593 592//592 +f 7984//7984 593//593 7983//7983 +f 593//593 7984//7984 595//595 +f 595//595 7984//7984 597//597 +f 1325//1325 597//597 7984//7984 +f 1325//1325 7984//7984 618//618 +f 1325//1325 618//618 619//619 +f 1325//1325 619//619 1327//1327 +f 1327//1327 619//619 1328//1328 +f 547//547 1328//1328 619//619 +f 1328//1328 547//547 7985//7985 +f 1328//1328 7985//7985 1330//1330 +f 1329//1329 1330//1330 7985//7985 +f 7988//7988 1329//1329 7985//7985 +f 548//548 7988//7988 7985//7985 +f 7987//7987 7988//7988 548//548 +f 7986//7986 7988//7988 7987//7987 +f 7986//7986 8021//8021 7988//7988 +f 546//546 7988//7988 8021//8021 +f 8021//8021 7986//7986 7989//7989 +f 7990//7990 7989//7989 7986//7986 +f 7991//7991 7989//7989 7990//7990 +f 1436//1436 7989//7989 7991//7991 +f 1436//1436 538//538 7989//7989 +f 1436//1436 7992//7992 538//538 +f 1433//1433 7992//7992 1436//1436 +f 1433//1433 1458//1458 7992//7992 +f 1433//1433 7993//7993 1458//1458 +f 1434//1434 7993//7993 1433//1433 +f 1434//1434 1455//1455 7993//7993 +f 1455//1455 1434//1434 510//510 +f 496//496 1455//1455 510//510 +f 496//496 510//510 509//509 +f 496//496 509//509 494//494 +f 7994//7994 494//494 509//509 +f 7995//7995 494//494 7994//7994 +f 494//494 7995//7995 486//486 +f 7995//7995 514//514 486//486 +f 8019//8019 486//486 514//514 +f 8019//8019 514//514 505//505 +f 8019//8019 505//505 7997//7997 +f 8019//8019 7997//7997 483//483 +f 7996//7996 483//483 7997//7997 +f 397//397 7996//7996 7997//7997 +f 397//397 7997//7997 8009//8009 +f 8018//8018 8009//8009 7997//7997 +f 8018//8018 7997//7997 504//504 +f 504//504 7998//7998 8018//8018 +f 385//385 8018//8018 7998//7998 +f 385//385 386//386 8018//8018 +f 386//386 8000//8000 8018//8018 +f 7999//7999 8018//8018 8000//8000 +f 434//434 7999//7999 8000//8000 +f 8000//8000 8001//8001 434//434 +f 8001//8001 432//432 434//434 +f 8018//8018 7999//7999 435//435 +f 435//435 8002//8002 8018//8018 +f 8002//8002 430//430 8018//8018 +f 430//430 8003//8003 8018//8018 +f 8018//8018 8003//8003 8005//8005 +f 8003//8003 327//327 8005//8005 +f 327//327 336//336 8005//8005 +f 336//336 327//327 335//335 +f 327//327 326//326 335//335 +f 335//335 326//326 8004//8004 +f 8006//8006 8018//8018 8005//8005 +f 352//352 8006//8006 8005//8005 +f 353//353 8018//8018 8006//8006 +f 323//323 8003//8003 430//430 +f 323//323 430//430 322//322 +f 8002//8002 428//428 430//430 +f 435//435 8007//8007 8002//8002 +f 386//386 8008//8008 8000//8000 +f 8018//8018 8017//8017 8009//8009 +f 8010//8010 8009//8009 8017//8017 +f 8009//8009 8010//8010 398//398 +f 398//398 8010//8010 8011//8011 +f 394//394 398//398 8011//8011 +f 8012//8012 394//394 8011//8011 +f 407//407 8012//8012 8011//8011 +f 8016//8016 394//394 8012//8012 +f 8012//8012 421//421 8016//8016 +f 421//421 8013//8013 8016//8016 +f 421//421 8012//8012 8015//8015 +f 8012//8012 8014//8014 8015//8015 +f 8015//8015 412//412 421//421 +f 393//393 394//394 8016//8016 +f 8017//8017 8018//8018 347//347 +f 487//487 486//486 8019//8019 +f 8020//8020 8021//8021 7989//7989 +f 8023//8023 1329//1329 7988//7988 +f 7988//7988 8022//8022 8023//8023 +f 1331//1331 8023//8023 8022//8022 +f 597//597 1325//1325 596//596 +f 1063//1063 8027//8027 1062//1062 +f 8024//8024 1062//1062 8027//8027 +f 8025//8025 8024//8024 8027//8027 +f 1359//1359 8025//8025 8027//8027 +f 8026//8026 1359//1359 8027//8027 +f 1364//1364 8026//8026 8027//8027 +f 1365//1365 1364//1364 8027//8027 +f 8027//8027 8028//8028 1365//1365 +f 8035//8035 1365//1365 8028//8028 +f 8035//8035 8028//8028 582//582 +f 582//582 8028//8028 576//576 +f 581//581 8035//8035 582//582 +f 8029//8029 8035//8035 581//581 +f 580//580 8035//8035 8029//8029 +f 579//579 8035//8035 580//580 +f 8031//8031 8035//8035 579//579 +f 8035//8035 8031//8031 8030//8030 +f 8030//8030 8031//8031 8032//8032 +f 8035//8035 8030//8030 8033//8033 +f 8035//8035 8033//8033 1307//1307 +f 8035//8035 1307//1307 8034//8034 +f 8036//8036 8035//8035 8034//8034 +f 8036//8036 8034//8034 1313//1313 +f 1367//1367 8036//8036 1313//1313 +f 1367//1367 1313//1313 308//308 +f 308//308 1313//1313 8037//8037 +f 1367//1367 308//308 8038//8038 +f 802//802 1367//1367 8038//8038 +f 8040//8040 802//802 8038//8038 +f 8039//8039 802//802 8040//8040 +f 8039//8039 1423//1423 802//802 +f 8041//8041 1423//1423 8039//8039 +f 1400//1400 1423//1423 8041//8041 +f 1400//1400 8042//8042 1423//1423 +f 8044//8044 8042//8042 1400//1400 +f 1426//1426 8042//8042 8044//8044 +f 8043//8043 1426//1426 8044//8044 +f 8043//8043 1429//1429 1426//1426 +f 8043//8043 1430//1430 1429//1429 +f 1399//1399 1430//1430 8043//8043 +f 1399//1399 8045//8045 1430//1430 +f 8047//8047 8045//8045 1399//1399 +f 8046//8046 8045//8045 8047//8047 +f 8046//8046 8047//8047 264//264 +f 264//264 8051//8051 8046//8046 +f 8051//8051 264//264 8048//8048 +f 8051//8051 8048//8048 8049//8049 +f 8050//8050 8051//8051 8049//8049 +f 8049//8049 265//265 8050//8050 +f 8050//8050 265//265 8052//8052 +f 8050//8050 8052//8052 277//277 +f 8050//8050 277//277 276//276 +f 8050//8050 276//276 274//274 +f 8050//8050 274//274 8053//8053 +f 770//770 8050//8050 8053//8053 +f 770//770 8053//8053 769//769 +f 8058//8058 769//769 8053//8053 +f 8054//8054 769//769 8058//8058 +f 8054//8054 8058//8058 775//775 +f 8055//8055 775//775 8058//8058 +f 8056//8056 8055//8055 8058//8058 +f 719//719 8056//8056 8058//8058 +f 8057//8057 719//719 8058//8058 +f 8058//8058 8059//8059 8057//8057 +f 674//674 8057//8057 8059//8059 +f 8060//8060 674//674 8059//8059 +f 8059//8059 680//680 8060//8060 +f 8060//8060 673//673 674//674 +f 674//674 742//742 8057//8057 +f 8059//8059 8058//8058 676//676 +f 8058//8058 8061//8061 676//676 +f 676//676 8061//8061 675//675 +f 8058//8058 8066//8066 8061//8061 +f 8061//8061 8066//8066 184//184 +f 8058//8058 8062//8062 8066//8066 +f 8066//8066 8062//8062 8063//8063 +f 8062//8062 228//228 8063//8063 +f 8066//8066 8063//8063 8064//8064 +f 8064//8064 8063//8063 227//227 +f 8066//8066 8064//8064 8065//8065 +f 8065//8065 8064//8064 238//238 +f 8065//8065 238//238 240//240 +f 236//236 8066//8066 8065//8065 +f 8065//8065 235//235 236//236 +f 237//237 236//236 235//235 +f 235//235 8065//8065 241//241 +f 236//236 171//171 8066//8066 +f 8066//8066 171//171 8067//8067 +f 172//172 8067//8067 171//171 +f 8066//8066 8067//8067 183//183 +f 8068//8068 171//171 236//236 +f 678//678 8059//8059 676//676 +f 719//719 8057//8057 727//727 +f 8057//8057 8069//8069 727//727 +f 727//727 8069//8069 740//740 +f 8069//8069 738//738 740//740 +f 740//740 725//725 727//727 +f 745//745 8069//8069 8057//8057 +f 744//744 745//745 8057//8057 +f 745//745 737//737 8069//8069 +f 8070//8070 719//719 727//727 +f 8070//8070 727//727 723//723 +f 8071//8071 8070//8070 723//723 +f 8071//8071 723//723 722//722 +f 8070//8070 8071//8071 718//718 +f 8072//8072 8073//8073 1571//1571 +f 1572//1572 8073//8073 7972//7972 +f 1572//1572 7972//7972 8074//8074 +f 8074//8074 7972//7972 8075//8075 +f 8074//8074 8075//8075 8077//8077 +f 8075//8075 8076//8076 8077//8077 +f 1284//1284 8077//8077 8076//8076 +f 8079//8079 8077//8077 1284//1284 +f 8078//8078 8079//8079 1284//1284 +f 8081//8081 8078//8078 1284//1284 +f 8081//8081 1284//1284 8080//8080 +f 1284//1284 1283//1283 8080//8080 +f 8080//8080 1580//1580 8081//8081 +f 8078//8078 8081//8081 1582//1582 +f 8078//8078 1567//1567 8079//8079 +f 8082//8082 1567//1567 8078//8078 +f 8078//8078 8084//8084 8082//8082 +f 8084//8084 1242//1242 8082//8082 +f 8084//8084 8083//8083 1242//1242 +f 8088//8088 8083//8083 8084//8084 +f 8084//8084 8085//8085 8088//8088 +f 8088//8088 8085//8085 8086//8086 +f 8086//8086 8087//8087 8088//8088 +f 8086//8086 8089//8089 8087//8087 +f 1585//1585 8089//8089 8086//8086 +f 8086//8086 8090//8090 1585//1585 +f 8090//8090 8091//8091 1585//1585 +f 8090//8090 1576//1576 8091//8091 +f 8091//8091 1576//1576 1583//1583 +f 1576//1576 8090//8090 1577//1577 +f 8090//8090 8086//8086 8092//8092 +f 1578//1578 8090//8090 8092//8092 +f 1572//1572 8074//8074 8093//8093 +f 1183//1183 8094//8094 1184//1184 +f 1004//1004 7960//7960 1003//1003 +f 8095//8095 8096//8096 1002//1002 +f 8097//8097 7955//7955 7956//7956 +f 7952//7952 837//837 7951//7951 +f 839//839 7951//7951 837//837 +f 7952//7952 8100//8100 837//837 +f 8098//8098 837//837 8100//8100 +f 8099//8099 8100//8100 7952//7952 +f 7951//7951 8101//8101 7950//7950 +f 852//852 832//832 7947//7947 +f 7942//7942 832//832 835//835 +f 835//835 832//832 831//831 +f 834//834 7942//7942 835//835 +f 8102//8102 8105//8105 5925//5925 +f 5925//5925 8104//8104 8102//8102 +f 5925//5925 8103//8103 8104//8104 +f 8105//8105 8102//8102 8106//8106 +f 8102//8102 8107//8107 8106//8106 +f 8106//8106 8107//8107 5952//5952 +f 8108//8108 5952//5952 8107//8107 +f 5930//5930 8108//8108 8107//8107 +f 8107//8107 5931//5931 5930//5930 +f 5952//5952 8108//8108 5944//5944 +f 8108//8108 8109//8109 5944//5944 +f 5944//5944 8109//8109 8645//8645 +f 8112//8112 8645//8645 8109//8109 +f 6039//6039 8112//8112 8109//8109 +f 8112//8112 8111//8111 8645//8645 +f 8645//8645 8111//8111 6019//6019 +f 8110//8110 6019//6019 8111//8111 +f 6018//6018 8645//8645 6019//6019 +f 8111//8111 8112//8112 6001//6001 +f 6001//6001 8112//8112 6004//6004 +f 8112//8112 8113//8113 6004//6004 +f 8113//8113 8112//8112 6005//6005 +f 6005//6005 8112//8112 6041//6041 +f 8112//8112 6038//6038 6041//6041 +f 8114//8114 6005//6005 6041//6041 +f 6041//6041 5996//5996 8114//8114 +f 8116//8116 5996//5996 6041//6041 +f 8115//8115 8116//8116 6041//6041 +f 5996//5996 8116//8116 5995//5995 +f 8114//8114 8117//8117 6005//6005 +f 6005//6005 8117//8117 5997//5997 +f 6005//6005 5997//5997 8118//8118 +f 6005//6005 8118//8118 6103//6103 +f 8118//8118 6104//6104 6103//6103 +f 6102//6102 6103//6103 6104//6104 +f 6102//6102 6104//6104 8119//8119 +f 8119//8119 6104//6104 7007//7007 +f 8121//8121 8119//8119 7007//7007 +f 8120//8120 8119//8119 8121//8121 +f 7041//7041 8120//8120 8121//8121 +f 7041//7041 8121//8121 6141//6141 +f 8123//8123 7041//7041 6141//6141 +f 8122//8122 8123//8123 6141//6141 +f 8122//8122 6141//6141 6136//6136 +f 6136//6136 6141//6141 8125//8125 +f 8124//8124 6136//6136 8125//8125 +f 8124//8124 8125//8125 6138//6138 +f 8124//8124 6138//6138 6137//6137 +f 8126//8126 6137//6137 6138//6138 +f 6892//6892 8126//8126 6138//6138 +f 6224//6224 6892//6892 6138//6138 +f 6892//6892 6224//6224 8129//8129 +f 6224//6224 8127//8127 8129//8129 +f 8129//8129 8127//8127 6226//6226 +f 8128//8128 8129//8129 6226//6226 +f 6195//6195 8128//8128 6226//6226 +f 8130//8130 6195//6195 6226//6226 +f 6195//6195 8130//8130 6196//6196 +f 6196//6196 8130//8130 8131//8131 +f 6196//6196 8131//8131 8132//8132 +f 6193//6193 8132//8132 8131//8131 +f 6168//6168 6193//6193 8131//8131 +f 6168//6168 8131//8131 6169//6169 +f 6169//6169 8131//8131 8590//8590 +f 8590//8590 8131//8131 6722//6722 +f 8131//8131 8134//8134 6722//6722 +f 8133//8133 6722//6722 8134//8134 +f 6722//6722 8133//8133 6813//6813 +f 8133//8133 8135//8135 6813//6813 +f 8135//8135 8136//8136 6813//6813 +f 8136//8136 7698//7698 6813//6813 +f 6815//6815 6813//6813 7698//7698 +f 8137//8137 6815//6815 7698//7698 +f 6785//6785 6813//6813 6815//6815 +f 6816//6816 6785//6785 6815//6815 +f 6785//6785 8138//8138 6813//6813 +f 8138//8138 6789//6789 6813//6813 +f 6789//6789 6787//6787 6813//6813 +f 6787//6787 7726//7726 6813//6813 +f 7726//7726 8140//8140 6813//6813 +f 6813//6813 8140//8140 8139//8139 +f 8139//8139 8140//8140 8141//8141 +f 8139//8139 8141//8141 8142//8142 +f 8139//8139 8142//8142 8145//8145 +f 8139//8139 8145//8145 8143//8143 +f 8143//8143 8145//8145 8144//8144 +f 6839//6839 8144//8144 8145//8145 +f 6839//6839 8146//8146 8144//8144 +f 6839//6839 8148//8148 8146//8146 +f 8148//8148 8147//8147 8146//8146 +f 8146//8146 8147//8147 7731//7731 +f 8147//8147 8148//8148 7728//7728 +f 8148//8148 8149//8149 7728//7728 +f 7728//7728 8149//8149 8151//8151 +f 8150//8150 8151//8151 8149//8149 +f 5801//5801 8150//8150 8149//8149 +f 5801//5801 5800//5800 8150//8150 +f 8150//8150 5800//5800 8153//8153 +f 8152//8152 8153//8153 5800//5800 +f 8152//8152 5805//5805 8153//8153 +f 5805//5805 8156//8156 8153//8153 +f 8153//8153 8156//8156 8155//8155 +f 8156//8156 8154//8154 8155//8155 +f 8154//8154 8156//8156 5803//5803 +f 8154//8154 5803//5803 8158//8158 +f 5802//5802 8158//8158 5803//5803 +f 5802//5802 8157//8157 8158//8158 +f 8157//8157 8160//8160 8158//8158 +f 8160//8160 8159//8159 8158//8158 +f 7115//7115 8159//8159 8160//8160 +f 8159//8159 7115//7115 7707//7707 +f 7115//7115 8161//8161 7707//7707 +f 8161//8161 7115//7115 7105//7105 +f 7105//7105 7104//7104 8161//8161 +f 7104//7104 8163//8163 8161//8161 +f 7104//7104 7107//7107 8163//8163 +f 7107//7107 7109//7109 8163//8163 +f 7109//7109 8162//8162 8163//8163 +f 8162//8162 7306//7306 8163//8163 +f 8163//8163 7306//7306 7699//7699 +f 7699//7699 7306//7306 7700//7700 +f 7306//7306 8164//8164 7700//7700 +f 7306//7306 7307//7307 8164//8164 +f 7307//7307 8165//8165 8164//8164 +f 8167//8167 8165//8165 7307//7307 +f 8165//8165 8167//8167 7776//7776 +f 8167//8167 8166//8166 7776//7776 +f 8166//8166 8167//8167 7299//7299 +f 8166//8166 7299//7299 8168//8168 +f 8168//8168 7299//7299 8169//8169 +f 8169//8169 7299//7299 7782//7782 +f 7299//7299 7301//7301 7782//7782 +f 7301//7301 7302//7302 7782//7782 +f 7302//7302 8171//8171 7782//7782 +f 7782//7782 8171//8171 8170//8170 +f 8171//8171 7779//7779 8170//8170 +f 7779//7779 8171//8171 8172//8172 +f 8172//8172 8173//8173 7779//7779 +f 7339//7339 8173//8173 8172//8172 +f 8173//8173 7339//7339 8174//8174 +f 8174//8174 7339//7339 8175//8175 +f 7339//7339 8177//8177 8175//8175 +f 7339//7339 8176//8176 8177//8177 +f 8177//8177 8176//8176 7806//7806 +f 8176//8176 8178//8178 7806//7806 +f 8178//8178 8176//8176 8181//8181 +f 8178//8178 8181//8181 8179//8179 +f 8179//8179 8181//8181 8180//8180 +f 8180//8180 8181//8181 8182//8182 +f 8181//8181 8183//8183 8182//8182 +f 7335//7335 8183//8183 8181//8181 +f 8183//8183 7335//7335 8184//8184 +f 8184//8184 7335//7335 7891//7891 +f 7891//7891 7335//7335 8185//8185 +f 7335//7335 7895//7895 8185//8185 +f 8185//8185 7895//7895 7890//7890 +f 7335//7335 7893//7893 7895//7895 +f 7895//7895 7893//7893 7894//7894 +f 7335//7335 8187//8187 7893//7893 +f 7893//7893 8187//8187 8186//8186 +f 7335//7335 7792//7792 8187//8187 +f 8187//8187 7792//7792 7794//7794 +f 7335//7335 8189//8189 7792//7792 +f 7792//7792 8189//8189 8188//8188 +f 8189//8189 7335//7335 8190//8190 +f 8190//8190 7335//7335 7797//7797 +f 7797//7797 7335//7335 8191//8191 +f 8191//8191 7335//7335 8193//8193 +f 8193//8193 7335//7335 7336//7336 +f 8192//8192 8193//8193 7336//7336 +f 8192//8192 7336//7336 8194//8194 +f 8225//8225 8192//8192 8194//8194 +f 8225//8225 8194//8194 8195//8195 +f 8225//8225 8195//8195 8200//8200 +f 8195//8195 7257//7257 8200//8200 +f 7257//7257 7261//7261 8200//8200 +f 7261//7261 8196//8196 8200//8200 +f 8200//8200 8196//8196 8197//8197 +f 8200//8200 8197//8197 7766//7766 +f 8200//8200 7766//7766 8198//8198 +f 8200//8200 8198//8198 8199//8199 +f 8200//8200 8199//8199 7765//7765 +f 8200//8200 7765//7765 8201//8201 +f 7785//7785 8200//8200 8201//8201 +f 7785//7785 8201//8201 8202//8202 +f 7785//7785 8202//8202 7786//7786 +f 7786//7786 8202//8202 7742//7742 +f 8203//8203 7786//7786 7742//7742 +f 8204//8204 8203//8203 7742//7742 +f 8204//8204 7742//7742 8205//8205 +f 8204//8204 8205//8205 7263//7263 +f 7263//7263 8205//8205 8206//8206 +f 7263//7263 8206//8206 8207//8207 +f 8206//8206 7740//7740 8207//8207 +f 8207//8207 7740//7740 8208//8208 +f 8208//8208 7740//7740 7739//7739 +f 8208//8208 7739//7739 7151//7151 +f 7151//7151 7739//7739 7738//7738 +f 7151//7151 7738//7738 7153//7153 +f 7153//7153 7738//7738 7136//7136 +f 7136//7136 8209//8209 7153//7153 +f 7153//7153 8209//8209 8210//8210 +f 8210//8210 8209//8209 7743//7743 +f 8210//8210 7743//7743 7745//7745 +f 7743//7743 7744//7744 7745//7745 +f 7743//7743 8212//8212 7744//7744 +f 8211//8211 7744//7744 8212//8212 +f 7746//7746 8211//8211 8212//8212 +f 7939//7939 8212//8212 7743//7743 +f 7939//7939 7743//7743 7940//7940 +f 7939//7939 7938//7938 8212//8212 +f 8212//8212 7938//7938 8213//8213 +f 8213//8213 7187//7187 8212//8212 +f 8219//8219 8212//8212 7187//7187 +f 7188//7188 8219//8219 7187//7187 +f 7190//7190 7188//7188 7187//7187 +f 7188//7188 8214//8214 8219//8219 +f 8214//8214 8215//8215 8219//8219 +f 8219//8219 8215//8215 8216//8216 +f 7179//7179 8215//8215 8214//8214 +f 8215//8215 7179//7179 8217//8217 +f 8217//8217 7179//7179 7181//7181 +f 8215//8215 8217//8217 7180//7180 +f 8219//8219 8218//8218 8212//8212 +f 8221//8221 8218//8218 8219//8219 +f 8219//8219 8220//8220 8221//8221 +f 7265//7265 7786//7786 8203//8203 +f 8223//8223 7786//7786 7265//7265 +f 8222//8222 7786//7786 8223//8223 +f 7786//7786 8222//8222 8224//8224 +f 8224//8224 8222//8222 7770//7770 +f 7784//7784 7786//7786 8224//8224 +f 7810//7810 8225//8225 8200//8200 +f 7810//7810 8200//8200 8226//8226 +f 8226//8226 7788//7788 7810//7810 +f 7810//7810 7788//7788 7851//7851 +f 7788//7788 8543//8543 7851//7851 +f 7852//7852 7851//7851 8543//8543 +f 7788//7788 8227//8227 8543//8543 +f 8227//8227 8228//8228 8543//8543 +f 7803//7803 8543//8543 8228//8228 +f 8228//8228 8229//8229 7803//7803 +f 8230//8230 8543//8543 7803//7803 +f 7803//7803 7804//7804 8230//8230 +f 7884//7884 8543//8543 8230//8230 +f 8230//8230 7885//7885 7884//7884 +f 8233//8233 8543//8543 7884//7884 +f 8233//8233 7884//7884 8232//8232 +f 7884//7884 8231//8231 8232//8232 +f 7887//7887 8233//8233 8232//8232 +f 8233//8233 8234//8234 8543//8543 +f 8543//8543 8234//8234 8235//8235 +f 8235//8235 8236//8236 8543//8543 +f 8236//8236 8237//8237 8543//8543 +f 8244//8244 8543//8543 8237//8237 +f 8244//8244 8237//8237 7801//7801 +f 7798//7798 8244//8244 7801//7801 +f 8238//8238 8244//8244 7798//7798 +f 7818//7818 8244//8244 8238//8238 +f 7819//7819 8244//8244 7818//7818 +f 8240//8240 8244//8244 7819//7819 +f 7819//7819 8239//8239 8240//8240 +f 8240//8240 8239//8239 8241//8241 +f 8241//8241 8239//8239 7813//7813 +f 7813//7813 8239//8239 7820//7820 +f 7813//7813 7820//7820 7815//7815 +f 7815//7815 7820//7820 8242//8242 +f 7815//7815 8242//8242 8243//8243 +f 8240//8240 8245//8245 8244//8244 +f 3905//3905 8244//8244 8245//8245 +f 3905//3905 8245//8245 8246//8246 +f 8245//8245 8247//8247 8246//8246 +f 8245//8245 3876//3876 8247//8247 +f 8247//8247 3876//3876 8248//8248 +f 8247//8247 8248//8248 8249//8249 +f 8249//8249 8248//8248 8251//8251 +f 8249//8249 8251//8251 8250//8250 +f 8250//8250 8251//8251 3878//3878 +f 3905//3905 8246//8246 3851//3851 +f 3905//3905 3851//3851 8252//8252 +f 3905//3905 8252//8252 3855//3855 +f 3905//3905 3855//3855 3854//3854 +f 3905//3905 3854//3854 8253//8253 +f 3905//3905 8253//8253 3853//3853 +f 3905//3905 3853//3853 8477//8477 +f 8477//8477 3853//3853 3934//3934 +f 3853//3853 8254//8254 3934//3934 +f 3934//3934 8254//8254 3935//3935 +f 8254//8254 3853//3853 3933//3933 +f 3934//3934 3937//3937 8477//8477 +f 8477//8477 3937//3937 3860//3860 +f 3860//3860 3937//3937 8255//8255 +f 3860//3860 3856//3856 8477//8477 +f 3856//3856 8256//8256 8477//8477 +f 8256//8256 3839//3839 8477//8477 +f 8477//8477 3839//3839 3840//3840 +f 8478//8478 8477//8477 3840//3840 +f 8478//8478 3840//3840 3871//3871 +f 3871//3871 3840//3840 8257//8257 +f 3871//3871 8257//8257 8260//8260 +f 8260//8260 3872//3872 3871//3871 +f 3872//3872 8260//8260 3377//3377 +f 8260//8260 8258//8258 3377//3377 +f 8260//8260 3295//3295 8258//8258 +f 3295//3295 8260//8260 8259//8259 +f 8259//8259 8260//8260 8261//8261 +f 8261//8261 8260//8260 8262//8262 +f 8262//8262 8260//8260 8263//8263 +f 8263//8263 8260//8260 8264//8264 +f 8264//8264 8260//8260 8265//8265 +f 8265//8265 8260//8260 3815//3815 +f 3815//3815 8260//8260 3835//3835 +f 3835//3835 3787//3787 3815//3815 +f 3835//3835 8266//8266 3787//3787 +f 3787//3787 8266//8266 3788//3788 +f 8266//8266 3306//3306 3788//3788 +f 3788//3788 3306//3306 3300//3300 +f 3300//3300 3790//3790 3788//3788 +f 3300//3300 8267//8267 3790//3790 +f 3789//3789 3790//3790 8267//8267 +f 8267//8267 8268//8268 3789//3789 +f 8268//8268 8270//8270 3789//3789 +f 3298//3298 8270//8270 8268//8268 +f 3298//3298 8269//8269 8270//8270 +f 3298//3298 8271//8271 8269//8269 +f 8271//8271 8272//8272 8269//8269 +f 8271//8271 8273//8273 8272//8272 +f 8273//8273 3183//3183 8272//8272 +f 8273//8273 3230//3230 3183//3183 +f 3791//3791 3230//3230 8273//8273 +f 3791//3791 8274//8274 3230//3230 +f 3791//3791 3793//3793 8274//8274 +f 3793//3793 3794//3794 8274//8274 +f 3801//3801 8274//8274 3794//3794 +f 3794//3794 3795//3795 3801//3801 +f 3795//3795 3799//3799 3801//3801 +f 3801//3801 8275//8275 8274//8274 +f 3801//3801 8276//8276 8275//8275 +f 3801//3801 3232//3232 8276//8276 +f 3801//3801 8277//8277 3232//3232 +f 8278//8278 8277//8277 3801//3801 +f 3801//3801 8284//8284 8278//8278 +f 3227//3227 8278//8278 8284//8284 +f 8281//8281 3227//3227 8284//8284 +f 8282//8282 8281//8281 8284//8284 +f 8284//8284 8279//8279 8282//8282 +f 8282//8282 8280//8280 8281//8281 +f 3222//3222 8280//8280 8282//8282 +f 8283//8283 3222//3222 8282//8282 +f 8280//8280 3222//3222 3219//3219 +f 3227//3227 3224//3224 8278//8278 +f 8285//8285 8284//8284 3801//3801 +f 3802//3802 8285//8285 3801//3801 +f 8285//8285 3797//3797 8284//8284 +f 8286//8286 3306//3306 8266//8266 +f 3304//3304 8286//8286 8266//8266 +f 3302//3302 3304//3304 8266//8266 +f 3302//3302 8266//8266 3831//3831 +f 8266//8266 3832//3832 3831//3831 +f 3303//3303 3302//3302 3831//3831 +f 3375//3375 3872//3872 3377//3377 +f 3375//3375 3873//3873 3872//3872 +f 3374//3374 3873//3873 3375//3375 +f 3374//3374 3874//3874 3873//3873 +f 8289//8289 3874//3874 3374//3374 +f 3867//3867 3874//3874 8289//8289 +f 3868//3868 3867//3867 8289//8289 +f 8287//8287 3868//3868 8289//8289 +f 3849//3849 8287//8287 8289//8289 +f 3849//3849 8289//8289 8288//8288 +f 8288//8288 8289//8289 3847//3847 +f 3847//3847 8289//8289 8475//8475 +f 8475//8475 8289//8289 3947//3947 +f 3947//3947 8289//8289 8474//8474 +f 3944//3944 8474//8474 8289//8289 +f 3945//3945 3944//3944 8289//8289 +f 8290//8290 3945//3945 8289//8289 +f 8290//8290 8289//8289 8292//8292 +f 8291//8291 8290//8290 8292//8292 +f 3865//3865 8291//8291 8292//8292 +f 3866//3866 3865//3865 8292//8292 +f 8293//8293 3866//3866 8292//8292 +f 8293//8293 8292//8292 3380//3380 +f 3863//3863 8293//8293 3380//3380 +f 8295//8295 3863//3863 3380//3380 +f 8295//8295 3380//3380 3379//3379 +f 8294//8294 8295//8295 3379//3379 +f 3864//3864 8294//8294 3379//3379 +f 8296//8296 3864//3864 3379//3379 +f 8296//8296 3379//3379 3378//3378 +f 8297//8297 8296//8296 3378//3378 +f 8297//8297 3378//3378 3347//3347 +f 3828//3828 8297//8297 3347//3347 +f 8299//8299 3828//3828 3347//3347 +f 8299//8299 3347//3347 8298//8298 +f 8299//8299 8298//8298 3343//3343 +f 8299//8299 3343//3343 3342//3342 +f 3826//3826 8299//8299 3342//3342 +f 8300//8300 3826//3826 3342//3342 +f 8301//8301 8300//8300 3342//3342 +f 8301//8301 3342//3342 3353//3353 +f 8302//8302 8301//8301 3353//3353 +f 8303//8303 8302//8302 3353//3353 +f 8303//8303 3353//3353 3352//3352 +f 3825//3825 8303//8303 3352//3352 +f 3825//3825 3352//3352 8304//8304 +f 3746//3746 3825//3825 8304//8304 +f 8305//8305 3746//3746 8304//8304 +f 8308//8308 8305//8305 8304//8304 +f 8308//8308 8304//8304 3350//3350 +f 8308//8308 3350//3350 8306//8306 +f 8308//8308 8306//8306 3152//3152 +f 8308//8308 3152//3152 8307//8307 +f 3744//3744 8308//8308 8307//8307 +f 3156//3156 3744//3744 8307//8307 +f 3744//3744 3156//3156 8310//8310 +f 8309//8309 3744//3744 8310//8310 +f 8311//8311 8309//8309 8310//8310 +f 8311//8311 8310//8310 3158//3158 +f 8312//8312 8311//8311 3158//3158 +f 8312//8312 3158//3158 1850//1850 +f 8312//8312 1850//1850 1849//1849 +f 8312//8312 1849//1849 1852//1852 +f 8313//8313 8312//8312 1852//1852 +f 8313//8313 1852//1852 8314//8314 +f 3747//3747 8313//8313 8314//8314 +f 8316//8316 3747//3747 8314//8314 +f 8316//8316 8314//8314 1848//1848 +f 8316//8316 1848//1848 8315//8315 +f 8316//8316 8315//8315 8317//8317 +f 8320//8320 8316//8316 8317//8317 +f 8320//8320 8317//8317 1842//1842 +f 8320//8320 1842//1842 8318//8318 +f 8319//8319 8320//8320 8318//8318 +f 3777//3777 8319//8319 8318//8318 +f 2875//2875 3777//3777 8318//8318 +f 3779//3779 3777//3777 2875//2875 +f 3779//3779 2875//2875 2899//2899 +f 2899//2899 2875//2875 8321//8321 +f 8322//8322 2899//2899 8321//8321 +f 8323//8323 8322//8322 8321//8321 +f 2846//2846 8322//8322 8323//8323 +f 8325//8325 2846//2846 8323//8323 +f 2872//2872 8325//8325 8323//8323 +f 8326//8326 8325//8325 2872//2872 +f 8324//8324 8325//8325 8326//8326 +f 2825//2825 8325//8325 8324//8324 +f 8325//8325 2825//2825 8328//8328 +f 8328//8328 2825//2825 2826//2826 +f 8328//8328 2826//2826 8327//8327 +f 8328//8328 8327//8327 8329//8329 +f 8328//8328 8329//8329 8330//8330 +f 8328//8328 8330//8330 8435//8435 +f 8330//8330 8331//8331 8435//8435 +f 8435//8435 8331//8331 2751//2751 +f 8332//8332 2751//2751 8331//8331 +f 8331//8331 8335//8335 8332//8332 +f 2755//2755 8332//8332 8335//8335 +f 8333//8333 2755//2755 8335//8335 +f 8333//8333 8335//8335 8334//8334 +f 8335//8335 2958//2958 8334//8334 +f 2958//2958 8335//8335 2961//2961 +f 2962//2962 2961//2961 8335//8335 +f 2959//2959 2962//2962 8335//8335 +f 2964//2964 2959//2959 8335//8335 +f 2964//2964 8335//8335 8336//8336 +f 8336//8336 8335//8335 2217//2217 +f 2217//2217 8335//8335 2218//2218 +f 2216//2216 8336//8336 2217//2217 +f 8337//8337 8336//8336 2216//2216 +f 2909//2909 8336//8336 8337//8337 +f 2909//2909 8337//8337 8338//8338 +f 8339//8339 8336//8336 2909//2909 +f 8340//8340 8336//8336 8339//8339 +f 2910//2910 8336//8336 8340//8340 +f 8342//8342 8336//8336 2910//2910 +f 8342//8342 8341//8341 8336//8336 +f 2920//2920 8341//8341 8342//8342 +f 2920//2920 2438//2438 8341//8341 +f 8343//8343 2438//2438 2920//2920 +f 2441//2441 2438//2438 8343//8343 +f 2439//2439 2441//2441 8343//8343 +f 2440//2440 2439//2439 8343//8343 +f 2440//2440 8343//8343 8344//8344 +f 1939//1939 2440//2440 8344//8344 +f 8345//8345 2440//2440 1939//1939 +f 8345//8345 2446//2446 2440//2440 +f 2448//2448 2446//2446 8345//8345 +f 8346//8346 2448//2448 8345//8345 +f 8346//8346 8345//8345 8350//8350 +f 8347//8347 8350//8350 8345//8345 +f 8350//8350 8347//8347 8348//8348 +f 1934//1934 8350//8350 8348//8348 +f 8349//8349 8350//8350 1934//1934 +f 8349//8349 1934//1934 3006//3006 +f 8349//8349 3006//3006 8351//8351 +f 8351//8351 3006//3006 8352//8352 +f 8353//8353 8351//8351 8352//8352 +f 8353//8353 8352//8352 3044//3044 +f 8354//8354 3044//3044 8352//8352 +f 3044//3044 8354//8354 8355//8355 +f 8354//8354 1915//1915 8355//8355 +f 8355//8355 1915//1915 8356//8356 +f 8355//8355 8356//8356 1916//1916 +f 8355//8355 1916//1916 8357//8357 +f 8355//8355 8357//8357 8359//8359 +f 8357//8357 1914//1914 8359//8359 +f 8358//8358 8359//8359 1914//1914 +f 2422//2422 8358//8358 1914//1914 +f 2420//2420 2422//2422 1914//1914 +f 2421//2421 2420//2420 1914//1914 +f 2418//2418 2421//2421 1914//1914 +f 8360//8360 2418//2418 1914//1914 +f 8362//8362 2418//2418 8360//8360 +f 2378//2378 2418//2418 8362//8362 +f 2378//2378 8362//8362 8361//8361 +f 8361//8361 8362//8362 8383//8383 +f 8383//8383 8362//8362 2375//2375 +f 2375//2375 8362//8362 8382//8382 +f 2386//2386 8382//8382 8362//8362 +f 2386//2386 8362//8362 8377//8377 +f 8375//8375 8377//8377 8362//8362 +f 8375//8375 8362//8362 1822//1822 +f 8362//8362 1824//1824 1822//1822 +f 1822//1822 1824//1824 1821//1821 +f 8362//8362 1881//1881 1824//1824 +f 1824//1824 1881//1881 1879//1879 +f 1879//1879 8363//8363 1824//1824 +f 1824//1824 8363//8363 1823//1823 +f 1879//1879 8364//8364 8363//8363 +f 8364//8364 8374//8374 8363//8363 +f 8374//8374 8365//8365 8363//8363 +f 8364//8364 8366//8366 8374//8374 +f 8374//8374 8366//8366 8367//8367 +f 8373//8373 8374//8374 8367//8367 +f 8373//8373 8367//8367 8369//8369 +f 8369//8369 8367//8367 8368//8368 +f 8373//8373 8369//8369 8371//8371 +f 8373//8373 8371//8371 8370//8370 +f 8371//8371 8372//8372 8370//8370 +f 1888//1888 8373//8373 8370//8370 +f 8374//8374 8373//8373 1808//1808 +f 8364//8364 1879//1879 1877//1877 +f 2322//2322 8377//8377 8375//8375 +f 8376//8376 8377//8377 2322//2322 +f 2385//2385 2386//2386 8377//8377 +f 8377//8377 8379//8379 2385//2385 +f 8377//8377 8378//8378 8379//8379 +f 8378//8378 8380//8380 8379//8379 +f 2380//2380 8379//8379 8380//8380 +f 8380//8380 2379//2379 2380//2380 +f 2383//2383 2380//2380 2379//2379 +f 8378//8378 2391//2391 8380//8380 +f 2319//2319 8378//8378 8377//8377 +f 2326//2326 2319//2319 8377//8377 +f 2319//2319 2318//2318 8378//8378 +f 8381//8381 2375//2375 8382//8382 +f 2377//2377 8383//8383 2375//2375 +f 8384//8384 8361//8361 8383//8383 +f 2956//2956 2958//2958 2961//2961 +f 8335//8335 8331//8331 8430//8430 +f 8430//8430 8432//8432 8335//8335 +f 8335//8335 8432//8432 3743//3743 +f 8335//8335 3743//3743 8385//8385 +f 8335//8335 8385//8385 8386//8386 +f 8335//8335 8386//8386 8388//8388 +f 8387//8387 8335//8335 8388//8388 +f 8388//8388 8390//8390 8387//8387 +f 8387//8387 8390//8390 8389//8389 +f 8390//8390 2240//2240 8389//8389 +f 2237//2237 8389//8389 2240//2240 +f 8390//8390 2238//2238 2240//2240 +f 2238//2238 8390//8390 2261//2261 +f 2238//2238 2261//2261 8392//8392 +f 2261//2261 2262//2262 8392//8392 +f 2262//2262 2930//2930 8392//8392 +f 8391//8391 8392//8392 2930//2930 +f 8393//8393 8392//8392 8391//8391 +f 2930//2930 2262//2262 8394//8394 +f 8394//8394 8395//8395 2930//2930 +f 8395//8395 8394//8394 2932//2932 +f 8394//8394 2184//2184 2932//2932 +f 2183//2183 2932//2932 2184//2184 +f 8396//8396 2932//2932 2183//2183 +f 2181//2181 8396//8396 2183//2183 +f 8399//8399 2181//2181 2183//2183 +f 2183//2183 8397//8397 8399//8399 +f 8398//8398 8399//8399 8397//8397 +f 2185//2185 8398//8398 8397//8397 +f 2185//2185 3085//3085 8398//8398 +f 3084//3084 3085//3085 2185//2185 +f 3086//3086 3084//3084 2185//2185 +f 3086//3086 2185//2185 8402//8402 +f 8402//8402 8400//8400 3086//3086 +f 3082//3082 8400//8400 8402//8402 +f 8401//8401 3082//3082 8402//8402 +f 3081//3081 3082//3082 8401//8401 +f 2149//2149 3081//3081 8401//8401 +f 8401//8401 2046//2046 2149//2149 +f 2051//2051 2149//2149 2046//2046 +f 8403//8403 2051//2051 2046//2046 +f 2045//2045 2051//2051 8403//8403 +f 2045//2045 8403//8403 2044//2044 +f 8404//8404 2051//2051 2045//2045 +f 8404//8404 8423//8423 2051//2051 +f 8423//8423 2086//2086 2051//2051 +f 2051//2051 2086//2086 8405//8405 +f 2051//2051 8405//8405 1983//1983 +f 8405//8405 8406//8406 1983//1983 +f 8406//8406 8407//8407 1983//1983 +f 1983//1983 8407//8407 1984//1984 +f 8406//8406 8408//8408 8407//8407 +f 8407//8407 8408//8408 1993//1993 +f 8408//8408 8409//8409 1993//1993 +f 8409//8409 8416//8416 1993//1993 +f 8416//8416 8410//8410 1993//1993 +f 1991//1991 1993//1993 8410//8410 +f 8410//8410 8416//8416 8412//8412 +f 8411//8411 8412//8412 8416//8416 +f 8412//8412 8413//8413 8410//8410 +f 8414//8414 8413//8413 8412//8412 +f 8412//8412 1973//1973 8414//8414 +f 8414//8414 1973//1973 1972//1972 +f 8409//8409 8415//8415 8416//8416 +f 8407//8407 1993//1993 1986//1986 +f 2051//2051 1983//1983 2052//2052 +f 1983//1983 8422//8422 2052//2052 +f 8417//8417 2052//2052 8422//8422 +f 8417//8417 8422//8422 2049//2049 +f 8422//8422 2069//2069 2049//2049 +f 2049//2049 2069//2069 8418//8418 +f 2069//2069 2079//2079 8418//8418 +f 2079//2079 2085//2085 8418//8418 +f 2069//2069 8419//8419 2079//2079 +f 2078//2078 2079//2079 8419//8419 +f 2078//2078 8419//8419 2081//2081 +f 2081//2081 8420//8420 2078//2078 +f 8418//8418 8421//8421 2049//2049 +f 2069//2069 8422//8422 2068//2068 +f 8422//8422 1983//1983 2065//2065 +f 8423//8423 8424//8424 2086//2086 +f 8426//8426 8423//8423 8404//8404 +f 8423//8423 8426//8426 8425//8425 +f 8425//8425 8426//8426 8427//8427 +f 8423//8423 8425//8425 8428//8428 +f 2934//2934 8395//8395 2932//2932 +f 8429//8429 8335//8335 8387//8387 +f 8430//8430 8431//8431 8432//8432 +f 2751//2751 8433//8433 8435//8435 +f 8328//8328 8435//8435 8434//8434 +f 2763//2763 8434//8434 8435//8435 +f 8435//8435 8436//8436 2763//2763 +f 8437//8437 8434//8434 2763//2763 +f 8434//8434 8437//8437 8439//8439 +f 8439//8439 8437//8437 2766//2766 +f 2759//2759 8439//8439 2766//2766 +f 2769//2769 8439//8439 2759//2759 +f 8438//8438 8439//8439 2769//2769 +f 2870//2870 8439//8439 8438//8438 +f 2871//2871 2870//2870 8438//8438 +f 2798//2798 2871//2871 8438//8438 +f 2989//2989 2798//2798 8438//8438 +f 2990//2990 2798//2798 2989//2989 +f 2798//2798 2990//2990 2800//2800 +f 2800//2800 2990//2990 8440//8440 +f 2796//2796 2800//2800 8440//8440 +f 2797//2797 2796//2796 8440//8440 +f 8440//8440 8441//8441 2797//2797 +f 2993//2993 8441//8441 8440//8440 +f 2992//2992 8441//8441 2993//2993 +f 2713//2713 8441//8441 2992//2992 +f 2713//2713 2992//2992 2995//2995 +f 2995//2995 2714//2714 2713//2713 +f 3130//3130 2714//2714 2995//2995 +f 2995//2995 2709//2709 3130//3130 +f 2709//2709 8442//8442 3130//3130 +f 8443//8443 3130//3130 8442//8442 +f 2711//2711 8443//8443 8442//8442 +f 2711//2711 8444//8444 8443//8443 +f 3091//3091 8444//8444 2711//2711 +f 3091//3091 3128//3128 8444//8444 +f 3091//3091 3093//3093 3128//3128 +f 3093//3093 3126//3126 3128//3128 +f 3092//3092 3126//3126 3093//3093 +f 3127//3127 3126//3126 3092//3092 +f 8446//8446 3127//3127 3092//3092 +f 8445//8445 3127//3127 8446//8446 +f 2682//2682 3127//3127 8445//8445 +f 8448//8448 2682//2682 8445//8445 +f 8447//8447 8448//8448 8445//8445 +f 3089//3089 8448//8448 8447//8447 +f 8448//8448 3089//3089 3088//3088 +f 2680//2680 8448//8448 3088//3088 +f 8449//8449 8448//8448 2680//2680 +f 8449//8449 2680//2680 8451//8451 +f 8450//8450 8449//8449 8451//8451 +f 8450//8450 8451//8451 8459//8459 +f 8459//8459 8451//8451 8457//8457 +f 8457//8457 8451//8451 8455//8455 +f 8452//8452 8455//8455 8451//8451 +f 8452//8452 8451//8451 2570//2570 +f 8452//8452 2570//2570 2573//2573 +f 2573//2573 2570//2570 8453//8453 +f 2569//2569 2573//2573 8453//8453 +f 8457//8457 8455//8455 8456//8456 +f 8454//8454 8456//8456 8455//8455 +f 8457//8457 8456//8456 2602//2602 +f 2602//2602 8456//8456 2603//2603 +f 2607//2607 8457//8457 2602//2602 +f 2494//2494 8459//8459 8457//8457 +f 8457//8457 8458//8458 2494//2494 +f 8458//8458 2495//2495 2494//2494 +f 8458//8458 8457//8457 2604//2604 +f 8457//8457 2608//2608 2604//2604 +f 2604//2604 2605//2605 8458//8458 +f 2498//2498 8459//8459 2494//2494 +f 2564//2564 8450//8450 8459//8459 +f 8461//8461 2564//2564 8459//8459 +f 8461//8461 8459//8459 8469//8469 +f 8459//8459 2500//2500 8469//8469 +f 8469//8469 8460//8460 8461//8461 +f 8460//8460 2567//2567 8461//8461 +f 2567//2567 2565//2565 8461//8461 +f 2618//2618 2567//2567 8460//8460 +f 2619//2619 2618//2618 8460//8460 +f 2619//2619 8460//8460 8465//8465 +f 8462//8462 8465//8465 8460//8460 +f 2491//2491 8462//8462 8460//8460 +f 2491//2491 8463//8463 8462//8462 +f 8466//8466 8465//8465 8462//8462 +f 8466//8466 8462//8462 8464//8464 +f 8465//8465 8466//8466 8467//8467 +f 8466//8466 2614//2614 8467//8467 +f 2485//2485 2614//2614 8466//8466 +f 8465//8465 2612//2612 2619//2619 +f 2618//2618 8468//8468 2567//2567 +f 8468//8468 2616//2616 2567//2567 +f 8460//8460 8469//8469 2488//2488 +f 8469//8469 2497//2497 2488//2488 +f 8470//8470 8460//8460 2488//2488 +f 3130//3130 2712//2712 2714//2714 +f 2798//2798 8471//8471 2871//2871 +f 3759//3759 8434//8434 8439//8439 +f 3758//3758 3759//3759 8439//8439 +f 3768//3768 3758//3758 8439//8439 +f 3768//3768 8439//8439 8472//8472 +f 3768//3768 8472//8472 3770//3770 +f 8328//8328 8473//8473 8325//8325 +f 3774//3774 3779//3779 2899//2899 +f 3943//3943 3947//3947 8474//8474 +f 3948//3948 8475//8475 3947//3947 +f 3946//3946 3847//3847 8475//8475 +f 3845//3845 8288//8288 3847//3847 +f 3844//3844 3849//3849 8288//8288 +f 8476//8476 8477//8477 8478//8478 +f 8256//8256 3856//3856 3857//3857 +f 3856//3856 3860//3860 3859//3859 +f 3934//3934 8479//8479 3937//3937 +f 3937//3937 8479//8479 3940//3940 +f 3934//3934 3939//3939 8479//8479 +f 8481//8481 8244//8244 3905//3905 +f 3905//3905 8480//8480 8481//8481 +f 8481//8481 8480//8480 8482//8482 +f 3925//3925 8482//8482 8480//8480 +f 3926//3926 8482//8482 3925//3925 +f 8532//8532 8481//8481 8482//8482 +f 3928//3928 8532//8532 8482//8482 +f 3928//3928 8483//8483 8532//8532 +f 7878//7878 8483//8483 3928//3928 +f 8484//8484 7878//7878 3928//3928 +f 3930//3930 7878//7878 8484//8484 +f 3930//3930 8484//8484 3931//3931 +f 8485//8485 7878//7878 3930//3930 +f 8485//8485 7877//7877 7878//7878 +f 3590//3590 7877//7877 8485//8485 +f 3590//3590 8486//8486 7877//7877 +f 8487//8487 8486//8486 3590//3590 +f 8487//8487 7546//7546 8486//8486 +f 8487//8487 7548//7548 7546//7546 +f 8487//8487 3593//3593 7548//7548 +f 3593//3593 8489//8489 7548//7548 +f 3593//3593 8488//8488 8489//8489 +f 8490//8490 8489//8489 8488//8488 +f 8490//8490 8491//8491 8489//8489 +f 8490//8490 3598//3598 8491//8491 +f 8491//8491 3598//3598 8531//8531 +f 7555//7555 8531//8531 3598//3598 +f 7555//7555 3598//3598 8492//8492 +f 3922//3922 7555//7555 8492//8492 +f 3922//3922 7557//7557 7555//7555 +f 8493//8493 7557//7557 3922//3922 +f 8493//8493 8496//8496 7557//7557 +f 8494//8494 8496//8496 8493//8493 +f 8494//8494 8495//8495 8496//8496 +f 3923//3923 8495//8495 8494//8494 +f 3923//3923 8499//8499 8495//8495 +f 8497//8497 8499//8499 3923//3923 +f 8497//8497 8498//8498 8499//8499 +f 8500//8500 8498//8498 8497//8497 +f 8500//8500 8497//8497 3511//3511 +f 3509//3509 8500//8500 3511//3511 +f 3509//3509 8502//8502 8500//8500 +f 3478//3478 8502//8502 3509//3509 +f 3478//3478 8501//8501 8502//8502 +f 8501//8501 3478//3478 8503//8503 +f 8503//8503 3478//3478 3477//3477 +f 8501//8501 8503//8503 7426//7426 +f 8505//8505 7426//7426 8503//8503 +f 8504//8504 7426//7426 8505//8505 +f 7822//7822 8504//8504 8505//8505 +f 8505//8505 7846//7846 7822//7822 +f 7822//7822 7846//7846 8508//8508 +f 8508//8508 7846//7846 8506//8506 +f 7837//7837 8508//8508 8506//8506 +f 7837//7837 8506//8506 7844//7844 +f 7840//7840 7844//7844 8506//8506 +f 7843//7843 7837//7837 7844//7844 +f 7837//7837 8507//8507 8508//8508 +f 8507//8507 7825//7825 8508//8508 +f 7837//7837 7839//7839 8507//8507 +f 8508//8508 7821//7821 7822//7822 +f 7846//7846 8505//8505 3885//3885 +f 3885//3885 8505//8505 3883//3883 +f 3885//3885 3883//3883 3882//3882 +f 3885//3885 8526//8526 7846//7846 +f 8509//8509 7846//7846 8526//8526 +f 8525//8525 7846//7846 8509//8509 +f 8510//8510 8525//8525 8509//8509 +f 8525//8525 8510//8510 8520//8520 +f 8520//8520 8510//8510 3889//3889 +f 3889//3889 8510//8510 3890//3890 +f 8520//8520 3889//3889 8518//8518 +f 8518//8518 3889//3889 8511//8511 +f 8511//8511 3889//3889 8512//8512 +f 8518//8518 8511//8511 8513//8513 +f 8513//8513 8511//8511 8514//8514 +f 8517//8517 8518//8518 8513//8513 +f 8517//8517 8513//8513 3892//3892 +f 3892//3892 8513//8513 8515//8515 +f 3892//3892 8516//8516 8517//8517 +f 8517//8517 7827//7827 8518//8518 +f 8518//8518 8519//8519 8520//8520 +f 8520//8520 8519//8519 8521//8521 +f 8522//8522 8519//8519 8518//8518 +f 7831//7831 8525//8525 8520//8520 +f 7846//7846 8525//8525 8523//8523 +f 8524//8524 8523//8523 8525//8525 +f 3885//3885 3900//3900 8526//8526 +f 8526//8526 3900//3900 8528//8528 +f 3899//3899 8528//8528 3900//3900 +f 8527//8527 8526//8526 8528//8528 +f 3900//3900 3885//3885 3884//3884 +f 3884//3884 3885//3885 8529//8529 +f 8530//8530 3900//3900 3884//3884 +f 7426//7426 7425//7425 8501//8501 +f 7551//7551 8491//8491 8531//8531 +f 3598//3598 8490//8490 3596//3596 +f 8483//8483 7878//7878 7879//7879 +f 7880//7880 7879//7879 7878//7878 +f 7853//7853 8481//8481 8532//8532 +f 7875//7875 7853//7853 8532//8532 +f 8480//8480 3905//3905 3907//3907 +f 3907//3907 3905//3905 3903//3903 +f 8245//8245 8240//8240 7871//7871 +f 8245//8245 7871//7871 3919//3919 +f 7868//7868 3919//3919 7871//7871 +f 7871//7871 7863//7863 7868//7868 +f 7863//7863 8533//8533 7868//7868 +f 3919//3919 7868//7868 8534//8534 +f 7870//7870 8534//8534 7868//7868 +f 7941//7941 3919//3919 8534//8534 +f 7941//7941 8534//8534 8535//8535 +f 8534//8534 7864//7864 8535//8535 +f 7941//7941 8535//8535 8536//8536 +f 8537//8537 3919//3919 7941//7941 +f 8537//8537 7859//7859 3919//3919 +f 7859//7859 8542//8542 3919//3919 +f 3919//3919 8542//8542 7937//7937 +f 8541//8541 3919//3919 7937//7937 +f 7937//7937 3909//3909 8541//8541 +f 8541//8541 3909//3909 8538//8538 +f 3909//3909 7937//7937 7936//7936 +f 3909//3909 7936//7936 7934//7934 +f 8541//8541 8539//8539 3919//3919 +f 8539//8539 3921//3921 3919//3919 +f 3921//3921 8539//8539 8540//8540 +f 8541//8541 3918//3918 8539//8539 +f 7857//7857 8542//8542 7859//7859 +f 7859//7859 7860//7860 7857//7857 +f 7857//7857 3503//3503 8542//8542 +f 8542//8542 3503//3503 3910//3910 +f 3503//3503 7857//7857 7453//7453 +f 7850//7850 8543//8543 8244//8244 +f 7850//7850 8244//8244 7848//7848 +f 8236//8236 8235//8235 7881//7881 +f 8544//8544 6813//6813 8139//8139 +f 6722//6722 6813//6813 8548//8548 +f 8548//8548 6813//6813 8551//8551 +f 8551//8551 6813//6813 8545//8545 +f 8551//8551 8545//8545 8546//8546 +f 8546//8546 8547//8547 8551//8551 +f 8546//8546 7719//7719 8547//8547 +f 8547//8547 7719//7719 7723//7723 +f 7723//7723 7720//7720 8547//8547 +f 7723//7723 7724//7724 7720//7720 +f 8548//8548 8551//8551 6735//6735 +f 8549//8549 6735//6735 8551//8551 +f 8551//8551 8550//8550 8549//8549 +f 6738//6738 8550//8550 8551//8551 +f 8552//8552 6738//6738 8551//8551 +f 6737//6737 6738//6738 8552//8552 +f 6951//6951 6737//6737 8552//8552 +f 6951//6951 8552//8552 8553//8553 +f 8553//8553 8552//8552 6478//6478 +f 8553//8553 6761//6761 6951//6951 +f 6951//6951 6761//6761 6763//6763 +f 8554//8554 6951//6951 6763//6763 +f 8554//8554 6763//6763 6759//6759 +f 8554//8554 6759//6759 8556//8556 +f 8555//8555 8554//8554 8556//8556 +f 8558//8558 8555//8555 8556//8556 +f 8558//8558 8556//8556 8557//8557 +f 8558//8558 8557//8557 6681//6681 +f 8560//8560 8558//8558 6681//6681 +f 8559//8559 8560//8560 6681//6681 +f 6680//6680 8560//8560 8559//8559 +f 8560//8560 6680//6680 8588//8588 +f 7088//7088 8588//8588 6680//6680 +f 6677//6677 8588//8588 7088//7088 +f 8561//8561 6677//6677 7088//7088 +f 6678//6678 6677//6677 8561//8561 +f 6678//6678 8561//8561 7087//7087 +f 7087//7087 8563//8563 6678//6678 +f 8562//8562 8563//8563 7087//7087 +f 8563//8563 8562//8562 7050//7050 +f 7050//7050 8562//8562 8564//8564 +f 7051//7051 7050//7050 8564//8564 +f 8565//8565 7051//7051 8564//8564 +f 6648//6648 8565//8565 8564//8564 +f 8565//8565 6648//6648 6650//6650 +f 8565//8565 6650//6650 8566//8566 +f 7047//7047 8565//8565 8566//8566 +f 7047//7047 8566//8566 8567//8567 +f 8567//8567 8566//8566 7044//7044 +f 6645//6645 7044//7044 8566//8566 +f 6645//6645 8566//8566 8568//8568 +f 6530//6530 8568//8568 8566//8566 +f 8568//8568 6530//6530 8569//8569 +f 6531//6531 8568//8568 8569//8569 +f 6531//6531 8569//8569 8572//8572 +f 8569//8569 8570//8570 8572//8572 +f 6561//6561 8572//8572 8570//8570 +f 8570//8570 8571//8571 6561//6561 +f 6561//6561 6560//6560 8572//8572 +f 6563//6563 8570//8570 8569//8569 +f 8574//8574 6563//6563 8569//8569 +f 8569//8569 6451//6451 8574//8574 +f 6564//6564 8574//8574 6451//6451 +f 6451//6451 6453//6453 6564//6564 +f 6564//6564 8573//8573 8574//8574 +f 6525//6525 6451//6451 8569//8569 +f 6525//6525 8575//8575 6451//6451 +f 8575//8575 6447//6447 6451//6451 +f 6447//6447 8578//8578 6451//6451 +f 6451//6451 8578//8578 8579//8579 +f 8578//8578 6458//6458 8579//8579 +f 8579//8579 6458//6458 8576//8576 +f 8577//8577 6458//6458 8578//8578 +f 6451//6451 8579//8579 8580//8580 +f 6459//6459 8580//8580 8579//8579 +f 8580//8580 6454//6454 6451//6451 +f 6449//6449 8578//8578 6447//6447 +f 8581//8581 6447//6447 8575//8575 +f 8582//8582 8581//8581 8575//8575 +f 8575//8575 6574//6574 8582//8582 +f 8582//8582 6574//6574 6576//6576 +f 6574//6574 8575//8575 6528//6528 +f 8581//8581 8582//8582 6568//6568 +f 6568//6568 8582//8582 6567//6567 +f 6570//6570 8581//8581 6568//6568 +f 8583//8583 8581//8581 6570//6570 +f 8583//8583 6570//6570 6572//6572 +f 6571//6571 8583//8583 6572//6572 +f 8581//8581 8583//8583 8584//8584 +f 6444//6444 8581//8581 8584//8584 +f 8585//8585 8581//8581 6444//6444 +f 8575//8575 6525//6525 6527//6527 +f 6531//6531 8572//8572 8586//8586 +f 6646//6646 8568//8568 6531//6531 +f 6646//6646 6531//6531 8587//8587 +f 6533//6533 8587//8587 6531//6531 +f 6953//6953 8560//8560 8588//8588 +f 6734//6734 8548//8548 6735//6735 +f 8548//8548 6721//6721 6722//6722 +f 6720//6720 8590//8590 6722//6722 +f 8589//8589 6169//6169 8590//8590 +f 8589//8589 8590//8590 6174//6174 +f 8591//8591 6174//6174 8590//8590 +f 8590//8590 6718//6718 8591//8591 +f 6712//6712 8591//8591 6718//6718 +f 6711//6711 8591//8591 6712//6712 +f 6707//6707 8591//8591 6711//6711 +f 6709//6709 8591//8591 6707//6707 +f 6709//6709 8641//8641 8591//8591 +f 6924//6924 8641//8641 6709//6709 +f 6925//6925 6924//6924 6709//6709 +f 8641//8641 6924//6924 6871//6871 +f 8592//8592 6871//6871 6924//6924 +f 6928//6928 6871//6871 8592//8592 +f 8593//8593 6871//6871 6928//6928 +f 8594//8594 6871//6871 8593//8593 +f 8594//8594 8593//8593 8595//8595 +f 8595//8595 6872//6872 8594//8594 +f 8595//8595 6873//6873 6872//6872 +f 8595//8595 6883//6883 6873//6873 +f 8595//8595 6926//6926 6883//6883 +f 6926//6926 8596//8596 6883//6883 +f 6926//6926 8597//8597 8596//8596 +f 8597//8597 6402//6402 8596//8596 +f 5901//5901 8596//8596 6402//6402 +f 8598//8598 5901//5901 6402//6402 +f 8598//8598 8599//8599 5901//5901 +f 8598//8598 8600//8600 8599//8599 +f 8600//8600 8601//8601 8599//8599 +f 8602//8602 8601//8601 8600//8600 +f 8602//8602 8603//8603 8601//8601 +f 6410//6410 8603//8603 8602//8602 +f 8604//8604 8603//8603 6410//6410 +f 8638//8638 8603//8603 8604//8604 +f 8604//8604 7002//7002 8638//8638 +f 7002//7002 5893//5893 8638//8638 +f 8605//8605 5893//5893 7002//7002 +f 8605//8605 6967//6967 5893//5893 +f 7006//7006 6967//6967 8605//8605 +f 6966//6966 6967//6967 7006//7006 +f 8606//8606 6966//6966 7006//7006 +f 7004//7004 6966//6966 8606//8606 +f 8607//8607 6966//6966 7004//7004 +f 8610//8610 8607//8607 7004//7004 +f 5872//5872 8607//8607 8610//8610 +f 8608//8608 5872//5872 8610//8610 +f 5874//5874 8608//8608 8610//8610 +f 8609//8609 5874//5874 8610//8610 +f 8613//8613 8609//8609 8610//8610 +f 8612//8612 8609//8609 8613//8613 +f 8611//8611 8612//8612 8613//8613 +f 8614//8614 8612//8612 8611//8611 +f 8615//8615 8614//8614 8611//8611 +f 6380//6380 8614//8614 8615//8615 +f 8616//8616 8614//8614 6380//6380 +f 6376//6376 8614//8614 8616//8616 +f 6376//6376 8617//8617 8614//8614 +f 6377//6377 8617//8617 6376//6376 +f 8617//8617 6377//6377 8619//8619 +f 8618//8618 8619//8619 6377//6377 +f 8619//8619 8618//8618 8620//8620 +f 8620//8620 8618//8618 6331//6331 +f 6333//6333 8619//8619 8620//8620 +f 8619//8619 6333//6333 8621//8621 +f 8621//8621 6333//6333 6330//6330 +f 8621//8621 6330//6330 6341//6341 +f 6341//6341 6330//6330 6339//6339 +f 6341//6341 8622//8622 8621//8621 +f 8621//8621 8622//8622 6334//6334 +f 6334//6334 6291//6291 8621//8621 +f 8623//8623 8621//8621 6291//6291 +f 6291//6291 6334//6334 8624//8624 +f 6346//6346 8624//8624 6334//6334 +f 6291//6291 8624//8624 6286//6286 +f 8624//8624 8625//8625 6286//6286 +f 8626//8626 6291//6291 6286//6286 +f 6341//6341 8628//8628 8622//8622 +f 8622//8622 8628//8628 8627//8627 +f 8627//8627 8628//8628 6337//6337 +f 6335//6335 8622//8622 8627//8627 +f 6340//6340 8628//8628 6341//6341 +f 8629//8629 8619//8619 8621//8621 +f 8630//8630 8617//8617 8619//8619 +f 5776//5776 8630//8630 8619//8619 +f 5779//5779 5776//5776 8619//8619 +f 5766//5766 8630//8630 5776//5776 +f 5767//5767 8630//8630 5766//5766 +f 5767//5767 5830//5830 8630//8630 +f 5830//5830 5831//5831 8630//8630 +f 8636//8636 5830//5830 5767//5767 +f 5767//5767 8631//8631 8636//8636 +f 5837//5837 8631//8631 5767//5767 +f 8632//8632 5837//5837 5767//5767 +f 8634//8634 8632//8632 5767//5767 +f 8634//8634 5767//5767 8633//8633 +f 5844//5844 8632//8632 8634//8634 +f 5844//5844 8634//8634 5843//5843 +f 8632//8632 5844//5844 5845//5845 +f 5844//5844 8635//8635 5845//5845 +f 8632//8632 5833//5833 5837//5837 +f 5830//5830 8636//8636 5829//5829 +f 8630//8630 8637//8637 8617//8617 +f 8638//8638 8639//8639 8603//8603 +f 6871//6871 8640//8640 8641//8641 +f 6172//6172 8589//8589 6174//6174 +f 6193//6193 6197//6197 8132//8132 +f 8642//8642 8128//8128 6195//6195 +f 6195//6195 6890//6890 8642//8642 +f 6895//6895 6892//6892 8129//8129 +f 8643//8643 8111//8111 6001//6001 +f 6002//6002 8643//8643 6001//6001 +f 8111//8111 8643//8643 6031//6031 +f 6036//6036 6031//6031 8643//8643 +f 6024//6024 8111//8111 6031//6031 +f 6031//6031 8644//8644 6024//6024 +f 6031//6031 6030//6030 8644//8644 +f 6030//6030 6032//6032 8644//8644 +f 8645//8645 5946//5946 5944//5944 +f 8646//8646 5952//5952 5944//5944 +f 5949//5949 8106//8106 5952//5952 +f 5934//5934 8107//8107 8102//8102 +f 4317//4317 4298//4298 4300//4300 +f 4300//4300 4321//4321 4317//4317 +f 4321//4321 4318//4318 4317//4317 +f 4300//4300 8647//8647 4321//4321 +f 4321//4321 8647//8647 8648//8648 +f 8647//8647 4301//4301 8648//8648 +f 4301//4301 8649//8649 8648//8648 +f 4301//4301 8650//8650 8649//8649 +f 4321//4321 8648//8648 8825//8825 +f 8825//8825 8648//8648 4287//4287 +f 8648//8648 4288//4288 4287//4287 +f 8825//8825 4287//4287 8652//8652 +f 8652//8652 8653//8653 8825//8825 +f 8825//8825 8653//8653 8651//8651 +f 8653//8653 4314//4314 8651//8651 +f 8653//8653 4375//4375 4314//4314 +f 8652//8652 8823//8823 8653//8653 +f 8823//8823 8655//8655 8653//8653 +f 8654//8654 8653//8653 8655//8655 +f 4400//4400 8654//8654 8655//8655 +f 8654//8654 8820//8820 8653//8653 +f 8820//8820 4357//4357 8653//8653 +f 8653//8653 4357//4357 4360//4360 +f 8653//8653 4360//4360 4464//4464 +f 8653//8653 4464//4464 4463//4463 +f 8653//8653 4463//4463 8656//8656 +f 8657//8657 8653//8653 8656//8656 +f 8656//8656 8658//8658 8657//8657 +f 8656//8656 4366//4366 8658//8658 +f 8659//8659 4366//4366 8656//8656 +f 4444//4444 8659//8659 8656//8656 +f 4444//4444 8656//8656 4445//4445 +f 8656//8656 8660//8660 4445//4445 +f 8656//8656 4467//4467 8660//8660 +f 4467//4467 8662//8662 8660//8660 +f 8660//8660 8662//8662 4450//4450 +f 8662//8662 4467//4467 8661//8661 +f 8662//8662 8661//8661 8663//8663 +f 8661//8661 4471//4471 8663//8663 +f 8663//8663 4471//4471 8665//8665 +f 8665//8665 4471//4471 4470//4470 +f 4470//4470 4471//4471 8664//8664 +f 8665//8665 4470//4470 8666//8666 +f 8666//8666 4470//4470 8667//8667 +f 5422//5422 8666//8666 8667//8667 +f 5422//5422 8667//8667 8668//8668 +f 5422//5422 8668//8668 5423//5423 +f 5423//5423 8668//8668 8669//8669 +f 8669//8669 8668//8668 8671//8671 +f 8670//8670 8669//8669 8671//8671 +f 4497//4497 8670//8670 8671//8671 +f 4497//4497 8671//8671 8672//8672 +f 4497//4497 8672//8672 5398//5398 +f 4497//4497 5398//5398 8816//8816 +f 8816//8816 5398//5398 4507//4507 +f 4507//4507 5295//5295 8816//8816 +f 5296//5296 8816//8816 5295//5295 +f 5295//5295 4507//4507 8673//8673 +f 5295//5295 8673//8673 4510//4510 +f 8676//8676 5295//5295 4510//4510 +f 8814//8814 5295//5295 8676//8676 +f 8674//8674 8814//8814 8676//8676 +f 8675//8675 8674//8674 8676//8676 +f 8676//8676 8677//8677 8675//8675 +f 8677//8677 8678//8678 8675//8675 +f 8679//8679 8678//8678 8677//8677 +f 8678//8678 8679//8679 4555//4555 +f 8679//8679 4587//4587 4555//4555 +f 4555//4555 4587//4587 4589//4589 +f 4554//4554 4555//4555 4589//4589 +f 4552//4552 4554//4554 4589//4589 +f 4552//4552 4589//4589 8680//8680 +f 5510//5510 8680//8680 4589//4589 +f 8812//8812 8680//8680 5510//5510 +f 8812//8812 5510//5510 4539//4539 +f 4539//4539 5510//5510 4543//4543 +f 5510//5510 5511//5511 4543//4543 +f 5511//5511 4585//4585 4543//4543 +f 8681//8681 4543//4543 4585//4585 +f 4585//4585 5509//5509 8681//8681 +f 5509//5509 8682//8682 8681//8681 +f 5517//5517 8682//8682 5509//5509 +f 5517//5517 5518//5518 8682//8682 +f 5518//5518 8683//8683 8682//8682 +f 8683//8683 8684//8684 8682//8682 +f 8682//8682 8684//8684 5032//5032 +f 8685//8685 5032//5032 8684//8684 +f 8685//8685 8684//8684 5516//5516 +f 5516//5516 5512//5512 8685//8685 +f 5512//5512 5514//5514 8685//8685 +f 5514//5514 8686//8686 8685//8685 +f 5524//5524 8685//8685 8686//8686 +f 8686//8686 8687//8687 5524//5524 +f 8685//8685 5524//5524 5030//5030 +f 8691//8691 5030//5030 5524//5524 +f 8691//8691 5524//5524 8690//8690 +f 8690//8690 5524//5524 8688//8688 +f 8688//8688 8689//8689 8690//8690 +f 8690//8690 8692//8692 8691//8691 +f 8691//8691 8692//8692 8693//8693 +f 8692//8692 8694//8694 8693//8693 +f 8694//8694 8692//8692 8695//8695 +f 8695//8695 5523//5523 8694//8694 +f 8697//8697 8694//8694 5523//5523 +f 8696//8696 8697//8697 5523//5523 +f 5055//5055 8696//8696 5523//5523 +f 5056//5056 5055//5055 5523//5523 +f 5523//5523 5162//5162 5056//5056 +f 5056//5056 5162//5162 5152//5152 +f 5056//5056 5152//5152 8699//8699 +f 8699//8699 5152//5152 8698//8698 +f 8699//8699 8700//8700 5056//5056 +f 8701//8701 5056//5056 8700//8700 +f 8701//8701 8700//8700 8702//8702 +f 8701//8701 8702//8702 8703//8703 +f 8701//8701 8703//8703 8704//8704 +f 8701//8701 8704//8704 8705//8705 +f 8706//8706 8701//8701 8705//8705 +f 8706//8706 8705//8705 8707//8707 +f 8706//8706 8707//8707 8708//8708 +f 8706//8706 8708//8708 4827//4827 +f 8709//8709 8706//8706 4827//4827 +f 8711//8711 8709//8709 4827//4827 +f 8710//8710 8711//8711 4827//4827 +f 8710//8710 4827//4827 5076//5076 +f 8710//8710 5076//5076 8712//8712 +f 8714//8714 8710//8710 8712//8712 +f 8714//8714 8712//8712 8713//8713 +f 8716//8716 8714//8714 8713//8713 +f 8716//8716 8713//8713 5078//5078 +f 8716//8716 5078//5078 5077//5077 +f 8716//8716 5077//5077 8715//8715 +f 5430//5430 8716//8716 8715//8715 +f 5431//5431 5430//5430 8715//8715 +f 5431//5431 8715//8715 8717//8717 +f 5431//5431 8717//8717 8718//8718 +f 8720//8720 5431//5431 8718//8718 +f 8719//8719 8720//8720 8718//8718 +f 5467//5467 8719//8719 8718//8718 +f 5428//5428 8719//8719 5467//5467 +f 8721//8721 5428//5428 5467//5467 +f 5428//5428 8721//8721 8722//8722 +f 8722//8722 8721//8721 4978//4978 +f 8722//8722 4978//4978 8723//8723 +f 8725//8725 8722//8722 8723//8723 +f 8724//8724 8722//8722 8725//8725 +f 8724//8724 8725//8725 4979//4979 +f 8724//8724 4979//4979 4976//4976 +f 8724//8724 4976//4976 8727//8727 +f 8726//8726 8724//8724 8727//8727 +f 8726//8726 8727//8727 8751//8751 +f 4967//4967 8751//8751 8727//8727 +f 4967//4967 8727//8727 8728//8728 +f 4972//4972 8728//8728 8727//8727 +f 4974//4974 4972//4972 8727//8727 +f 4974//4974 8729//8729 4972//4972 +f 4974//4974 4862//4862 8729//8729 +f 8730//8730 4862//4862 4974//4974 +f 8733//8733 8730//8730 4974//4974 +f 8730//8730 8733//8733 8731//8731 +f 4863//4863 8731//8731 8733//8733 +f 4863//4863 8733//8733 8732//8732 +f 8732//8732 8733//8733 4893//4893 +f 4893//4893 8733//8733 8747//8747 +f 8747//8747 8733//8733 4885//4885 +f 4885//4885 8733//8733 4801//4801 +f 4801//4801 8733//8733 4807//4807 +f 4807//4807 8733//8733 8734//8734 +f 4858//4858 4807//4807 8734//8734 +f 4807//4807 4858//4858 4895//4895 +f 4895//4895 4858//4858 4894//4894 +f 4807//4807 4895//4895 8738//8738 +f 4895//4895 8735//8735 8738//8738 +f 8738//8738 8735//8735 8736//8736 +f 8736//8736 8735//8735 8737//8737 +f 8743//8743 8738//8738 8736//8736 +f 8743//8743 8736//8736 8740//8740 +f 8736//8736 8739//8739 8740//8740 +f 8740//8740 4898//4898 8743//8743 +f 4898//4898 4792//4792 8743//8743 +f 8743//8743 4792//4792 8741//8741 +f 4793//4793 8741//8741 4792//4792 +f 8743//8743 8741//8741 8742//8742 +f 4800//4800 8742//8742 8741//8741 +f 8743//8743 8742//8742 4797//4797 +f 4792//4792 4898//4898 8744//8744 +f 4898//4898 8740//8740 4900//4900 +f 8738//8738 8743//8743 4815//4815 +f 4815//4815 8743//8743 4816//4816 +f 8745//8745 8738//8738 4815//4815 +f 8746//8746 4807//4807 8738//8738 +f 4801//4801 4807//4807 4803//4803 +f 4886//4886 4885//4885 4801//4801 +f 4887//4887 8747//8747 4885//4885 +f 8748//8748 4893//4893 8747//8747 +f 8749//8749 8732//8732 4893//4893 +f 4870//4870 4863//4863 8732//8732 +f 8750//8750 8730//8730 8731//8731 +f 4861//4861 4862//4862 8730//8730 +f 8730//8730 4860//4860 4861//4861 +f 8728//8728 4968//4968 4967//4967 +f 8751//8751 4970//4970 8726//8726 +f 5521//5521 5523//5523 8695//8695 +f 5521//5521 5522//5522 5523//5523 +f 5521//5521 8752//8752 5522//5522 +f 5537//5537 8752//8752 5521//5521 +f 5537//5537 5521//5521 5536//5536 +f 5521//5521 8754//8754 5536//5536 +f 5521//5521 8753//8753 8754//8754 +f 5539//5539 8754//8754 8753//8753 +f 5521//5521 5520//5520 8753//8753 +f 5520//5520 8755//8755 8753//8753 +f 5520//5520 5205//5205 8755//8755 +f 8756//8756 8755//8755 5205//5205 +f 8756//8756 8757//8757 8755//8755 +f 8759//8759 8755//8755 8757//8757 +f 8755//8755 8759//8759 8758//8758 +f 8758//8758 8759//8759 5529//5529 +f 8759//8759 5542//5542 5529//5529 +f 5542//5542 8760//8760 5529//5529 +f 8760//8760 8762//8762 5529//5529 +f 8762//8762 5530//5530 5529//5529 +f 8762//8762 5528//5528 5530//5530 +f 8760//8760 8761//8761 8762//8762 +f 8761//8761 5533//5533 8762//8762 +f 8762//8762 5533//5533 5535//5535 +f 5533//5533 8761//8761 5540//5540 +f 8681//8681 5027//5027 4543//4543 +f 8763//8763 4543//4543 5027//5027 +f 4545//4545 4543//4543 8763//8763 +f 8764//8764 4545//4545 8763//8763 +f 5328//5328 4545//4545 8764//8764 +f 5329//5329 4545//4545 5328//5328 +f 8765//8765 4545//4545 5329//5329 +f 5335//5335 4545//4545 8765//8765 +f 4541//4541 4545//4545 5335//5335 +f 8766//8766 4541//4541 5335//5335 +f 8766//8766 5335//5335 5271//5271 +f 8768//8768 5271//5271 5335//5335 +f 8767//8767 5271//5271 8768//8768 +f 5272//5272 8767//8767 8768//8768 +f 8770//8770 5272//5272 8768//8768 +f 8769//8769 8770//8770 8768//8768 +f 8769//8769 8768//8768 5337//5337 +f 5337//5337 5282//5282 8769//8769 +f 5337//5337 4276//4276 5282//5282 +f 4763//4763 4276//4276 5337//5337 +f 4763//4763 4277//4277 4276//4276 +f 8771//8771 4277//4277 4763//4763 +f 8771//8771 4763//4763 8772//8772 +f 8772//8772 4763//4763 4767//4767 +f 4268//4268 8772//8772 4767//4767 +f 4268//4268 4767//4767 4766//4766 +f 4766//4766 8773//8773 4268//4268 +f 4766//4766 5396//5396 8773//8773 +f 5366//5366 8773//8773 5396//5396 +f 5395//5395 5366//5366 5396//5396 +f 8776//8776 5366//5366 5395//5395 +f 8774//8774 8776//8776 5395//5395 +f 8774//8774 8775//8775 8776//8776 +f 8775//8775 5365//5365 8776//8776 +f 5397//5397 5365//5365 8775//8775 +f 5397//5397 8777//8777 5365//5365 +f 5397//5397 4233//4233 8777//8777 +f 5397//5397 8778//8778 4233//4233 +f 4730//4730 4233//4233 8778//8778 +f 8780//8780 4233//4233 4730//4730 +f 8779//8779 8780//8780 4730//4730 +f 8784//8784 8779//8779 4730//4730 +f 8781//8781 8779//8779 8784//8784 +f 4234//4234 8781//8781 8784//8784 +f 4240//4240 4234//4234 8784//8784 +f 4241//4241 4240//4240 8784//8784 +f 8783//8783 4241//4241 8784//8784 +f 8782//8782 8783//8783 8784//8784 +f 8785//8785 8783//8783 8782//8782 +f 4239//4239 8783//8783 8785//8785 +f 4239//4239 8785//8785 4733//4733 +f 8786//8786 4239//4239 4733//4733 +f 8787//8787 4239//4239 8786//8786 +f 4239//4239 8787//8787 4199//4199 +f 4199//4199 8787//8787 8794//8794 +f 8787//8787 4736//4736 8794//8794 +f 8794//8794 4736//4736 8791//8791 +f 8791//8791 4736//4736 8788//8788 +f 8791//8791 8788//8788 8790//8790 +f 8790//8790 8788//8788 8789//8789 +f 4687//4687 8790//8790 8789//8789 +f 8791//8791 8790//8790 8792//8792 +f 8792//8792 8790//8790 8793//8793 +f 8791//8791 8797//8797 8794//8794 +f 8797//8797 4701//4701 8794//8794 +f 4644//4644 8794//8794 4701//4701 +f 4644//4644 4701//4701 4643//4643 +f 4640//4640 8794//8794 4644//4644 +f 4642//4642 4640//4640 4644//4644 +f 4640//4640 4641//4641 8794//8794 +f 8797//8797 4703//4703 4701//4701 +f 8795//8795 4701//4701 4703//4703 +f 4703//4703 8797//8797 4702//4702 +f 8791//8791 8796//8796 8797//8797 +f 4699//4699 8797//8797 8796//8796 +f 4698//4698 8796//8796 8791//8791 +f 4199//4199 8794//8794 8798//8798 +f 4646//4646 8798//8798 8794//8794 +f 4199//4199 8798//8798 4160//4160 +f 4160//4160 8798//8798 8799//8799 +f 8800//8800 4199//4199 4160//4160 +f 4160//4160 4159//4159 8800//8800 +f 8801//8801 4199//4199 8800//8800 +f 8808//8808 8801//8801 8800//8800 +f 8808//8808 8800//8800 8802//8802 +f 8802//8802 8800//8800 4151//4151 +f 4151//4151 8800//8800 4149//4149 +f 4151//4151 4150//4150 8802//8802 +f 8808//8808 8802//8802 8805//8805 +f 8802//8802 4209//4209 8805//8805 +f 8805//8805 4209//4209 4212//4212 +f 4209//4209 4207//4207 4212//4212 +f 4207//4207 8803//8803 4212//4212 +f 4207//4207 4209//4209 8804//8804 +f 8807//8807 8805//8805 4212//4212 +f 4212//4212 8806//8806 8807//8807 +f 4208//4208 4209//4209 8802//8802 +f 8805//8805 4197//4197 8808//8808 +f 8801//8801 8808//8808 8809//8809 +f 8810//8810 8766//8766 5271//5271 +f 4539//4539 4543//4543 4536//4536 +f 4543//4543 8811//8811 4536//4536 +f 4537//4537 4539//4539 4536//4536 +f 8812//8812 8813//8813 8680//8680 +f 8813//8813 4551//4551 8680//8680 +f 4557//4557 4555//4555 4554//4554 +f 8814//8814 5297//5297 5295//5295 +f 5297//5297 8814//8814 5299//5299 +f 5299//5299 8814//8814 5300//5300 +f 8815//8815 4497//4497 8816//8816 +f 4468//4468 4467//4467 8656//8656 +f 8653//8653 8657//8657 4390//4390 +f 4388//4388 4390//4390 8657//8657 +f 4392//4392 8653//8653 4390//4390 +f 4389//4389 4392//4392 4390//4390 +f 8653//8653 4392//4392 8817//8817 +f 4392//4392 4378//4378 8817//8817 +f 4376//4376 8653//8653 8817//8817 +f 4357//4357 8820//8820 8818//8818 +f 8820//8820 8654//8654 8819//8819 +f 8819//8819 8822//8822 8820//8820 +f 8820//8820 8822//8822 8821//8821 +f 8821//8821 8822//8822 4358//4358 +f 8823//8823 8824//8824 8655//8655 +f 4321//4321 8825//8825 4322//4322 +f 8827//8827 100//100 102//102 +f 8827//8827 102//102 8826//8826 +f 8827//8827 8826//8826 8829//8829 +f 8827//8827 8829//8829 8828//8828 +f 8829//8829 98//98 143//143 +f 8829//8829 143//143 140//140 +f 8829//8829 140//140 141//141 +f 8829//8829 141//141 8828//8828 +f 8833//8833 8830//8830 8831//8831 +f 8830//8830 143//143 8831//8831 +f 8831//8831 143//143 8832//8832 +f 143//143 98//98 8832//8832 +f 109//109 108//108 160//160 +f 109//109 160//160 168//168 +f 109//109 168//168 8833//8833 +f 109//109 8833//8833 8831//8831 +f 164//164 160//160 108//108 +f 164//164 108//108 8834//8834 +f 164//164 8834//8834 8835//8835 +f 164//164 8835//8835 165//165 +f 8836//8836 8837//8837 166//166 +f 8836//8836 166//166 165//165 +f 8836//8836 165//165 8835//8835 +f 1262//1262 1261//1261 8838//8838 +f 1262//1262 8838//8838 166//166 +f 1262//1262 166//166 8837//8837 +f 8838//8838 1261//1261 1263//1263 +f 8838//8838 1263//1263 1267//1267 +f 8838//8838 1267//1267 1266//1266 +f 8838//8838 1266//1266 1272//1272 +f 8838//8838 1272//1272 8839//8839 +f 8838//8838 8839//8839 81//81 +f 81//81 8839//8839 1271//1271 +f 81//81 1271//1271 1270//1270 +f 81//81 1270//1270 8841//8841 +f 81//81 8841//8841 8840//8840 +f 8840//8840 8841//8841 1256//1256 +f 8840//8840 1256//1256 8842//8842 +f 8840//8840 8842//8842 8845//8845 +f 8840//8840 8845//8845 8844//8844 +f 8843//8843 8844//8844 8845//8845 +f 8843//8843 8845//8845 186//186 +f 8843//8843 186//186 188//188 +f 8843//8843 188//188 8846//8846 +f 8843//8843 8846//8846 8847//8847 +f 8843//8843 8847//8847 8848//8848 +f 8849//8849 191//191 88//88 +f 8849//8849 88//88 8848//8848 +f 8849//8849 8848//8848 8847//8847 +f 8853//8853 94//94 8850//8850 +f 94//94 92//92 8850//8850 +f 8850//8850 92//92 190//190 +f 92//92 88//88 190//190 +f 190//190 88//88 191//191 +f 8851//8851 95//95 8852//8852 +f 95//95 96//96 8852//8852 +f 8852//8852 96//96 8854//8854 +f 96//96 8853//8853 8854//8854 +f 8854//8854 8853//8853 8855//8855 +f 8853//8853 8850//8850 8855//8855 +f 8852//8852 1514//1514 8851//8851 +f 1514//1514 8856//8856 8851//8851 +f 8851//8851 8856//8856 8865//8865 +f 8856//8856 8857//8857 8865//8865 +f 8865//8865 8857//8857 8858//8858 +f 1280//1280 8859//8859 8867//8867 +f 8859//8859 8861//8861 8867//8867 +f 8867//8867 8861//8861 8860//8860 +f 8861//8861 8863//8863 8860//8860 +f 8860//8860 8863//8863 8862//8862 +f 8863//8863 8864//8864 8862//8862 +f 8862//8862 8864//8864 8858//8858 +f 8864//8864 8865//8865 8858//8858 +f 8866//8866 1280//1280 8867//8867 +f 8866//8866 8867//8867 1512//1512 +f 8866//8866 1512//1512 8868//8868 +f 8866//8866 8868//8868 1542//1542 +f 8866//8866 1542//1542 1544//1544 +f 8866//8866 1544//1544 8869//8869 +f 1547//1547 1553//1553 8870//8870 +f 1547//1547 8870//8870 8871//8871 +f 1547//1547 8871//8871 686//686 +f 1547//1547 686//686 8869//8869 +f 1547//1547 8869//8869 1544//1544 +f 8870//8870 1553//1553 1520//1520 +f 1553//1553 1552//1552 1520//1520 +f 1520//1520 1552//1552 1521//1521 +f 1552//1552 1555//1555 1521//1521 +f 1521//1521 1555//1555 1519//1519 +f 1555//1555 1554//1554 1519//1519 +f 1519//1519 1554//1554 1518//1518 +f 1554//1554 8872//8872 1518//1518 +f 1518//1518 8872//8872 1522//1522 +f 8872//8872 1556//1556 1522//1522 +f 1522//1522 1556//1556 1523//1523 +f 1556//1556 8873//8873 1523//1523 +f 1523//1523 8873//8873 8874//8874 +f 8873//8873 1557//1557 8874//8874 +f 8874//8874 1557//1557 1558//1558 +f 8874//8874 1558//1558 1530//1530 +f 3263//3263 3265//3265 8875//8875 +f 3263//3263 8875//8875 8876//8876 +f 3263//3263 8876//8876 3266//3266 +f 3263//3263 3266//3266 8877//8877 +f 3263//3263 8877//8877 3259//3259 +f 3259//3259 8877//8877 3258//3258 +f 8877//8877 8881//8881 3258//3258 +f 3258//3258 8881//8881 3260//3260 +f 8881//8881 3250//3250 3260//3260 +f 3260//3260 3250//3250 8878//8878 +f 8880//8880 8879//8879 8884//8884 +f 8880//8880 8884//8884 3250//3250 +f 8880//8880 3250//3250 8881//8881 +f 3252//3252 3251//3251 8882//8882 +f 3251//3251 8884//8884 8882//8882 +f 8882//8882 8884//8884 8883//8883 +f 8884//8884 8879//8879 8883//8883 +f 8887//8887 8885//8885 3326//3326 +f 8885//8885 3247//3247 3326//3326 +f 3326//3326 3247//3247 3316//3316 +f 3247//3247 3252//3252 3316//3316 +f 3316//3316 3252//3252 8886//8886 +f 3252//3252 8882//8882 8886//8886 +f 8889//8889 8887//8887 3326//3326 +f 8889//8889 3326//3326 3324//3324 +f 8889//8889 3324//3324 8888//8888 +f 8889//8889 8888//8888 3317//3317 +f 8889//8889 3317//3317 8892//8892 +f 8889//8889 8892//8892 3235//3235 +f 3355//3355 8890//8890 8891//8891 +f 3355//3355 8891//8891 3235//3235 +f 3355//3355 3235//3235 8892//8892 +f 8893//8893 8894//8894 3359//3359 +f 8894//8894 8895//8895 3359//3359 +f 3359//3359 8895//8895 3357//3357 +f 8895//8895 8891//8891 3357//3357 +f 3357//3357 8891//8891 8890//8890 +f 3419//3419 8897//8897 8896//8896 +f 8897//8897 8894//8894 8896//8896 +f 8896//8896 8894//8894 8898//8898 +f 8894//8894 8893//8893 8898//8898 +f 8900//8900 3419//3419 8896//8896 +f 8900//8900 8896//8896 8899//8899 +f 8900//8900 8899//8899 3282//3282 +f 8900//8900 3282//3282 8901//8901 +f 8900//8900 8901//8901 8902//8902 +f 8900//8900 8902//8902 8904//8904 +f 8903//8903 3278//3278 3237//3237 +f 8903//8903 3237//3237 8904//8904 +f 8903//8903 8904//8904 8902//8902 +f 3277//3277 3276//3276 8905//8905 +f 3277//3277 8905//8905 3237//3237 +f 3277//3277 3237//3237 3278//3278 +f 8906//8906 3168//3168 8907//8907 +f 8906//8906 8907//8907 8905//8905 +f 8906//8906 8905//8905 3276//3276 +f 3171//3171 3172//3172 8908//8908 +f 3171//3171 8908//8908 8907//8907 +f 3171//3171 8907//8907 3168//3168 +f 3172//3172 3173//3173 8908//8908 +f 3173//3173 3165//3165 8908//8908 +f 8908//8908 3165//3165 8911//8911 +f 3165//3165 3166//3166 8911//8911 +f 8911//8911 3166//3166 3167//3167 +f 8909//8909 8910//8910 3386//3386 +f 8909//8909 3386//3386 8911//8911 +f 8909//8909 8911//8911 3167//3167 +f 8913//8913 8912//8912 3387//3387 +f 8913//8913 3387//3387 3386//3386 +f 8913//8913 3386//3386 8910//8910 +f 8914//8914 3385//3385 3202//3202 +f 3385//3385 3387//3387 3202//3202 +f 3202//3202 3387//3387 8915//8915 +f 3387//3387 8912//8912 8915//8915 +f 3443//3443 8916//8916 8917//8917 +f 8916//8916 8918//8918 8917//8917 +f 8917//8917 8918//8918 3207//3207 +f 8918//8918 8919//8919 3207//3207 +f 3207//3207 8919//8919 8920//8920 +f 8919//8919 8914//8914 8920//8920 +f 8920//8920 8914//8914 3202//3202 +f 3741//3741 8921//8921 8922//8922 +f 8921//8921 3430//3430 8922//8922 +f 8922//8922 3430//3430 3204//3204 +f 3430//3430 3433//3433 3204//3204 +f 3204//3204 3433//3433 8923//8923 +f 3433//3433 3432//3432 8923//8923 +f 8923//8923 3432//3432 8917//8917 +f 3432//3432 3443//3443 8917//8917 +f 8926//8926 8924//8924 3313//3313 +f 8926//8926 3313//3313 3315//3315 +f 8926//8926 3315//3315 3314//3314 +f 8926//8926 3314//3314 3403//3403 +f 8926//8926 3403//3403 8925//8925 +f 8926//8926 8925//8925 3405//3405 +f 8926//8926 3405//3405 3404//3404 +f 8926//8926 3404//3404 8935//8935 +f 8926//8926 8935//8935 8936//8936 +f 8926//8926 8936//8936 3741//3741 +f 8926//8926 3741//3741 8922//8922 +f 3198//3198 3310//3310 8928//8928 +f 3310//3310 8927//8927 8928//8928 +f 8928//8928 8927//8927 8929//8929 +f 8927//8927 8930//8930 8929//8929 +f 8929//8929 8930//8930 8924//8924 +f 8930//8930 8931//8931 8924//8924 +f 8924//8924 8931//8931 3313//3313 +f 3194//3194 8932//8932 3213//3213 +f 8932//8932 8933//8933 3213//3213 +f 3213//3213 8933//8933 8928//8928 +f 8933//8933 3197//3197 8928//8928 +f 8928//8928 3197//3197 3198//3198 +f 3187//3187 3194//3194 3213//3213 +f 3187//3187 3213//3213 8934//8934 +f 3187//3187 8934//8934 3192//3192 +f 3187//3187 3192//3192 3191//3191 +f 3187//3187 3191//3191 3189//3189 +f 8935//8935 3402//3402 8936//8936 +f 3402//3402 3401//3401 8936//8936 +f 8936//8936 3401//3401 8937//8937 +f 3401//3401 8938//8938 8937//8937 +f 8937//8937 8938//8938 8939//8939 +f 8942//8942 8937//8937 8939//8939 +f 8942//8942 8939//8939 8940//8940 +f 8942//8942 8940//8940 3429//3429 +f 8942//8942 3429//3429 8941//8941 +f 8942//8942 8941//8941 3739//3739 +f 3739//3739 8941//8941 3707//3707 +f 3739//3739 3707//3707 3709//3709 +f 3739//3739 3709//3709 8943//8943 +f 3739//3739 8943//8943 8945//8945 +f 8944//8944 3711//3711 3733//3733 +f 8944//8944 3733//3733 3732//3732 +f 8944//8944 3732//3732 8945//8945 +f 8944//8944 8945//8945 8943//8943 +f 3648//3648 3644//3644 8949//8949 +f 3644//3644 8946//8946 8949//8949 +f 8949//8949 8946//8946 3710//3710 +f 8946//8946 3733//3733 3710//3710 +f 3710//3710 3733//3733 8947//8947 +f 3733//3733 3711//3711 8947//8947 +f 8949//8949 8953//8953 8954//8954 +f 8949//8949 8954//8954 3651//3651 +f 8949//8949 3651//3651 8948//8948 +f 8949//8949 8948//8948 3656//3656 +f 8949//8949 3656//3656 3658//3658 +f 8949//8949 3658//3658 8950//8950 +f 8949//8949 8950//8950 3649//3649 +f 8949//8949 3649//3649 3645//3645 +f 8949//8949 3645//3645 8951//8951 +f 8949//8949 8951//8951 3648//3648 +f 8953//8953 8979//8979 8952//8952 +f 8953//8953 8952//8952 3662//3662 +f 8953//8953 3662//3662 3663//3663 +f 8953//8953 3663//3663 3654//3654 +f 8953//8953 3654//3654 8954//8954 +f 8955//8955 8976//8976 8952//8952 +f 8976//8976 8956//8956 8952//8952 +f 8952//8952 8956//8956 8958//8958 +f 8956//8956 8957//8957 8958//8958 +f 8958//8958 8957//8957 8959//8959 +f 8960//8960 8961//8961 3466//3466 +f 8961//8961 3484//3484 3466//3466 +f 3466//3466 3484//3484 3462//3462 +f 3484//3484 3483//3483 3462//3462 +f 3465//3465 3463//3463 3498//3498 +f 3465//3465 3498//3498 8962//8962 +f 3465//3465 8962//8962 8960//8960 +f 3465//3465 8960//8960 3466//3466 +f 3487//3487 3488//3488 8963//8963 +f 3488//3488 8965//8965 8963//8963 +f 8963//8963 8965//8965 8964//8964 +f 8965//8965 3498//3498 8964//8964 +f 8964//8964 3498//3498 3463//3463 +f 3468//3468 8966//8966 8967//8967 +f 3468//3468 8967//8967 3970//3970 +f 3468//3468 3970//3970 3487//3487 +f 3468//3468 3487//3487 8963//8963 +f 3980//3980 3955//3955 3520//3520 +f 3955//3955 8967//8967 3520//3520 +f 3520//3520 8967//8967 8968//8968 +f 8967//8967 8966//8966 8968//8968 +f 3980//3980 3520//3520 8969//8969 +f 3520//3520 3517//3517 8969//8969 +f 8969//8969 3517//3517 8970//8970 +f 3517//3517 8971//8971 8970//8970 +f 8970//8970 8971//8971 3983//3983 +f 8971//8971 3519//3519 3983//3983 +f 3983//3983 3519//3519 8972//8972 +f 8975//8975 3983//3983 8972//8972 +f 8975//8975 8972//8972 8973//8973 +f 8975//8975 8973//8973 3521//3521 +f 8975//8975 3521//3521 8974//8974 +f 8975//8975 8974//8974 3681//3681 +f 8975//8975 3681//3681 3682//3682 +f 8975//8975 3682//3682 8976//8976 +f 8976//8976 3682//3682 3668//3668 +f 8976//8976 3668//3668 3675//3675 +f 8976//8976 3675//3675 3673//3673 +f 8976//8976 3673//3673 8956//8956 +f 8977//8977 3977//3977 8978//8978 +f 3977//3977 8955//8955 8978//8978 +f 8978//8978 8955//8955 8979//8979 +f 8955//8955 8952//8952 8979//8979 +f 8980//8980 3953//3953 3423//3423 +f 3953//3953 3978//3978 3423//3423 +f 3423//3423 3978//3978 3421//3421 +f 3978//3978 8977//8977 3421//3421 +f 3421//3421 8977//8977 8978//8978 +f 3422//3422 8981//8981 8984//8984 +f 3422//3422 8984//8984 8982//8982 +f 3422//3422 8982//8982 3953//3953 +f 3422//3422 3953//3953 8980//8980 +f 8981//8981 8983//8983 8984//8984 +f 8983//8983 3459//3459 8984//8984 +f 8984//8984 3459//3459 8985//8985 +f 3459//3459 3454//3454 8985//8985 +f 8985//8985 3454//3454 3452//3452 +f 8989//8989 3979//3979 8987//8987 +f 3979//3979 8986//8986 8987//8987 +f 8987//8987 8986//8986 3452//3452 +f 8986//8986 8985//8985 3452//3452 +f 8989//8989 8987//8987 8988//8988 +f 8989//8989 8988//8988 3523//3523 +f 8989//8989 3523//3523 3524//3524 +f 8989//8989 3524//3524 3527//3527 +f 8989//8989 3527//3527 8990//8990 +f 8990//8990 3527//3527 3537//3537 +f 8990//8990 3537//3537 3535//3535 +f 8990//8990 3535//3535 3536//3536 +f 8990//8990 3536//3536 8992//8992 +f 8992//8992 3536//3536 8991//8991 +f 8992//8992 8991//8991 3608//3608 +f 8992//8992 3608//3608 8993//8993 +f 8992//8992 8993//8993 3610//3610 +f 8992//8992 3610//3610 8995//8995 +f 8995//8995 3610//3610 8994//8994 +f 8995//8995 8994//8994 8996//8996 +f 8995//8995 8996//8996 3606//3606 +f 8995//8995 3606//3606 8997//8997 +f 3606//3606 3605//3605 8997//8997 +f 3605//3605 8998//8998 8997//8997 +f 8997//8997 8998//8998 3956//3956 +f 8998//8998 7566//7566 3956//3956 +f 3956//3956 7566//7566 7898//7898 +f 7566//7566 7567//7567 7898//7898 +f 7898//7898 7567//7567 9000//9000 +f 7568//7568 7570//7570 8999//8999 +f 7568//7568 8999//8999 7898//7898 +f 7568//7568 7898//7898 9000//9000 +f 8999//8999 7570//7570 7569//7569 +f 8999//8999 7569//7569 9001//9001 +f 8999//8999 9001//9001 9002//9002 +f 8999//8999 9002//9002 9003//9003 +f 9003//9003 9002//9002 7481//7481 +f 9003//9003 7481//7481 7483//7483 +f 9003//9003 7483//7483 7473//7473 +f 9003//9003 7473//7473 7900//7900 +f 7900//7900 7473//7473 7474//7474 +f 7900//7900 7474//7474 9004//9004 +f 7900//7900 9004//9004 7470//7470 +f 7900//7900 7470//7470 7469//7469 +f 7900//7900 7469//7469 7913//7913 +f 7913//7913 7469//7469 7929//7929 +f 7469//7469 9005//9005 7929//7929 +f 7929//7929 9005//9005 7933//7933 +f 9005//9005 9006//9006 7933//7933 +f 7933//7933 9006//9006 7401//7401 +f 7906//7906 7933//7933 7401//7401 +f 7906//7906 7401//7401 7400//7400 +f 7906//7906 7400//7400 7410//7410 +f 7906//7906 7410//7410 9007//9007 +f 7906//7906 9007//9007 7907//7907 +f 9008//9008 7907//7907 9007//9007 +f 9008//9008 9007//9007 7380//7380 +f 9008//9008 7380//7380 7381//7381 +f 9008//9008 7381//7381 9011//9011 +f 9009//9009 7928//7928 7378//7378 +f 7928//7928 9010//9010 7378//7378 +f 7378//7378 9010//9010 7382//7382 +f 9010//9010 9011//9011 7382//7382 +f 7382//7382 9011//9011 7381//7381 +f 9101//9101 9012//9012 9100//9100 +f 9012//9012 7917//7917 9100//9100 +f 9100//9100 7917//7917 7379//7379 +f 7917//7917 9009//9009 7379//7379 +f 7379//7379 9009//9009 7378//7378 +f 7917//7917 9012//9012 9098//9098 +f 7917//7917 9098//9098 7631//7631 +f 7917//7917 7631//7631 7629//7629 +f 7917//7917 7629//7629 9013//9013 +f 7917//7917 9013//9013 9014//9014 +f 9014//9014 9013//9013 9015//9015 +f 9014//9014 9015//9015 7639//7639 +f 9014//9014 7639//7639 7467//7467 +f 9014//9014 7467//7467 9016//9016 +f 9014//9014 9016//9016 9017//9017 +f 9014//9014 9017//9017 9018//9018 +f 7930//7930 9019//9019 7465//7465 +f 9019//9019 9020//9020 7465//7465 +f 7465//7465 9020//9020 7464//7464 +f 9020//9020 9021//9021 7464//7464 +f 7464//7464 9021//9021 9022//9022 +f 9021//9021 9018//9018 9022//9022 +f 9022//9022 9018//9018 9023//9023 +f 9018//9018 9017//9017 9023//9023 +f 9025//9025 7930//7930 7465//7465 +f 9025//9025 7465//7465 7466//7466 +f 9025//9025 7466//7466 9024//9024 +f 9025//9025 9024//9024 9028//9028 +f 9025//9025 9028//9028 7436//7436 +f 9026//9026 9027//9027 7419//7419 +f 9027//9027 7922//7922 7419//7419 +f 7419//7419 7922//7922 9028//9028 +f 7922//7922 7436//7436 9028//9028 +f 9029//9029 9032//9032 9030//9030 +f 9029//9029 9030//9030 9026//9026 +f 9029//9029 9026//9026 7419//7419 +f 9031//9031 9034//9034 7449//7449 +f 9031//9031 7449//7449 7448//7448 +f 9031//9031 7448//7448 9030//9030 +f 9031//9031 9030//9030 9032//9032 +f 9034//9034 7412//7412 7435//7435 +f 9034//9034 7435//7435 9033//9033 +f 9034//9034 9033//9033 7449//7449 +f 7411//7411 9035//9035 9036//9036 +f 7411//7411 9036//9036 7435//7435 +f 7411//7411 7435//7435 7412//7412 +f 7172//7172 9041//9041 9043//9043 +f 7172//7172 9043//9043 7147//7147 +f 7172//7172 7147//7147 7144//7144 +f 7172//7172 7144//7144 9037//9037 +f 7172//7172 9037//9037 9038//9038 +f 7172//7172 9038//9038 9039//9039 +f 9041//9041 9040//9040 9046//9046 +f 9041//9041 9046//9046 7148//7148 +f 9041//9041 7148//7148 7150//7150 +f 9041//9041 7150//7150 9042//9042 +f 9041//9041 9042//9042 9043//9043 +f 7167//7167 9048//9048 9044//9044 +f 7167//7167 9044//9044 9045//9045 +f 7167//7167 9045//9045 9046//9046 +f 7167//7167 9046//9046 9040//9040 +f 9048//9048 9058//9058 9047//9047 +f 9048//9048 9047//9047 7362//7362 +f 9048//9048 7362//7362 7363//7363 +f 9048//9048 7363//7363 9049//9049 +f 9048//9048 9049//9049 9050//9050 +f 9048//9048 9050//9050 9051//9051 +f 9048//9048 9051//9051 9052//9052 +f 9048//9048 9052//9052 7269//7269 +f 9048//9048 7269//7269 9044//9044 +f 9053//9053 7358//7358 9115//9115 +f 7358//7358 9047//9047 9115//9115 +f 9115//9115 9047//9047 9054//9054 +f 9047//9047 9058//9058 9054//9054 +f 9054//9054 9058//9058 7696//7696 +f 9058//9058 9057//9057 7696//7696 +f 7399//7399 9055//9055 7162//7162 +f 9055//9055 7388//7388 7162//7162 +f 7162//7162 7388//7388 7169//7169 +f 7388//7388 7386//7386 7169//7169 +f 7169//7169 7386//7386 9056//9056 +f 7386//7386 9057//9057 9056//9056 +f 9056//9056 9057//9057 9058//9058 +f 9064//9064 9059//9059 7163//7163 +f 9059//9059 9060//9060 7163//7163 +f 7163//7163 9060//9060 7164//7164 +f 9060//9060 9061//9061 7164//7164 +f 7164//7164 9061//9061 9063//9063 +f 9061//9061 9062//9062 9063//9063 +f 9063//9063 9062//9062 7162//7162 +f 9062//9062 7399//7399 7162//7162 +f 9064//9064 7163//7163 7154//7154 +f 9064//9064 7154//7154 7156//7156 +f 9064//9064 7156//7156 9065//9065 +f 9064//9064 9065//9065 9066//9066 +f 9065//9065 7158//7158 9066//9066 +f 7158//7158 7122//7122 9066//9066 +f 9066//9066 7122//7122 9067//9067 +f 7122//7122 7123//7123 9067//9067 +f 9067//9067 7123//7123 7121//7121 +f 9068//9068 7127//7127 9070//9070 +f 9068//9068 9070//9070 9067//9067 +f 9068//9068 9067//9067 7121//7121 +f 7127//7127 9069//9069 9070//9070 +f 9069//9069 7128//7128 9070//9070 +f 9070//9070 7128//7128 7355//7355 +f 7128//7128 7126//7126 7355//7355 +f 7355//7355 7126//7126 9071//9071 +f 7353//7353 7355//7355 9071//9071 +f 7353//7353 9071//9071 9072//9072 +f 7353//7353 9072//9072 7236//7236 +f 7353//7353 7236//7236 7352//7352 +f 7236//7236 7240//7240 7352//7352 +f 7240//7240 7238//7238 7352//7352 +f 7352//7352 7238//7238 9073//9073 +f 7238//7238 9074//9074 9073//9073 +f 9073//9073 9074//9074 7195//7195 +f 9074//9074 7246//7246 7195//7195 +f 7195//7195 7246//7246 9076//9076 +f 7376//7376 9075//9075 7231//7231 +f 9075//9075 7195//7195 7231//7231 +f 7231//7231 7195//7195 9077//9077 +f 7195//7195 9076//9076 9077//9077 +f 9079//9079 7376//7376 7231//7231 +f 9079//9079 7231//7231 7316//7316 +f 9079//9079 7316//7316 9078//9078 +f 9079//9079 9078//9078 9080//9080 +f 9079//9079 9080//9080 9082//9082 +f 7317//7317 7312//7312 9081//9081 +f 7317//7317 9081//9081 9082//9082 +f 7317//7317 9082//9082 9080//9080 +f 9083//9083 9085//9085 7313//7313 +f 9085//9085 9084//9084 7313//7313 +f 7313//7313 9084//9084 7314//7314 +f 9084//9084 9081//9081 7314//7314 +f 7314//7314 9081//9081 7312//7312 +f 9085//9085 9083//9083 7308//7308 +f 9085//9085 7308//7308 7280//7280 +f 9085//9085 7280//7280 9089//9089 +f 9085//9085 9089//9089 9086//9086 +f 7270//7270 9087//9087 7271//7271 +f 9087//9087 9088//9088 7271//7271 +f 7271//7271 9088//9088 9089//9089 +f 9088//9088 7194//7194 9089//9089 +f 9089//9089 7194//7194 9086//9086 +f 7276//7276 7277//7277 9090//9090 +f 7276//7276 9090//9090 7208//7208 +f 7276//7276 7208//7208 9087//9087 +f 7276//7276 9087//9087 7270//7270 +f 7277//7277 9091//9091 9090//9090 +f 9091//9091 9092//9092 9090//9090 +f 9090//9090 9092//9092 7209//7209 +f 9092//9092 9093//9093 7209//7209 +f 7209//7209 9093//9093 7207//7207 +f 9093//9093 7221//7221 7207//7207 +f 7207//7207 7221//7221 9094//9094 +f 9096//9096 9095//9095 9097//9097 +f 9096//9096 9097//9097 7220//7220 +f 9096//9096 7220//7220 7221//7221 +f 9096//9096 7221//7221 9093//9093 +f 9118//9118 7218//7218 7226//7226 +f 7218//7218 9097//9097 7226//7226 +f 7226//7226 9097//9097 7229//7229 +f 9097//9097 9095//9095 7229//7229 +f 7627//7627 7626//7626 7625//7625 +f 7627//7627 7625//7625 9098//9098 +f 7627//7627 9098//9098 9012//9012 +f 7608//7608 9099//9099 9104//9104 +f 9099//9099 7610//7610 9104//9104 +f 9104//9104 7610//7610 9100//9100 +f 7610//7610 7609//7609 9100//9100 +f 9100//9100 7609//7609 9101//9101 +f 9104//9104 7377//7377 7601//7601 +f 9104//9104 7601//7601 7602//7602 +f 9104//9104 7602//7602 9102//9102 +f 9104//9104 9102//9102 9103//9103 +f 9104//9104 9103//9103 9105//9105 +f 9104//9104 9105//9105 9106//9106 +f 9104//9104 9106//9106 7611//7611 +f 9104//9104 7611//7611 7606//7606 +f 9104//9104 7606//7606 7608//7608 +f 9107//9107 7601//7601 7377//7377 +f 9107//9107 7377//7377 9108//9108 +f 9107//9107 9108//9108 9109//9109 +f 9107//9107 9109//9109 7669//7669 +f 9107//9107 7669//7669 9110//9110 +f 9110//9110 7669//7669 9111//9111 +f 7669//7669 7666//7666 9111//9111 +f 9111//9111 7666//7666 9112//9112 +f 7666//7666 7667//7667 9112//9112 +f 9112//9112 7667//7667 7668//7668 +f 7665//7665 9113//9113 7689//7689 +f 7665//7665 7689//7689 9112//9112 +f 7665//7665 9112//9112 7668//7668 +f 9113//9113 7384//7384 7689//7689 +f 7384//7384 9114//9114 7689//7689 +f 7689//7689 9114//9114 9116//9116 +f 9114//9114 7356//7356 9116//9116 +f 9116//9116 7356//7356 7357//7357 +f 7357//7357 9053//9053 9115//9115 +f 7357//7357 9115//9115 9116//9116 +f 9105//9105 9103//9103 9117//9117 +f 9118//9118 7226//7226 9119//9119 +f 7362//7362 9047//9047 7361//7361 +f 9132//9132 4649//4649 9120//9120 +f 4649//4649 9121//9121 9120//9120 +f 9120//9120 9121//9121 5506//5506 +f 9121//9121 9122//9122 5506//5506 +f 5506//5506 9122//9122 9124//9124 +f 9122//9122 9123//9123 9124//9124 +f 9124//9124 9123//9123 9125//9125 +f 9123//9123 5483//5483 9125//9125 +f 9125//9125 5483//5483 9126//9126 +f 5483//5483 9127//9127 9126//9126 +f 9126//9126 9127//9127 9128//9128 +f 9127//9127 5479//5479 9128//9128 +f 9128//9128 5479//5479 5508//5508 +f 5479//5479 9129//9129 5508//5508 +f 5508//5508 9129//9129 9130//9130 +f 9129//9129 9131//9131 9130//9130 +f 9130//9130 9131//9131 5486//5486 +f 9132//9132 9120//9120 9133//9133 +f 9120//9120 9134//9134 9133//9133 +f 9133//9133 9134//9134 9135//9135 +f 9134//9134 5494//5494 9135//9135 +f 9135//9135 5494//5494 5468//5468 +f 9137//9137 4654//4654 9136//9136 +f 4654//4654 9135//9135 9136//9136 +f 9136//9136 9135//9135 5469//5469 +f 9135//9135 5468//5468 5469//5469 +f 9137//9137 9136//9136 5249//5249 +f 9136//9136 9138//9138 5249//5249 +f 5249//5249 9138//9138 9140//9140 +f 9138//9138 9139//9139 9140//9140 +f 9140//9140 9139//9139 9141//9141 +f 9139//9139 5470//5470 9141//9141 +f 9141//9141 5470//5470 4147//4147 +f 5470//5470 9142//9142 4147//4147 +f 4147//4147 9142//9142 5473//5473 +f 9143//9143 4147//4147 5473//5473 +f 9143//9143 5473//5473 5474//5474 +f 9143//9143 5474//5474 9144//9144 +f 9143//9143 9144//9144 9145//9145 +f 9145//9145 9144//9144 9146//9146 +f 9144//9144 9147//9147 9146//9146 +f 9146//9146 9147//9147 4073//4073 +f 9147//9147 9148//9148 4073//4073 +f 4073//4073 9148//9148 9151//9151 +f 4166//4166 4070//4070 9149//9149 +f 4070//4070 4072//4072 9149//9149 +f 9149//9149 4072//4072 9151//9151 +f 4072//4072 9150//9150 9151//9151 +f 9151//9151 9150//9150 4073//4073 +f 4163//4163 9155//9155 9152//9152 +f 9155//9155 9153//9153 9152//9152 +f 9152//9152 9153//9153 4165//4165 +f 9153//9153 4070//4070 4165//4165 +f 4165//4165 4070//4070 4166//4166 +f 9155//9155 4163//4163 9154//9154 +f 9155//9155 9154//9154 9156//9156 +f 9155//9155 9156//9156 4162//4162 +f 9155//9155 4162//4162 4067//4067 +f 9157//9157 4067//4067 4162//4162 +f 9157//9157 4162//4162 9158//9158 +f 9157//9157 9158//9158 9159//9159 +f 9157//9157 9159//9159 9160//9160 +f 9157//9157 9160//9160 9163//9163 +f 9163//9163 9160//9160 9161//9161 +f 9163//9163 9161//9161 9162//9162 +f 9163//9163 9162//9162 5240//5240 +f 9163//9163 5240//5240 9165//9165 +f 9165//9165 5240//5240 5241//5241 +f 9165//9165 5241//5241 5239//5239 +f 9165//9165 5239//5239 9164//9164 +f 9165//9165 9164//9164 5233//5233 +f 9165//9165 5233//5233 5232//5232 +f 9165//9165 5232//5232 9166//9166 +f 9165//9165 9166//9166 4134//4134 +f 9166//9166 5231//5231 4134//4134 +f 5231//5231 5229//5229 4134//4134 +f 4134//4134 5229//5229 4135//4135 +f 5229//5229 9167//9167 4135//4135 +f 4135//4135 9167//9167 4140//4140 +f 9167//9167 9168//9168 4140//4140 +f 4140//4140 9168//9168 9169//9169 +f 4144//4144 4137//4137 4084//4084 +f 4137//4137 4136//4136 4084//4084 +f 4084//4084 4136//4136 9169//9169 +f 4136//4136 4140//4140 9169//9169 +f 4085//4085 9170//9170 9171//9171 +f 4085//4085 9171//9171 4143//4143 +f 4085//4085 4143//4143 4144//4144 +f 4085//4085 4144//4144 4084//4084 +f 4115//4115 9172//9172 9173//9173 +f 9172//9172 9171//9171 9173//9173 +f 9173//9173 9171//9171 4081//4081 +f 9171//9171 9170//9170 4081//4081 +f 9173//9173 9175//9175 4113//4113 +f 9173//9173 4113//4113 9174//9174 +f 9173//9173 9174//9174 4115//4115 +f 4113//4113 9175//9175 4078//4078 +f 4113//4113 4078//4078 9176//9176 +f 4113//4113 9176//9176 4088//4088 +f 4113//4113 4088//4088 4112//4112 +# 18334 faces, 0 coords texture + +# End of File \ No newline at end of file diff --git a/tests/data/ipadstand.obj b/tests/data/ipadstand.obj new file mode 100644 index 000000000..d2ca1902d --- /dev/null +++ b/tests/data/ipadstand.obj @@ -0,0 +1,86 @@ +v 17.434467 -0.000000 9.500000 +v 14.281480 10.000000 9.500000 +v 0.000000 0.000000 9.500000 +v 31.715948 10.000000 9.500000 +v 62.234474 0.000000 20.000000 +v 31.715948 10.000000 20.000000 +v 17.434467 -0.000000 20.000000 +v 62.234474 10.000000 20.000000 +v 98.207970 10.000000 0.000000 +v 98.207970 0.000000 10.000000 +v 98.207970 0.000000 0.000000 +v 98.207970 10.000000 20.000000 +v 98.207970 0.000000 20.000000 +v 81.660965 -0.000000 10.000000 +v 90.054985 10.000000 10.000000 +v 78.507980 10.000000 10.000000 +v 93.207970 0.000000 10.000000 +v 14.281480 10.000000 20.000000 +v 0.000000 0.000000 20.000000 +v 87.434471 0.000000 20.000000 +v 84.281479 10.000000 20.000000 +v 0.000000 10.000000 20.000000 +v 0.000000 0.000000 0.000000 +v 0.000000 10.000000 0.000000 +v 62.234474 0.000000 30.000000 +v 66.960976 10.000000 30.000000 +v 62.234474 10.000000 30.000000 +v 70.113960 0.000000 30.000000 +v 67.705338 10.000000 28.710720 +v 71.678711 0.000000 27.289770 +f 1 2 3 +f 2 1 4 +f 5 6 7 +f 6 5 8 +f 9 10 11 +f 10 12 13 +f 12 10 9 +f 14 15 16 +f 15 14 17 +f 18 3 2 +f 3 18 19 +f 20 12 21 +f 12 20 13 +f 18 22 19 +f 22 3 19 +f 3 22 23 +f 23 22 24 +f 9 23 24 +f 23 9 11 +f 25 26 27 +f 26 25 28 +f 24 2 9 +f 2 24 22 +f 2 22 18 +f 6 16 4 +f 16 6 8 +f 16 8 29 +f 29 8 27 +f 29 27 26 +f 9 15 12 +f 15 9 4 +f 4 9 2 +f 15 4 16 +f 12 15 21 +f 27 5 25 +f 5 27 8 +f 13 17 10 +f 17 13 20 +f 30 5 14 +f 5 30 25 +f 25 30 28 +f 10 23 11 +f 23 10 1 +f 1 10 17 +f 1 17 14 +f 1 14 7 +f 7 14 5 +f 3 23 1 +f 20 15 17 +f 15 20 21 +f 16 30 14 +f 30 26 28 +f 26 30 16 +f 26 16 29 +f 7 4 1 +f 4 7 6 diff --git a/tests/data/overhang.obj b/tests/data/overhang.obj new file mode 100644 index 000000000..c7f92086d --- /dev/null +++ b/tests/data/overhang.obj @@ -0,0 +1,179 @@ +v 1364.685059 614.398010 20.002499 +v 1389.685059 614.398010 20.002499 +v 1377.185059 589.398987 20.002499 +v 1389.685059 589.398987 20.002499 +v 1389.685059 564.398987 20.001499 +v 1364.685059 589.398987 20.002499 +v 1364.685059 564.398987 20.001499 +v 1360.935059 589.398987 17.001499 +v 1360.935059 585.646973 17.001499 +v 1357.185059 564.398987 17.001499 +v 1364.685059 589.398987 17.001499 +v 1364.685059 571.899963 17.001499 +v 1364.685059 564.398987 17.001499 +v 1348.436035 564.398987 17.001499 +v 1352.809082 589.398987 17.001499 +v 1357.184082 589.398987 17.001499 +v 1357.183105 614.398010 17.001499 +v 1364.685059 606.895996 17.001499 +v 1364.685059 614.398010 17.001499 +v 1352.186035 564.398987 20.001499 +v 1363.654053 589.398987 23.300499 +v 1359.467041 589.398987 23.300499 +v 1358.371094 564.398987 23.300499 +v 1385.561035 564.398987 23.300499 +v 1373.063110 589.398987 23.300499 +v 1368.808105 564.398987 23.300499 +v 1387.623047 589.398987 23.300499 +v 1387.623047 585.276001 23.300499 +v 1389.685059 589.398987 23.300499 +v 1389.685059 572.645996 23.300499 +v 1389.685059 564.398987 23.300499 +v 1367.777100 589.398987 23.300499 +v 1366.747070 564.398987 23.300499 +v 1354.312012 589.398987 23.300499 +v 1352.186035 564.398987 23.300499 +v 1389.685059 614.398010 23.300499 +v 1377.317017 614.398010 23.300499 +v 1381.439087 589.398987 23.300499 +v 1368.807007 614.398010 23.300499 +v 1368.808105 589.398987 23.300499 +v 1356.439087 614.398010 23.300499 +v 1357.405029 589.398987 23.300499 +v 1360.562012 614.398010 23.300499 +v 1348.705078 614.398010 23.300499 +v 1350.445068 589.398987 23.300499 +v 1389.685059 606.153015 23.300499 +v 1347.352051 589.398987 23.300499 +v 1346.560059 589.398987 23.300499 +v 1346.560059 594.159912 17.001499 +v 1346.560059 589.398987 17.001499 +v 1346.560059 605.250427 23.300499 +v 1346.560059 614.398010 23.300499 +v 1346.560059 614.398010 20.825829 +v 1346.560059 614.398010 17.001499 +v 1346.560059 564.398987 19.101339 +v 1346.560059 567.548584 23.300499 +v 1346.560059 564.398987 17.002033 +v 1346.560059 564.398987 23.001850 +v 1346.560059 564.398987 23.300499 +v 1346.560059 575.118958 17.001499 +v 1346.560059 574.754028 23.300499 +f 1 2 3 +f 3 4 5 +f 3 6 1 +f 5 7 3 +f 3 7 6 +f 3 2 4 +f 8 9 10 +f 11 10 9 +f 12 10 11 +f 13 10 12 +f 10 14 15 +f 8 16 17 +f 11 18 1 +f 11 1 6 +f 13 12 7 +f 19 17 1 +f 7 20 14 +f 7 14 10 +f 10 13 7 +f 18 19 1 +f 12 11 6 +f 12 6 7 +f 15 17 16 +f 18 8 19 +f 17 19 8 +f 15 16 10 +f 8 10 16 +f 8 18 9 +f 11 9 18 +f 21 22 23 +f 24 25 26 +f 27 24 28 +f 29 28 24 +f 30 29 24 +f 31 30 24 +f 26 32 33 +f 23 34 35 +f 36 37 38 +f 25 39 40 +f 22 41 42 +f 39 43 21 +f 34 44 45 +f 7 5 24 +f 7 24 26 +f 37 36 2 +f 2 1 39 +f 2 39 37 +f 30 31 5 +f 26 33 7 +f 41 43 1 +f 36 46 2 +f 5 4 29 +f 5 29 30 +f 4 2 46 +f 4 46 29 +f 23 35 20 +f 20 7 33 +f 20 33 23 +f 43 39 1 +f 31 24 5 +f 1 17 44 +f 1 44 41 +f 25 38 37 +f 39 25 37 +f 25 24 38 +f 38 24 27 +f 23 33 21 +f 21 33 32 +f 34 42 41 +f 44 34 41 +f 46 36 27 +f 38 27 36 +f 34 45 35 +f 45 44 47 +f 21 43 22 +f 41 22 43 +f 32 40 39 +f 21 32 39 +f 34 23 42 +f 22 42 23 +f 32 26 40 +f 25 40 26 +f 27 28 46 +f 29 46 28 +f 48 49 50 +f 48 51 49 +f 52 49 51 +f 53 49 52 +f 54 49 53 +f 55 56 57 +f 58 56 55 +f 59 56 58 +f 50 60 48 +f 61 57 56 +f 60 57 61 +f 61 48 60 +f 49 54 17 +f 57 14 20 +f 55 57 20 +f 57 60 14 +f 60 50 15 +f 60 15 14 +f 50 49 17 +f 50 17 15 +f 45 47 61 +f 45 61 56 +f 52 51 44 +f 20 35 59 +f 20 59 58 +f 54 53 17 +f 44 17 53 +f 44 53 52 +f 58 55 20 +f 48 61 47 +f 56 59 35 +f 56 35 45 +f 51 48 47 +f 51 47 44 diff --git a/tests/data/pyramid.obj b/tests/data/pyramid.obj new file mode 100644 index 000000000..36603295e --- /dev/null +++ b/tests/data/pyramid.obj @@ -0,0 +1,11 @@ +v 10.000000 10.000000 40.000000 +v 0.000000 0.000000 0.000000 +v 20.000000 0.000000 0.000000 +v 20.000000 20.000000 0.000000 +v 0.000000 20.000000 0.000000 +f 1 2 3 +f 1 4 5 +f 4 2 5 +f 2 4 3 +f 4 1 3 +f 5 2 1 diff --git a/tests/data/sloping_hole.obj b/tests/data/sloping_hole.obj new file mode 100644 index 000000000..57b6b419c --- /dev/null +++ b/tests/data/sloping_hole.obj @@ -0,0 +1,204 @@ +v -20.000000 -20.000000 -5.000000 +v -20.000000 -20.000000 5.000000 +v -20.000000 20.000000 -5.000000 +v -20.000000 20.000000 5.000000 +v 20.000000 -20.000000 -5.000000 +v 20.000000 -20.000000 5.000000 +v 4.462940 7.431450 -5.000000 +v 20.000000 20.000000 -5.000000 +v -19.142099 0.000000 -5.000000 +v -18.833099 -2.079120 -5.000000 +v -17.919500 -4.067370 -5.000000 +v -16.441200 -5.877850 -5.000000 +v -14.462900 -7.431450 -5.000000 +v -12.071100 -8.660250 -5.000000 +v -9.370160 -9.510560 -5.000000 +v -3.521740 -9.945220 -5.000000 +v -6.478260 -9.945220 -5.000000 +v -0.629840 -9.510560 -5.000000 +v 2.071070 -8.660250 -5.000000 +v 6.441230 -5.877850 -5.000000 +v 4.462940 -7.431450 -5.000000 +v -12.071100 8.660250 -5.000000 +v -9.370160 9.510560 -5.000000 +v 7.919480 -4.067370 -5.000000 +v 8.833100 -2.079120 -5.000000 +v -6.478260 9.945220 -5.000000 +v -0.629840 9.510560 -5.000000 +v 2.071070 8.660250 -5.000000 +v 9.142140 0.000000 -5.000000 +v 8.833100 2.079120 -5.000000 +v -3.521740 9.945220 -5.000000 +v 7.919480 4.067370 -5.000000 +v 6.441230 5.877850 -5.000000 +v -14.462900 7.431450 -5.000000 +v -16.441200 5.877850 -5.000000 +v -17.919500 4.067370 -5.000000 +v -18.833099 2.079120 -5.000000 +v 20.000000 20.000000 5.000000 +v 3.521740 -9.945220 5.000000 +v -8.833100 -2.079120 5.000000 +v -9.142140 0.000000 5.000000 +v -8.833100 2.079120 5.000000 +v 6.478260 -9.945220 5.000000 +v -7.919480 4.067370 5.000000 +v -6.441230 5.877850 5.000000 +v -4.462940 7.431450 5.000000 +v -2.071070 8.660250 5.000000 +v 0.629840 9.510560 5.000000 +v 12.071100 -8.660250 5.000000 +v 9.370160 -9.510560 5.000000 +v 3.521740 9.945220 5.000000 +v 6.478260 9.945220 5.000000 +v 9.370160 9.510560 5.000000 +v 12.071100 8.660250 5.000000 +v 14.462900 7.431450 5.000000 +v 16.441200 -5.877850 5.000000 +v 14.462900 -7.431450 5.000000 +v 16.441200 5.877850 5.000000 +v 17.919500 4.067370 5.000000 +v 18.833099 -2.079120 5.000000 +v 17.919500 -4.067370 5.000000 +v 18.833099 2.079120 5.000000 +v 19.142099 0.000000 5.000000 +v 0.629840 -9.510560 5.000000 +v -2.071070 -8.660250 5.000000 +v -4.462940 -7.431450 5.000000 +v -6.441230 -5.877850 5.000000 +v -7.919480 -4.067370 5.000000 +f 1 2 3 +f 3 2 4 +f 2 1 5 +f 6 2 5 +f 7 3 8 +f 1 3 9 +f 1 9 10 +f 1 10 11 +f 1 11 12 +f 1 12 13 +f 1 13 14 +f 1 14 5 +f 14 15 5 +f 16 5 17 +f 18 5 16 +f 19 5 18 +f 20 5 21 +f 19 21 5 +f 22 3 23 +f 5 20 24 +f 5 24 8 +f 24 25 8 +f 23 3 26 +f 27 3 28 +f 29 30 8 +f 26 3 31 +f 30 32 8 +f 31 3 27 +f 32 33 8 +f 28 3 7 +f 33 7 8 +f 29 8 25 +f 34 3 22 +f 35 3 34 +f 36 3 35 +f 37 3 36 +f 9 3 37 +f 17 5 15 +f 3 4 8 +f 8 4 38 +f 39 2 6 +f 4 2 40 +f 4 40 41 +f 4 41 42 +f 43 39 6 +f 4 42 44 +f 4 44 45 +f 38 4 46 +f 38 46 47 +f 38 47 48 +f 49 50 6 +f 38 48 51 +f 50 43 6 +f 38 51 52 +f 38 52 53 +f 38 53 54 +f 38 54 55 +f 56 57 6 +f 38 55 58 +f 38 58 59 +f 60 61 6 +f 38 59 62 +f 38 63 6 +f 38 62 63 +f 63 60 6 +f 61 56 6 +f 64 2 39 +f 65 2 64 +f 66 2 65 +f 67 2 66 +f 68 2 67 +f 40 2 68 +f 45 46 4 +f 57 49 6 +f 6 5 8 +f 38 6 8 +f 42 41 37 +f 37 41 9 +f 40 10 41 +f 41 10 9 +f 44 42 36 +f 36 42 37 +f 45 44 35 +f 35 44 36 +f 34 46 45 +f 35 34 45 +f 22 47 46 +f 34 22 46 +f 23 48 47 +f 22 23 47 +f 26 51 48 +f 23 26 48 +f 31 52 51 +f 26 31 51 +f 27 53 52 +f 31 27 52 +f 28 54 53 +f 27 28 53 +f 7 55 54 +f 28 7 54 +f 33 58 55 +f 7 33 55 +f 32 59 58 +f 33 32 58 +f 30 62 59 +f 32 30 59 +f 29 63 62 +f 30 29 62 +f 60 63 29 +f 25 60 29 +f 61 60 25 +f 24 61 25 +f 56 61 24 +f 20 56 24 +f 56 20 57 +f 57 20 21 +f 57 21 49 +f 49 21 19 +f 49 19 50 +f 50 19 18 +f 50 18 43 +f 43 18 16 +f 43 16 39 +f 39 16 17 +f 39 17 64 +f 64 17 15 +f 64 15 65 +f 65 15 14 +f 65 14 66 +f 66 14 13 +f 66 13 67 +f 67 13 12 +f 67 12 68 +f 68 12 11 +f 68 11 40 +f 40 11 10 diff --git a/tests/data/small_dorito.obj b/tests/data/small_dorito.obj new file mode 100644 index 000000000..c53a11028 --- /dev/null +++ b/tests/data/small_dorito.obj @@ -0,0 +1,14 @@ +v 6.000589 -22.998209 0.000000 +v 22.001024 -49.999874 0.000000 +v -9.999578 -49.999870 0.000000 +v 6.000714 -32.237164 28.001925 +v 11.167055 -37.972702 18.960167 +v 6.000602 -26.539246 10.732185 +f 1 2 3 +f 4 5 6 +f 3 2 5 +f 3 5 4 +f 3 4 6 +f 3 6 1 +f 6 5 2 +f 6 2 1 diff --git a/tests/data/two_hollow_squares.obj b/tests/data/two_hollow_squares.obj new file mode 100644 index 000000000..c4727988b --- /dev/null +++ b/tests/data/two_hollow_squares.obj @@ -0,0 +1,144 @@ +v 66.713348 104.286667 0.000000 +v 66.713348 95.713333 0.000000 +v 65.666687 94.666672 0.000000 +v 75.286682 95.713333 0.000000 +v 76.333344 105.333336 0.000000 +v 76.333344 94.666672 0.000000 +v 65.666687 105.333328 0.000000 +v 75.286682 104.286667 0.000000 +v 71.106682 104.586662 2.800000 +v 66.413353 104.586662 2.800000 +v 75.586685 104.586662 2.800000 +v 66.413353 99.893333 2.800000 +v 66.413353 95.413338 2.800000 +v 71.106682 95.413338 2.800000 +v 75.586685 95.413338 2.800000 +v 75.586685 100.106667 2.800000 +v 74.540016 103.540001 2.800000 +v 70.032013 103.540001 2.800000 +v 67.460007 103.540001 2.800000 +v 67.460007 100.968002 2.800000 +v 67.460007 96.459999 2.800000 +v 74.540016 99.031998 2.800000 +v 74.540016 96.459999 2.800000 +v 70.032013 96.459999 2.800000 +v 123.666718 94.666672 0.000000 +v 134.333313 94.666672 0.000000 +v 124.413361 95.413338 2.800000 +v 129.106674 95.413338 2.800000 +v 133.586670 95.413338 2.800000 +v 123.666718 105.333328 0.000000 +v 124.413361 104.586662 2.800000 +v 124.413361 99.893333 2.800000 +v 134.333313 105.333328 0.000000 +v 129.106674 104.586662 2.800000 +v 133.586670 104.586662 2.800000 +v 133.586670 100.106667 2.800000 +v 124.713318 104.286667 0.000000 +v 124.713318 95.713333 0.000000 +v 133.286713 95.713333 0.000000 +v 133.286713 104.286667 0.000000 +v 132.540024 103.540001 2.800000 +v 128.032028 103.540009 2.800000 +v 125.460007 103.540001 2.800000 +v 125.460007 100.968002 2.800000 +v 125.460007 96.459999 2.800000 +v 132.540024 99.031998 2.800000 +v 132.540024 96.459999 2.800000 +v 128.032028 96.459999 2.800000 +f 1 2 3 +f 4 5 6 +f 7 5 1 +f 7 1 3 +f 3 2 6 +f 8 5 4 +f 2 4 6 +f 1 5 8 +f 5 7 9 +f 7 10 9 +f 5 9 11 +f 7 3 10 +f 3 12 10 +f 3 13 12 +f 3 6 13 +f 6 14 13 +f 6 15 14 +f 5 11 16 +f 6 5 15 +f 5 16 15 +f 8 17 18 +f 1 8 19 +f 8 18 19 +f 2 20 21 +f 2 1 20 +f 1 19 20 +f 8 4 22 +f 4 23 22 +f 8 22 17 +f 4 24 23 +f 4 2 24 +f 2 21 24 +f 25 26 27 +f 26 28 27 +f 26 29 28 +f 30 25 31 +f 25 32 31 +f 25 27 32 +f 33 30 34 +f 30 31 34 +f 33 34 35 +f 33 35 36 +f 26 33 29 +f 33 36 29 +f 37 38 25 +f 39 33 26 +f 30 33 37 +f 30 37 25 +f 25 38 26 +f 40 33 39 +f 38 39 26 +f 37 33 40 +f 40 41 42 +f 37 40 43 +f 40 42 43 +f 38 44 45 +f 38 37 44 +f 37 43 44 +f 40 39 46 +f 39 47 46 +f 40 46 41 +f 39 48 47 +f 39 38 48 +f 38 45 48 +f 17 9 10 +f 17 11 9 +f 11 17 16 +f 16 17 22 +f 23 16 22 +f 16 23 15 +f 23 24 15 +f 24 21 15 +f 18 17 10 +f 19 18 10 +f 20 19 10 +f 20 10 12 +f 20 12 21 +f 14 15 21 +f 21 12 13 +f 14 21 13 +f 42 41 31 +f 43 42 31 +f 44 43 31 +f 44 31 32 +f 44 32 45 +f 28 29 45 +f 45 32 27 +f 28 45 27 +f 41 34 31 +f 41 35 34 +f 35 41 36 +f 36 41 46 +f 47 36 46 +f 36 47 29 +f 47 48 29 +f 48 45 29 diff --git a/tests/sla_print/CMakeLists.txt b/tests/sla_print/CMakeLists.txt new file mode 100644 index 000000000..b1a6b6de7 --- /dev/null +++ b/tests/sla_print/CMakeLists.txt @@ -0,0 +1,4 @@ +add_executable(sla_print_tests sla_print_tests_main.cpp) +target_link_libraries(sla_print_tests test_common libslic3r ${Boost_LIBRARIES} ${TBB_LIBRARIES} ${Boost_LIBRARIES}) + +gtest_discover_tests(sla_print_tests TEST_PREFIX sla_print.) diff --git a/tests/sla_print/sla_print_tests_main.cpp b/tests/sla_print/sla_print_tests_main.cpp new file mode 100644 index 000000000..098d88346 --- /dev/null +++ b/tests/sla_print/sla_print_tests_main.cpp @@ -0,0 +1,301 @@ +#include + +#include "libslic3r/libslic3r.h" +#include "libslic3r/Format/OBJ.hpp" +#include "libslic3r/SLAPrint.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/SLA/SLAPad.hpp" +#include "libslic3r/SLA/SLASupportTree.hpp" +#include "libslic3r/SLA/SLAAutoSupports.hpp" +#include "libslic3r/MTUtils.hpp" + +#include "libslic3r/SVG.hpp" + +#if defined(WIN32) || defined(_WIN32) +#define PATH_SEPARATOR "\\" +#else +#define PATH_SEPARATOR "/" +#endif + +namespace { +using namespace Slic3r; + +TriangleMesh load_model(const std::string &obj_filename) +{ + TriangleMesh mesh; + auto fpath = std::string(TEST_DATA_DIR PATH_SEPARATOR) + obj_filename; + load_obj(fpath.c_str(), &mesh); + return mesh; +} + +enum e_validity { + ASSUME_NO_EMPTY = 1, + ASSUME_MANIFOLD = 2, + ASSUME_NO_REPAIR = 4 +}; + +void check_validity(const TriangleMesh &input_mesh, + int flags = ASSUME_NO_EMPTY | ASSUME_MANIFOLD | + ASSUME_NO_REPAIR) +{ + TriangleMesh mesh{input_mesh}; + + if (flags & ASSUME_NO_EMPTY) { + ASSERT_FALSE(mesh.empty()); + } else if (mesh.empty()) + return; // If it can be empty and it is, there is nothing left to do. + + ASSERT_TRUE(stl_validate(&mesh.stl)); + + bool do_update_shared_vertices = false; + mesh.repair(do_update_shared_vertices); + + if (flags & ASSUME_NO_REPAIR) { + ASSERT_FALSE(mesh.needed_repair()); + } + + if (flags & ASSUME_MANIFOLD) { + mesh.require_shared_vertices(); + if (!mesh.is_manifold()) mesh.WriteOBJFile("non_manifold.obj"); + ASSERT_TRUE(mesh.is_manifold()); + } +} + +struct PadByproducts +{ + ExPolygons model_contours; + ExPolygons support_contours; + TriangleMesh mesh; +}; + +void test_pad(const std::string & obj_filename, + const sla::PadConfig &padcfg, + PadByproducts & out) +{ + ASSERT_TRUE(padcfg.validate().empty()); + + TriangleMesh mesh = load_model(obj_filename); + + ASSERT_FALSE(mesh.empty()); + + // Create pad skeleton only from the model + Slic3r::sla::pad_blueprint(mesh, out.model_contours); + + ASSERT_FALSE(out.model_contours.empty()); + + // Create the pad geometry the model contours only + Slic3r::sla::create_pad({}, out.model_contours, out.mesh, padcfg); + + check_validity(out.mesh); + + auto bb = out.mesh.bounding_box(); + ASSERT_DOUBLE_EQ(bb.max.z() - bb.min.z(), + padcfg.full_height()); +} + +void test_pad(const std::string & obj_filename, + const sla::PadConfig &padcfg = {}) +{ + PadByproducts byproducts; + test_pad(obj_filename, padcfg, byproducts); +} + +struct SupportByproducts +{ + std::vector slicegrid; + std::vector model_slices; + sla::SLASupportTree supporttree; +}; + +const constexpr float CLOSING_RADIUS = 0.005f; + +void test_supports(const std::string & obj_filename, + const sla::SupportConfig &supportcfg, + SupportByproducts & out) +{ + using namespace Slic3r; + TriangleMesh mesh = load_model(obj_filename); + + ASSERT_FALSE(mesh.empty()); + + TriangleMeshSlicer slicer{&mesh}; + + auto bb = mesh.bounding_box(); + double zmin = bb.min.z(); + double zmax = bb.max.z(); + double gnd = zmin - supportcfg.object_elevation_mm; + auto layer_h = 0.05f; + + out.slicegrid = grid(float(gnd), float(zmax), layer_h); + slicer.slice(out.slicegrid , CLOSING_RADIUS, &out.model_slices, []{}); + + // Create the special index-triangle mesh with spatial indexing which + // is the input of the support point and support mesh generators + sla::EigenMesh3D emesh{mesh}; + + // Create the support point generator + sla::SLAAutoSupports::Config autogencfg; + autogencfg.head_diameter = float(2 * supportcfg.head_front_radius_mm); + sla::SLAAutoSupports point_gen{emesh, out.model_slices, out.slicegrid, + autogencfg, [] {}, [](int) {}}; + + // Get the calculated support points. + std::vector support_points = point_gen.output(); + + int validityflags = ASSUME_NO_REPAIR; + + // If there is no elevation, support points shall be removed from the + // bottom of the object. + if (supportcfg.object_elevation_mm < EPSILON) { + sla::remove_bottom_points(support_points, zmin, + supportcfg.base_height_mm); + } else { + // Should be support points at least on the bottom of the model + ASSERT_FALSE(support_points.empty()); + + // Also the support mesh should not be empty. + validityflags |= ASSUME_NO_EMPTY; + } + + // Generate the actual support tree + sla::SLASupportTree supporttree(support_points, emesh, supportcfg); + + const TriangleMesh &output_mesh = supporttree.merged_mesh(); + + check_validity(output_mesh, validityflags); + + // Quick check if the dimensions and placement of supports are correct + auto obb = output_mesh.bounding_box(); + ASSERT_DOUBLE_EQ(obb.min.z(), zmin - supportcfg.object_elevation_mm); + ASSERT_LE(obb.max.z(), zmax); + + // Move out the support tree into the byproducts, we can examine it further + // in various tests. + out.supporttree = std::move(supporttree); +} + +void test_supports(const std::string & obj_filename, + const sla::SupportConfig &supportcfg = {}) +{ + SupportByproducts byproducts; + test_supports(obj_filename, supportcfg, byproducts); +} + +void test_support_model_collision( + const std::string & obj_filename, + const sla::SupportConfig &input_supportcfg = {}) +{ + SupportByproducts byproducts; + + sla::SupportConfig supportcfg = input_supportcfg; + + // Set head penetration to a small negative value which should ensure that + // the supports will not touch the model body. + supportcfg.head_penetration_mm = -0.1; + + test_supports(obj_filename, supportcfg, byproducts); + + // Slice the support mesh given the slice grid of the model. + std::vector support_slices = + byproducts.supporttree.slice(byproducts.slicegrid, CLOSING_RADIUS); + + // The slices originate from the same slice grid so the numbers must match + ASSERT_EQ(support_slices.size(), byproducts.model_slices.size()); + + bool notouch = true; + for (size_t n = 0; notouch && n < support_slices.size(); ++n) { + const ExPolygons &sup_slice = support_slices[n]; + const ExPolygons &mod_slice = byproducts.model_slices[n]; + + Polygons intersections = intersection(sup_slice, mod_slice); + notouch = notouch && intersections.empty(); + } + + ASSERT_TRUE(notouch); +} + +const char * const BELOW_PAD_TEST_OBJECTS[] = { + "20mm_cube.obj", + "V.obj", +}; + +const char * const AROUND_PAD_TEST_OBJECTS[] = { + "20mm_cube.obj", + "V.obj", + "frog_legs.obj", + "cube_with_concave_hole_enlarged.obj", +}; + +const char *const SUPPORT_TEST_MODELS[] = { + "cube_with_concave_hole_enlarged_standing.obj", +}; + +} // namespace + +TEST(SLASupportGeneration, FlatPadGeometryIsValid) { + sla::PadConfig padcfg; + + // Disable wings + padcfg.wall_height_mm = .0; + + for (auto &fname : BELOW_PAD_TEST_OBJECTS) test_pad(fname, padcfg); +} + +TEST(SLASupportGeneration, WingedPadGeometryIsValid) { + sla::PadConfig padcfg; + + // Add some wings to the pad to test the cavity + padcfg.wall_height_mm = 1.; + + for (auto &fname : BELOW_PAD_TEST_OBJECTS) test_pad(fname, padcfg); +} + +TEST(SLASupportGeneration, FlatPadAroundObjectIsValid) { + sla::PadConfig padcfg; + + // Add some wings to the pad to test the cavity + padcfg.wall_height_mm = 0.; + // padcfg.embed_object.stick_stride_mm = 0.; + padcfg.embed_object.enabled = true; + padcfg.embed_object.everywhere = true; + + for (auto &fname : AROUND_PAD_TEST_OBJECTS) test_pad(fname, padcfg); +} + +TEST(SLASupportGeneration, WingedPadAroundObjectIsValid) { + sla::PadConfig padcfg; + + // Add some wings to the pad to test the cavity + padcfg.wall_height_mm = 1.; + padcfg.embed_object.enabled = true; + padcfg.embed_object.everywhere = true; + + for (auto &fname : AROUND_PAD_TEST_OBJECTS) test_pad(fname, padcfg); +} + +TEST(SLASupportGeneration, ElevatedSupportGeometryIsValid) { + sla::SupportConfig supportcfg; + supportcfg.object_elevation_mm = 5.; + + for (auto fname : SUPPORT_TEST_MODELS) test_supports(fname); +} + +TEST(SLASupportGeneration, FloorSupportGeometryIsValid) { + sla::SupportConfig supportcfg; + supportcfg.object_elevation_mm = 0; + + for (auto &fname: SUPPORT_TEST_MODELS) test_supports(fname, supportcfg); +} + +TEST(SLASupportGeneration, SupportsDoNotPierceModel) { + + sla::SupportConfig supportcfg; + + for (auto fname : SUPPORT_TEST_MODELS) + test_support_model_collision(fname, supportcfg); +} + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} From 705e82ec8e843b3db1a7bd80c3ae339523abca29 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 26 Sep 2019 09:42:08 +0200 Subject: [PATCH 17/53] Deeper test coverage for support tree generation. Restructuring for testability. --- src/libslic3r/CMakeLists.txt | 5 + src/libslic3r/SLA/SLACommon.hpp | 5 +- src/libslic3r/SLA/SLAConcurrency.hpp | 56 + src/libslic3r/SLA/SLARasterWriter.cpp | 14 +- src/libslic3r/SLA/SLARasterWriter.hpp | 12 +- src/libslic3r/SLA/SLASupportTree.cpp | 2532 +---------------- src/libslic3r/SLA/SLASupportTree.hpp | 136 +- src/libslic3r/SLA/SLASupportTreeAlgorithm.cpp | 1383 +++++++++ src/libslic3r/SLA/SLASupportTreeAlgorithm.hpp | 292 ++ src/libslic3r/SLA/SLASupportTreeBuilder.cpp | 462 +++ src/libslic3r/SLA/SLASupportTreeBuilder.hpp | 449 +++ src/libslic3r/SLAPrint.cpp | 102 +- src/libslic3r/SLAPrint.hpp | 12 +- tests/sla_print/sla_print_tests_main.cpp | 98 +- 14 files changed, 2884 insertions(+), 2674 deletions(-) create mode 100644 src/libslic3r/SLA/SLAConcurrency.hpp create mode 100644 src/libslic3r/SLA/SLASupportTreeAlgorithm.cpp create mode 100644 src/libslic3r/SLA/SLASupportTreeAlgorithm.hpp create mode 100644 src/libslic3r/SLA/SLASupportTreeBuilder.cpp create mode 100644 src/libslic3r/SLA/SLASupportTreeBuilder.hpp diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 6aa197417..66602e06d 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -178,6 +178,11 @@ add_library(libslic3r STATIC SLA/SLABoilerPlate.hpp SLA/SLAPad.hpp SLA/SLAPad.cpp + SLA/SLASupportTreeBuilder.hpp + SLA/SLASupportTreeAlgorithm.hpp + SLA/SLASupportTreeAlgorithm.cpp + SLA/SLASupportTreeBuilder.cpp + SLA/SLAConcurrency.hpp SLA/SLASupportTree.hpp SLA/SLASupportTree.cpp SLA/SLASupportTreeIGL.cpp diff --git a/src/libslic3r/SLA/SLACommon.hpp b/src/libslic3r/SLA/SLACommon.hpp index 3a3f8bdcc..97b459676 100644 --- a/src/libslic3r/SLA/SLACommon.hpp +++ b/src/libslic3r/SLA/SLACommon.hpp @@ -1,8 +1,9 @@ #ifndef SLACOMMON_HPP #define SLACOMMON_HPP -#include #include +#include +#include // #define SLIC3R_SLA_NEEDS_WINDTREE @@ -69,6 +70,8 @@ struct SupportPoint } }; +using SupportPoints = std::vector; + /// An index-triangle structure for libIGL functions. Also serves as an /// alternative (raw) input format for the SLASupportTree class EigenMesh3D { diff --git a/src/libslic3r/SLA/SLAConcurrency.hpp b/src/libslic3r/SLA/SLAConcurrency.hpp new file mode 100644 index 000000000..cd45ce83e --- /dev/null +++ b/src/libslic3r/SLA/SLAConcurrency.hpp @@ -0,0 +1,56 @@ +#ifndef SLACONCURRENCY_H +#define SLACONCURRENCY_H + +#include +#include +#include + +namespace Slic3r { +namespace sla { + +// Set this to true to enable full parallelism in this module. +// Only the well tested parts will be concurrent if this is set to false. +const constexpr bool USE_FULL_CONCURRENCY = false; + +template struct _ccr {}; + +template<> struct _ccr +{ + using SpinningMutex = tbb::spin_mutex; + using BlockingMutex = tbb::mutex; + + template + static inline void enumerate(It from, It to, Fn fn) + { + auto iN = to - from; + size_t N = iN < 0 ? 0 : size_t(iN); + + tbb::parallel_for(size_t(0), N, [from, fn](size_t n) { + fn(*(from + decltype(iN)(n)), n); + }); + } +}; + +template<> struct _ccr +{ +private: + struct _Mtx { inline void lock() {} inline void unlock() {} }; + +public: + using SpinningMutex = _Mtx; + using BlockingMutex = _Mtx; + + template + static inline void enumerate(It from, It to, Fn fn) + { + for (auto it = from; it != to; ++it) fn(*it, size_t(it - from)); + } +}; + +using ccr = _ccr; +using ccr_seq = _ccr; +using ccr_par = _ccr; + +}} // namespace Slic3r::sla + +#endif // SLACONCURRENCY_H diff --git a/src/libslic3r/SLA/SLARasterWriter.cpp b/src/libslic3r/SLA/SLARasterWriter.cpp index 3e6f015d4..4c2296a23 100644 --- a/src/libslic3r/SLA/SLARasterWriter.cpp +++ b/src/libslic3r/SLA/SLARasterWriter.cpp @@ -10,7 +10,7 @@ namespace Slic3r { namespace sla { -std::string SLARasterWriter::createIniContent(const std::string& projectname) const +std::string RasterWriter::createIniContent(const std::string& projectname) const { std::string out("action = print\njobDir = "); out += projectname + "\n"; @@ -21,7 +21,7 @@ std::string SLARasterWriter::createIniContent(const std::string& projectname) co return out; } -void SLARasterWriter::flpXY(ClipperLib::Polygon &poly) +void RasterWriter::flpXY(ClipperLib::Polygon &poly) { for(auto& p : poly.Contour) std::swap(p.X, p.Y); std::reverse(poly.Contour.begin(), poly.Contour.end()); @@ -32,7 +32,7 @@ void SLARasterWriter::flpXY(ClipperLib::Polygon &poly) } } -void SLARasterWriter::flpXY(ExPolygon &poly) +void RasterWriter::flpXY(ExPolygon &poly) { for(auto& p : poly.contour.points) p = Point(p.y(), p.x()); std::reverse(poly.contour.points.begin(), poly.contour.points.end()); @@ -43,7 +43,7 @@ void SLARasterWriter::flpXY(ExPolygon &poly) } } -SLARasterWriter::SLARasterWriter(const Raster::Resolution &res, +RasterWriter::RasterWriter(const Raster::Resolution &res, const Raster::PixelDim &pixdim, const std::array &mirror, double gamma) @@ -53,7 +53,7 @@ SLARasterWriter::SLARasterWriter(const Raster::Resolution &res, m_mirror[1] = !m_mirror[1]; } -void SLARasterWriter::save(const std::string &fpath, const std::string &prjname) +void RasterWriter::save(const std::string &fpath, const std::string &prjname) { try { Zipper zipper(fpath); // zipper with no compression @@ -103,7 +103,7 @@ std::string get_cfg_value(const DynamicPrintConfig &cfg, const std::string &key) } // namespace -void SLARasterWriter::set_config(const DynamicPrintConfig &cfg) +void RasterWriter::set_config(const DynamicPrintConfig &cfg) { m_config["layerHeight"] = get_cfg_value(cfg, "layer_height"); m_config["expTime"] = get_cfg_value(cfg, "exposure_time"); @@ -118,7 +118,7 @@ void SLARasterWriter::set_config(const DynamicPrintConfig &cfg) m_config["prusaSlicerVersion"] = SLIC3R_BUILD_ID; } -void SLARasterWriter::set_statistics(const PrintStatistics &stats) +void RasterWriter::set_statistics(const PrintStatistics &stats) { m_config["usedMaterial"] = std::to_string(stats.used_material); m_config["numFade"] = std::to_string(stats.num_fade); diff --git a/src/libslic3r/SLA/SLARasterWriter.hpp b/src/libslic3r/SLA/SLARasterWriter.hpp index b9202c464..e6a1fd0d1 100644 --- a/src/libslic3r/SLA/SLARasterWriter.hpp +++ b/src/libslic3r/SLA/SLARasterWriter.hpp @@ -22,7 +22,7 @@ namespace Slic3r { namespace sla { // each layer can be written and compressed independently (in parallel). // At the end when all layers where written, the save method can be used to // write out the result into a zipped archive. -class SLARasterWriter +class RasterWriter { public: enum Orientation { @@ -73,15 +73,15 @@ private: static void flpXY(ExPolygon& poly); public: - SLARasterWriter(const Raster::Resolution &res, + RasterWriter(const Raster::Resolution &res, const Raster::PixelDim &pixdim, const std::array &mirror, double gamma = 1.); - SLARasterWriter(const SLARasterWriter& ) = delete; - SLARasterWriter& operator=(const SLARasterWriter&) = delete; - SLARasterWriter(SLARasterWriter&& m) = default; - SLARasterWriter& operator=(SLARasterWriter&&) = default; + RasterWriter(const RasterWriter& ) = delete; + RasterWriter& operator=(const RasterWriter&) = delete; + RasterWriter(RasterWriter&& m) = default; + RasterWriter& operator=(RasterWriter&&) = default; inline void layers(unsigned cnt) { if(cnt > 0) m_layers_rst.resize(cnt); } inline unsigned layers() const { return unsigned(m_layers_rst.size()); } diff --git a/src/libslic3r/SLA/SLASupportTree.cpp b/src/libslic3r/SLA/SLASupportTree.cpp index dda858453..7bc003609 100644 --- a/src/libslic3r/SLA/SLASupportTree.cpp +++ b/src/libslic3r/SLA/SLASupportTree.cpp @@ -7,7 +7,8 @@ #include "SLASupportTree.hpp" #include "SLABoilerPlate.hpp" #include "SLASpatIndex.hpp" -#include "SLAPad.hpp" +#include "SLASupportTreeBuilder.hpp" +#include "SLASupportTreeAlgorithm.hpp" #include #include @@ -25,45 +26,6 @@ //! return same string #define L(s) Slic3r::I18N::translate(s) -/** - * Terminology: - * - * Support point: - * The point on the model surface that needs support. - * - * Pillar: - * A thick column that spans from a support point to the ground and has - * a thick cone shaped base where it touches the ground. - * - * Ground facing support point: - * A support point that can be directly connected with the ground with a pillar - * that does not collide or cut through the model. - * - * Non ground facing support point: - * A support point that cannot be directly connected with the ground (only with - * the model surface). - * - * Head: - * The pinhead that connects to the model surface with the sharp end end - * to a pillar or bridge stick with the dull end. - * - * Headless support point: - * A support point on the model surface for which there is not enough place for - * the head. It is either in a hole or there is some barrier that would collide - * with the head geometry. The headless support point can be ground facing and - * non ground facing as well. - * - * Bridge: - * A stick that connects two pillars or a head with a pillar. - * - * Junction: - * A small ball in the intersection of two or more sticks (pillar, bridge, ...) - * - * CompactBridge: - * A bridge that connects a headless support point with the model surface or a - * nearby pillar. - */ - namespace Slic3r { namespace sla { @@ -82,2446 +44,16 @@ const unsigned SupportConfig::optimizer_max_iterations = 1000; const unsigned SupportConfig::pillar_cascade_neighbors = 3; const unsigned SupportConfig::max_bridges_on_pillar = 3; -using Coordf = double; -using Portion = std::tuple; - -// Set this to true to enable full parallelism in this module. -// Only the well tested parts will be concurrent if this is set to false. -const constexpr bool USE_FULL_CONCURRENCY = false; - -template struct _ccr {}; - -template<> struct _ccr -{ - using SpinningMutex = tbb::spin_mutex; - using LockingMutex = tbb::mutex; - - template - static inline void enumerate(It from, It to, Fn fn) - { - auto iN = to - from; - size_t N = iN < 0 ? 0 : size_t(iN); - - tbb::parallel_for(size_t(0), N, [from, fn](size_t n) { - fn(*(from + decltype(iN)(n)), n); - }); - } -}; - -template<> struct _ccr -{ -private: - struct _Mtx { inline void lock() {} inline void unlock() {} }; - -public: - using SpinningMutex = _Mtx; - using LockingMutex = _Mtx; - - template - static inline void enumerate(It from, It to, Fn fn) - { - for (auto it = from; it != to; ++it) fn(*it, size_t(it - from)); - } -}; - -using ccr = _ccr; -using ccr_seq = _ccr; -using ccr_par = _ccr; - -inline Portion make_portion(double a, double b) { - return std::make_tuple(a, b); +void SupportTree::retrieve_full_mesh(TriangleMesh &outmesh) const { + outmesh.merge(retrieve_mesh(MeshType::Support)); + outmesh.merge(retrieve_mesh(MeshType::Pad)); } -template double distance(const Vec& p) { - return std::sqrt(p.transpose() * p); -} - -template double distance(const Vec& pp1, const Vec& pp2) { - auto p = pp2 - pp1; - return distance(p); -} - -namespace { - -Contour3D sphere(double rho, Portion portion = make_portion(0.0, 2.0*PI), - double fa=(2*PI/360)) { - - Contour3D ret; - - // prohibit close to zero radius - if(rho <= 1e-6 && rho >= -1e-6) return ret; - - auto& vertices = ret.points; - auto& facets = ret.indices; - - // Algorithm: - // Add points one-by-one to the sphere grid and form facets using relative - // coordinates. Sphere is composed effectively of a mesh of stacked circles. - - // adjust via rounding to get an even multiple for any provided angle. - double angle = (2*PI / floor(2*PI / fa)); - - // Ring to be scaled to generate the steps of the sphere - std::vector ring; - - for (double i = 0; i < 2*PI; i+=angle) ring.emplace_back(i); - - const auto sbegin = size_t(2*std::get<0>(portion)/angle); - const auto send = size_t(2*std::get<1>(portion)/angle); - - const size_t steps = ring.size(); - const double increment = 1.0 / double(steps); - - // special case: first ring connects to 0,0,0 - // insert and form facets. - if(sbegin == 0) - vertices.emplace_back(Vec3d(0.0, 0.0, -rho + increment*sbegin*2.0*rho)); - - auto id = coord_t(vertices.size()); - for (size_t i = 0; i < ring.size(); i++) { - // Fixed scaling - const double z = -rho + increment*rho*2.0 * (sbegin + 1.0); - // radius of the circle for this step. - const double r = std::sqrt(std::abs(rho*rho - z*z)); - Vec2d b = Eigen::Rotation2Dd(ring[i]) * Eigen::Vector2d(0, r); - vertices.emplace_back(Vec3d(b(0), b(1), z)); - - if (sbegin == 0) - facets.emplace_back((i == 0) ? - Vec3crd(coord_t(ring.size()), 0, 1) : - Vec3crd(id - 1, 0, id)); - ++id; - } - - // General case: insert and form facets for each step, - // joining it to the ring below it. - for (size_t s = sbegin + 2; s < send - 1; s++) { - const double z = -rho + increment*double(s*2.0*rho); - const double r = std::sqrt(std::abs(rho*rho - z*z)); - - for (size_t i = 0; i < ring.size(); i++) { - Vec2d b = Eigen::Rotation2Dd(ring[i]) * Eigen::Vector2d(0, r); - vertices.emplace_back(Vec3d(b(0), b(1), z)); - auto id_ringsize = coord_t(id - int(ring.size())); - if (i == 0) { - // wrap around - facets.emplace_back(Vec3crd(id - 1, id, - id + coord_t(ring.size() - 1))); - facets.emplace_back(Vec3crd(id - 1, id_ringsize, id)); - } else { - facets.emplace_back(Vec3crd(id_ringsize - 1, id_ringsize, id)); - facets.emplace_back(Vec3crd(id - 1, id_ringsize - 1, id)); - } - id++; - } - } - - // special case: last ring connects to 0,0,rho*2.0 - // only form facets. - if(send >= size_t(2*PI / angle)) { - vertices.emplace_back(Vec3d(0.0, 0.0, -rho + increment*send*2.0*rho)); - for (size_t i = 0; i < ring.size(); i++) { - auto id_ringsize = coord_t(id - int(ring.size())); - if (i == 0) { - // third vertex is on the other side of the ring. - facets.emplace_back(Vec3crd(id - 1, id_ringsize, id)); - } else { - auto ci = coord_t(id_ringsize + coord_t(i)); - facets.emplace_back(Vec3crd(ci - 1, ci, id)); - } - } - } - id++; - - return ret; -} - -// Down facing cylinder in Z direction with arguments: -// r: radius -// h: Height -// ssteps: how many edges will create the base circle -// sp: starting point -Contour3D cylinder(double r, double h, size_t ssteps, const Vec3d &sp = {0,0,0}) -{ - Contour3D ret; - - auto steps = int(ssteps); - auto& points = ret.points; - auto& indices = ret.indices; - points.reserve(2*ssteps); - double a = 2*PI/steps; - - Vec3d jp = sp; - Vec3d endp = {sp(X), sp(Y), sp(Z) + h}; - - // Upper circle points - for(int i = 0; i < steps; ++i) { - double phi = i*a; - double ex = endp(X) + r*std::cos(phi); - double ey = endp(Y) + r*std::sin(phi); - points.emplace_back(ex, ey, endp(Z)); - } - - // Lower circle points - for(int i = 0; i < steps; ++i) { - double phi = i*a; - double x = jp(X) + r*std::cos(phi); - double y = jp(Y) + r*std::sin(phi); - points.emplace_back(x, y, jp(Z)); - } - - // Now create long triangles connecting upper and lower circles - indices.reserve(2*ssteps); - auto offs = steps; - for(int i = 0; i < steps - 1; ++i) { - indices.emplace_back(i, i + offs, offs + i + 1); - indices.emplace_back(i, offs + i + 1, i + 1); - } - - // Last triangle connecting the first and last vertices - auto last = steps - 1; - indices.emplace_back(0, last, offs); - indices.emplace_back(last, offs + last, offs); - - // According to the slicing algorithms, we need to aid them with generating - // a watertight body. So we create a triangle fan for the upper and lower - // ending of the cylinder to close the geometry. - points.emplace_back(jp); int ci = int(points.size() - 1); - for(int i = 0; i < steps - 1; ++i) - indices.emplace_back(i + offs + 1, i + offs, ci); - - indices.emplace_back(offs, steps + offs - 1, ci); - - points.emplace_back(endp); ci = int(points.size() - 1); - for(int i = 0; i < steps - 1; ++i) - indices.emplace_back(ci, i, i + 1); - - indices.emplace_back(steps - 1, 0, ci); - - return ret; -} - -const constexpr long ID_UNSET = -1; - -struct Head { - Contour3D mesh; - - size_t steps = 45; - Vec3d dir = {0, 0, -1}; - Vec3d tr = {0, 0, 0}; - - double r_back_mm = 1; - double r_pin_mm = 0.5; - double width_mm = 2; - double penetration_mm = 0.5; - - // For identification purposes. This will be used as the index into the - // container holding the head structures. See SLASupportTree::Impl - long id = ID_UNSET; - - // If there is a pillar connecting to this head, then the id will be set. - long pillar_id = ID_UNSET; - - inline void invalidate() { id = ID_UNSET; } - inline bool is_valid() const { return id >= 0; } - - Head(double r_big_mm, - double r_small_mm, - double length_mm, - double penetration, - const Vec3d &direction = {0, 0, -1}, // direction (normal to the dull end) - const Vec3d &offset = {0, 0, 0}, // displacement - const size_t circlesteps = 45): - steps(circlesteps), dir(direction), tr(offset), - r_back_mm(r_big_mm), r_pin_mm(r_small_mm), width_mm(length_mm), - penetration_mm(penetration) - { - - // We create two spheres which will be connected with a robe that fits - // both circles perfectly. - - // Set up the model detail level - const double detail = 2*PI/steps; - - // We don't generate whole circles. Instead, we generate only the - // portions which are visible (not covered by the robe) To know the - // exact portion of the bottom and top circles we need to use some - // rules of tangent circles from which we can derive (using simple - // triangles the following relations: - - // The height of the whole mesh - const double h = r_big_mm + r_small_mm + width_mm; - double phi = PI/2 - std::acos( (r_big_mm - r_small_mm) / h ); - - // To generate a whole circle we would pass a portion of (0, Pi) - // To generate only a half horizontal circle we can pass (0, Pi/2) - // The calculated phi is an offset to the half circles needed to smooth - // the transition from the circle to the robe geometry - - auto&& s1 = sphere(r_big_mm, make_portion(0, PI/2 + phi), detail); - auto&& s2 = sphere(r_small_mm, make_portion(PI/2 + phi, PI), detail); - - for(auto& p : s2.points) p.z() += h; - - mesh.merge(s1); - mesh.merge(s2); - - for(size_t idx1 = s1.points.size() - steps, idx2 = s1.points.size(); - idx1 < s1.points.size() - 1; - idx1++, idx2++) - { - coord_t i1s1 = coord_t(idx1), i1s2 = coord_t(idx2); - coord_t i2s1 = i1s1 + 1, i2s2 = i1s2 + 1; - - mesh.indices.emplace_back(i1s1, i2s1, i2s2); - mesh.indices.emplace_back(i1s1, i2s2, i1s2); - } - - auto i1s1 = coord_t(s1.points.size()) - coord_t(steps); - auto i2s1 = coord_t(s1.points.size()) - 1; - auto i1s2 = coord_t(s1.points.size()); - auto i2s2 = coord_t(s1.points.size()) + coord_t(steps) - 1; - - mesh.indices.emplace_back(i2s2, i2s1, i1s1); - mesh.indices.emplace_back(i1s2, i2s2, i1s1); - - // To simplify further processing, we translate the mesh so that the - // last vertex of the pointing sphere (the pinpoint) will be at (0,0,0) - for(auto& p : mesh.points) p.z() -= (h + r_small_mm - penetration_mm); - } - - void transform() - { - using Quaternion = Eigen::Quaternion; - - // We rotate the head to the specified direction The head's pointing - // side is facing upwards so this means that it would hold a support - // point with a normal pointing straight down. This is the reason of - // the -1 z coordinate - auto quatern = Quaternion::FromTwoVectors(Vec3d{0, 0, -1}, dir); - - for(auto& p : mesh.points) p = quatern * p + tr; - } - - double fullwidth() const { - return 2 * r_pin_mm + width_mm + 2*r_back_mm - penetration_mm; - } - - Vec3d junction_point() const { - return tr + ( 2 * r_pin_mm + width_mm + r_back_mm - penetration_mm)*dir; - } - - double request_pillar_radius(double radius) const { - const double rmax = r_back_mm; - return radius > 0 && radius < rmax ? radius : rmax; - } -}; - -struct Junction { - Contour3D mesh; - double r = 1; - size_t steps = 45; - Vec3d pos; - - long id = ID_UNSET; - - Junction(const Vec3d& tr, double r_mm, size_t stepnum = 45): - r(r_mm), steps(stepnum), pos(tr) - { - mesh = sphere(r_mm, make_portion(0, PI), 2*PI/steps); - for(auto& p : mesh.points) p += tr; - } -}; - -struct Pillar { - Contour3D mesh; - Contour3D base; - double r = 1; - size_t steps = 0; - Vec3d endpt; - double height = 0; - - long id = ID_UNSET; - - // If the pillar connects to a head, this is the id of that head - bool starts_from_head = true; // Could start from a junction as well - long start_junction_id = ID_UNSET; - - // How many bridges are connected to this pillar - unsigned bridges = 0; - - // How many pillars are cascaded with this one - unsigned links = 0; - - Pillar(const Vec3d& jp, const Vec3d& endp, - double radius = 1, size_t st = 45): - r(radius), steps(st), endpt(endp), starts_from_head(false) - { - assert(steps > 0); - - height = jp(Z) - endp(Z); - if(height > EPSILON) { // Endpoint is below the starting point - - // We just create a bridge geometry with the pillar parameters and - // move the data. - Contour3D body = cylinder(radius, height, st, endp); - mesh.points.swap(body.points); - mesh.indices.swap(body.indices); - } - } - - Pillar(const Junction &junc, const Vec3d &endp) - : Pillar(junc.pos, endp, junc.r, junc.steps) - {} - - Pillar(const Head &head, const Vec3d &endp, double radius = 1) - : Pillar(head.junction_point(), endp, - head.request_pillar_radius(radius), head.steps) - {} - - inline Vec3d startpoint() const - { - return {endpt(X), endpt(Y), endpt(Z) + height}; - } - - inline const Vec3d& endpoint() const { return endpt; } - - Pillar& add_base(double baseheight = 3, double radius = 2) - { - if(baseheight <= 0) return *this; - if(baseheight > height) baseheight = height; - - assert(steps >= 0); - auto last = int(steps - 1); - - if(radius < r ) radius = r; - - double a = 2*PI/steps; - double z = endpt(Z) + baseheight; - - for(size_t i = 0; i < steps; ++i) { - double phi = i*a; - double x = endpt(X) + r*std::cos(phi); - double y = endpt(Y) + r*std::sin(phi); - base.points.emplace_back(x, y, z); - } - - for(size_t i = 0; i < steps; ++i) { - double phi = i*a; - double x = endpt(X) + radius*std::cos(phi); - double y = endpt(Y) + radius*std::sin(phi); - base.points.emplace_back(x, y, z - baseheight); - } - - auto ep = endpt; ep(Z) += baseheight; - base.points.emplace_back(endpt); - base.points.emplace_back(ep); - - auto& indices = base.indices; - auto hcenter = int(base.points.size() - 1); - auto lcenter = int(base.points.size() - 2); - auto offs = int(steps); - for(int i = 0; i < last; ++i) { - indices.emplace_back(i, i + offs, offs + i + 1); - indices.emplace_back(i, offs + i + 1, i + 1); - indices.emplace_back(i, i + 1, hcenter); - indices.emplace_back(lcenter, offs + i + 1, offs + i); - } - - indices.emplace_back(0, last, offs); - indices.emplace_back(last, offs + last, offs); - indices.emplace_back(hcenter, last, 0); - indices.emplace_back(offs, offs + last, lcenter); - return *this; - } -}; - -// A Bridge between two pillars (with junction endpoints) -struct Bridge { - Contour3D mesh; - double r = 0.8; - - long id = ID_UNSET; - long start_jid = ID_UNSET; - long end_jid = ID_UNSET; - - // We should reduce the radius a tiny bit to help the convex hull algorithm - Bridge(const Vec3d& j1, const Vec3d& j2, - double r_mm = 0.8, size_t steps = 45): - r(r_mm) - { - using Quaternion = Eigen::Quaternion; - Vec3d dir = (j2 - j1).normalized(); - double d = distance(j2, j1); - - mesh = cylinder(r, d, steps); - - auto quater = Quaternion::FromTwoVectors(Vec3d{0,0,1}, dir); - for(auto& p : mesh.points) p = quater * p + j1; - } -}; - -// A bridge that spans from model surface to model surface with small connecting -// edges on the endpoints. Used for headless support points. -struct CompactBridge { - Contour3D mesh; - long id = ID_UNSET; - - CompactBridge(const Vec3d& sp, - const Vec3d& ep, - const Vec3d& n, - double r, - bool endball = true, - size_t steps = 45) - { - Vec3d startp = sp + r * n; - Vec3d dir = (ep - startp).normalized(); - Vec3d endp = ep - r * dir; - - Bridge br(startp, endp, r, steps); - mesh.merge(br.mesh); - - // now add the pins - double fa = 2*PI/steps; - auto upperball = sphere(r, Portion{PI / 2 - fa, PI}, fa); - for(auto& p : upperball.points) p += startp; - - if(endball) { - auto lowerball = sphere(r, Portion{0, PI/2 + 2*fa}, fa); - for(auto& p : lowerball.points) p += endp; - mesh.merge(lowerball); - } - - mesh.merge(upperball); - } -}; - -// A wrapper struct around the base pool (pad) -struct Pad { - TriangleMesh tmesh; - PadConfig cfg; - double zlevel = 0; - - Pad() = default; - - Pad(const TriangleMesh &support_mesh, - const ExPolygons & model_contours, - double ground_level, - const PadConfig & pcfg, - ThrowOnCancel thr) - : cfg(pcfg) - , zlevel(ground_level + pcfg.full_height() - pcfg.required_elevation()) - { - thr(); - - ExPolygons sup_contours; - - float zstart = float(zlevel); - float zend = zstart + float(pcfg.full_height() + EPSILON); - - pad_blueprint(support_mesh, sup_contours, grid(zstart, zend, 0.1f), thr); - create_pad(sup_contours, model_contours, tmesh, pcfg); - - tmesh.translate(0, 0, float(zlevel)); - if (!tmesh.empty()) tmesh.require_shared_vertices(); - } - - bool empty() const { return tmesh.facets_count() == 0; } -}; - -// The minimum distance for two support points to remain valid. -const double /*constexpr*/ D_SP = 0.1; - -} // namespace - -enum { // For indexing Eigen vectors as v(X), v(Y), v(Z) instead of numbers - X, Y, Z -}; - -inline Vec2d to_vec2(const Vec3d& v3) { - return {v3(X), v3(Y)}; -} - - -// This class will hold the support tree meshes with some additional bookkeeping -// as well. Various parts of the support geometry are stored separately and are -// merged when the caller queries the merged mesh. The merged result is cached -// for fast subsequent delivery of the merged mesh which can be quite complex. -// An object of this class will be used as the result type during the support -// generation algorithm. Parts will be added with the appropriate methods such -// as add_head or add_pillar which forwards the constructor arguments and fills -// the IDs of these substructures. The IDs are basically indices into the arrays -// of the appropriate type (heads, pillars, etc...). One can later query e.g. a -// pillar for a specific head... -// -// The support pad is considered an auxiliary geometry and is not part of the -// merged mesh. It can be retrieved using a dedicated method (pad()) -class SLASupportTree::Impl { - // For heads it is beneficial to use the same IDs as for the support points. - std::vector m_heads; - std::vector m_head_indices; - std::vector m_pillars; - std::vector m_junctions; - std::vector m_bridges; - std::vector m_compact_bridges; - Pad m_pad; - - Controller m_ctl; - - using Mutex = ccr::SpinningMutex; - - mutable TriangleMesh m_meshcache; - mutable Mutex m_mutex; - mutable bool m_meshcache_valid = false; - mutable double m_model_height = 0; // the full height of the model - -public: - double ground_level = 0; - - Impl() = default; - inline Impl(const Controller& ctl): m_ctl(ctl) {} - - const Controller& ctl() const { return m_ctl; } - - template Head& add_head(unsigned id, Args&&... args) - { - std::lock_guard lk(m_mutex); - m_heads.emplace_back(std::forward(args)...); - m_heads.back().id = id; - - if (id >= m_head_indices.size()) m_head_indices.resize(id + 1); - m_head_indices[id] = m_heads.size() - 1; - - m_meshcache_valid = false; - return m_heads.back(); - } - - template Pillar& add_pillar(unsigned headid, Args&&... args) - { - std::lock_guard lk(m_mutex); - - assert(headid < m_head_indices.size()); - Head &head = m_heads[m_head_indices[headid]]; - - m_pillars.emplace_back(head, std::forward(args)...); - Pillar& pillar = m_pillars.back(); - pillar.id = long(m_pillars.size() - 1); - head.pillar_id = pillar.id; - pillar.start_junction_id = head.id; - pillar.starts_from_head = true; - - m_meshcache_valid = false; - return m_pillars.back(); - } - - void increment_bridges(const Pillar& pillar) - { - std::lock_guard lk(m_mutex); - assert(pillar.id >= 0 && size_t(pillar.id) < m_pillars.size()); - - if(pillar.id >= 0 && size_t(pillar.id) < m_pillars.size()) - m_pillars[size_t(pillar.id)].bridges++; - } - - void increment_links(const Pillar& pillar) - { - std::lock_guard lk(m_mutex); - assert(pillar.id >= 0 && size_t(pillar.id) < m_pillars.size()); - - if(pillar.id >= 0 && size_t(pillar.id) < m_pillars.size()) - m_pillars[size_t(pillar.id)].links++; - } - - template Pillar& add_pillar(Args&&...args) - { - std::lock_guard lk(m_mutex); - m_pillars.emplace_back(std::forward(args)...); - Pillar& pillar = m_pillars.back(); - pillar.id = long(m_pillars.size() - 1); - pillar.starts_from_head = false; - m_meshcache_valid = false; - return m_pillars.back(); - } - - const Pillar& head_pillar(unsigned headid) const - { - std::lock_guard lk(m_mutex); - assert(headid < m_head_indices.size()); - - const Head& h = m_heads[m_head_indices[headid]]; - assert(h.pillar_id >= 0 && h.pillar_id < long(m_pillars.size())); - - return m_pillars[size_t(h.pillar_id)]; - } - - template const Junction& add_junction(Args&&... args) - { - std::lock_guard lk(m_mutex); - m_junctions.emplace_back(std::forward(args)...); - m_junctions.back().id = long(m_junctions.size() - 1); - m_meshcache_valid = false; - return m_junctions.back(); - } - - template const Bridge& add_bridge(Args&&... args) - { - std::lock_guard lk(m_mutex); - m_bridges.emplace_back(std::forward(args)...); - m_bridges.back().id = long(m_bridges.size() - 1); - m_meshcache_valid = false; - return m_bridges.back(); - } - - template const CompactBridge& add_compact_bridge(Args&&...args) - { - std::lock_guard lk(m_mutex); - m_compact_bridges.emplace_back(std::forward(args)...); - m_compact_bridges.back().id = long(m_compact_bridges.size() - 1); - m_meshcache_valid = false; - return m_compact_bridges.back(); - } - - Head &head(unsigned id) - { - std::lock_guard lk(m_mutex); - assert(id < m_head_indices.size()); - - m_meshcache_valid = false; - return m_heads[m_head_indices[id]]; - } - - inline size_t pillarcount() const { - std::lock_guard lk(m_mutex); - return m_pillars.size(); - } - - template inline IntegerOnly pillar(T id) const - { - std::lock_guard lk(m_mutex); - assert(id >= 0 && size_t(id) < m_pillars.size() && - size_t(id) < std::numeric_limits::max()); - - return m_pillars[size_t(id)]; - } - - const Pad &create_pad(const TriangleMesh &object_supports, - const ExPolygons & modelbase, - const PadConfig & cfg) - { - m_pad = Pad{object_supports, modelbase, ground_level, cfg, m_ctl.cancelfn}; - - return m_pad; - } - - void remove_pad() { m_pad = Pad(); } - - const Pad& pad() const { return m_pad; } - - // WITHOUT THE PAD!!! - const TriangleMesh &merged_mesh() const - { - if (m_meshcache_valid) return m_meshcache; - - Contour3D merged; - - for (auto &head : m_heads) { - if (m_ctl.stopcondition()) break; - if (head.is_valid()) merged.merge(head.mesh); - } - - for (auto &stick : m_pillars) { - if (m_ctl.stopcondition()) break; - merged.merge(stick.mesh); - merged.merge(stick.base); - } - - for (auto &j : m_junctions) { - if (m_ctl.stopcondition()) break; - merged.merge(j.mesh); - } - - for (auto &cb : m_compact_bridges) { - if (m_ctl.stopcondition()) break; - merged.merge(cb.mesh); - } - - for (auto &bs : m_bridges) { - if (m_ctl.stopcondition()) break; - merged.merge(bs.mesh); - } - - if (m_ctl.stopcondition()) { - // In case of failure we have to return an empty mesh - m_meshcache = TriangleMesh(); - return m_meshcache; - } - - m_meshcache = mesh(merged); - - // The mesh will be passed by const-pointer to TriangleMeshSlicer, - // which will need this. - if (!m_meshcache.empty()) m_meshcache.require_shared_vertices(); - - BoundingBoxf3 &&bb = m_meshcache.bounding_box(); - m_model_height = bb.max(Z) - bb.min(Z); - - m_meshcache_valid = true; - return m_meshcache; - } - - // WITH THE PAD - double full_height() const - { - if (merged_mesh().empty() && !pad().empty()) - return pad().cfg.full_height(); - - double h = mesh_height(); - if (!pad().empty()) h += pad().cfg.required_elevation(); - return h; - } - - // WITHOUT THE PAD!!! - double mesh_height() const - { - if (!m_meshcache_valid) merged_mesh(); - return m_model_height; - } - - // Intended to be called after the generation is fully complete - void merge_and_cleanup() - { - merged_mesh(); // in case the mesh is not generated, it should be... - - // Doing clear() does not garantee to release the memory. - m_heads = {}; - m_head_indices = {}; - m_pillars = {}; - m_junctions = {}; - m_bridges = {}; - m_compact_bridges = {}; - } -}; - -// This function returns the position of the centroid in the input 'clust' -// vector of point indices. -template -long cluster_centroid(const ClusterEl& clust, - const std::function &pointfn, - DistFn df) -{ - switch(clust.size()) { - case 0: /* empty cluster */ return ID_UNSET; - case 1: /* only one element */ return 0; - case 2: /* if two elements, there is no center */ return 0; - default: ; - } - - // The function works by calculating for each point the average distance - // from all the other points in the cluster. We create a selector bitmask of - // the same size as the cluster. The bitmask will have two true bits and - // false bits for the rest of items and we will loop through all the - // permutations of the bitmask (combinations of two points). Get the - // distance for the two points and add the distance to the averages. - // The point with the smallest average than wins. - - // The complexity should be O(n^2) but we will mostly apply this function - // for small clusters only (cca 3 elements) - - std::vector sel(clust.size(), false); // create full zero bitmask - std::fill(sel.end() - 2, sel.end(), true); // insert the two ones - std::vector avgs(clust.size(), 0.0); // store the average distances - - do { - std::array idx; - for(size_t i = 0, j = 0; i < clust.size(); i++) if(sel[i]) idx[j++] = i; - - double d = df(pointfn(clust[idx[0]]), - pointfn(clust[idx[1]])); - - // add the distance to the sums for both associated points - for(auto i : idx) avgs[i] += d; - - // now continue with the next permutation of the bitmask with two 1s - } while(std::next_permutation(sel.begin(), sel.end())); - - // Divide by point size in the cluster to get the average (may be redundant) - for(auto& a : avgs) a /= clust.size(); - - // get the lowest average distance and return the index - auto minit = std::min_element(avgs.begin(), avgs.end()); - return long(minit - avgs.begin()); -} - -inline Vec3d dirv(const Vec3d& startp, const Vec3d& endp) { - return (endp - startp).normalized(); -} - -class SLASupportTree::Algorithm { - const SupportConfig& m_cfg; - const EigenMesh3D& m_mesh; - const std::vector& m_support_pts; - - using PtIndices = std::vector; - - PtIndices m_iheads; // support points with pinhead - PtIndices m_iheadless; // headless support points - - // supp. pts. connecting to model: point index and the ray hit data - std::vector> m_iheads_onmodel; - - // normals for support points from model faces. - PointSet m_support_nmls; - - // Clusters of points which can reach the ground directly and can be - // bridged to one central pillar - std::vector m_pillar_clusters; - - // This algorithm uses the Impl class as its output stream. It will be - // filled gradually with support elements (heads, pillars, bridges, ...) - using Result = SLASupportTree::Impl; - - Result& m_result; - - // support points in Eigen/IGL format - PointSet m_points; - - // throw if canceled: It will be called many times so a shorthand will - // come in handy. - ThrowOnCancel m_thr; - - // A spatial index to easily find strong pillars to connect to. - - class PillarIndex { - PointIndex m_index; - mutable ccr::LockingMutex m_mutex; - - public: - - template inline void guarded_insert(Args&&...args) - { - std::lock_guard lck(m_mutex); - m_index.insert(std::forward(args)...); - } - - template - inline std::vector guarded_query(Args&&...args) const - { - std::lock_guard lck(m_mutex); - return m_index.query(std::forward(args)...); - } - - template inline void insert(Args&&...args) - { - m_index.insert(std::forward(args)...); - } - - template - inline std::vector query(Args&&...args) const - { - return m_index.query(std::forward(args)...); - } - - template inline void foreach(Fn fn) { m_index.foreach(fn); } - template inline void guarded_foreach(Fn fn) - { - std::lock_guard lck(m_mutex); - m_index.foreach(fn); - } - - PointIndex guarded_clone() - { - std::lock_guard lck(m_mutex); - return m_index; - } - - } m_pillar_index; - - - inline double ray_mesh_intersect(const Vec3d& s, - const Vec3d& dir) - { - return m_mesh.query_ray_hit(s, dir).distance(); - } - - // This function will test if a future pinhead would not collide with the - // model geometry. It does not take a 'Head' object because those are - // created after this test. Parameters: s: The touching point on the model - // surface. dir: This is the direction of the head from the pin to the back - // r_pin, r_back: the radiuses of the pin and the back sphere width: This - // is the full width from the pin center to the back center m: The object - // mesh. - // The return value is the hit result from the ray casting. If the starting - // point was inside the model, an "invalid" hit_result will be returned - // with a zero distance value instead of a NAN. This way the result can - // be used safely for comparison with other distances. - EigenMesh3D::hit_result pinhead_mesh_intersect( - const Vec3d& s, - const Vec3d& dir, - double r_pin, - double r_back, - double width) - { - static const size_t SAMPLES = 8; - - // method based on: - // https://math.stackexchange.com/questions/73237/parametric-equation-of-a-circle-in-3d-space - - // We will shoot multiple rays from the head pinpoint in the direction - // of the pinhead robe (side) surface. The result will be the smallest - // hit distance. - - // Move away slightly from the touching point to avoid raycasting on the - // inner surface of the mesh. - Vec3d v = dir; // Our direction (axis) - Vec3d c = s + width * dir; - const double& sd = m_cfg.safety_distance_mm; - - // Two vectors that will be perpendicular to each other and to the - // axis. Values for a(X) and a(Y) are now arbitrary, a(Z) is just a - // placeholder. - Vec3d a(0, 1, 0), b; - - // The portions of the circle (the head-back circle) for which we will - // shoot rays. - std::array phis; - for(size_t i = 0; i < phis.size(); ++i) phis[i] = i*2*PI/phis.size(); - - auto& m = m_mesh; - using HitResult = EigenMesh3D::hit_result; - - // Hit results - std::array hits; - - // We have to address the case when the direction vector v (same as - // dir) is coincident with one of the world axes. In this case two of - // its components will be completely zero and one is 1.0. Our method - // becomes dangerous here due to division with zero. Instead, vector - // 'a' can be an element-wise rotated version of 'v' - auto chk1 = [] (double val) { - return std::abs(std::abs(val) - 1) < 1e-20; - }; - - if(chk1(v(X)) || chk1(v(Y)) || chk1(v(Z))) { - a = {v(Z), v(X), v(Y)}; - b = {v(Y), v(Z), v(X)}; - } - else { - a(Z) = -(v(Y)*a(Y)) / v(Z); a.normalize(); - b = a.cross(v); - } - - // Now a and b vectors are perpendicular to v and to each other. - // Together they define the plane where we have to iterate with the - // given angles in the 'phis' vector - ccr_par::enumerate(phis.begin(), phis.end(), - [&hits, &m, sd, r_pin, r_back, s, a, b, c] - (double phi, size_t i) - { - double sinphi = std::sin(phi); - double cosphi = std::cos(phi); - - // Let's have a safety coefficient for the radiuses. - double rpscos = (sd + r_pin) * cosphi; - double rpssin = (sd + r_pin) * sinphi; - double rpbcos = (sd + r_back) * cosphi; - double rpbsin = (sd + r_back) * sinphi; - - // Point on the circle on the pin sphere - Vec3d ps(s(X) + rpscos * a(X) + rpssin * b(X), - s(Y) + rpscos * a(Y) + rpssin * b(Y), - s(Z) + rpscos * a(Z) + rpssin * b(Z)); - - // Point ps is not on mesh but can be inside or outside as well. - // This would cause many problems with ray-casting. To detect the - // position we will use the ray-casting result (which has an - // is_inside predicate). - - // This is the point on the circle on the back sphere - Vec3d p(c(X) + rpbcos * a(X) + rpbsin * b(X), - c(Y) + rpbcos * a(Y) + rpbsin * b(Y), - c(Z) + rpbcos * a(Z) + rpbsin * b(Z)); - - Vec3d n = (p - ps).normalized(); - auto q = m.query_ray_hit(ps + sd*n, n); - - if(q.is_inside()) { // the hit is inside the model - if(q.distance() > r_pin + sd) { - // If we are inside the model and the hit distance is bigger - // than our pin circle diameter, it probably indicates that - // the support point was already inside the model, or there - // is really no space around the point. We will assign a - // zero hit distance to these cases which will enforce the - // function return value to be an invalid ray with zero hit - // distance. (see min_element at the end) - hits[i] = HitResult(0.0); - } - else { - // re-cast the ray from the outside of the object. - // The starting point has an offset of 2*safety_distance - // because the original ray has also had an offset - auto q2 = m.query_ray_hit(ps + (q.distance() + 2*sd)*n, n); - hits[i] = q2; - } - } else hits[i] = q; - }); - - auto mit = std::min_element(hits.begin(), hits.end()); - - return *mit; - } - - // Checking bridge (pillar and stick as well) intersection with the model. - // If the function is used for headless sticks, the ins_check parameter - // have to be true as the beginning of the stick might be inside the model - // geometry. - // The return value is the hit result from the ray casting. If the starting - // point was inside the model, an "invalid" hit_result will be returned - // with a zero distance value instead of a NAN. This way the result can - // be used safely for comparison with other distances. - EigenMesh3D::hit_result bridge_mesh_intersect( - const Vec3d& s, - const Vec3d& dir, - double r, - bool ins_check = false) - { - static const size_t SAMPLES = 8; - - // helper vector calculations - Vec3d a(0, 1, 0), b; - const double& sd = m_cfg.safety_distance_mm; - - // INFO: for explanation of the method used here, see the previous - // method's comments. - - auto chk1 = [] (double val) { - return std::abs(std::abs(val) - 1) < 1e-20; - }; - - if(chk1(dir(X)) || chk1(dir(Y)) || chk1(dir(Z))) { - a = {dir(Z), dir(X), dir(Y)}; - b = {dir(Y), dir(Z), dir(X)}; - } - else { - a(Z) = -(dir(Y)*a(Y)) / dir(Z); a.normalize(); - b = a.cross(dir); - } - - // circle portions - std::array phis; - for(size_t i = 0; i < phis.size(); ++i) phis[i] = i*2*PI/phis.size(); - - auto& m = m_mesh; - using HitResult = EigenMesh3D::hit_result; - - // Hit results - std::array hits; - - ccr_par::enumerate(phis.begin(), phis.end(), - [&m, a, b, sd, dir, r, s, ins_check, &hits] - (double phi, size_t i) - { - double sinphi = std::sin(phi); - double cosphi = std::cos(phi); - - // Let's have a safety coefficient for the radiuses. - double rcos = (sd + r) * cosphi; - double rsin = (sd + r) * sinphi; - - // Point on the circle on the pin sphere - Vec3d p (s(X) + rcos * a(X) + rsin * b(X), - s(Y) + rcos * a(Y) + rsin * b(Y), - s(Z) + rcos * a(Z) + rsin * b(Z)); - - auto hr = m.query_ray_hit(p + sd*dir, dir); - - if(ins_check && hr.is_inside()) { - if(hr.distance() > 2 * r + sd) hits[i] = HitResult(0.0); - else { - // re-cast the ray from the outside of the object - auto hr2 = - m.query_ray_hit(p + (hr.distance() + 2*sd)*dir, dir); - - hits[i] = hr2; - } - } else hits[i] = hr; - }); - - auto mit = std::min_element(hits.begin(), hits.end()); - - return *mit; - } - - // Helper function for interconnecting two pillars with zig-zag bridges. - bool interconnect(const Pillar& pillar, const Pillar& nextpillar) - { - // We need to get the starting point of the zig-zag pattern. We have to - // be aware that the two head junctions are at different heights. We - // may start from the lowest junction and call it a day but this - // strategy would leave unconnected a lot of pillar duos where the - // shorter pillar is too short to start a new bridge but the taller - // pillar could still be bridged with the shorter one. - bool was_connected = false; - - Vec3d supper = pillar.startpoint(); - Vec3d slower = nextpillar.startpoint(); - Vec3d eupper = pillar.endpoint(); - Vec3d elower = nextpillar.endpoint(); - - double zmin = m_result.ground_level + m_cfg.base_height_mm; - eupper(Z) = std::max(eupper(Z), zmin); - elower(Z) = std::max(elower(Z), zmin); - - // The usable length of both pillars should be positive - if(slower(Z) - elower(Z) < 0) return false; - if(supper(Z) - eupper(Z) < 0) return false; - - double pillar_dist = distance(Vec2d{slower(X), slower(Y)}, - Vec2d{supper(X), supper(Y)}); - double bridge_distance = pillar_dist / std::cos(-m_cfg.bridge_slope); - double zstep = pillar_dist * std::tan(-m_cfg.bridge_slope); - - if(pillar_dist < 2 * m_cfg.head_back_radius_mm || - pillar_dist > m_cfg.max_pillar_link_distance_mm) return false; - - if(supper(Z) < slower(Z)) supper.swap(slower); - if(eupper(Z) < elower(Z)) eupper.swap(elower); - - double startz = 0, endz = 0; - - startz = slower(Z) - zstep < supper(Z) ? slower(Z) - zstep : slower(Z); - endz = eupper(Z) + zstep > elower(Z) ? eupper(Z) + zstep : eupper(Z); - - if(slower(Z) - eupper(Z) < std::abs(zstep)) { - // no space for even one cross - - // Get max available space - startz = std::min(supper(Z), slower(Z) - zstep); - endz = std::max(eupper(Z) + zstep, elower(Z)); - - // Align to center - double available_dist = (startz - endz); - double rounds = std::floor(available_dist / std::abs(zstep)); - startz -= 0.5 * (available_dist - rounds * std::abs(zstep)); - } - - auto pcm = m_cfg.pillar_connection_mode; - bool docrosses = - pcm == PillarConnectionMode::cross || - (pcm == PillarConnectionMode::dynamic && - pillar_dist > 2*m_cfg.base_radius_mm); - - // 'sj' means starting junction, 'ej' is the end junction of a bridge. - // They will be swapped in every iteration thus the zig-zag pattern. - // According to a config parameter, a second bridge may be added which - // results in a cross connection between the pillars. - Vec3d sj = supper, ej = slower; sj(Z) = startz; ej(Z) = sj(Z) + zstep; - - // TODO: This is a workaround to not have a faulty last bridge - while(ej(Z) >= eupper(Z) /*endz*/) { - if(bridge_mesh_intersect(sj, - dirv(sj, ej), - pillar.r) >= bridge_distance) - { - m_result.add_bridge(sj, ej, pillar.r); - was_connected = true; - } - - // double bridging: (crosses) - if(docrosses) { - Vec3d sjback(ej(X), ej(Y), sj(Z)); - Vec3d ejback(sj(X), sj(Y), ej(Z)); - if(sjback(Z) <= slower(Z) && ejback(Z) >= eupper(Z) && - bridge_mesh_intersect(sjback, - dirv(sjback, ejback), - pillar.r) >= bridge_distance) - { - // need to check collision for the cross stick - m_result.add_bridge(sjback, ejback, pillar.r); - was_connected = true; - } - } - - sj.swap(ej); - ej(Z) = sj(Z) + zstep; - } - - return was_connected; - } - - // For connecting a head to a nearby pillar. - bool connect_to_nearpillar(const Head& head, long nearpillar_id) { - - auto nearpillar = [this, nearpillar_id]() { - return m_result.pillar(nearpillar_id); - }; - - if (nearpillar().bridges > m_cfg.max_bridges_on_pillar) return false; - - Vec3d headjp = head.junction_point(); - Vec3d nearjp_u = nearpillar().startpoint(); - Vec3d nearjp_l = nearpillar().endpoint(); - - double r = head.r_back_mm; - double d2d = distance(to_2d(headjp), to_2d(nearjp_u)); - double d3d = distance(headjp, nearjp_u); - - double hdiff = nearjp_u(Z) - headjp(Z); - double slope = std::atan2(hdiff, d2d); - - Vec3d bridgestart = headjp; - Vec3d bridgeend = nearjp_u; - double max_len = m_cfg.max_bridge_length_mm; - double max_slope = m_cfg.bridge_slope; - double zdiff = 0.0; - - // check the default situation if feasible for a bridge - if(d3d > max_len || slope > -max_slope) { - // not feasible to connect the two head junctions. We have to search - // for a suitable touch point. - - double Zdown = headjp(Z) + d2d * std::tan(-max_slope); - Vec3d touchjp = bridgeend; touchjp(Z) = Zdown; - double D = distance(headjp, touchjp); - zdiff = Zdown - nearjp_u(Z); - - if(zdiff > 0) { - Zdown -= zdiff; - bridgestart(Z) -= zdiff; - touchjp(Z) = Zdown; - - double t = bridge_mesh_intersect(headjp, {0,0,-1}, r); - - // We can't insert a pillar under the source head to connect - // with the nearby pillar's starting junction - if(t < zdiff) return false; - } - - if(Zdown <= nearjp_u(Z) && Zdown >= nearjp_l(Z) && D < max_len) - bridgeend(Z) = Zdown; - else - return false; - } - - // There will be a minimum distance from the ground where the - // bridge is allowed to connect. This is an empiric value. - double minz = m_result.ground_level + 2 * m_cfg.head_width_mm; - if(bridgeend(Z) < minz) return false; - - double t = bridge_mesh_intersect(bridgestart, - dirv(bridgestart, bridgeend), r); - - // Cannot insert the bridge. (further search might not worth the hassle) - if(t < distance(bridgestart, bridgeend)) return false; - - // A partial pillar is needed under the starting head. - if(zdiff > 0) { - m_result.add_pillar(unsigned(head.id), bridgestart, r); - m_result.add_junction(bridgestart, r); - } - - m_result.add_bridge(bridgestart, bridgeend, r); - m_result.increment_bridges(nearpillar()); - - return true; - } - - bool search_pillar_and_connect(const Head& head) { - PointIndex spindex = m_pillar_index.guarded_clone(); - - long nearest_id = ID_UNSET; - - Vec3d querypoint = head.junction_point(); - - while(nearest_id < 0 && !spindex.empty()) { m_thr(); - // loop until a suitable head is not found - // if there is a pillar closer than the cluster center - // (this may happen as the clustering is not perfect) - // than we will bridge to this closer pillar - - Vec3d qp(querypoint(X), querypoint(Y), m_result.ground_level); - auto qres = spindex.nearest(qp, 1); - if(qres.empty()) break; - - auto ne = qres.front(); - nearest_id = ne.second; - - if(nearest_id >= 0) { - auto nearpillarID = unsigned(nearest_id); - if(nearpillarID < m_result.pillarcount()) { - if(!connect_to_nearpillar(head, nearpillarID)) { - nearest_id = ID_UNSET; // continue searching - spindex.remove(ne); // without the current pillar - } - } - } - } - - return nearest_id >= 0; - } - - // This is a proxy function for pillar creation which will mind the gap - // between the pad and the model bottom in zero elevation mode. - void create_ground_pillar(const Vec3d &jp, - const Vec3d &sourcedir, - double radius, - long head_id = ID_UNSET) - { - // People were killed for this number (seriously) - static const double SQR2 = std::sqrt(2.0); - static const Vec3d DOWN = {0.0, 0.0, -1.0}; - - double gndlvl = m_result.ground_level; - Vec3d endp = {jp(X), jp(Y), gndlvl}; - double sd = m_cfg.pillar_base_safety_distance_mm; - long pillar_id = ID_UNSET; - double min_dist = sd + m_cfg.base_radius_mm + EPSILON; - double dist = 0; - bool can_add_base = true; - bool normal_mode = true; - - if (m_cfg.object_elevation_mm < EPSILON - && (dist = std::sqrt(m_mesh.squared_distance(endp))) < min_dist) { - // Get the distance from the mesh. This can be later optimized - // to get the distance in 2D plane because we are dealing with - // the ground level only. - - normal_mode = false; - double mind = min_dist - dist; - double azimuth = std::atan2(sourcedir(Y), sourcedir(X)); - double sinpolar = std::sin(PI - m_cfg.bridge_slope); - double cospolar = std::cos(PI - m_cfg.bridge_slope); - double cosazm = std::cos(azimuth); - double sinazm = std::sin(azimuth); - - auto dir = Vec3d(cosazm * sinpolar, sinazm * sinpolar, cospolar) - .normalized(); - - using namespace libnest2d::opt; - StopCriteria scr; - scr.stop_score = min_dist; - SubplexOptimizer solver(scr); - - auto result = solver.optimize_max( - [this, dir, jp, gndlvl](double mv) { - Vec3d endpt = jp + SQR2 * mv * dir; - endpt(Z) = gndlvl; - return std::sqrt(m_mesh.squared_distance(endpt)); - }, - initvals(mind), bound(0.0, 2 * min_dist)); - - mind = std::get<0>(result.optimum); - endp = jp + SQR2 * mind * dir; - Vec3d pgnd = {endp(X), endp(Y), gndlvl}; - can_add_base = result.score > min_dist; - - double gnd_offs = m_mesh.ground_level_offset(); - auto abort_in_shame = - [gnd_offs, &normal_mode, &can_add_base, &endp, jp, gndlvl]() - { - normal_mode = true; - can_add_base = false; // Nothing left to do, hope for the best - endp = {jp(X), jp(Y), gndlvl - gnd_offs }; - }; - - // We have to check if the bridge is feasible. - if (bridge_mesh_intersect(jp, dir, radius) < (endp - jp).norm()) - abort_in_shame(); - else { - // If the new endpoint is below ground, do not make a pillar - if (endp(Z) < gndlvl) - endp = endp - SQR2 * (gndlvl - endp(Z)) * dir; // back off - else { - - auto hit = bridge_mesh_intersect(endp, DOWN, radius); - if (!std::isinf(hit.distance())) abort_in_shame(); - - Pillar &plr = m_result.add_pillar(endp, pgnd, radius); - - if (can_add_base) - plr.add_base(m_cfg.base_height_mm, - m_cfg.base_radius_mm); - - pillar_id = plr.id; - } - - m_result.add_bridge(jp, endp, radius); - m_result.add_junction(endp, radius); - - // Add a degenerated pillar and the bridge. - // The degenerate pillar will have zero length and it will - // prevent from queries of head_pillar() to have non-existing - // pillar when the head should have one. - if (head_id >= 0) - m_result.add_pillar(unsigned(head_id), jp, radius); - } - } - - if (normal_mode) { - Pillar &plr = head_id >= 0 - ? m_result.add_pillar(unsigned(head_id), - endp, - radius) - : m_result.add_pillar(jp, endp, radius); - - if (can_add_base) - plr.add_base(m_cfg.base_height_mm, m_cfg.base_radius_mm); - - pillar_id = plr.id; - } - - if(pillar_id >= 0) // Save the pillar endpoint in the spatial index - m_pillar_index.guarded_insert(endp, unsigned(pillar_id)); - } - -public: - - Algorithm(const SupportConfig& config, - const EigenMesh3D& emesh, - const std::vector& support_pts, - Result& result, - ThrowOnCancel thr) : - m_cfg(config), - m_mesh(emesh), - m_support_pts(support_pts), - m_support_nmls(support_pts.size(), 3), - m_result(result), - m_points(support_pts.size(), 3), - m_thr(thr) - { - // Prepare the support points in Eigen/IGL format as well, we will use - // it mostly in this form. - - long i = 0; - for(const SupportPoint& sp : m_support_pts) { - m_points.row(i)(X) = double(sp.pos(X)); - m_points.row(i)(Y) = double(sp.pos(Y)); - m_points.row(i)(Z) = double(sp.pos(Z)); - ++i; - } - } - - - // Now let's define the individual steps of the support generation algorithm - - // Filtering step: here we will discard inappropriate support points - // and decide the future of the appropriate ones. We will check if a - // pinhead is applicable and adjust its angle at each support point. We - // will also merge the support points that are just too close and can - // be considered as one. - void filter() { - // Get the points that are too close to each other and keep only the - // first one - auto aliases = cluster(m_points, D_SP, 2); - - PtIndices filtered_indices; - filtered_indices.reserve(aliases.size()); - m_iheads.reserve(aliases.size()); - m_iheadless.reserve(aliases.size()); - for(auto& a : aliases) { - // Here we keep only the front point of the cluster. - filtered_indices.emplace_back(a.front()); - } - - // calculate the normals to the triangles for filtered points - auto nmls = sla::normals(m_points, m_mesh, m_cfg.head_front_radius_mm, - m_thr, filtered_indices); - - // Not all of the support points have to be a valid position for - // support creation. The angle may be inappropriate or there may - // not be enough space for the pinhead. Filtering is applied for - // these reasons. - - using libnest2d::opt::bound; - using libnest2d::opt::initvals; - using libnest2d::opt::GeneticOptimizer; - using libnest2d::opt::StopCriteria; - - ccr::SpinningMutex mutex; - auto addfn = [&mutex](PtIndices &container, unsigned val) { - std::lock_guard lk(mutex); - container.emplace_back(val); - }; - - ccr::enumerate(filtered_indices.begin(), filtered_indices.end(), - [this, &nmls, addfn](unsigned fidx, size_t i) - { - m_thr(); - - auto n = nmls.row(Eigen::Index(i)); - - // for all normals we generate the spherical coordinates and - // saturate the polar angle to 45 degrees from the bottom then - // convert back to standard coordinates to get the new normal. - // Then we just create a quaternion from the two normals - // (Quaternion::FromTwoVectors) and apply the rotation to the - // arrow head. - - double z = n(2); - double r = 1.0; // for normalized vector - double polar = std::acos(z / r); - double azimuth = std::atan2(n(1), n(0)); - - // skip if the tilt is not sane - if(polar >= PI - m_cfg.normal_cutoff_angle) { - - // We saturate the polar angle to 3pi/4 - polar = std::max(polar, 3*PI / 4); - - // save the head (pinpoint) position - Vec3d hp = m_points.row(fidx); - - double w = m_cfg.head_width_mm + - m_cfg.head_back_radius_mm + - 2*m_cfg.head_front_radius_mm; - - double pin_r = double(m_support_pts[fidx].head_front_radius); - - // Reassemble the now corrected normal - auto nn = Vec3d(std::cos(azimuth) * std::sin(polar), - std::sin(azimuth) * std::sin(polar), - std::cos(polar)).normalized(); - - // check available distance - EigenMesh3D::hit_result t - = pinhead_mesh_intersect(hp, // touching point - nn, // normal - pin_r, - m_cfg.head_back_radius_mm, - w); - - if(t.distance() <= w) { - - // Let's try to optimize this angle, there might be a - // viable normal that doesn't collide with the model - // geometry and its very close to the default. - - StopCriteria stc; - stc.max_iterations = m_cfg.optimizer_max_iterations; - stc.relative_score_difference = m_cfg.optimizer_rel_score_diff; - stc.stop_score = w; // space greater than w is enough - GeneticOptimizer solver(stc); - solver.seed(0); // we want deterministic behavior - - auto oresult = solver.optimize_max( - [this, pin_r, w, hp](double plr, double azm) - { - auto dir = Vec3d(std::cos(azm) * std::sin(plr), - std::sin(azm) * std::sin(plr), - std::cos(plr)).normalized(); - - double score = pinhead_mesh_intersect( - hp, dir, pin_r, m_cfg.head_back_radius_mm, w); - - return score; - }, - initvals(polar, azimuth), // start with what we have - bound(3 * PI / 4, - PI), // Must not exceed the tilt limit - bound(-PI, PI) // azimuth can be a full search - ); - - if(oresult.score > w) { - polar = std::get<0>(oresult.optimum); - azimuth = std::get<1>(oresult.optimum); - nn = Vec3d(std::cos(azimuth) * std::sin(polar), - std::sin(azimuth) * std::sin(polar), - std::cos(polar)).normalized(); - t = oresult.score; - } - } - - // save the verified and corrected normal - m_support_nmls.row(fidx) = nn; - - if (t.distance() > w) { - // Check distance from ground, we might have zero elevation. - if (hp(Z) + w * nn(Z) < m_result.ground_level) { - addfn(m_iheadless, fidx); - } else { - // mark the point for needing a head. - addfn(m_iheads, fidx); - } - } else if (polar >= 3 * PI / 4) { - // Headless supports do not tilt like the headed ones - // so the normal should point almost to the ground. - addfn(m_iheadless, fidx); - } - } - }); - - m_thr(); - } - - // Pinhead creation: based on the filtering results, the Head objects - // will be constructed (together with their triangle meshes). - void add_pinheads() - { - for (unsigned i : m_iheads) { - m_thr(); - m_result.add_head( - i, - m_cfg.head_back_radius_mm, - m_support_pts[i].head_front_radius, - m_cfg.head_width_mm, - m_cfg.head_penetration_mm, - m_support_nmls.row(i), // dir - m_support_pts[i].pos.cast() // displacement - ); - } - } - - // Further classification of the support points with pinheads. If the - // ground is directly reachable through a vertical line parallel to the - // Z axis we consider a support point as pillar candidate. If touches - // the model geometry, it will be marked as non-ground facing and - // further steps will process it. Also, the pillars will be grouped - // into clusters that can be interconnected with bridges. Elements of - // these groups may or may not be interconnected. Here we only run the - // clustering algorithm. - void classify() - { - // We should first get the heads that reach the ground directly - PtIndices ground_head_indices; - ground_head_indices.reserve(m_iheads.size()); - m_iheads_onmodel.reserve(m_iheads.size()); - - // First we decide which heads reach the ground and can be full - // pillars and which shall be connected to the model surface (or - // search a suitable path around the surface that leads to the - // ground -- TODO) - for(unsigned i : m_iheads) { - m_thr(); - - auto& head = m_result.head(i); - Vec3d n(0, 0, -1); - double r = head.r_back_mm; - Vec3d headjp = head.junction_point(); - - // collision check - auto hit = bridge_mesh_intersect(headjp, n, r); - - if(std::isinf(hit.distance())) ground_head_indices.emplace_back(i); - else if(m_cfg.ground_facing_only) head.invalidate(); - else m_iheads_onmodel.emplace_back(std::make_pair(i, hit)); - } - - // We want to search for clusters of points that are far enough - // from each other in the XY plane to not cross their pillar bases - // These clusters of support points will join in one pillar, - // possibly in their centroid support point. - - auto pointfn = [this](unsigned i) { - return m_result.head(i).junction_point(); - }; - - auto predicate = [this](const PointIndexEl &e1, - const PointIndexEl &e2) { - double d2d = distance(to_2d(e1.first), to_2d(e2.first)); - double d3d = distance(e1.first, e2.first); - return d2d < 2 * m_cfg.base_radius_mm - && d3d < m_cfg.max_bridge_length_mm; - }; - - m_pillar_clusters = cluster(ground_head_indices, - pointfn, - predicate, - m_cfg.max_bridges_on_pillar); - } - - // Step: Routing the ground connected pinheads, and interconnecting - // them with additional (angled) bridges. Not all of these pinheads - // will be a full pillar (ground connected). Some will connect to a - // nearby pillar using a bridge. The max number of such side-heads for - // a central pillar is limited to avoid bad weight distribution. - void routing_to_ground() - { - const double pradius = m_cfg.head_back_radius_mm; - // const double gndlvl = m_result.ground_level; - - ClusterEl cl_centroids; - cl_centroids.reserve(m_pillar_clusters.size()); - - for(auto& cl : m_pillar_clusters) { - m_thr(); - - // place all the centroid head positions into the index. We - // will query for alternative pillar positions. If a sidehead - // cannot connect to the cluster centroid, we have to search - // for another head with a full pillar. Also when there are two - // elements in the cluster, the centroid is arbitrary and the - // sidehead is allowed to connect to a nearby pillar to - // increase structural stability. - - if(cl.empty()) continue; - - // get the current cluster centroid - auto& thr = m_thr; const auto& points = m_points; - long lcid = cluster_centroid(cl, - [&points](size_t idx) { return points.row(long(idx)); }, - [thr](const Vec3d& p1, const Vec3d& p2) - { - thr(); - return distance(Vec2d(p1(X), p1(Y)), Vec2d(p2(X), p2(Y))); - }); - - assert(lcid >= 0); - unsigned hid = cl[size_t(lcid)]; // Head ID - - cl_centroids.emplace_back(hid); - - Head& h = m_result.head(hid); - h.transform(); - - create_ground_pillar(h.junction_point(), h.dir, h.r_back_mm, h.id); - } - - // now we will go through the clusters ones again and connect the - // sidepoints with the cluster centroid (which is a ground pillar) - // or a nearby pillar if the centroid is unreachable. - size_t ci = 0; - for(auto cl : m_pillar_clusters) { - m_thr(); - - auto cidx = cl_centroids[ci++]; - - // TODO: don't consider the cluster centroid but calculate a - // central position where the pillar can be placed. this way - // the weight is distributed more effectively on the pillar. - - auto centerpillarID = m_result.head_pillar(cidx).id; - - for(auto c : cl) { m_thr(); - if(c == cidx) continue; - - auto& sidehead = m_result.head(c); - sidehead.transform(); - - if(!connect_to_nearpillar(sidehead, centerpillarID) && - !search_pillar_and_connect(sidehead)) - { - Vec3d pstart = sidehead.junction_point(); - //Vec3d pend = Vec3d{pstart(X), pstart(Y), gndlvl}; - // Could not find a pillar, create one - create_ground_pillar(pstart, - sidehead.dir, - pradius, - sidehead.id); - } - } - } - } - - // Step: routing the pinheads that would connect to the model surface - // along the Z axis downwards. For now these will actually be connected with - // the model surface with a flipped pinhead. In the future here we could use - // some smart algorithms to search for a safe path to the ground or to a - // nearby pillar that can hold the supported weight. - void routing_to_model() - { - - // We need to check if there is an easy way out to the bed surface. - // If it can be routed there with a bridge shorter than - // min_bridge_distance. - - // First we want to index the available pillars. The best is to connect - // these points to the available pillars - - auto routedown = [this](Head& head, const Vec3d& dir, double dist) - { - head.transform(); - Vec3d hjp = head.junction_point(); - Vec3d endp = hjp + dist * dir; - m_result.add_bridge(hjp, endp, head.r_back_mm); - m_result.add_junction(endp, head.r_back_mm); - - this->create_ground_pillar(endp, dir, head.r_back_mm); - }; - - std::vector modelpillars; - ccr::SpinningMutex mutex; - - // TODO: connect these to the ground pillars if possible - ccr::enumerate(m_iheads_onmodel.begin(), m_iheads_onmodel.end(), - [this, routedown, &modelpillars, &mutex] - (const std::pair &el, - size_t) - { - m_thr(); - unsigned idx = el.first; - EigenMesh3D::hit_result hit = el.second; - - auto& head = m_result.head(idx); - Vec3d hjp = head.junction_point(); - - // ///////////////////////////////////////////////////////////////// - // Search nearby pillar - // ///////////////////////////////////////////////////////////////// - - if(search_pillar_and_connect(head)) { head.transform(); return; } - - // ///////////////////////////////////////////////////////////////// - // Try straight path - // ///////////////////////////////////////////////////////////////// - - // Cannot connect to nearby pillar. We will try to search for - // a route to the ground. - - double t = bridge_mesh_intersect(hjp, head.dir, head.r_back_mm); - double d = 0, tdown = 0; - Vec3d dirdown(0.0, 0.0, -1.0); - - t = std::min(t, m_cfg.max_bridge_length_mm); - - while(d < t && !std::isinf(tdown = bridge_mesh_intersect( - hjp + d*head.dir, - dirdown, head.r_back_mm))) { - d += head.r_back_mm; - } - - if(std::isinf(tdown)) { // we heave found a route to the ground - routedown(head, head.dir, d); return; - } - - // ///////////////////////////////////////////////////////////////// - // Optimize bridge direction - // ///////////////////////////////////////////////////////////////// - - // Straight path failed so we will try to search for a suitable - // direction out of the cavity. - - // Get the spherical representation of the normal. its easier to - // work with. - double z = head.dir(Z); - double r = 1.0; // for normalized vector - double polar = std::acos(z / r); - double azimuth = std::atan2(head.dir(Y), head.dir(X)); - - using libnest2d::opt::bound; - using libnest2d::opt::initvals; - using libnest2d::opt::GeneticOptimizer; - using libnest2d::opt::StopCriteria; - - StopCriteria stc; - stc.max_iterations = m_cfg.optimizer_max_iterations; - stc.relative_score_difference = m_cfg.optimizer_rel_score_diff; - stc.stop_score = 1e6; - GeneticOptimizer solver(stc); - solver.seed(0); // we want deterministic behavior - - double r_back = head.r_back_mm; - - auto oresult = solver.optimize_max( - [this, hjp, r_back](double plr, double azm) - { - Vec3d n = Vec3d(std::cos(azm) * std::sin(plr), - std::sin(azm) * std::sin(plr), - std::cos(plr)).normalized(); - return bridge_mesh_intersect(hjp, n, r_back); - }, - initvals(polar, azimuth), // let's start with what we have - bound(3*PI/4, PI), // Must not exceed the slope limit - bound(-PI, PI) // azimuth can be a full range search - ); - - d = 0; t = oresult.score; - - polar = std::get<0>(oresult.optimum); - azimuth = std::get<1>(oresult.optimum); - Vec3d bridgedir = Vec3d(std::cos(azimuth) * std::sin(polar), - std::sin(azimuth) * std::sin(polar), - std::cos(polar)).normalized(); - - t = std::min(t, m_cfg.max_bridge_length_mm); - - while(d < t && !std::isinf(tdown = bridge_mesh_intersect( - hjp + d*bridgedir, - dirdown, - head.r_back_mm))) { - d += head.r_back_mm; - } - - if(std::isinf(tdown)) { // we heave found a route to the ground - routedown(head, bridgedir, d); return; - } - - // ///////////////////////////////////////////////////////////////// - // Route to model body - // ///////////////////////////////////////////////////////////////// - - double zangle = std::asin(hit.direction()(Z)); - zangle = std::max(zangle, PI/4); - double h = std::sin(zangle) * head.fullwidth(); - - // The width of the tail head that we would like to have... - h = std::min(hit.distance() - head.r_back_mm, h); - - if(h > 0) { - Vec3d endp{hjp(X), hjp(Y), hjp(Z) - hit.distance() + h}; - auto center_hit = m_mesh.query_ray_hit(hjp, dirdown); - - double hitdiff = center_hit.distance() - hit.distance(); - Vec3d hitp = std::abs(hitdiff) < 2*head.r_back_mm? - center_hit.position() : hit.position(); - - head.transform(); - - Pillar& pill = m_result.add_pillar(unsigned(head.id), - endp, - head.r_back_mm); - - Vec3d taildir = endp - hitp; - double dist = distance(endp, hitp) + m_cfg.head_penetration_mm; - double w = dist - 2 * head.r_pin_mm - head.r_back_mm; - - Head tailhead(head.r_back_mm, - head.r_pin_mm, - w, - m_cfg.head_penetration_mm, - taildir, - hitp); - - tailhead.transform(); - pill.base = tailhead.mesh; - - // Experimental: add the pillar to the index for cascading - std::lock_guard lk(mutex); - modelpillars.emplace_back(unsigned(pill.id)); - return; - } - - // We have failed to route this head. - BOOST_LOG_TRIVIAL(warning) - << "Failed to route model facing support point." - << " ID: " << idx; - head.invalidate(); - }); - - for(auto pillid : modelpillars) { - auto& pillar = m_result.pillar(pillid); - m_pillar_index.insert(pillar.endpoint(), pillid); - } - } - - // Helper function for interconnect_pillars where pairs of already connected - // pillars should be checked for not to be processed again. This can be done - // in O(log) or even constant time with a set or an unordered set of hash - // values uniquely representing a pair of integers. The order of numbers - // within the pair should not matter, it has the same unique hash. - template static IntegerOnly pairhash(I a, I b) - { - using std::ceil; using std::log2; using std::max; using std::min; - - I g = min(a, b), l = max(a, b); - - auto bits_g = g ? int(ceil(log2(g))) : 0; - - // Assume the hash will fit into the output variable - assert((l ? (ceil(log2(l))) : 0) + bits_g < int(sizeof(I) * CHAR_BIT)); - - return (l << bits_g) + g; - } - - void interconnect_pillars() { - // Now comes the algorithm that connects pillars with each other. - // Ideally every pillar should be connected with at least one of its - // neighbors if that neighbor is within max_pillar_link_distance - - // Pillars with height exceeding H1 will require at least one neighbor - // to connect with. Height exceeding H2 require two neighbors. - double H1 = m_cfg.max_solo_pillar_height_mm; - double H2 = m_cfg.max_dual_pillar_height_mm; - double d = m_cfg.max_pillar_link_distance_mm; - - //A connection between two pillars only counts if the height ratio is - // bigger than 50% - double min_height_ratio = 0.5; - - std::set pairs; - - // A function to connect one pillar with its neighbors. THe number of - // neighbors is given in the configuration. This function if called - // for every pillar in the pillar index. A pair of pillar will not - // be connected multiple times this is ensured by the 'pairs' set which - // remembers the processed pillar pairs - auto cascadefn = - [this, d, &pairs, min_height_ratio, H1] (const PointIndexEl& el) - { - Vec3d qp = el.first; // endpoint of the pillar - - const Pillar& pillar = m_result.pillar(el.second); // actual pillar - - // Get the max number of neighbors a pillar should connect to - unsigned neighbors = m_cfg.pillar_cascade_neighbors; - - // connections are already enough for the pillar - if(pillar.links >= neighbors) return; - - // Query all remaining points within reach - auto qres = m_pillar_index.query([qp, d](const PointIndexEl& e){ - return distance(e.first, qp) < d; - }); - - // sort the result by distance (have to check if this is needed) - std::sort(qres.begin(), qres.end(), - [qp](const PointIndexEl& e1, const PointIndexEl& e2){ - return distance(e1.first, qp) < distance(e2.first, qp); - }); - - for(auto& re : qres) { // process the queried neighbors - - if(re.second == el.second) continue; // Skip self - - auto a = el.second, b = re.second; - - // Get unique hash for the given pair (order doesn't matter) - auto hashval = pairhash(a, b); - - // Search for the pair amongst the remembered pairs - if(pairs.find(hashval) != pairs.end()) continue; - - const Pillar& neighborpillar = m_result.pillar(re.second); - - // this neighbor is occupied, skip - if(neighborpillar.links >= neighbors) continue; - - if(interconnect(pillar, neighborpillar)) { - pairs.insert(hashval); - - // If the interconnection length between the two pillars is - // less than 50% of the longer pillar's height, don't count - if(pillar.height < H1 || - neighborpillar.height / pillar.height > min_height_ratio) - m_result.increment_links(pillar); - - if(neighborpillar.height < H1 || - pillar.height / neighborpillar.height > min_height_ratio) - m_result.increment_links(neighborpillar); - - } - - // connections are enough for one pillar - if(pillar.links >= neighbors) break; - } - }; - - // Run the cascade for the pillars in the index - m_pillar_index.foreach(cascadefn); - - // We would be done here if we could allow some pillars to not be - // connected with any neighbors. But this might leave the support tree - // unprintable. - // - // The current solution is to insert additional pillars next to these - // lonely pillars. One or even two additional pillar might get inserted - // depending on the length of the lonely pillar. - - size_t pillarcount = m_result.pillarcount(); - - // Again, go through all pillars, this time in the whole support tree - // not just the index. - for(size_t pid = 0; pid < pillarcount; pid++) { - auto pillar = [this, pid]() { return m_result.pillar(pid); }; - - // Decide how many additional pillars will be needed: - - unsigned needpillars = 0; - if (pillar().bridges > m_cfg.max_bridges_on_pillar) - needpillars = 3; - else if (pillar().links < 2 && pillar().height > H2) { - // Not enough neighbors to support this pillar - needpillars = 2 - pillar().links; - } else if (pillar().links < 1 && pillar().height > H1) { - // No neighbors could be found and the pillar is too long. - needpillars = 1; - } - - // Search for new pillar locations: - - bool found = false; - double alpha = 0; // goes to 2Pi - double r = 2 * m_cfg.base_radius_mm; - Vec3d pillarsp = pillar().startpoint(); - - // temp value for starting point detection - Vec3d sp(pillarsp(X), pillarsp(Y), pillarsp(Z) - r); - - // A vector of bool for placement feasbility - std::vector canplace(needpillars, false); - std::vector spts(needpillars); // vector of starting points - - double gnd = m_result.ground_level; - double min_dist = m_cfg.pillar_base_safety_distance_mm + - m_cfg.base_radius_mm + EPSILON; - - while(!found && alpha < 2*PI) { - for (unsigned n = 0; - n < needpillars && (!n || canplace[n - 1]); - n++) - { - double a = alpha + n * PI / 3; - Vec3d s = sp; - s(X) += std::cos(a) * r; - s(Y) += std::sin(a) * r; - spts[n] = s; - - // Check the path vertically down - auto hr = bridge_mesh_intersect(s, {0, 0, -1}, pillar().r); - Vec3d gndsp{s(X), s(Y), gnd}; - - // If the path is clear, check for pillar base collisions - canplace[n] = std::isinf(hr.distance()) && - std::sqrt(m_mesh.squared_distance(gndsp)) > - min_dist; - } - - found = std::all_of(canplace.begin(), canplace.end(), - [](bool v) { return v; }); - - // 20 angles will be tried... - alpha += 0.1 * PI; - } - - std::vector newpills; - newpills.reserve(needpillars); - - if(found) for(unsigned n = 0; n < needpillars; n++) { - Vec3d s = spts[n]; - Pillar p(s, Vec3d(s(X), s(Y), gnd), pillar().r); - p.add_base(m_cfg.base_height_mm, m_cfg.base_radius_mm); - - if(interconnect(pillar(), p)) { - Pillar& pp = m_result.add_pillar(p); - m_pillar_index.insert(pp.endpoint(), unsigned(pp.id)); - - m_result.add_junction(s, pillar().r); - double t = bridge_mesh_intersect(pillarsp, - dirv(pillarsp, s), - pillar().r); - if(distance(pillarsp, s) < t) - m_result.add_bridge(pillarsp, s, pillar().r); - - if(pillar().endpoint()(Z) > m_result.ground_level) - m_result.add_junction(pillar().endpoint(), pillar().r); - - newpills.emplace_back(pp.id); - m_result.increment_links(pillar()); - } - } - - if(!newpills.empty()) { - for(auto it = newpills.begin(), nx = std::next(it); - nx != newpills.end(); ++it, ++nx) { - const Pillar& itpll = m_result.pillar(*it); - const Pillar& nxpll = m_result.pillar(*nx); - if(interconnect(itpll, nxpll)) { - m_result.increment_links(itpll); - m_result.increment_links(nxpll); - } - } - - m_pillar_index.foreach(cascadefn); - } - } - } - - // Step: process the support points where there is not enough space for a - // full pinhead. In this case we will use a rounded sphere as a touching - // point and use a thinner bridge (let's call it a stick). - void routing_headless () - { - // For now we will just generate smaller headless sticks with a sharp - // ending point that connects to the mesh surface. - - // We will sink the pins into the model surface for a distance of 1/3 of - // the pin radius - for(unsigned i : m_iheadless) { - m_thr(); - - const auto R = double(m_support_pts[i].head_front_radius); - const double HWIDTH_MM = R/3; - - // Exact support position - Vec3d sph = m_support_pts[i].pos.cast(); - Vec3d n = m_support_nmls.row(i); // mesh outward normal - Vec3d sp = sph - n * HWIDTH_MM; // stick head start point - - Vec3d dir = {0, 0, -1}; - Vec3d sj = sp + R * n; // stick start point - - // This is only for checking - double idist = bridge_mesh_intersect(sph, dir, R, true); - double dist = ray_mesh_intersect(sj, dir); - if (std::isinf(dist)) - dist = sph(Z) - m_mesh.ground_level() - + m_mesh.ground_level_offset(); - - if(std::isnan(idist) || idist < 2*R || - std::isnan(dist) || dist < 2*R) - { - BOOST_LOG_TRIVIAL(warning) << "Can not find route for headless" - << " support stick at: " - << sj.transpose(); - continue; - } - - Vec3d ej = sj + (dist + HWIDTH_MM)* dir; - m_result.add_compact_bridge(sp, ej, n, R, !std::isinf(dist)); - } - } - - void merge_result() { m_result.merge_and_cleanup(); } -}; - -bool SLASupportTree::generate(const std::vector &support_points, - const EigenMesh3D& mesh, - const SupportConfig &cfg, - const Controller &ctl) -{ - if(support_points.empty()) return false; - - Algorithm alg(cfg, mesh, support_points, *m_impl, ctl.cancelfn); - - // Let's define the individual steps of the processing. We can experiment - // later with the ordering and the dependencies between them. - enum Steps { - BEGIN, - FILTER, - PINHEADS, - CLASSIFY, - ROUTING_GROUND, - ROUTING_NONGROUND, - CASCADE_PILLARS, - HEADLESS, - MERGE_RESULT, - DONE, - ABORT, - NUM_STEPS - //... - }; - - // Collect the algorithm steps into a nice sequence - std::array, NUM_STEPS> program = { - [] () { - // Begin... - // Potentially clear up the shared data (not needed for now) - }, - - std::bind(&Algorithm::filter, &alg), - - std::bind(&Algorithm::add_pinheads, &alg), - - std::bind(&Algorithm::classify, &alg), - - std::bind(&Algorithm::routing_to_ground, &alg), - - std::bind(&Algorithm::routing_to_model, &alg), - - std::bind(&Algorithm::interconnect_pillars, &alg), - - std::bind(&Algorithm::routing_headless, &alg), - - std::bind(&Algorithm::merge_result, &alg), - - [] () { - // Done - }, - - [] () { - // Abort - } - }; - - Steps pc = BEGIN; - - if(cfg.ground_facing_only) { - program[ROUTING_NONGROUND] = []() { - BOOST_LOG_TRIVIAL(info) - << "Skipping model-facing supports as requested."; - }; - program[HEADLESS] = []() { - BOOST_LOG_TRIVIAL(info) << "Skipping headless stick generation as" - " requested."; - }; - } - - // Let's define a simple automaton that will run our program. - auto progress = [&ctl, &pc] () { - static const std::array stepstr { - "Starting", - "Filtering", - "Generate pinheads", - "Classification", - "Routing to ground", - "Routing supports to model surface", - "Interconnecting pillars", - "Processing small holes", - "Merging support mesh", - "Done", - "Abort" - }; - - static const std::array stepstate { - 0, - 10, - 30, - 50, - 60, - 70, - 80, - 85, - 99, - 100, - 0 - }; - - if(ctl.stopcondition()) pc = ABORT; - - switch(pc) { - case BEGIN: pc = FILTER; break; - case FILTER: pc = PINHEADS; break; - case PINHEADS: pc = CLASSIFY; break; - case CLASSIFY: pc = ROUTING_GROUND; break; - case ROUTING_GROUND: pc = ROUTING_NONGROUND; break; - case ROUTING_NONGROUND: pc = CASCADE_PILLARS; break; - case CASCADE_PILLARS: pc = HEADLESS; break; - case HEADLESS: pc = MERGE_RESULT; break; - case MERGE_RESULT: pc = DONE; break; - case DONE: - case ABORT: break; - default: ; - } - - ctl.statuscb(stepstate[pc], stepstr[pc]); - }; - - // Just here we run the computation... - while(pc < DONE) { - progress(); - program[pc](); - } - - return pc == ABORT; -} - -SLASupportTree::SLASupportTree(double gnd_lvl): m_impl(new Impl()) { - m_impl->ground_level = gnd_lvl; -} - -const TriangleMesh &SLASupportTree::merged_mesh() const -{ - return m_impl->merged_mesh(); -} - -void SLASupportTree::merged_mesh_with_pad(TriangleMesh &outmesh) const { - outmesh.merge(merged_mesh()); - outmesh.merge(get_pad()); -} - -std::vector SLASupportTree::slice( +std::vector SupportTree::slice( const std::vector &grid, float cr) const { - const TriangleMesh &sup_mesh = m_impl->merged_mesh(); - const TriangleMesh &pad_mesh = get_pad(); + const TriangleMesh &sup_mesh = retrieve_mesh(MeshType::Support); + const TriangleMesh &pad_mesh = retrieve_mesh(MeshType::Pad); using Slices = std::vector; auto slices = reserve_vector(2); @@ -2530,7 +62,7 @@ std::vector SLASupportTree::slice( slices.emplace_back(); TriangleMeshSlicer sup_slicer(&sup_mesh); - sup_slicer.slice(grid, cr, &slices.back(), m_impl->ctl().cancelfn); + sup_slicer.slice(grid, cr, &slices.back(), ctl().cancelfn); } if (!pad_mesh.empty()) { @@ -2544,7 +76,7 @@ std::vector SLASupportTree::slice( std::copy(grid.begin(), maxzit, std::back_inserter(padgrid)); TriangleMeshSlicer pad_slicer(&pad_mesh); - pad_slicer.slice(padgrid, cr, &slices.back(), m_impl->ctl().cancelfn); + pad_slicer.slice(padgrid, cr, &slices.back(), ctl().cancelfn); } size_t len = grid.size(); @@ -2566,36 +98,20 @@ std::vector SLASupportTree::slice( return mrg; } -const TriangleMesh &SLASupportTree::add_pad(const ExPolygons& modelbase, - const PadConfig& pcfg) const +SupportTree::UPtr SupportTree::create(const SupportableMesh &sm, + const JobController & ctl) { - return m_impl->create_pad(merged_mesh(), modelbase, pcfg).tmesh; + auto builder = make_unique(); + builder->m_ctl = ctl; + + if (sm.cfg.enabled) { + builder->build(sm); + builder->merge_and_cleanup(); // clean metadata, leave only the meshes. + } else { + builder->ground_level = sm.emesh.ground_level(); + } + + return std::move(builder); } -const TriangleMesh &SLASupportTree::get_pad() const -{ - return m_impl->pad().tmesh; -} - -void SLASupportTree::remove_pad() -{ - m_impl->remove_pad(); -} - -SLASupportTree::SLASupportTree(const std::vector &points, - const EigenMesh3D& emesh, - const SupportConfig &cfg, - const Controller &ctl): - m_impl(new Impl(ctl)) -{ - m_impl->ground_level = emesh.ground_level() - cfg.object_elevation_mm; - generate(points, emesh, cfg, ctl); -} - -SLASupportTree::SLASupportTree(SLASupportTree &&o) = default; -SLASupportTree &SLASupportTree::operator=(SLASupportTree &&o) = default; - -SLASupportTree::~SLASupportTree() {} - -} -} +}} // namespace Slic3r::sla diff --git a/src/libslic3r/SLA/SLASupportTree.hpp b/src/libslic3r/SLA/SLASupportTree.hpp index d2797f5f6..322b29251 100644 --- a/src/libslic3r/SLA/SLASupportTree.hpp +++ b/src/libslic3r/SLA/SLASupportTree.hpp @@ -2,23 +2,14 @@ #define SLASUPPORTTREE_HPP #include -#include -#include #include #include #include "SLACommon.hpp" +#include "SLAPad.hpp" namespace Slic3r { -// Needed types from Point.hpp -typedef int32_t coord_t; -typedef Eigen::Matrix Vec3d; -typedef Eigen::Matrix Vec3f; -typedef Eigen::Matrix Vec3crd; -typedef std::vector Pointf3s; -typedef std::vector Points3; - class TriangleMesh; class Model; class ModelInstance; @@ -31,13 +22,17 @@ using ExPolygons = std::vector; namespace sla { -enum class PillarConnectionMode { +enum class PillarConnectionMode +{ zigzag, cross, dynamic }; -struct SupportConfig { +struct SupportConfig +{ + bool enabled = true; + // Radius in mm of the pointing side of the head. double head_front_radius_mm = 0.2; @@ -108,93 +103,78 @@ struct SupportConfig { static const unsigned max_bridges_on_pillar; }; -struct PadConfig; +enum class MeshType { Support, Pad }; /// A Control structure for the support calculation. Consists of the status /// indicator callback and the stop condition predicate. -struct Controller { - +struct JobController +{ + using StatusFn = std::function; + using StopCond = std::function; + using CancelFn = std::function; + // This will signal the status of the calculation to the front-end - std::function statuscb = - [](unsigned, const std::string&){}; - + StatusFn statuscb = [](unsigned, const std::string&){}; + // Returns true if the calculation should be aborted. - std::function stopcondition = [](){ return false; }; - + StopCond stopcondition = [](){ return false; }; + // Similar to cancel callback. This should check the stop condition and // if true, throw an appropriate exception. (TriangleMeshSlicer needs this) // consider it a hard abort. stopcondition is permits the algorithm to // terminate itself - std::function cancelfn = [](){}; + CancelFn cancelfn = [](){}; }; -/* ************************************************************************** */ +struct SupportableMesh +{ + EigenMesh3D emesh; + SupportPoints pts; + SupportConfig cfg; + + explicit SupportableMesh(const TriangleMesh & trmsh, + const SupportPoints &sp, + const SupportConfig &c) + : emesh{trmsh}, pts{sp}, cfg{c} + {} + + explicit SupportableMesh(const EigenMesh3D &em, + const SupportPoints &sp, + const SupportConfig &c) + : emesh{em}, pts{sp}, cfg{c} + {} +}; /// The class containing mesh data for the generated supports. -class SLASupportTree { - class Impl; // persistent support data - std::unique_ptr m_impl; - - Impl& get() { return *m_impl; } - const Impl& get() const { return *m_impl; } - - friend void add_sla_supports(Model&, - const SupportConfig&, - const Controller&); - - // The generation algorithm is quite long and will be captured in a separate - // class with private data, helper methods, etc... This data is only needed - // during the calculation whereas the Impl class contains the persistent - // data, mostly the meshes. - class Algorithm; - - // Generate the 3D supports for a model intended for SLA print. This - // will instantiate the Algorithm class and call its appropriate methods - // with status indication. - bool generate(const std::vector& pts, - const EigenMesh3D& mesh, - const SupportConfig& cfg = {}, - const Controller& ctl = {}); - +class SupportTree +{ + JobController m_ctl; public: - - SLASupportTree(double ground_level = 0.0); - - SLASupportTree(const std::vector& pts, - const EigenMesh3D& em, - const SupportConfig& cfg = {}, - const Controller& ctl = {}); + using UPtr = std::unique_ptr; - SLASupportTree(const SLASupportTree&) = delete; - SLASupportTree& operator=(const SLASupportTree&) = delete; - - SLASupportTree(SLASupportTree &&o); - SLASupportTree &operator=(SLASupportTree &&o); + static UPtr create(const SupportableMesh &input, + const JobController &ctl = {}); - ~SLASupportTree(); + virtual ~SupportTree() = default; - /// Get the whole mesh united into the output TriangleMesh - /// WITHOUT THE PAD - const TriangleMesh& merged_mesh() const; + virtual const TriangleMesh &retrieve_mesh(MeshType meshtype) const = 0; - void merged_mesh_with_pad(TriangleMesh&) const; - - std::vector slice(const std::vector &, - float closing_radius) const; - - /// Adding the "pad" (base pool) under the supports + /// Adding the "pad" under the supports. /// modelbase will be used according to the embed_object flag in PoolConfig. - /// If set, the plate will interpreted as the model's intrinsic pad. + /// If set, the plate will be interpreted as the model's intrinsic pad. /// Otherwise, the modelbase will be unified with the base plate calculated /// from the supports. - const TriangleMesh& add_pad(const ExPolygons& modelbase, - const PadConfig& pcfg) const; - - /// Get the pad geometry - const TriangleMesh& get_pad() const; - - void remove_pad(); - + virtual const TriangleMesh &add_pad(const ExPolygons &modelbase, + const PadConfig & pcfg) = 0; + + virtual void remove_pad() = 0; + + std::vector slice(const std::vector &, + float closing_radius) const; + + void retrieve_full_mesh(TriangleMesh &outmesh) const; + + const JobController &ctl() const { return m_ctl; } }; } diff --git a/src/libslic3r/SLA/SLASupportTreeAlgorithm.cpp b/src/libslic3r/SLA/SLASupportTreeAlgorithm.cpp new file mode 100644 index 000000000..2f4a0c645 --- /dev/null +++ b/src/libslic3r/SLA/SLASupportTreeAlgorithm.cpp @@ -0,0 +1,1383 @@ +#include "SLASupportTreeAlgorithm.hpp" + +#include +#include +#include + +namespace Slic3r { +namespace sla { + +SupportTreeAlgorithm::SupportTreeAlgorithm(SupportTreeBuilder & builder, + const SupportableMesh &sm) + : m_cfg(sm.cfg) + , m_mesh(sm.emesh) + , m_support_pts(sm.pts) + , m_support_nmls(sm.pts.size(), 3) + , m_builder(builder) + , m_points(sm.pts.size(), 3) + , m_thr(builder.ctl().cancelfn) +{ + // Prepare the support points in Eigen/IGL format as well, we will use + // it mostly in this form. + + long i = 0; + for (const SupportPoint &sp : m_support_pts) { + m_points.row(i)(X) = double(sp.pos(X)); + m_points.row(i)(Y) = double(sp.pos(Y)); + m_points.row(i)(Z) = double(sp.pos(Z)); + ++i; + } +} + +bool SupportTreeAlgorithm::execute(SupportTreeBuilder & builder, + const SupportableMesh &sm) +{ + if(sm.pts.empty()) return false; + + SupportTreeAlgorithm alg(builder, sm); + + // Let's define the individual steps of the processing. We can experiment + // later with the ordering and the dependencies between them. + enum Steps { + BEGIN, + FILTER, + PINHEADS, + CLASSIFY, + ROUTING_GROUND, + ROUTING_NONGROUND, + CASCADE_PILLARS, + HEADLESS, + MERGE_RESULT, + DONE, + ABORT, + NUM_STEPS + //... + }; + + // Collect the algorithm steps into a nice sequence + std::array, NUM_STEPS> program = { + [] () { + // Begin... + // Potentially clear up the shared data (not needed for now) + }, + + std::bind(&SupportTreeAlgorithm::filter, &alg), + + std::bind(&SupportTreeAlgorithm::add_pinheads, &alg), + + std::bind(&SupportTreeAlgorithm::classify, &alg), + + std::bind(&SupportTreeAlgorithm::routing_to_ground, &alg), + + std::bind(&SupportTreeAlgorithm::routing_to_model, &alg), + + std::bind(&SupportTreeAlgorithm::interconnect_pillars, &alg), + + std::bind(&SupportTreeAlgorithm::routing_headless, &alg), + + std::bind(&SupportTreeAlgorithm::merge_result, &alg), + + [] () { + // Done + }, + + [] () { + // Abort + } + }; + + Steps pc = BEGIN; + + if(sm.cfg.ground_facing_only) { + program[ROUTING_NONGROUND] = []() { + BOOST_LOG_TRIVIAL(info) + << "Skipping model-facing supports as requested."; + }; + program[HEADLESS] = []() { + BOOST_LOG_TRIVIAL(info) << "Skipping headless stick generation as" + " requested."; + }; + } + + // Let's define a simple automaton that will run our program. + auto progress = [&builder, &pc] () { + static const std::array stepstr { + "Starting", + "Filtering", + "Generate pinheads", + "Classification", + "Routing to ground", + "Routing supports to model surface", + "Interconnecting pillars", + "Processing small holes", + "Merging support mesh", + "Done", + "Abort" + }; + + static const std::array stepstate { + 0, + 10, + 30, + 50, + 60, + 70, + 80, + 85, + 99, + 100, + 0 + }; + + if(builder.ctl().stopcondition()) pc = ABORT; + + switch(pc) { + case BEGIN: pc = FILTER; break; + case FILTER: pc = PINHEADS; break; + case PINHEADS: pc = CLASSIFY; break; + case CLASSIFY: pc = ROUTING_GROUND; break; + case ROUTING_GROUND: pc = ROUTING_NONGROUND; break; + case ROUTING_NONGROUND: pc = CASCADE_PILLARS; break; + case CASCADE_PILLARS: pc = HEADLESS; break; + case HEADLESS: pc = MERGE_RESULT; break; + case MERGE_RESULT: pc = DONE; break; + case DONE: + case ABORT: break; + default: ; + } + + builder.ctl().statuscb(stepstate[pc], stepstr[pc]); + }; + + // Just here we run the computation... + while(pc < DONE) { + progress(); + program[pc](); + } + + return pc == ABORT; +} + +EigenMesh3D::hit_result SupportTreeAlgorithm::pinhead_mesh_intersect( + const Vec3d &s, const Vec3d &dir, double r_pin, double r_back, double width) +{ + static const size_t SAMPLES = 8; + + // method based on: + // https://math.stackexchange.com/questions/73237/parametric-equation-of-a-circle-in-3d-space + + // We will shoot multiple rays from the head pinpoint in the direction + // of the pinhead robe (side) surface. The result will be the smallest + // hit distance. + + // Move away slightly from the touching point to avoid raycasting on the + // inner surface of the mesh. + Vec3d v = dir; // Our direction (axis) + Vec3d c = s + width * dir; + const double& sd = m_cfg.safety_distance_mm; + + // Two vectors that will be perpendicular to each other and to the + // axis. Values for a(X) and a(Y) are now arbitrary, a(Z) is just a + // placeholder. + Vec3d a(0, 1, 0), b; + + // The portions of the circle (the head-back circle) for which we will + // shoot rays. + std::array phis; + for(size_t i = 0; i < phis.size(); ++i) phis[i] = i*2*PI/phis.size(); + + auto& m = m_mesh; + using HitResult = EigenMesh3D::hit_result; + + // Hit results + std::array hits; + + // We have to address the case when the direction vector v (same as + // dir) is coincident with one of the world axes. In this case two of + // its components will be completely zero and one is 1.0. Our method + // becomes dangerous here due to division with zero. Instead, vector + // 'a' can be an element-wise rotated version of 'v' + auto chk1 = [] (double val) { + return std::abs(std::abs(val) - 1) < 1e-20; + }; + + if(chk1(v(X)) || chk1(v(Y)) || chk1(v(Z))) { + a = {v(Z), v(X), v(Y)}; + b = {v(Y), v(Z), v(X)}; + } + else { + a(Z) = -(v(Y)*a(Y)) / v(Z); a.normalize(); + b = a.cross(v); + } + + // Now a and b vectors are perpendicular to v and to each other. + // Together they define the plane where we have to iterate with the + // given angles in the 'phis' vector + ccr_par::enumerate( + phis.begin(), phis.end(), + [&hits, &m, sd, r_pin, r_back, s, a, b, c](double phi, size_t i) { + double sinphi = std::sin(phi); + double cosphi = std::cos(phi); + + // Let's have a safety coefficient for the radiuses. + double rpscos = (sd + r_pin) * cosphi; + double rpssin = (sd + r_pin) * sinphi; + double rpbcos = (sd + r_back) * cosphi; + double rpbsin = (sd + r_back) * sinphi; + + // Point on the circle on the pin sphere + Vec3d ps(s(X) + rpscos * a(X) + rpssin * b(X), + s(Y) + rpscos * a(Y) + rpssin * b(Y), + s(Z) + rpscos * a(Z) + rpssin * b(Z)); + + // Point ps is not on mesh but can be inside or + // outside as well. This would cause many problems + // with ray-casting. To detect the position we will + // use the ray-casting result (which has an is_inside + // predicate). + + // This is the point on the circle on the back sphere + Vec3d p(c(X) + rpbcos * a(X) + rpbsin * b(X), + c(Y) + rpbcos * a(Y) + rpbsin * b(Y), + c(Z) + rpbcos * a(Z) + rpbsin * b(Z)); + + Vec3d n = (p - ps).normalized(); + auto q = m.query_ray_hit(ps + sd * n, n); + + if (q.is_inside()) { // the hit is inside the model + if (q.distance() > r_pin + sd) { + // If we are inside the model and the hit + // distance is bigger than our pin circle + // diameter, it probably indicates that the + // support point was already inside the + // model, or there is really no space + // around the point. We will assign a zero + // hit distance to these cases which will + // enforce the function return value to be + // an invalid ray with zero hit distance. + // (see min_element at the end) + hits[i] = HitResult(0.0); + } else { + // re-cast the ray from the outside of the + // object. The starting point has an offset + // of 2*safety_distance because the + // original ray has also had an offset + auto q2 = m.query_ray_hit( + ps + (q.distance() + 2 * sd) * n, n); + hits[i] = q2; + } + } else + hits[i] = q; + }); + + auto mit = std::min_element(hits.begin(), hits.end()); + + return *mit; +} + +EigenMesh3D::hit_result SupportTreeAlgorithm::bridge_mesh_intersect( + const Vec3d &s, const Vec3d &dir, double r, bool ins_check) +{ + static const size_t SAMPLES = 8; + + // helper vector calculations + Vec3d a(0, 1, 0), b; + const double& sd = m_cfg.safety_distance_mm; + + // INFO: for explanation of the method used here, see the previous + // method's comments. + + auto chk1 = [] (double val) { + return std::abs(std::abs(val) - 1) < 1e-20; + }; + + if(chk1(dir(X)) || chk1(dir(Y)) || chk1(dir(Z))) { + a = {dir(Z), dir(X), dir(Y)}; + b = {dir(Y), dir(Z), dir(X)}; + } + else { + a(Z) = -(dir(Y)*a(Y)) / dir(Z); a.normalize(); + b = a.cross(dir); + } + + // circle portions + std::array phis; + for(size_t i = 0; i < phis.size(); ++i) phis[i] = i*2*PI/phis.size(); + + auto& m = m_mesh; + using HitResult = EigenMesh3D::hit_result; + + // Hit results + std::array hits; + + ccr_par::enumerate( + phis.begin(), phis.end(), + [&m, a, b, sd, dir, r, s, ins_check, &hits] (double phi, size_t i) { + double sinphi = std::sin(phi); + double cosphi = std::cos(phi); + + // Let's have a safety coefficient for the radiuses. + double rcos = (sd + r) * cosphi; + double rsin = (sd + r) * sinphi; + + // Point on the circle on the pin sphere + Vec3d p (s(X) + rcos * a(X) + rsin * b(X), + s(Y) + rcos * a(Y) + rsin * b(Y), + s(Z) + rcos * a(Z) + rsin * b(Z)); + + auto hr = m.query_ray_hit(p + sd*dir, dir); + + if(ins_check && hr.is_inside()) { + if(hr.distance() > 2 * r + sd) hits[i] = HitResult(0.0); + else { + // re-cast the ray from the outside of the object + auto hr2 = + m.query_ray_hit(p + (hr.distance() + 2*sd)*dir, dir); + + hits[i] = hr2; + } + } else hits[i] = hr; + }); + + auto mit = std::min_element(hits.begin(), hits.end()); + + return *mit; +} + +bool SupportTreeAlgorithm::interconnect(const Pillar &pillar, + const Pillar &nextpillar) +{ + // We need to get the starting point of the zig-zag pattern. We have to + // be aware that the two head junctions are at different heights. We + // may start from the lowest junction and call it a day but this + // strategy would leave unconnected a lot of pillar duos where the + // shorter pillar is too short to start a new bridge but the taller + // pillar could still be bridged with the shorter one. + bool was_connected = false; + + Vec3d supper = pillar.startpoint(); + Vec3d slower = nextpillar.startpoint(); + Vec3d eupper = pillar.endpoint(); + Vec3d elower = nextpillar.endpoint(); + + double zmin = m_builder.ground_level + m_cfg.base_height_mm; + eupper(Z) = std::max(eupper(Z), zmin); + elower(Z) = std::max(elower(Z), zmin); + + // The usable length of both pillars should be positive + if(slower(Z) - elower(Z) < 0) return false; + if(supper(Z) - eupper(Z) < 0) return false; + + double pillar_dist = distance(Vec2d{slower(X), slower(Y)}, + Vec2d{supper(X), supper(Y)}); + double bridge_distance = pillar_dist / std::cos(-m_cfg.bridge_slope); + double zstep = pillar_dist * std::tan(-m_cfg.bridge_slope); + + if(pillar_dist < 2 * m_cfg.head_back_radius_mm || + pillar_dist > m_cfg.max_pillar_link_distance_mm) return false; + + if(supper(Z) < slower(Z)) supper.swap(slower); + if(eupper(Z) < elower(Z)) eupper.swap(elower); + + double startz = 0, endz = 0; + + startz = slower(Z) - zstep < supper(Z) ? slower(Z) - zstep : slower(Z); + endz = eupper(Z) + zstep > elower(Z) ? eupper(Z) + zstep : eupper(Z); + + if(slower(Z) - eupper(Z) < std::abs(zstep)) { + // no space for even one cross + + // Get max available space + startz = std::min(supper(Z), slower(Z) - zstep); + endz = std::max(eupper(Z) + zstep, elower(Z)); + + // Align to center + double available_dist = (startz - endz); + double rounds = std::floor(available_dist / std::abs(zstep)); + startz -= 0.5 * (available_dist - rounds * std::abs(zstep)); + } + + auto pcm = m_cfg.pillar_connection_mode; + bool docrosses = + pcm == PillarConnectionMode::cross || + (pcm == PillarConnectionMode::dynamic && + pillar_dist > 2*m_cfg.base_radius_mm); + + // 'sj' means starting junction, 'ej' is the end junction of a bridge. + // They will be swapped in every iteration thus the zig-zag pattern. + // According to a config parameter, a second bridge may be added which + // results in a cross connection between the pillars. + Vec3d sj = supper, ej = slower; sj(Z) = startz; ej(Z) = sj(Z) + zstep; + + // TODO: This is a workaround to not have a faulty last bridge + while(ej(Z) >= eupper(Z) /*endz*/) { + if(bridge_mesh_intersect(sj, dirv(sj, ej), pillar.r) >= bridge_distance) + { + m_builder.add_crossbridge(sj, ej, pillar.r); + was_connected = true; + } + + // double bridging: (crosses) + if(docrosses) { + Vec3d sjback(ej(X), ej(Y), sj(Z)); + Vec3d ejback(sj(X), sj(Y), ej(Z)); + if (sjback(Z) <= slower(Z) && ejback(Z) >= eupper(Z) && + bridge_mesh_intersect(sjback, dirv(sjback, ejback), + pillar.r) >= bridge_distance) { + // need to check collision for the cross stick + m_builder.add_crossbridge(sjback, ejback, pillar.r); + was_connected = true; + } + } + + sj.swap(ej); + ej(Z) = sj(Z) + zstep; + } + + return was_connected; +} + +bool SupportTreeAlgorithm::connect_to_nearpillar(const Head &head, + long nearpillar_id) +{ + auto nearpillar = [this, nearpillar_id]() { + return m_builder.pillar(nearpillar_id); + }; + + if (nearpillar().bridges > m_cfg.max_bridges_on_pillar) return false; + + Vec3d headjp = head.junction_point(); + Vec3d nearjp_u = nearpillar().startpoint(); + Vec3d nearjp_l = nearpillar().endpoint(); + + double r = head.r_back_mm; + double d2d = distance(to_2d(headjp), to_2d(nearjp_u)); + double d3d = distance(headjp, nearjp_u); + + double hdiff = nearjp_u(Z) - headjp(Z); + double slope = std::atan2(hdiff, d2d); + + Vec3d bridgestart = headjp; + Vec3d bridgeend = nearjp_u; + double max_len = m_cfg.max_bridge_length_mm; + double max_slope = m_cfg.bridge_slope; + double zdiff = 0.0; + + // check the default situation if feasible for a bridge + if(d3d > max_len || slope > -max_slope) { + // not feasible to connect the two head junctions. We have to search + // for a suitable touch point. + + double Zdown = headjp(Z) + d2d * std::tan(-max_slope); + Vec3d touchjp = bridgeend; touchjp(Z) = Zdown; + double D = distance(headjp, touchjp); + zdiff = Zdown - nearjp_u(Z); + + if(zdiff > 0) { + Zdown -= zdiff; + bridgestart(Z) -= zdiff; + touchjp(Z) = Zdown; + + double t = bridge_mesh_intersect(headjp, {0,0,-1}, r); + + // We can't insert a pillar under the source head to connect + // with the nearby pillar's starting junction + if(t < zdiff) return false; + } + + if(Zdown <= nearjp_u(Z) && Zdown >= nearjp_l(Z) && D < max_len) + bridgeend(Z) = Zdown; + else + return false; + } + + // There will be a minimum distance from the ground where the + // bridge is allowed to connect. This is an empiric value. + double minz = m_builder.ground_level + 2 * m_cfg.head_width_mm; + if(bridgeend(Z) < minz) return false; + + double t = bridge_mesh_intersect(bridgestart, + dirv(bridgestart, bridgeend), r); + + // Cannot insert the bridge. (further search might not worth the hassle) + if(t < distance(bridgestart, bridgeend)) return false; + + // A partial pillar is needed under the starting head. + if(zdiff > 0) { + m_builder.add_pillar(unsigned(head.id), bridgestart, r); + m_builder.add_junction(bridgestart, r); + } + + m_builder.add_bridge(bridgestart, bridgeend, r); + m_builder.increment_bridges(nearpillar()); + + return true; +} + +bool SupportTreeAlgorithm::search_pillar_and_connect(const Head &head) +{ + PointIndex spindex = m_pillar_index.guarded_clone(); + + long nearest_id = ID_UNSET; + + Vec3d querypoint = head.junction_point(); + + while(nearest_id < 0 && !spindex.empty()) { m_thr(); + // loop until a suitable head is not found + // if there is a pillar closer than the cluster center + // (this may happen as the clustering is not perfect) + // than we will bridge to this closer pillar + + Vec3d qp(querypoint(X), querypoint(Y), m_builder.ground_level); + auto qres = spindex.nearest(qp, 1); + if(qres.empty()) break; + + auto ne = qres.front(); + nearest_id = ne.second; + + if(nearest_id >= 0) { + auto nearpillarID = unsigned(nearest_id); + if(nearpillarID < m_builder.pillarcount()) { + if(!connect_to_nearpillar(head, nearpillarID)) { + nearest_id = ID_UNSET; // continue searching + spindex.remove(ne); // without the current pillar + } + } + } + } + + return nearest_id >= 0; +} + +void SupportTreeAlgorithm::create_ground_pillar(const Vec3d &jp, + const Vec3d &sourcedir, + double radius, + long head_id) +{ + // People were killed for this number (seriously) + static const double SQR2 = std::sqrt(2.0); + static const Vec3d DOWN = {0.0, 0.0, -1.0}; + + double gndlvl = m_builder.ground_level; + Vec3d endp = {jp(X), jp(Y), gndlvl}; + double sd = m_cfg.pillar_base_safety_distance_mm; + long pillar_id = ID_UNSET; + double min_dist = sd + m_cfg.base_radius_mm + EPSILON; + double dist = 0; + bool can_add_base = true; + bool normal_mode = true; + + if (m_cfg.object_elevation_mm < EPSILON + && (dist = std::sqrt(m_mesh.squared_distance(endp))) < min_dist) { + // Get the distance from the mesh. This can be later optimized + // to get the distance in 2D plane because we are dealing with + // the ground level only. + + normal_mode = false; + double mind = min_dist - dist; + double azimuth = std::atan2(sourcedir(Y), sourcedir(X)); + double sinpolar = std::sin(PI - m_cfg.bridge_slope); + double cospolar = std::cos(PI - m_cfg.bridge_slope); + double cosazm = std::cos(azimuth); + double sinazm = std::sin(azimuth); + + auto dir = Vec3d(cosazm * sinpolar, sinazm * sinpolar, cospolar) + .normalized(); + + using namespace libnest2d::opt; + StopCriteria scr; + scr.stop_score = min_dist; + SubplexOptimizer solver(scr); + + auto result = solver.optimize_max( + [this, dir, jp, gndlvl](double mv) { + Vec3d endpt = jp + SQR2 * mv * dir; + endpt(Z) = gndlvl; + return std::sqrt(m_mesh.squared_distance(endpt)); + }, + initvals(mind), bound(0.0, 2 * min_dist)); + + mind = std::get<0>(result.optimum); + endp = jp + SQR2 * mind * dir; + Vec3d pgnd = {endp(X), endp(Y), gndlvl}; + can_add_base = result.score > min_dist; + + double gnd_offs = m_mesh.ground_level_offset(); + auto abort_in_shame = + [gnd_offs, &normal_mode, &can_add_base, &endp, jp, gndlvl]() + { + normal_mode = true; + can_add_base = false; // Nothing left to do, hope for the best + endp = {jp(X), jp(Y), gndlvl - gnd_offs }; + }; + + // We have to check if the bridge is feasible. + if (bridge_mesh_intersect(jp, dir, radius) < (endp - jp).norm()) + abort_in_shame(); + else { + // If the new endpoint is below ground, do not make a pillar + if (endp(Z) < gndlvl) + endp = endp - SQR2 * (gndlvl - endp(Z)) * dir; // back off + else { + + auto hit = bridge_mesh_intersect(endp, DOWN, radius); + if (!std::isinf(hit.distance())) abort_in_shame(); + + Pillar &plr = m_builder.add_pillar(endp, pgnd, radius); + + if (can_add_base) + plr.add_base(m_cfg.base_height_mm, + m_cfg.base_radius_mm); + + pillar_id = plr.id; + } + + m_builder.add_bridge(jp, endp, radius); + m_builder.add_junction(endp, radius); + + // Add a degenerated pillar and the bridge. + // The degenerate pillar will have zero length and it will + // prevent from queries of head_pillar() to have non-existing + // pillar when the head should have one. + if (head_id >= 0) + m_builder.add_pillar(unsigned(head_id), jp, radius); + } + } + + if (normal_mode) { + Pillar &plr = head_id >= 0 + ? m_builder.add_pillar(unsigned(head_id), + endp, + radius) + : m_builder.add_pillar(jp, endp, radius); + + if (can_add_base) + plr.add_base(m_cfg.base_height_mm, m_cfg.base_radius_mm); + + pillar_id = plr.id; + } + + if(pillar_id >= 0) // Save the pillar endpoint in the spatial index + m_pillar_index.guarded_insert(endp, unsigned(pillar_id)); +} + +void SupportTreeAlgorithm::filter() +{ + // Get the points that are too close to each other and keep only the + // first one + auto aliases = cluster(m_points, D_SP, 2); + + PtIndices filtered_indices; + filtered_indices.reserve(aliases.size()); + m_iheads.reserve(aliases.size()); + m_iheadless.reserve(aliases.size()); + for(auto& a : aliases) { + // Here we keep only the front point of the cluster. + filtered_indices.emplace_back(a.front()); + } + + // calculate the normals to the triangles for filtered points + auto nmls = sla::normals(m_points, m_mesh, m_cfg.head_front_radius_mm, + m_thr, filtered_indices); + + // Not all of the support points have to be a valid position for + // support creation. The angle may be inappropriate or there may + // not be enough space for the pinhead. Filtering is applied for + // these reasons. + + using libnest2d::opt::bound; + using libnest2d::opt::initvals; + using libnest2d::opt::GeneticOptimizer; + using libnest2d::opt::StopCriteria; + + ccr::SpinningMutex mutex; + auto addfn = [&mutex](PtIndices &container, unsigned val) { + std::lock_guard lk(mutex); + container.emplace_back(val); + }; + + auto filterfn = [this, &nmls, addfn](unsigned fidx, size_t i) { + m_thr(); + + auto n = nmls.row(Eigen::Index(i)); + + // for all normals we generate the spherical coordinates and + // saturate the polar angle to 45 degrees from the bottom then + // convert back to standard coordinates to get the new normal. + // Then we just create a quaternion from the two normals + // (Quaternion::FromTwoVectors) and apply the rotation to the + // arrow head. + + double z = n(2); + double r = 1.0; // for normalized vector + double polar = std::acos(z / r); + double azimuth = std::atan2(n(1), n(0)); + + // skip if the tilt is not sane + if(polar >= PI - m_cfg.normal_cutoff_angle) { + + // We saturate the polar angle to 3pi/4 + polar = std::max(polar, 3*PI / 4); + + // save the head (pinpoint) position + Vec3d hp = m_points.row(fidx); + + double w = m_cfg.head_width_mm + + m_cfg.head_back_radius_mm + + 2*m_cfg.head_front_radius_mm; + + double pin_r = double(m_support_pts[fidx].head_front_radius); + + // Reassemble the now corrected normal + auto nn = Vec3d(std::cos(azimuth) * std::sin(polar), + std::sin(azimuth) * std::sin(polar), + std::cos(polar)).normalized(); + + // check available distance + EigenMesh3D::hit_result t + = pinhead_mesh_intersect(hp, // touching point + nn, // normal + pin_r, + m_cfg.head_back_radius_mm, + w); + + if(t.distance() <= w) { + + // Let's try to optimize this angle, there might be a + // viable normal that doesn't collide with the model + // geometry and its very close to the default. + + StopCriteria stc; + stc.max_iterations = m_cfg.optimizer_max_iterations; + stc.relative_score_difference = m_cfg.optimizer_rel_score_diff; + stc.stop_score = w; // space greater than w is enough + GeneticOptimizer solver(stc); + solver.seed(0); // we want deterministic behavior + + auto oresult = solver.optimize_max( + [this, pin_r, w, hp](double plr, double azm) + { + auto dir = Vec3d(std::cos(azm) * std::sin(plr), + std::sin(azm) * std::sin(plr), + std::cos(plr)).normalized(); + + double score = pinhead_mesh_intersect( + hp, dir, pin_r, m_cfg.head_back_radius_mm, w); + + return score; + }, + initvals(polar, azimuth), // start with what we have + bound(3 * PI / 4, + PI), // Must not exceed the tilt limit + bound(-PI, PI) // azimuth can be a full search + ); + + if(oresult.score > w) { + polar = std::get<0>(oresult.optimum); + azimuth = std::get<1>(oresult.optimum); + nn = Vec3d(std::cos(azimuth) * std::sin(polar), + std::sin(azimuth) * std::sin(polar), + std::cos(polar)).normalized(); + t = oresult.score; + } + } + + // save the verified and corrected normal + m_support_nmls.row(fidx) = nn; + + if (t.distance() > w) { + // Check distance from ground, we might have zero elevation. + if (hp(Z) + w * nn(Z) < m_builder.ground_level) { + addfn(m_iheadless, fidx); + } else { + // mark the point for needing a head. + addfn(m_iheads, fidx); + } + } else if (polar >= 3 * PI / 4) { + // Headless supports do not tilt like the headed ones + // so the normal should point almost to the ground. + addfn(m_iheadless, fidx); + } + } + }; + + ccr::enumerate(filtered_indices.begin(), filtered_indices.end(), filterfn); + + m_thr(); +} + +void SupportTreeAlgorithm::add_pinheads() +{ + for (unsigned i : m_iheads) { + m_thr(); + m_builder.add_head( + i, + m_cfg.head_back_radius_mm, + m_support_pts[i].head_front_radius, + m_cfg.head_width_mm, + m_cfg.head_penetration_mm, + m_support_nmls.row(i), // dir + m_support_pts[i].pos.cast() // displacement + ); + } +} + +void SupportTreeAlgorithm::classify() +{ + // We should first get the heads that reach the ground directly + PtIndices ground_head_indices; + ground_head_indices.reserve(m_iheads.size()); + m_iheads_onmodel.reserve(m_iheads.size()); + + // First we decide which heads reach the ground and can be full + // pillars and which shall be connected to the model surface (or + // search a suitable path around the surface that leads to the + // ground -- TODO) + for(unsigned i : m_iheads) { + m_thr(); + + auto& head = m_builder.head(i); + Vec3d n(0, 0, -1); + double r = head.r_back_mm; + Vec3d headjp = head.junction_point(); + + // collision check + auto hit = bridge_mesh_intersect(headjp, n, r); + + if(std::isinf(hit.distance())) ground_head_indices.emplace_back(i); + else if(m_cfg.ground_facing_only) head.invalidate(); + else m_iheads_onmodel.emplace_back(std::make_pair(i, hit)); + } + + // We want to search for clusters of points that are far enough + // from each other in the XY plane to not cross their pillar bases + // These clusters of support points will join in one pillar, + // possibly in their centroid support point. + + auto pointfn = [this](unsigned i) { + return m_builder.head(i).junction_point(); + }; + + auto predicate = [this](const PointIndexEl &e1, + const PointIndexEl &e2) { + double d2d = distance(to_2d(e1.first), to_2d(e2.first)); + double d3d = distance(e1.first, e2.first); + return d2d < 2 * m_cfg.base_radius_mm + && d3d < m_cfg.max_bridge_length_mm; + }; + + m_pillar_clusters = cluster(ground_head_indices, + pointfn, + predicate, + m_cfg.max_bridges_on_pillar); +} + +void SupportTreeAlgorithm::routing_to_ground() +{ + const double pradius = m_cfg.head_back_radius_mm; + + ClusterEl cl_centroids; + cl_centroids.reserve(m_pillar_clusters.size()); + + for (auto &cl : m_pillar_clusters) { + m_thr(); + + // place all the centroid head positions into the index. We + // will query for alternative pillar positions. If a sidehead + // cannot connect to the cluster centroid, we have to search + // for another head with a full pillar. Also when there are two + // elements in the cluster, the centroid is arbitrary and the + // sidehead is allowed to connect to a nearby pillar to + // increase structural stability. + + if (cl.empty()) continue; + + // get the current cluster centroid + auto & thr = m_thr; + const auto &points = m_points; + long lcid = cluster_centroid( + cl, [&points](size_t idx) { return points.row(long(idx)); }, + [thr](const Vec3d &p1, const Vec3d &p2) { + thr(); + return distance(Vec2d(p1(X), p1(Y)), Vec2d(p2(X), p2(Y))); + }); + + assert(lcid >= 0); + unsigned hid = cl[size_t(lcid)]; // Head ID + + cl_centroids.emplace_back(hid); + + Head &h = m_builder.head(hid); + h.transform(); + + create_ground_pillar(h.junction_point(), h.dir, h.r_back_mm, h.id); + } + + // now we will go through the clusters ones again and connect the + // sidepoints with the cluster centroid (which is a ground pillar) + // or a nearby pillar if the centroid is unreachable. + size_t ci = 0; + for (auto cl : m_pillar_clusters) { + m_thr(); + + auto cidx = cl_centroids[ci++]; + + // TODO: don't consider the cluster centroid but calculate a + // central position where the pillar can be placed. this way + // the weight is distributed more effectively on the pillar. + + auto centerpillarID = m_builder.head_pillar(cidx).id; + + for (auto c : cl) { + m_thr(); + if (c == cidx) continue; + + auto &sidehead = m_builder.head(c); + sidehead.transform(); + + if (!connect_to_nearpillar(sidehead, centerpillarID) && + !search_pillar_and_connect(sidehead)) { + Vec3d pstart = sidehead.junction_point(); + // Vec3d pend = Vec3d{pstart(X), pstart(Y), gndlvl}; + // Could not find a pillar, create one + create_ground_pillar(pstart, sidehead.dir, pradius, sidehead.id); + } + } + } +} + +void SupportTreeAlgorithm::routing_to_model() +{ + // We need to check if there is an easy way out to the bed surface. + // If it can be routed there with a bridge shorter than + // min_bridge_distance. + + // First we want to index the available pillars. The best is to connect + // these points to the available pillars + + auto routedown = [this](Head& head, const Vec3d& dir, double dist) + { + head.transform(); + Vec3d hjp = head.junction_point(); + Vec3d endp = hjp + dist * dir; + m_builder.add_bridge(hjp, endp, head.r_back_mm); + m_builder.add_junction(endp, head.r_back_mm); + + this->create_ground_pillar(endp, dir, head.r_back_mm); + }; + + std::vector modelpillars; + ccr::SpinningMutex mutex; + + auto onmodelfn = + [this, routedown, &modelpillars, &mutex] + (const std::pair &el, size_t) + { + m_thr(); + unsigned idx = el.first; + EigenMesh3D::hit_result hit = el.second; + + auto& head = m_builder.head(idx); + Vec3d hjp = head.junction_point(); + + // ///////////////////////////////////////////////////////////////// + // Search nearby pillar + // ///////////////////////////////////////////////////////////////// + + if(search_pillar_and_connect(head)) { head.transform(); return; } + + // ///////////////////////////////////////////////////////////////// + // Try straight path + // ///////////////////////////////////////////////////////////////// + + // Cannot connect to nearby pillar. We will try to search for + // a route to the ground. + + double t = bridge_mesh_intersect(hjp, head.dir, head.r_back_mm); + double d = 0, tdown = 0; + Vec3d dirdown(0.0, 0.0, -1.0); + + t = std::min(t, m_cfg.max_bridge_length_mm); + + while(d < t && !std::isinf(tdown = bridge_mesh_intersect( + hjp + d*head.dir, + dirdown, head.r_back_mm))) { + d += head.r_back_mm; + } + + if(std::isinf(tdown)) { // we heave found a route to the ground + routedown(head, head.dir, d); return; + } + + // ///////////////////////////////////////////////////////////////// + // Optimize bridge direction + // ///////////////////////////////////////////////////////////////// + + // Straight path failed so we will try to search for a suitable + // direction out of the cavity. + + // Get the spherical representation of the normal. its easier to + // work with. + double z = head.dir(Z); + double r = 1.0; // for normalized vector + double polar = std::acos(z / r); + double azimuth = std::atan2(head.dir(Y), head.dir(X)); + + using libnest2d::opt::bound; + using libnest2d::opt::initvals; + using libnest2d::opt::GeneticOptimizer; + using libnest2d::opt::StopCriteria; + + StopCriteria stc; + stc.max_iterations = m_cfg.optimizer_max_iterations; + stc.relative_score_difference = m_cfg.optimizer_rel_score_diff; + stc.stop_score = 1e6; + GeneticOptimizer solver(stc); + solver.seed(0); // we want deterministic behavior + + double r_back = head.r_back_mm; + + auto oresult = solver.optimize_max( + [this, hjp, r_back](double plr, double azm) + { + Vec3d n = Vec3d(std::cos(azm) * std::sin(plr), + std::sin(azm) * std::sin(plr), + std::cos(plr)).normalized(); + return bridge_mesh_intersect(hjp, n, r_back); + }, + initvals(polar, azimuth), // let's start with what we have + bound(3*PI/4, PI), // Must not exceed the slope limit + bound(-PI, PI) // azimuth can be a full range search + ); + + d = 0; t = oresult.score; + + polar = std::get<0>(oresult.optimum); + azimuth = std::get<1>(oresult.optimum); + Vec3d bridgedir = Vec3d(std::cos(azimuth) * std::sin(polar), + std::sin(azimuth) * std::sin(polar), + std::cos(polar)).normalized(); + + t = std::min(t, m_cfg.max_bridge_length_mm); + + while(d < t && !std::isinf(tdown = bridge_mesh_intersect( + hjp + d*bridgedir, + dirdown, + head.r_back_mm))) { + d += head.r_back_mm; + } + + if(std::isinf(tdown)) { // we heave found a route to the ground + routedown(head, bridgedir, d); return; + } + + // ///////////////////////////////////////////////////////////////// + // Route to model body + // ///////////////////////////////////////////////////////////////// + + double zangle = std::asin(hit.direction()(Z)); + zangle = std::max(zangle, PI/4); + double h = std::sin(zangle) * head.fullwidth(); + + // The width of the tail head that we would like to have... + h = std::min(hit.distance() - head.r_back_mm, h); + + if(h > 0) { + Vec3d endp{hjp(X), hjp(Y), hjp(Z) - hit.distance() + h}; + auto center_hit = m_mesh.query_ray_hit(hjp, dirdown); + + double hitdiff = center_hit.distance() - hit.distance(); + Vec3d hitp = std::abs(hitdiff) < 2*head.r_back_mm? + center_hit.position() : hit.position(); + + head.transform(); + + Pillar& pill = m_builder.add_pillar(unsigned(head.id), + endp, + head.r_back_mm); + + Vec3d taildir = endp - hitp; + double dist = distance(endp, hitp) + m_cfg.head_penetration_mm; + double w = dist - 2 * head.r_pin_mm - head.r_back_mm; + + Head tailhead(head.r_back_mm, + head.r_pin_mm, + w, + m_cfg.head_penetration_mm, + taildir, + hitp); + + tailhead.transform(); + pill.base = tailhead.mesh; + + // Experimental: add the pillar to the index for cascading + std::lock_guard lk(mutex); + modelpillars.emplace_back(unsigned(pill.id)); + return; + } + + // We have failed to route this head. + BOOST_LOG_TRIVIAL(warning) + << "Failed to route model facing support point." + << " ID: " << idx; + head.invalidate(); + }; + + ccr::enumerate(m_iheads_onmodel.begin(), m_iheads_onmodel.end(), onmodelfn); + + for(auto pillid : modelpillars) { + auto& pillar = m_builder.pillar(pillid); + m_pillar_index.insert(pillar.endpoint(), pillid); + } +} + +void SupportTreeAlgorithm::interconnect_pillars() +{ + // Now comes the algorithm that connects pillars with each other. + // Ideally every pillar should be connected with at least one of its + // neighbors if that neighbor is within max_pillar_link_distance + + // Pillars with height exceeding H1 will require at least one neighbor + // to connect with. Height exceeding H2 require two neighbors. + double H1 = m_cfg.max_solo_pillar_height_mm; + double H2 = m_cfg.max_dual_pillar_height_mm; + double d = m_cfg.max_pillar_link_distance_mm; + + //A connection between two pillars only counts if the height ratio is + // bigger than 50% + double min_height_ratio = 0.5; + + std::set pairs; + + // A function to connect one pillar with its neighbors. THe number of + // neighbors is given in the configuration. This function if called + // for every pillar in the pillar index. A pair of pillar will not + // be connected multiple times this is ensured by the 'pairs' set which + // remembers the processed pillar pairs + auto cascadefn = + [this, d, &pairs, min_height_ratio, H1] (const PointIndexEl& el) + { + Vec3d qp = el.first; // endpoint of the pillar + + const Pillar& pillar = m_builder.pillar(el.second); // actual pillar + + // Get the max number of neighbors a pillar should connect to + unsigned neighbors = m_cfg.pillar_cascade_neighbors; + + // connections are already enough for the pillar + if(pillar.links >= neighbors) return; + + // Query all remaining points within reach + auto qres = m_pillar_index.query([qp, d](const PointIndexEl& e){ + return distance(e.first, qp) < d; + }); + + // sort the result by distance (have to check if this is needed) + std::sort(qres.begin(), qres.end(), + [qp](const PointIndexEl& e1, const PointIndexEl& e2){ + return distance(e1.first, qp) < distance(e2.first, qp); + }); + + for(auto& re : qres) { // process the queried neighbors + + if(re.second == el.second) continue; // Skip self + + auto a = el.second, b = re.second; + + // Get unique hash for the given pair (order doesn't matter) + auto hashval = pairhash(a, b); + + // Search for the pair amongst the remembered pairs + if(pairs.find(hashval) != pairs.end()) continue; + + const Pillar& neighborpillar = m_builder.pillar(re.second); + + // this neighbor is occupied, skip + if(neighborpillar.links >= neighbors) continue; + + if(interconnect(pillar, neighborpillar)) { + pairs.insert(hashval); + + // If the interconnection length between the two pillars is + // less than 50% of the longer pillar's height, don't count + if(pillar.height < H1 || + neighborpillar.height / pillar.height > min_height_ratio) + m_builder.increment_links(pillar); + + if(neighborpillar.height < H1 || + pillar.height / neighborpillar.height > min_height_ratio) + m_builder.increment_links(neighborpillar); + + } + + // connections are enough for one pillar + if(pillar.links >= neighbors) break; + } + }; + + // Run the cascade for the pillars in the index + m_pillar_index.foreach(cascadefn); + + // We would be done here if we could allow some pillars to not be + // connected with any neighbors. But this might leave the support tree + // unprintable. + // + // The current solution is to insert additional pillars next to these + // lonely pillars. One or even two additional pillar might get inserted + // depending on the length of the lonely pillar. + + size_t pillarcount = m_builder.pillarcount(); + + // Again, go through all pillars, this time in the whole support tree + // not just the index. + for(size_t pid = 0; pid < pillarcount; pid++) { + auto pillar = [this, pid]() { return m_builder.pillar(pid); }; + + // Decide how many additional pillars will be needed: + + unsigned needpillars = 0; + if (pillar().bridges > m_cfg.max_bridges_on_pillar) + needpillars = 3; + else if (pillar().links < 2 && pillar().height > H2) { + // Not enough neighbors to support this pillar + needpillars = 2 - pillar().links; + } else if (pillar().links < 1 && pillar().height > H1) { + // No neighbors could be found and the pillar is too long. + needpillars = 1; + } + + // Search for new pillar locations: + + bool found = false; + double alpha = 0; // goes to 2Pi + double r = 2 * m_cfg.base_radius_mm; + Vec3d pillarsp = pillar().startpoint(); + + // temp value for starting point detection + Vec3d sp(pillarsp(X), pillarsp(Y), pillarsp(Z) - r); + + // A vector of bool for placement feasbility + std::vector canplace(needpillars, false); + std::vector spts(needpillars); // vector of starting points + + double gnd = m_builder.ground_level; + double min_dist = m_cfg.pillar_base_safety_distance_mm + + m_cfg.base_radius_mm + EPSILON; + + while(!found && alpha < 2*PI) { + for (unsigned n = 0; + n < needpillars && (!n || canplace[n - 1]); + n++) + { + double a = alpha + n * PI / 3; + Vec3d s = sp; + s(X) += std::cos(a) * r; + s(Y) += std::sin(a) * r; + spts[n] = s; + + // Check the path vertically down + auto hr = bridge_mesh_intersect(s, {0, 0, -1}, pillar().r); + Vec3d gndsp{s(X), s(Y), gnd}; + + // If the path is clear, check for pillar base collisions + canplace[n] = std::isinf(hr.distance()) && + std::sqrt(m_mesh.squared_distance(gndsp)) > + min_dist; + } + + found = std::all_of(canplace.begin(), canplace.end(), + [](bool v) { return v; }); + + // 20 angles will be tried... + alpha += 0.1 * PI; + } + + std::vector newpills; + newpills.reserve(needpillars); + + if (found) + for (unsigned n = 0; n < needpillars; n++) { + Vec3d s = spts[n]; + Pillar p(s, Vec3d(s(X), s(Y), gnd), pillar().r); + p.add_base(m_cfg.base_height_mm, m_cfg.base_radius_mm); + + if (interconnect(pillar(), p)) { + Pillar &pp = m_builder.add_pillar(p); + m_pillar_index.insert(pp.endpoint(), unsigned(pp.id)); + + m_builder.add_junction(s, pillar().r); + double t = bridge_mesh_intersect(pillarsp, + dirv(pillarsp, s), + pillar().r); + if (distance(pillarsp, s) < t) + m_builder.add_bridge(pillarsp, s, pillar().r); + + if (pillar().endpoint()(Z) > m_builder.ground_level) + m_builder.add_junction(pillar().endpoint(), + pillar().r); + + newpills.emplace_back(pp.id); + m_builder.increment_links(pillar()); + } + } + + if(!newpills.empty()) { + for(auto it = newpills.begin(), nx = std::next(it); + nx != newpills.end(); ++it, ++nx) { + const Pillar& itpll = m_builder.pillar(*it); + const Pillar& nxpll = m_builder.pillar(*nx); + if(interconnect(itpll, nxpll)) { + m_builder.increment_links(itpll); + m_builder.increment_links(nxpll); + } + } + + m_pillar_index.foreach(cascadefn); + } + } +} + +void SupportTreeAlgorithm::routing_headless() +{ + // For now we will just generate smaller headless sticks with a sharp + // ending point that connects to the mesh surface. + + // We will sink the pins into the model surface for a distance of 1/3 of + // the pin radius + for(unsigned i : m_iheadless) { + m_thr(); + + const auto R = double(m_support_pts[i].head_front_radius); + const double HWIDTH_MM = R/3; + + // Exact support position + Vec3d sph = m_support_pts[i].pos.cast(); + Vec3d n = m_support_nmls.row(i); // mesh outward normal + Vec3d sp = sph - n * HWIDTH_MM; // stick head start point + + Vec3d dir = {0, 0, -1}; + Vec3d sj = sp + R * n; // stick start point + + // This is only for checking + double idist = bridge_mesh_intersect(sph, dir, R, true); + double dist = ray_mesh_intersect(sj, dir); + if (std::isinf(dist)) + dist = sph(Z) - m_mesh.ground_level() + + m_mesh.ground_level_offset(); + + if(std::isnan(idist) || idist < 2*R || + std::isnan(dist) || dist < 2*R) + { + BOOST_LOG_TRIVIAL(warning) << "Can not find route for headless" + << " support stick at: " + << sj.transpose(); + continue; + } + + Vec3d ej = sj + (dist + HWIDTH_MM)* dir; + m_builder.add_compact_bridge(sp, ej, n, R, !std::isinf(dist)); + } +} + +} +} diff --git a/src/libslic3r/SLA/SLASupportTreeAlgorithm.hpp b/src/libslic3r/SLA/SLASupportTreeAlgorithm.hpp new file mode 100644 index 000000000..716412a1c --- /dev/null +++ b/src/libslic3r/SLA/SLASupportTreeAlgorithm.hpp @@ -0,0 +1,292 @@ +#ifndef SLASUPPORTTREEALGORITHM_H +#define SLASUPPORTTREEALGORITHM_H + +#include + +#include "SLASupportTreeBuilder.hpp" + +namespace Slic3r { +namespace sla { + +// The minimum distance for two support points to remain valid. +const double /*constexpr*/ D_SP = 0.1; + +enum { // For indexing Eigen vectors as v(X), v(Y), v(Z) instead of numbers + X, Y, Z +}; + +inline Vec2d to_vec2(const Vec3d& v3) { + return {v3(X), v3(Y)}; +} + +// This function returns the position of the centroid in the input 'clust' +// vector of point indices. +template +long cluster_centroid(const ClusterEl& clust, + const std::function &pointfn, + DistFn df) +{ + switch(clust.size()) { + case 0: /* empty cluster */ return ID_UNSET; + case 1: /* only one element */ return 0; + case 2: /* if two elements, there is no center */ return 0; + default: ; + } + + // The function works by calculating for each point the average distance + // from all the other points in the cluster. We create a selector bitmask of + // the same size as the cluster. The bitmask will have two true bits and + // false bits for the rest of items and we will loop through all the + // permutations of the bitmask (combinations of two points). Get the + // distance for the two points and add the distance to the averages. + // The point with the smallest average than wins. + + // The complexity should be O(n^2) but we will mostly apply this function + // for small clusters only (cca 3 elements) + + std::vector sel(clust.size(), false); // create full zero bitmask + std::fill(sel.end() - 2, sel.end(), true); // insert the two ones + std::vector avgs(clust.size(), 0.0); // store the average distances + + do { + std::array idx; + for(size_t i = 0, j = 0; i < clust.size(); i++) if(sel[i]) idx[j++] = i; + + double d = df(pointfn(clust[idx[0]]), + pointfn(clust[idx[1]])); + + // add the distance to the sums for both associated points + for(auto i : idx) avgs[i] += d; + + // now continue with the next permutation of the bitmask with two 1s + } while(std::next_permutation(sel.begin(), sel.end())); + + // Divide by point size in the cluster to get the average (may be redundant) + for(auto& a : avgs) a /= clust.size(); + + // get the lowest average distance and return the index + auto minit = std::min_element(avgs.begin(), avgs.end()); + return long(minit - avgs.begin()); +} + +inline Vec3d dirv(const Vec3d& startp, const Vec3d& endp) { + return (endp - startp).normalized(); +} + +class PillarIndex { + PointIndex m_index; + using Mutex = ccr::BlockingMutex; + mutable Mutex m_mutex; + +public: + + template inline void guarded_insert(Args&&...args) + { + std::lock_guard lck(m_mutex); + m_index.insert(std::forward(args)...); + } + + template + inline std::vector guarded_query(Args&&...args) const + { + std::lock_guard lck(m_mutex); + return m_index.query(std::forward(args)...); + } + + template inline void insert(Args&&...args) + { + m_index.insert(std::forward(args)...); + } + + template + inline std::vector query(Args&&...args) const + { + return m_index.query(std::forward(args)...); + } + + template inline void foreach(Fn fn) { m_index.foreach(fn); } + template inline void guarded_foreach(Fn fn) + { + std::lock_guard lck(m_mutex); + m_index.foreach(fn); + } + + PointIndex guarded_clone() + { + std::lock_guard lck(m_mutex); + return m_index; + } +}; + +// Helper function for pillar interconnection where pairs of already connected +// pillars should be checked for not to be processed again. This can be done +// in constant time with a set of hash values uniquely representing a pair of +// integers. The order of numbers within the pair should not matter, it has +// the same unique hash. The hash value has to have twice as many bits as the +// arguments need. If the same integral type is used for args and return val, +// make sure the arguments use only the half of the type's bit depth. +template> +IntegerOnly pairhash(I a, I b) +{ + using std::ceil; using std::log2; using std::max; using std::min; + static const auto constexpr Ibits = int(sizeof(I) * CHAR_BIT); + static const auto constexpr DoubleIbits = int(sizeof(DoubleI) * CHAR_BIT); + static const auto constexpr shift = DoubleIbits / 2 < Ibits ? Ibits / 2 : Ibits; + + I g = min(a, b), l = max(a, b); + + // Assume the hash will fit into the output variable + assert((g ? (ceil(log2(g))) : 0) < shift); + assert((l ? (ceil(log2(l))) : 0) < shift); + + return (DoubleI(g) << shift) + l; +} + +class SupportTreeAlgorithm { + const SupportConfig& m_cfg; + const EigenMesh3D& m_mesh; + const std::vector& m_support_pts; + + using PtIndices = std::vector; + + PtIndices m_iheads; // support points with pinhead + PtIndices m_iheadless; // headless support points + + // supp. pts. connecting to model: point index and the ray hit data + std::vector> m_iheads_onmodel; + + // normals for support points from model faces. + PointSet m_support_nmls; + + // Clusters of points which can reach the ground directly and can be + // bridged to one central pillar + std::vector m_pillar_clusters; + + // This algorithm uses the SupportTreeBuilder class to fill gradually + // the support elements (heads, pillars, bridges, ...) + SupportTreeBuilder& m_builder; + + // support points in Eigen/IGL format + PointSet m_points; + + // throw if canceled: It will be called many times so a shorthand will + // come in handy. + ThrowOnCancel m_thr; + + // A spatial index to easily find strong pillars to connect to. + PillarIndex m_pillar_index; + + inline double ray_mesh_intersect(const Vec3d& s, + const Vec3d& dir) + { + return m_mesh.query_ray_hit(s, dir).distance(); + } + + // This function will test if a future pinhead would not collide with the + // model geometry. It does not take a 'Head' object because those are + // created after this test. Parameters: s: The touching point on the model + // surface. dir: This is the direction of the head from the pin to the back + // r_pin, r_back: the radiuses of the pin and the back sphere width: This + // is the full width from the pin center to the back center m: The object + // mesh. + // The return value is the hit result from the ray casting. If the starting + // point was inside the model, an "invalid" hit_result will be returned + // with a zero distance value instead of a NAN. This way the result can + // be used safely for comparison with other distances. + EigenMesh3D::hit_result pinhead_mesh_intersect( + const Vec3d& s, + const Vec3d& dir, + double r_pin, + double r_back, + double width); + + // Checking bridge (pillar and stick as well) intersection with the model. + // If the function is used for headless sticks, the ins_check parameter + // have to be true as the beginning of the stick might be inside the model + // geometry. + // The return value is the hit result from the ray casting. If the starting + // point was inside the model, an "invalid" hit_result will be returned + // with a zero distance value instead of a NAN. This way the result can + // be used safely for comparison with other distances. + EigenMesh3D::hit_result bridge_mesh_intersect( + const Vec3d& s, + const Vec3d& dir, + double r, + bool ins_check = false); + + // Helper function for interconnecting two pillars with zig-zag bridges. + bool interconnect(const Pillar& pillar, const Pillar& nextpillar); + + // For connecting a head to a nearby pillar. + bool connect_to_nearpillar(const Head& head, long nearpillar_id); + + bool search_pillar_and_connect(const Head& head); + + // This is a proxy function for pillar creation which will mind the gap + // between the pad and the model bottom in zero elevation mode. + void create_ground_pillar(const Vec3d &jp, + const Vec3d &sourcedir, + double radius, + long head_id = ID_UNSET); + + SupportTreeAlgorithm(SupportTreeBuilder & builder, const SupportableMesh &sm); + +public: + SupportTreeAlgorithm(const SupportTreeAlgorithm &) = delete; + SupportTreeAlgorithm(SupportTreeAlgorithm &&) = delete; + SupportTreeAlgorithm& operator=(const SupportTreeAlgorithm &) = delete; + SupportTreeAlgorithm& operator=(SupportTreeAlgorithm &&) = delete; + + // Now let's define the individual steps of the support generation algorithm + + // Filtering step: here we will discard inappropriate support points + // and decide the future of the appropriate ones. We will check if a + // pinhead is applicable and adjust its angle at each support point. We + // will also merge the support points that are just too close and can + // be considered as one. + void filter(); + + // Pinhead creation: based on the filtering results, the Head objects + // will be constructed (together with their triangle meshes). + void add_pinheads(); + + // Further classification of the support points with pinheads. If the + // ground is directly reachable through a vertical line parallel to the + // Z axis we consider a support point as pillar candidate. If touches + // the model geometry, it will be marked as non-ground facing and + // further steps will process it. Also, the pillars will be grouped + // into clusters that can be interconnected with bridges. Elements of + // these groups may or may not be interconnected. Here we only run the + // clustering algorithm. + void classify(); + + // Step: Routing the ground connected pinheads, and interconnecting + // them with additional (angled) bridges. Not all of these pinheads + // will be a full pillar (ground connected). Some will connect to a + // nearby pillar using a bridge. The max number of such side-heads for + // a central pillar is limited to avoid bad weight distribution. + void routing_to_ground(); + + // Step: routing the pinheads that would connect to the model surface + // along the Z axis downwards. For now these will actually be connected with + // the model surface with a flipped pinhead. In the future here we could use + // some smart algorithms to search for a safe path to the ground or to a + // nearby pillar that can hold the supported weight. + void routing_to_model(); + + void interconnect_pillars(); + + // Step: process the support points where there is not enough space for a + // full pinhead. In this case we will use a rounded sphere as a touching + // point and use a thinner bridge (let's call it a stick). + void routing_headless (); + + inline void merge_result() { m_builder.merged_mesh(); } + + static bool execute(SupportTreeBuilder & builder, const SupportableMesh &sm); +}; + +} +} + +#endif // SLASUPPORTTREEALGORITHM_H diff --git a/src/libslic3r/SLA/SLASupportTreeBuilder.cpp b/src/libslic3r/SLA/SLASupportTreeBuilder.cpp new file mode 100644 index 000000000..445340010 --- /dev/null +++ b/src/libslic3r/SLA/SLASupportTreeBuilder.cpp @@ -0,0 +1,462 @@ +#include "SLASupportTreeBuilder.hpp" +#include "SLASupportTreeAlgorithm.hpp" + +namespace Slic3r { +namespace sla { + +Contour3D sphere(double rho, Portion portion, double fa) { + + Contour3D ret; + + // prohibit close to zero radius + if(rho <= 1e-6 && rho >= -1e-6) return ret; + + auto& vertices = ret.points; + auto& facets = ret.indices; + + // Algorithm: + // Add points one-by-one to the sphere grid and form facets using relative + // coordinates. Sphere is composed effectively of a mesh of stacked circles. + + // adjust via rounding to get an even multiple for any provided angle. + double angle = (2*PI / floor(2*PI / fa)); + + // Ring to be scaled to generate the steps of the sphere + std::vector ring; + + for (double i = 0; i < 2*PI; i+=angle) ring.emplace_back(i); + + const auto sbegin = size_t(2*std::get<0>(portion)/angle); + const auto send = size_t(2*std::get<1>(portion)/angle); + + const size_t steps = ring.size(); + const double increment = 1.0 / double(steps); + + // special case: first ring connects to 0,0,0 + // insert and form facets. + if(sbegin == 0) + vertices.emplace_back(Vec3d(0.0, 0.0, -rho + increment*sbegin*2.0*rho)); + + auto id = coord_t(vertices.size()); + for (size_t i = 0; i < ring.size(); i++) { + // Fixed scaling + const double z = -rho + increment*rho*2.0 * (sbegin + 1.0); + // radius of the circle for this step. + const double r = std::sqrt(std::abs(rho*rho - z*z)); + Vec2d b = Eigen::Rotation2Dd(ring[i]) * Eigen::Vector2d(0, r); + vertices.emplace_back(Vec3d(b(0), b(1), z)); + + if (sbegin == 0) + facets.emplace_back((i == 0) ? + Vec3crd(coord_t(ring.size()), 0, 1) : + Vec3crd(id - 1, 0, id)); + ++id; + } + + // General case: insert and form facets for each step, + // joining it to the ring below it. + for (size_t s = sbegin + 2; s < send - 1; s++) { + const double z = -rho + increment*double(s*2.0*rho); + const double r = std::sqrt(std::abs(rho*rho - z*z)); + + for (size_t i = 0; i < ring.size(); i++) { + Vec2d b = Eigen::Rotation2Dd(ring[i]) * Eigen::Vector2d(0, r); + vertices.emplace_back(Vec3d(b(0), b(1), z)); + auto id_ringsize = coord_t(id - int(ring.size())); + if (i == 0) { + // wrap around + facets.emplace_back(Vec3crd(id - 1, id, + id + coord_t(ring.size() - 1))); + facets.emplace_back(Vec3crd(id - 1, id_ringsize, id)); + } else { + facets.emplace_back(Vec3crd(id_ringsize - 1, id_ringsize, id)); + facets.emplace_back(Vec3crd(id - 1, id_ringsize - 1, id)); + } + id++; + } + } + + // special case: last ring connects to 0,0,rho*2.0 + // only form facets. + if(send >= size_t(2*PI / angle)) { + vertices.emplace_back(Vec3d(0.0, 0.0, -rho + increment*send*2.0*rho)); + for (size_t i = 0; i < ring.size(); i++) { + auto id_ringsize = coord_t(id - int(ring.size())); + if (i == 0) { + // third vertex is on the other side of the ring. + facets.emplace_back(Vec3crd(id - 1, id_ringsize, id)); + } else { + auto ci = coord_t(id_ringsize + coord_t(i)); + facets.emplace_back(Vec3crd(ci - 1, ci, id)); + } + } + } + id++; + + return ret; +} + +Contour3D cylinder(double r, double h, size_t ssteps, const Vec3d &sp) +{ + Contour3D ret; + + auto steps = int(ssteps); + auto& points = ret.points; + auto& indices = ret.indices; + points.reserve(2*ssteps); + double a = 2*PI/steps; + + Vec3d jp = sp; + Vec3d endp = {sp(X), sp(Y), sp(Z) + h}; + + // Upper circle points + for(int i = 0; i < steps; ++i) { + double phi = i*a; + double ex = endp(X) + r*std::cos(phi); + double ey = endp(Y) + r*std::sin(phi); + points.emplace_back(ex, ey, endp(Z)); + } + + // Lower circle points + for(int i = 0; i < steps; ++i) { + double phi = i*a; + double x = jp(X) + r*std::cos(phi); + double y = jp(Y) + r*std::sin(phi); + points.emplace_back(x, y, jp(Z)); + } + + // Now create long triangles connecting upper and lower circles + indices.reserve(2*ssteps); + auto offs = steps; + for(int i = 0; i < steps - 1; ++i) { + indices.emplace_back(i, i + offs, offs + i + 1); + indices.emplace_back(i, offs + i + 1, i + 1); + } + + // Last triangle connecting the first and last vertices + auto last = steps - 1; + indices.emplace_back(0, last, offs); + indices.emplace_back(last, offs + last, offs); + + // According to the slicing algorithms, we need to aid them with generating + // a watertight body. So we create a triangle fan for the upper and lower + // ending of the cylinder to close the geometry. + points.emplace_back(jp); int ci = int(points.size() - 1); + for(int i = 0; i < steps - 1; ++i) + indices.emplace_back(i + offs + 1, i + offs, ci); + + indices.emplace_back(offs, steps + offs - 1, ci); + + points.emplace_back(endp); ci = int(points.size() - 1); + for(int i = 0; i < steps - 1; ++i) + indices.emplace_back(ci, i, i + 1); + + indices.emplace_back(steps - 1, 0, ci); + + return ret; +} + +Head::Head(double r_big_mm, + double r_small_mm, + double length_mm, + double penetration, + const Vec3d &direction, + const Vec3d &offset, + const size_t circlesteps) + : steps(circlesteps) + , dir(direction) + , tr(offset) + , r_back_mm(r_big_mm) + , r_pin_mm(r_small_mm) + , width_mm(length_mm) + , penetration_mm(penetration) +{ + + // We create two spheres which will be connected with a robe that fits + // both circles perfectly. + + // Set up the model detail level + const double detail = 2*PI/steps; + + // We don't generate whole circles. Instead, we generate only the + // portions which are visible (not covered by the robe) To know the + // exact portion of the bottom and top circles we need to use some + // rules of tangent circles from which we can derive (using simple + // triangles the following relations: + + // The height of the whole mesh + const double h = r_big_mm + r_small_mm + width_mm; + double phi = PI/2 - std::acos( (r_big_mm - r_small_mm) / h ); + + // To generate a whole circle we would pass a portion of (0, Pi) + // To generate only a half horizontal circle we can pass (0, Pi/2) + // The calculated phi is an offset to the half circles needed to smooth + // the transition from the circle to the robe geometry + + auto&& s1 = sphere(r_big_mm, make_portion(0, PI/2 + phi), detail); + auto&& s2 = sphere(r_small_mm, make_portion(PI/2 + phi, PI), detail); + + for(auto& p : s2.points) p.z() += h; + + mesh.merge(s1); + mesh.merge(s2); + + for(size_t idx1 = s1.points.size() - steps, idx2 = s1.points.size(); + idx1 < s1.points.size() - 1; + idx1++, idx2++) + { + coord_t i1s1 = coord_t(idx1), i1s2 = coord_t(idx2); + coord_t i2s1 = i1s1 + 1, i2s2 = i1s2 + 1; + + mesh.indices.emplace_back(i1s1, i2s1, i2s2); + mesh.indices.emplace_back(i1s1, i2s2, i1s2); + } + + auto i1s1 = coord_t(s1.points.size()) - coord_t(steps); + auto i2s1 = coord_t(s1.points.size()) - 1; + auto i1s2 = coord_t(s1.points.size()); + auto i2s2 = coord_t(s1.points.size()) + coord_t(steps) - 1; + + mesh.indices.emplace_back(i2s2, i2s1, i1s1); + mesh.indices.emplace_back(i1s2, i2s2, i1s1); + + // To simplify further processing, we translate the mesh so that the + // last vertex of the pointing sphere (the pinpoint) will be at (0,0,0) + for(auto& p : mesh.points) p.z() -= (h + r_small_mm - penetration_mm); +} + +Pillar::Pillar(const Vec3d &jp, const Vec3d &endp, double radius, size_t st): + r(radius), steps(st), endpt(endp), starts_from_head(false) +{ + assert(steps > 0); + + height = jp(Z) - endp(Z); + if(height > EPSILON) { // Endpoint is below the starting point + + // We just create a bridge geometry with the pillar parameters and + // move the data. + Contour3D body = cylinder(radius, height, st, endp); + mesh.points.swap(body.points); + mesh.indices.swap(body.indices); + } +} + +Pillar &Pillar::add_base(double baseheight, double radius) +{ + if(baseheight <= 0) return *this; + if(baseheight > height) baseheight = height; + + assert(steps >= 0); + auto last = int(steps - 1); + + if(radius < r ) radius = r; + + double a = 2*PI/steps; + double z = endpt(Z) + baseheight; + + for(size_t i = 0; i < steps; ++i) { + double phi = i*a; + double x = endpt(X) + r*std::cos(phi); + double y = endpt(Y) + r*std::sin(phi); + base.points.emplace_back(x, y, z); + } + + for(size_t i = 0; i < steps; ++i) { + double phi = i*a; + double x = endpt(X) + radius*std::cos(phi); + double y = endpt(Y) + radius*std::sin(phi); + base.points.emplace_back(x, y, z - baseheight); + } + + auto ep = endpt; ep(Z) += baseheight; + base.points.emplace_back(endpt); + base.points.emplace_back(ep); + + auto& indices = base.indices; + auto hcenter = int(base.points.size() - 1); + auto lcenter = int(base.points.size() - 2); + auto offs = int(steps); + for(int i = 0; i < last; ++i) { + indices.emplace_back(i, i + offs, offs + i + 1); + indices.emplace_back(i, offs + i + 1, i + 1); + indices.emplace_back(i, i + 1, hcenter); + indices.emplace_back(lcenter, offs + i + 1, offs + i); + } + + indices.emplace_back(0, last, offs); + indices.emplace_back(last, offs + last, offs); + indices.emplace_back(hcenter, last, 0); + indices.emplace_back(offs, offs + last, lcenter); + return *this; +} + +Bridge::Bridge(const Vec3d &j1, const Vec3d &j2, double r_mm, size_t steps): + r(r_mm), startp(j1), endp(j2) +{ + using Quaternion = Eigen::Quaternion; + Vec3d dir = (j2 - j1).normalized(); + double d = distance(j2, j1); + + mesh = cylinder(r, d, steps); + + auto quater = Quaternion::FromTwoVectors(Vec3d{0,0,1}, dir); + for(auto& p : mesh.points) p = quater * p + j1; +} + +CompactBridge::CompactBridge(const Vec3d &sp, + const Vec3d &ep, + const Vec3d &n, + double r, + bool endball, + size_t steps) +{ + Vec3d startp = sp + r * n; + Vec3d dir = (ep - startp).normalized(); + Vec3d endp = ep - r * dir; + + Bridge br(startp, endp, r, steps); + mesh.merge(br.mesh); + + // now add the pins + double fa = 2*PI/steps; + auto upperball = sphere(r, Portion{PI / 2 - fa, PI}, fa); + for(auto& p : upperball.points) p += startp; + + if(endball) { + auto lowerball = sphere(r, Portion{0, PI/2 + 2*fa}, fa); + for(auto& p : lowerball.points) p += endp; + mesh.merge(lowerball); + } + + mesh.merge(upperball); +} + +Pad::Pad(const TriangleMesh &support_mesh, + const ExPolygons & model_contours, + double ground_level, + const PadConfig & pcfg, + ThrowOnCancel thr) + : cfg(pcfg) + , zlevel(ground_level + pcfg.full_height() - pcfg.required_elevation()) +{ + thr(); + + ExPolygons sup_contours; + + float zstart = float(zlevel); + float zend = zstart + float(pcfg.full_height() + EPSILON); + + pad_blueprint(support_mesh, sup_contours, grid(zstart, zend, 0.1f), thr); + create_pad(sup_contours, model_contours, tmesh, pcfg); + + tmesh.translate(0, 0, float(zlevel)); + if (!tmesh.empty()) tmesh.require_shared_vertices(); +} + +const TriangleMesh &SupportTreeBuilder::add_pad(const ExPolygons &modelbase, + const PadConfig & cfg) +{ + m_pad = Pad{merged_mesh(), modelbase, ground_level, cfg, ctl().cancelfn}; + return m_pad.tmesh; +} + +const TriangleMesh &SupportTreeBuilder::merged_mesh() const +{ + if (m_meshcache_valid) return m_meshcache; + + Contour3D merged; + + for (auto &head : m_heads) { + if (ctl().stopcondition()) break; + if (head.is_valid()) merged.merge(head.mesh); + } + + for (auto &stick : m_pillars) { + if (ctl().stopcondition()) break; + merged.merge(stick.mesh); + merged.merge(stick.base); + } + + for (auto &j : m_junctions) { + if (ctl().stopcondition()) break; + merged.merge(j.mesh); + } + + for (auto &cb : m_compact_bridges) { + if (ctl().stopcondition()) break; + merged.merge(cb.mesh); + } + + for (auto &bs : m_bridges) { + if (ctl().stopcondition()) break; + merged.merge(bs.mesh); + } + + for (auto &bs : m_crossbridges) { + if (ctl().stopcondition()) break; + merged.merge(bs.mesh); + } + + if (ctl().stopcondition()) { + // In case of failure we have to return an empty mesh + m_meshcache = TriangleMesh(); + return m_meshcache; + } + + m_meshcache = mesh(merged); + + // The mesh will be passed by const-pointer to TriangleMeshSlicer, + // which will need this. + if (!m_meshcache.empty()) m_meshcache.require_shared_vertices(); + + BoundingBoxf3 &&bb = m_meshcache.bounding_box(); + m_model_height = bb.max(Z) - bb.min(Z); + + m_meshcache_valid = true; + return m_meshcache; +} + +double SupportTreeBuilder::full_height() const +{ + if (merged_mesh().empty() && !pad().empty()) + return pad().cfg.full_height(); + + double h = mesh_height(); + if (!pad().empty()) h += pad().cfg.required_elevation(); + return h; +} + +const TriangleMesh &SupportTreeBuilder::merge_and_cleanup() +{ + // in case the mesh is not generated, it should be... + auto &ret = merged_mesh(); + + // Doing clear() does not garantee to release the memory. + m_heads = {}; + m_head_indices = {}; + m_pillars = {}; + m_junctions = {}; + m_bridges = {}; + m_compact_bridges = {}; + + return ret; +} + +const TriangleMesh &SupportTreeBuilder::retrieve_mesh(MeshType meshtype) const +{ + switch(meshtype) { + case MeshType::Support: return merged_mesh(); + case MeshType::Pad: return pad().tmesh; + } + + return m_meshcache; +} + +bool SupportTreeBuilder::build(const SupportableMesh &sm) +{ + ground_level = sm.emesh.ground_level() - sm.cfg.object_elevation_mm; + return SupportTreeAlgorithm::execute(*this, sm); +} + +} +} diff --git a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp new file mode 100644 index 000000000..88ee3ffac --- /dev/null +++ b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp @@ -0,0 +1,449 @@ +#ifndef SUPPORTTREEBUILDER_HPP +#define SUPPORTTREEBUILDER_HPP + +#include "SLAConcurrency.hpp" +#include "SLABoilerPlate.hpp" +#include "SLASupportTree.hpp" +#include "SLAPad.hpp" +#include + +namespace Slic3r { +namespace sla { + +/** + * Terminology: + * + * Support point: + * The point on the model surface that needs support. + * + * Pillar: + * A thick column that spans from a support point to the ground and has + * a thick cone shaped base where it touches the ground. + * + * Ground facing support point: + * A support point that can be directly connected with the ground with a pillar + * that does not collide or cut through the model. + * + * Non ground facing support point: + * A support point that cannot be directly connected with the ground (only with + * the model surface). + * + * Head: + * The pinhead that connects to the model surface with the sharp end end + * to a pillar or bridge stick with the dull end. + * + * Headless support point: + * A support point on the model surface for which there is not enough place for + * the head. It is either in a hole or there is some barrier that would collide + * with the head geometry. The headless support point can be ground facing and + * non ground facing as well. + * + * Bridge: + * A stick that connects two pillars or a head with a pillar. + * + * Junction: + * A small ball in the intersection of two or more sticks (pillar, bridge, ...) + * + * CompactBridge: + * A bridge that connects a headless support point with the model surface or a + * nearby pillar. + */ + +using Coordf = double; +using Portion = std::tuple; + +inline Portion make_portion(double a, double b) { + return std::make_tuple(a, b); +} + +template double distance(const Vec& p) { + return std::sqrt(p.transpose() * p); +} + +template double distance(const Vec& pp1, const Vec& pp2) { + auto p = pp2 - pp1; + return distance(p); +} + +Contour3D sphere(double rho, Portion portion = make_portion(0.0, 2.0*PI), + double fa=(2*PI/360)); + +// Down facing cylinder in Z direction with arguments: +// r: radius +// h: Height +// ssteps: how many edges will create the base circle +// sp: starting point +Contour3D cylinder(double r, double h, size_t ssteps, const Vec3d &sp = {0,0,0}); + +const constexpr long ID_UNSET = -1; + +struct Head { + Contour3D mesh; + + size_t steps = 45; + Vec3d dir = {0, 0, -1}; + Vec3d tr = {0, 0, 0}; + + double r_back_mm = 1; + double r_pin_mm = 0.5; + double width_mm = 2; + double penetration_mm = 0.5; + + // For identification purposes. This will be used as the index into the + // container holding the head structures. See SLASupportTree::Impl + long id = ID_UNSET; + + // If there is a pillar connecting to this head, then the id will be set. + long pillar_id = ID_UNSET; + + inline void invalidate() { id = ID_UNSET; } + inline bool is_valid() const { return id >= 0; } + + Head(double r_big_mm, + double r_small_mm, + double length_mm, + double penetration, + const Vec3d &direction = {0, 0, -1}, // direction (normal to the dull end) + const Vec3d &offset = {0, 0, 0}, // displacement + const size_t circlesteps = 45); + + void transform() + { + using Quaternion = Eigen::Quaternion; + + // We rotate the head to the specified direction The head's pointing + // side is facing upwards so this means that it would hold a support + // point with a normal pointing straight down. This is the reason of + // the -1 z coordinate + auto quatern = Quaternion::FromTwoVectors(Vec3d{0, 0, -1}, dir); + + for(auto& p : mesh.points) p = quatern * p + tr; + } + + inline double fullwidth() const + { + return 2 * r_pin_mm + width_mm + 2*r_back_mm - penetration_mm; + } + + inline Vec3d junction_point() const + { + return tr + ( 2 * r_pin_mm + width_mm + r_back_mm - penetration_mm)*dir; + } + + inline double request_pillar_radius(double radius) const + { + const double rmax = r_back_mm; + return radius > 0 && radius < rmax ? radius : rmax; + } +}; + +struct Junction { + Contour3D mesh; + double r = 1; + size_t steps = 45; + Vec3d pos; + + long id = ID_UNSET; + + Junction(const Vec3d& tr, double r_mm, size_t stepnum = 45): + r(r_mm), steps(stepnum), pos(tr) + { + mesh = sphere(r_mm, make_portion(0, PI), 2*PI/steps); + for(auto& p : mesh.points) p += tr; + } +}; + +struct Pillar { + Contour3D mesh; + Contour3D base; + double r = 1; + size_t steps = 0; + Vec3d endpt; + double height = 0; + + long id = ID_UNSET; + + // If the pillar connects to a head, this is the id of that head + bool starts_from_head = true; // Could start from a junction as well + long start_junction_id = ID_UNSET; + + // How many bridges are connected to this pillar + unsigned bridges = 0; + + // How many pillars are cascaded with this one + unsigned links = 0; + + Pillar(const Vec3d& jp, const Vec3d& endp, + double radius = 1, size_t st = 45); + + Pillar(const Junction &junc, const Vec3d &endp) + : Pillar(junc.pos, endp, junc.r, junc.steps) + {} + + Pillar(const Head &head, const Vec3d &endp, double radius = 1) + : Pillar(head.junction_point(), endp, + head.request_pillar_radius(radius), head.steps) + {} + + inline Vec3d startpoint() const + { + return {endpt(X), endpt(Y), endpt(Z) + height}; + } + + inline const Vec3d& endpoint() const { return endpt; } + + Pillar& add_base(double baseheight = 3, double radius = 2); +}; + +// A Bridge between two pillars (with junction endpoints) +struct Bridge { + Contour3D mesh; + double r = 0.8; + long id = ID_UNSET; + Vec3d startp = Vec3d::Zero(), endp = Vec3d::Zero(); + + Bridge(const Vec3d &j1, + const Vec3d &j2, + double r_mm = 0.8, + size_t steps = 45); +}; + +// A bridge that spans from model surface to model surface with small connecting +// edges on the endpoints. Used for headless support points. +struct CompactBridge { + Contour3D mesh; + long id = ID_UNSET; + + CompactBridge(const Vec3d& sp, + const Vec3d& ep, + const Vec3d& n, + double r, + bool endball = true, + size_t steps = 45); +}; + +// A wrapper struct around the pad +struct Pad { + TriangleMesh tmesh; + PadConfig cfg; + double zlevel = 0; + + Pad() = default; + + Pad(const TriangleMesh &support_mesh, + const ExPolygons & model_contours, + double ground_level, + const PadConfig & pcfg, + ThrowOnCancel thr); + + bool empty() const { return tmesh.facets_count() == 0; } +}; + +// This class will hold the support tree meshes with some additional +// bookkeeping as well. Various parts of the support geometry are stored +// separately and are merged when the caller queries the merged mesh. The +// merged result is cached for fast subsequent delivery of the merged mesh +// which can be quite complex. The support tree creation algorithm can use an +// instance of this class as a somewhat higher level tool for crafting the 3D +// support mesh. Parts can be added with the appropriate methods such as +// add_head or add_pillar which forwards the constructor arguments and fills +// the IDs of these substructures. The IDs are basically indices into the +// arrays of the appropriate type (heads, pillars, etc...). One can later query +// e.g. a pillar for a specific head... +// +// The support pad is considered an auxiliary geometry and is not part of the +// merged mesh. It can be retrieved using a dedicated method (pad()) +class SupportTreeBuilder: public SupportTree { + // For heads it is beneficial to use the same IDs as for the support points. + std::vector m_heads; + std::vector m_head_indices; + std::vector m_pillars; + std::vector m_junctions; + std::vector m_bridges; + std::vector m_crossbridges; + std::vector m_compact_bridges; + Pad m_pad; + + using Mutex = ccr::SpinningMutex; + + mutable TriangleMesh m_meshcache; + mutable Mutex m_mutex; + mutable bool m_meshcache_valid = false; + mutable double m_model_height = 0; // the full height of the model + + template + const Bridge& _add_bridge(std::vector &br, Args&&... args) + { + std::lock_guard lk(m_mutex); + br.emplace_back(std::forward(args)...); + br.back().id = long(br.size() - 1); + m_meshcache_valid = false; + return br.back(); + } + +public: + double ground_level = 0; + + SupportTreeBuilder() = default; + + template Head& add_head(unsigned id, Args&&... args) + { + std::lock_guard lk(m_mutex); + m_heads.emplace_back(std::forward(args)...); + m_heads.back().id = id; + + if (id >= m_head_indices.size()) m_head_indices.resize(id + 1); + m_head_indices[id] = m_heads.size() - 1; + + m_meshcache_valid = false; + return m_heads.back(); + } + + template Pillar& add_pillar(unsigned headid, Args&&... args) + { + std::lock_guard lk(m_mutex); + + assert(headid < m_head_indices.size()); + Head &head = m_heads[m_head_indices[headid]]; + + m_pillars.emplace_back(head, std::forward(args)...); + Pillar& pillar = m_pillars.back(); + pillar.id = long(m_pillars.size() - 1); + head.pillar_id = pillar.id; + pillar.start_junction_id = head.id; + pillar.starts_from_head = true; + + m_meshcache_valid = false; + return m_pillars.back(); + } + + void increment_bridges(const Pillar& pillar) + { + std::lock_guard lk(m_mutex); + assert(pillar.id >= 0 && size_t(pillar.id) < m_pillars.size()); + + if(pillar.id >= 0 && size_t(pillar.id) < m_pillars.size()) + m_pillars[size_t(pillar.id)].bridges++; + } + + void increment_links(const Pillar& pillar) + { + std::lock_guard lk(m_mutex); + assert(pillar.id >= 0 && size_t(pillar.id) < m_pillars.size()); + + if(pillar.id >= 0 && size_t(pillar.id) < m_pillars.size()) + m_pillars[size_t(pillar.id)].links++; + } + + template Pillar& add_pillar(Args&&...args) + { + std::lock_guard lk(m_mutex); + m_pillars.emplace_back(std::forward(args)...); + Pillar& pillar = m_pillars.back(); + pillar.id = long(m_pillars.size() - 1); + pillar.starts_from_head = false; + m_meshcache_valid = false; + return m_pillars.back(); + } + + const Pillar& head_pillar(unsigned headid) const + { + std::lock_guard lk(m_mutex); + assert(headid < m_head_indices.size()); + + const Head& h = m_heads[m_head_indices[headid]]; + assert(h.pillar_id >= 0 && h.pillar_id < long(m_pillars.size())); + + return m_pillars[size_t(h.pillar_id)]; + } + + template const Junction& add_junction(Args&&... args) + { + std::lock_guard lk(m_mutex); + m_junctions.emplace_back(std::forward(args)...); + m_junctions.back().id = long(m_junctions.size() - 1); + m_meshcache_valid = false; + return m_junctions.back(); + } + + template const Bridge& add_bridge(Args&&... args) + { + return _add_bridge(m_bridges, std::forward(args)...); + } + + template const Bridge& add_crossbridge(Args&&... args) + { + return _add_bridge(m_crossbridges, std::forward(args)...); + } + + template const CompactBridge& add_compact_bridge(Args&&...args) + { + std::lock_guard lk(m_mutex); + m_compact_bridges.emplace_back(std::forward(args)...); + m_compact_bridges.back().id = long(m_compact_bridges.size() - 1); + m_meshcache_valid = false; + return m_compact_bridges.back(); + } + + Head &head(unsigned id) + { + std::lock_guard lk(m_mutex); + assert(id < m_head_indices.size()); + + m_meshcache_valid = false; + return m_heads[m_head_indices[id]]; + } + + inline size_t pillarcount() const { + std::lock_guard lk(m_mutex); + return m_pillars.size(); + } + + inline const std::vector &pillars() const { return m_pillars; } + inline const std::vector &heads() const { return m_heads; } + inline const std::vector &bridges() const { return m_bridges; } + inline const std::vector &crossbridges() const { return m_crossbridges; } + + template inline IntegerOnly pillar(T id) const + { + std::lock_guard lk(m_mutex); + assert(id >= 0 && size_t(id) < m_pillars.size() && + size_t(id) < std::numeric_limits::max()); + + return m_pillars[size_t(id)]; + } + + const Pad& pad() const { return m_pad; } + + // WITHOUT THE PAD!!! + const TriangleMesh &merged_mesh() const; + + // WITH THE PAD + double full_height() const; + + // WITHOUT THE PAD!!! + inline double mesh_height() const + { + if (!m_meshcache_valid) merged_mesh(); + return m_model_height; + } + + // Intended to be called after the generation is fully complete + const TriangleMesh & merge_and_cleanup(); + + // Implement SupportTree interface: + + const TriangleMesh &add_pad(const ExPolygons &modelbase, + const PadConfig & pcfg) override; + + void remove_pad() override { m_pad = Pad(); } + + virtual const TriangleMesh &retrieve_mesh( + MeshType meshtype = MeshType::Support) const override; + + bool build(const SupportableMesh &supportable_mesh); +}; + +}} // namespace Slic3r::sla + +#endif // SUPPORTTREEBUILDER_HPP diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index d7083baeb..9462e766c 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -32,17 +32,19 @@ namespace Slic3r { -using SupportTreePtr = std::unique_ptr; - -class SLAPrintObject::SupportData +class SLAPrintObject::SupportData : public sla::SupportableMesh { public: - sla::EigenMesh3D emesh; // index-triangle representation - std::vector support_points; // all the support points (manual/auto) - SupportTreePtr support_tree_ptr; // the supports + sla::SupportTree::UPtr support_tree_ptr; // the supports std::vector support_slices; // sliced supports - - inline SupportData(const TriangleMesh &trmesh) : emesh(trmesh) {} + + inline SupportData(const TriangleMesh &t): sla::SupportableMesh{t, {}, {}} {} + + sla::SupportTree::UPtr &create_support_tree(const sla::JobController &ctl) + { + support_tree_ptr = sla::SupportTree::create(*this, ctl); + return support_tree_ptr; + } }; namespace { @@ -583,7 +585,8 @@ bool is_zero_elevation(const SLAPrintObjectConfig &c) { // Compile the argument for support creation from the static print config. sla::SupportConfig make_support_cfg(const SLAPrintObjectConfig& c) { sla::SupportConfig scfg; - + + scfg.enabled = c.supports_enable.getBool(); scfg.head_front_radius_mm = 0.5*c.support_head_front_diameter.getFloat(); scfg.head_back_radius_mm = 0.5*c.support_pillar_diameter.getFloat(); scfg.head_penetration_mm = c.support_head_penetration.getFloat(); @@ -890,10 +893,10 @@ void SLAPrint::process() // Now let's extract the result. const std::vector& points = auto_supports.output(); this->throw_if_canceled(); - po.m_supportdata->support_points = points; + po.m_supportdata->pts = points; BOOST_LOG_TRIVIAL(debug) << "Automatic support points: " - << po.m_supportdata->support_points.size(); + << po.m_supportdata->pts.size(); // Using RELOAD_SLA_SUPPORT_POINTS to tell the Plater to pass // the update status to GLGizmoSlaSupports @@ -905,7 +908,7 @@ void SLAPrint::process() else { // There are either some points on the front-end, or the user // removed them on purpose. No calculation will be done. - po.m_supportdata->support_points = po.transformed_support_points(); + po.m_supportdata->pts = po.transformed_support_points(); } // If the zero elevation mode is engaged, we have to filter out all the @@ -915,7 +918,7 @@ void SLAPrint::process() ? po.m_config.pad_wall_thickness.getFloat() : po.m_config.support_base_height.getFloat(); - remove_bottom_points(po.m_supportdata->support_points, + remove_bottom_points(po.m_supportdata->pts, po.m_supportdata->emesh.ground_level(), tolerance); } @@ -929,42 +932,28 @@ void SLAPrint::process() sla::PadConfig pcfg = make_pad_cfg(po.m_config); if (pcfg.embed_object) - po.m_supportdata->emesh.ground_level_offset( - pcfg.wall_thickness_mm); - - if(!po.m_config.supports_enable.getBool()) { - - // Generate empty support tree. It can still host a pad - po.m_supportdata->support_tree_ptr.reset( - new SLASupportTree(po.m_supportdata->emesh.ground_level())); - - return; - } - - sla::SupportConfig scfg = make_support_cfg(po.m_config); - sla::Controller ctl; - + po.m_supportdata->emesh.ground_level_offset(pcfg.wall_thickness_mm); + + po.m_supportdata->cfg = make_support_cfg(po.m_config); + // scaling for the sub operations double d = ostepd * OBJ_STEP_LEVELS[slaposSupportTree] / 100.0; double init = m_report_status.status(); + JobController ctl; - ctl.statuscb = [this, d, init](unsigned st, const std::string &logmsg) - { + ctl.statuscb = [this, d, init](unsigned st, const std::string &logmsg) { double current = init + st * d; - if(std::round(m_report_status.status()) < std::round(current)) + if (std::round(m_report_status.status()) < std::round(current)) m_report_status(*this, current, OBJ_STEP_LABELS(slaposSupportTree), - SlicingStatus::DEFAULT, - logmsg); - + SlicingStatus::DEFAULT, logmsg); }; - - ctl.stopcondition = [this](){ return canceled(); }; + ctl.stopcondition = [this]() { return canceled(); }; ctl.cancelfn = [this]() { throw_if_canceled(); }; - - po.m_supportdata->support_tree_ptr.reset( - new SLASupportTree(po.m_supportdata->support_points, - po.m_supportdata->emesh, scfg, ctl)); + + po.m_supportdata->create_support_tree(ctl); + + if (!po.m_config.supports_enable.getBool()) return; throw_if_canceled(); @@ -973,10 +962,9 @@ void SLAPrint::process() // This is to prevent "Done." being displayed during merged_mesh() m_report_status(*this, -1, L("Visualizing supports")); - po.m_supportdata->support_tree_ptr->merged_mesh(); BOOST_LOG_TRIVIAL(debug) << "Processed support point count " - << po.m_supportdata->support_points.size(); + << po.m_supportdata->pts.size(); // Check the mesh for later troubleshooting. if(po.support_mesh().empty()) @@ -1014,7 +1002,7 @@ void SLAPrint::process() } po.m_supportdata->support_tree_ptr->add_pad(bp, pcfg); - auto &pad_mesh = po.m_supportdata->support_tree_ptr->get_pad(); + auto &pad_mesh = po.m_supportdata->support_tree_ptr->retrieve_mesh(MeshType::Pad); if (!validate_pad(pad_mesh, pcfg)) throw std::runtime_error( @@ -1393,7 +1381,7 @@ void SLAPrint::process() if(canceled()) return; // Set up the printer, allocate space for all the layers - sla::SLARasterWriter &printer = init_printer(); + sla::RasterWriter &printer = init_printer(); auto lvlcnt = unsigned(m_printer_input.size()); printer.layers(lvlcnt); @@ -1456,7 +1444,7 @@ void SLAPrint::process() tbb::parallel_for(0, lvlcnt, lvlfn); // Set statistics values to the printer - sla::SLARasterWriter::PrintStatistics stats; + sla::RasterWriter::PrintStatistics stats; stats.used_material = (m_print_statistics.objects_used_material + m_print_statistics.support_used_material) / 1000; @@ -1651,7 +1639,7 @@ bool SLAPrint::invalidate_state_by_config_options(const std::vectorset_config(m_full_print_config); return *m_printer; } @@ -1865,7 +1853,7 @@ const SliceRecord SliceRecord::EMPTY(0, std::nanf(""), 0.f); const std::vector& SLAPrintObject::get_support_points() const { - return m_supportdata? m_supportdata->support_points : EMPTY_SUPPORT_POINTS; + return m_supportdata? m_supportdata->pts : EMPTY_SUPPORT_POINTS; } const std::vector &SLAPrintObject::get_support_slices() const @@ -1916,18 +1904,20 @@ TriangleMesh SLAPrintObject::get_mesh(SLAPrintObjectStep step) const const TriangleMesh& SLAPrintObject::support_mesh() const { - if(m_config.supports_enable.getBool() && m_supportdata && - m_supportdata->support_tree_ptr) { - return m_supportdata->support_tree_ptr->merged_mesh(); - } - + sla::SupportTree::UPtr &stree = m_supportdata->support_tree_ptr; + + if(m_config.supports_enable.getBool() && m_supportdata && stree) + return stree->retrieve_mesh(sla::MeshType::Support); + return EMPTY_MESH; } const TriangleMesh& SLAPrintObject::pad_mesh() const { - if(m_config.pad_enable.getBool() && m_supportdata && m_supportdata->support_tree_ptr) - return m_supportdata->support_tree_ptr->get_pad(); + sla::SupportTree::UPtr &stree = m_supportdata->support_tree_ptr; + + if(m_config.pad_enable.getBool() && m_supportdata && stree) + return stree->retrieve_mesh(sla::MeshType::Pad); return EMPTY_MESH; } diff --git a/src/libslic3r/SLAPrint.hpp b/src/libslic3r/SLAPrint.hpp index a2cb517b2..c4eefffd7 100644 --- a/src/libslic3r/SLAPrint.hpp +++ b/src/libslic3r/SLAPrint.hpp @@ -440,7 +440,7 @@ private: std::vector m_printer_input; // The printer itself - std::unique_ptr m_printer; + std::unique_ptr m_printer; // Estimated print time, material consumed. SLAPrintStatistics m_print_statistics; @@ -459,14 +459,14 @@ private: double status() const { return m_st; } } m_report_status; - sla::SLARasterWriter &init_printer(); + sla::RasterWriter &init_printer(); - inline sla::SLARasterWriter::Orientation get_printer_orientation() const + inline sla::RasterWriter::Orientation get_printer_orientation() const { auto ro = m_printer_config.display_orientation.getInt(); - return ro == sla::SLARasterWriter::roPortrait ? - sla::SLARasterWriter::roPortrait : - sla::SLARasterWriter::roLandscape; + return ro == sla::RasterWriter::roPortrait ? + sla::RasterWriter::roPortrait : + sla::RasterWriter::roLandscape; } friend SLAPrintObject; diff --git a/tests/sla_print/sla_print_tests_main.cpp b/tests/sla_print/sla_print_tests_main.cpp index 098d88346..73e193f5c 100644 --- a/tests/sla_print/sla_print_tests_main.cpp +++ b/tests/sla_print/sla_print_tests_main.cpp @@ -1,3 +1,5 @@ +#include + #include #include "libslic3r/libslic3r.h" @@ -5,7 +7,8 @@ #include "libslic3r/SLAPrint.hpp" #include "libslic3r/TriangleMesh.hpp" #include "libslic3r/SLA/SLAPad.hpp" -#include "libslic3r/SLA/SLASupportTree.hpp" +#include "libslic3r/SLA/SLASupportTreeBuilder.hpp" +#include "libslic3r/SLA/SLASupportTreeAlgorithm.hpp" #include "libslic3r/SLA/SLAAutoSupports.hpp" #include "libslic3r/MTUtils.hpp" @@ -104,11 +107,52 @@ struct SupportByproducts { std::vector slicegrid; std::vector model_slices; - sla::SLASupportTree supporttree; + sla::SupportTreeBuilder supporttree; }; const constexpr float CLOSING_RADIUS = 0.005f; +void check_support_tree_integrity(const sla::SupportTreeBuilder &stree, + const sla::SupportConfig &cfg) +{ + double gnd = stree.ground_level; + double H1 = cfg.max_solo_pillar_height_mm; + double H2 = cfg.max_dual_pillar_height_mm; + + for (const sla::Pillar &pillar : stree.pillars()) { + if (std::abs(pillar.endpoint().z() - gnd) < EPSILON) { + double h = pillar.height; + + if (h > H1) ASSERT_GE(pillar.links, 1); + else if(h > H2) { ASSERT_GE(pillar.links, 2); } + } + + ASSERT_LE(pillar.links, cfg.pillar_cascade_neighbors); + ASSERT_LE(pillar.bridges, cfg.max_bridges_on_pillar); + } + + double max_bridgelen = 0.; + auto chck_bridge = [&cfg](const sla::Bridge &bridge, double &max_brlen) { + Vec3d n = bridge.endp - bridge.startp; + double d = sla::distance(n); + max_brlen = std::max(d, max_brlen); + + double z = n.z(); + double polar = std::acos(z / d); + double slope = -polar + PI / 2.; + ASSERT_TRUE(slope >= cfg.bridge_slope || slope <= -cfg.bridge_slope); + }; + + for (auto &bridge : stree.bridges()) chck_bridge(bridge, max_bridgelen); + ASSERT_LE(max_bridgelen, cfg.max_bridge_length_mm); + + max_bridgelen = 0; + for (auto &bridge : stree.crossbridges()) chck_bridge(bridge, max_bridgelen); + + double md = cfg.max_pillar_link_distance_mm / std::cos(-cfg.bridge_slope); + ASSERT_LE(max_bridgelen, md); +} + void test_supports(const std::string & obj_filename, const sla::SupportConfig &supportcfg, SupportByproducts & out) @@ -119,13 +163,13 @@ void test_supports(const std::string & obj_filename, ASSERT_FALSE(mesh.empty()); TriangleMeshSlicer slicer{&mesh}; - - auto bb = mesh.bounding_box(); - double zmin = bb.min.z(); - double zmax = bb.max.z(); - double gnd = zmin - supportcfg.object_elevation_mm; - auto layer_h = 0.05f; - + + auto bb = mesh.bounding_box(); + double zmin = bb.min.z(); + double zmax = bb.max.z(); + double gnd = zmin - supportcfg.object_elevation_mm; + auto layer_h = 0.05f; + out.slicegrid = grid(float(gnd), float(zmax), layer_h); slicer.slice(out.slicegrid , CLOSING_RADIUS, &out.model_slices, []{}); @@ -158,9 +202,12 @@ void test_supports(const std::string & obj_filename, } // Generate the actual support tree - sla::SLASupportTree supporttree(support_points, emesh, supportcfg); + sla::SupportTreeBuilder treebuilder; + treebuilder.build(sla::SupportableMesh{emesh, support_points, supportcfg}); - const TriangleMesh &output_mesh = supporttree.merged_mesh(); + check_support_tree_integrity(treebuilder, supportcfg); + + const TriangleMesh &output_mesh = treebuilder.retrieve_mesh(); check_validity(output_mesh, validityflags); @@ -171,7 +218,7 @@ void test_supports(const std::string & obj_filename, // Move out the support tree into the byproducts, we can examine it further // in various tests. - out.supporttree = std::move(supporttree); + out.supporttree = std::move(treebuilder); } void test_supports(const std::string & obj_filename, @@ -232,6 +279,33 @@ const char *const SUPPORT_TEST_MODELS[] = { } // namespace +template void test_pairhash() +{ + std::map > ints; + for (I i = 0; i < 1000; ++i) + for (I j = 0; j < 1000; ++j) { + if (j != i) { + II hash_ij = sla::pairhash(i, j); + II hash_ji = sla::pairhash(j, i); + ASSERT_EQ(hash_ij, hash_ji); + + auto it = ints.find(hash_ij); + + if (it != ints.end()) { + ASSERT_TRUE( + (it->second.first == i && it->second.second == j) || + (it->second.first == j && it->second.second == i)); + } else ints[hash_ij] = std::make_pair(i, j); + } + } +} + +TEST(SLASupportGeneration, PillarPairHashShouldBeUnique) { + test_pairhash(); + test_pairhash(); + test_pairhash(); +} + TEST(SLASupportGeneration, FlatPadGeometryIsValid) { sla::PadConfig padcfg; From be7428d66ecb0827676f230db86fad6300e1cc7d Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 1 Oct 2019 13:27:58 +0200 Subject: [PATCH 18/53] sla::Raster interface clarified and covered with tests. Also renamed sla::SupportTreeAlgorithm to SupportTreeBuildsteps. --- CMakeLists.txt | 2 +- src/agg/agg_rasterizer_scanline_aa.h | 2 +- src/libslic3r/CMakeLists.txt | 4 +- src/libslic3r/SLA/SLARaster.cpp | 317 +++++++++--------- src/libslic3r/SLA/SLARaster.hpp | 142 ++++---- src/libslic3r/SLA/SLARasterWriter.cpp | 37 +- src/libslic3r/SLA/SLARasterWriter.hpp | 56 ++-- src/libslic3r/SLA/SLASupportTree.cpp | 1 - src/libslic3r/SLA/SLASupportTreeBuilder.cpp | 4 +- ...rithm.cpp => SLASupportTreeBuildsteps.cpp} | 50 +-- ...rithm.hpp => SLASupportTreeBuildsteps.hpp} | 12 +- src/libslic3r/SLAPrint.cpp | 26 +- src/libslic3r/SLAPrint.hpp | 7 +- tests/sla_print/CMakeLists.txt | 3 +- tests/sla_print/sla_print_tests_main.cpp | 182 +++++++++- 15 files changed, 484 insertions(+), 361 deletions(-) rename src/libslic3r/SLA/{SLASupportTreeAlgorithm.cpp => SLASupportTreeBuildsteps.cpp} (97%) rename src/libslic3r/SLA/{SLASupportTreeAlgorithm.hpp => SLASupportTreeBuildsteps.hpp} (96%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c7fc12df..93339eb0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,7 +37,7 @@ set(SLIC3R_GTK "2" CACHE STRING "GTK version to use with wxWidgets on Linux") # Proposal for C++ unit tests and sandboxes option(SLIC3R_BUILD_SANDBOXES "Build development sandboxes" OFF) -option(SLIC3R_BUILD_TESTS "Build unit tests" OFF) +option(SLIC3R_BUILD_TESTS "Build unit tests" ON) # Print out the SLIC3R_* cache options get_cmake_property(_cache_vars CACHE_VARIABLES) diff --git a/src/agg/agg_rasterizer_scanline_aa.h b/src/agg/agg_rasterizer_scanline_aa.h index ffc2ddf94..4925ca209 100644 --- a/src/agg/agg_rasterizer_scanline_aa.h +++ b/src/agg/agg_rasterizer_scanline_aa.h @@ -156,7 +156,7 @@ namespace agg //------------------------------------------------------------------- template - void add_path(VertexSource& vs, unsigned path_id=0) + void add_path(VertexSource &&vs, unsigned path_id=0) { double x; double y; diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 66602e06d..fe8b0f71d 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -179,8 +179,8 @@ add_library(libslic3r STATIC SLA/SLAPad.hpp SLA/SLAPad.cpp SLA/SLASupportTreeBuilder.hpp - SLA/SLASupportTreeAlgorithm.hpp - SLA/SLASupportTreeAlgorithm.cpp + SLA/SLASupportTreeBuildsteps.hpp + SLA/SLASupportTreeBuildsteps.cpp SLA/SLASupportTreeBuilder.cpp SLA/SLAConcurrency.hpp SLA/SLASupportTree.hpp diff --git a/src/libslic3r/SLA/SLARaster.cpp b/src/libslic3r/SLA/SLARaster.cpp index 32a88b1b5..091cadd23 100644 --- a/src/libslic3r/SLA/SLARaster.cpp +++ b/src/libslic3r/SLA/SLARaster.cpp @@ -5,6 +5,7 @@ #include "SLARaster.hpp" #include "libslic3r/ExPolygon.hpp" +#include "libslic3r/MTUtils.hpp" #include // For rasterizing @@ -32,25 +33,30 @@ inline const ClipperLib::Paths& holes(const ClipperLib::Polygon& p) { return p.H namespace sla { +const Raster::TMirroring Raster::NoMirror = {false, false}; +const Raster::TMirroring Raster::MirrorX = {true, false}; +const Raster::TMirroring Raster::MirrorY = {false, true}; +const Raster::TMirroring Raster::MirrorXY = {true, true}; + + +using TPixelRenderer = agg::pixfmt_gray8; // agg::pixfmt_rgb24; +using TRawRenderer = agg::renderer_base; +using TPixel = TPixelRenderer::color_type; +using TRawBuffer = agg::rendering_buffer; +using TBuffer = std::vector; + +using TRendererAA = agg::renderer_scanline_aa_solid; + class Raster::Impl { public: - using TPixelRenderer = agg::pixfmt_gray8; // agg::pixfmt_rgb24; - using TRawRenderer = agg::renderer_base; - using TPixel = TPixelRenderer::color_type; - using TRawBuffer = agg::rendering_buffer; - - using TBuffer = std::vector; - - using TRendererAA = agg::renderer_scanline_aa_solid; static const TPixel ColorWhite; static const TPixel ColorBlack; - using Format = Raster::Format; + using Format = Raster::RawData; private: Raster::Resolution m_resolution; -// Raster::PixelDim m_pxdim; Raster::PixelDim m_pxdim_scaled; // used for scaled coordinate polygons TBuffer m_buf; TRawBuffer m_rbuf; @@ -59,74 +65,49 @@ private: TRendererAA m_renderer; std::function m_gammafn; - std::array m_mirror; - Format m_fmt = Format::PNG; + Trafo m_trafo; inline void flipy(agg::path_storage& path) const { - path.flip_y(0, m_resolution.height_px); + path.flip_y(0, double(m_resolution.height_px)); } inline void flipx(agg::path_storage& path) const { - path.flip_x(0, m_resolution.width_px); + path.flip_x(0, double(m_resolution.width_px)); } public: - - inline Impl(const Raster::Resolution& res, const Raster::PixelDim &pd, - const std::array& mirror, double gamma = 1.0): - m_resolution(res), -// m_pxdim(pd), - m_pxdim_scaled(SCALING_FACTOR / pd.w_mm, SCALING_FACTOR / pd.h_mm), - m_buf(res.pixels()), - m_rbuf(reinterpret_cast(m_buf.data()), - res.width_px, res.height_px, - int(res.width_px*TPixelRenderer::num_components)), - m_pixfmt(m_rbuf), - m_raw_renderer(m_pixfmt), - m_renderer(m_raw_renderer), - m_mirror(mirror) + inline Impl(const Raster::Resolution & res, + const Raster::PixelDim & pd, + const Trafo &trafo) + : m_resolution(res) + , m_pxdim_scaled(SCALING_FACTOR / pd.w_mm, SCALING_FACTOR / pd.h_mm) + , m_buf(res.pixels()) + , m_rbuf(reinterpret_cast(m_buf.data()), + unsigned(res.width_px), + unsigned(res.height_px), + int(res.width_px * TPixelRenderer::num_components)) + , m_pixfmt(m_rbuf) + , m_raw_renderer(m_pixfmt) + , m_renderer(m_raw_renderer) + , m_trafo(trafo) { m_renderer.color(ColorWhite); - if(gamma > 0) m_gammafn = agg::gamma_power(gamma); + if (trafo.gamma > 0) m_gammafn = agg::gamma_power(trafo.gamma); else m_gammafn = agg::gamma_threshold(0.5); clear(); } - - inline Impl(const Raster::Resolution& res, - const Raster::PixelDim &pd, - Format fmt, - double gamma = 1.0): - Impl(res, pd, {false, false}, gamma) - { - switch (fmt) { - case Format::PNG: m_mirror = {false, true}; break; - case Format::RAW: m_mirror = {false, false}; break; - } - m_fmt = fmt; - } template void draw(const P &poly) { agg::rasterizer_scanline_aa<> ras; agg::scanline_p8 scanlines; ras.gamma(m_gammafn); - - auto&& path = to_path(contour(poly)); - if(m_mirror[X]) flipx(path); - if(m_mirror[Y]) flipy(path); - - ras.add_path(path); - - for(auto& h : holes(poly)) { - auto&& holepath = to_path(h); - if(m_mirror[X]) flipx(holepath); - if(m_mirror[Y]) flipy(holepath); - ras.add_path(holepath); - } - + ras.add_path(to_path(contour(poly))); + for(auto& h : holes(poly)) ras.add_path(to_path(h)); + agg::render_scanlines(ras, scanlines, m_renderer); } @@ -135,11 +116,16 @@ public: } inline TBuffer& buffer() { return m_buf; } + inline const TBuffer& buffer() const { return m_buf; } - inline Format format() const { return m_fmt; } inline const Raster::Resolution resolution() { return m_resolution; } - + inline const Raster::PixelDim pixdim() + { + return {SCALING_FACTOR / m_pxdim_scaled.w_mm, + SCALING_FACTOR / m_pxdim_scaled.h_mm}; + } + private: inline double getPx(const Point& p) { return p(0) * m_pxdim_scaled.w_mm; @@ -162,49 +148,67 @@ private: return p.Y * m_pxdim_scaled.h_mm; } - template agg::path_storage to_path(const PointVec& poly) + template agg::path_storage _to_path(const PointVec& v) { agg::path_storage path; - auto it = poly.begin(); + auto it = v.begin(); path.move_to(getPx(*it), getPy(*it)); + while(++it != v.end()) path.line_to(getPx(*it), getPy(*it)); + path.line_to(getPx(v.front()), getPy(v.front())); + + return path; + } + + template agg::path_storage _to_path_flpxy(const PointVec& v) + { + agg::path_storage path; + + auto it = v.begin(); + path.move_to(getPy(*it), getPx(*it)); + while(++it != v.end()) path.line_to(getPy(*it), getPx(*it)); + path.line_to(getPy(v.front()), getPx(v.front())); + + return path; + } + + template agg::path_storage to_path(const PointVec &v) + { + auto path = m_trafo.flipXY ? _to_path_flpxy(v) : _to_path(v); + + path.translate_all_paths(m_trafo.origin_x * m_pxdim_scaled.w_mm, + m_trafo.origin_y * m_pxdim_scaled.h_mm); + + if(m_trafo.mirror_x) flipx(path); + if(m_trafo.mirror_y) flipy(path); - while(++it != poly.end()) - path.line_to(getPx(*it), getPy(*it)); - - path.line_to(getPx(poly.front()), getPy(poly.front())); return path; } }; -const Raster::Impl::TPixel Raster::Impl::ColorWhite = Raster::Impl::TPixel(255); -const Raster::Impl::TPixel Raster::Impl::ColorBlack = Raster::Impl::TPixel(0); +const TPixel Raster::Impl::ColorWhite = TPixel(255); +const TPixel Raster::Impl::ColorBlack = TPixel(0); + +Raster::Raster() { reset(); } + +Raster::Raster(const Raster::Resolution &r, + const Raster::PixelDim & pd, + const Raster::Trafo & tr) +{ + reset(r, pd, tr); +} -template<> Raster::Raster() { reset(); }; Raster::~Raster() = default; -// Raster::Raster(Raster &&m) = default; -// Raster& Raster::operator=(Raster&&) = default; - -// FIXME: remove after migrating to higher version of windows compiler -Raster::Raster(Raster &&m): m_impl(std::move(m.m_impl)) {} -Raster& Raster::operator=(Raster &&m) { - m_impl = std::move(m.m_impl); return *this; -} +Raster::Raster(Raster &&m) = default; +Raster &Raster::operator=(Raster &&) = default; void Raster::reset(const Raster::Resolution &r, const Raster::PixelDim &pd, - Format fmt, double gamma) + const Trafo &trafo) { m_impl.reset(); - m_impl.reset(new Impl(r, pd, fmt, gamma)); -} - -void Raster::reset(const Raster::Resolution &r, const Raster::PixelDim &pd, - const std::array& mirror, double gamma) -{ - m_impl.reset(); - m_impl.reset(new Impl(r, pd, mirror, gamma)); + m_impl.reset(new Impl(r, pd, trafo)); } void Raster::reset() @@ -214,9 +218,16 @@ void Raster::reset() Raster::Resolution Raster::resolution() const { - if(m_impl) return m_impl->resolution(); + if (m_impl) return m_impl->resolution(); + + return Resolution{0, 0}; +} - return Resolution(0, 0); +Raster::PixelDim Raster::pixel_dimensions() const +{ + if (m_impl) return m_impl->pixdim(); + + return PixelDim{0., 0.}; } void Raster::clear() @@ -227,103 +238,83 @@ void Raster::clear() void Raster::draw(const ExPolygon &expoly) { + assert(m_impl); m_impl->draw(expoly); } void Raster::draw(const ClipperLib::Polygon &poly) { + assert(m_impl); m_impl->draw(poly); } -void Raster::save(std::ostream& stream, Format fmt) +uint8_t Raster::read_pixel(size_t x, size_t y) const { - assert(m_impl); - if(!stream.good()) return; - - switch(fmt) { - case Format::PNG: { - auto& b = m_impl->buffer(); - size_t out_len = 0; - void * rawdata = tdefl_write_image_to_png_file_in_memory( - b.data(), - int(resolution().width_px), - int(resolution().height_px), 1, &out_len); - - if(rawdata == nullptr) break; - - stream.write(static_cast(rawdata), - std::streamsize(out_len)); - - MZ_FREE(rawdata); - - break; - } - case Format::RAW: { - stream << "P5 " - << m_impl->resolution().width_px << " " - << m_impl->resolution().height_px << " " - << "255 "; - - auto sz = m_impl->buffer().size()*sizeof(Impl::TBuffer::value_type); - stream.write(reinterpret_cast(m_impl->buffer().data()), - std::streamsize(sz)); - } - } + assert (m_impl); + TPixel::value_type px; + m_impl->buffer()[y * resolution().width_px + x].get(px); + return px; } -void Raster::save(std::ostream &stream) +PNGImage & PNGImage::serialize(const Raster &raster) { - save(stream, m_impl->format()); + size_t s = 0; + m_buffer.clear(); + + void *rawdata = tdefl_write_image_to_png_file_in_memory( + get_internals(raster).buffer().data(), + int(raster.resolution().width_px), + int(raster.resolution().height_px), 1, &s); + + // On error, data() will return an empty vector. No other info can be + // retrieved from miniz anyway... + if (rawdata == nullptr) return *this; + + auto ptr = static_cast(rawdata); + + m_buffer.reserve(s); + std::copy(ptr, ptr + s, std::back_inserter(m_buffer)); + + MZ_FREE(rawdata); + return *this; } -RawBytes Raster::save(Format fmt) +std::ostream &operator<<(std::ostream &stream, const Raster::RawData &bytes) { - assert(m_impl); - - std::vector data; size_t s = 0; - - switch(fmt) { - case Format::PNG: { - void *rawdata = tdefl_write_image_to_png_file_in_memory( - m_impl->buffer().data(), - int(resolution().width_px), - int(resolution().height_px), 1, &s); - - if(rawdata == nullptr) break; - auto ptr = static_cast(rawdata); - - data.reserve(s); std::copy(ptr, ptr + s, std::back_inserter(data)); - - MZ_FREE(rawdata); - break; - } - case Format::RAW: { - auto header = std::string("P5 ") + - std::to_string(m_impl->resolution().width_px) + " " + - std::to_string(m_impl->resolution().height_px) + " " + "255 "; - - auto sz = m_impl->buffer().size()*sizeof(Impl::TBuffer::value_type); - s = sz + header.size(); - - data.reserve(s); - - auto buff = reinterpret_cast(m_impl->buffer().data()); - std::copy(header.begin(), header.end(), std::back_inserter(data)); - std::copy(buff, buff+sz, std::back_inserter(data)); - - break; - } - } - - return {std::move(data)}; + stream.write(reinterpret_cast(bytes.data()), + std::streamsize(bytes.size())); + + return stream; } -RawBytes Raster::save() +Raster::RawData::~RawData() = default; + +PPMImage & PPMImage::serialize(const Raster &raster) { - return save(m_impl->format()); + auto header = std::string("P5 ") + + std::to_string(raster.resolution().width_px) + " " + + std::to_string(raster.resolution().height_px) + " " + "255 "; + + const auto &impl = get_internals(raster); + auto sz = impl.buffer().size() * sizeof(TBuffer::value_type); + size_t s = sz + header.size(); + + m_buffer.clear(); + m_buffer.reserve(s); + + auto buff = reinterpret_cast(impl.buffer().data()); + std::copy(header.begin(), header.end(), std::back_inserter(m_buffer)); + std::copy(buff, buff+sz, std::back_inserter(m_buffer)); + + return *this; } +const Raster::Impl &Raster::RawData::get_internals(const Raster &raster) +{ + return *raster.m_impl; } -} + +} // namespace sla +} // namespace Slic3r #endif // SLARASTER_CPP diff --git a/src/libslic3r/SLA/SLARaster.hpp b/src/libslic3r/SLA/SLARaster.hpp index 8b27fd153..23b06c469 100644 --- a/src/libslic3r/SLA/SLARaster.hpp +++ b/src/libslic3r/SLA/SLARaster.hpp @@ -8,44 +8,14 @@ #include #include +#include + namespace ClipperLib { struct Polygon; } namespace Slic3r { - -class ExPolygon; - namespace sla { -// Raw byte buffer paired with its size. Suitable for compressed PNG data. -class RawBytes { - - std::vector m_buffer; -public: - - RawBytes() = default; - RawBytes(std::vector&& data): m_buffer(std::move(data)) {} - - size_t size() const { return m_buffer.size(); } - const uint8_t * data() { return m_buffer.data(); } - - RawBytes(const RawBytes&) = delete; - RawBytes& operator=(const RawBytes&) = delete; - - // ///////////////////////////////////////////////////////////////////////// - // FIXME: the following is needed for MSVC2013 compatibility - // ///////////////////////////////////////////////////////////////////////// - - // RawBytes(RawBytes&&) = default; - // RawBytes& operator=(RawBytes&&) = default; - - RawBytes(RawBytes&& mv) : m_buffer(std::move(mv.m_buffer)) {} - RawBytes& operator=(RawBytes&& mv) { - m_buffer = std::move(mv.m_buffer); - return *this; - } - - // ///////////////////////////////////////////////////////////////////////// -}; +class Raster; /** * @brief Raster captures an anti-aliased monochrome canvas where vectorial @@ -59,11 +29,29 @@ class Raster { class Impl; std::unique_ptr m_impl; public: - - /// Supported compression types - enum class Format { - RAW, //!> Uncompressed pixel data - PNG //!> PNG compression + + // Raw byte buffer paired with its size. Suitable for compressed image data. + class RawData + { + protected: + std::vector m_buffer; + const Impl& get_internals(const Raster& raster); + public: + RawData() = default; + RawData(std::vector&& data): m_buffer(std::move(data)) {} + virtual ~RawData(); + + RawData(const RawData &) = delete; + RawData &operator=(const RawData &) = delete; + + RawData(RawData &&) = default; + RawData &operator=(RawData &&) = default; + + size_t size() const { return m_buffer.size(); } + const uint8_t * data() const { return m_buffer.data(); } + + virtual RawData& serialize(const Raster &/*raster*/) { return *this; } + virtual std::string get_file_extension() const = 0; }; /// Type that represents a resolution in pixels. @@ -85,11 +73,36 @@ public: inline PixelDim(double px_width_mm = 0.0, double px_height_mm = 0.0): w_mm(px_width_mm), h_mm(px_height_mm) {} }; - - /// Constructor taking the resolution and the pixel dimension. - template Raster(Args...args) { - reset(std::forward(args)...); - } + + enum Orientation { roLandscape, roPortrait }; + + using TMirroring = std::array; + static const TMirroring NoMirror; + static const TMirroring MirrorX; + static const TMirroring MirrorY; + static const TMirroring MirrorXY; + + struct Trafo { + bool mirror_x = false, mirror_y = false, flipXY = false; + coord_t origin_x = 0, origin_y = .0; + + // If gamma is zero, thresholding will be performed which disables AA. + double gamma = 1.; + + // Portrait orientation will make sure the drawed polygons are rotated + // by 90 degrees. + Trafo(Orientation o = roLandscape, const TMirroring &mirror = NoMirror) + // XY flipping implicitly does an X mirror + : mirror_x(o == roPortrait ? !mirror[0] : mirror[0]) + , mirror_y(!mirror[1]) // Makes raster origin to be top left corner + , flipXY(o == roPortrait) + {} + }; + + Raster(); + Raster(const Resolution &r, + const PixelDim & pd, + const Trafo & tr = {}); Raster(const Raster& cpy) = delete; Raster& operator=(const Raster& cpy) = delete; @@ -98,17 +111,9 @@ public: ~Raster(); /// Reallocated everything for the given resolution and pixel dimension. - /// The third parameter is either the X, Y mirroring or a supported format - /// for which the correct mirroring will be configured. - void reset(const Resolution&, - const PixelDim&, - const std::array& mirror, - double gamma = 1.0); - void reset(const Resolution& r, - const PixelDim& pd, - Format o, - double gamma = 1.0); + const PixelDim& pd, + const Trafo &tr = {}); /** * Release the allocated resources. Drawing in this state ends in @@ -118,6 +123,7 @@ public: /// Get the resolution of the raster. Resolution resolution() const; + PixelDim pixel_dimensions() const; /// Clear the raster with black color. void clear(); @@ -125,25 +131,29 @@ public: /// Draw a polygon with holes. void draw(const ExPolygon& poly); void draw(const ClipperLib::Polygon& poly); - - // Saving the raster: - // It is possible to override the format given in the constructor but - // be aware that the mirroring will not be modified. + + uint8_t read_pixel(size_t w, size_t h) const; - /// Save the raster on the specified stream. - void save(std::ostream& stream, Format); - void save(std::ostream& stream); - - /// Save into a continuous byte stream which is returned. - RawBytes save(Format fmt); - RawBytes save(); + inline bool empty() const { return ! bool(m_impl); } + }; -// This prevents the duplicate default constructor warning on MSVC2013 -template<> Raster::Raster(); +class PNGImage: public Raster::RawData { +public: + PNGImage& serialize(const Raster &raster) override; + std::string get_file_extension() const override { return "png"; } +}; +class PPMImage: public Raster::RawData { +public: + PPMImage& serialize(const Raster &raster) override; + std::string get_file_extension() const override { return "ppm"; } +}; + +std::ostream& operator<<(std::ostream &stream, const Raster::RawData &bytes); } // sla } // Slic3r + #endif // SLARASTER_HPP diff --git a/src/libslic3r/SLA/SLARasterWriter.cpp b/src/libslic3r/SLA/SLARasterWriter.cpp index 4c2296a23..60f25ddf1 100644 --- a/src/libslic3r/SLA/SLARasterWriter.cpp +++ b/src/libslic3r/SLA/SLARasterWriter.cpp @@ -21,37 +21,12 @@ std::string RasterWriter::createIniContent(const std::string& projectname) const return out; } -void RasterWriter::flpXY(ClipperLib::Polygon &poly) -{ - for(auto& p : poly.Contour) std::swap(p.X, p.Y); - std::reverse(poly.Contour.begin(), poly.Contour.end()); - - for(auto& h : poly.Holes) { - for(auto& p : h) std::swap(p.X, p.Y); - std::reverse(h.begin(), h.end()); - } -} - -void RasterWriter::flpXY(ExPolygon &poly) -{ - for(auto& p : poly.contour.points) p = Point(p.y(), p.x()); - std::reverse(poly.contour.points.begin(), poly.contour.points.end()); - - for(auto& h : poly.holes) { - for(auto& p : h.points) p = Point(p.y(), p.x()); - std::reverse(h.points.begin(), h.points.end()); - } -} - -RasterWriter::RasterWriter(const Raster::Resolution &res, - const Raster::PixelDim &pixdim, - const std::array &mirror, - double gamma) - : m_res(res), m_pxdim(pixdim), m_mirror(mirror), m_gamma(gamma) -{ - // PNG raster will implicitly do an Y mirror - m_mirror[1] = !m_mirror[1]; -} +RasterWriter::RasterWriter(const Raster::Resolution &res, + const Raster::PixelDim & pixdim, + const Raster::Trafo & trafo, + double gamma) + : m_res(res), m_pxdim(pixdim), m_trafo(trafo), m_gamma(gamma) +{} void RasterWriter::save(const std::string &fpath, const std::string &prjname) { diff --git a/src/libslic3r/SLA/SLARasterWriter.hpp b/src/libslic3r/SLA/SLARasterWriter.hpp index e6a1fd0d1..c231655d2 100644 --- a/src/libslic3r/SLA/SLARasterWriter.hpp +++ b/src/libslic3r/SLA/SLARasterWriter.hpp @@ -15,7 +15,8 @@ namespace Slic3r { namespace sla { -// Implementation for PNG raster output +// API to write the zipped sla output layers and metadata. +// Implementation uses PNG raster output. // Be aware that if a large number of layers are allocated, it can very well // exhaust the available memory especially on 32 bit platform. // This class is designed to be used in parallel mode. Layers have an ID and @@ -25,10 +26,6 @@ namespace Slic3r { namespace sla { class RasterWriter { public: - enum Orientation { - roLandscape, - roPortrait - }; // Used for addressing parameters of set_statistics() struct PrintStatistics @@ -45,7 +42,7 @@ private: // A struct to bind the raster image data and its compressed bytes together. struct Layer { Raster raster; - RawBytes rawbytes; + PNGImage rawbytes; Layer() = default; @@ -61,22 +58,21 @@ private: // parallel. Later we can write every layer to the disk sequentially. std::vector m_layers_rst; Raster::Resolution m_res; - Raster::PixelDim m_pxdim; - std::array m_mirror; - double m_gamma; - + Raster::PixelDim m_pxdim; + Raster::Trafo m_trafo; + double m_gamma; + std::map m_config; std::string createIniContent(const std::string& projectname) const; - - static void flpXY(ClipperLib::Polygon& poly); - static void flpXY(ExPolygon& poly); public: - RasterWriter(const Raster::Resolution &res, - const Raster::PixelDim &pixdim, - const std::array &mirror, - double gamma = 1.); + + // SLARasterWriter is using Raster in custom mirroring mode + RasterWriter(const Raster::Resolution &res, + const Raster::PixelDim & pixdim, + const Raster::Trafo & trafo, + double gamma = 1.); RasterWriter(const RasterWriter& ) = delete; RasterWriter& operator=(const RasterWriter&) = delete; @@ -86,45 +82,31 @@ public: inline void layers(unsigned cnt) { if(cnt > 0) m_layers_rst.resize(cnt); } inline unsigned layers() const { return unsigned(m_layers_rst.size()); } - template void draw_polygon(const Poly& p, unsigned lyr, - Orientation o = roPortrait) + template void draw_polygon(const Poly& p, unsigned lyr) { assert(lyr < m_layers_rst.size()); - - switch (o) { - case roPortrait: { - Poly poly(p); - flpXY(poly); - m_layers_rst[lyr].raster.draw(poly); - break; - } - case roLandscape: - m_layers_rst[lyr].raster.draw(p); - break; - } + m_layers_rst[lyr].raster.draw(p); } inline void begin_layer(unsigned lyr) { if(m_layers_rst.size() <= lyr) m_layers_rst.resize(lyr+1); - m_layers_rst[lyr].raster.reset(m_res, m_pxdim, m_mirror, m_gamma); + m_layers_rst[lyr].raster.reset(m_res, m_pxdim, m_trafo); } inline void begin_layer() { m_layers_rst.emplace_back(); - m_layers_rst.front().raster.reset(m_res, m_pxdim, m_mirror, m_gamma); + m_layers_rst.front().raster.reset(m_res, m_pxdim, m_trafo); } inline void finish_layer(unsigned lyr_id) { assert(lyr_id < m_layers_rst.size()); - m_layers_rst[lyr_id].rawbytes = - m_layers_rst[lyr_id].raster.save(Raster::Format::PNG); + m_layers_rst[lyr_id].rawbytes.serialize(m_layers_rst[lyr_id].raster); m_layers_rst[lyr_id].raster.reset(); } inline void finish_layer() { if(!m_layers_rst.empty()) { - m_layers_rst.back().rawbytes = - m_layers_rst.back().raster.save(Raster::Format::PNG); + m_layers_rst.back().rawbytes.serialize(m_layers_rst.back().raster); m_layers_rst.back().raster.reset(); } } diff --git a/src/libslic3r/SLA/SLASupportTree.cpp b/src/libslic3r/SLA/SLASupportTree.cpp index 7bc003609..1faf20f34 100644 --- a/src/libslic3r/SLA/SLASupportTree.cpp +++ b/src/libslic3r/SLA/SLASupportTree.cpp @@ -8,7 +8,6 @@ #include "SLABoilerPlate.hpp" #include "SLASpatIndex.hpp" #include "SLASupportTreeBuilder.hpp" -#include "SLASupportTreeAlgorithm.hpp" #include #include diff --git a/src/libslic3r/SLA/SLASupportTreeBuilder.cpp b/src/libslic3r/SLA/SLASupportTreeBuilder.cpp index 445340010..9e1f8c1da 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuilder.cpp +++ b/src/libslic3r/SLA/SLASupportTreeBuilder.cpp @@ -1,5 +1,5 @@ #include "SLASupportTreeBuilder.hpp" -#include "SLASupportTreeAlgorithm.hpp" +#include "SLASupportTreeBuildsteps.hpp" namespace Slic3r { namespace sla { @@ -455,7 +455,7 @@ const TriangleMesh &SupportTreeBuilder::retrieve_mesh(MeshType meshtype) const bool SupportTreeBuilder::build(const SupportableMesh &sm) { ground_level = sm.emesh.ground_level() - sm.cfg.object_elevation_mm; - return SupportTreeAlgorithm::execute(*this, sm); + return SupportTreeBuildsteps::execute(*this, sm); } } diff --git a/src/libslic3r/SLA/SLASupportTreeAlgorithm.cpp b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp similarity index 97% rename from src/libslic3r/SLA/SLASupportTreeAlgorithm.cpp rename to src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp index 2f4a0c645..2404b2cdf 100644 --- a/src/libslic3r/SLA/SLASupportTreeAlgorithm.cpp +++ b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp @@ -1,4 +1,4 @@ -#include "SLASupportTreeAlgorithm.hpp" +#include "SLASupportTreeBuildsteps.hpp" #include #include @@ -7,7 +7,7 @@ namespace Slic3r { namespace sla { -SupportTreeAlgorithm::SupportTreeAlgorithm(SupportTreeBuilder & builder, +SupportTreeBuildsteps::SupportTreeBuildsteps(SupportTreeBuilder & builder, const SupportableMesh &sm) : m_cfg(sm.cfg) , m_mesh(sm.emesh) @@ -29,12 +29,12 @@ SupportTreeAlgorithm::SupportTreeAlgorithm(SupportTreeBuilder & builder, } } -bool SupportTreeAlgorithm::execute(SupportTreeBuilder & builder, +bool SupportTreeBuildsteps::execute(SupportTreeBuilder & builder, const SupportableMesh &sm) { if(sm.pts.empty()) return false; - SupportTreeAlgorithm alg(builder, sm); + SupportTreeBuildsteps alg(builder, sm); // Let's define the individual steps of the processing. We can experiment // later with the ordering and the dependencies between them. @@ -61,21 +61,21 @@ bool SupportTreeAlgorithm::execute(SupportTreeBuilder & builder, // Potentially clear up the shared data (not needed for now) }, - std::bind(&SupportTreeAlgorithm::filter, &alg), + std::bind(&SupportTreeBuildsteps::filter, &alg), - std::bind(&SupportTreeAlgorithm::add_pinheads, &alg), + std::bind(&SupportTreeBuildsteps::add_pinheads, &alg), - std::bind(&SupportTreeAlgorithm::classify, &alg), + std::bind(&SupportTreeBuildsteps::classify, &alg), - std::bind(&SupportTreeAlgorithm::routing_to_ground, &alg), + std::bind(&SupportTreeBuildsteps::routing_to_ground, &alg), - std::bind(&SupportTreeAlgorithm::routing_to_model, &alg), + std::bind(&SupportTreeBuildsteps::routing_to_model, &alg), - std::bind(&SupportTreeAlgorithm::interconnect_pillars, &alg), + std::bind(&SupportTreeBuildsteps::interconnect_pillars, &alg), - std::bind(&SupportTreeAlgorithm::routing_headless, &alg), + std::bind(&SupportTreeBuildsteps::routing_headless, &alg), - std::bind(&SupportTreeAlgorithm::merge_result, &alg), + std::bind(&SupportTreeBuildsteps::merge_result, &alg), [] () { // Done @@ -158,7 +158,7 @@ bool SupportTreeAlgorithm::execute(SupportTreeBuilder & builder, return pc == ABORT; } -EigenMesh3D::hit_result SupportTreeAlgorithm::pinhead_mesh_intersect( +EigenMesh3D::hit_result SupportTreeBuildsteps::pinhead_mesh_intersect( const Vec3d &s, const Vec3d &dir, double r_pin, double r_back, double width) { static const size_t SAMPLES = 8; @@ -275,7 +275,7 @@ EigenMesh3D::hit_result SupportTreeAlgorithm::pinhead_mesh_intersect( return *mit; } -EigenMesh3D::hit_result SupportTreeAlgorithm::bridge_mesh_intersect( +EigenMesh3D::hit_result SupportTreeBuildsteps::bridge_mesh_intersect( const Vec3d &s, const Vec3d &dir, double r, bool ins_check) { static const size_t SAMPLES = 8; @@ -344,7 +344,7 @@ EigenMesh3D::hit_result SupportTreeAlgorithm::bridge_mesh_intersect( return *mit; } -bool SupportTreeAlgorithm::interconnect(const Pillar &pillar, +bool SupportTreeBuildsteps::interconnect(const Pillar &pillar, const Pillar &nextpillar) { // We need to get the starting point of the zig-zag pattern. We have to @@ -437,7 +437,7 @@ bool SupportTreeAlgorithm::interconnect(const Pillar &pillar, return was_connected; } -bool SupportTreeAlgorithm::connect_to_nearpillar(const Head &head, +bool SupportTreeBuildsteps::connect_to_nearpillar(const Head &head, long nearpillar_id) { auto nearpillar = [this, nearpillar_id]() { @@ -514,7 +514,7 @@ bool SupportTreeAlgorithm::connect_to_nearpillar(const Head &head, return true; } -bool SupportTreeAlgorithm::search_pillar_and_connect(const Head &head) +bool SupportTreeBuildsteps::search_pillar_and_connect(const Head &head) { PointIndex spindex = m_pillar_index.guarded_clone(); @@ -549,7 +549,7 @@ bool SupportTreeAlgorithm::search_pillar_and_connect(const Head &head) return nearest_id >= 0; } -void SupportTreeAlgorithm::create_ground_pillar(const Vec3d &jp, +void SupportTreeBuildsteps::create_ground_pillar(const Vec3d &jp, const Vec3d &sourcedir, double radius, long head_id) @@ -661,7 +661,7 @@ void SupportTreeAlgorithm::create_ground_pillar(const Vec3d &jp, m_pillar_index.guarded_insert(endp, unsigned(pillar_id)); } -void SupportTreeAlgorithm::filter() +void SupportTreeBuildsteps::filter() { // Get the points that are too close to each other and keep only the // first one @@ -806,7 +806,7 @@ void SupportTreeAlgorithm::filter() m_thr(); } -void SupportTreeAlgorithm::add_pinheads() +void SupportTreeBuildsteps::add_pinheads() { for (unsigned i : m_iheads) { m_thr(); @@ -822,7 +822,7 @@ void SupportTreeAlgorithm::add_pinheads() } } -void SupportTreeAlgorithm::classify() +void SupportTreeBuildsteps::classify() { // We should first get the heads that reach the ground directly PtIndices ground_head_indices; @@ -872,7 +872,7 @@ void SupportTreeAlgorithm::classify() m_cfg.max_bridges_on_pillar); } -void SupportTreeAlgorithm::routing_to_ground() +void SupportTreeBuildsteps::routing_to_ground() { const double pradius = m_cfg.head_back_radius_mm; @@ -946,7 +946,7 @@ void SupportTreeAlgorithm::routing_to_ground() } } -void SupportTreeAlgorithm::routing_to_model() +void SupportTreeBuildsteps::routing_to_model() { // We need to check if there is an easy way out to the bed surface. // If it can be routed there with a bridge shorter than @@ -1131,7 +1131,7 @@ void SupportTreeAlgorithm::routing_to_model() } } -void SupportTreeAlgorithm::interconnect_pillars() +void SupportTreeBuildsteps::interconnect_pillars() { // Now comes the algorithm that connects pillars with each other. // Ideally every pillar should be connected with at least one of its @@ -1337,7 +1337,7 @@ void SupportTreeAlgorithm::interconnect_pillars() } } -void SupportTreeAlgorithm::routing_headless() +void SupportTreeBuildsteps::routing_headless() { // For now we will just generate smaller headless sticks with a sharp // ending point that connects to the mesh surface. diff --git a/src/libslic3r/SLA/SLASupportTreeAlgorithm.hpp b/src/libslic3r/SLA/SLASupportTreeBuildsteps.hpp similarity index 96% rename from src/libslic3r/SLA/SLASupportTreeAlgorithm.hpp rename to src/libslic3r/SLA/SLASupportTreeBuildsteps.hpp index 716412a1c..b9f8db79d 100644 --- a/src/libslic3r/SLA/SLASupportTreeAlgorithm.hpp +++ b/src/libslic3r/SLA/SLASupportTreeBuildsteps.hpp @@ -142,7 +142,7 @@ IntegerOnly pairhash(I a, I b) return (DoubleI(g) << shift) + l; } -class SupportTreeAlgorithm { +class SupportTreeBuildsteps { const SupportConfig& m_cfg; const EigenMesh3D& m_mesh; const std::vector& m_support_pts; @@ -227,15 +227,9 @@ class SupportTreeAlgorithm { void create_ground_pillar(const Vec3d &jp, const Vec3d &sourcedir, double radius, - long head_id = ID_UNSET); - - SupportTreeAlgorithm(SupportTreeBuilder & builder, const SupportableMesh &sm); - + long head_id = ID_UNSET); public: - SupportTreeAlgorithm(const SupportTreeAlgorithm &) = delete; - SupportTreeAlgorithm(SupportTreeAlgorithm &&) = delete; - SupportTreeAlgorithm& operator=(const SupportTreeAlgorithm &) = delete; - SupportTreeAlgorithm& operator=(SupportTreeAlgorithm &&) = delete; + SupportTreeBuildsteps(SupportTreeBuilder & builder, const SupportableMesh &sm); // Now let's define the individual steps of the support generation algorithm diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 9462e766c..2a1ae74d7 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -1176,9 +1176,8 @@ void SLAPrint::process() { ClipperPolygon poly; - // We need to reverse if flpXY OR is_lefthanded is true but - // not if both are true which is a logical inequality (XOR) - bool needreverse = /*flpXY !=*/ is_lefthanded; + // We need to reverse if is_lefthanded is true but + bool needreverse = is_lefthanded; // should be a move poly.Contour.reserve(polygon.contour.size() + 1); @@ -1401,11 +1400,9 @@ void SLAPrint::process() SpinMutex slck; - auto orientation = get_printer_orientation(); - // procedure to process one height level. This will run in parallel auto lvlfn = - [this, &slck, &printer, increment, &dstatus, &pst, orientation] + [this, &slck, &printer, increment, &dstatus, &pst] (unsigned level_id) { if(canceled()) return; @@ -1416,7 +1413,7 @@ void SLAPrint::process() printer.begin_layer(level_id); for(const ClipperLib::Polygon& poly : printlayer.transformed_slices()) - printer.draw_polygon(poly, level_id, orientation); + printer.draw_polygon(poly, level_id); // Finish the layer for later saving it. printer.finish_layer(level_id); @@ -1644,7 +1641,6 @@ sla::RasterWriter & SLAPrint::init_printer() sla::Raster::Resolution res; sla::Raster::PixelDim pxdim; std::array mirror; - double gamma; double w = m_printer_config.display_width.getFloat(); double h = m_printer_config.display_height.getFloat(); @@ -1654,20 +1650,18 @@ sla::RasterWriter & SLAPrint::init_printer() mirror[X] = m_printer_config.display_mirror_x.getBool(); mirror[Y] = m_printer_config.display_mirror_y.getBool(); - if (get_printer_orientation() == sla::RasterWriter::roPortrait) { + auto orientation = get_printer_orientation(); + if (orientation == sla::Raster::roPortrait) { std::swap(w, h); std::swap(pw, ph); - - // XY flipping implicitly does an X mirror - mirror[X] = !mirror[X]; } res = sla::Raster::Resolution{pw, ph}; pxdim = sla::Raster::PixelDim{w / pw, h / ph}; - - gamma = m_printer_config.gamma_correction.getFloat(); - - m_printer.reset(new sla::RasterWriter(res, pxdim, mirror, gamma)); + sla::Raster::Trafo tr{orientation, mirror}; + tr.gamma = m_printer_config.gamma_correction.getFloat(); + + m_printer.reset(new sla::RasterWriter(res, pxdim, tr)); m_printer->set_config(m_full_print_config); return *m_printer; } diff --git a/src/libslic3r/SLAPrint.hpp b/src/libslic3r/SLAPrint.hpp index c4eefffd7..2dc2a9040 100644 --- a/src/libslic3r/SLAPrint.hpp +++ b/src/libslic3r/SLAPrint.hpp @@ -461,12 +461,11 @@ private: sla::RasterWriter &init_printer(); - inline sla::RasterWriter::Orientation get_printer_orientation() const + inline sla::Raster::Orientation get_printer_orientation() const { auto ro = m_printer_config.display_orientation.getInt(); - return ro == sla::RasterWriter::roPortrait ? - sla::RasterWriter::roPortrait : - sla::RasterWriter::roLandscape; + return ro == sla::Raster::roPortrait ? sla::Raster::roPortrait : + sla::Raster::roLandscape; } friend SLAPrintObject; diff --git a/tests/sla_print/CMakeLists.txt b/tests/sla_print/CMakeLists.txt index b1a6b6de7..ba289892d 100644 --- a/tests/sla_print/CMakeLists.txt +++ b/tests/sla_print/CMakeLists.txt @@ -1,4 +1,5 @@ add_executable(sla_print_tests sla_print_tests_main.cpp) target_link_libraries(sla_print_tests test_common libslic3r ${Boost_LIBRARIES} ${TBB_LIBRARIES} ${Boost_LIBRARIES}) -gtest_discover_tests(sla_print_tests TEST_PREFIX sla_print.) +add_test(sla_print_tests sla_print_tests) +#gtest_discover_tests(sla_print_tests TEST_PREFIX sla_print.) diff --git a/tests/sla_print/sla_print_tests_main.cpp b/tests/sla_print/sla_print_tests_main.cpp index 73e193f5c..8e78322ce 100644 --- a/tests/sla_print/sla_print_tests_main.cpp +++ b/tests/sla_print/sla_print_tests_main.cpp @@ -1,5 +1,8 @@ #include +// Debug +#include + #include #include "libslic3r/libslic3r.h" @@ -8,8 +11,9 @@ #include "libslic3r/TriangleMesh.hpp" #include "libslic3r/SLA/SLAPad.hpp" #include "libslic3r/SLA/SLASupportTreeBuilder.hpp" -#include "libslic3r/SLA/SLASupportTreeAlgorithm.hpp" +#include "libslic3r/SLA/SLASupportTreeBuildsteps.hpp" #include "libslic3r/SLA/SLAAutoSupports.hpp" +#include "libslic3r/SLA/SLARaster.hpp" #include "libslic3r/MTUtils.hpp" #include "libslic3r/SVG.hpp" @@ -86,7 +90,7 @@ void test_pad(const std::string & obj_filename, ASSERT_FALSE(out.model_contours.empty()); - // Create the pad geometry the model contours only + // Create the pad geometry for the model contours only Slic3r::sla::create_pad({}, out.model_contours, out.mesh, padcfg); check_validity(out.mesh); @@ -369,6 +373,180 @@ TEST(SLASupportGeneration, SupportsDoNotPierceModel) { test_support_model_collision(fname, supportcfg); } +TEST(SLARasterOutput, DefaultRasterShouldBeEmpty) { + sla::Raster raster; + ASSERT_TRUE(raster.empty()); +} + +TEST(SLARasterOutput, InitializedRasterShouldBeNONEmpty) { + // Default Prusa SL1 display parameters + sla::Raster::Resolution res{2560, 1440}; + sla::Raster::PixelDim pixdim{120. / res.width_px, 68. / res.height_px}; + + sla::Raster raster; + raster.reset(res, pixdim); + ASSERT_FALSE(raster.empty()); + ASSERT_EQ(raster.resolution().width_px, res.width_px); + ASSERT_EQ(raster.resolution().height_px, res.height_px); + ASSERT_DOUBLE_EQ(raster.pixel_dimensions().w_mm, pixdim.w_mm); + ASSERT_DOUBLE_EQ(raster.pixel_dimensions().h_mm, pixdim.h_mm); +} + +using TPixel = uint8_t; +static constexpr const TPixel FullWhite = 255; +static constexpr const TPixel FullBlack = 0; + +template constexpr int arraysize(const A (&)[N]) { return N; } + +static void check_raster_transformations(sla::Raster::Orientation o, + sla::Raster::TMirroring mirroring) +{ + double disp_w = 120., disp_h = 68.; + sla::Raster::Resolution res{2560, 1440}; + sla::Raster::PixelDim pixdim{disp_w / res.width_px, disp_h / res.height_px}; + + auto bb = BoundingBox({0, 0}, {scaled(disp_w), scaled(disp_h)}); + sla::Raster::Trafo trafo{o, mirroring}; + trafo.origin_x = bb.center().x(); + trafo.origin_y = bb.center().y(); + + sla::Raster raster{res, pixdim, trafo}; + + // create box of size 32x32 pixels (not 1x1 to avoid antialiasing errors) + coord_t pw = 32 * coord_t(std::ceil(scaled(pixdim.w_mm))); + coord_t ph = 32 * coord_t(std::ceil(scaled(pixdim.h_mm))); + ExPolygon box; + box.contour.points = {{-pw, -ph}, {pw, -ph}, {pw, ph}, {-pw, ph}}; + + double tr_x = scaled(20.), tr_y = tr_x; + + box.translate(tr_x, tr_y); + ExPolygon expected_box = box; + + // Now calculate the position of the translated box according to output + // trafo. + if (o == sla::Raster::Orientation::roPortrait) expected_box.rotate(PI / 2.); + + if (mirroring[X]) + for (auto &p : expected_box.contour.points) p.x() = -p.x(); + + if (mirroring[Y]) + for (auto &p : expected_box.contour.points) p.y() = -p.y(); + + raster.draw(box); + + Point expected_coords = expected_box.contour.bounding_box().center(); + double rx = unscaled(expected_coords.x() + bb.center().x()) / pixdim.w_mm; + double ry = unscaled(expected_coords.y() + bb.center().y()) / pixdim.h_mm; + auto w = size_t(std::floor(rx)); + auto h = res.height_px - size_t(std::floor(ry)); + + ASSERT_TRUE(w < res.width_px && h < res.height_px); + + auto px = raster.read_pixel(w, h); + + if (px != FullWhite) { + sla::PNGImage img; + std::fstream outf("out.png", std::ios::out); + + outf << img.serialize(raster); + } + + ASSERT_EQ(px, FullWhite); +} + +TEST(SLARasterOutput, MirroringShouldBeCorrect) { + sla::Raster::TMirroring mirrorings[] = {sla::Raster::NoMirror, + sla::Raster::MirrorX, + sla::Raster::MirrorY, + sla::Raster::MirrorXY}; + + sla::Raster::Orientation orientations[] = {sla::Raster::roLandscape, + sla::Raster::roPortrait}; + for (auto orientation : orientations) + for (auto &mirror : mirrorings) + check_raster_transformations(orientation, mirror); +} + +static ExPolygon square_with_hole(double v) +{ + ExPolygon poly; + coord_t V = scaled(v / 2.); + + poly.contour.points = {{-V, -V}, {V, -V}, {V, V}, {-V, V}}; + poly.holes.emplace_back(); + V = V / 2; + poly.holes.front().points = {{-V, V}, {V, V}, {V, -V}, {-V, -V}}; + return poly; +} + +static double pixel_area(TPixel px, const sla::Raster::PixelDim &pxdim) +{ + return (pxdim.h_mm * pxdim.w_mm) * px * 1. / (FullWhite - FullBlack); +} + +static double raster_white_area(const sla::Raster &raster) +{ + if (raster.empty()) return std::nan(""); + + auto res = raster.resolution(); + double a = 0; + + for (size_t x = 0; x < res.width_px; ++x) + for (size_t y = 0; y < res.height_px; ++y) { + auto px = raster.read_pixel(x, y); + a += pixel_area(px, raster.pixel_dimensions()); + } + + return a; +} + +static double predict_error(const ExPolygon &p, const sla::Raster::PixelDim &pd) +{ + auto lines = p.lines(); + double pix_err = pixel_area(FullWhite, pd) / 2.; + + // Worst case is when a line is parallel to the shorter axis of one pixel, + // when the line will be composed of the max number of pixels + double pix_l = std::min(pd.h_mm, pd.w_mm); + + double error = 0.; + for (auto &l : lines) + error += (unscaled(l.length()) / pix_l) * pix_err; + + return error; +} + +TEST(SLARasterOutput, RasterizedPolygonAreaShouldMatch) { + double disp_w = 120., disp_h = 68.; + sla::Raster::Resolution res{2560, 1440}; + sla::Raster::PixelDim pixdim{disp_w / res.width_px, disp_h / res.height_px}; + + sla::Raster raster{res, pixdim}; + auto bb = BoundingBox({0, 0}, {scaled(disp_w), scaled(disp_h)}); + + ExPolygon poly = square_with_hole(10.); + poly.translate(bb.center().x(), bb.center().y()); + raster.draw(poly); + + double a = poly.area() / (scaled(1.) * scaled(1.)); + double ra = raster_white_area(raster); + double diff = std::abs(a - ra); + + ASSERT_LE(diff, predict_error(poly, pixdim)); + + raster.clear(); + poly = square_with_hole(60.); + poly.translate(bb.center().x(), bb.center().y()); + raster.draw(poly); + + a = poly.area() / (scaled(1.) * scaled(1.)); + ra = raster_white_area(raster); + diff = std::abs(a - ra); + + ASSERT_LE(diff, predict_error(poly, pixdim)); +} + int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); From 564eddd99d6368396dca37bbbf9c5ef7a3d3a958 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Tue, 1 Oct 2019 17:17:08 +0200 Subject: [PATCH 19/53] FDM Print refactoring: Layer newly remembers bounding boxes of slices, the bounding boxes are used by G-code generator & newly the support generator. Slices are stored as ExPolygons, not ExPolygonCollection. --- src/libslic3r/ExPolygonCollection.hpp | 6 +- src/libslic3r/GCode.cpp | 21 ++-- src/libslic3r/Layer.cpp | 8 +- src/libslic3r/Layer.hpp | 3 +- src/libslic3r/LayerRegion.cpp | 2 +- src/libslic3r/PerimeterGenerator.hpp | 5 +- src/libslic3r/Print.cpp | 15 +-- src/libslic3r/Print.hpp | 2 - src/libslic3r/PrintObject.cpp | 133 +++++--------------------- src/libslic3r/SupportMaterial.cpp | 30 +++--- xs/xsp/Layer.xsp | 9 +- xs/xsp/PerimeterGenerator.xsp | 2 +- 12 files changed, 70 insertions(+), 166 deletions(-) diff --git a/src/libslic3r/ExPolygonCollection.hpp b/src/libslic3r/ExPolygonCollection.hpp index 4c181cd6a..099a6a112 100644 --- a/src/libslic3r/ExPolygonCollection.hpp +++ b/src/libslic3r/ExPolygonCollection.hpp @@ -13,12 +13,12 @@ typedef std::vector ExPolygonCollections; class ExPolygonCollection { - public: +public: ExPolygons expolygons; - ExPolygonCollection() {}; + ExPolygonCollection() {} ExPolygonCollection(const ExPolygon &expolygon); - ExPolygonCollection(const ExPolygons &expolygons) : expolygons(expolygons) {}; + ExPolygonCollection(const ExPolygons &expolygons) : expolygons(expolygons) {} operator Points() const; operator Polygons() const; operator ExPolygons&(); diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index efcf15ad5..65264c9cd 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -117,11 +117,11 @@ Polygons AvoidCrossingPerimeters::collect_contours_all_layers(const PrintObjectP const Layer* layer1 = object->layers()[i * 2]; const Layer* layer2 = object->layers()[i * 2 + 1]; Polygons polys; - polys.reserve(layer1->slices.expolygons.size() + layer2->slices.expolygons.size()); - for (const ExPolygon &expoly : layer1->slices.expolygons) + polys.reserve(layer1->slices.size() + layer2->slices.size()); + for (const ExPolygon &expoly : layer1->slices) //FIXME no holes? polys.emplace_back(expoly.contour); - for (const ExPolygon &expoly : layer2->slices.expolygons) + for (const ExPolygon &expoly : layer2->slices) //FIXME no holes? polys.emplace_back(expoly.contour); polygons_per_layer[i] = union_(polys); @@ -130,8 +130,8 @@ Polygons AvoidCrossingPerimeters::collect_contours_all_layers(const PrintObjectP if (object->layers().size() & 1) { const Layer *layer = object->layers().back(); Polygons polys; - polys.reserve(layer->slices.expolygons.size()); - for (const ExPolygon &expoly : layer->slices.expolygons) + polys.reserve(layer->slices.size()); + for (const ExPolygon &expoly : layer->slices) //FIXME no holes? polys.emplace_back(expoly.contour); polygons_per_layer.back() = union_(polys); @@ -1802,11 +1802,8 @@ void GCode::process_layer( // - for each island, we extrude perimeters first, unless user set the infill_first // option // (Still, we have to keep track of regions because we need to apply their config) - size_t n_slices = layer.slices.expolygons.size(); - std::vector layer_surface_bboxes; - layer_surface_bboxes.reserve(n_slices); - for (const ExPolygon &expoly : layer.slices.expolygons) - layer_surface_bboxes.push_back(get_extents(expoly.contour)); + size_t n_slices = layer.slices.size(); + const std::vector &layer_surface_bboxes = layer.slices_bboxes; // Traverse the slices in an increasing order of bounding box size, so that the islands inside another islands are tested first, // so we can just test a point inside ExPolygon::contour and we may skip testing the holes. std::vector slices_test_order; @@ -1822,7 +1819,7 @@ void GCode::process_layer( const BoundingBox &bbox = layer_surface_bboxes[i]; return point(0) >= bbox.min(0) && point(0) < bbox.max(0) && point(1) >= bbox.min(1) && point(1) < bbox.max(1) && - layer.slices.expolygons[i].contour.contains(point); + layer.slices[i].contour.contains(point); }; for (size_t region_id = 0; region_id < print.regions().size(); ++ region_id) { @@ -2418,7 +2415,7 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou static int iRun = 0; SVG svg(debug_out_path("GCode_extrude_loop-%d.svg", iRun ++)); if (m_layer->lower_layer != NULL) - svg.draw(m_layer->lower_layer->slices.expolygons); + svg.draw(m_layer->lower_layer->slices); for (size_t i = 0; i < loop.paths.size(); ++ i) svg.draw(loop.paths[i].as_polyline(), "red"); Polylines polylines; diff --git a/src/libslic3r/Layer.cpp b/src/libslic3r/Layer.cpp index 94f114a26..74deabf3e 100644 --- a/src/libslic3r/Layer.cpp +++ b/src/libslic3r/Layer.cpp @@ -47,8 +47,8 @@ void Layer::make_slices() slices = union_ex(slices_p); } - this->slices.expolygons.clear(); - this->slices.expolygons.reserve(slices.size()); + this->slices.clear(); + this->slices.reserve(slices.size()); // prepare ordering points Points ordering_points; @@ -61,7 +61,7 @@ void Layer::make_slices() // populate slices vector for (size_t i : order) - this->slices.expolygons.push_back(std::move(slices[i])); + this->slices.push_back(std::move(slices[i])); } // Merge typed slices into untyped slices. This method is used to revert the effects of detect_surfaces_type() called for posPrepareInfill. @@ -70,7 +70,7 @@ void Layer::merge_slices() if (m_regions.size() == 1) { // Optimization, also more robust. Don't merge classified pieces of layerm->slices, // but use the non-split islands of a layer. For a single region print, these shall be equal. - m_regions.front()->slices.set(this->slices.expolygons, stInternal); + m_regions.front()->slices.set(this->slices, stInternal); } else { for (LayerRegion *layerm : m_regions) // without safety offset, artifacts are generated (GH #2494) diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp index 539ae3925..9a4297ce5 100644 --- a/src/libslic3r/Layer.hpp +++ b/src/libslic3r/Layer.hpp @@ -110,7 +110,8 @@ public: // also known as 'islands' (all regions and surface types are merged here) // The slices are chained by the shortest traverse distance and this traversal // order will be recovered by the G-code generator. - ExPolygonCollection slices; + ExPolygons slices; + std::vector slices_bboxes; size_t region_count() const { return m_regions.size(); } const LayerRegion* get_region(int idx) const { return m_regions.at(idx); } diff --git a/src/libslic3r/LayerRegion.cpp b/src/libslic3r/LayerRegion.cpp index d13549bf4..0ff59d35f 100644 --- a/src/libslic3r/LayerRegion.cpp +++ b/src/libslic3r/LayerRegion.cpp @@ -140,7 +140,7 @@ void LayerRegion::process_external_surfaces(const Layer *lower_layer, const Poly // Remove voids from fill_boundaries, that are not supported by the layer below. if (lower_layer_covered == nullptr) { lower_layer_covered = &lower_layer_covered_tmp; - lower_layer_covered_tmp = to_polygons(lower_layer->slices.expolygons); + lower_layer_covered_tmp = to_polygons(lower_layer->slices); } if (! lower_layer_covered->empty()) voids = diff(voids, *lower_layer_covered); diff --git a/src/libslic3r/PerimeterGenerator.hpp b/src/libslic3r/PerimeterGenerator.hpp index 8cd71e697..c0d9e65a7 100644 --- a/src/libslic3r/PerimeterGenerator.hpp +++ b/src/libslic3r/PerimeterGenerator.hpp @@ -3,7 +3,6 @@ #include "libslic3r.h" #include -#include "ExPolygonCollection.hpp" #include "Flow.hpp" #include "Polygon.hpp" #include "PrintConfig.hpp" @@ -15,7 +14,7 @@ class PerimeterGenerator { public: // Inputs: const SurfaceCollection *slices; - const ExPolygonCollection *lower_slices; + const ExPolygons *lower_slices; double layer_height; int layer_id; Flow perimeter_flow; @@ -45,7 +44,7 @@ public: ExtrusionEntityCollection* gap_fill, // Infills without the gap fills SurfaceCollection* fill_surfaces) - : slices(slices), lower_slices(NULL), layer_height(layer_height), + : slices(slices), lower_slices(nullptr), layer_height(layer_height), layer_id(-1), perimeter_flow(flow), ext_perimeter_flow(flow), overhang_flow(flow), solid_infill_flow(flow), config(config), object_config(object_config), print_config(print_config), diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index a5800b007..245b79e80 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -328,17 +328,6 @@ unsigned int Print::num_object_instances() const return instances; } -void Print::_simplify_slices(double distance) -{ - for (PrintObject *object : m_objects) { - for (Layer *layer : object->m_layers) { - layer->slices.simplify(distance); - for (LayerRegion *layerm : layer->regions()) - layerm->slices.simplify(distance); - } - } -} - double Print::max_allowed_layer_height() const { double nozzle_diameter_max = 0.; @@ -1593,7 +1582,7 @@ void Print::_make_skirt() for (const Layer *layer : object->m_layers) { if (layer->print_z > skirt_height_z) break; - for (const ExPolygon &expoly : layer->slices.expolygons) + for (const ExPolygon &expoly : layer->slices) // Collect the outer contour points only, ignore holes for the calculation of the convex hull. append(object_points, expoly.contour.points); } @@ -1704,7 +1693,7 @@ void Print::_make_brim() Polygons islands; for (PrintObject *object : m_objects) { Polygons object_islands; - for (ExPolygon &expoly : object->m_layers.front()->slices.expolygons) + for (ExPolygon &expoly : object->m_layers.front()->slices) object_islands.push_back(expoly.contour); if (! object->support_layers().empty()) object->support_layers().front()->support_fills.polygons_covered_by_spacing(object_islands, float(SCALED_EPSILON)); diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index 5cb13039c..ce616a150 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -180,7 +180,6 @@ private: void _slice(const std::vector &layer_height_profile); std::string _fix_slicing_errors(); void _simplify_slices(double distance); - void _make_perimeters(); bool has_support_material() const; void detect_surfaces_type(); void process_external_surfaces(); @@ -383,7 +382,6 @@ private: void _make_skirt(); void _make_brim(); void _make_wipe_tower(); - void _simplify_slices(double distance); // Declared here to have access to Model / ModelObject / ModelInstance static void model_volume_list_update_supports(ModelObject &model_object_dst, const ModelObject &model_object_src); diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 575ae60e3..d87e63c27 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -117,6 +117,19 @@ void PrintObject::slice() // Simplify slices if required. if (m_print->config().resolution) this->_simplify_slices(scale_(this->print()->config().resolution)); + // Update bounding boxes + tbb::parallel_for( + tbb::blocked_range(0, m_layers.size()), + [this](const tbb::blocked_range& range) { + for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++ layer_idx) { + m_print->throw_if_canceled(); + Layer &layer = *m_layers[layer_idx]; + layer.slices_bboxes.clear(); + layer.slices_bboxes.reserve(layer.slices.size()); + for (const ExPolygon &expoly : layer.slices) + layer.slices_bboxes.emplace_back(get_extents(expoly)); + } + }); if (m_layers.empty()) throw std::runtime_error("No layers were detected. You might want to repair your STL file(s) or check their size or thickness and retry.\n"); this->set_done(posSlice); @@ -865,7 +878,7 @@ void PrintObject::process_external_surfaces() // Shrink the holes, let the layer above expand slightly inside the unsupported areas. polygons_append(voids, offset(surface.expolygon, unsupported_width)); } - surfaces_covered[layer_idx] = diff(to_polygons(this->m_layers[layer_idx]->slices.expolygons), voids); + surfaces_covered[layer_idx] = diff(to_polygons(this->m_layers[layer_idx]->slices), voids); } } ); @@ -975,8 +988,8 @@ void PrintObject::discover_vertical_shells() polygons_append(cache.holes, offset(offset_ex(layer.slices, 0.3f * perimeter_min_spacing), - perimeter_offset - 0.3f * perimeter_min_spacing)); #ifdef SLIC3R_DEBUG_SLICE_PROCESSING { - Slic3r::SVG svg(debug_out_path("discover_vertical_shells-extra-holes-%d.svg", debug_idx), get_extents(layer.slices.expolygons)); - svg.draw(layer.slices.expolygons, "blue"); + Slic3r::SVG svg(debug_out_path("discover_vertical_shells-extra-holes-%d.svg", debug_idx), get_extents(layer.slices)); + svg.draw(layer.slices, "blue"); svg.draw(union_ex(cache.holes), "red"); svg.draw_outline(union_ex(cache.holes), "black", "blue", scale_(0.05)); svg.Close(); @@ -2141,7 +2154,7 @@ std::string PrintObject::_fix_slicing_errors() BOOST_LOG_TRIVIAL(debug) << "Slicing objects - fixing slicing errors in parallel - end"; // remove empty layers from bottom - while (! m_layers.empty() && m_layers.front()->slices.expolygons.empty()) { + while (! m_layers.empty() && m_layers.front()->slices.empty()) { delete m_layers.front(); m_layers.erase(m_layers.begin()); m_layers.front()->lower_layer = nullptr; @@ -2168,115 +2181,17 @@ void PrintObject::_simplify_slices(double distance) Layer *layer = m_layers[layer_idx]; for (size_t region_idx = 0; region_idx < layer->m_regions.size(); ++ region_idx) layer->m_regions[region_idx]->slices.simplify(distance); - layer->slices.simplify(distance); + { + ExPolygons simplified; + for (const ExPolygon& expoly : layer->slices) + expoly.simplify(distance, &simplified); + layer->slices = std::move(simplified); + } } }); BOOST_LOG_TRIVIAL(debug) << "Slicing objects - siplifying slices in parallel - end"; } -void PrintObject::_make_perimeters() -{ - if (! this->set_started(posPerimeters)) - return; - - BOOST_LOG_TRIVIAL(info) << "Generating perimeters..." << log_memory_info(); - - // merge slices if they were split into types - if (this->typed_slices) { - for (Layer *layer : m_layers) - layer->merge_slices(); - this->typed_slices = false; - this->invalidate_step(posPrepareInfill); - } - - // compare each layer to the one below, and mark those slices needing - // one additional inner perimeter, like the top of domed objects- - - // this algorithm makes sure that at least one perimeter is overlapping - // but we don't generate any extra perimeter if fill density is zero, as they would be floating - // inside the object - infill_only_where_needed should be the method of choice for printing - // hollow objects - for (size_t region_id = 0; region_id < this->region_volumes.size(); ++ region_id) { - const PrintRegion ®ion = *m_print->regions()[region_id]; - if (! region.config().extra_perimeters || region.config().perimeters == 0 || region.config().fill_density == 0 || this->layer_count() < 2) - continue; - - BOOST_LOG_TRIVIAL(debug) << "Generating extra perimeters for region " << region_id << " in parallel - start"; - tbb::parallel_for( - tbb::blocked_range(0, m_layers.size() - 1), - [this, ®ion, region_id](const tbb::blocked_range& range) { - for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++ layer_idx) { - LayerRegion &layerm = *m_layers[layer_idx]->regions()[region_id]; - const LayerRegion &upper_layerm = *m_layers[layer_idx+1]->regions()[region_id]; - const Polygons upper_layerm_polygons = upper_layerm.slices; - // Filter upper layer polygons in intersection_ppl by their bounding boxes? - // my $upper_layerm_poly_bboxes= [ map $_->bounding_box, @{$upper_layerm_polygons} ]; - const double total_loop_length = total_length(upper_layerm_polygons); - const coord_t perimeter_spacing = layerm.flow(frPerimeter).scaled_spacing(); - const Flow ext_perimeter_flow = layerm.flow(frExternalPerimeter); - const coord_t ext_perimeter_width = ext_perimeter_flow.scaled_width(); - const coord_t ext_perimeter_spacing = ext_perimeter_flow.scaled_spacing(); - - for (Surface &slice : layerm.slices.surfaces) { - for (;;) { - // compute the total thickness of perimeters - const coord_t perimeters_thickness = ext_perimeter_width/2 + ext_perimeter_spacing/2 - + (region.config().perimeters-1 + slice.extra_perimeters) * perimeter_spacing; - // define a critical area where we don't want the upper slice to fall into - // (it should either lay over our perimeters or outside this area) - const coord_t critical_area_depth = coord_t(perimeter_spacing * 1.5); - const Polygons critical_area = diff( - offset(slice.expolygon, float(- perimeters_thickness)), - offset(slice.expolygon, float(- perimeters_thickness - critical_area_depth)) - ); - // check whether a portion of the upper slices falls inside the critical area - const Polylines intersection = intersection_pl(to_polylines(upper_layerm_polygons), critical_area); - // only add an additional loop if at least 30% of the slice loop would benefit from it - if (total_length(intersection) <= total_loop_length*0.3) - break; - /* - if (0) { - require "Slic3r/SVG.pm"; - Slic3r::SVG::output( - "extra.svg", - no_arrows => 1, - expolygons => union_ex($critical_area), - polylines => [ map $_->split_at_first_point, map $_->p, @{$upper_layerm->slices} ], - ); - } - */ - ++ slice.extra_perimeters; - } - #ifdef DEBUG - if (slice.extra_perimeters > 0) - printf(" adding %d more perimeter(s) at layer %zu\n", slice.extra_perimeters, layer_idx); - #endif - } - } - }); - BOOST_LOG_TRIVIAL(debug) << "Generating extra perimeters for region " << region_id << " in parallel - end"; - } - - BOOST_LOG_TRIVIAL(debug) << "Generating perimeters in parallel - start"; - tbb::parallel_for( - tbb::blocked_range(0, m_layers.size()), - [this](const tbb::blocked_range& range) { - for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++ layer_idx) - m_layers[layer_idx]->make_perimeters(); - } - ); - BOOST_LOG_TRIVIAL(debug) << "Generating perimeters in parallel - end"; - - /* - simplify slices (both layer and region slices), - we only need the max resolution for perimeters - ### This makes this method not-idempotent, so we keep it disabled for now. - ###$self->_simplify_slices(&Slic3r::SCALED_RESOLUTION); - */ - - this->set_done(posPerimeters); -} - // Only active if config->infill_only_where_needed. This step trims the sparse infill, // so it acts as an internal support. It maintains all other infill types intact. // Here the internal surfaces and perimeters have to be supported by the sparse infill. @@ -2302,7 +2217,7 @@ void PrintObject::clip_fill_surfaces() // Detect things that we need to support. // Cummulative slices. Polygons slices; - polygons_append(slices, layer->slices.expolygons); + polygons_append(slices, layer->slices); // Cummulative fill surfaces. Polygons fill_surfaces; // Solid surfaces to be supported. diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index a6648f108..179b35f59 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -445,8 +445,8 @@ Polygons collect_region_slices_by_type(const Layer &layer, SurfaceType surface_t Polygons collect_slices_outer(const Layer &layer) { Polygons out; - out.reserve(out.size() + layer.slices.expolygons.size()); - for (const ExPolygon &expoly : layer.slices.expolygons) + out.reserve(out.size() + layer.slices.size()); + for (const ExPolygon &expoly : layer.slices) out.emplace_back(expoly.contour); return out; } @@ -907,9 +907,13 @@ namespace SupportMaterialInternal { polyline.extend_start(fw); polyline.extend_end(fw); // Is the straight perimeter segment supported at both sides? - if (lower_layer.slices.contains(polyline.first_point()) && lower_layer.slices.contains(polyline.last_point())) - // Offset a polyline into a thick line. - polygons_append(bridges, offset(polyline, 0.5f * w + 10.f)); + for (size_t i = 0; i < lower_layer.slices.size(); ++ i) + if (lower_layer.slices_bboxes[i].contains(polyline.first_point()) && lower_layer.slices_bboxes[i].contains(polyline.last_point()) && + lower_layer.slices[i].contains(polyline.first_point()) && lower_layer.slices[i].contains(polyline.last_point())) { + // Offset a polyline into a thick line. + polygons_append(bridges, offset(polyline, 0.5f * w + 10.f)); + break; + } } bridges = union_(bridges); } @@ -994,7 +998,7 @@ PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::top_contact_ // inflate the polygons over and over. Polygons &covered = buildplate_covered[layer_id]; covered = buildplate_covered[layer_id - 1]; - polygons_append(covered, offset(lower_layer.slices.expolygons, scale_(0.01))); + polygons_append(covered, offset(lower_layer.slices, scale_(0.01))); covered = union_(covered, false); // don't apply the safety offset. } } @@ -1023,7 +1027,7 @@ PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::top_contact_ Polygons contact_polygons; Polygons slices_margin_cached; float slices_margin_cached_offset = -1.; - Polygons lower_layer_polygons = (layer_id == 0) ? Polygons() : to_polygons(object.layers()[layer_id-1]->slices.expolygons); + Polygons lower_layer_polygons = (layer_id == 0) ? Polygons() : to_polygons(object.layers()[layer_id-1]->slices); // Offset of the lower layer, to trim the support polygons with to calculate dense supports. float no_interface_offset = 0.f; if (layer_id == 0) { @@ -1162,7 +1166,7 @@ PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::top_contact_ slices_margin_cached_offset = slices_margin_offset; slices_margin_cached = (slices_margin_offset == 0.f) ? lower_layer_polygons : - offset2(to_polygons(lower_layer.slices.expolygons), - no_interface_offset * 0.5f, slices_margin_offset + no_interface_offset * 0.5f, SUPPORT_SURFACES_OFFSET_PARAMETERS); + offset2(to_polygons(lower_layer.slices), - no_interface_offset * 0.5f, slices_margin_offset + no_interface_offset * 0.5f, SUPPORT_SURFACES_OFFSET_PARAMETERS); if (! buildplate_covered.empty()) { // Trim the inflated contact surfaces by the top surfaces as well. polygons_append(slices_margin_cached, buildplate_covered[layer_id]); @@ -1468,7 +1472,7 @@ PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::bottom_conta svg.draw(union_ex(top, false), "blue", 0.5f); svg.draw(union_ex(projection_raw, true), "red", 0.5f); svg.draw_outline(union_ex(projection_raw, true), "red", "blue", scale_(0.1f)); - svg.draw(layer.slices.expolygons, "green", 0.5f); + svg.draw(layer.slices, "green", 0.5f); } #endif /* SLIC3R_DEBUG */ @@ -1568,8 +1572,8 @@ PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::bottom_conta Polygons &layer_support_area = layer_support_areas[layer_id]; task_group.run([this, &projection, &projection_raw, &layer, &layer_support_area, layer_id] { // Remove the areas that touched from the projection that will continue on next, lower, top surfaces. - // Polygons trimming = union_(to_polygons(layer.slices.expolygons), touching, true); - Polygons trimming = offset(layer.slices.expolygons, float(SCALED_EPSILON)); + // Polygons trimming = union_(to_polygons(layer.slices), touching, true); + Polygons trimming = offset(layer.slices, float(SCALED_EPSILON)); projection = diff(projection_raw, trimming, false); #ifdef SLIC3R_DEBUG { @@ -2101,7 +2105,7 @@ void PrintObjectSupportMaterial::trim_support_layers_by_object( const Layer &object_layer = *object.layers()[i]; if (object_layer.print_z - object_layer.height > support_layer.print_z + gap_extra_above - EPSILON) break; - polygons_append(polygons_trimming, offset(object_layer.slices.expolygons, gap_xy_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS)); + polygons_append(polygons_trimming, offset(object_layer.slices, gap_xy_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS)); } if (! m_slicing_params.soluble_interface) { // Collect all bottom surfaces, which will be extruded with a bridging flow. @@ -2214,7 +2218,7 @@ PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::generate_raf // Expand the bases of the support columns in the 1st layer. columns_base->polygons = diff( offset(columns_base->polygons, inflate_factor_1st_layer), - offset(m_object->layers().front()->slices.expolygons, (float)scale_(m_gap_xy), SUPPORT_SURFACES_OFFSET_PARAMETERS)); + offset(m_object->layers().front()->slices, (float)scale_(m_gap_xy), SUPPORT_SURFACES_OFFSET_PARAMETERS)); if (contacts != nullptr) columns_base->polygons = diff(columns_base->polygons, interface_polygons); } diff --git a/xs/xsp/Layer.xsp b/xs/xsp/Layer.xsp index fc94d5115..6f3164707 100644 --- a/xs/xsp/Layer.xsp +++ b/xs/xsp/Layer.xsp @@ -3,6 +3,7 @@ %{ #include #include "libslic3r/Layer.hpp" +#include "libslic3r/ExPolygonCollection.hpp" %} %name{Slic3r::Layer::Region} class LayerRegion { @@ -59,8 +60,8 @@ Ref get_region(int idx); Ref add_region(PrintRegion* print_region); - Ref slices() - %code%{ RETVAL = &THIS->slices; %}; + ExPolygonCollection* slices() + %code%{ RETVAL = new ExPolygonCollection(THIS->slices); %}; int ptr() %code%{ RETVAL = (int)(intptr_t)THIS; %}; @@ -108,8 +109,8 @@ Ref get_region(int idx); Ref add_region(PrintRegion* print_region); - Ref slices() - %code%{ RETVAL = &THIS->slices; %}; + ExPolygonCollection* slices() + %code%{ RETVAL = new ExPolygonCollection(THIS->slices); %}; void export_region_slices_to_svg(const char *path); void export_region_fill_surfaces_to_svg(const char *path); diff --git a/xs/xsp/PerimeterGenerator.xsp b/xs/xsp/PerimeterGenerator.xsp index 2e8213795..07059de61 100644 --- a/xs/xsp/PerimeterGenerator.xsp +++ b/xs/xsp/PerimeterGenerator.xsp @@ -19,7 +19,7 @@ ~PerimeterGenerator(); void set_lower_slices(ExPolygonCollection* lower_slices) - %code{% THIS->lower_slices = lower_slices; %}; + %code{% THIS->lower_slices = &lower_slices->expolygons; %}; void set_layer_id(int layer_id) %code{% THIS->layer_id = layer_id; %}; void set_perimeter_flow(Flow* flow) From d7ebc4de5baca66df1820627222a804caa2568df Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 1 Oct 2019 18:19:28 +0200 Subject: [PATCH 20/53] Added color for extruder --- src/slic3r/GUI/GUI_ObjectList.cpp | 47 ++---- src/slic3r/GUI/GUI_ObjectList.hpp | 2 +- src/slic3r/GUI/Plater.cpp | 6 +- src/slic3r/GUI/wxExtensions.cpp | 242 +++++++++++++++++++++--------- src/slic3r/GUI/wxExtensions.hpp | 37 ++--- 5 files changed, 208 insertions(+), 126 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 19dedc7b0..7d650dcd1 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -267,7 +267,8 @@ void ObjectList::create_objects_ctrl() wxALIGN_CENTER_HORIZONTAL, wxDATAVIEW_COL_RESIZABLE); // column Extruder of the view control: - AppendColumn(create_objects_list_extruder_column(4)); + AppendColumn(new wxDataViewColumn(_(L("Extruder")), new BitmapChoiceRenderer(), + colExtruder, 8*em, wxALIGN_CENTER_HORIZONTAL, wxDATAVIEW_COL_RESIZABLE)); // column ItemEditing of the view control: AppendBitmapColumn(_(L("Editing")), colEditing, wxDATAVIEW_CELL_INERT, 3*em, @@ -434,19 +435,6 @@ DynamicPrintConfig& ObjectList::get_item_config(const wxDataViewItem& item) cons (*m_objects)[obj_idx]->config; } -wxDataViewColumn* ObjectList::create_objects_list_extruder_column(size_t extruders_count) -{ - wxArrayString choices; - choices.Add(_(L("default"))); - for (int i = 1; i <= extruders_count; ++i) - choices.Add(wxString::Format("%d", i)); - wxDataViewChoiceRenderer *c = - new wxDataViewChoiceRenderer(choices, wxDATAVIEW_CELL_EDITABLE, wxALIGN_CENTER_HORIZONTAL); - wxDataViewColumn* column = new wxDataViewColumn(_(L("Extruder")), c, colExtruder, - 8*wxGetApp().em_unit()/*80*/, wxALIGN_CENTER_HORIZONTAL, wxDATAVIEW_COL_RESIZABLE); - return column; -} - void ObjectList::update_extruder_values_for_items(const size_t max_extruder) { for (size_t i = 0; i < m_objects->size(); ++i) @@ -462,7 +450,7 @@ void ObjectList::update_extruder_values_for_items(const size_t max_extruder) else extruder = wxString::Format("%d", object->config.option("extruder")->value); - m_objects_model->SetValue(extruder, item, colExtruder); + m_objects_model->SetExtruder(extruder, item); if (object->volumes.size() > 1) { for (size_t id = 0; id < object->volumes.size(); id++) { @@ -474,7 +462,7 @@ void ObjectList::update_extruder_values_for_items(const size_t max_extruder) else extruder = wxString::Format("%d", object->volumes[id]->config.option("extruder")->value); - m_objects_model->SetValue(extruder, item, colExtruder); + m_objects_model->SetExtruder(extruder, item); } } } @@ -486,19 +474,13 @@ void ObjectList::update_objects_list_extruder_column(size_t extruders_count) if (printer_technology() == ptSLA) extruders_count = 1; - wxDataViewChoiceRenderer* ch_render = dynamic_cast(GetColumn(colExtruder)->GetRenderer()); - if (ch_render->GetChoices().GetCount() - 1 == extruders_count) - return; - m_prevent_update_extruder_in_config = true; if (m_objects && extruders_count > 1) update_extruder_values_for_items(extruders_count); - // delete old extruder column - DeleteColumn(GetColumn(colExtruder)); - // insert new created extruder column - InsertColumn(colExtruder, create_objects_list_extruder_column(extruders_count)); + update_extruder_colors(); + // set show/hide for this column set_extruder_column_hidden(extruders_count <= 1); //a workaround for a wrong last column width updating under OSX @@ -507,6 +489,11 @@ void ObjectList::update_objects_list_extruder_column(size_t extruders_count) m_prevent_update_extruder_in_config = false; } +void ObjectList::update_extruder_colors() +{ + m_objects_model->UpdateColumValues(colExtruder); +} + void ObjectList::set_extruder_column_hidden(const bool hide) const { GetColumn(colExtruder)->SetHidden(hide); @@ -535,14 +522,10 @@ void ObjectList::update_extruder_in_config(const wxDataViewItem& item) m_config = &get_item_config(item); } - wxVariant variant; - m_objects_model->GetValue(variant, item, colExtruder); - const wxString selection = variant.GetString(); - - if (!m_config || selection.empty()) + if (!m_config) return; - const int extruder = /*selection.size() > 1 ? 0 : */atoi(selection.c_str()); + const int extruder = m_objects_model->GetExtruderNumber(item); m_config->set_key_value("extruder", new ConfigOptionInt(extruder)); // update scene @@ -2547,7 +2530,7 @@ void ObjectList::delete_from_model_and_list(const std::vector& it (*m_objects)[item->obj_idx]->config.has("extruder")) { const wxString extruder = wxString::Format("%d", (*m_objects)[item->obj_idx]->config.option("extruder")->value); - m_objects_model->SetValue(extruder, m_objects_model->GetItemById(item->obj_idx), colExtruder); + m_objects_model->SetExtruder(extruder, m_objects_model->GetItemById(item->obj_idx)); } wxGetApp().plater()->canvas3D()->ensure_on_bed(item->obj_idx); } @@ -3822,7 +3805,7 @@ void ObjectList::set_extruder_for_selected_items(const int extruder) const /* We can change extruder for Object/Volume only. * So, if Instance is selected, get its Object item and change it */ - m_objects_model->SetValue(extruder_str, type & itInstance ? m_objects_model->GetTopParent(item) : item, colExtruder); + m_objects_model->SetExtruder(extruder_str, type & itInstance ? m_objects_model->GetTopParent(item) : item); const int obj_idx = type & itObject ? m_objects_model->GetIdByItem(item) : m_objects_model->GetIdByItem(m_objects_model->GetTopParent(item)); diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index 4dd618a90..b89d8943d 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -183,8 +183,8 @@ public: void create_objects_ctrl(); void create_popup_menus(); - wxDataViewColumn* create_objects_list_extruder_column(size_t extruders_count); void update_objects_list_extruder_column(size_t extruders_count); + void update_extruder_colors(); // show/hide "Extruder" column for Objects List void set_extruder_column_hidden(const bool hide) const; // update extruder in current config diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 53287eedf..baf84befc 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -4785,6 +4785,7 @@ void Plater::on_config_change(const DynamicPrintConfig &config) filament_colors.push_back(filaments.find_preset(filament_preset, true)->config.opt_string("filament_colour", (unsigned)0)); p->config->option(opt_key)->values = filament_colors; + p->sidebar->obj_list()->update_extruder_colors(); continue; } } @@ -4810,6 +4811,7 @@ void Plater::on_config_change(const DynamicPrintConfig &config) else if(opt_key == "extruder_colour") { update_scheduled = true; p->preview->set_number_extruders(p->config->option(opt_key)->values.size()); + p->sidebar->obj_list()->update_extruder_colors(); } else if(opt_key == "max_print_height") { update_scheduled = true; } @@ -4858,8 +4860,10 @@ void Plater::force_filament_colors_update() } } - if (update_scheduled) + if (update_scheduled) { update(); + p->sidebar->obj_list()->update_extruder_colors(); + } if (p->main_frame->is_loaded()) this->p->schedule_background_process(); diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 8e4e3520a..b692d1cae 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -447,6 +447,47 @@ wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name_in, return *bmp; } + +Slic3r::GUI::BitmapCache* m_bitmap_cache = nullptr; +static std::vector get_extruder_color_icons() +{ + // Create the bitmap with color bars. + std::vector bmps; + std::vector colors = Slic3r::GUI::wxGetApp().plater()->get_extruder_colors_from_plater_config(); + + unsigned char rgb[3]; + + /* It's supposed that standard size of an icon is 36px*16px for 100% scaled display. + * So set sizes for solid_colored icons used for filament preset + * and scale them in respect to em_unit value + */ + const double em = Slic3r::GUI::wxGetApp().em_unit(); + const int icon_width = lround(3.2 * em); + const int icon_height = lround(1.6 * em); + + for (const std::string& color : colors) + { + wxBitmap* bitmap = m_bitmap_cache->find(color); + if (bitmap == nullptr) { + // Paint the color icon. + Slic3r::PresetBundle::parse_color(color, rgb); + bitmap = m_bitmap_cache->insert(color, m_bitmap_cache->mksolid(icon_width, icon_height, rgb)); + } + bmps.emplace_back(bitmap); + } + + return bmps; +} + + +static wxBitmap get_extruder_color_icon(size_t extruder_idx) +{ + // Create the bitmap with color bars. + std::vector bmps = get_extruder_color_icons(); + + return *bmps[extruder_idx >= bmps.size() ? 0 : extruder_idx]; +} + // ***************************************************************************** // ---------------------------------------------------------------------------- // ObjectDataViewModelNode @@ -479,7 +520,7 @@ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent m_idx = parent->GetChildCount(); m_name = wxString::Format(_(L("Instance %d")), m_idx + 1); - set_action_icon(); + set_action_and_extruder_icons(); } else if (type == itLayerRoot) { @@ -514,7 +555,7 @@ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent m_name = _(L("Range")) + label_range + "(" + _(L("mm")) + ")"; m_bmp = create_scaled_bitmap(nullptr, LAYER_ICON); // FIXME: pass window ptr - set_action_icon(); + set_action_and_extruder_icons(); init_container(); } @@ -527,11 +568,16 @@ bool ObjectDataViewModelNode::valid() } #endif /* NDEBUG */ -void ObjectDataViewModelNode::set_action_icon() +void ObjectDataViewModelNode::set_action_and_extruder_icons() { m_action_icon_name = m_type & itObject ? "advanced_plus" : m_type & (itVolume | itLayer) ? "cog" : /*m_type & itInstance*/ "set_separate_obj"; m_action_icon = create_scaled_bitmap(nullptr, m_action_icon_name); // FIXME: pass window ptr + + // set extruder bitmap + int extruder_idx = atoi(m_extruder.c_str()); + if (extruder_idx > 0) --extruder_idx; + m_extruder_bmp = get_extruder_color_icon(extruder_idx); } void ObjectDataViewModelNode::set_printable_icon(PrintIndicator printable) @@ -541,7 +587,6 @@ void ObjectDataViewModelNode::set_printable_icon(PrintIndicator printable) create_scaled_bitmap(nullptr, m_printable == piPrintable ? "eye_open.png" : "eye_closed.png"); } -Slic3r::GUI::BitmapCache *m_bitmap_cache = nullptr; void ObjectDataViewModelNode::update_settings_digest_bitmaps() { m_bmp = m_empty_bmp; @@ -607,8 +652,10 @@ bool ObjectDataViewModelNode::SetValue(const wxVariant& variant, unsigned col) m_name = data.GetText(); return true; } case colExtruder: { - const wxString & val = variant.GetString(); - m_extruder = val == "0" ? _(L("default")) : val; + DataViewBitmapText data; + data << variant; + m_extruder_bmp = data.GetBitmap(); + m_extruder = data.GetText() == "0" ? _(L("default")) : data.GetText(); return true; } case colEditing: m_action_icon << variant; @@ -1381,6 +1428,51 @@ t_layer_height_range ObjectDataViewModel::GetLayerRangeByItem(const wxDataViewIt return node->GetLayerRange(); } +bool ObjectDataViewModel::UpdateColumValues(unsigned col) +{ + switch (col) + { + case colPrint: + case colName: + case colEditing: + return true; + case colExtruder: + { + wxDataViewItemArray items; + GetAllChildren(wxDataViewItem(nullptr), items); + + if (items.IsEmpty()) return false; + + for (auto item : items) + UpdateExtruderBitmap(item); + + return true; + } + default: + printf("MyObjectTreeModel::SetValue: wrong column"); + } + return false; +} + + +void ObjectDataViewModel::UpdateExtruderBitmap(wxDataViewItem item) +{ + wxString extruder = GetExtruder(item); + if (extruder.IsEmpty()) + return; + + // set extruder bitmap + int extruder_idx = atoi(extruder.c_str()); + if (extruder_idx > 0) --extruder_idx; + + const DataViewBitmapText extruder_val(extruder, get_extruder_color_icon(extruder_idx)); + + wxVariant value; + value << extruder_val; + + SetValue(value, item, colExtruder); +} + void ObjectDataViewModel::GetItemInfo(const wxDataViewItem& item, ItemType& type, int& obj_idx, int& idx) { wxASSERT(item.IsOk()); @@ -1477,6 +1569,24 @@ wxBitmap& ObjectDataViewModel::GetBitmap(const wxDataViewItem &item) const return node->m_bmp; } +wxString ObjectDataViewModel::GetExtruder(const wxDataViewItem& item) const +{ + ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + if (!node) // happens if item.IsOk()==false + return wxEmptyString; + + return node->m_extruder; +} + +int ObjectDataViewModel::GetExtruderNumber(const wxDataViewItem& item) const +{ + ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID(); + if (!node) // happens if item.IsOk()==false + return 0; + + return atoi(node->m_extruder.c_str()); +} + void ObjectDataViewModel::GetValue(wxVariant &variant, const wxDataViewItem &item, unsigned int col) const { wxASSERT(item.IsOk()); @@ -1491,7 +1601,7 @@ void ObjectDataViewModel::GetValue(wxVariant &variant, const wxDataViewItem &ite variant << DataViewBitmapText(node->m_name, node->m_bmp); break; case colExtruder: - variant = node->m_extruder; + variant << DataViewBitmapText(node->m_extruder, node->m_extruder_bmp); break; case colEditing: variant << node->m_action_icon; @@ -1517,6 +1627,22 @@ bool ObjectDataViewModel::SetValue(const wxVariant &variant, const int item_idx, return m_objects[item_idx]->SetValue(variant, col); } +void ObjectDataViewModel::SetExtruder(const wxString& extruder, wxDataViewItem item) +{ + DataViewBitmapText extruder_val; + extruder_val.SetText(extruder); + + // set extruder bitmap + int extruder_idx = atoi(extruder.c_str()); + if (extruder_idx > 0) --extruder_idx; + extruder_val.SetBitmap(get_extruder_color_icon(extruder_idx)); + + wxVariant value; + value << extruder_val; + + SetValue(value, item, colExtruder); +} + wxDataViewItem ObjectDataViewModel::ReorganizeChildren( const int current_volume_id, const int new_volume_id, const wxDataViewItem &parent) @@ -1969,20 +2095,22 @@ bool BitmapTextRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value } // ---------------------------------------------------------------------------- -// BitmapChoiseRenderer +// BitmapChoiceRenderer // ---------------------------------------------------------------------------- -bool BitmapChoiseRenderer::SetValue(const wxVariant& value) +bool BitmapChoiceRenderer::SetValue(const wxVariant& value) { m_value << value; return true; } -bool BitmapChoiseRenderer::GetValue(wxVariant& value) const + +bool BitmapChoiceRenderer::GetValue(wxVariant& value) const { value << m_value; return true; } -bool BitmapChoiseRenderer::Render(wxRect rect, wxDC* dc, int state) + +bool BitmapChoiceRenderer::Render(wxRect rect, wxDC* dc, int state) { int xoffset = 0; @@ -1993,69 +2121,25 @@ bool BitmapChoiseRenderer::Render(wxRect rect, wxDC* dc, int state) xoffset = icon.GetWidth() + 4; } + if (rect.height==0) + rect.height= icon.GetHeight(); RenderText(m_value.GetText(), xoffset, rect, dc, state); return true; } -wxSize BitmapChoiseRenderer::GetSize() const +wxSize BitmapChoiceRenderer::GetSize() const { - if (!m_value.GetText().empty()) - { - wxSize size = GetTextExtent(m_value.GetText()); + wxSize sz = GetTextExtent(m_value.GetText()); - if (m_value.GetBitmap().IsOk()) - size.x += m_value.GetBitmap().GetWidth() + 4; - return size; - } - return wxSize(80, 20); - - /* from wxDataViewChoiceRenderer - wxSize sz; - - for ( wxArrayString::const_iterator i = m_choices.begin(); i != m_choices.end(); ++i ) - sz.IncTo(GetTextExtent(*i)); - - // Allow some space for the right-side button, which is approximately the - // size of a scrollbar (and getting pixel-exact value would be complicated). - // Also add some whitespace between the text and the button: - sz.x += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X); - sz.x += GetTextExtent("M").x; + if (m_value.GetBitmap().IsOk()) + sz.x += m_value.GetBitmap().GetWidth() + 4; return sz; - */ -} - -static void update_extruder_color_icons_in_cache() -{ - // Create the bitmap with color bars. - std::vector bmps; - std::vector colors = Slic3r::GUI::wxGetApp().plater()->get_extruder_colors_from_plater_config(); - - unsigned char rgb[3]; - - /* It's supposed that standard size of an icon is 36px*16px for 100% scaled display. - * So set sizes for solid_colored icons used for filament preset - * and scale them in respect to em_unit value - */ - const double em = Slic3r::GUI::wxGetApp().em_unit(); - const int icon_width = lround(3.6 * em); - const int icon_height = lround(1.6 * em); - - for (const std::string& color : colors) - { - wxBitmap* bitmap = m_bitmap_cache->find(color); - if (bitmap == nullptr) { - // Paint the color icon. - Slic3r::PresetBundle::parse_color(color, rgb); - bitmap = m_bitmap_cache->insert(color, m_bitmap_cache->mksolid(icon_width, icon_height, rgb)); - } - bmps.emplace_back(bitmap); - } } -wxWindow* BitmapChoiseRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelRect, const wxVariant& value) +wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelRect, const wxVariant& value) { wxDataViewCtrl* const dv_ctrl = GetOwner()->GetOwner(); ObjectDataViewModel* const model = dynamic_cast(dv_ctrl->GetModel()); @@ -2063,28 +2147,36 @@ wxWindow* BitmapChoiseRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR if (!(model->GetItemType(dv_ctrl->GetSelection()) & (itVolume | itObject))) return nullptr; + std::vector icons = get_extruder_color_icons(); + if (icons.empty()) + return nullptr; + DataViewBitmapText data; data << value; -// m_was_unusable_symbol = false; - - wxPoint position = labelRect.GetPosition(); - if (data.GetBitmap().IsOk()) { - const int bmp_width = data.GetBitmap().GetWidth(); - position.x += bmp_width; - labelRect.SetWidth(labelRect.GetWidth() - bmp_width); - } - - auto c_editor = new wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, //data.GetText(), + auto c_editor = new wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, labelRect.GetTopLeft(), wxSize(labelRect.GetWidth(), -1), 0, nullptr , wxCB_READONLY); - c_editor->Move(labelRect.GetRight() - c_editor->GetRect().width, wxDefaultCoord); - c_editor->SetStringSelection(data.GetText()); + int i=0; + for (wxBitmap* bmp : icons) { + if (i==0) { + c_editor->Append(_(L("default")), *bmp); + ++i; + } + + c_editor->Append(wxString::Format("%d", i), *bmp); + ++i; + } + c_editor->SetSelection(atoi(data.GetText().c_str())); + + // to avoid event propagation to other sidebar items + c_editor->Bind(wxEVT_COMBOBOX, [](wxCommandEvent& evt) { evt.StopPropagation(); }); + return c_editor; } -bool BitmapChoiseRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value) +bool BitmapChoiceRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value) { wxBitmapComboBox* c = (wxBitmapComboBox*)ctrl; int selection = c->GetSelection(); diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index 3d90e966c..762fd08e7 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -209,6 +209,7 @@ class ObjectDataViewModelNode int m_idx = -1; bool m_container = false; wxString m_extruder = "default"; + wxBitmap m_extruder_bmp; wxBitmap m_action_icon; PrintIndicator m_printable {piUndef}; wxBitmap m_printable_icon; @@ -224,7 +225,7 @@ public: m_type(itObject), m_extruder(extruder) { - set_action_icon(); + set_action_and_extruder_icons(); init_container(); } @@ -240,7 +241,7 @@ public: m_extruder (extruder) { m_bmp = bmp; - set_action_icon(); + set_action_and_extruder_icons(); init_container(); } @@ -356,7 +357,7 @@ public: } // Set action icons for node - void set_action_icon(); + void set_action_and_extruder_icons(); // Set printable icon for node void set_printable_icon(PrintIndicator printable); @@ -438,6 +439,8 @@ public: wxString GetName(const wxDataViewItem &item) const; wxBitmap& GetBitmap(const wxDataViewItem &item) const; + wxString GetExtruder(const wxDataViewItem &item) const; + int GetExtruderNumber(const wxDataViewItem &item) const; // helper methods to change the model @@ -454,6 +457,8 @@ public: const int item_idx, unsigned int col); + void SetExtruder(const wxString& extruder, wxDataViewItem item); + // For parent move child from cur_volume_id place to new_volume_id // Remaining items will moved up/down accordingly wxDataViewItem ReorganizeChildren( const int cur_volume_id, @@ -504,6 +509,9 @@ public: void DeleteWarningIcon(const wxDataViewItem& item, const bool unmark_object = false); t_layer_height_range GetLayerRangeByItem(const wxDataViewItem& item) const; + bool UpdateColumValues(unsigned col); + void UpdateExtruderBitmap(wxDataViewItem item); + private: wxDataViewItem AddRoot(const wxDataViewItem& parent_item, const ItemType root_type); wxDataViewItem AddInstanceRoot(const wxDataViewItem& parent_item); @@ -564,36 +572,31 @@ private: // ---------------------------------------------------------------------------- -// BitmapChoiseRenderer +// BitmapChoiceRenderer // ---------------------------------------------------------------------------- -class BitmapChoiseRenderer : public wxDataViewCustomRenderer +class BitmapChoiceRenderer : public wxDataViewCustomRenderer { public: - BitmapChoiseRenderer(wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT - - , int align = wxDVR_DEFAULT_ALIGNMENT + BitmapChoiceRenderer(wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE, + int align = wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL ) : wxDataViewCustomRenderer(wxT("DataViewBitmapText"), mode, align) {} bool SetValue(const wxVariant& value); bool GetValue(wxVariant& value) const; -#if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING && wxUSE_ACCESSIBILITY - virtual wxString GetAccessibleDescription() const override; -#endif // wxUSE_ACCESSIBILITY && ENABLE_NONCUSTOM_DATA_VIEW_RENDERING virtual bool Render(wxRect cell, wxDC* dc, int state); virtual wxSize GetSize() const; bool HasEditorCtrl() const override { return true; } - wxWindow* CreateEditorCtrl(wxWindow* parent, - wxRect labelRect, - const wxVariant& value) override; - bool GetValueFromEditorCtrl(wxWindow* ctrl, - wxVariant& value) override; + wxWindow* CreateEditorCtrl(wxWindow* parent, + wxRect labelRect, + const wxVariant& value) override; + bool GetValueFromEditorCtrl( wxWindow* ctrl, + wxVariant& value) override; private: DataViewBitmapText m_value; - wxArrayString m_choices; }; From fbe38fb2a44fd43d96d0f4b55b1aeac08e999ca1 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Wed, 2 Oct 2019 10:57:07 +0200 Subject: [PATCH 21/53] #3008 - Generate all mipmaps up to size 1x1 --- src/slic3r/GUI/GLTexture.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/GLTexture.cpp b/src/slic3r/GUI/GLTexture.cpp index 55ca5f723..62129cfc0 100644 --- a/src/slic3r/GUI/GLTexture.cpp +++ b/src/slic3r/GUI/GLTexture.cpp @@ -107,8 +107,8 @@ void GLTexture::Compressor::compress() break; // stb_dxt library, despite claiming that the needed size of the destination buffer is equal to (source buffer size)/4, - // crashes if doing so, so we start with twice the required size - level.compressed_data = std::vector(level.w * level.h * 2, 0); + // crashes if doing so, requiring a minimum of 16 bytes and up to a third of the source buffer size, so we set the destination buffer initial size to be half the source buffer size + level.compressed_data = std::vector(std::max((unsigned int)16, level.w * level.h * 2), 0); int compressed_size = 0; rygCompress(level.compressed_data.data(), level.src_data.data(), level.w, level.h, 1, compressed_size); level.compressed_data.resize(compressed_size); @@ -455,8 +455,7 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo int lod_w = m_width; int lod_h = m_height; GLint level = 0; - // we do not need to generate all levels down to 1x1 - while ((lod_w > 16) || (lod_h > 16)) + while ((lod_w > 1) || (lod_h > 1)) { ++level; @@ -600,8 +599,7 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo int lod_w = m_width; int lod_h = m_height; GLint level = 0; - // we do not need to generate all levels down to 1x1 - while ((lod_w > 16) || (lod_h > 16)) + while ((lod_w > 1) || (lod_h > 1)) { ++level; From 15902766d051315d8efe7a5e2771b28af45a69ba Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 2 Oct 2019 11:53:50 +0200 Subject: [PATCH 22/53] Workaround for extruder editing under OSX --- src/slic3r/GUI/GUI_ObjectList.cpp | 71 +++++++++++++++++++++++++++++++ src/slic3r/GUI/GUI_ObjectList.hpp | 3 ++ src/slic3r/GUI/wxExtensions.cpp | 2 +- src/slic3r/GUI/wxExtensions.hpp | 2 + 4 files changed, 77 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index a59156fff..3e0d6dd8f 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -788,6 +788,9 @@ void ObjectList::list_manipulation(bool evt_context_menu/* = false*/) const wxPoint pt = get_mouse_position_in_control(); HitTest(pt, item, col); + if (m_extruder_editor) + m_extruder_editor->Hide(); + /* Note: Under OSX right click doesn't send "selection changed" event. * It means that Selection() will be return still previously selected item. * Thus under OSX we should force UnselectAll(), when item and col are nullptr, @@ -836,6 +839,8 @@ void ObjectList::list_manipulation(bool evt_context_menu/* = false*/) fix_through_netfabb(); } } + else if (/*wxOSX &&*/evt_context_menu && title == _("Extruder")) + extruder_editing(); #ifndef __WXMSW__ GetMainWindow()->SetToolTip(""); // hide tooltip @@ -877,6 +882,72 @@ void ObjectList::show_context_menu(const bool evt_context_menu) wxGetApp().plater()->PopupMenu(menu); } +void ObjectList::extruder_editing() +{ + wxDataViewItem item = GetSelection(); + if (!item || !(m_objects_model->GetItemType(item) & (itVolume | itObject))) + return; + + std::vector icons = get_extruder_color_icons(); + if (icons.empty()) + return; + + const int column_width = GetColumn(colExtruder)->GetWidth(); + + wxPoint pos = get_mouse_position_in_control(); + + pos.y -= 2*GetTextExtent("m").y; + + wxWindow* parent = this;//this->GetMainWindow(); + + if (!m_extruder_editor) + m_extruder_editor = new wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, + pos, wxSize(column_width, -1), + 0, nullptr, wxCB_READONLY); + else + { + m_extruder_editor->SetPosition(pos); + m_extruder_editor->Clear(); + m_extruder_editor->Show(); + } + + + int i = 0; + for (wxBitmap* bmp : icons) { + if (i == 0) { + m_extruder_editor->Append(_(L("default")), *bmp); + ++i; + } + + m_extruder_editor->Append(wxString::Format("%d", i), *bmp); + ++i; + } + m_extruder_editor->SetSelection(m_objects_model->GetExtruderNumber(item)); + + auto set_extruder = [this, item]() + { + const int selection = m_extruder_editor->GetSelection(); + if (selection >= 0) + m_objects_model->SetExtruder(m_extruder_editor->GetString(selection), item); + + m_extruder_editor->Hide(); + }; + + // to avoid event propagation to other sidebar items + m_extruder_editor->Bind(wxEVT_COMBOBOX, [set_extruder](wxCommandEvent& evt) + { + set_extruder(); + evt.StopPropagation(); + }); + + m_extruder_editor->Bind(wxEVT_KILL_FOCUS, [set_extruder](wxFocusEvent& evt) + { + set_extruder(); + evt.Skip(); + }); + +} + void ObjectList::copy() { // if (m_selection_mode & smLayer) diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index b89d8943d..ddbbd7146 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -140,6 +140,8 @@ private: DynamicPrintConfig *m_config {nullptr}; std::vector *m_objects{ nullptr }; + wxBitmapComboBox *m_extruder_editor { nullptr }; + std::vector m_bmp_vector; t_layer_config_ranges m_layer_config_ranges_cache; @@ -210,6 +212,7 @@ public: void selection_changed(); void show_context_menu(const bool evt_context_menu); + void extruder_editing(); #ifndef __WXOSX__ void key_event(wxKeyEvent& event); #endif /* __WXOSX__ */ diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index b692d1cae..855e803e3 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -449,7 +449,7 @@ wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name_in, Slic3r::GUI::BitmapCache* m_bitmap_cache = nullptr; -static std::vector get_extruder_color_icons() +/*static*/ std::vector get_extruder_color_icons() { // Create the bitmap with color bars. std::vector bmps; diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index 762fd08e7..1ba55c4b5 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -55,6 +55,8 @@ int em_unit(wxWindow* win); wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name, const int px_cnt = 16, const bool is_horizontal = false, const bool grayscale = false); +std::vector get_extruder_color_icons(); + class wxCheckListBoxComboPopup : public wxCheckListBox, public wxComboPopup { static const unsigned int DefaultWidth; From d87f2d11ae05855cd69698f1f4833e1994c84006 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 2 Oct 2019 12:17:02 +0200 Subject: [PATCH 23/53] Fix OSX build --- src/slic3r/GUI/GUI_ObjectList.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index ddbbd7146..87be25ed9 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -12,6 +12,7 @@ #include "wxExtensions.hpp" class wxBoxSizer; +class wxBitmapComboBox; class wxMenuItem; class ObjectDataViewModel; class MenuWithSeparators; From fa81b961c50d5d22cacb5a61265a3c51296bcdc6 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 2 Oct 2019 13:56:41 +0200 Subject: [PATCH 24/53] Fix compilation without pch. --- src/libslic3r/Utils.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 5d847573d..9af2adcc6 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -5,6 +5,7 @@ #include #include #include +#include #include "libslic3r.h" From 4171a6a80d9f662537e4f955f7a55ee8d7e542a1 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 2 Oct 2019 13:05:34 +0200 Subject: [PATCH 25/53] Improvements for https://github.com/prusa3d/PrusaSlicer/commit/15902766d051315d8efe7a5e2771b28af45a69ba --- src/slic3r/GUI/GUI_ObjectList.cpp | 14 ++++++-------- src/slic3r/GUI/wxExtensions.hpp | 9 +++++++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 3e0d6dd8f..f8e708200 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -839,7 +839,8 @@ void ObjectList::list_manipulation(bool evt_context_menu/* = false*/) fix_through_netfabb(); } } - else if (/*wxOSX &&*/evt_context_menu && title == _("Extruder")) + // workaround for extruder editing under OSX + else if (wxOSX && evt_context_menu && title == _("Extruder")) extruder_editing(); #ifndef __WXMSW__ @@ -895,15 +896,12 @@ void ObjectList::extruder_editing() const int column_width = GetColumn(colExtruder)->GetWidth(); wxPoint pos = get_mouse_position_in_control(); - - pos.y -= 2*GetTextExtent("m").y; - - wxWindow* parent = this;//this->GetMainWindow(); + pos.x = GetColumn(colName)->GetWidth() + GetColumn(colPrint)->GetWidth(); +// pos.y -= 2*GetTextExtent("m").y; if (!m_extruder_editor) - m_extruder_editor = new wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, - pos, wxSize(column_width, -1), - 0, nullptr, wxCB_READONLY); + m_extruder_editor = new wxBitmapComboBox(this, wxID_ANY, wxEmptyString, pos, wxSize(column_width, -1), + 0, nullptr, wxCB_READONLY); else { m_extruder_editor->SetPosition(pos); diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index 1ba55c4b5..d4d5e7998 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -580,8 +580,13 @@ private: class BitmapChoiceRenderer : public wxDataViewCustomRenderer { public: - BitmapChoiceRenderer(wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE, - int align = wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL + BitmapChoiceRenderer(wxDataViewCellMode mode = +#ifdef __WXOSX__ + wxDATAVIEW_CELL_INERT +#else + wxDATAVIEW_CELL_EDITABLE +#endif + ,int align = wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL ) : wxDataViewCustomRenderer(wxT("DataViewBitmapText"), mode, align) {} bool SetValue(const wxVariant& value); From f29e18dad2eff92f29b75e505174453e05139f81 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 2 Oct 2019 14:25:32 +0200 Subject: [PATCH 26/53] Fix crashing test executable on gcc 4.9 --- src/libslic3r/Config.cpp | 2 -- src/libslic3r/Config.hpp | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index 9aab3a0eb..63bd0c801 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -271,8 +271,6 @@ ConfigOptionDef* ConfigDef::add_nullable(const t_config_option_key &opt_key, Con return def; } -std::string ConfigOptionDef::nocli = "~~~noCLI"; - std::ostream& ConfigDef::print_cli_help(std::ostream& out, bool show_defaults, std::function filter) const { // prepare a function for wrapping text diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index 334593ab5..463f6ef2d 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -1444,7 +1444,7 @@ public: std::vector cli_args(const std::string &key) const; // Assign this key to cli to disable CLI for this option. - static std::string nocli; + static const constexpr char *nocli = "~~~noCLI"; }; // Map from a config option name to its definition. From d5dcba00b1081cf15324d3d5eb8eae4a4701386c Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 24 Sep 2019 10:48:24 +0200 Subject: [PATCH 27/53] Time conversion functions with tests. Fixes issue with incorrect characters in time strings on UI. Fix platform dependency Fix return value with incorrect strings. Just use strptime and strftime on all platforms. Emulate strptime on msvc... because they don't have it and their get_time is buggy. --- CMakeLists.txt | 2 +- src/libslic3r/SLA/SLARasterWriter.cpp | 2 +- src/libslic3r/Time.cpp | 254 +++++++++++++++++------ src/libslic3r/Time.hpp | 62 ++++-- src/libslic3r/utils.cpp | 2 +- src/slic3r/Config/Snapshot.cpp | 6 +- src/slic3r/GUI/ConfigSnapshotDialog.cpp | 9 +- tests/CMakeLists.txt | 12 +- tests/timeutils/CMakeLists.txt | 5 + tests/timeutils/timeutils_tests_main.cpp | 41 ++++ 10 files changed, 296 insertions(+), 99 deletions(-) create mode 100644 tests/timeutils/CMakeLists.txt create mode 100644 tests/timeutils/timeutils_tests_main.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c7fc12df..93339eb0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,7 +37,7 @@ set(SLIC3R_GTK "2" CACHE STRING "GTK version to use with wxWidgets on Linux") # Proposal for C++ unit tests and sandboxes option(SLIC3R_BUILD_SANDBOXES "Build development sandboxes" OFF) -option(SLIC3R_BUILD_TESTS "Build unit tests" OFF) +option(SLIC3R_BUILD_TESTS "Build unit tests" ON) # Print out the SLIC3R_* cache options get_cmake_property(_cache_vars CACHE_VARIABLES) diff --git a/src/libslic3r/SLA/SLARasterWriter.cpp b/src/libslic3r/SLA/SLARasterWriter.cpp index 3e6f015d4..425f4c3c2 100644 --- a/src/libslic3r/SLA/SLARasterWriter.cpp +++ b/src/libslic3r/SLA/SLARasterWriter.cpp @@ -114,7 +114,7 @@ void SLARasterWriter::set_config(const DynamicPrintConfig &cfg) m_config["printerProfile"] = get_cfg_value(cfg, "printer_settings_id"); m_config["printProfile"] = get_cfg_value(cfg, "sla_print_settings_id"); - m_config["fileCreationTimestamp"] = Utils::current_utc_time2str(); + m_config["fileCreationTimestamp"] = Utils::utc_timestamp(); m_config["prusaSlicerVersion"] = SLIC3R_BUILD_ID; } diff --git a/src/libslic3r/Time.cpp b/src/libslic3r/Time.cpp index 1f65189b8..063dbb41c 100644 --- a/src/libslic3r/Time.cpp +++ b/src/libslic3r/Time.cpp @@ -3,116 +3,232 @@ #include #include #include +#include +#include +#include -//#include -//#include +#ifdef _MSC_VER +#include +#endif - -#ifdef WIN32 - #define WIN32_LEAN_AND_MEAN - #include - #undef WIN32_LEAN_AND_MEAN -#endif /* WIN32 */ +#include "libslic3r/Utils.hpp" namespace Slic3r { namespace Utils { -namespace { +// "YYYY-MM-DD at HH:MM::SS [UTC]" +// If TimeZone::utc is used with the conversion functions, it will append the +// UTC letters to the end. +static const constexpr char *const SLICER_UTC_TIME_FMT = "%Y-%m-%d at %T"; -// FIXME: after we switch to gcc > 4.9 on the build server, please remove me -#if defined(__GNUC__) && __GNUC__ <= 4 -std::string put_time(const std::tm *tm, const char *fmt) +// ISO8601Z representation of time, without time zone info +static const constexpr char *const ISO8601Z_TIME_FMT = "%Y%m%dT%H%M%SZ"; + +static const char * get_fmtstr(TimeFormat fmt) { - static const constexpr int MAX_CHARS = 200; - char out[MAX_CHARS]; - std::strftime(out, MAX_CHARS, fmt, tm); - return out; + switch (fmt) { + case TimeFormat::gcode: return SLICER_UTC_TIME_FMT; + case TimeFormat::iso8601Z: return ISO8601Z_TIME_FMT; + } + + return ""; } -#else -auto put_time(const std::tm *tm, const char *fmt) -> decltype (std::put_time(tm, fmt)) + +namespace __get_put_time_emulation { +// FIXME: Implementations with the cpp11 put_time and get_time either not +// compile or do not pass the tests on the build server. If we switch to newer +// compilers, this namespace can be deleted with all its content. + +#ifdef _MSC_VER +// VS2019 implementation fails with ISO8601Z_TIME_FMT. +// VS2019 does not have std::strptime either. See bug: +// https://developercommunity.visualstudio.com/content/problem/140618/c-stdget-time-not-parsing-correctly.html + +static const std::map sscanf_fmt_map = { + {SLICER_UTC_TIME_FMT, "%04d-%02d-%02d at %02d:%02d:%02d"}, + {std::string(SLICER_UTC_TIME_FMT) + " UTC", "%04d-%02d-%02d at %02d:%02d:%02d UTC"}, + {ISO8601Z_TIME_FMT, "%04d%02d%02dT%02d%02d%02dZ"} +}; + +static const char * strptime(const char *str, const char *const fmt, std::tm *tms) { - return std::put_time(tm, fmt); + auto it = sscanf_fmt_map.find(fmt); + if (it == sscanf_fmt_map.end()) return nullptr; + + int y, M, d, h, m, s; + if (sscanf(str, it->second.c_str(), &y, &M, &d, &h, &m, &s) != 6) + return nullptr; + + tms->tm_year = y - 1900; // Year since 1900 + tms->tm_mon = M - 1; // 0-11 + tms->tm_mday = d; // 1-31 + tms->tm_hour = h; // 0-23 + tms->tm_min = m; // 0-59 + tms->tm_sec = s; // 0-61 (0-60 in C++11) + + return str; // WARN strptime return val should point after the parsed string } #endif +template +struct GetPutTimeReturnT { + Ttm *tms; + const char *fmt; + GetPutTimeReturnT(Ttm *_tms, const char *_fmt): tms(_tms), fmt(_fmt) {} +}; + +using GetTimeReturnT = GetPutTimeReturnT; +using PutTimeReturnT = GetPutTimeReturnT; + +std::ostream &operator<<(std::ostream &stream, PutTimeReturnT &&pt) +{ + static const constexpr int MAX_CHARS = 200; + char _out[MAX_CHARS]; + strftime(_out, MAX_CHARS, pt.fmt, pt.tms); + stream << _out; + return stream; } -time_t parse_time_ISO8601Z(const std::string &sdate) +inline PutTimeReturnT put_time(const std::tm *tms, const char *fmt) { - int y, M, d, h, m, s; - if (sscanf(sdate.c_str(), "%04d%02d%02dT%02d%02d%02dZ", &y, &M, &d, &h, &m, &s) != 6) - return time_t(-1); - struct tm tms; - tms.tm_year = y - 1900; // Year since 1900 - tms.tm_mon = M - 1; // 0-11 - tms.tm_mday = d; // 1-31 - tms.tm_hour = h; // 0-23 - tms.tm_min = m; // 0-59 - tms.tm_sec = s; // 0-61 (0-60 in C++11) + return {tms, fmt}; +} + +std::istream &operator>>(std::istream &stream, GetTimeReturnT &>) +{ + std::string line; + std::getline(stream, line); + + if (strptime(line.c_str(), gt.fmt, gt.tms) == nullptr) + stream.setstate(std::ios::failbit); + + return stream; +} + +inline GetTimeReturnT get_time(std::tm *tms, const char *fmt) +{ + return {tms, fmt}; +} + +} + +namespace { + +// Platform independent versions of gmtime and localtime. Completely thread +// safe only on Linux. MSVC gtime_s and localtime_s sets global errno thus not +// thread safe. +struct std::tm * _gmtime_r(const time_t *timep, struct tm *result) +{ + assert(timep != nullptr && result != nullptr); #ifdef WIN32 - return _mkgmtime(&tms); + time_t t = *timep; + gmtime_s(result, &t); + return result; +#else + return gmtime_r(timep, result); +#endif +} + +struct std::tm * _localtime_r(const time_t *timep, struct tm *result) +{ + assert(timep != nullptr && result != nullptr); +#ifdef WIN32 + // Converts a time_t time value to a tm structure, and corrects for the + // local time zone. + time_t t = *timep; + localtime_s(result, &t); + return result; +#else + return localtime_r(timep, result); +#endif +} + +time_t _mktime(const struct std::tm *tms) +{ + assert(tms != nullptr); + std::tm _tms = *tms; + return mktime(&_tms); +} + +time_t _timegm(const struct std::tm *tms) +{ + std::tm _tms = *tms; +#ifdef WIN32 + return _mkgmtime(&_tms); #else /* WIN32 */ - return timegm(&tms); + return timegm(&_tms); #endif /* WIN32 */ } -std::string format_time_ISO8601Z(time_t time) +std::string process_format(const char *fmt, TimeZone zone) { - struct tm tms; -#ifdef WIN32 - gmtime_s(&tms, &time); -#else - gmtime_r(&time, &tms); -#endif - char buf[128]; - sprintf(buf, "%04d%02d%02dT%02d%02d%02dZ", - tms.tm_year + 1900, - tms.tm_mon + 1, - tms.tm_mday, - tms.tm_hour, - tms.tm_min, - tms.tm_sec); - return buf; + std::string fmtstr(fmt); + + if (fmtstr == SLICER_UTC_TIME_FMT && zone == TimeZone::utc) + fmtstr += " UTC"; + + return fmtstr; } -std::string format_local_date_time(time_t time) -{ - struct tm tms; -#ifdef WIN32 - // Converts a time_t time value to a tm structure, and corrects for the local time zone. - localtime_s(&tms, &time); -#else - localtime_r(&time, &tms); -#endif - char buf[80]; - strftime(buf, 80, "%x %X", &tms); - return buf; -} +} // namespace time_t get_current_time_utc() -{ +{ using clk = std::chrono::system_clock; return clk::to_time_t(clk::now()); } -static std::string tm2str(const std::tm *tm, const char *fmt) +static std::string tm2str(const std::tm *tms, const char *fmt) { std::stringstream ss; - ss << put_time(tm, fmt); + ss.imbue(std::locale("C")); + ss << __get_put_time_emulation::put_time(tms, fmt); return ss.str(); } -std::string time2str(const time_t &t, TimeZone zone, const char *fmt) +std::string time2str(const time_t &t, TimeZone zone, TimeFormat fmt) { std::string ret; - + std::tm tms = {}; + tms.tm_isdst = -1; + std::string fmtstr = process_format(get_fmtstr(fmt), zone); + switch (zone) { - case TimeZone::local: ret = tm2str(std::localtime(&t), fmt); break; - case TimeZone::utc: ret = tm2str(std::gmtime(&t), fmt) + " UTC"; break; + case TimeZone::local: + ret = tm2str(_localtime_r(&t, &tms), fmtstr.c_str()); break; + case TimeZone::utc: + ret = tm2str(_gmtime_r(&t, &tms), fmtstr.c_str()); break; } - + return ret; } +static time_t str2time(std::istream &stream, TimeZone zone, const char *fmt) +{ + std::tm tms = {}; + tms.tm_isdst = -1; + + stream >> __get_put_time_emulation::get_time(&tms, fmt); + time_t ret = time_t(-1); + + switch (zone) { + case TimeZone::local: ret = _mktime(&tms); break; + case TimeZone::utc: ret = _timegm(&tms); break; + } + + if (stream.fail() || ret < time_t(0)) ret = time_t(-1); + + return ret; +} + +time_t str2time(const std::string &str, TimeZone zone, TimeFormat fmt) +{ + std::string fmtstr = process_format(get_fmtstr(fmt), zone).c_str(); + std::stringstream ss(str); + + ss.imbue(std::locale("C")); + return str2time(ss, zone, fmtstr.c_str()); +} + }; // namespace Utils }; // namespace Slic3r diff --git a/src/libslic3r/Time.hpp b/src/libslic3r/Time.hpp index b314e47f7..6b3fd1525 100644 --- a/src/libslic3r/Time.hpp +++ b/src/libslic3r/Time.hpp @@ -7,41 +7,61 @@ namespace Slic3r { namespace Utils { -// Utilities to convert an UTC time_t to/from an ISO8601 time format, -// useful for putting timestamps into file and directory names. -// Returns (time_t)-1 on error. -time_t parse_time_ISO8601Z(const std::string &s); -std::string format_time_ISO8601Z(time_t time); - -// Format the date and time from an UTC time according to the active locales and a local time zone. -// TODO: make sure time2str is a suitable replacement -std::string format_local_date_time(time_t time); - -// There is no gmtime() on windows. +// Should be thread safe. time_t get_current_time_utc(); -const constexpr char *const SLIC3R_TIME_FMT = "%Y-%m-%d at %T"; - enum class TimeZone { local, utc }; +enum class TimeFormat { gcode, iso8601Z }; -std::string time2str(const time_t &t, TimeZone zone, const char *fmt = SLIC3R_TIME_FMT); +// time_t to string functions... -inline std::string current_time2str(TimeZone zone, const char *fmt = SLIC3R_TIME_FMT) +std::string time2str(const time_t &t, TimeZone zone, TimeFormat fmt); + +inline std::string time2str(TimeZone zone, TimeFormat fmt) { return time2str(get_current_time_utc(), zone, fmt); } -inline std::string current_local_time2str(const char * fmt = SLIC3R_TIME_FMT) +inline std::string utc_timestamp(time_t t) { - return current_time2str(TimeZone::local, fmt); + return time2str(t, TimeZone::utc, TimeFormat::gcode); } -inline std::string current_utc_time2str(const char * fmt = SLIC3R_TIME_FMT) +inline std::string utc_timestamp() { - return current_time2str(TimeZone::utc, fmt); + return utc_timestamp(get_current_time_utc()); } -}; // namespace Utils -}; // namespace Slic3r +// String to time_t function. Returns time_t(-1) if fails to parse the input. +time_t str2time(const std::string &str, TimeZone zone, TimeFormat fmt); + + +// ///////////////////////////////////////////////////////////////////////////// +// Utilities to convert an UTC time_t to/from an ISO8601 time format, +// useful for putting timestamps into file and directory names. +// Returns (time_t)-1 on error. + +// Use these functions to convert safely to and from the ISO8601 format on +// all platforms + +inline std::string iso_utc_timestamp(time_t t) +{ + return time2str(t, TimeZone::utc, TimeFormat::gcode); +} + +inline std::string iso_utc_timestamp() +{ + return iso_utc_timestamp(get_current_time_utc()); +} + +inline time_t parse_iso_utc_timestamp(const std::string &str) +{ + return str2time(str, TimeZone::utc, TimeFormat::iso8601Z); +} + +// ///////////////////////////////////////////////////////////////////////////// + +} // namespace Utils +} // namespace Slic3r #endif /* slic3r_Utils_Time_hpp_ */ diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 895efdb4d..8d2a6a866 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -543,7 +543,7 @@ std::string string_printf(const char *format, ...) std::string header_slic3r_generated() { - return std::string("generated by " SLIC3R_APP_NAME " " SLIC3R_VERSION " on " ) + Utils::current_utc_time2str(); + return std::string("generated by " SLIC3R_APP_NAME " " SLIC3R_VERSION " on " ) + Utils::utc_timestamp(); } unsigned get_current_pid() diff --git a/src/slic3r/Config/Snapshot.cpp b/src/slic3r/Config/Snapshot.cpp index 80b6521b6..7f157fb1a 100644 --- a/src/slic3r/Config/Snapshot.cpp +++ b/src/slic3r/Config/Snapshot.cpp @@ -66,7 +66,7 @@ void Snapshot::load_ini(const std::string &path) if (kvp.first == "id") this->id = kvp.second.data(); else if (kvp.first == "time_captured") { - this->time_captured = Slic3r::Utils::parse_time_ISO8601Z(kvp.second.data()); + this->time_captured = Slic3r::Utils::parse_iso_utc_timestamp(kvp.second.data()); if (this->time_captured == (time_t)-1) throw_on_parse_error("invalid timestamp"); } else if (kvp.first == "slic3r_version_captured") { @@ -165,7 +165,7 @@ void Snapshot::save_ini(const std::string &path) // Export the common "snapshot". c << std::endl << "[snapshot]" << std::endl; c << "id = " << this->id << std::endl; - c << "time_captured = " << Slic3r::Utils::format_time_ISO8601Z(this->time_captured) << std::endl; + c << "time_captured = " << Slic3r::Utils::iso_utc_timestamp(this->time_captured) << std::endl; c << "slic3r_version_captured = " << this->slic3r_version_captured.to_string() << std::endl; c << "comment = " << this->comment << std::endl; c << "reason = " << reason_string(this->reason) << std::endl; @@ -365,7 +365,7 @@ const Snapshot& SnapshotDB::take_snapshot(const AppConfig &app_config, Snapshot: Snapshot snapshot; // Snapshot header. snapshot.time_captured = Slic3r::Utils::get_current_time_utc(); - snapshot.id = Slic3r::Utils::format_time_ISO8601Z(snapshot.time_captured); + snapshot.id = Slic3r::Utils::iso_utc_timestamp(snapshot.time_captured); snapshot.slic3r_version_captured = Slic3r::SEMVER; snapshot.comment = comment; snapshot.reason = reason; diff --git a/src/slic3r/GUI/ConfigSnapshotDialog.cpp b/src/slic3r/GUI/ConfigSnapshotDialog.cpp index c89e4895e..d48dfccc9 100644 --- a/src/slic3r/GUI/ConfigSnapshotDialog.cpp +++ b/src/slic3r/GUI/ConfigSnapshotDialog.cpp @@ -35,9 +35,14 @@ static wxString generate_html_row(const Config::Snapshot &snapshot, bool row_eve text += snapshot_active ? "#B3FFCB" : (row_even ? "#FFFFFF" : "#D5D5D5"); text += "\">"; text += ""; + + static const constexpr char *LOCALE_TIME_FMT = "%x %X"; + wxString datetime = wxDateTime(snapshot.time_captured).Format(LOCALE_TIME_FMT); + // Format the row header. - text += wxString("") + (snapshot_active ? _(L("Active")) + ": " : "") + - Utils::format_local_date_time(snapshot.time_captured) + ": " + format_reason(snapshot.reason); + text += wxString("") + (snapshot_active ? _(L("Active")) + ": " : "") + + datetime + ": " + format_reason(snapshot.reason); + if (! snapshot.comment.empty()) text += " (" + wxString::FromUTF8(snapshot.comment.data()) + ")"; text += "
"; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 11bdc4b3d..1246c3043 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,3 +1,13 @@ # TODO Add individual tests as executables in separate directories +# add_subirectory() -# add_subirectory() \ No newline at end of file +find_package(GTest REQUIRED) + +set(TEST_DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data) +file(TO_NATIVE_PATH "${TEST_DATA_DIR}" TEST_DATA_DIR) + +add_library(test_common INTERFACE) +target_compile_definitions(test_common INTERFACE TEST_DATA_DIR="${TEST_DATA_DIR}") +target_link_libraries(test_common INTERFACE GTest::GTest GTest::Main) + +add_subdirectory(timeutils) diff --git a/tests/timeutils/CMakeLists.txt b/tests/timeutils/CMakeLists.txt new file mode 100644 index 000000000..75048baad --- /dev/null +++ b/tests/timeutils/CMakeLists.txt @@ -0,0 +1,5 @@ +add_executable(timeutils_tests timeutils_tests_main.cpp) +target_link_libraries(timeutils_tests test_common libslic3r ${Boost_LIBRARIES} ${TBB_LIBRARIES} ${Boost_LIBRARIES}) + +add_test(timeutils_tests timeutils_tests) +#gtest_discover_tests(timeutils_tests TEST_PREFIX timeutils.) diff --git a/tests/timeutils/timeutils_tests_main.cpp b/tests/timeutils/timeutils_tests_main.cpp new file mode 100644 index 000000000..2a8499270 --- /dev/null +++ b/tests/timeutils/timeutils_tests_main.cpp @@ -0,0 +1,41 @@ +#include +#include "libslic3r/Time.hpp" + +#include +#include +#include + +namespace { + +void test_time_fmt(Slic3r::Utils::TimeFormat fmt) { + using namespace Slic3r::Utils; + time_t t = get_current_time_utc(); + + std::string tstr = time2str(t, TimeZone::local, fmt); + time_t parsedtime = str2time(tstr, TimeZone::local, fmt); + ASSERT_EQ(t, parsedtime); + + tstr = time2str(t, TimeZone::utc, fmt); + parsedtime = str2time(tstr, TimeZone::utc, fmt); + ASSERT_EQ(t, parsedtime); + + parsedtime = str2time("not valid string", TimeZone::local, fmt); + ASSERT_EQ(parsedtime, time_t(-1)); + + parsedtime = str2time("not valid string", TimeZone::utc, fmt); + ASSERT_EQ(parsedtime, time_t(-1)); +} +} + +TEST(Timeutils, ISO8601Z) { + test_time_fmt(Slic3r::Utils::TimeFormat::iso8601Z); +} + +TEST(Timeutils, Slic3r_UTC_Time_Format) { + test_time_fmt(Slic3r::Utils::TimeFormat::gcode); +} + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} From 8ca7e56d0f641c89ca82306f6616d6f9d926aa12 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 2 Oct 2019 14:55:02 +0200 Subject: [PATCH 28/53] Fix tests on all platforms Try to link tests on Mac. Fix inaccurate pad brim size fix build on mac (attempt 2) Fixes for support tree faults and race conditions in release mode. Fix crashing test executable on gcc 4.9 fix warning on msvc --- src/libslic3r/Config.cpp | 2 - src/libslic3r/Config.hpp | 2 +- src/libslic3r/SLA/SLAPad.cpp | 265 +++++++++--------- src/libslic3r/SLA/SLAPad.hpp | 15 +- src/libslic3r/SLA/SLARaster.hpp | 2 - src/libslic3r/SLA/SLASupportTree.cpp | 2 +- src/libslic3r/SLA/SLASupportTreeBuilder.hpp | 10 +- .../SLA/SLASupportTreeBuildsteps.cpp | 48 ++-- .../SLA/SLASupportTreeBuildsteps.hpp | 97 +++---- src/libslic3r/Utils.hpp | 1 + tests/CMakeLists.txt | 5 +- tests/sla_print/sla_print_tests_main.cpp | 251 ++++++++++------- 12 files changed, 381 insertions(+), 319 deletions(-) diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index 9aab3a0eb..63bd0c801 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -271,8 +271,6 @@ ConfigOptionDef* ConfigDef::add_nullable(const t_config_option_key &opt_key, Con return def; } -std::string ConfigOptionDef::nocli = "~~~noCLI"; - std::ostream& ConfigDef::print_cli_help(std::ostream& out, bool show_defaults, std::function filter) const { // prepare a function for wrapping text diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index 334593ab5..463f6ef2d 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -1444,7 +1444,7 @@ public: std::vector cli_args(const std::string &key) const; // Assign this key to cli to disable CLI for this option. - static std::string nocli; + static const constexpr char *nocli = "~~~noCLI"; }; // Map from a config option name to its definition. diff --git a/src/libslic3r/SLA/SLAPad.cpp b/src/libslic3r/SLA/SLAPad.cpp index f102f33ff..71f8b1c7f 100644 --- a/src/libslic3r/SLA/SLAPad.cpp +++ b/src/libslic3r/SLA/SLAPad.cpp @@ -216,22 +216,22 @@ ClipperLib::Paths fast_offset(const ClipperLib::Paths &paths, using ClipperLib::etClosedPolygon; using ClipperLib::Paths; using ClipperLib::Path; - + ClipperOffset offs; offs.ArcTolerance = scaled(0.01); - + for (auto &p : paths) // If the input is not at least a triangle, we can not do this algorithm if(p.size() < 3) { BOOST_LOG_TRIVIAL(error) << "Invalid geometry for offsetting!"; return {}; } - + offs.AddPaths(paths, jointype, etClosedPolygon); - - Paths result; + + Paths result; offs.Execute(result, static_cast(delta)); - + return result; } @@ -249,25 +249,25 @@ void breakstick_holes(Points& pts, { if(stride <= EPSILON || stick_width <= EPSILON || padding <= EPSILON) return; - + // SVG svg("bridgestick_plate.svg"); // svg.draw(poly); - + // The connector stick will be a small rectangle with dimensions // stick_width x (penetration + padding) to have some penetration // into the input polygon. - + Points out; out.reserve(2 * pts.size()); // output polygon points - + // stick bottom and right edge dimensions double sbottom = scaled(stick_width); double sright = scaled(penetration + padding); - + // scaled stride distance double sstride = scaled(stride); double t = 0; - + // process pairs of vertices as an edge, start with the last and // first point for (size_t i = pts.size() - 1, j = 0; j < pts.size(); i = j, ++j) { @@ -277,16 +277,16 @@ void breakstick_holes(Points& pts, double nrm = dir.norm(); dir /= nrm; Vec2d dirp(-dir(Y), dir(X)); - + // Insert start point out.emplace_back(a); - + // dodge the start point, do not make sticks on the joins while (t < sbottom) t += sbottom; double tend = nrm - sbottom; - + while (t < tend) { // insert the stick on the polygon perimeter - + // calculate the stick rectangle vertices and insert them // into the output. Point p1 = a + (t * dir).cast(); @@ -294,38 +294,31 @@ void breakstick_holes(Points& pts, Point p3 = p2 + (sbottom * dir).cast(); Point p4 = p3 + (sright * -dirp).cast(); out.insert(out.end(), {p1, p2, p3, p4}); - + // continue along the perimeter t += sstride; } - + t = t - nrm; - + // Insert edge endpoint out.emplace_back(b); } - + // move the new points out.shrink_to_fit(); pts.swap(out); } -void breakstick_holes(Points &pts, const PadConfig::EmbedObject &c) +template +ExPolygons breakstick_holes(const ExPolygons &input, Args...args) { - breakstick_holes(pts, c.object_gap_mm, c.stick_stride_mm, - c.stick_width_mm, c.stick_penetration_mm); -} - -ExPolygons breakstick_holes(const ExPolygons &input, - const PadConfig::EmbedObject &cfg) -{ - ExPolygons ret = offset_ex(input, scaled(cfg.object_gap_mm), ClipperLib::jtMiter, 1); - + ExPolygons ret = input; for (ExPolygon &p : ret) { - breakstick_holes(p.contour.points, cfg); - for (auto &h : p.holes) breakstick_holes(h.points, cfg); + breakstick_holes(p.contour.points, args...); + for (auto &h : p.holes) breakstick_holes(h.points, args...); } - + return ret; } @@ -335,7 +328,7 @@ ExPolygons breakstick_holes(const ExPolygons &input, /// centroids (a star is created...) class ConcaveHull { Polygons m_polys; - + Point centroid(const Points& pp) const { Point c; @@ -347,7 +340,7 @@ class ConcaveHull { auto MAX = std::numeric_limits::max(); auto MIN = std::numeric_limits::min(); Point min = {MAX, MAX}, max = {MIN, MIN}; - + for(auto& p : pp) { if(p(0) < min(0)) min(0) = p(0); if(p(1) < min(1)) min(1) = p(1); @@ -359,7 +352,7 @@ class ConcaveHull { break; } } - + return c; } @@ -372,10 +365,10 @@ class ConcaveHull { std::transform(m_polys.begin(), m_polys.end(), std::back_inserter(centroids), [this](const Polygon &poly) { return centroid(poly); }); - + return centroids; } - + void merge_polygons() { m_polys = union_(m_polys); } void add_connector_rectangles(const Points ¢roids, @@ -385,78 +378,78 @@ class ConcaveHull { namespace bgi = boost::geometry::index; using PointIndexElement = std::pair; using PointIndex = bgi::rtree>; - + // Centroid of the centroids of islands. This is where the additional // connector sticks are routed. Point cc = centroid(centroids); - + PointIndex ctrindex; unsigned idx = 0; for(const Point &ct : centroids) ctrindex.insert(std::make_pair(ct, idx++)); - + m_polys.reserve(m_polys.size() + centroids.size()); - + idx = 0; for (const Point &c : centroids) { thr(); - + double dx = c.x() - cc.x(), dy = c.y() - cc.y(); double l = std::sqrt(dx * dx + dy * dy); double nx = dx / l, ny = dy / l; - + const Point &ct = centroids[idx]; - + std::vector result; ctrindex.query(bgi::nearest(ct, 2), std::back_inserter(result)); - + double dist = max_dist; for (const PointIndexElement &el : result) if (el.second != idx) { dist = Line(el.first, ct).length(); break; } - + idx++; - + if (dist >= max_dist) return; - + Polygon r; r.points.reserve(3); r.points.emplace_back(cc); - + Point d(scaled(nx), scaled(ny)); r.points.emplace_back(c + Point(-d.y(), d.x())); r.points.emplace_back(c + Point(d.y(), -d.x())); - offset(r, scaled(1.)); - + offset(r, scaled(1.)); + m_polys.emplace_back(r); } } public: - + ConcaveHull(const ExPolygons& polys, double merge_dist, ThrowOnCancel thr) : ConcaveHull{to_polygons(polys), merge_dist, thr} {} - + ConcaveHull(const Polygons& polys, double mergedist, ThrowOnCancel thr) - { + { if(polys.empty()) return; - + m_polys = polys; merge_polygons(); - + if(m_polys.size() == 1) return; - - Points centroids = calculate_centroids(); - + + Points centroids = calculate_centroids(); + add_connector_rectangles(centroids, scaled(mergedist), thr); - + merge_polygons(); } // const Polygons & polygons() const { return m_polys; } - + ExPolygons to_expolygons() const { auto ret = reserve_vector(m_polys.size()); @@ -470,12 +463,12 @@ public: paths = fast_offset(paths, -delta, ClipperLib::jtRound); m_polys = ClipperPaths_to_Slic3rPolygons(paths); } - + static inline coord_t get_waffle_offset(const PadConfig &c) { - return scaled(c.brim_size_mm + c.wing_distance() + c.wall_thickness_mm); + return scaled(c.brim_size_mm + c.wing_distance()); } - + static inline double get_merge_distance(const PadConfig &c) { return 2. * (1.8 * c.wall_thickness_mm) + c.max_merge_dist_mm; @@ -508,26 +501,26 @@ struct PadSkeleton { ExPolygons inner, outer; }; PadSkeleton divide_blueprint(const ExPolygons &bp) { ClipperLib::PolyTree ptree = union_pt(bp); - + PadSkeleton ret; ret.inner.reserve(size_t(ptree.Total())); ret.outer.reserve(size_t(ptree.Total())); - + for (ClipperLib::PolyTree::PolyNode *node : ptree.Childs) { ExPolygon poly(ClipperPath_to_Slic3rPolygon(node->Contour)); for (ClipperLib::PolyTree::PolyNode *child : node->Childs) { if (child->IsHole()) { poly.holes.emplace_back( ClipperPath_to_Slic3rPolygon(child->Contour)); - + traverse_pt_unordered(child->Childs, &ret.inner); } else traverse_pt_unordered(child, &ret.inner); } - + ret.outer.emplace_back(poly); } - + return ret; } @@ -536,32 +529,32 @@ PadSkeleton divide_blueprint(const ExPolygons &bp) class Intersector { BoxIndex m_index; ExPolygons m_polys; - + public: - + // Add a new polygon to the index void add(const ExPolygon &ep) { m_polys.emplace_back(ep); m_index.insert(BoundingBox{ep}, unsigned(m_index.size())); } - + // Check an arbitrary polygon for intersection with the indexed polygons bool intersects(const ExPolygon &poly) { // Create a suitable query bounding box. auto bb = poly.contour.bounding_box(); - + std::vector qres = m_index.query(bb, BoxIndex::qtIntersects); - + // Now check intersections on the actual polygons (not just the boxes) bool is_overlap = false; auto qit = qres.begin(); while (!is_overlap && qit != qres.end()) is_overlap = is_overlap || poly.overlaps(m_polys[(qit++)->second]); - + return is_overlap; - } + } }; // This dummy intersector to implement the "force pad everywhere" feature @@ -577,7 +570,7 @@ class _AroundPadSkeleton : public PadSkeleton // A spatial index used to be able to efficiently find intersections of // support polygons with the model polygons. _Intersector m_intersector; - + public: _AroundPadSkeleton(const ExPolygons &support_blueprint, const ExPolygons &model_blueprint, @@ -589,33 +582,41 @@ public: // support contours. The pad has to have a hole in which the model can // fit perfectly (thus the substraction -- diff_ex). Also, the pad has // to be eliminated from areas where there is no need for a pad, due - // to missing supports. + // to missing supports. add_supports_to_index(support_blueprint); - + + auto model_bp_offs = + offset_ex(model_blueprint, + scaled(cfg.embed_object.object_gap_mm), + ClipperLib::jtMiter, 1); + ConcaveHull fullcvh = - wafflized_concave_hull(support_blueprint, model_blueprint, cfg, thr); - + wafflized_concave_hull(support_blueprint, model_bp_offs, cfg, thr); + auto model_bp_sticks = - breakstick_holes(model_blueprint, cfg.embed_object); - + breakstick_holes(model_bp_offs, cfg.embed_object.object_gap_mm, + cfg.embed_object.stick_stride_mm, + cfg.embed_object.stick_width_mm, + cfg.embed_object.stick_penetration_mm); + ExPolygons fullpad = diff_ex(fullcvh.to_expolygons(), model_bp_sticks); - + remove_redundant_parts(fullpad); - + PadSkeleton divided = divide_blueprint(fullpad); outer = std::move(divided.outer); inner = std::move(divided.inner); } - + private: - + // Add the support blueprint to the search index to be queried later void add_supports_to_index(const ExPolygons &supp_bp) { for (auto &ep : supp_bp) m_intersector.add(ep); } - + // Create the wafflized pad around all object in the scene. This pad doesnt // have any holes yet. ConcaveHull wafflized_concave_hull(const ExPolygons &supp_bp, @@ -624,16 +625,16 @@ private: ThrowOnCancel thr) { auto allin = reserve_vector(supp_bp.size() + model_bp.size()); - + for (auto &ep : supp_bp) allin.emplace_back(ep.contour); for (auto &ep : model_bp) allin.emplace_back(ep.contour); - + ConcaveHull ret{allin, ConcaveHull::get_merge_distance(cfg), thr}; ret.offset_waffle_style(ConcaveHull::get_waffle_offset(cfg)); - + return ret; } - + // To remove parts of the pad skeleton which do not host any supports void remove_redundant_parts(ExPolygons &parts) { @@ -641,7 +642,7 @@ private: [this](const ExPolygon &p) { return !m_intersector.intersects(p); }); - + parts.erase(endit, parts.end()); } }; @@ -661,9 +662,9 @@ public: for (auto &ep : support_blueprint) outer.emplace_back(ep.contour); for (auto &ep : model_blueprint) outer.emplace_back(ep.contour); - + ConcaveHull ochull{outer, ConcaveHull::get_merge_distance(cfg), thr}; - + ochull.offset_waffle_style(ConcaveHull::get_waffle_offset(cfg)); outer = ochull.to_expolygons(); } @@ -673,17 +674,17 @@ public: template ExPolygon offset_contour_only(const ExPolygon &poly, coord_t delta, Args...args) { - ExPolygons tmp = offset_ex(poly.contour, delta, args...); - + ExPolygons tmp = offset_ex(poly.contour, float(delta), args...); + if (tmp.empty()) return {}; - + Polygons holes = poly.holes; for (auto &h : holes) h.reverse(); - + tmp = diff_ex(to_polygons(tmp), holes); - + if (tmp.empty()) return {}; - + return tmp.front(); } @@ -691,17 +692,17 @@ bool add_cavity(Contour3D &pad, ExPolygon &top_poly, const PadConfig3D &cfg, ThrowOnCancel thr) { auto logerr = []{BOOST_LOG_TRIVIAL(error)<<"Could not create pad cavity";}; - + double wing_distance = cfg.wing_height / std::tan(cfg.slope); coord_t delta_inner = -scaled(cfg.thickness + wing_distance); coord_t delta_middle = -scaled(cfg.thickness); ExPolygon inner_base = offset_contour_only(top_poly, delta_inner); ExPolygon middle_base = offset_contour_only(top_poly, delta_middle); - + if (inner_base.empty() || middle_base.empty()) { logerr(); return false; } - + ExPolygons pdiff = diff_ex(top_poly, middle_base.contour); - + if (pdiff.size() != 1) { logerr(); return false; } top_poly = pdiff.front(); @@ -721,28 +722,28 @@ Contour3D create_outer_pad_geometry(const ExPolygons & skeleton, ThrowOnCancel thr) { Contour3D ret; - + for (const ExPolygon &pad_part : skeleton) { ExPolygon top_poly{pad_part}; ExPolygon bottom_poly = offset_contour_only(pad_part, -scaled(cfg.bottom_offset())); - + if (bottom_poly.empty()) continue; - + double z_min = -cfg.height, z_max = 0; ret.merge(walls(top_poly.contour, bottom_poly.contour, z_max, z_min, cfg.bottom_offset(), thr)); - - if (cfg.wing_height > 0. && add_cavity(ret, top_poly, cfg, thr)) + + if (cfg.wing_height > 0. && add_cavity(ret, top_poly, cfg, thr)) z_max = -cfg.wing_height; - + for (auto &h : bottom_poly.holes) ret.merge(straight_walls(h, z_max, z_min, thr)); - + ret.merge(triangulate_expolygon_3d(bottom_poly, z_min, NORMALS_DOWN)); - ret.merge(triangulate_expolygon_3d(top_poly, NORMALS_UP)); + ret.merge(triangulate_expolygon_3d(top_poly, NORMALS_UP)); } - + return ret; } @@ -751,18 +752,18 @@ Contour3D create_inner_pad_geometry(const ExPolygons & skeleton, ThrowOnCancel thr) { Contour3D ret; - + double z_max = 0., z_min = -cfg.height; for (const ExPolygon &pad_part : skeleton) { ret.merge(straight_walls(pad_part.contour, z_max, z_min,thr)); - + for (auto &h : pad_part.holes) ret.merge(straight_walls(h, z_max, z_min, thr)); - + ret.merge(triangulate_expolygon_3d(pad_part, z_min, NORMALS_DOWN)); ret.merge(triangulate_expolygon_3d(pad_part, z_max, NORMALS_UP)); } - + return ret; } @@ -776,7 +777,7 @@ Contour3D create_pad_geometry(const PadSkeleton &skelet, svg.draw(skelet.inner, "blue"); svg.Close(); #endif - + PadConfig3D cfg3d(cfg); return create_outer_pad_geometry(skelet.outer, cfg3d, thr) .merge(create_inner_pad_geometry(skelet.inner, cfg3d, thr)); @@ -809,13 +810,13 @@ void pad_blueprint(const TriangleMesh & mesh, { if (mesh.empty()) return; TriangleMeshSlicer slicer(&mesh); - + auto out = reserve_vector(heights.size()); slicer.slice(heights, 0.f, &out, thrfn); - + size_t count = 0; for(auto& o : out) count += o.size(); - + // Unification is expensive, a simplify also speeds up the pad generation auto tmp = reserve_vector(count); for(ExPolygons& o : out) @@ -823,9 +824,9 @@ void pad_blueprint(const TriangleMesh & mesh, auto&& exss = e.simplify(scaled(0.1)); for(ExPolygon& ep : exss) tmp.emplace_back(std::move(ep)); } - + ExPolygons utmp = union_ex(tmp); - + for(auto& o : utmp) { auto&& smp = o.simplify(scaled(0.1)); output.insert(output.end(), smp.begin(), smp.end()); @@ -839,7 +840,7 @@ void pad_blueprint(const TriangleMesh &mesh, ThrowOnCancel thrfn) { float gnd = float(mesh.bounding_box().min(Z)); - + std::vector slicegrid = grid(gnd, gnd + h, layerh); pad_blueprint(mesh, output, slicegrid, thrfn); } @@ -855,10 +856,14 @@ void create_pad(const ExPolygons &sup_blueprint, } std::string PadConfig::validate() const -{ - if (bottom_offset() > brim_size_mm + wing_distance()) - return L("Pad brim size is too low for the current slope."); - +{ + static const double constexpr MIN_BRIM_SIZE_MM = .1; + + if (brim_size_mm < MIN_BRIM_SIZE_MM || + bottom_offset() > brim_size_mm + wing_distance() || + ConcaveHull::get_waffle_offset(*this) <= MIN_BRIM_SIZE_MM) + return L("Pad brim size is too small for the current configuration."); + return ""; } diff --git a/src/libslic3r/SLA/SLAPad.hpp b/src/libslic3r/SLA/SLAPad.hpp index 96b5834c2..4abcdd281 100644 --- a/src/libslic3r/SLA/SLAPad.hpp +++ b/src/libslic3r/SLA/SLAPad.hpp @@ -4,6 +4,7 @@ #include #include #include +#include namespace Slic3r { @@ -26,8 +27,8 @@ void pad_blueprint( ThrowOnCancel thrfn = [] {}); // Function that throws if cancel was requested void pad_blueprint( - const TriangleMesh &mesh, - ExPolygons & output, + const TriangleMesh &mesh, + ExPolygons & output, float samplingheight = 0.1f, // The height range to sample float layerheight = 0.05f, // The sampling height ThrowOnCancel thrfn = [] {}); @@ -38,7 +39,7 @@ struct PadConfig { double max_merge_dist_mm = 50; double wall_slope = std::atan(1.0); // Universal constant for Pi/4 double brim_size_mm = 1.6; - + struct EmbedObject { double object_gap_mm = 1.; double stick_stride_mm = 10.; @@ -48,7 +49,7 @@ struct PadConfig { bool everywhere = false; operator bool() const { return enabled; } } embed_object; - + inline PadConfig() = default; inline PadConfig(double thickness, double height, @@ -74,10 +75,10 @@ struct PadConfig { { return wall_height_mm + wall_thickness_mm; } - - /// Returns the elevation needed for compensating the pad. + + /// Returns the elevation needed for compensating the pad. inline double required_elevation() const { return wall_thickness_mm; } - + std::string validate() const; }; diff --git a/src/libslic3r/SLA/SLARaster.hpp b/src/libslic3r/SLA/SLARaster.hpp index 23b06c469..e8d6ec747 100644 --- a/src/libslic3r/SLA/SLARaster.hpp +++ b/src/libslic3r/SLA/SLARaster.hpp @@ -15,8 +15,6 @@ namespace ClipperLib { struct Polygon; } namespace Slic3r { namespace sla { -class Raster; - /** * @brief Raster captures an anti-aliased monochrome canvas where vectorial * polygons can be rasterized. Fill color is always white and the background is diff --git a/src/libslic3r/SLA/SLASupportTree.cpp b/src/libslic3r/SLA/SLASupportTree.cpp index 1faf20f34..fea8bf731 100644 --- a/src/libslic3r/SLA/SLASupportTree.cpp +++ b/src/libslic3r/SLA/SLASupportTree.cpp @@ -70,7 +70,7 @@ std::vector SupportTree::slice( auto bb = pad_mesh.bounding_box(); auto maxzit = std::upper_bound(grid.begin(), grid.end(), bb.max.z()); - long cap = grid.end() - maxzit; + auto cap = grid.end() - maxzit; auto padgrid = reserve_vector(size_t(cap > 0 ? cap : 0)); std::copy(grid.begin(), maxzit, std::back_inserter(padgrid)); diff --git a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp index 88ee3ffac..7f38cf280 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp +++ b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp @@ -96,6 +96,8 @@ struct Head { // If there is a pillar connecting to this head, then the id will be set. long pillar_id = ID_UNSET; + long bridge_id = ID_UNSET; + inline void invalidate() { id = ID_UNSET; } inline bool is_valid() const { return id >= 0; } @@ -331,10 +333,16 @@ public: std::lock_guard lk(m_mutex); assert(pillar.id >= 0 && size_t(pillar.id) < m_pillars.size()); - if(pillar.id >= 0 && size_t(pillar.id) < m_pillars.size()) + if(pillar.id >= 0 && size_t(pillar.id) < m_pillars.size()) m_pillars[size_t(pillar.id)].links++; } + unsigned bridgecount(const Pillar &pillar) const { + std::lock_guard lk(m_mutex); + assert(pillar.id >= 0 && size_t(pillar.id) < m_pillars.size()); + return pillar.bridges; + } + template Pillar& add_pillar(Args&&...args) { std::lock_guard lk(m_mutex); diff --git a/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp index 2404b2cdf..72673babf 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp +++ b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp @@ -345,7 +345,7 @@ EigenMesh3D::hit_result SupportTreeBuildsteps::bridge_mesh_intersect( } bool SupportTreeBuildsteps::interconnect(const Pillar &pillar, - const Pillar &nextpillar) + const Pillar &nextpillar) { // We need to get the starting point of the zig-zag pattern. We have to // be aware that the two head junctions are at different heights. We @@ -438,13 +438,14 @@ bool SupportTreeBuildsteps::interconnect(const Pillar &pillar, } bool SupportTreeBuildsteps::connect_to_nearpillar(const Head &head, - long nearpillar_id) + long nearpillar_id) { auto nearpillar = [this, nearpillar_id]() { return m_builder.pillar(nearpillar_id); }; - if (nearpillar().bridges > m_cfg.max_bridges_on_pillar) return false; + if (m_builder.bridgecount(nearpillar()) > m_cfg.max_bridges_on_pillar) + return false; Vec3d headjp = head.junction_point(); Vec3d nearjp_u = nearpillar().startpoint(); @@ -502,14 +503,21 @@ bool SupportTreeBuildsteps::connect_to_nearpillar(const Head &head, // Cannot insert the bridge. (further search might not worth the hassle) if(t < distance(bridgestart, bridgeend)) return false; - // A partial pillar is needed under the starting head. - if(zdiff > 0) { - m_builder.add_pillar(unsigned(head.id), bridgestart, r); - m_builder.add_junction(bridgestart, r); - } + std::lock_guard lk(m_bridge_mutex); - m_builder.add_bridge(bridgestart, bridgeend, r); - m_builder.increment_bridges(nearpillar()); + if (m_builder.bridgecount(nearpillar()) < m_cfg.max_bridges_on_pillar) { + // A partial pillar is needed under the starting head. + if(zdiff > 0) { + m_builder.add_pillar(unsigned(head.id), bridgestart, r); + m_builder.add_junction(bridgestart, r); + } + + auto &br = m_builder.add_bridge(bridgestart, bridgeend, r); + m_builder.increment_bridges(nearpillar()); + if (head.pillar_id == ID_UNSET) + m_builder.head(unsigned(head.id)).bridge_id = br.id; + + } else return false; return true; } @@ -550,9 +558,9 @@ bool SupportTreeBuildsteps::search_pillar_and_connect(const Head &head) } void SupportTreeBuildsteps::create_ground_pillar(const Vec3d &jp, - const Vec3d &sourcedir, - double radius, - long head_id) + const Vec3d &sourcedir, + double radius, + long head_id) { // People were killed for this number (seriously) static const double SQR2 = std::sqrt(2.0); @@ -646,10 +654,8 @@ void SupportTreeBuildsteps::create_ground_pillar(const Vec3d &jp, if (normal_mode) { Pillar &plr = head_id >= 0 - ? m_builder.add_pillar(unsigned(head_id), - endp, - radius) - : m_builder.add_pillar(jp, endp, radius); + ? m_builder.add_pillar(unsigned(head_id), endp, radius) + : m_builder.add_pillar(jp, endp, radius); if (can_add_base) plr.add_base(m_cfg.base_height_mm, m_cfg.base_radius_mm); @@ -963,7 +969,7 @@ void SupportTreeBuildsteps::routing_to_model() m_builder.add_bridge(hjp, endp, head.r_back_mm); m_builder.add_junction(endp, head.r_back_mm); - this->create_ground_pillar(endp, dir, head.r_back_mm); + this->create_ground_pillar(endp, dir, head.r_back_mm, head.id); }; std::vector modelpillars; @@ -1240,12 +1246,15 @@ void SupportTreeBuildsteps::interconnect_pillars() needpillars = 3; else if (pillar().links < 2 && pillar().height > H2) { // Not enough neighbors to support this pillar - needpillars = 2 - pillar().links; + needpillars = 2; } else if (pillar().links < 1 && pillar().height > H1) { // No neighbors could be found and the pillar is too long. needpillars = 1; } + needpillars = std::max(pillar().links, needpillars) - pillar().links; + if (needpillars == 0) continue; + // Search for new pillar locations: bool found = false; @@ -1318,6 +1327,7 @@ void SupportTreeBuildsteps::interconnect_pillars() newpills.emplace_back(pp.id); m_builder.increment_links(pillar()); + m_builder.increment_links(pp); } } diff --git a/src/libslic3r/SLA/SLASupportTreeBuildsteps.hpp b/src/libslic3r/SLA/SLASupportTreeBuildsteps.hpp index b9f8db79d..b92e44dbd 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuildsteps.hpp +++ b/src/libslic3r/SLA/SLASupportTreeBuildsteps.hpp @@ -32,7 +32,7 @@ long cluster_centroid(const ClusterEl& clust, case 2: /* if two elements, there is no center */ return 0; default: ; } - + // The function works by calculating for each point the average distance // from all the other points in the cluster. We create a selector bitmask of // the same size as the cluster. The bitmask will have two true bits and @@ -40,30 +40,30 @@ long cluster_centroid(const ClusterEl& clust, // permutations of the bitmask (combinations of two points). Get the // distance for the two points and add the distance to the averages. // The point with the smallest average than wins. - + // The complexity should be O(n^2) but we will mostly apply this function // for small clusters only (cca 3 elements) - + std::vector sel(clust.size(), false); // create full zero bitmask std::fill(sel.end() - 2, sel.end(), true); // insert the two ones std::vector avgs(clust.size(), 0.0); // store the average distances - + do { std::array idx; for(size_t i = 0, j = 0; i < clust.size(); i++) if(sel[i]) idx[j++] = i; - + double d = df(pointfn(clust[idx[0]]), pointfn(clust[idx[1]])); - + // add the distance to the sums for both associated points for(auto i : idx) avgs[i] += d; - + // now continue with the next permutation of the bitmask with two 1s } while(std::next_permutation(sel.begin(), sel.end())); - + // Divide by point size in the cluster to get the average (may be redundant) for(auto& a : avgs) a /= clust.size(); - + // get the lowest average distance and return the index auto minit = std::min_element(avgs.begin(), avgs.end()); return long(minit - avgs.begin()); @@ -77,45 +77,45 @@ class PillarIndex { PointIndex m_index; using Mutex = ccr::BlockingMutex; mutable Mutex m_mutex; - + public: - + template inline void guarded_insert(Args&&...args) { std::lock_guard lck(m_mutex); m_index.insert(std::forward(args)...); } - + template inline std::vector guarded_query(Args&&...args) const { std::lock_guard lck(m_mutex); return m_index.query(std::forward(args)...); } - + template inline void insert(Args&&...args) { m_index.insert(std::forward(args)...); } - + template inline std::vector query(Args&&...args) const { return m_index.query(std::forward(args)...); } - + template inline void foreach(Fn fn) { m_index.foreach(fn); } template inline void guarded_foreach(Fn fn) { std::lock_guard lck(m_mutex); m_index.foreach(fn); } - + PointIndex guarded_clone() { std::lock_guard lck(m_mutex); return m_index; - } + } }; // Helper function for pillar interconnection where pairs of already connected @@ -132,13 +132,13 @@ IntegerOnly pairhash(I a, I b) static const auto constexpr Ibits = int(sizeof(I) * CHAR_BIT); static const auto constexpr DoubleIbits = int(sizeof(DoubleI) * CHAR_BIT); static const auto constexpr shift = DoubleIbits / 2 < Ibits ? Ibits / 2 : Ibits; - + I g = min(a, b), l = max(a, b); - + // Assume the hash will fit into the output variable - assert((g ? (ceil(log2(g))) : 0) < shift); - assert((l ? (ceil(log2(l))) : 0) < shift); - + assert((g ? (ceil(log2(g))) : 0) <= shift); + assert((l ? (ceil(log2(l))) : 0) <= shift); + return (DoubleI(g) << shift) + l; } @@ -146,42 +146,45 @@ class SupportTreeBuildsteps { const SupportConfig& m_cfg; const EigenMesh3D& m_mesh; const std::vector& m_support_pts; - + using PtIndices = std::vector; - + PtIndices m_iheads; // support points with pinhead PtIndices m_iheadless; // headless support points - + // supp. pts. connecting to model: point index and the ray hit data std::vector> m_iheads_onmodel; - + // normals for support points from model faces. PointSet m_support_nmls; - + // Clusters of points which can reach the ground directly and can be // bridged to one central pillar std::vector m_pillar_clusters; - + // This algorithm uses the SupportTreeBuilder class to fill gradually // the support elements (heads, pillars, bridges, ...) SupportTreeBuilder& m_builder; - + // support points in Eigen/IGL format PointSet m_points; - + // throw if canceled: It will be called many times so a shorthand will // come in handy. ThrowOnCancel m_thr; - + // A spatial index to easily find strong pillars to connect to. PillarIndex m_pillar_index; + // When bridging heads to pillars... TODO: find a cleaner solution + ccr::BlockingMutex m_bridge_mutex; + inline double ray_mesh_intersect(const Vec3d& s, const Vec3d& dir) { return m_mesh.query_ray_hit(s, dir).distance(); } - + // This function will test if a future pinhead would not collide with the // model geometry. It does not take a 'Head' object because those are // created after this test. Parameters: s: The touching point on the model @@ -199,7 +202,7 @@ class SupportTreeBuildsteps { double r_pin, double r_back, double width); - + // Checking bridge (pillar and stick as well) intersection with the model. // If the function is used for headless sticks, the ins_check parameter // have to be true as the beginning of the stick might be inside the model @@ -213,37 +216,37 @@ class SupportTreeBuildsteps { const Vec3d& dir, double r, bool ins_check = false); - + // Helper function for interconnecting two pillars with zig-zag bridges. bool interconnect(const Pillar& pillar, const Pillar& nextpillar); - + // For connecting a head to a nearby pillar. bool connect_to_nearpillar(const Head& head, long nearpillar_id); - + bool search_pillar_and_connect(const Head& head); - + // This is a proxy function for pillar creation which will mind the gap // between the pad and the model bottom in zero elevation mode. void create_ground_pillar(const Vec3d &jp, const Vec3d &sourcedir, double radius, - long head_id = ID_UNSET); + long head_id = ID_UNSET); public: SupportTreeBuildsteps(SupportTreeBuilder & builder, const SupportableMesh &sm); - + // Now let's define the individual steps of the support generation algorithm - + // Filtering step: here we will discard inappropriate support points // and decide the future of the appropriate ones. We will check if a // pinhead is applicable and adjust its angle at each support point. We // will also merge the support points that are just too close and can // be considered as one. void filter(); - + // Pinhead creation: based on the filtering results, the Head objects // will be constructed (together with their triangle meshes). void add_pinheads(); - + // Further classification of the support points with pinheads. If the // ground is directly reachable through a vertical line parallel to the // Z axis we consider a support point as pillar candidate. If touches @@ -253,28 +256,28 @@ public: // these groups may or may not be interconnected. Here we only run the // clustering algorithm. void classify(); - + // Step: Routing the ground connected pinheads, and interconnecting // them with additional (angled) bridges. Not all of these pinheads // will be a full pillar (ground connected). Some will connect to a // nearby pillar using a bridge. The max number of such side-heads for // a central pillar is limited to avoid bad weight distribution. void routing_to_ground(); - + // Step: routing the pinheads that would connect to the model surface // along the Z axis downwards. For now these will actually be connected with // the model surface with a flipped pinhead. In the future here we could use // some smart algorithms to search for a safe path to the ground or to a // nearby pillar that can hold the supported weight. void routing_to_model(); - + void interconnect_pillars(); - + // Step: process the support points where there is not enough space for a // full pinhead. In this case we will use a rounded sphere as a touching // point and use a thinner bridge (let's call it a stick). void routing_headless (); - + inline void merge_result() { m_builder.merged_mesh(); } static bool execute(SupportTreeBuilder & builder, const SupportableMesh &sm); diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 5d847573d..9af2adcc6 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -5,6 +5,7 @@ #include #include #include +#include #include "libslic3r.h" diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 06733d054..fcd70d636 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -7,7 +7,10 @@ set(TEST_DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data) file(TO_NATIVE_PATH "${TEST_DATA_DIR}" TEST_DATA_DIR) add_library(test_common INTERFACE) -target_compile_definitions(test_common INTERFACE TEST_DATA_DIR="${TEST_DATA_DIR}") +target_compile_definitions(test_common INTERFACE TEST_DATA_DIR=R"\(${TEST_DATA_DIR}\)") target_link_libraries(test_common INTERFACE GTest::GTest GTest::Main) +if (APPLE) + target_link_libraries(test_common INTERFACE "-liconv -framework IOKit" "-framework CoreFoundation" -lc++) +endif() add_subdirectory(sla_print) diff --git a/tests/sla_print/sla_print_tests_main.cpp b/tests/sla_print/sla_print_tests_main.cpp index 8e78322ce..f1ac8753b 100644 --- a/tests/sla_print/sla_print_tests_main.cpp +++ b/tests/sla_print/sla_print_tests_main.cpp @@ -1,4 +1,6 @@ -#include +#include +#include +#include // Debug #include @@ -18,10 +20,10 @@ #include "libslic3r/SVG.hpp" -#if defined(WIN32) || defined(_WIN32) -#define PATH_SEPARATOR "\\" -#else -#define PATH_SEPARATOR "/" +#if defined(WIN32) || defined(_WIN32) +#define PATH_SEPARATOR R"(\)" +#else +#define PATH_SEPARATOR R"(/)" #endif namespace { @@ -30,7 +32,7 @@ using namespace Slic3r; TriangleMesh load_model(const std::string &obj_filename) { TriangleMesh mesh; - auto fpath = std::string(TEST_DATA_DIR PATH_SEPARATOR) + obj_filename; + auto fpath = TEST_DATA_DIR PATH_SEPARATOR + obj_filename; load_obj(fpath.c_str(), &mesh); return mesh; } @@ -46,21 +48,21 @@ void check_validity(const TriangleMesh &input_mesh, ASSUME_NO_REPAIR) { TriangleMesh mesh{input_mesh}; - + if (flags & ASSUME_NO_EMPTY) { ASSERT_FALSE(mesh.empty()); - } else if (mesh.empty()) + } else if (mesh.empty()) return; // If it can be empty and it is, there is nothing left to do. - + ASSERT_TRUE(stl_validate(&mesh.stl)); - + bool do_update_shared_vertices = false; mesh.repair(do_update_shared_vertices); - + if (flags & ASSUME_NO_REPAIR) { ASSERT_FALSE(mesh.needed_repair()); } - + if (flags & ASSUME_MANIFOLD) { mesh.require_shared_vertices(); if (!mesh.is_manifold()) mesh.WriteOBJFile("non_manifold.obj"); @@ -80,21 +82,21 @@ void test_pad(const std::string & obj_filename, PadByproducts & out) { ASSERT_TRUE(padcfg.validate().empty()); - + TriangleMesh mesh = load_model(obj_filename); - + ASSERT_FALSE(mesh.empty()); - + // Create pad skeleton only from the model Slic3r::sla::pad_blueprint(mesh, out.model_contours); - + ASSERT_FALSE(out.model_contours.empty()); - + // Create the pad geometry for the model contours only Slic3r::sla::create_pad({}, out.model_contours, out.mesh, padcfg); - + check_validity(out.mesh); - + auto bb = out.mesh.bounding_box(); ASSERT_DOUBLE_EQ(bb.max.z() - bb.min.z(), padcfg.full_height()); @@ -122,19 +124,25 @@ void check_support_tree_integrity(const sla::SupportTreeBuilder &stree, double gnd = stree.ground_level; double H1 = cfg.max_solo_pillar_height_mm; double H2 = cfg.max_dual_pillar_height_mm; + + for (const sla::Head &head : stree.heads()) { + ASSERT_TRUE(!head.is_valid() || + head.pillar_id != sla::ID_UNSET || + head.bridge_id != sla::ID_UNSET); + } for (const sla::Pillar &pillar : stree.pillars()) { if (std::abs(pillar.endpoint().z() - gnd) < EPSILON) { double h = pillar.height; - + if (h > H1) ASSERT_GE(pillar.links, 1); - else if(h > H2) { ASSERT_GE(pillar.links, 2); } + else if(h > H2) { ASSERT_GE(pillar.links, 2); } } - + ASSERT_LE(pillar.links, cfg.pillar_cascade_neighbors); ASSERT_LE(pillar.bridges, cfg.max_bridges_on_pillar); } - + double max_bridgelen = 0.; auto chck_bridge = [&cfg](const sla::Bridge &bridge, double &max_brlen) { Vec3d n = bridge.endp - bridge.startp; @@ -144,15 +152,15 @@ void check_support_tree_integrity(const sla::SupportTreeBuilder &stree, double z = n.z(); double polar = std::acos(z / d); double slope = -polar + PI / 2.; - ASSERT_TRUE(slope >= cfg.bridge_slope || slope <= -cfg.bridge_slope); + ASSERT_GE(std::abs(slope), cfg.bridge_slope - EPSILON); }; - + for (auto &bridge : stree.bridges()) chck_bridge(bridge, max_bridgelen); ASSERT_LE(max_bridgelen, cfg.max_bridge_length_mm); - + max_bridgelen = 0; for (auto &bridge : stree.crossbridges()) chck_bridge(bridge, max_bridgelen); - + double md = cfg.max_pillar_link_distance_mm / std::cos(-cfg.bridge_slope); ASSERT_LE(max_bridgelen, md); } @@ -163,9 +171,9 @@ void test_supports(const std::string & obj_filename, { using namespace Slic3r; TriangleMesh mesh = load_model(obj_filename); - + ASSERT_FALSE(mesh.empty()); - + TriangleMeshSlicer slicer{&mesh}; auto bb = mesh.bounding_box(); @@ -176,50 +184,50 @@ void test_supports(const std::string & obj_filename, out.slicegrid = grid(float(gnd), float(zmax), layer_h); slicer.slice(out.slicegrid , CLOSING_RADIUS, &out.model_slices, []{}); - + // Create the special index-triangle mesh with spatial indexing which // is the input of the support point and support mesh generators sla::EigenMesh3D emesh{mesh}; - + // Create the support point generator sla::SLAAutoSupports::Config autogencfg; autogencfg.head_diameter = float(2 * supportcfg.head_front_radius_mm); sla::SLAAutoSupports point_gen{emesh, out.model_slices, out.slicegrid, autogencfg, [] {}, [](int) {}}; - + // Get the calculated support points. std::vector support_points = point_gen.output(); - + int validityflags = ASSUME_NO_REPAIR; - + // If there is no elevation, support points shall be removed from the // bottom of the object. if (supportcfg.object_elevation_mm < EPSILON) { sla::remove_bottom_points(support_points, zmin, - supportcfg.base_height_mm); + supportcfg.base_height_mm); } else { // Should be support points at least on the bottom of the model ASSERT_FALSE(support_points.empty()); - + // Also the support mesh should not be empty. validityflags |= ASSUME_NO_EMPTY; } - + // Generate the actual support tree sla::SupportTreeBuilder treebuilder; treebuilder.build(sla::SupportableMesh{emesh, support_points, supportcfg}); - + check_support_tree_integrity(treebuilder, supportcfg); - + const TriangleMesh &output_mesh = treebuilder.retrieve_mesh(); - + check_validity(output_mesh, validityflags); - + // Quick check if the dimensions and placement of supports are correct auto obb = output_mesh.bounding_box(); ASSERT_DOUBLE_EQ(obb.min.z(), zmin - supportcfg.object_elevation_mm); ASSERT_LE(obb.max.z(), zmax); - + // Move out the support tree into the byproducts, we can examine it further // in various tests. out.supporttree = std::move(treebuilder); @@ -237,31 +245,31 @@ void test_support_model_collision( const sla::SupportConfig &input_supportcfg = {}) { SupportByproducts byproducts; - + sla::SupportConfig supportcfg = input_supportcfg; - + // Set head penetration to a small negative value which should ensure that // the supports will not touch the model body. supportcfg.head_penetration_mm = -0.1; - + test_supports(obj_filename, supportcfg, byproducts); - + // Slice the support mesh given the slice grid of the model. std::vector support_slices = byproducts.supporttree.slice(byproducts.slicegrid, CLOSING_RADIUS); - + // The slices originate from the same slice grid so the numbers must match ASSERT_EQ(support_slices.size(), byproducts.model_slices.size()); - + bool notouch = true; for (size_t n = 0; notouch && n < support_slices.size(); ++n) { const ExPolygons &sup_slice = support_slices[n]; const ExPolygons &mod_slice = byproducts.model_slices[n]; - + Polygons intersections = intersection(sup_slice, mod_slice); notouch = notouch && intersections.empty(); } - + ASSERT_TRUE(notouch); } @@ -283,25 +291,52 @@ const char *const SUPPORT_TEST_MODELS[] = { } // namespace +// Test pair hash for 'nums' random number pairs. template void test_pairhash() { - std::map > ints; - for (I i = 0; i < 1000; ++i) - for (I j = 0; j < 1000; ++j) { - if (j != i) { - II hash_ij = sla::pairhash(i, j); - II hash_ji = sla::pairhash(j, i); - ASSERT_EQ(hash_ij, hash_ji); - - auto it = ints.find(hash_ij); - - if (it != ints.end()) { - ASSERT_TRUE( - (it->second.first == i && it->second.second == j) || - (it->second.first == j && it->second.second == i)); - } else ints[hash_ij] = std::make_pair(i, j); - } - } + const constexpr size_t nums = 1000; + I A[nums] = {0}, B[nums] = {0}; + std::unordered_set CH; + std::unordered_map> ints; + + std::random_device rd; + std::mt19937 gen(rd()); + + const I Ibits = int(sizeof(I) * CHAR_BIT); + const II IIbits = int(sizeof(II) * CHAR_BIT); + const int bits = IIbits / 2 < Ibits ? Ibits / 2 : Ibits; + + const I Imax = I(std::pow(2., bits) - 1); + std::uniform_int_distribution dis(0, Imax); + + for (size_t i = 0; i < nums;) { + I a = dis(gen); + if (CH.find(a) == CH.end()) { CH.insert(a); A[i] = a; ++i; } + } + + for (size_t i = 0; i < nums;) { + I b = dis(gen); + if (CH.find(b) == CH.end()) { CH.insert(b); B[i] = b; ++i; } + } + + for (size_t i = 0; i < nums; ++i) { + I a = A[i], b = B[i]; + + ASSERT_TRUE(a != b); + + II hash_ab = sla::pairhash(a, b); + II hash_ba = sla::pairhash(b, a); + ASSERT_EQ(hash_ab, hash_ba); + + auto it = ints.find(hash_ab); + + if (it != ints.end()) { + ASSERT_TRUE( + (it->second.first == a && it->second.second == b) || + (it->second.first == b && it->second.second == a)); + } else + ints[hash_ab] = std::make_pair(a, b); + } } TEST(SLASupportGeneration, PillarPairHashShouldBeUnique) { @@ -312,61 +347,61 @@ TEST(SLASupportGeneration, PillarPairHashShouldBeUnique) { TEST(SLASupportGeneration, FlatPadGeometryIsValid) { sla::PadConfig padcfg; - + // Disable wings padcfg.wall_height_mm = .0; - + for (auto &fname : BELOW_PAD_TEST_OBJECTS) test_pad(fname, padcfg); } TEST(SLASupportGeneration, WingedPadGeometryIsValid) { sla::PadConfig padcfg; - + // Add some wings to the pad to test the cavity padcfg.wall_height_mm = 1.; - + for (auto &fname : BELOW_PAD_TEST_OBJECTS) test_pad(fname, padcfg); } TEST(SLASupportGeneration, FlatPadAroundObjectIsValid) { sla::PadConfig padcfg; - + // Add some wings to the pad to test the cavity padcfg.wall_height_mm = 0.; // padcfg.embed_object.stick_stride_mm = 0.; padcfg.embed_object.enabled = true; padcfg.embed_object.everywhere = true; - + for (auto &fname : AROUND_PAD_TEST_OBJECTS) test_pad(fname, padcfg); } TEST(SLASupportGeneration, WingedPadAroundObjectIsValid) { sla::PadConfig padcfg; - + // Add some wings to the pad to test the cavity padcfg.wall_height_mm = 1.; padcfg.embed_object.enabled = true; padcfg.embed_object.everywhere = true; - + for (auto &fname : AROUND_PAD_TEST_OBJECTS) test_pad(fname, padcfg); } TEST(SLASupportGeneration, ElevatedSupportGeometryIsValid) { sla::SupportConfig supportcfg; supportcfg.object_elevation_mm = 5.; - + for (auto fname : SUPPORT_TEST_MODELS) test_supports(fname); } TEST(SLASupportGeneration, FloorSupportGeometryIsValid) { sla::SupportConfig supportcfg; supportcfg.object_elevation_mm = 0; - + for (auto &fname: SUPPORT_TEST_MODELS) test_supports(fname, supportcfg); } TEST(SLASupportGeneration, SupportsDoNotPierceModel) { - + sla::SupportConfig supportcfg; for (auto fname : SUPPORT_TEST_MODELS) @@ -382,7 +417,7 @@ TEST(SLARasterOutput, InitializedRasterShouldBeNONEmpty) { // Default Prusa SL1 display parameters sla::Raster::Resolution res{2560, 1440}; sla::Raster::PixelDim pixdim{120. / res.width_px, 68. / res.height_px}; - + sla::Raster raster; raster.reset(res, pixdim); ASSERT_FALSE(raster.empty()); @@ -404,54 +439,54 @@ static void check_raster_transformations(sla::Raster::Orientation o, double disp_w = 120., disp_h = 68.; sla::Raster::Resolution res{2560, 1440}; sla::Raster::PixelDim pixdim{disp_w / res.width_px, disp_h / res.height_px}; - + auto bb = BoundingBox({0, 0}, {scaled(disp_w), scaled(disp_h)}); sla::Raster::Trafo trafo{o, mirroring}; trafo.origin_x = bb.center().x(); trafo.origin_y = bb.center().y(); - + sla::Raster raster{res, pixdim, trafo}; - + // create box of size 32x32 pixels (not 1x1 to avoid antialiasing errors) coord_t pw = 32 * coord_t(std::ceil(scaled(pixdim.w_mm))); coord_t ph = 32 * coord_t(std::ceil(scaled(pixdim.h_mm))); ExPolygon box; box.contour.points = {{-pw, -ph}, {pw, -ph}, {pw, ph}, {-pw, ph}}; - + double tr_x = scaled(20.), tr_y = tr_x; - + box.translate(tr_x, tr_y); ExPolygon expected_box = box; - + // Now calculate the position of the translated box according to output // trafo. if (o == sla::Raster::Orientation::roPortrait) expected_box.rotate(PI / 2.); - + if (mirroring[X]) for (auto &p : expected_box.contour.points) p.x() = -p.x(); - + if (mirroring[Y]) for (auto &p : expected_box.contour.points) p.y() = -p.y(); - + raster.draw(box); - + Point expected_coords = expected_box.contour.bounding_box().center(); double rx = unscaled(expected_coords.x() + bb.center().x()) / pixdim.w_mm; double ry = unscaled(expected_coords.y() + bb.center().y()) / pixdim.h_mm; auto w = size_t(std::floor(rx)); auto h = res.height_px - size_t(std::floor(ry)); - + ASSERT_TRUE(w < res.width_px && h < res.height_px); - + auto px = raster.read_pixel(w, h); - + if (px != FullWhite) { sla::PNGImage img; std::fstream outf("out.png", std::ios::out); - - outf << img.serialize(raster); + + outf << img.serialize(raster); } - + ASSERT_EQ(px, FullWhite); } @@ -472,7 +507,7 @@ static ExPolygon square_with_hole(double v) { ExPolygon poly; coord_t V = scaled(v / 2.); - + poly.contour.points = {{-V, -V}, {V, -V}, {V, V}, {-V, V}}; poly.holes.emplace_back(); V = V / 2; @@ -488,16 +523,16 @@ static double pixel_area(TPixel px, const sla::Raster::PixelDim &pxdim) static double raster_white_area(const sla::Raster &raster) { if (raster.empty()) return std::nan(""); - + auto res = raster.resolution(); double a = 0; - + for (size_t x = 0; x < res.width_px; ++x) for (size_t y = 0; y < res.height_px; ++y) { auto px = raster.read_pixel(x, y); a += pixel_area(px, raster.pixel_dimensions()); } - + return a; } @@ -505,15 +540,15 @@ static double predict_error(const ExPolygon &p, const sla::Raster::PixelDim &pd) { auto lines = p.lines(); double pix_err = pixel_area(FullWhite, pd) / 2.; - + // Worst case is when a line is parallel to the shorter axis of one pixel, // when the line will be composed of the max number of pixels double pix_l = std::min(pd.h_mm, pd.w_mm); - + double error = 0.; for (auto &l : lines) error += (unscaled(l.length()) / pix_l) * pix_err; - + return error; } @@ -524,26 +559,26 @@ TEST(SLARasterOutput, RasterizedPolygonAreaShouldMatch) { sla::Raster raster{res, pixdim}; auto bb = BoundingBox({0, 0}, {scaled(disp_w), scaled(disp_h)}); - + ExPolygon poly = square_with_hole(10.); poly.translate(bb.center().x(), bb.center().y()); raster.draw(poly); - + double a = poly.area() / (scaled(1.) * scaled(1.)); double ra = raster_white_area(raster); double diff = std::abs(a - ra); - + ASSERT_LE(diff, predict_error(poly, pixdim)); - + raster.clear(); poly = square_with_hole(60.); poly.translate(bb.center().x(), bb.center().y()); raster.draw(poly); - + a = poly.area() / (scaled(1.) * scaled(1.)); ra = raster_white_area(raster); diff = std::abs(a - ra); - + ASSERT_LE(diff, predict_error(poly, pixdim)); } From 9e01740db66a822d4f9e90c39037649bd96e1093 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 2 Oct 2019 15:02:13 +0200 Subject: [PATCH 29/53] More improvements --- src/slic3r/GUI/GUI_ObjectList.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index f8e708200..88cf24509 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -896,20 +896,22 @@ void ObjectList::extruder_editing() const int column_width = GetColumn(colExtruder)->GetWidth(); wxPoint pos = get_mouse_position_in_control(); + wxSize size = wxSize(column_width, -1); pos.x = GetColumn(colName)->GetWidth() + GetColumn(colPrint)->GetWidth(); -// pos.y -= 2*GetTextExtent("m").y; + pos.y -= GetTextExtent("m").y; if (!m_extruder_editor) - m_extruder_editor = new wxBitmapComboBox(this, wxID_ANY, wxEmptyString, pos, wxSize(column_width, -1), + m_extruder_editor = new wxBitmapComboBox(this, wxID_ANY, wxEmptyString, pos, size, 0, nullptr, wxCB_READONLY); else { m_extruder_editor->SetPosition(pos); + m_extruder_editor->SetMinSize(size); + m_extruder_editor->SetSize(size); m_extruder_editor->Clear(); m_extruder_editor->Show(); } - int i = 0; for (wxBitmap* bmp : icons) { if (i == 0) { @@ -922,8 +924,11 @@ void ObjectList::extruder_editing() } m_extruder_editor->SetSelection(m_objects_model->GetExtruderNumber(item)); - auto set_extruder = [this, item]() + auto set_extruder = [this]() { + wxDataViewItem item = GetSelection(); + if (!item) return; + const int selection = m_extruder_editor->GetSelection(); if (selection >= 0) m_objects_model->SetExtruder(m_extruder_editor->GetString(selection), item); @@ -937,12 +942,12 @@ void ObjectList::extruder_editing() set_extruder(); evt.StopPropagation(); }); - + /* m_extruder_editor->Bind(wxEVT_KILL_FOCUS, [set_extruder](wxFocusEvent& evt) { set_extruder(); evt.Skip(); - }); + });*/ } From 8bc569284e35dd5a5a6d07e7e004af7e980123f9 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 2 Oct 2019 16:14:40 +0200 Subject: [PATCH 30/53] Corrected editor position and size --- src/slic3r/GUI/GUI_ObjectList.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 88cf24509..308d0672d 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -893,11 +893,11 @@ void ObjectList::extruder_editing() if (icons.empty()) return; - const int column_width = GetColumn(colExtruder)->GetWidth(); + const int column_width = GetColumn(colExtruder)->GetWidth() + wxSystemSettings::GetMetric(wxSYS_VSCROLL_X) + 5; wxPoint pos = get_mouse_position_in_control(); wxSize size = wxSize(column_width, -1); - pos.x = GetColumn(colName)->GetWidth() + GetColumn(colPrint)->GetWidth(); + pos.x = GetColumn(colName)->GetWidth() + GetColumn(colPrint)->GetWidth() + 5; pos.y -= GetTextExtent("m").y; if (!m_extruder_editor) @@ -2938,6 +2938,7 @@ int ObjectList::get_selected_layers_range_idx() const void ObjectList::update_selections() { + if (m_extruder_editor) m_extruder_editor->Hide(); const Selection& selection = wxGetApp().plater()->canvas3D()->get_selection(); wxDataViewItemArray sels; From 3f698c4ccf45954a57aff3c89df9ffa51c47074f Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 2 Oct 2019 16:33:13 +0200 Subject: [PATCH 31/53] Enable full concurrency for support tree generation. --- src/libslic3r/SLA/SLAConcurrency.hpp | 2 +- src/libslic3r/SLA/SLASupportTreeBuilder.cpp | 60 +++++++++++++++++++ src/libslic3r/SLA/SLASupportTreeBuilder.hpp | 6 +- .../SLA/SLASupportTreeBuildsteps.cpp | 4 +- 4 files changed, 68 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/SLA/SLAConcurrency.hpp b/src/libslic3r/SLA/SLAConcurrency.hpp index cd45ce83e..4beb2aead 100644 --- a/src/libslic3r/SLA/SLAConcurrency.hpp +++ b/src/libslic3r/SLA/SLAConcurrency.hpp @@ -10,7 +10,7 @@ namespace sla { // Set this to true to enable full parallelism in this module. // Only the well tested parts will be concurrent if this is set to false. -const constexpr bool USE_FULL_CONCURRENCY = false; +const constexpr bool USE_FULL_CONCURRENCY = true; template struct _ccr {}; diff --git a/src/libslic3r/SLA/SLASupportTreeBuilder.cpp b/src/libslic3r/SLA/SLASupportTreeBuilder.cpp index 9e1f8c1da..3fa9f3b98 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuilder.cpp +++ b/src/libslic3r/SLA/SLASupportTreeBuilder.cpp @@ -360,6 +360,66 @@ const TriangleMesh &SupportTreeBuilder::add_pad(const ExPolygons &modelbase, return m_pad.tmesh; } +SupportTreeBuilder::SupportTreeBuilder(SupportTreeBuilder &&o) + : m_heads(std::move(o.m_heads)) + , m_head_indices{std::move(o.m_head_indices)} + , m_pillars{std::move(o.m_pillars)} + , m_bridges{std::move(o.m_bridges)} + , m_crossbridges{std::move(o.m_crossbridges)} + , m_compact_bridges{std::move(o.m_compact_bridges)} + , m_pad{std::move(o.m_pad)} + , m_meshcache{std::move(o.m_meshcache)} + , m_meshcache_valid{o.m_meshcache_valid} + , m_model_height{o.m_model_height} + , ground_level{o.ground_level} +{} + +SupportTreeBuilder::SupportTreeBuilder(const SupportTreeBuilder &o) + : m_heads(o.m_heads) + , m_head_indices{o.m_head_indices} + , m_pillars{o.m_pillars} + , m_bridges{o.m_bridges} + , m_crossbridges{o.m_crossbridges} + , m_compact_bridges{o.m_compact_bridges} + , m_pad{o.m_pad} + , m_meshcache{o.m_meshcache} + , m_meshcache_valid{o.m_meshcache_valid} + , m_model_height{o.m_model_height} + , ground_level{o.ground_level} +{} + +SupportTreeBuilder &SupportTreeBuilder::operator=(SupportTreeBuilder &&o) +{ + m_heads = std::move(o.m_heads); + m_head_indices = std::move(o.m_head_indices); + m_pillars = std::move(o.m_pillars); + m_bridges = std::move(o.m_bridges); + m_crossbridges = std::move(o.m_crossbridges); + m_compact_bridges = std::move(o.m_compact_bridges); + m_pad = std::move(o.m_pad); + m_meshcache = std::move(o.m_meshcache); + m_meshcache_valid = o.m_meshcache_valid; + m_model_height = o.m_model_height; + ground_level = o.ground_level; + return *this; +} + +SupportTreeBuilder &SupportTreeBuilder::operator=(const SupportTreeBuilder &o) +{ + m_heads = o.m_heads; + m_head_indices = o.m_head_indices; + m_pillars = o.m_pillars; + m_bridges = o.m_bridges; + m_crossbridges = o.m_crossbridges; + m_compact_bridges = o.m_compact_bridges; + m_pad = o.m_pad; + m_meshcache = o.m_meshcache; + m_meshcache_valid = o.m_meshcache_valid; + m_model_height = o.m_model_height; + ground_level = o.ground_level; + return *this; +} + const TriangleMesh &SupportTreeBuilder::merged_mesh() const { if (m_meshcache_valid) return m_meshcache; diff --git a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp index 7f38cf280..e967f5ea7 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp +++ b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp @@ -287,7 +287,11 @@ public: double ground_level = 0; SupportTreeBuilder() = default; - + SupportTreeBuilder(SupportTreeBuilder &&o); + SupportTreeBuilder(const SupportTreeBuilder &o); + SupportTreeBuilder& operator=(SupportTreeBuilder &&o); + SupportTreeBuilder& operator=(const SupportTreeBuilder &o); + template Head& add_head(unsigned id, Args&&... args) { std::lock_guard lk(m_mutex); diff --git a/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp index 72673babf..0ff26b3ac 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp +++ b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp @@ -213,7 +213,7 @@ EigenMesh3D::hit_result SupportTreeBuildsteps::pinhead_mesh_intersect( // Now a and b vectors are perpendicular to v and to each other. // Together they define the plane where we have to iterate with the // given angles in the 'phis' vector - ccr_par::enumerate( + ccr::enumerate( phis.begin(), phis.end(), [&hits, &m, sd, r_pin, r_back, s, a, b, c](double phi, size_t i) { double sinphi = std::sin(phi); @@ -310,7 +310,7 @@ EigenMesh3D::hit_result SupportTreeBuildsteps::bridge_mesh_intersect( // Hit results std::array hits; - ccr_par::enumerate( + ccr::enumerate( phis.begin(), phis.end(), [&m, a, b, sd, dir, r, s, ins_check, &hits] (double phi, size_t i) { double sinphi = std::sin(phi); From b3603a09fcc04dd9dda26824574c0fa0399c594c Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 2 Oct 2019 22:50:55 +0200 Subject: [PATCH 32/53] Fixed a bug: Wrong save of a preset if the preset is already exist. Step to repro: 1. Select system "Some_preset" preset 2. Make some changes 3. Save preset with "Some_preset - Copy" name. => "Some_preset - Copy" is selected, there is/are marked option(s) only different from system preset. repeate 1-3 steps => "Some_preset - Copy" is selected, there is/are marked option(s) different from DEFAULT preset. --- src/slic3r/GUI/Preset.cpp | 15 +++++++++++++++ src/slic3r/GUI/Preset.hpp | 3 +++ src/slic3r/GUI/Tab.cpp | 12 ++++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp index d2503d349..41aaa80f1 100644 --- a/src/slic3r/GUI/Preset.cpp +++ b/src/slic3r/GUI/Preset.cpp @@ -819,6 +819,21 @@ bool PresetCollection::delete_current_preset() return true; } +bool PresetCollection::delete_preset(const std::string& name) +{ + auto it = this->find_preset_internal(name); + + const Preset& preset = *it; + if (preset.is_default) + return false; + if (!preset.is_external && !preset.is_system) { + // Erase the preset file. + boost::nowide::remove(preset.file.c_str()); + } + m_presets.erase(it); + return true; +} + void PresetCollection::load_bitmap_default(wxWindow *window, const std::string &file_name) { // XXX: See note in PresetBundle::load_compatible_bitmaps() diff --git a/src/slic3r/GUI/Preset.hpp b/src/slic3r/GUI/Preset.hpp index e1efdc1ef..056b03700 100644 --- a/src/slic3r/GUI/Preset.hpp +++ b/src/slic3r/GUI/Preset.hpp @@ -276,6 +276,9 @@ public: // Delete the current preset, activate the first visible preset. // returns true if the preset was deleted successfully. bool delete_current_preset(); + // Delete the current preset, activate the first visible preset. + // returns true if the preset was deleted successfully. + bool delete_preset(const std::string& name); // Load default bitmap to be placed at the wxBitmapComboBox of a MainFrame. void load_bitmap_default(wxWindow *window, const std::string &file_name); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index d3f331442..afb378510 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3019,6 +3019,18 @@ void Tab::save_preset(std::string name /*= ""*/) show_error(this, _(L("Cannot overwrite an external profile."))); return; } + if (existing && name != preset.name) + { + wxString msg_text = GUI::from_u8((boost::format(_utf8(L("Preset with name \"%1%\" already exist."))) % name).str()); + msg_text += "\n" + _(L("Replace?")); + wxMessageDialog dialog(nullptr, msg_text, _(L("Warning")), wxICON_WARNING | wxYES | wxNO); + + if (dialog.ShowModal() == wxID_NO) + return; + + // Remove the preset from the list. + m_presets->delete_preset(name); + } } // Save the preset into Slic3r::data_dir / presets / section_name / preset_name.ini From 95e22d8fd4531b193d3bdc270c3932a275344fc9 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 3 Oct 2019 10:22:25 +0200 Subject: [PATCH 33/53] Add method for bridge addition with Head parameter to fill the bridge_id --- src/libslic3r/SLA/SLASupportTreeBuilder.hpp | 23 +++++++++++++++++-- .../SLA/SLASupportTreeBuildsteps.cpp | 9 ++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp index e967f5ea7..5ab42fa07 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp +++ b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp @@ -208,6 +208,11 @@ struct Bridge { const Vec3d &j2, double r_mm = 0.8, size_t steps = 45); + + Bridge(const Head &h, + const Vec3d &j2, + size_t steps = 45) + : Bridge{h.junction_point(), j2, h.r_back_mm, steps} {} }; // A bridge that spans from model surface to model surface with small connecting @@ -378,9 +383,23 @@ public: return m_junctions.back(); } - template const Bridge& add_bridge(Args&&... args) + template const Bridge& + add_bridge(const Vec3d &sp, const Vec3d &ep, double r, size_t steps = 45) { - return _add_bridge(m_bridges, std::forward(args)...); + return _add_bridge(m_bridges, sp, ep, r, steps); + } + + template + const Bridge& add_bridge(const Head &h, const Vec3d &endp, size_t steps = 45) + { + std::lock_guard lk(m_mutex); + m_bridges.emplace_back(h, endp, steps); + m_bridges.back().id = long(m_bridges.size() - 1); + + assert(h.id >= 0 && h.id < m_head_indices.size()); + m_heads[m_head_indices[size_t(h.id)]].bridge_id = m_bridges.back().id; + m_meshcache_valid = false; + return m_bridges.back(); } template const Bridge& add_crossbridge(Args&&... args) diff --git a/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp index 0ff26b3ac..50571c11e 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp +++ b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp @@ -582,7 +582,7 @@ void SupportTreeBuildsteps::create_ground_pillar(const Vec3d &jp, // the ground level only. normal_mode = false; - double mind = min_dist - dist; + double mind = min_dist - dist; double azimuth = std::atan2(sourcedir(Y), sourcedir(X)); double sinpolar = std::sin(PI - m_cfg.bridge_slope); double cospolar = std::cos(PI - m_cfg.bridge_slope); @@ -964,12 +964,11 @@ void SupportTreeBuildsteps::routing_to_model() auto routedown = [this](Head& head, const Vec3d& dir, double dist) { head.transform(); - Vec3d hjp = head.junction_point(); - Vec3d endp = hjp + dist * dir; - m_builder.add_bridge(hjp, endp, head.r_back_mm); + Vec3d endp = head.junction_point() + dist * dir; + m_builder.add_bridge(head, endp); m_builder.add_junction(endp, head.r_back_mm); - this->create_ground_pillar(endp, dir, head.r_back_mm, head.id); + this->create_ground_pillar(endp, dir, head.r_back_mm); }; std::vector modelpillars; From 23a7e77a81d997ae789c9c0bff31f889460d868a Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 3 Oct 2019 12:20:02 +0200 Subject: [PATCH 34/53] Eliminate some race conditions in sla support tree --- src/libslic3r/SLA/SLASupportTreeBuilder.hpp | 49 +++++++++++------- .../SLA/SLASupportTreeBuildsteps.cpp | 50 ++++++++----------- tests/sla_print/sla_print_tests_main.cpp | 4 +- 3 files changed, 53 insertions(+), 50 deletions(-) diff --git a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp index 5ab42fa07..487e5cf94 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp +++ b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp @@ -208,11 +208,6 @@ struct Bridge { const Vec3d &j2, double r_mm = 0.8, size_t steps = 45); - - Bridge(const Head &h, - const Vec3d &j2, - size_t steps = 45) - : Bridge{h.junction_point(), j2, h.r_back_mm, steps} {} }; // A bridge that spans from model surface to model surface with small connecting @@ -310,12 +305,12 @@ public: return m_heads.back(); } - template Pillar& add_pillar(unsigned headid, Args&&... args) + template long add_pillar(long headid, Args&&... args) { std::lock_guard lk(m_mutex); - assert(headid < m_head_indices.size()); - Head &head = m_heads[m_head_indices[headid]]; + assert(headid >= 0 && headid < m_head_indices.size()); + Head &head = m_heads[m_head_indices[size_t(headid)]]; m_pillars.emplace_back(head, std::forward(args)...); Pillar& pillar = m_pillars.back(); @@ -325,7 +320,14 @@ public: pillar.starts_from_head = true; m_meshcache_valid = false; - return m_pillars.back(); + return pillar.id; + } + + void add_pillar_base(long pid, double baseheight = 3, double radius = 2) + { + std::lock_guard lk(m_mutex); + assert(pid >= 0 && pid < m_pillars.size()); + m_pillars[size_t(pid)].add_base(baseheight, radius); } void increment_bridges(const Pillar& pillar) @@ -352,7 +354,7 @@ public: return pillar.bridges; } - template Pillar& add_pillar(Args&&...args) + template long add_pillar(Args&&...args) { std::lock_guard lk(m_mutex); m_pillars.emplace_back(std::forward(args)...); @@ -360,7 +362,7 @@ public: pillar.id = long(m_pillars.size() - 1); pillar.starts_from_head = false; m_meshcache_valid = false; - return m_pillars.back(); + return pillar.id; } const Pillar& head_pillar(unsigned headid) const @@ -383,21 +385,21 @@ public: return m_junctions.back(); } - template const Bridge& - add_bridge(const Vec3d &sp, const Vec3d &ep, double r, size_t steps = 45) + const Bridge& add_bridge(const Vec3d &s, const Vec3d &e, double r, size_t n = 45) { - return _add_bridge(m_bridges, sp, ep, r, steps); + return _add_bridge(m_bridges, s, e, r, n); } - template - const Bridge& add_bridge(const Head &h, const Vec3d &endp, size_t steps = 45) + const Bridge& add_bridge(long headid, const Vec3d &endp, size_t s = 45) { std::lock_guard lk(m_mutex); - m_bridges.emplace_back(h, endp, steps); + assert(headid >= 0 && headid < m_head_indices.size()); + + Head &h = m_heads[m_head_indices[size_t(headid)]]; + m_bridges.emplace_back(h.junction_point(), endp, h.r_back_mm, s); m_bridges.back().id = long(m_bridges.size() - 1); - assert(h.id >= 0 && h.id < m_head_indices.size()); - m_heads[m_head_indices[size_t(h.id)]].bridge_id = m_bridges.back().id; + h.bridge_id = m_bridges.back().id; m_meshcache_valid = false; return m_bridges.back(); } @@ -444,6 +446,15 @@ public: return m_pillars[size_t(id)]; } + template inline IntegerOnly pillar(T id) + { + std::lock_guard lk(m_mutex); + assert(id >= 0 && size_t(id) < m_pillars.size() && + size_t(id) < std::numeric_limits::max()); + + return m_pillars[size_t(id)]; + } + const Pad& pad() const { return m_pad; } // WITHOUT THE PAD!!! diff --git a/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp index 50571c11e..9b87aa469 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp +++ b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp @@ -508,15 +508,14 @@ bool SupportTreeBuildsteps::connect_to_nearpillar(const Head &head, if (m_builder.bridgecount(nearpillar()) < m_cfg.max_bridges_on_pillar) { // A partial pillar is needed under the starting head. if(zdiff > 0) { - m_builder.add_pillar(unsigned(head.id), bridgestart, r); + m_builder.add_pillar(head.id, bridgestart, r); m_builder.add_junction(bridgestart, r); + m_builder.add_bridge(bridgestart, bridgeend, head.r_back_mm); + } else { + m_builder.add_bridge(head.id, bridgeend); } - auto &br = m_builder.add_bridge(bridgestart, bridgeend, r); m_builder.increment_bridges(nearpillar()); - if (head.pillar_id == ID_UNSET) - m_builder.head(unsigned(head.id)).bridge_id = br.id; - } else return false; return true; @@ -631,13 +630,11 @@ void SupportTreeBuildsteps::create_ground_pillar(const Vec3d &jp, auto hit = bridge_mesh_intersect(endp, DOWN, radius); if (!std::isinf(hit.distance())) abort_in_shame(); - Pillar &plr = m_builder.add_pillar(endp, pgnd, radius); + pillar_id = m_builder.add_pillar(endp, pgnd, radius); if (can_add_base) - plr.add_base(m_cfg.base_height_mm, - m_cfg.base_radius_mm); - - pillar_id = plr.id; + m_builder.add_pillar_base(pillar_id, m_cfg.base_height_mm, + m_cfg.base_radius_mm); } m_builder.add_bridge(jp, endp, radius); @@ -648,19 +645,17 @@ void SupportTreeBuildsteps::create_ground_pillar(const Vec3d &jp, // prevent from queries of head_pillar() to have non-existing // pillar when the head should have one. if (head_id >= 0) - m_builder.add_pillar(unsigned(head_id), jp, radius); + m_builder.add_pillar(head_id, jp, radius); } } if (normal_mode) { - Pillar &plr = head_id >= 0 - ? m_builder.add_pillar(unsigned(head_id), endp, radius) - : m_builder.add_pillar(jp, endp, radius); - + pillar_id = head_id >= 0 ? m_builder.add_pillar(head_id, endp, radius) : + m_builder.add_pillar(jp, endp, radius); + if (can_add_base) - plr.add_base(m_cfg.base_height_mm, m_cfg.base_radius_mm); - - pillar_id = plr.id; + m_builder.add_pillar_base(pillar_id, m_cfg.base_height_mm, + m_cfg.base_radius_mm); } if(pillar_id >= 0) // Save the pillar endpoint in the spatial index @@ -871,10 +866,8 @@ void SupportTreeBuildsteps::classify() return d2d < 2 * m_cfg.base_radius_mm && d3d < m_cfg.max_bridge_length_mm; }; - - m_pillar_clusters = cluster(ground_head_indices, - pointfn, - predicate, + + m_pillar_clusters = cluster(ground_head_indices, pointfn, predicate, m_cfg.max_bridges_on_pillar); } @@ -965,7 +958,7 @@ void SupportTreeBuildsteps::routing_to_model() { head.transform(); Vec3d endp = head.junction_point() + dist * dir; - m_builder.add_bridge(head, endp); + m_builder.add_bridge(head.id, endp); m_builder.add_junction(endp, head.r_back_mm); this->create_ground_pillar(endp, dir, head.r_back_mm); @@ -1096,11 +1089,10 @@ void SupportTreeBuildsteps::routing_to_model() center_hit.position() : hit.position(); head.transform(); - - Pillar& pill = m_builder.add_pillar(unsigned(head.id), - endp, - head.r_back_mm); - + + long pillar_id = m_builder.add_pillar(head.id, endp, head.r_back_mm); + Pillar &pill = m_builder.pillar(pillar_id); + Vec3d taildir = endp - hitp; double dist = distance(endp, hitp) + m_cfg.head_penetration_mm; double w = dist - 2 * head.r_pin_mm - head.r_back_mm; @@ -1310,7 +1302,7 @@ void SupportTreeBuildsteps::interconnect_pillars() p.add_base(m_cfg.base_height_mm, m_cfg.base_radius_mm); if (interconnect(pillar(), p)) { - Pillar &pp = m_builder.add_pillar(p); + Pillar &pp = m_builder.pillar(m_builder.add_pillar(p)); m_pillar_index.insert(pp.endpoint(), unsigned(pp.id)); m_builder.add_junction(s, pillar().r); diff --git a/tests/sla_print/sla_print_tests_main.cpp b/tests/sla_print/sla_print_tests_main.cpp index f1ac8753b..a35173b15 100644 --- a/tests/sla_print/sla_print_tests_main.cpp +++ b/tests/sla_print/sla_print_tests_main.cpp @@ -250,7 +250,7 @@ void test_support_model_collision( // Set head penetration to a small negative value which should ensure that // the supports will not touch the model body. - supportcfg.head_penetration_mm = -0.1; + supportcfg.head_penetration_mm = -input_supportcfg.head_front_radius_mm; test_supports(obj_filename, supportcfg, byproducts); @@ -286,7 +286,7 @@ const char * const AROUND_PAD_TEST_OBJECTS[] = { }; const char *const SUPPORT_TEST_MODELS[] = { - "cube_with_concave_hole_enlarged_standing.obj", + "cube_with_concave_hole_enlarged_standing.obj" }; } // namespace From c4d50ea639ed551aaf9557eb8c584dd4d84b5e38 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 3 Oct 2019 14:23:03 +0200 Subject: [PATCH 35/53] Add test obj and address for support under ground level if no elevation --- src/libslic3r/SLA/SLASupportTreeBuilder.hpp | 4 + .../SLA/SLASupportTreeBuildsteps.cpp | 24 +- src/libslic3r/TriangleMesh.cpp | 2 +- src/libslic3r/TriangleMesh.hpp | 2 +- tests/data/A_upsidedown.obj | 2504 +++++++++++++++++ tests/sla_print/sla_print_tests_main.cpp | 17 +- 6 files changed, 2535 insertions(+), 18 deletions(-) create mode 100644 tests/data/A_upsidedown.obj diff --git a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp index 487e5cf94..9a0036474 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp +++ b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp @@ -308,6 +308,8 @@ public: template long add_pillar(long headid, Args&&... args) { std::lock_guard lk(m_mutex); + if (m_pillars.capacity() < m_heads.size()) + m_pillars.reserve(m_heads.size() * 2); assert(headid >= 0 && headid < m_head_indices.size()); Head &head = m_heads[m_head_indices[size_t(headid)]]; @@ -357,6 +359,8 @@ public: template long add_pillar(Args&&...args) { std::lock_guard lk(m_mutex); + if (m_pillars.capacity() < m_heads.size()) + m_pillars.reserve(m_heads.size() * 2); m_pillars.emplace_back(std::forward(args)...); Pillar& pillar = m_pillars.back(); pillar.id = long(m_pillars.size() - 1); diff --git a/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp index 9b87aa469..60e8f15b7 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp +++ b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp @@ -440,7 +440,7 @@ bool SupportTreeBuildsteps::interconnect(const Pillar &pillar, bool SupportTreeBuildsteps::connect_to_nearpillar(const Head &head, long nearpillar_id) { - auto nearpillar = [this, nearpillar_id]() { + auto nearpillar = [this, nearpillar_id]() -> const Pillar& { return m_builder.pillar(nearpillar_id); }; @@ -543,9 +543,8 @@ bool SupportTreeBuildsteps::search_pillar_and_connect(const Head &head) nearest_id = ne.second; if(nearest_id >= 0) { - auto nearpillarID = unsigned(nearest_id); - if(nearpillarID < m_builder.pillarcount()) { - if(!connect_to_nearpillar(head, nearpillarID)) { + if(size_t(nearest_id) < m_builder.pillarcount()) { + if(!connect_to_nearpillar(head, nearest_id)) { nearest_id = ID_UNSET; // continue searching spindex.remove(ne); // without the current pillar } @@ -1361,22 +1360,21 @@ void SupportTreeBuildsteps::routing_headless() // This is only for checking double idist = bridge_mesh_intersect(sph, dir, R, true); - double dist = ray_mesh_intersect(sj, dir); - if (std::isinf(dist)) - dist = sph(Z) - m_mesh.ground_level() - + m_mesh.ground_level_offset(); + double realdist = ray_mesh_intersect(sj, dir); + double dist = realdist; - if(std::isnan(idist) || idist < 2*R || - std::isnan(dist) || dist < 2*R) - { + if (std::isinf(dist)) dist = sph(Z) - m_builder.ground_level; + + if(std::isnan(idist) || idist < 2*R || std::isnan(dist) || dist < 2*R) { BOOST_LOG_TRIVIAL(warning) << "Can not find route for headless" << " support stick at: " << sj.transpose(); continue; } - Vec3d ej = sj + (dist + HWIDTH_MM)* dir; - m_builder.add_compact_bridge(sp, ej, n, R, !std::isinf(dist)); + bool use_endball = !std::isinf(realdist); + Vec3d ej = sj + (dist + HWIDTH_MM) * dir; + m_builder.add_compact_bridge(sp, ej, n, R, use_endball); } } diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index c2fcb11bd..16d289d9c 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -236,7 +236,7 @@ bool TriangleMesh::needed_repair() const || this->stl.stats.backwards_edges > 0; } -void TriangleMesh::WriteOBJFile(const char* output_file) +void TriangleMesh::WriteOBJFile(const char* output_file) const { its_write_obj(this->its, output_file); } diff --git a/src/libslic3r/TriangleMesh.hpp b/src/libslic3r/TriangleMesh.hpp index 81390b79b..86ca1625e 100644 --- a/src/libslic3r/TriangleMesh.hpp +++ b/src/libslic3r/TriangleMesh.hpp @@ -31,7 +31,7 @@ public: float volume(); void check_topology(); bool is_manifold() const { return this->stl.stats.connected_facets_3_edge == (int)this->stl.stats.number_of_facets; } - void WriteOBJFile(const char* output_file); + void WriteOBJFile(const char* output_file) const; void scale(float factor); void scale(const Vec3d &versor); void translate(float x, float y, float z); diff --git a/tests/data/A_upsidedown.obj b/tests/data/A_upsidedown.obj new file mode 100644 index 000000000..984749489 --- /dev/null +++ b/tests/data/A_upsidedown.obj @@ -0,0 +1,2504 @@ +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object A_upsidedown.obj +# +# Vertices: 621 +# Faces: 1246 +# +#### +vn 0.000000 -0.093333 0.000000 +v 49.631504 28.020100 29.866802 +vn 0.000000 -0.037015 0.000000 +v 64.536110 28.020100 29.991802 +vn 0.000000 -3.102283 0.000000 +v 64.733315 28.020100 29.991802 +vn 0.000000 1.887798 0.000000 +v 71.064674 40.019901 29.866802 +vn 0.000000 2.430529 0.000000 +v 71.731483 40.019901 27.093403 +vn 0.000000 1.533959 0.000000 +v 58.421482 40.019901 21.333405 +vn 0.000000 0.690492 0.000000 +v 60.378300 40.019901 7.066803 +vn 0.000000 1.673426 0.000000 +v 61.351475 40.019901 9.993401 +vn 0.000000 1.227440 0.000000 +v 72.928261 40.019901 26.133404 +vn 0.000000 1.916226 0.000000 +v 55.773106 40.019901 3.733406 +vn 0.000000 -2.218431 0.000000 +v 58.421482 28.020100 21.333405 +vn 0.000000 -1.887775 0.000000 +v 60.378300 28.020100 18.773403 +vn 0.000000 -0.914692 0.000000 +v 63.991306 28.020100 4.693398 +vn 0.000000 -0.312878 0.000000 +v 63.898106 28.020100 0.000000 +vn -1.139222 0.000000 -0.404308 +v 55.773106 38.519901 3.733406 +vn 0.000000 0.000000 1.641011 +v 63.154881 31.020100 23.893402 +vn 0.000000 0.000000 0.820473 +v 54.764896 40.019901 23.893402 +vn 1.947921 -0.000022 0.652220 +v 53.764896 40.019901 26.880203 +vn 0.458405 0.000000 0.153477 +v 52.764896 34.020100 29.866802 +vn 0.000000 0.000000 -2.086341 +v 60.498081 40.019901 0.000000 +vn 0.758394 0.000000 0.252242 +v 57.458286 37.019901 15.846802 +vn 0.000000 -0.045689 0.000000 +v 67.911507 28.020100 29.866802 +vn 0.000000 0.294972 0.000000 +v 64.124702 40.019901 29.866802 +vn 0.000000 0.037015 0.000000 +v 64.536110 40.019901 29.991802 +vn 0.000000 3.048260 0.000000 +v 49.631504 40.019901 29.866802 +vn 0.000000 -1.243512 0.000000 +v 70.698097 28.020100 30.116802 +vn 0.000000 1.823602 0.000000 +v 70.803261 40.019901 30.366802 +vn 0.000000 -0.145221 0.000000 +v 46.836491 28.020100 30.366802 +vn 0.000000 -2.963651 0.000000 +v 47.907291 28.020100 30.116802 +vn -1.139219 0.000000 -0.404318 +v 47.823093 29.520100 26.133404 +vn 0.000000 0.378793 0.000000 +v 56.484898 40.019901 18.773403 +vn 0.000000 -0.917052 0.000000 +v 56.484898 28.020100 18.773403 +vn 0.000000 1.516027 0.000000 +v 66.664711 40.019901 16.853401 +vn 1.484643 0.000000 -0.513065 +v 65.188301 40.019901 3.733406 +vn 0.000000 -1.625640 0.000000 +v 66.758308 28.020100 21.546803 +vn 0.343025 0.000000 -0.118529 +v 74.218300 28.020100 29.866802 +vn 0.000000 0.000000 1.317746 +v 46.898106 38.519901 33.866802 +vn 0.000000 0.000000 1.053530 +v 46.898106 32.520100 33.866802 +vn 0.000000 0.000000 1.416825 +v 50.523106 36.082500 33.866802 +vn 0.000000 0.000000 1.416825 +v 50.523106 31.957500 33.866802 +vn 0.000000 0.000000 1.519145 +v 50.523106 32.707500 33.866802 +vn 0.000000 0.000000 0.407019 +v 50.523106 28.582500 33.866802 +vn 0.000000 -1.666023 0.000000 +v 71.013283 28.020100 30.866802 +vn 0.000000 1.666023 0.000000 +v 71.013283 40.019901 30.866802 +vn 0.000000 -1.822726 0.000000 +v 50.313297 28.020100 33.366802 +vn 0.000000 -1.745650 0.000000 +v 50.208286 28.020100 33.116802 +vn 0.000000 0.000000 -1.339932 +v 64.124702 37.019901 29.866802 +vn 0.000000 -1.916226 0.000000 +v 55.773106 28.020100 3.733406 +vn 0.000000 0.312878 0.000000 +v 63.898106 40.019901 0.000000 +vn 0.000000 -2.358307 0.000000 +v 63.298100 28.020100 15.846802 +vn -0.458944 0.000000 -0.162879 +v 57.098087 40.019901 0.000000 +vn -1.139260 0.000000 -0.404332 +v 50.473087 35.519901 18.666801 +vn -0.682181 0.000000 -0.242111 +v 51.798100 34.020100 14.933403 +vn 0.680898 0.000000 -0.235277 +v 72.928261 35.519901 26.133404 +vn 0.680896 0.000000 -0.235305 +v 65.188301 35.519901 3.733406 +vn 1.146795 0.000000 -0.396254 +v 67.768288 32.520100 11.200005 +vn 1.141697 0.000000 -0.394418 +v 70.348061 35.519901 18.666801 +vn 0.680898 0.000000 -0.235272 +v 69.058296 40.019901 14.933403 +vn 1.141680 0.000000 -0.394487 +v 69.058296 34.020100 14.933403 +vn 0.000000 0.000000 1.640913 +v 57.561497 37.019901 23.893402 +vn 0.000000 -1.225376 0.000000 +v 53.123081 28.020100 11.200005 +vn 0.000000 -1.524331 0.000000 +v 54.294682 28.020100 12.160004 +vn -1.139219 0.000000 -0.404318 +v 50.473087 29.520100 18.666801 +vn -0.341111 0.000000 -0.121063 +v 51.798100 28.020100 14.933403 +vn -1.480330 0.000000 -0.525381 +v 50.473087 28.020100 18.666801 +vn 0.000000 0.391886 0.000000 +v 51.798100 40.019901 14.933403 +vn 0.000000 1.524331 0.000000 +v 54.294682 40.019901 12.160004 +vn 0.000000 -0.780583 0.000000 +v 67.954903 28.020100 20.586803 +vn 1.141656 0.000000 -0.394404 +v 70.348061 29.520100 18.666801 +vn 0.343027 0.000000 -0.118527 +v 69.058296 28.020100 14.933403 +vn 1.484666 0.000000 -0.513000 +v 67.768288 28.020100 11.200005 +vn 0.000000 0.780583 0.000000 +v 67.954903 40.019901 20.586803 +vn 0.000000 0.000000 -1.570796 +v 56.551487 40.019901 29.866802 +vn 0.000000 0.000000 -1.570796 +v 64.124702 28.020100 29.866802 +vn 0.000000 0.000000 1.053489 +v 61.398106 33.270100 33.866802 +vn 0.000000 0.621062 0.000000 +v 50.631504 40.019901 26.880203 +vn 0.000000 -2.089062 0.000000 +v 53.988285 28.020100 21.546803 +vn 0.000000 0.648257 0.000000 +v 65.951302 40.019901 23.893402 +vn 0.000000 -0.496907 0.000000 +v 65.951302 28.020100 23.893402 +vn 0.000000 -1.227440 0.000000 +v 72.928261 28.020100 26.133404 +vn 0.000000 0.000000 1.317747 +v 65.023109 36.832500 33.866802 +vn 0.000000 0.000000 1.317747 +v 65.023109 31.207500 33.866802 +vn 0.000000 0.000000 1.622447 +v 50.523106 35.332500 33.866802 +vn 0.000000 0.000000 1.317747 +v 61.398106 34.769901 33.866802 +vn 0.000000 0.000000 0.103357 +v 61.398106 39.269901 33.866802 +vn 0.000000 0.000000 1.416879 +v 65.023109 33.832500 33.866802 +vn 0.000000 0.000000 1.622447 +v 65.023109 33.457500 33.866802 +vn 0.000000 0.000000 0.205623 +v 65.023109 28.582500 33.866802 +vn 0.000000 0.000000 1.519146 +v 65.023109 28.957500 33.866802 +vn 0.000000 0.000000 0.103357 +v 61.398106 28.770100 33.866802 +vn 0.000000 0.000000 1.416878 +v 57.773106 37.207500 33.866802 +vn 0.000000 0.000000 1.519091 +v 57.773106 37.957500 33.866802 +vn 0.000000 0.000000 0.102267 +v 46.898106 40.019901 33.866802 +vn 0.000000 0.000000 1.622502 +v 57.773106 33.082500 33.866802 +vn 0.000000 0.000000 1.570796 +v 65.023109 28.020100 33.866802 +vn 0.000000 0.000000 1.519146 +v 65.023109 39.832500 33.866802 +vn 0.000000 1.345623 0.000000 +v 71.433266 40.019901 31.866802 +vn 0.000000 -0.622760 0.000000 +v 57.773106 28.020100 33.866802 +vn 0.000000 0.000000 0.051652 +v 61.398106 40.019901 33.866802 +vn 0.000000 -0.148804 0.000000 +v 63.500706 28.020100 30.241802 +vn 0.000000 1.745600 0.000000 +v 59.928288 40.019901 30.366802 +vn 0.000000 0.151910 0.000000 +v 56.618076 40.019901 31.116802 +vn 0.000000 1.244082 0.000000 +v 60.138279 40.019901 30.866802 +vn 0.000000 1.395632 0.000000 +v 50.208286 40.019901 33.116802 +vn 0.000000 -0.036834 0.000000 +v 60.138279 28.020100 30.866802 +vn 0.000000 1.862695 0.000000 +v 63.605503 40.019901 30.491802 +vn 0.000000 1.585152 0.000000 +v 60.558292 40.019901 31.866802 +vn 0.000000 0.312380 0.000000 +v 63.658298 40.019901 30.616802 +vn 0.000000 1.208105 0.000000 +v 56.355686 40.019901 30.491802 +vn 0.000000 1.860736 0.000000 +v 56.460697 40.019901 30.741802 +vn 0.000000 -0.037652 0.000000 +v 59.928288 28.020100 30.366802 +vn 0.000000 -1.208105 0.000000 +v 56.355686 28.020100 30.491802 +vn 0.000000 -1.318192 0.000000 +v 57.143101 28.020100 32.366802 +vn 0.000000 0.000000 -2.110460 +v 58.798100 37.019901 0.000000 +vn 0.000000 -1.395955 0.000000 +v 56.828281 28.020100 31.616802 +vn 0.916810 0.000000 0.306954 +v 54.264896 31.020100 25.386803 +vn 0.000000 -0.037015 0.000000 +v 54.409885 28.020100 30.366802 +vn 0.000000 -0.011257 0.000000 +v 57.785282 28.020100 30.241802 +vn 0.000000 0.061702 0.000000 +v 60.338291 40.019901 29.866802 +vn 0.000000 0.011257 0.000000 +v 57.785282 40.019901 30.241802 +vn 0.000000 -1.665832 0.000000 +v 64.603310 28.020100 32.866802 +vn 0.000000 1.173339 0.000000 +v 65.023109 40.019901 33.866802 +vn 0.000000 3.089343 0.000000 +v 54.409885 40.019901 30.366802 +vn 0.000000 -0.038581 0.000000 +v 58.376499 28.020100 30.241802 +vn 0.000000 2.358307 0.000000 +v 63.298100 40.019901 15.846802 +vn -0.758393 0.000000 0.252243 +v 63.298100 37.019901 15.846802 +vn 1.490511 0.000000 0.495761 +v 59.404881 40.019901 9.993401 +vn 0.758394 0.000000 0.252242 +v 57.458286 31.020100 15.846802 +vn 0.000000 0.000000 -0.900814 +v 67.911507 34.020100 29.866802 +vn -0.680278 0.000000 -0.241430 +v 55.773106 32.520100 3.733406 +vn -1.821446 0.000000 -0.646429 +v 55.773106 29.520100 3.733406 +vn 0.000000 0.000000 -2.110488 +v 58.798100 31.020100 0.000000 +vn 0.458405 0.000000 0.153477 +v 54.764896 34.020100 23.893402 +vn -1.464298 0.000000 0.486920 +v 61.351475 31.020100 9.993401 +vn -1.141144 0.000000 -0.405001 +v 55.773106 35.519901 3.733406 +vn -0.680297 0.000000 -0.241443 +v 54.448093 31.020100 7.466805 +vn -1.821445 0.000000 -0.646479 +v 47.823093 32.520100 26.133404 +vn 0.460727 0.000000 -0.159200 +v 71.638283 31.020100 22.400204 +vn 0.680919 0.000000 -0.235279 +v 66.478310 31.020100 7.466805 +vn 0.000000 -3.130320 0.000000 +v 51.034275 28.020100 30.491802 +vn 0.000000 0.000000 0.820479 +v 60.358311 40.019901 23.893402 +vn 0.000000 0.000000 1.500684 +v 57.561497 31.020100 23.893402 +vn 0.000000 0.000000 0.820473 +v 54.764896 28.020100 23.893402 +vn 0.000000 -3.079042 0.000000 +v 52.783298 28.020100 30.616802 +vn 0.000000 -0.044866 0.000000 +v 51.206486 28.020100 30.616802 +vn 0.000000 -3.079042 0.000000 +v 55.198093 28.020100 30.366802 +vn 0.000000 3.089339 0.000000 +v 61.554905 40.019901 30.116802 +vn 0.000000 0.697725 0.000000 +v 64.271492 40.019901 18.773403 +vn 0.000000 2.016624 0.000000 +v 69.244911 40.019901 24.320004 +vn 0.000000 0.950523 0.000000 +v 52.764896 40.019901 29.866802 +vn 0.000000 2.433246 0.000000 +v 48.994694 40.019901 27.093403 +vn 0.000000 -0.496938 0.000000 +v 70.084877 28.020100 26.880203 +vn 0.000000 -0.625735 0.000000 +v 50.631504 28.020100 26.880203 +vn 0.000000 0.000000 -0.900764 +v 64.124702 31.020100 29.866802 +vn 0.000000 0.000000 -1.570796 +v 56.551487 34.020100 29.866802 +vn 0.000000 0.000000 -1.339964 +v 56.551487 31.020100 29.866802 +vn 0.000000 0.000000 -0.900796 +v 60.338291 34.020100 29.866802 +vn 0.000000 -0.052257 0.000000 +v 50.418308 28.020100 30.616802 +vn 0.000000 3.079042 0.000000 +v 51.206486 40.019901 30.616802 +vn 0.000000 0.012951 0.000000 +v 55.198093 40.019901 30.366802 +vn 0.000000 0.860893 0.000000 +v 56.638279 40.019901 14.080002 +vn 0.000000 -1.524332 0.000000 +v 54.448093 28.020100 7.466805 +vn 0.000000 -0.700249 0.000000 +v 56.944675 28.020100 4.693398 +vn 0.000000 -0.917011 0.000000 +v 56.791294 28.020100 9.386803 +vn 0.000000 1.524332 0.000000 +v 54.448093 40.019901 7.466805 +vn 0.000000 -1.625640 0.000000 +v 66.571510 28.020100 12.160004 +vn 0.000000 1.625640 0.000000 +v 66.571510 40.019901 12.160004 +vn 0.000000 1.009477 0.000000 +v 63.991306 40.019901 4.693398 +vn 0.000000 -1.140493 0.000000 +v 60.378300 28.020100 7.066803 +vn -1.464190 0.000000 0.486973 +v 63.298100 31.020100 15.846802 +vn -0.732063 0.000000 0.243476 +v 62.324680 34.020100 12.920006 +vn -1.490521 0.000000 0.495730 +v 63.298100 34.020100 15.846802 +vn -1.490544 0.000000 0.495661 +v 61.351475 34.020100 9.993401 +vn 0.732121 0.000000 0.243442 +v 58.431492 34.020100 12.920006 +vn 1.490516 0.000000 0.495746 +v 59.404881 34.020100 9.993401 +vn -0.758431 0.000000 0.252207 +v 61.351475 37.019901 9.993401 +vn 0.758394 0.000000 0.252242 +v 58.431492 40.019901 12.920006 +vn -1.139197 0.000000 -0.404331 +v 47.823093 38.519901 26.133404 +vn -0.680271 0.000000 -0.241446 +v 54.448093 37.019901 7.466805 +vn -1.141174 0.000000 -0.405033 +v 53.123081 32.520100 11.200005 +vn -0.680298 0.000000 -0.241437 +v 49.148106 37.019901 22.400204 +vn -1.141149 0.000000 -0.404993 +v 50.473087 32.520100 18.666801 +vn -1.139221 0.000000 -0.404309 +v 49.148106 28.020100 22.400204 +vn -1.139221 0.000000 -0.404309 +v 49.148106 31.020100 22.400204 +vn -0.680277 0.000000 -0.241430 +v 53.123081 35.519901 11.200005 +vn -1.821441 0.000000 -0.646444 +v 50.473087 38.519901 18.666801 +vn -1.139260 0.000000 -0.404332 +v 47.823093 35.519901 26.133404 +vn -0.680278 0.000000 -0.241430 +v 57.098087 28.020100 0.000000 +vn 1.141639 0.000000 -0.394473 +v 65.188301 29.520100 3.733406 +vn 1.141639 0.000000 -0.394473 +v 66.478310 28.020100 7.466805 +vn 1.141620 0.000000 -0.394478 +v 72.928261 38.519901 26.133404 +vn 1.141639 0.000000 -0.394473 +v 65.188301 38.519901 3.733406 +vn 1.827736 0.000000 -0.631422 +v 70.348061 38.519901 18.666801 +vn 0.680916 0.000000 -0.235317 +v 70.348061 32.520100 18.666801 +vn 1.141625 0.000000 -0.394533 +v 71.638283 37.019901 22.400204 +vn 1.141620 0.000000 -0.394478 +v 67.768288 35.519901 11.200005 +vn 0.686083 0.000000 -0.237071 +v 66.478310 37.019901 7.466805 +vn 1.141620 0.000000 -0.394478 +v 67.768288 38.519901 11.200005 +vn 0.460731 0.000000 -0.159220 +v 63.898106 34.020100 0.000000 +vn 1.141627 0.000000 -0.394525 +v 65.188301 32.520100 3.733406 +vn 0.686083 0.000000 -0.237071 +v 72.928261 29.520100 26.133404 +vn 1.141620 0.000000 -0.394478 +v 72.928261 32.520100 26.133404 +vn 0.000000 0.000000 0.770358 +v 72.273109 30.082500 33.866802 +vn 0.000000 -1.914300 0.000000 +v 70.348061 28.020100 18.666801 +vn 0.000000 1.914300 0.000000 +v 70.348061 40.019901 18.666801 +vn 0.000000 0.000000 1.500675 +v 63.154881 37.019901 23.893402 +vn 0.000000 0.000000 0.750361 +v 60.358311 28.020100 23.893402 +vn 0.000000 0.000000 0.820505 +v 65.951302 34.020100 23.893402 +vn 0.000000 0.000000 0.750318 +v 60.358311 34.020100 23.893402 +vn 0.000000 1.145528 0.000000 +v 49.148106 40.019901 22.400204 +vn 0.000000 0.706150 0.000000 +v 52.816288 40.019901 20.586803 +vn 0.000000 -0.706150 0.000000 +v 52.816288 28.020100 20.586803 +vn 0.000000 3.038441 0.000000 +v 62.343296 40.019901 30.116802 +vn 0.000000 0.062550 0.000000 +v 63.919895 40.019901 30.116802 +vn 0.000000 -0.227250 0.000000 +v 63.919895 28.020100 30.116802 +vn 0.000000 -0.770618 0.000000 +v 47.823093 28.020100 26.133404 +vn 0.000000 1.225375 0.000000 +v 50.473087 40.019901 18.666801 +vn -1.139197 0.000000 -0.404331 +v 53.123081 29.520100 11.200005 +vn 0.000000 1.145532 0.000000 +v 56.791294 40.019901 9.386803 +vn -1.139197 0.000000 -0.404331 +v 53.123081 38.519901 11.200005 +vn -1.480321 0.000000 -0.525405 +v 47.823093 40.019901 26.133404 +vn 0.000000 -1.133527 0.000000 +v 69.244911 28.020100 24.320004 +vn 1.484666 0.000000 -0.513000 +v 65.188301 28.020100 3.733406 +vn 0.000000 1.133458 0.000000 +v 64.084694 40.019901 9.386803 +vn 0.343041 0.000000 -0.118535 +v 66.478310 40.019901 7.466805 +vn 1.484661 0.000000 -0.513013 +v 67.768288 40.019901 11.200005 +vn 0.000000 -0.780572 0.000000 +v 71.638283 28.020100 22.400204 +vn 1.141620 0.000000 -0.394478 +v 67.768288 29.520100 11.200005 +vn 0.343041 0.000000 -0.118535 +v 71.638283 40.019901 22.400204 +vn 0.000000 1.473603 0.000000 +v 62.138279 40.019901 3.533401 +vn 0.000000 -1.421432 0.000000 +v 59.618076 28.020100 1.766800 +vn 0.000000 0.964042 0.000000 +v 56.944675 40.019901 4.693398 +vn 0.000000 0.896655 0.000000 +v 58.738285 40.019901 3.533401 +vn 0.000000 -1.136241 0.000000 +v 58.738285 28.020100 3.533401 +vn 0.000000 1.887775 0.000000 +v 60.378300 40.019901 18.773403 +vn 0.000000 -1.190050 0.000000 +v 61.218082 28.020100 21.333405 +vn 0.000000 -0.697725 0.000000 +v 64.271492 28.020100 18.773403 +vn 0.000000 0.000000 -1.151154 +v 62.324680 31.020100 18.773403 +vn 0.000000 0.000000 -0.900814 +v 56.551487 37.019901 29.866802 +vn 0.000000 -2.762331 0.000000 +v 61.160679 28.020100 30.116802 +vn 0.000000 0.000000 -0.670032 +v 60.338291 28.020100 29.866802 +vn 0.000000 0.000000 -1.570796 +v 64.124702 34.020100 29.866802 +vn 0.000000 0.000000 -1.570796 +v 56.551487 28.020100 29.866802 +vn 0.000000 0.000000 1.416825 +v 68.648109 33.645100 33.866802 +vn 0.000000 0.000000 1.317695 +v 68.648109 32.145100 33.866802 +vn 0.000000 0.000000 1.724768 +v 65.023109 32.707500 33.866802 +vn 0.000000 0.000000 1.416825 +v 54.148106 35.144901 33.866802 +vn 0.000000 0.000000 1.053530 +v 57.773106 35.707500 33.866802 +vn 0.000000 0.000000 0.363349 +v 61.398106 37.769901 33.866802 +vn 0.000000 0.000000 0.407019 +v 50.523106 37.582500 33.866802 +vn 0.000000 0.000000 0.407021 +v 57.773106 32.332500 33.866802 +vn 0.000000 0.000000 1.724714 +v 57.773106 30.832500 33.866802 +vn 0.000000 0.000000 0.363349 +v 61.398106 30.270100 33.866802 +vn 0.000000 0.000000 0.406968 +v 50.523106 34.582500 33.866802 +vn 0.000000 0.000000 1.317746 +v 54.148106 33.645100 33.866802 +vn 0.000000 1.145532 0.000000 +v 53.123081 40.019901 11.200005 +vn 0.000000 -0.408926 0.000000 +v 51.491306 28.020100 24.320004 +vn 0.000000 -1.617268 0.000000 +v 48.994694 28.020100 27.093403 +vn 0.000000 1.052639 0.000000 +v 53.988285 40.019901 21.546803 +vn 0.000000 0.708177 0.000000 +v 51.491306 40.019901 24.320004 +vn 0.000000 -0.711066 0.000000 +v 64.084694 28.020100 9.386803 +vn 0.000000 -0.711113 0.000000 +v 71.731483 28.020100 27.093403 +vn 0.000000 1.062198 0.000000 +v 66.758308 40.019901 21.546803 +vn 0.000000 0.000000 1.317695 +v 68.648109 34.394901 33.866802 +vn 0.000000 0.000000 1.416878 +v 68.648109 35.894901 33.866802 +vn 0.000000 0.000000 0.407019 +v 65.023109 35.332500 33.866802 +vn 0.000000 0.000000 1.416825 +v 68.648109 38.894901 33.866802 +vn 0.000000 0.000000 0.407021 +v 68.648109 29.145100 33.866802 +vn 0.000000 0.000000 1.416825 +v 72.273109 28.582500 33.866802 +vn 0.000000 0.000000 0.407019 +v 54.148106 36.644901 33.866802 +vn 0.000000 0.000000 1.317695 +v 50.523106 30.457500 33.866802 +vn 0.000000 0.000000 0.407019 +v 54.148106 31.395100 33.866802 +vn 0.000000 0.000000 1.519145 +v 54.148106 32.895100 33.866802 +vn 0.000000 0.000000 1.416825 +v 50.523106 33.082500 33.866802 +vn 0.000000 0.000000 1.622447 +v 57.773106 33.457500 33.866802 +vn 0.000000 0.000000 0.201396 +v 46.898106 29.520100 33.866802 +vn 0.000000 0.000000 1.519145 +v 54.148106 28.395100 33.866802 +vn 0.000000 0.000000 1.416825 +v 54.148106 29.145100 33.866802 +vn 0.000000 0.000000 1.416878 +v 68.648109 39.644901 33.866802 +vn 0.000000 0.000000 1.416878 +v 65.023109 38.332500 33.866802 +vn 0.000000 0.000000 1.416878 +v 65.023109 29.707500 33.866802 +vn 0.000000 0.000000 1.622502 +v 65.023109 34.582500 33.866802 +vn 0.000000 0.000000 1.416878 +v 65.023109 39.082500 33.866802 +vn 0.000000 0.000000 1.519145 +v 65.023109 39.457500 33.866802 +vn 0.000000 0.000000 1.622447 +v 65.023109 28.207500 33.866802 +vn 0.000000 0.000000 0.103357 +v 68.648109 28.395100 33.866802 +vn 0.000000 0.000000 1.519145 +v 72.273109 34.207500 33.866802 +vn 0.000000 0.000000 1.416825 +v 72.273109 33.082500 33.866802 +vn 0.000000 0.000000 1.622447 +v 72.273109 33.832500 33.866802 +vn 0.000000 0.000000 1.519145 +v 68.648109 28.020100 33.866802 +vn 0.000000 0.000000 1.519091 +v 50.523106 38.332500 33.866802 +vn 0.000000 0.000000 1.519091 +v 54.148106 29.895100 33.866802 +vn 0.000000 0.000000 1.519091 +v 50.523106 29.707500 33.866802 +vn 0.000000 0.000000 1.519145 +v 50.523106 38.707500 33.866802 +vn 0.000000 0.000000 1.519145 +v 50.523106 39.457500 33.866802 +vn 0.000000 0.000000 1.519091 +v 50.523106 39.832500 33.866802 +vn 0.000000 0.000000 1.519145 +v 50.523106 29.332500 33.866802 +vn 0.000000 0.000000 1.416825 +v 57.773106 38.707500 33.866802 +vn 0.000000 0.000000 0.205622 +v 54.148106 38.144901 33.866802 +vn 0.000000 0.000000 1.416825 +v 57.773106 29.332500 33.866802 +vn 0.000000 0.000000 1.519145 +v 57.773106 30.082500 33.866802 +vn 0.000000 0.000000 1.317746 +v 57.773106 34.207500 33.866802 +vn 0.000000 0.000000 1.622447 +v 57.773106 34.957500 33.866802 +vn 0.000000 0.000000 1.519091 +v 54.148106 38.894901 33.866802 +vn 0.000000 0.000000 1.416878 +v 57.773106 39.457500 33.866802 +vn 0.000000 0.000000 1.416878 +v 57.773106 39.082500 33.866802 +vn 0.000000 0.000000 1.519091 +v 54.148106 39.644901 33.866802 +vn 0.000000 0.000000 0.205623 +v 57.773106 28.957500 33.866802 +vn 0.000000 0.000000 1.416878 +v 57.773106 28.582500 33.866802 +vn 0.000000 0.000000 1.622447 +v 57.773106 28.207500 33.866802 +vn 0.000000 0.000000 0.102267 +v 61.398106 28.020100 33.866802 +vn 0.000000 1.173248 0.000000 +v 68.648109 40.019901 33.866802 +vn 0.000000 -1.796021 0.000000 +v 71.433266 28.020100 31.866802 +vn 0.000000 0.000000 1.519145 +v 72.273109 39.832500 33.866802 +vn 0.000000 -1.475780 0.000000 +v 57.353306 28.020100 32.866802 +vn 0.000000 -0.320319 0.000000 +v 60.558292 28.020100 31.866802 +vn 0.000000 0.000000 1.519145 +v 57.773106 39.832500 33.866802 +vn 0.000000 0.000000 1.519145 +v 50.523106 28.207500 33.866802 +vn 0.000000 -1.665831 0.000000 +v 53.728306 28.020100 32.866802 +vn 0.000000 -0.302423 0.000000 +v 50.523106 28.020100 33.866802 +vn 0.000000 0.000000 -0.995169 +v 64.271492 34.020100 18.773403 +vn 0.000000 0.000000 -0.995270 +v 60.378300 34.020100 18.773403 +vn 0.000000 0.000000 -0.995220 +v 56.484898 34.020100 18.773403 +vn 0.000000 0.000000 -1.990339 +v 58.431492 31.020100 18.773403 +vn 0.000000 0.000000 -1.151215 +v 62.324680 37.019901 18.773403 +vn 0.000000 0.000000 -1.990309 +v 58.431492 37.019901 18.773403 +vn 0.000000 -0.072763 0.000000 +v 70.645485 28.020100 29.991802 +vn 0.000000 0.254813 0.000000 +v 67.073097 40.019901 30.116802 +vn 0.000000 -1.784628 0.000000 +v 52.993290 28.020100 31.116802 +vn 0.000000 0.034974 0.000000 +v 52.783298 40.019901 30.616802 +vn 0.000000 -1.281594 0.000000 +v 63.605503 28.020100 30.491802 +vn 0.000000 -1.244090 0.000000 +v 67.178291 28.020100 30.366802 +vn 0.000000 -1.319237 0.000000 +v 56.513279 28.020100 30.866802 +vn 0.000000 -1.396007 0.000000 +v 63.868290 28.020100 31.116802 +vn 0.000000 1.396007 0.000000 +v 63.868290 40.019901 31.116802 +vn 0.000000 0.036833 0.000000 +v 67.178291 40.019901 30.366802 +vn 0.000000 1.243312 0.000000 +v 70.698097 40.019901 30.116802 +vn 0.000000 1.783965 0.000000 +v 53.098087 40.019901 31.366802 +vn 0.000000 -0.076039 0.000000 +v 56.460697 28.020100 30.741802 +vn 0.000000 1.280338 0.000000 +v 49.525700 40.019901 31.491802 +vn 0.000000 1.280908 0.000000 +v 52.993290 40.019901 31.116802 +vn 0.000000 -1.825043 0.000000 +v 63.658298 28.020100 30.616802 +vn 0.000000 -0.037665 0.000000 +v 67.073097 28.020100 30.116802 +vn 0.000000 1.208834 0.000000 +v 63.500706 40.019901 30.241802 +vn 0.000000 1.665676 0.000000 +v 50.523106 40.019901 33.866802 +vn 0.000000 0.157078 0.000000 +v 50.313297 40.019901 33.366802 +vn 0.000000 1.503938 0.000000 +v 54.148106 40.019901 33.866802 +vn 0.000000 1.475936 0.000000 +v 56.933292 40.019901 31.866802 +vn 0.000000 1.317984 0.000000 +v 56.513279 40.019901 30.866802 +vn 0.000000 -0.038398 0.000000 +v 53.098087 28.020100 31.366802 +vn 0.000000 -1.637289 0.000000 +v 64.393288 28.020100 32.366802 +vn 0.000000 -1.318555 0.000000 +v 67.388283 28.020100 30.866802 +vn 0.000000 1.318538 0.000000 +v 67.388283 40.019901 30.866802 +vn 0.000000 0.000000 -1.055216 +v 57.098087 34.020100 0.000000 +vn 0.000000 0.000000 -1.055223 +v 60.498081 34.020100 0.000000 +vn 0.000000 0.000000 -1.055244 +v 62.198093 31.020100 0.000000 +vn 0.000000 0.000000 -1.055216 +v 62.198093 37.019901 0.000000 +vn 0.000000 1.173235 0.000000 +v 72.273109 40.019901 33.866802 +vn 0.000000 1.173248 0.000000 +v 67.808296 40.019901 31.866802 +vn 0.000000 1.208468 0.000000 +v 49.210697 40.019901 30.741802 +vn 0.000000 1.784338 0.000000 +v 49.420506 40.019901 31.241802 +vn 0.000000 -1.208468 0.000000 +v 49.210697 28.020100 30.741802 +vn 0.000000 1.421432 0.000000 +v 59.618076 40.019901 1.766800 +vn 0.000000 -1.136198 0.000000 +v 60.498081 28.020100 0.000000 +vn 0.000000 -1.395993 0.000000 +v 53.518101 28.020100 32.366802 +vn 0.000000 1.395632 0.000000 +v 53.518101 40.019901 32.366802 +vn 0.000000 1.395632 0.000000 +v 56.828281 40.019901 31.616802 +vn 0.000000 -1.585486 0.000000 +v 56.618076 28.020100 31.116802 +vn 1.947921 0.000022 0.652220 +v 53.264896 31.020100 28.373402 +vn 1.947921 -0.000022 0.652220 +v 53.264896 37.019901 28.373402 +vn 0.916862 0.000000 0.306971 +v 54.264896 37.019901 25.386803 +vn 0.916808 0.000010 0.306974 +v 53.764896 34.020100 26.880203 +vn -0.538399 0.000025 0.176701 +v 67.421486 37.019901 28.373402 +vn -1.951001 0.000091 0.640313 +v 66.441292 37.019901 25.386803 +vn -1.033984 0.000006 0.339287 +v 66.931496 34.020100 26.880203 +vn -1.033991 0.000025 0.339353 +v 67.421486 31.020100 28.373402 +vn -1.033926 0.000025 0.339332 +v 66.441292 31.020100 25.386803 +vn 0.000000 0.332131 0.000000 +v 61.160679 40.019901 30.116802 +vn 0.000000 2.832045 0.000000 +v 51.034275 40.019901 30.491802 +vn 0.000000 -0.108831 0.000000 +v 47.659092 28.020100 30.616802 +vn 0.000000 -0.161893 0.000000 +v 54.148106 28.020100 33.866802 +vn 0.000000 1.504457 0.000000 +v 57.143101 40.019901 32.366802 +vn 0.000000 1.173339 0.000000 +v 57.773106 40.019901 33.866802 +vn 0.000000 1.665831 0.000000 +v 57.353306 40.019901 32.866802 +vn 0.000000 -1.475599 0.000000 +v 67.808296 28.020100 31.866802 +vn 0.000000 1.475780 0.000000 +v 64.603310 40.019901 32.866802 +vn 0.000000 -1.504142 0.000000 +v 70.803261 28.020100 30.366802 +vn 0.000000 -1.475573 0.000000 +v 56.933292 28.020100 31.866802 +vn 0.000000 0.157053 0.000000 +v 53.728306 40.019901 32.866802 +vn 0.000000 -1.318370 0.000000 +v 63.973087 28.020100 31.366802 +vn 0.000000 1.637447 0.000000 +v 64.393288 40.019901 32.366802 +vn 0.000000 1.318370 0.000000 +v 63.973087 40.019901 31.366802 +vn 0.000000 1.244246 0.000000 +v 49.578281 40.019901 31.616802 +vn 0.000000 1.556103 0.000000 +v 49.998081 40.019901 32.616802 +vn 0.000000 -1.584971 0.000000 +v 49.998081 28.020100 32.616802 +vn 0.000000 1.246784 0.000000 +v 61.218082 40.019901 21.333405 +vn 0.000000 0.012942 0.000000 +v 64.733315 40.019901 29.991802 +vn 0.000000 -3.089339 0.000000 +v 62.343296 28.020100 30.116802 +vn 0.000000 -0.038592 0.000000 +v 52.019688 28.020100 30.491802 +vn 0.000000 3.063693 0.000000 +v 50.418308 40.019901 30.616802 +vn 0.000000 3.128646 0.000000 +v 52.019688 40.019901 30.491802 +vn 0.000000 0.025634 0.000000 +v 56.774876 40.019901 30.366802 +vn 0.000000 0.005557 0.000000 +v 58.376499 40.019901 30.241802 +vn 0.000000 -0.025634 0.000000 +v 56.774876 28.020100 30.366802 +vn 0.000000 -0.012946 0.000000 +v 61.554905 28.020100 30.116802 +vn 0.000000 2.806104 0.000000 +v 70.645485 40.019901 29.991802 +vn 0.000000 0.946082 0.000000 +v 70.084877 40.019901 26.880203 +vn 0.000000 -2.851793 0.000000 +v 71.064674 28.020100 29.866802 +vn 0.000000 -0.943369 0.000000 +v 52.764896 28.020100 29.866802 +vn 1.947921 0.000022 0.652220 +v 53.764896 28.020100 26.880203 +vn 0.000000 0.946146 0.000000 +v 67.911507 40.019901 29.866802 +vn -1.034010 -0.000006 0.339296 +v 66.931496 40.019901 26.880203 +vn -1.950966 -0.000026 0.640259 +v 66.931496 28.020100 26.880203 +vn 0.000000 1.667779 0.000000 +v 64.178291 40.019901 14.080002 +vn 0.000000 0.690539 0.000000 +v 62.324680 40.019901 12.920006 +vn -1.490544 0.000000 0.495661 +v 61.351475 28.020100 9.993401 +vn -0.732144 0.000000 0.243465 +v 62.324680 28.020100 12.920006 +vn 0.000000 -1.710442 0.000000 +v 56.638279 28.020100 14.080002 +vn 0.000000 -0.755548 0.000000 +v 57.458286 28.020100 15.846802 +vn 0.732121 0.000000 0.243442 +v 58.431492 28.020100 12.920006 +vn -0.732149 0.000000 0.243460 +v 60.378300 34.020100 7.066803 +vn 0.758423 0.000000 0.252260 +v 59.404881 37.019901 9.993401 +vn 0.758392 0.000000 0.252250 +v 59.404881 31.020100 9.993401 +vn 1.490516 0.000000 0.495746 +v 57.458286 34.020100 15.846802 +vn 0.000000 0.755548 0.000000 +v 57.458286 40.019901 15.846802 +vn 0.000000 -1.477762 0.000000 +v 59.404881 28.020100 9.993401 +vn 0.000000 -0.524818 0.000000 +v 62.138279 28.020100 3.533401 +vn 0.000000 -0.666779 0.000000 +v 64.178291 28.020100 14.080002 +vn 0.000000 -1.914110 0.000000 +v 66.664711 28.020100 16.853401 +vn -0.000345 0.000000 0.000000 +v 46.202091 28.020100 29.880402 +vn -0.001245 0.000000 0.000000 +v 46.202091 33.528103 29.873604 +vn -3.140821 0.000000 0.000000 +v 46.202091 31.511900 29.873604 +vn -0.002719 0.000000 0.000000 +v 46.202091 33.036503 29.866802 +vn -1.570463 0.000000 0.000000 +v 46.202091 28.020100 30.837402 +vn -1.490271 0.000000 0.000000 +v 46.202091 28.020100 31.815403 +vn -0.161051 0.000000 0.000000 +v 46.202091 34.020100 31.331203 +vn -0.009115 0.000000 0.000000 +v 46.202091 34.824100 33.038002 +vn -0.158175 0.000000 0.000000 +v 46.202091 29.628099 33.866802 +vn -0.162605 0.000000 0.000000 +v 46.202091 29.916100 33.866802 +vn -0.008478 0.000000 0.000000 +v 46.202091 36.287903 33.038002 +vn -0.367919 0.000000 0.000000 +v 46.202091 36.360104 33.038002 +vn -2.786047 0.000000 0.000000 +v 46.202091 35.555901 33.866802 +vn -0.345309 0.000000 0.000000 +v 46.202091 35.411900 33.866802 +vn -2.775214 0.000000 0.000000 +v 46.202091 35.699902 33.866802 +vn -2.423182 0.000000 0.000000 +v 46.202091 38.123901 33.866802 +vn -0.823455 0.000000 0.000000 +v 46.202091 38.483902 33.866802 +vn -1.505735 0.000000 0.000000 +v 46.202091 39.911903 33.866802 +vn -1.570263 0.000000 0.000000 +v 46.202091 28.020100 30.711002 +vn -0.001859 0.000000 0.000000 +v 46.202091 34.020100 31.845604 +vn -1.562263 0.000000 0.000000 +v 46.202091 28.020100 30.720604 +vn -1.570330 0.000000 0.000000 +v 46.202091 28.020100 30.847004 +vn -1.567496 0.000000 0.000000 +v 46.202091 28.020100 30.420403 +vn -1.567497 0.000000 0.000000 +v 46.202091 28.020100 30.460003 +vn -0.008930 0.000000 0.000000 +v 46.202091 34.020100 30.393604 +vn -1.567496 0.000000 0.000000 +v 46.202091 28.020100 30.165203 +vn -0.035131 0.000000 0.000000 +v 46.202091 34.020100 30.565403 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 32.209206 +vn -0.000345 0.000000 0.000000 +v 46.202091 40.019901 31.856606 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 31.851204 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 29.884205 +vn -0.000345 0.000000 0.000000 +v 46.202091 40.019901 30.841404 +vn -1.568763 0.000000 0.000000 +v 46.202091 34.020100 31.827805 +vn -0.001381 0.000000 0.000000 +v 46.202091 40.019901 30.687202 +vn -1.569930 0.000000 0.000000 +v 46.202091 34.020100 29.889404 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.822803 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.670803 +vn -0.017565 0.000000 0.000000 +v 46.202091 40.019901 30.670803 +vn -1.570229 0.000000 0.000000 +v 46.202091 34.020100 30.714203 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.717606 +vn -0.000345 0.000000 0.000000 +v 46.202091 34.020100 30.720604 +vn 0.000000 -1.570796 0.000000 +v 46.202091 28.020100 29.866802 +vn 0.000000 0.000000 -1.278490 +v 46.498081 40.019901 29.866802 +vn 0.000000 1.524883 0.000000 +v 46.202091 40.019901 29.880402 +vn 0.000000 0.000000 1.581885 +v 46.202091 32.340103 33.866802 +vn 0.000000 0.000000 1.338632 +v 46.202091 29.340099 33.866802 +vn 0.000000 0.000000 1.724738 +v 46.202091 28.128099 33.866802 +vn 0.000000 0.000000 1.519118 +v 46.202091 29.556101 33.866802 +vn 0.000000 0.000000 1.519120 +v 46.202091 29.484100 33.866802 +vn 0.000000 0.000000 0.051676 +v 46.898106 28.020100 33.866802 +vn 0.000000 -1.570796 0.000000 +v 46.202091 28.020100 33.866802 +vn 0.000000 0.000000 1.519120 +v 46.202091 39.983902 33.866802 +vn 0.000000 1.570796 0.000000 +v 46.202091 40.019901 33.866802 +vn 0.000000 -1.243521 0.000000 +v 49.578281 28.020100 31.616802 +vn 0.000000 -1.678514 0.000000 +v 46.202091 28.020100 31.851204 +vn 0.000000 0.002909 0.000000 +v 48.447300 40.019901 30.616802 +vn 0.000000 -1.629523 0.000000 +v 46.202091 28.020100 29.884205 +vn 0.000000 1.535844 0.000000 +v 46.202091 40.019901 30.847004 +vn 0.000000 -1.517576 0.000000 +v 46.202091 28.020100 30.841404 +vn 0.000000 0.000000 1.317725 +v 46.202091 32.700100 33.866802 +vn 0.000000 0.000000 1.622478 +v 46.202091 32.556103 33.866802 +vn 0.000000 0.000000 0.201395 +v 46.898106 35.519901 33.866802 +vn 0.000000 0.000000 1.622472 +v 46.202091 32.484100 33.866802 +vn 0.000000 0.079386 0.000000 +v 46.202091 40.019901 31.840004 +vn 0.000000 -1.280226 0.000000 +v 49.525700 28.020100 31.491802 +vn 0.000000 -0.003365 0.000000 +v 49.420506 28.020100 31.241802 +vn 0.000000 1.528865 0.000000 +v 46.202091 40.019901 30.711002 +vn 0.000000 3.063695 0.000000 +v 48.841282 40.019901 30.616802 +vn 0.000000 1.619617 0.000000 +v 46.202091 40.019901 30.822803 +vn 0.000000 0.000000 -0.292305 +v 46.202091 29.003700 29.866802 +vn 0.000000 0.000000 -2.849287 +v 46.202091 39.036304 29.866802 +vn 0.000000 1.655086 0.000000 +v 46.202091 40.019901 30.420403 +vn 0.000000 1.570796 0.000000 +v 46.202091 40.019901 30.366802 +vn 0.000000 -0.538395 0.000000 +v 46.960697 28.020100 30.116802 +vn 0.000000 -0.668608 0.000000 +v 46.498081 28.020100 29.866802 +vn 0.000000 0.210513 0.000000 +v 46.960697 40.019901 30.116802 +vn 0.000000 1.613744 0.000000 +v 46.202091 40.019901 30.149403 +vn 0.000000 1.599173 0.000000 +v 46.202091 40.019901 30.165203 +vn 0.000000 0.177916 0.000000 +v 47.907291 40.019901 30.116802 +vn 0.000000 -0.145573 0.000000 +v 46.202091 28.020100 30.366802 +vn 0.000000 0.000000 1.053518 +v 46.202091 35.123901 33.866802 +vn 0.000000 0.000000 1.724735 +v 46.202091 38.411903 33.866802 +vn 0.000000 0.000000 1.317725 +v 46.202091 38.699902 33.866802 +vn 0.000000 0.000000 1.622478 +v 46.202091 38.555904 33.866802 +vn 0.000000 2.700681 0.000000 +v 46.836491 40.019901 30.366802 +vn 0.000000 0.011236 0.000000 +v 47.659092 40.019901 30.616802 +vn 0.000000 1.610107 0.000000 +v 46.202091 40.019901 30.720604 +vn 0.000000 1.608973 0.000000 +v 46.202091 40.019901 30.717606 +vn 0.000000 -0.001337 0.000000 +v 48.447300 28.020100 30.616802 +vn 0.000000 -1.492900 0.000000 +v 46.202091 28.020100 30.822803 +vn 0.000000 -0.038586 0.000000 +v 48.841282 28.020100 30.616802 +vn 0.000000 0.000000 -1.570796 +v 46.202091 34.020100 29.866802 +vn 0.000000 0.000000 -1.278491 +v 46.498081 34.020100 29.866802 +vn -0.000345 0.000000 0.000000 +v 46.202091 28.056099 33.866802 +vn -0.137677 0.000000 0.000000 +v 46.202091 34.037903 33.038002 +vn -1.433528 0.000000 0.000000 +v 46.202091 34.020100 33.038002 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 31.856606 +vn -0.058751 0.000000 0.000000 +v 46.202091 34.020100 32.032803 +vn -1.549566 0.000000 0.000000 +v 46.202091 40.019901 29.894604 +vn -0.042461 0.000000 0.000000 +v 46.202091 34.020100 30.022003 +vn -0.017038 0.000000 0.000000 +v 46.202091 34.020100 30.771805 +vn -1.567497 0.000000 0.000000 +v 46.202091 40.019901 30.460003 +vn -0.006614 0.000000 0.000000 +v 46.202091 34.020100 30.440205 +vn -1.567530 0.000000 0.000000 +v 46.202091 40.019901 30.204605 +vn -0.006569 0.000000 0.000000 +v 46.202091 34.020100 30.185005 +vn -1.568729 0.000000 0.000000 +v 46.202091 40.019901 31.815403 +vn -1.568829 0.000000 0.000000 +v 46.202091 34.020100 30.699005 +vn -0.002740 0.000000 0.000000 +v 46.202091 34.020100 30.679005 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.149403 +vn -1.569563 0.000000 0.000000 +v 46.202091 40.019901 30.837402 +vn -1.569663 0.000000 0.000000 +v 46.202091 40.019901 29.866802 +vn -0.002290 0.000000 0.000000 +v 46.202091 34.020100 29.873604 +vn -0.000913 0.000000 0.000000 +v 46.202091 40.019901 29.884205 +vn -1.570330 0.000000 0.000000 +v 46.202091 40.019901 31.851204 +vn -0.000772 0.000000 0.000000 +v 46.202091 34.020100 31.854004 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.837402 +vn -1.570596 0.000000 0.000000 +v 46.202091 28.020100 29.881603 +vn 0.000000 0.000000 0.000000 +v 46.202091 34.020100 29.880402 +vn -1.570696 0.000000 0.000000 +v 46.202091 34.020100 29.881004 +vn -1.570696 0.000000 0.000000 +v 46.202091 40.019901 29.881603 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 29.881603 +vn -1.570563 0.000000 0.000000 +v 46.202091 34.020100 29.883003 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.847004 +vn -0.001381 0.000000 0.000000 +v 46.202091 28.020100 30.687202 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.687202 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.711002 +vn -0.002043 0.000000 0.000000 +v 46.202091 28.020100 31.840004 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 31.840004 +vn -0.029357 0.000000 0.000000 +v 46.202091 28.020100 31.856606 +vn -0.029391 0.000000 0.000000 +v 46.202091 28.020100 32.209206 +vn -1.570563 0.000000 0.000000 +v 46.202091 34.020100 30.719204 +vn -1.570330 0.000000 0.000000 +v 46.202091 34.020100 30.844204 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.841404 +vn -1.570463 0.000000 0.000000 +v 46.202091 34.020100 30.839401 +vn -1.569597 0.000000 0.000000 +v 46.202091 34.020100 30.830002 +vn -0.001381 0.000000 0.000000 +v 46.202091 28.020100 30.670803 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.420403 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.366802 +vn -1.557264 0.000000 0.000000 +v 46.202091 34.020100 30.285603 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.165203 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 29.894604 +vn -0.021228 0.000000 0.000000 +v 46.202091 28.020100 29.894604 +vn -1.569463 0.000000 0.000000 +v 46.202091 34.020100 30.157402 +vn -0.021228 0.000000 0.000000 +v 46.202091 28.020100 30.149403 +vn -0.003257 0.000000 0.000000 +v 46.202091 28.020100 30.204605 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.204605 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 31.815403 +vn -1.570796 0.000000 0.000000 +v 46.202091 34.020100 30.460003 +vn -1.570796 0.000000 0.000000 +v 46.202091 28.020100 30.717606 +vn -3.136973 0.000000 0.000000 +v 46.202091 35.003700 29.866802 +vn -0.138500 0.000000 0.000000 +v 46.202091 34.074100 33.038002 +vn -0.153977 0.000000 0.000000 +v 46.202091 34.679901 33.038002 +vn -2.985545 0.000000 0.000000 +v 46.202091 34.751900 33.038002 +vn -2.984489 0.000000 0.000000 +v 46.202091 34.787903 33.038002 +vn -2.836092 0.000000 0.000000 +v 46.202091 34.968102 33.038002 +vn -0.212572 0.000000 0.000000 +v 46.202091 36.179901 33.038002 +vn -0.003937 0.000000 0.000000 +v 46.202091 40.019901 32.209206 +vn -0.216509 0.000000 0.000000 +v 46.202091 36.251904 33.038002 +vn 0.001794 0.000000 0.000000 +v 74.757912 38.137577 29.866802 +vn 0.000846 0.000000 0.000000 +v 74.757912 28.020100 29.885147 +vn 3.137158 0.000000 0.000000 +v 74.757912 32.137775 29.866802 +vn 3.112366 0.000000 0.000000 +v 74.757912 28.647591 29.866802 +vn 1.570796 0.000000 0.000000 +v 74.757912 28.020100 29.866802 +vn 0.234780 0.000000 0.000000 +v 74.757912 28.668802 33.866802 +vn 2.712917 0.000000 0.000000 +v 74.757912 34.079044 33.866802 +vn 0.444196 0.000000 0.000000 +v 74.757912 34.314949 33.866802 +vn 0.518246 0.000000 0.000000 +v 74.757912 35.258564 33.866802 +vn 0.818022 0.000000 0.000000 +v 74.757912 40.019901 31.151718 +vn 0.000000 0.000000 -2.862407 +v 74.757912 29.902426 29.866802 +vn 0.000000 -0.397593 0.000000 +v 74.757912 28.020100 31.151718 +vn 0.000000 1.604780 0.000000 +v 74.757912 40.019901 29.885147 +vn 0.000000 1.570796 0.000000 +v 74.757912 40.019901 29.866802 +vn 0.000000 0.000000 1.570796 +v 72.273109 28.020100 33.866802 +vn 0.000000 0.000000 1.495520 +v 74.757912 28.020100 33.866802 +vn 0.000000 0.000000 1.570796 +v 74.757912 40.019901 33.866802 +vn 0.000000 0.263500 0.000000 +v 74.218300 40.019901 29.866802 +vn 0.000000 0.000000 1.575024 +v 74.757912 39.843006 33.866802 +vn 0.000000 0.000000 1.519146 +v 74.757912 39.960957 33.866802 +vn 0.000000 0.000000 1.622447 +v 72.273109 28.207500 33.866802 +vn 0.000000 0.000000 1.370888 +v 74.757912 28.079044 33.866802 +vn 0.000000 0.000000 1.230979 +v 72.273109 34.957500 33.866802 +vn 0.000000 0.000000 1.527636 +v 74.757912 33.725189 33.866802 +vn 0.000000 0.000000 1.519090 +v 74.757912 33.961094 33.866802 +vn 0.000000 0.000000 0.188635 +v 72.273109 39.457500 33.866802 +vn 0.000000 0.000000 1.536079 +v 74.757912 39.371201 33.866802 +vn 0.000000 0.000000 0.921678 +v 74.757912 28.196997 33.866802 +vn 0.000000 0.000000 0.598652 +v 72.273109 37.957500 33.866802 +vn 0.000000 0.000000 0.947228 +v 74.757912 32.781578 33.866802 +vn 0.000000 0.000000 -1.570796 +v 74.757912 34.020100 29.866802 +vn 0.000000 0.000000 -1.291610 +v 74.218300 34.020100 29.866802 +vn 0.000000 0.000000 -2.431346 +v 74.757912 39.392414 29.866802 +vn 0.000000 0.000000 -0.279203 +v 74.757912 35.902302 29.866802 +# 621 vertices, 0 vertices normals + +f 406//406 605//605 4//4 +f 503//503 504//504 1//1 +f 117//117 409//409 243//243 +f 2//2 22//22 3//3 +f 407//407 4//4 605//605 +f 407//407 605//605 5//5 +f 76//76 150//150 18//18 +f 17//17 6//6 31//31 +f 148//148 396//396 78//78 +f 17//17 31//31 259//259 +f 224//224 7//7 8//8 +f 9//9 5//5 605//605 +f 232//232 7//7 233//233 +f 230//230 49//49 20//20 +f 232//232 51//51 10//10 +f 19//19 156//156 409//409 +f 47//47 23//23 411//411 +f 152//152 22//22 413//413 +f 79//79 237//237 35//35 +f 153//153 1//1 504//504 +f 236//236 11//11 32//32 +f 236//236 32//32 12//12 +f 153//153 504//504 258//258 +f 13//13 169//169 427//427 +f 13//13 14//14 223//223 +f 164//164 169//169 426//426 +f 234//234 188//188 231//231 +f 216//216 258//258 504//504 +f 522//522 472//472 187//187 +f 15//15 10//10 51//51 +f 208//208 16//16 79//79 +f 141//141 17//17 60//60 +f 373//373 412//412 78//78 +f 208//208 79//79 377//377 +f 371//371 18//18 150//150 +f 19//19 409//409 369//369 +f 199//199 189//189 14//14 +f 191//191 9//9 605//605 +f 114//114 20//20 49//49 +f 199//199 14//14 356//356 +f 176//176 8//8 7//7 +f 421//421 176//176 7//7 +f 323//323 324//324 32//32 +f 235//235 148//148 325//325 +f 421//421 7//7 422//422 +f 21//21 425//425 31//31 +f 406//406 337//337 605//605 +f 327//327 36//36 26//26 +f 327//327 22//22 408//408 +f 23//23 24//24 411//411 +f 24//24 397//397 411//411 +f 503//503 409//409 29//29 +f 505//505 150//150 25//25 +f 505//505 508//508 150//150 +f 26//26 36//36 387//387 +f 337//337 27//27 605//605 +f 213//213 411//411 397//397 +f 398//398 3//3 22//22 +f 28//28 29//29 409//409 +f 514//514 150//150 508//508 +f 30//30 216//216 504//504 +f 354//354 135//135 51//51 +f 189//189 223//223 14//14 +f 202//202 36//36 201//201 +f 211//211 259//259 31//31 +f 178//178 472//472 221//221 +f 64//64 418//418 32//32 +f 131//131 188//188 48//48 +f 414//414 148//148 33//33 +f 192//192 49//49 34//34 +f 68//68 35//35 237//237 +f 201//201 36//36 80//80 +f 491//491 250//250 37//37 +f 38//38 276//276 271//271 +f 38//38 254//254 491//491 +f 39//39 491//491 83//83 +f 37//37 295//295 93//93 +f 291//291 294//294 37//37 +f 40//40 41//41 38//38 +f 274//274 38//38 41//41 +f 276//276 479//479 42//42 +f 293//293 276//276 297//297 +f 318//318 479//479 320//320 +f 387//387 36//36 43//43 +f 296//296 345//345 93//93 +f 27//27 44//44 605//605 +f 213//213 214//214 411//411 +f 398//398 22//22 215//215 +f 320//320 479//479 45//45 +f 45//45 479//479 46//46 +f 345//345 346//346 93//93 +f 346//346 104//104 93//93 +f 515//515 150//150 514//514 +f 380//380 28//28 409//409 +f 156//156 243//243 409//409 +f 129//129 47//47 411//411 +f 161//161 31//31 425//425 +f 66//66 31//31 161//161 +f 163//163 188//188 234//234 +f 163//163 48//48 188//188 +f 168//168 49//49 230//230 +f 168//168 34//34 49//49 +f 428//428 237//237 50//50 +f 428//428 429//429 237//237 +f 321//321 170//170 237//237 +f 170//170 50//50 237//237 +f 423//423 426//426 169//169 +f 323//323 32//32 128//128 +f 64//64 53//53 180//180 +f 135//135 15//15 51//51 +f 187//187 472//472 178//178 +f 64//64 182//182 53//53 +f 66//66 185//185 53//53 +f 180//180 53//53 185//185 +f 182//182 52//52 53//53 +f 66//66 53//53 52//52 +f 70//70 59//59 194//194 +f 54//54 191//191 605//605 +f 55//55 49//49 192//192 +f 70//70 56//56 59//59 +f 58//58 57//57 59//59 +f 194//194 59//59 57//57 +f 56//56 196//196 59//59 +f 58//58 59//59 196//196 +f 207//207 79//79 16//16 +f 133//133 60//60 17//17 +f 66//66 211//211 31//31 +f 186//186 217//217 66//66 +f 61//61 62//62 64//64 +f 218//218 61//61 64//64 +f 64//64 32//32 212//212 +f 63//63 64//64 65//65 +f 256//256 66//66 67//67 +f 220//220 66//66 256//256 +f 226//226 167//167 58//58 +f 198//198 226//226 58//58 +f 68//68 237//237 429//429 +f 69//69 204//204 70//70 +f 71//71 70//70 166//166 +f 228//228 70//70 71//71 +f 72//72 33//33 148//148 +f 193//193 58//58 205//205 +f 123//123 73//73 150//150 +f 239//239 150//150 73//73 +f 74//74 22//22 2//2 +f 154//154 22//22 74//74 +f 84//84 81//81 249//249 +f 75//75 253//253 82//82 +f 260//260 76//76 17//17 +f 221//221 472//472 151//151 +f 143//143 77//77 32//32 +f 212//212 32//32 77//77 +f 78//78 263//263 148//148 +f 72//72 148//148 263//263 +f 222//222 152//152 79//79 +f 80//80 36//36 262//262 +f 81//81 280//280 249//249 +f 85//85 249//249 280//280 +f 82//82 253//253 281//281 +f 90//90 281//281 253//253 +f 249//249 248//248 84//84 +f 250//250 291//291 37//37 +f 253//253 75//75 251//251 +f 271//271 276//276 293//293 +f 75//75 84//84 302//302 +f 254//254 83//83 491//491 +f 84//84 75//75 86//86 +f 266//266 84//84 282//282 +f 99//99 85//85 284//284 +f 283//283 284//284 85//85 +f 246//246 87//87 75//75 +f 86//86 75//75 87//87 +f 311//311 88//88 90//90 +f 89//89 90//90 88//88 +f 249//249 85//85 298//298 +f 91//91 249//249 92//92 +f 253//253 300//300 90//90 +f 252//252 301//301 253//253 +f 302//302 84//84 303//303 +f 248//248 303//303 84//84 +f 295//295 296//296 93//93 +f 298//298 85//85 306//306 +f 99//99 305//305 85//85 +f 306//306 85//85 305//305 +f 251//251 75//75 94//94 +f 275//275 94//94 75//75 +f 42//42 479//479 318//318 +f 300//300 308//308 90//90 +f 311//311 90//90 309//309 +f 308//308 309//309 90//90 +f 285//285 311//311 95//95 +f 313//313 43//43 36//36 +f 96//96 122//122 99//99 +f 97//97 605//605 44//44 +f 310//310 98//98 311//311 +f 316//316 311//311 98//98 +f 317//317 99//99 383//383 +f 107//107 383//383 99//99 +f 12//12 32//32 324//324 +f 321//321 237//237 238//238 +f 402//402 109//109 101//101 +f 404//404 111//111 112//112 +f 105//105 111//111 100//100 +f 343//343 215//215 22//22 +f 103//103 344//344 101//101 +f 328//328 411//411 214//214 +f 101//101 102//102 103//103 +f 104//104 394//394 93//93 +f 111//111 105//105 368//368 +f 46//46 479//479 395//395 +f 342//342 105//105 331//331 +f 316//316 105//105 342//342 +f 108//108 106//106 103//103 +f 107//107 108//108 103//103 +f 110//110 349//349 101//101 +f 109//109 110//110 101//101 +f 339//339 111//111 333//333 +f 112//112 111//111 339//339 +f 113//113 316//316 315//315 +f 105//105 316//316 113//113 +f 382//382 384//384 107//107 +f 103//103 382//382 107//107 +f 311//311 316//316 390//390 +f 390//390 316//316 334//334 +f 99//99 392//392 107//107 +f 392//392 335//335 107//107 +f 354//354 51//51 114//114 +f 132//132 364//364 188//188 +f 367//367 348//348 103//103 +f 102//102 367//367 103//103 +f 115//115 105//105 388//388 +f 368//368 105//105 115//115 +f 133//133 17//17 371//371 +f 116//116 410//410 143//143 +f 129//129 411//411 373//373 +f 376//376 413//413 22//22 +f 150//150 379//379 123//123 +f 409//409 117//117 140//140 +f 241//241 118//118 117//117 +f 146//146 117//117 118//118 +f 119//119 123//123 120//120 +f 160//160 120//120 123//123 +f 95//95 311//311 121//121 +f 121//121 311//311 351//351 +f 122//122 386//386 99//99 +f 386//386 391//391 99//99 +f 117//117 146//146 399//399 +f 123//123 401//401 160//160 +f 402//402 403//403 160//160 +f 378//378 160//160 403//403 +f 240//240 124//124 146//146 +f 404//404 146//146 124//124 +f 414//414 125//125 148//148 +f 126//126 148//148 125//125 +f 219//219 127//127 7//7 +f 422//422 7//7 127//127 +f 261//261 416//416 169//169 +f 134//134 169//169 416//416 +f 418//418 419//419 32//32 +f 128//128 32//32 419//419 +f 522//522 30//30 504//504 +f 19//19 150//150 239//239 +f 19//19 370//370 150//150 +f 129//129 22//22 154//154 +f 129//129 376//376 22//22 +f 619//619 54//54 605//605 +f 130//130 188//188 131//131 +f 354//354 132//132 188//188 +f 208//208 78//78 206//206 +f 208//208 374//374 78//78 +f 133//133 143//143 142//142 +f 133//133 116//116 143//143 +f 199//199 49//49 55//55 +f 199//199 357//357 49//49 +f 321//321 148//148 126//126 +f 321//321 325//325 148//148 +f 421//421 169//169 134//134 +f 421//421 423//423 169//169 +f 323//323 31//31 326//326 +f 323//323 21//21 31//31 +f 135//135 130//130 136//136 +f 179//179 135//135 136//136 +f 187//187 184//184 137//137 +f 181//181 184//184 187//187 +f 54//54 202//202 138//138 +f 195//195 54//54 138//138 +f 55//55 139//139 200//200 +f 197//197 139//139 55//55 +f 497//497 123//123 485//485 +f 485//485 123//123 379//379 +f 520//520 518//518 117//117 +f 518//518 140//140 117//117 +f 141//141 78//78 396//396 +f 141//141 206//206 78//78 +f 143//143 32//32 11//11 +f 207//207 142//142 143//143 +f 330//330 402//402 159//159 +f 160//160 159//159 402//402 +f 144//144 145//145 404//404 +f 146//146 404//404 145//145 +f 101//101 213//213 402//402 +f 147//147 402//402 213//213 +f 111//111 404//404 398//398 +f 405//405 398//398 404//404 +f 396//396 31//31 6//6 +f 396//396 148//148 235//235 +f 207//207 236//236 79//79 +f 237//237 79//79 236//236 +f 407//407 78//78 412//412 +f 149//149 78//78 407//407 +f 76//76 25//25 150//150 +f 76//76 151//151 472//472 +f 152//152 408//408 22//22 +f 152//152 262//262 36//36 +f 153//153 143//143 410//410 +f 257//257 143//143 153//153 +f 241//241 157//157 154//154 +f 154//154 157//157 242//242 +f 156//156 155//155 157//157 +f 241//241 156//156 157//157 +f 119//119 47//47 157//157 +f 47//47 242//242 157//157 +f 239//239 157//157 155//155 +f 119//119 157//157 239//239 +f 145//145 158//158 146//146 +f 158//158 399//399 146//146 +f 159//159 160//160 400//400 +f 400//400 160//160 401//401 +f 177//177 219//219 161//161 +f 161//161 67//67 66//66 +f 420//420 418//418 164//164 +f 418//418 64//64 62//62 +f 169//169 164//164 163//163 +f 162//162 163//163 164//164 +f 7//7 232//232 219//219 +f 165//165 219//219 232//232 +f 417//417 261//261 428//428 +f 428//428 166//166 70//70 +f 415//415 414//414 224//224 +f 414//414 58//58 167//167 +f 7//7 224//224 168//168 +f 225//225 168//168 224//224 +f 169//169 13//13 261//261 +f 190//190 261//261 13//13 +f 170//170 172//172 171//171 +f 417//417 170//170 171//171 +f 415//415 171//171 126//126 +f 126//126 171//171 172//172 +f 134//134 171//171 173//173 +f 417//417 171//171 134//134 +f 420//420 174//174 128//128 +f 128//128 174//174 424//424 +f 423//423 175//175 174//174 +f 420//420 423//423 174//174 +f 177//177 21//21 174//174 +f 21//21 424//424 174//174 +f 415//415 176//176 171//171 +f 176//176 173//173 171//171 +f 422//422 174//174 175//175 +f 177//177 174//174 422//422 +f 30//30 137//137 184//184 +f 183//183 30//30 184//184 +f 165//165 15//15 179//179 +f 135//135 179//179 15//15 +f 187//187 178//178 181//181 +f 210//210 181//181 178//178 +f 180//180 218//218 64//64 +f 179//179 136//136 180//180 +f 162//162 218//218 136//136 +f 180//180 136//136 218//218 +f 181//181 182//182 184//184 +f 182//182 64//64 63//63 +f 183//183 184//184 63//63 +f 182//182 63//63 184//184 +f 185//185 66//66 220//220 +f 180//180 185//185 179//179 +f 165//165 179//179 220//220 +f 185//185 220//220 179//179 +f 182//182 181//181 52//52 +f 52//52 186//186 66//66 +f 210//210 186//186 181//181 +f 52//52 181//181 186//186 +f 187//187 137//137 522//522 +f 30//30 522//522 137//137 +f 135//135 354//354 130//130 +f 188//188 130//130 354//354 +f 162//162 136//136 131//131 +f 130//130 131//131 136//136 +f 189//189 200//200 139//139 +f 190//190 189//189 139//139 +f 229//229 191//191 195//195 +f 54//54 195//195 191//191 +f 55//55 192//192 197//197 +f 225//225 197//197 192//192 +f 194//194 69//69 70//70 +f 195//195 138//138 194//194 +f 227//227 69//69 138//138 +f 194//194 138//138 69//69 +f 197//197 56//56 139//139 +f 56//56 70//70 228//228 +f 190//190 139//139 228//228 +f 56//56 228//228 139//139 +f 57//57 58//58 193//193 +f 194//194 57//57 195//195 +f 229//229 195//195 193//193 +f 57//57 193//193 195//195 +f 56//56 197//197 196//196 +f 196//196 198//198 58//58 +f 225//225 198//198 197//197 +f 196//196 197//197 198//198 +f 36//36 202//202 619//619 +f 54//54 619//619 202//202 +f 189//189 199//199 200//200 +f 55//55 200//200 199//199 +f 227//227 138//138 201//201 +f 202//202 201//201 138//138 +f 267//267 265//265 616//616 +f 268//268 203//203 245//245 +f 222//222 68//68 227//227 +f 68//68 70//70 204//204 +f 149//149 229//229 72//72 +f 72//72 205//205 58//58 +f 208//208 206//206 209//209 +f 141//141 209//209 206//206 +f 207//207 209//209 142//142 +f 133//133 142//142 209//209 +f 208//208 209//209 16//16 +f 207//207 16//16 209//209 +f 141//141 60//60 209//209 +f 133//133 209//209 60//60 +f 260//260 211//211 210//210 +f 211//211 66//66 217//217 +f 257//257 183//183 212//212 +f 212//212 65//65 64//64 +f 214//214 101//101 344//344 +f 213//213 101//101 214//214 +f 215//215 100//100 111//111 +f 398//398 215//215 111//111 +f 163//163 162//162 48//48 +f 131//131 48//48 162//162 +f 257//257 216//216 183//183 +f 30//30 183//183 216//216 +f 211//211 217//217 210//210 +f 186//186 210//210 217//217 +f 164//164 61//61 162//162 +f 218//218 162//162 61//61 +f 212//212 183//183 65//65 +f 63//63 65//65 183//183 +f 219//219 165//165 256//256 +f 220//220 256//256 165//165 +f 232//232 10//10 165//165 +f 15//15 165//165 10//10 +f 260//260 210//210 221//221 +f 178//178 221//221 210//210 +f 222//222 227//227 80//80 +f 201//201 80//80 227//227 +f 13//13 223//223 190//190 +f 189//189 190//190 223//223 +f 224//224 226//226 225//225 +f 198//198 225//225 226//226 +f 68//68 204//204 227//227 +f 69//69 227//227 204//204 +f 261//261 190//190 71//71 +f 228//228 71//71 190//190 +f 72//72 229//229 205//205 +f 193//193 205//205 229//229 +f 149//149 9//9 229//229 +f 191//191 229//229 9//9 +f 168//168 225//225 34//34 +f 192//192 34//34 225//225 +f 168//168 230//230 7//7 +f 230//230 233//233 7//7 +f 13//13 427//427 14//14 +f 364//364 231//231 188//188 +f 232//232 233//233 51//51 +f 233//233 363//363 51//51 +f 163//163 234//234 169//169 +f 427//427 169//169 234//234 +f 396//396 235//235 31//31 +f 235//235 326//326 31//31 +f 236//236 12//12 237//237 +f 12//12 238//238 237//237 +f 123//123 119//119 73//73 +f 239//239 73//73 119//119 +f 240//240 241//241 74//74 +f 154//154 74//74 241//241 +f 156//156 19//19 155//155 +f 239//239 155//155 19//19 +f 47//47 129//129 242//242 +f 154//154 242//242 129//129 +f 117//117 243//243 241//241 +f 156//156 241//241 243//243 +f 378//378 23//23 119//119 +f 47//47 119//119 23//23 +f 616//616 265//265 610//610 +f 264//264 610//610 265//265 +f 203//203 288//288 245//245 +f 244//244 245//245 288//288 +f 267//267 81//81 265//265 +f 81//81 84//84 266//266 +f 268//268 245//245 82//82 +f 82//82 246//246 75//75 +f 247//247 248//248 270//270 +f 248//248 249//249 91//91 +f 250//250 491//491 39//39 +f 299//299 250//250 270//270 +f 273//273 272//272 251//251 +f 251//251 252//252 253//253 +f 271//271 40//40 38//38 +f 292//292 272//272 271//271 +f 254//254 38//38 274//274 +f 247//247 254//254 255//255 +f 256//256 67//67 219//219 +f 161//161 219//219 67//67 +f 418//418 62//62 164//164 +f 61//61 164//164 62//62 +f 76//76 260//260 151//151 +f 221//221 151//151 260//260 +f 153//153 258//258 257//257 +f 216//216 257//257 258//258 +f 143//143 257//257 77//77 +f 212//212 77//77 257//257 +f 17//17 259//259 260//260 +f 211//211 260//260 259//259 +f 414//414 167//167 224//224 +f 226//226 224//224 167//167 +f 71//71 166//166 261//261 +f 428//428 261//261 166//166 +f 152//152 222//222 262//262 +f 80//80 262//262 222//222 +f 407//407 5//5 149//149 +f 9//9 149//149 5//5 +f 78//78 149//149 263//263 +f 72//72 263//263 149//149 +f 79//79 35//35 222//222 +f 68//68 222//222 35//35 +f 264//264 265//265 266//266 +f 81//81 266//266 265//265 +f 244//244 246//246 245//245 +f 82//82 245//245 246//246 +f 81//81 267//267 280//280 +f 280//280 283//283 85//85 +f 82//82 281//281 268//268 +f 281//281 90//90 89//89 +f 244//244 264//264 86//86 +f 86//86 282//282 84//84 +f 616//616 613//613 267//267 +f 279//279 267//267 613//613 +f 203//203 268//268 269//269 +f 286//286 269//269 268//268 +f 247//247 270//270 39//39 +f 250//250 39//39 270//270 +f 273//273 40//40 272//272 +f 271//271 272//272 40//40 +f 273//273 255//255 274//274 +f 254//254 274//274 255//255 +f 248//248 91//91 270//270 +f 299//299 270//270 91//91 +f 251//251 272//272 252//252 +f 292//292 252//252 272//272 +f 302//302 275//275 75//75 +f 247//247 255//255 302//302 +f 304//304 299//299 298//298 +f 298//298 92//92 249//249 +f 278//278 300//300 292//292 +f 300//300 253//253 301//301 +f 295//295 37//37 294//294 +f 307//307 295//295 304//304 +f 42//42 297//297 276//276 +f 277//277 278//278 42//42 +f 279//279 283//283 267//267 +f 280//280 267//267 283//283 +f 286//286 268//268 89//89 +f 281//281 89//89 268//268 +f 86//86 264//264 282//282 +f 266//266 282//282 264//264 +f 284//284 96//96 99//99 +f 283//283 279//279 284//284 +f 312//312 96//96 279//279 +f 284//284 279//279 96//96 +f 246//246 244//244 87//87 +f 86//86 87//87 244//244 +f 88//88 311//311 285//285 +f 89//89 88//88 286//286 +f 290//290 286//286 285//285 +f 88//88 285//285 286//286 +f 244//244 287//287 264//264 +f 610//610 264//264 287//287 +f 312//312 279//279 314//314 +f 613//613 314//314 279//279 +f 288//288 289//289 244//244 +f 287//287 244//244 289//289 +f 290//290 608//608 286//286 +f 269//269 286//286 608//608 +f 304//304 291//291 299//299 +f 250//250 299//299 291//291 +f 278//278 292//292 293//293 +f 271//271 293//293 292//292 +f 254//254 247//247 83//83 +f 39//39 83//83 247//247 +f 295//295 294//294 304//304 +f 291//291 304//304 294//294 +f 347//347 296//296 307//307 +f 295//295 307//307 296//296 +f 40//40 273//273 41//41 +f 274//274 41//41 273//273 +f 42//42 278//278 297//297 +f 293//293 297//297 278//278 +f 381//381 277//277 318//318 +f 42//42 318//318 277//277 +f 273//273 275//275 255//255 +f 302//302 255//255 275//275 +f 298//298 299//299 92//92 +f 91//91 92//92 299//299 +f 300//300 301//301 292//292 +f 252//252 292//292 301//301 +f 302//302 303//303 247//247 +f 248//248 247//247 303//303 +f 307//307 304//304 306//306 +f 298//298 306//306 304//304 +f 305//305 99//99 317//317 +f 306//306 305//305 307//307 +f 347//347 307//307 317//317 +f 305//305 317//317 307//307 +f 251//251 94//94 273//273 +f 275//275 273//273 94//94 +f 277//277 308//308 278//278 +f 300//300 278//278 308//308 +f 309//309 310//310 311//311 +f 308//308 277//277 309//309 +f 381//381 310//310 277//277 +f 309//309 277//277 310//310 +f 285//285 95//95 290//290 +f 385//385 290//290 95//95 +f 96//96 312//312 122//122 +f 359//359 122//122 312//312 +f 608//608 290//290 602//602 +f 602//602 313//313 36//36 +f 314//314 358//358 312//312 +f 358//358 605//605 97//97 +f 296//296 347//347 345//345 +f 389//389 345//345 347//347 +f 310//310 381//381 98//98 +f 98//98 315//315 316//316 +f 317//317 383//383 347//347 +f 383//383 107//107 384//384 +f 318//318 320//320 381//381 +f 319//319 381//381 320//320 +f 12//12 322//322 238//238 +f 321//321 238//238 322//322 +f 323//323 322//322 324//324 +f 12//12 324//324 322//322 +f 235//235 325//325 322//322 +f 321//321 322//322 325//325 +f 323//323 326//326 322//322 +f 235//235 322//322 326//326 +f 332//332 343//343 327//327 +f 22//22 327//327 343//343 +f 336//336 406//406 328//328 +f 411//411 328//328 406//406 +f 145//145 144//144 362//362 +f 341//341 109//109 330//330 +f 402//402 330//330 109//109 +f 329//329 144//144 112//112 +f 404//404 112//112 144//144 +f 159//159 360//360 330//330 +f 100//100 331//331 105//105 +f 215//215 343//343 100//100 +f 344//344 103//103 106//106 +f 214//214 344//344 328//328 +f 329//329 350//350 483//483 +f 483//483 395//395 479//479 +f 327//327 26//26 332//332 +f 352//352 332//332 26//26 +f 102//102 101//101 349//349 +f 366//366 102//102 338//338 +f 368//368 333//333 111//111 +f 365//365 350//350 368//368 +f 343//343 332//332 342//342 +f 342//342 334//334 316//316 +f 328//328 108//108 336//336 +f 108//108 107//107 335//335 +f 406//406 336//336 337//337 +f 353//353 337//337 336//336 +f 341//341 393//393 338//338 +f 393//393 93//93 394//394 +f 483//483 494//494 329//329 +f 144//144 329//329 494//494 +f 338//338 110//110 341//341 +f 109//109 341//341 110//110 +f 350//350 329//329 339//339 +f 112//112 339//339 329//329 +f 393//393 341//341 340//340 +f 330//330 340//340 341//341 +f 342//342 331//331 343//343 +f 100//100 343//343 331//331 +f 108//108 328//328 106//106 +f 344//344 106//106 328//328 +f 320//320 45//45 319//319 +f 365//365 319//319 45//45 +f 345//345 389//389 346//346 +f 366//366 346//346 389//389 +f 381//381 319//319 113//113 +f 113//113 388//388 105//105 +f 347//347 382//382 389//389 +f 382//382 103//103 348//348 +f 385//385 352//352 387//387 +f 26//26 387//387 352//352 +f 110//110 338//338 349//349 +f 102//102 349//349 338//338 +f 339//339 333//333 350//350 +f 368//368 350//350 333//333 +f 390//390 351//351 311//311 +f 332//332 352//352 390//390 +f 392//392 99//99 391//391 +f 336//336 392//392 353//353 +f 359//359 27//27 353//353 +f 337//337 353//353 27//27 +f 354//354 355//355 132//132 +f 132//132 356//356 14//14 +f 114//114 49//49 357//357 +f 354//354 114//114 355//355 +f 199//199 356//356 355//355 +f 132//132 355//355 356//356 +f 114//114 357//357 355//355 +f 199//199 355//355 357//357 +f 602//602 290//290 313//313 +f 385//385 313//313 290//290 +f 358//358 97//97 312//312 +f 359//359 312//312 97//97 +f 360//360 361//361 330//330 +f 340//340 330//330 361//361 +f 362//362 144//144 495//495 +f 494//494 495//495 144//144 +f 20//20 51//51 363//363 +f 114//114 51//51 20//20 +f 427//427 364//364 14//14 +f 132//132 14//14 364//364 +f 45//45 46//46 365//365 +f 350//350 365//365 46//46 +f 389//389 367//367 366//366 +f 102//102 366//366 367//367 +f 319//319 365//365 115//115 +f 368//368 115//115 365//365 +f 346//346 366//366 104//104 +f 338//338 104//104 366//366 +f 390//390 334//334 332//332 +f 342//342 332//332 334//334 +f 392//392 336//336 335//335 +f 108//108 335//335 336//336 +f 133//133 372//372 116//116 +f 116//116 369//369 409//409 +f 371//371 150//150 370//370 +f 133//133 371//371 372//372 +f 19//19 369//369 372//372 +f 116//116 372//372 369//369 +f 371//371 370//370 372//372 +f 19//19 372//372 370//370 +f 129//129 375//375 376//376 +f 376//376 377//377 79//79 +f 373//373 78//78 374//374 +f 129//129 373//373 375//375 +f 208//208 377//377 375//375 +f 376//376 375//375 377//377 +f 373//373 374//374 375//375 +f 208//208 375//375 374//374 +f 241//241 240//240 118//118 +f 146//146 118//118 240//240 +f 119//119 120//120 378//378 +f 160//160 378//378 120//120 +f 150//150 515//515 379//379 +f 485//485 379//379 515//515 +f 409//409 140//140 380//380 +f 518//518 380//380 140//140 +f 74//74 2//2 240//240 +f 405//405 240//240 2//2 +f 23//23 378//378 24//24 +f 147//147 24//24 378//378 +f 113//113 315//315 381//381 +f 98//98 381//381 315//315 +f 382//382 347//347 384//384 +f 383//383 384//384 347//347 +f 97//97 44//44 359//359 +f 27//27 359//359 44//44 +f 95//95 121//121 385//385 +f 352//352 385//385 121//121 +f 122//122 359//359 386//386 +f 353//353 386//386 359//359 +f 313//313 385//385 43//43 +f 387//387 43//43 385//385 +f 115//115 388//388 319//319 +f 113//113 319//319 388//388 +f 367//367 389//389 348//348 +f 382//382 348//348 389//389 +f 121//121 351//351 352//352 +f 390//390 352//352 351//351 +f 386//386 353//353 391//391 +f 392//392 391//391 353//353 +f 393//393 394//394 338//338 +f 104//104 338//338 394//394 +f 483//483 350//350 395//395 +f 46//46 395//395 350//350 +f 17//17 141//141 6//6 +f 396//396 6//6 141//141 +f 236//236 207//207 11//11 +f 143//143 11//11 207//207 +f 213//213 397//397 147//147 +f 24//24 147//147 397//397 +f 2//2 3//3 405//405 +f 398//398 405//405 3//3 +f 117//117 399//399 520//520 +f 158//158 520//520 399//399 +f 400//400 401//401 497//497 +f 123//123 497//497 401//401 +f 402//402 147//147 403//403 +f 378//378 403//403 147//147 +f 240//240 405//405 124//124 +f 404//404 124//124 405//405 +f 406//406 4//4 411//411 +f 407//407 411//411 4//4 +f 327//327 408//408 36//36 +f 152//152 36//36 408//408 +f 76//76 18//18 17//17 +f 371//371 17//17 18//18 +f 153//153 410//410 409//409 +f 116//116 409//409 410//410 +f 407//407 412//412 411//411 +f 373//373 411//411 412//412 +f 152//152 413//413 79//79 +f 376//376 79//79 413//413 +f 505//505 25//25 472//472 +f 76//76 472//472 25//25 +f 503//503 1//1 409//409 +f 153//153 409//409 1//1 +f 414//414 415//415 125//125 +f 126//126 125//125 415//415 +f 219//219 177//177 127//127 +f 422//422 127//127 177//177 +f 261//261 417//417 416//416 +f 134//134 416//416 417//417 +f 418//418 420//420 419//419 +f 128//128 419//419 420//420 +f 170//170 321//321 172//172 +f 126//126 172//172 321//321 +f 176//176 421//421 173//173 +f 134//134 173//173 421//421 +f 422//422 175//175 421//421 +f 423//423 421//421 175//175 +f 128//128 424//424 323//323 +f 21//21 323//323 424//424 +f 161//161 425//425 177//177 +f 21//21 177//177 425//425 +f 428//428 50//50 417//417 +f 170//170 417//417 50//50 +f 224//224 8//8 415//415 +f 176//176 415//415 8//8 +f 164//164 426//426 420//420 +f 423//423 420//420 426//426 +f 20//20 363//363 230//230 +f 233//233 230//230 363//363 +f 234//234 231//231 427//427 +f 364//364 427//427 231//231 +f 72//72 58//58 33//33 +f 414//414 33//33 58//58 +f 428//428 70//70 429//429 +f 68//68 429//429 70//70 +f 541//541 431//431 430//430 +f 431//431 432//432 430//430 +f 521//521 430//430 432//432 +f 433//433 430//430 521//521 +f 499//499 430//430 433//433 +f 471//471 430//430 499//499 +f 547//547 546//546 548//548 +f 550//550 486//486 551//551 +f 434//434 488//488 563//563 +f 451//451 435//435 436//436 +f 486//486 571//571 464//464 +f 553//553 448//448 536//536 +f 523//523 525//525 480//480 +f 476//476 524//524 523//523 +f 475//475 580//580 476//476 +f 478//478 581//581 475//475 +f 477//477 582//582 478//478 +f 438//438 583//583 477//477 +f 439//439 437//437 438//438 +f 474//474 584//584 439//439 +f 492//492 585//585 474//474 +f 490//490 587//587 492//492 +f 489//489 440//440 490//490 +f 510//510 441//441 489//489 +f 443//443 586//586 510//510 +f 442//442 586//586 443//443 +f 444//444 586//586 442//442 +f 445//445 586//586 444//444 +f 511//511 586//586 445//445 +f 446//446 586//586 511//511 +f 513//513 586//586 446//446 +f 512//512 586//586 513//513 +f 447//447 586//586 512//512 +f 481//481 586//586 447//447 +f 482//482 586//586 481//481 +f 448//448 578//578 468//468 +f 484//484 558//558 544//544 +f 556//556 484//484 449//449 +f 558//558 559//559 527//527 +f 559//559 480//480 525//525 +f 450//450 519//519 530//530 +f 488//488 451//451 561//561 +f 519//519 434//434 564//564 +f 565//565 553//553 537//537 +f 452//452 453//453 532//532 +f 509//509 452//452 454//454 +f 455//455 574//574 534//534 +f 571//571 573//573 529//529 +f 573//573 455//455 572//572 +f 574//574 509//509 568//568 +f 435//435 556//556 462//462 +f 453//453 565//565 456//456 +f 469//469 450//450 560//560 +f 541//541 547//547 473//473 +f 548//548 550//550 549//549 +f 527//527 457//457 586//586 +f 561//561 552//552 487//487 +f 544//544 526//526 458//458 +f 449//449 459//459 543//543 +f 551//551 460//460 542//542 +f 563//563 562//562 461//461 +f 564//564 545//545 539//539 +f 536//536 555//555 496//496 +f 462//462 557//557 493//493 +f 454//454 566//566 501//501 +f 537//537 554//554 463//463 +f 529//529 538//538 506//506 +f 464//464 570//570 528//528 +f 568//568 567//567 502//502 +f 534//534 575//575 533//533 +f 572//572 569//569 507//507 +f 436//436 576//576 535//535 +f 530//530 465//465 498//498 +f 532//532 577//577 531//531 +f 456//456 466//466 467//467 +f 468//468 469//469 517//517 +f 517//517 470//470 516//516 +f 430//430 471//471 504//504 +f 500//500 540//540 472//472 +f 546//546 430//430 504//504 +f 540//540 473//473 472//472 +f 473//473 549//549 472//472 +f 486//486 546//546 504//504 +f 549//549 542//542 472//472 +f 38//38 491//491 510//510 +f 38//38 510//510 489//489 +f 442//442 443//443 491//491 +f 491//491 37//37 445//445 +f 491//491 445//445 444//444 +f 446//446 511//511 37//37 +f 37//37 93//93 447//447 +f 37//37 447//447 512//512 +f 513//513 446//446 37//37 +f 276//276 38//38 474//474 +f 276//276 474//474 439//439 +f 490//490 492//492 38//38 +f 438//438 477//477 276//276 +f 479//479 276//276 475//475 +f 479//479 475//475 476//476 +f 477//477 478//478 276//276 +f 523//523 480//480 479//479 +f 480//480 559//559 479//479 +f 482//482 481//481 93//93 +f 586//586 482//482 93//93 +f 487//487 535//535 360//360 +f 435//435 451//451 362//362 +f 393//393 340//340 543//543 +f 393//393 543//543 458//458 +f 93//93 393//393 458//458 +f 93//93 458//458 586//586 +f 494//494 483//483 558//558 +f 494//494 558//558 484//484 +f 483//483 479//479 559//559 +f 483//483 559//559 558//558 +f 578//578 448//448 518//518 +f 496//496 517//517 485//485 +f 542//542 528//528 472//472 +f 571//571 486//486 504//504 +f 360//360 159//159 461//461 +f 360//360 461//461 487//487 +f 159//159 400//400 539//539 +f 159//159 539//539 461//461 +f 145//145 362//362 451//451 +f 145//145 451//451 488//488 +f 158//158 145//145 488//488 +f 158//158 488//488 434//434 +f 489//489 490//490 38//38 +f 444//444 442//442 491//491 +f 492//492 474//474 38//38 +f 481//481 447//447 93//93 +f 476//476 523//523 479//479 +f 340//340 361//361 493//493 +f 340//340 493//493 543//543 +f 495//495 494//494 484//484 +f 495//495 484//484 556//556 +f 485//485 515//515 463//463 +f 485//485 463//463 496//496 +f 380//380 518//518 448//448 +f 380//380 448//448 553//553 +f 520//520 158//158 434//434 +f 520//520 434//434 519//519 +f 400//400 497//497 498//498 +f 400//400 498//498 539//539 +f 471//471 499//499 504//504 +f 472//472 522//522 579//579 +f 472//472 579//579 500//500 +f 522//522 504//504 499//499 +f 522//522 499//499 433//433 +f 453//453 452//452 28//28 +f 452//452 509//509 28//28 +f 501//501 531//531 514//514 +f 502//502 501//501 514//514 +f 504//504 503//503 573//573 +f 504//504 573//573 571//571 +f 455//455 573//573 503//503 +f 505//505 472//472 528//528 +f 505//505 528//528 506//506 +f 506//506 507//507 505//505 +f 508//508 505//505 507//507 +f 508//508 507//507 533//533 +f 514//514 508//508 533//533 +f 514//514 533//533 502//502 +f 29//29 28//28 509//509 +f 29//29 509//509 574//574 +f 503//503 29//29 574//574 +f 503//503 574//574 455//455 +f 443//443 510//510 491//491 +f 511//511 445//445 37//37 +f 439//439 438//438 276//276 +f 512//512 513//513 37//37 +f 478//478 475//475 276//276 +f 362//362 495//495 556//556 +f 362//362 556//556 435//435 +f 361//361 360//360 535//535 +f 361//361 535//535 493//493 +f 515//515 514//514 531//531 +f 515//515 531//531 467//467 +f 467//467 463//463 515//515 +f 28//28 380//380 565//565 +f 28//28 565//565 453//453 +f 553//553 565//565 380//380 +f 516//516 498//498 497//497 +f 497//497 485//485 517//517 +f 497//497 517//517 516//516 +f 518//518 520//520 450//450 +f 518//518 450//450 578//578 +f 519//519 450//450 520//520 +f 433//433 521//521 522//522 +f 521//521 579//579 522//522 +f 525//525 523//523 524//524 +f 525//525 586//586 457//457 +f 525//525 524//524 586//586 +f 524//524 476//476 580//580 +f 436//436 487//487 552//552 +f 535//535 487//487 436//436 +f 524//524 580//580 586//586 +f 580//580 475//475 581//581 +f 527//527 458//458 526//526 +f 586//586 458//458 527//527 +f 529//529 528//528 570//570 +f 506//506 528//528 529//529 +f 456//456 531//531 577//577 +f 467//467 531//531 456//456 +f 568//568 533//533 575//575 +f 502//502 533//533 568//568 +f 530//530 516//516 470//470 +f 498//498 516//516 530//530 +f 454//454 502//502 567//567 +f 501//501 502//502 454//454 +f 532//532 501//501 566//566 +f 531//531 501//501 532//532 +f 534//534 507//507 569//569 +f 533//533 507//507 534//534 +f 462//462 535//535 576//576 +f 493//493 535//535 462//462 +f 536//536 463//463 554//554 +f 496//496 463//463 536//536 +f 537//537 467//467 466//466 +f 463//463 467//467 537//537 +f 572//572 506//506 538//538 +f 507//507 506//506 572//572 +f 564//564 498//498 465//465 +f 539//539 498//498 564//564 +f 500//500 541//541 540//540 +f 473//473 540//540 541//541 +f 449//449 493//493 557//557 +f 543//543 493//493 449//449 +f 464//464 542//542 460//460 +f 528//528 542//542 464//464 +f 468//468 496//496 555//555 +f 517//517 496//496 468//468 +f 544//544 543//543 459//459 +f 458//458 543//543 544//544 +f 561//561 461//461 562//562 +f 487//487 461//461 561//561 +f 563//563 539//539 545//545 +f 461//461 539//539 563//563 +f 546//546 547//547 430//430 +f 541//541 430//430 547//547 +f 547//547 548//548 473//473 +f 549//549 473//473 548//548 +f 486//486 550//550 546//546 +f 548//548 546//546 550//550 +f 550//550 551//551 549//549 +f 542//542 549//549 551//551 +f 563//563 545//545 434//434 +f 564//564 434//434 545//545 +f 436//436 552//552 451//451 +f 561//561 451//451 552//552 +f 464//464 460//460 486//486 +f 551//551 486//486 460//460 +f 536//536 554//554 553//553 +f 537//537 553//553 554//554 +f 468//468 555//555 448//448 +f 536//536 448//448 555//555 +f 544//544 459//459 484//484 +f 449//449 484//484 459//459 +f 449//449 557//557 556//556 +f 462//462 556//556 557//557 +f 527//527 526//526 558//558 +f 544//544 558//558 526//526 +f 525//525 457//457 559//559 +f 527//527 559//559 457//457 +f 530//530 470//470 450//450 +f 470//470 560//560 450//450 +f 561//561 562//562 488//488 +f 563//563 488//488 562//562 +f 564//564 465//465 519//519 +f 530//530 519//519 465//465 +f 537//537 466//466 565//565 +f 456//456 565//565 466//466 +f 532//532 566//566 452//452 +f 454//454 452//452 566//566 +f 454//454 567//567 509//509 +f 568//568 509//509 567//567 +f 534//534 569//569 455//455 +f 572//572 455//455 569//569 +f 529//529 570//570 571//571 +f 464//464 571//571 570//570 +f 572//572 538//538 573//573 +f 529//529 573//573 538//538 +f 568//568 575//575 574//574 +f 534//534 574//574 575//575 +f 462//462 576//576 435//435 +f 436//436 435//435 576//576 +f 456//456 577//577 453//453 +f 532//532 453//453 577//577 +f 450//450 469//469 578//578 +f 468//468 578//578 469//469 +f 469//469 560//560 517//517 +f 470//470 517//517 560//560 +f 541//541 500//500 431//431 +f 579//579 431//431 500//500 +f 580//580 581//581 586//586 +f 581//581 478//478 582//582 +f 581//581 582//582 586//586 +f 582//582 477//477 583//583 +f 582//582 583//583 586//586 +f 583//583 438//438 437//437 +f 583//583 437//437 586//586 +f 437//437 439//439 584//584 +f 437//437 584//584 586//586 +f 584//584 474//474 585//585 +f 584//584 585//585 586//586 +f 585//585 492//492 587//587 +f 585//585 587//587 586//586 +f 587//587 490//490 440//440 +f 587//587 440//440 586//586 +f 440//440 489//489 441//441 +f 440//440 441//441 586//586 +f 510//510 586//586 441//441 +f 431//431 579//579 432//432 +f 521//521 432//432 579//579 +f 589//589 600//600 599//599 +f 620//620 601//601 589//589 +f 588//588 620//620 589//589 +f 621//621 588//588 589//589 +f 618//618 621//621 589//589 +f 590//590 618//618 589//589 +f 598//598 590//590 589//589 +f 591//591 598//598 589//589 +f 592//592 591//591 589//589 +f 609//609 603//603 597//597 +f 615//615 609//609 597//597 +f 593//593 615//615 597//597 +f 617//617 593//593 597//597 +f 611//611 617//617 597//597 +f 612//612 611//611 597//597 +f 594//594 612//612 597//597 +f 595//595 594//594 597//597 +f 596//596 595//595 597//597 +f 614//614 596//596 597//597 +f 606//606 614//614 597//597 +f 607//607 606//606 597//597 +f 604//604 607//607 597//597 +f 599//599 597//597 603//603 +f 600//600 589//589 601//601 +f 597//597 599//599 600//600 +f 592//592 589//589 36//36 +f 36//36 619//619 590//590 +f 36//36 590//590 598//598 +f 601//601 620//620 605//605 +f 589//589 599//599 36//36 +f 597//597 600//600 605//605 +f 600//600 601//601 605//605 +f 596//596 614//614 616//616 +f 593//593 617//617 203//203 +f 287//287 289//289 612//612 +f 287//287 612//612 594//594 +f 608//608 602//602 603//603 +f 608//608 603//603 609//609 +f 602//602 36//36 599//599 +f 602//602 599//599 603//603 +f 358//358 314//314 607//607 +f 358//358 607//607 604//604 +f 605//605 358//358 604//604 +f 605//605 604//604 597//597 +f 314//314 613//613 606//606 +f 314//314 606//606 607//607 +f 269//269 608//608 609//609 +f 269//269 609//609 615//615 +f 610//610 287//287 594//594 +f 610//610 594//594 595//595 +f 289//289 288//288 611//611 +f 289//289 611//611 612//612 +f 613//613 616//616 614//614 +f 613//613 614//614 606//606 +f 203//203 269//269 615//615 +f 203//203 615//615 593//593 +f 591//591 592//592 36//36 +f 619//619 605//605 588//588 +f 619//619 588//588 621//621 +f 616//616 610//610 595//595 +f 616//616 595//595 596//596 +f 288//288 203//203 617//617 +f 288//288 617//617 611//611 +f 598//598 591//591 36//36 +f 618//618 590//590 619//619 +f 620//620 588//588 605//605 +f 621//621 618//618 619//619 +# 1246 faces, 0 coords texture + +# End of File \ No newline at end of file diff --git a/tests/sla_print/sla_print_tests_main.cpp b/tests/sla_print/sla_print_tests_main.cpp index a35173b15..457523e19 100644 --- a/tests/sla_print/sla_print_tests_main.cpp +++ b/tests/sla_print/sla_print_tests_main.cpp @@ -19,6 +19,7 @@ #include "libslic3r/MTUtils.hpp" #include "libslic3r/SVG.hpp" +#include "libslic3r/Format/OBJ.hpp" #if defined(WIN32) || defined(_WIN32) #define PATH_SEPARATOR R"(\)" @@ -202,7 +203,7 @@ void test_supports(const std::string & obj_filename, // If there is no elevation, support points shall be removed from the // bottom of the object. - if (supportcfg.object_elevation_mm < EPSILON) { + if (std::abs(supportcfg.object_elevation_mm) < EPSILON) { sla::remove_bottom_points(support_points, zmin, supportcfg.base_height_mm); } else { @@ -225,7 +226,16 @@ void test_supports(const std::string & obj_filename, // Quick check if the dimensions and placement of supports are correct auto obb = output_mesh.bounding_box(); - ASSERT_DOUBLE_EQ(obb.min.z(), zmin - supportcfg.object_elevation_mm); + + double allowed_zmin = zmin - supportcfg.object_elevation_mm; + + if (std::abs(supportcfg.object_elevation_mm) < EPSILON) + allowed_zmin = zmin - 2 * supportcfg.head_back_radius_mm; + + if (std::abs(obb.min.z() - allowed_zmin) > EPSILON) + output_mesh.WriteOBJFile("outmesh_supports.obj"); + + ASSERT_GE(obb.min.z(), allowed_zmin); ASSERT_LE(obb.max.z(), zmax); // Move out the support tree into the byproducts, we can examine it further @@ -286,7 +296,8 @@ const char * const AROUND_PAD_TEST_OBJECTS[] = { }; const char *const SUPPORT_TEST_MODELS[] = { - "cube_with_concave_hole_enlarged_standing.obj" + "cube_with_concave_hole_enlarged_standing.obj", + "A_upsidedown.obj" }; } // namespace From fefde79c899074c22c6fabc8ac7981a34a10a15c Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 3 Oct 2019 15:13:17 +0200 Subject: [PATCH 36/53] Make sure no vector reallocation will be performed on pillars. This is a workaround for now, it needs to be handled properly. --- src/libslic3r/SLA/SLASupportTreeBuilder.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp index 9a0036474..95fcdcc32 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp +++ b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp @@ -309,7 +309,7 @@ public: { std::lock_guard lk(m_mutex); if (m_pillars.capacity() < m_heads.size()) - m_pillars.reserve(m_heads.size() * 2); + m_pillars.reserve(m_heads.size() * 10); assert(headid >= 0 && headid < m_head_indices.size()); Head &head = m_heads[m_head_indices[size_t(headid)]]; @@ -360,7 +360,8 @@ public: { std::lock_guard lk(m_mutex); if (m_pillars.capacity() < m_heads.size()) - m_pillars.reserve(m_heads.size() * 2); + m_pillars.reserve(m_heads.size() * 10); + m_pillars.emplace_back(std::forward(args)...); Pillar& pillar = m_pillars.back(); pillar.id = long(m_pillars.size() - 1); From 4569a6026a9a841a4515430d44f8ca8da126ee31 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 3 Oct 2019 16:15:11 +0200 Subject: [PATCH 37/53] Add an additional sla test object for support generation. --- tests/data/extruder_idler.obj | 7164 ++++++++++++++++++++++ tests/sla_print/sla_print_tests_main.cpp | 16 +- 2 files changed, 7177 insertions(+), 3 deletions(-) create mode 100644 tests/data/extruder_idler.obj diff --git a/tests/data/extruder_idler.obj b/tests/data/extruder_idler.obj new file mode 100644 index 000000000..df052fe09 --- /dev/null +++ b/tests/data/extruder_idler.obj @@ -0,0 +1,7164 @@ +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object extruder-idler.obj +# +# Vertices: 1781 +# Faces: 3586 +# +#### +vn -0.000143 1.570801 -0.000742 +v 61.288807 37.917557 6.068595 +vn -0.000006 0.062752 -0.000030 +v 61.312790 37.917618 6.193261 +vn -0.000163 1.761613 -0.000848 +v 61.356049 37.917774 6.504920 +vn -0.000141 1.515187 -0.000732 +v 46.677547 37.917866 9.519013 +vn -0.000148 1.567333 -0.000766 +v 55.420834 37.917618 7.326775 +vn -0.000143 1.570791 -0.000742 +v 55.396851 37.917557 7.202109 +vn -0.105001 1.401927 -0.545789 +v 70.876183 37.682098 2.970614 +vn -0.004850 0.064757 -0.025211 +v 46.216084 37.450668 7.120349 +vn -0.035842 1.496105 -0.186307 +v 61.171124 37.838562 5.456883 +vn -0.250623 0.841111 -1.302727 +v 70.404060 35.864510 0.516525 +vn -0.009209 0.030905 -0.047867 +v 70.345604 35.376511 0.212692 +vn -0.250624 0.841114 -1.302734 +v 54.692173 35.864510 3.539228 +vn -0.010230 0.034332 -0.053174 +v 54.633720 35.376511 3.235396 +vn 0.101816 2.103979 0.529236 +v 61.171051 37.731289 7.795076 +vn 0.089810 1.855244 0.466818 +v 55.864639 37.839470 8.386023 +vn -0.070675 1.453787 -0.367366 +v 55.279167 37.838562 6.590397 +vn -0.070675 1.453787 -0.367366 +v 46.326366 37.682098 7.693588 +vn -0.174551 1.270324 -0.907309 +v 70.566055 36.778572 1.358596 +vn -0.006968 0.050712 -0.036220 +v 70.661987 37.147907 1.857247 +vn -0.174551 1.270324 -0.907309 +v 54.854176 36.778572 4.381299 +vn -0.006345 0.061016 -0.032981 +v 46.112171 37.147907 6.580221 +vn -0.006345 0.061017 -0.032981 +v 55.054016 37.450668 5.420078 +vn -0.219632 0.960605 -1.141638 +v 60.659683 36.348526 2.798444 +vn -0.228765 1.000546 -1.189108 +v 54.767727 36.348526 3.931957 +vn -0.218621 0.956181 -1.136381 +v 45.929794 36.348526 5.632228 +vn 1.561373 -0.000008 -0.300418 +v 50.387226 39.697979 28.801762 +vn 1.419308 -0.000007 -0.273084 +v 50.382210 39.699635 28.775690 +vn 1.442939 0.000003 -0.277633 +v 48.877922 40.196674 20.956472 +vn 0.222769 0.000001 -0.042862 +v 48.879765 39.946739 20.966045 +vn 1.267715 -0.000004 -0.243886 +v 48.897690 38.450691 21.059217 +vn 0.420540 -0.000001 -0.080904 +v 48.672623 38.559273 19.889320 +vn 0.507282 -0.000000 -0.097592 +v 48.627918 34.768574 19.656961 +vn 1.124192 0.000004 -0.216281 +v 48.967503 37.518620 21.422112 +vn 1.952789 -0.000000 -0.375685 +v 49.148136 36.364048 22.361021 +vn 0.773956 -0.000001 -0.148896 +v 49.308113 35.827209 23.192574 +vn 2.208532 -0.000002 -0.424885 +v 49.224934 36.068989 22.760210 +vn 0.897155 0.000003 -0.172595 +v 50.379288 38.947979 28.760509 +vn 1.310554 -0.000003 -0.252128 +v 50.332268 37.976688 28.516096 +vn 2.344881 -0.000010 -0.451112 +v 50.291908 37.522064 28.306307 +vn 1.050245 0.000000 -0.202050 +v 50.557526 37.884193 29.686979 +vn 2.434465 0.000016 -0.468344 +v 49.863396 35.643738 26.078924 +vn 0.577568 0.000004 -0.111113 +v 49.771500 35.518578 25.601242 +vn 0.102533 -0.000000 -0.019726 +v 50.513439 34.145573 29.457813 +vn -1.225527 -0.000015 0.235760 +v 46.316734 33.337154 7.643516 +vn -1.434948 0.000001 0.276060 +v 45.795788 35.376511 4.935667 +vn -0.169198 0.000000 0.032551 +v 46.366432 33.896751 7.901852 +vn -1.480875 0.000001 0.284896 +v 45.854240 35.864510 5.239500 +vn -1.933506 -0.000010 0.371980 +v 46.306992 32.926773 7.592876 +vn -1.652693 0.000003 0.317951 +v 46.316822 32.516430 7.643979 +vn -1.377329 -0.000007 0.264988 +v 46.420128 31.655691 8.180969 +vn -1.553815 0.000008 0.298912 +v 46.451801 31.534010 8.345595 +vn -1.730379 -0.000013 0.332914 +v 46.486115 31.434301 8.523966 +vn -2.244284 -0.000014 0.431776 +v 46.599277 31.280785 9.112178 +vn -0.865557 -0.000000 0.166519 +v 46.099930 28.231632 6.516577 +vn -0.149164 0.000000 0.028697 +v 46.638424 31.280876 9.315653 +vn -0.782154 0.000000 0.150474 +v 47.221455 27.861065 12.346222 +vn -1.124992 0.000002 0.216432 +v 46.715168 31.358620 9.714571 +vn -1.732951 -0.000009 0.333382 +v 46.785843 31.534855 10.081941 +vn -0.041774 0.000001 0.008037 +v 47.732357 31.056692 15.001865 +vn -1.195928 0.000015 0.230083 +v 46.930408 32.928387 10.833368 +vn -1.847315 0.000024 0.355403 +v 46.927967 32.721592 10.820692 +vn -1.160291 -0.000001 0.223223 +v 47.124451 37.150532 11.842004 +vn -1.174882 0.000000 0.226026 +v 47.220444 36.781719 12.340965 +vn -1.554225 0.000012 0.299023 +v 46.817513 31.656748 10.246544 +vn -1.200978 -0.000005 0.231041 +v 46.870964 31.958406 10.524391 +vn -0.833625 -0.000000 0.160376 +v 46.891937 32.133430 10.633411 +vn -1.196981 -0.000001 0.230280 +v 47.306953 36.352104 12.790643 +vn -1.420521 -0.000013 0.273269 +v 46.391373 34.056538 8.031486 +vn -1.480841 0.000000 0.284889 +v 46.016239 36.778572 6.081570 +vn -1.480769 -0.000000 0.284876 +v 46.441235 37.838562 8.290668 +vn -1.604235 -0.000000 0.308612 +v 46.598972 34.574272 9.110590 +vn -1.420492 -0.000000 0.273265 +v 46.560146 34.548199 8.908764 +vn -1.420491 0.000000 0.273278 +v 46.558918 37.917557 8.902380 +vn -1.604143 -0.000003 0.308623 +v 46.714870 34.497074 9.713024 +vn -0.057554 -0.000000 0.011073 +v 47.020462 37.452759 11.301476 +vn -1.480771 0.000001 0.284876 +v 46.910164 37.683620 10.728139 +vn -2.314036 -0.000003 0.445191 +v 46.870785 33.898132 10.523453 +vn -0.733024 -0.000001 0.141024 +v 46.891777 33.723171 10.632566 +vn -0.183690 0.000000 0.035338 +v 46.751282 34.420887 9.902280 +vn -0.208469 -0.000000 0.040106 +v 51.630699 27.764736 35.265278 +vn -0.715989 -0.000000 0.137744 +v 52.147446 28.245863 37.951313 +vn 0.035416 1.489822 0.184089 +v 46.795250 37.839470 10.130821 +vn 0.037048 1.558502 0.192576 +v 71.227364 37.917866 4.796038 +vn 0.482819 -0.000001 -0.092887 +v 76.205231 29.860657 30.670778 +vn 0.579661 -0.000004 -0.111544 +v 70.878639 33.534252 2.983394 +vn 2.313601 0.000003 -0.445096 +v 70.916252 33.896751 3.178878 +vn 1.968867 -0.000015 -0.378827 +v 70.969704 34.198410 3.456725 +vn 1.787849 0.000015 -0.343910 +v 71.001366 34.320305 3.621328 +vn 1.480769 0.000000 -0.284876 +v 70.991051 37.838562 3.567693 +vn 1.420538 0.000000 -0.273288 +v 71.108734 37.917557 4.179405 +vn 1.420492 0.000000 -0.273266 +v 71.109962 34.548199 4.185790 +vn 1.420506 0.000001 -0.273296 +v 71.226776 34.548508 4.792975 +vn 1.480801 0.000001 -0.284874 +v 71.345062 37.839470 5.407847 +vn 1.480771 0.000001 -0.284876 +v 71.459976 37.683620 6.005164 +vn 1.604218 -0.000018 -0.308583 +v 71.301102 34.420887 5.179305 +vn 0.183696 0.000000 -0.035341 +v 71.441589 33.723171 5.909592 +vn 1.696795 0.000006 -0.326422 +v 70.479614 36.348526 0.909254 +vn 0.153289 -0.000000 -0.029490 +v 70.866547 33.337154 2.920542 +vn 1.174867 -0.000001 -0.226026 +v 70.765900 37.450668 2.397374 +vn 1.001914 -0.000024 -0.192750 +v 70.916428 31.957125 3.179823 +vn 0.055336 -0.000001 -0.010646 +v 70.304688 31.906664 0.000000 +vn 1.520293 -0.000007 -0.292468 +v 71.001617 31.534010 3.622621 +vn 1.339794 0.000007 -0.257762 +v 71.035934 31.434301 3.800991 +vn 0.827690 0.000009 -0.159241 +v 71.149094 31.280785 4.389203 +vn 2.216429 0.000024 -0.426423 +v 71.110252 31.306643 4.187318 +vn 0.521935 -0.000005 -0.100407 +v 71.227066 31.306923 4.794502 +vn 0.245335 0.000003 -0.047200 +v 71.301376 31.434967 5.180758 +vn 2.828187 0.000030 -0.544116 +v 71.264984 31.358620 4.991596 +vn 1.728696 -0.000003 -0.332572 +v 71.458290 33.535702 5.996392 +vn 1.120128 0.000013 -0.215503 +v 71.477760 33.135204 6.097586 +vn 2.260173 -0.000032 -0.434794 +v 71.480225 32.928387 6.110393 +vn 2.193017 -0.000006 -0.421898 +v 72.579239 34.928131 11.823022 +vn 0.601517 0.000000 -0.115722 +v 73.058540 33.686779 14.314425 +vn 0.070955 0.000000 -0.013651 +v 71.367325 31.656748 5.523570 +vn 0.135387 0.000000 -0.026046 +v 73.568642 32.857552 16.965889 +vn 0.470324 -0.000000 -0.090483 +v 73.831314 32.604336 18.331276 +vn 0.210008 0.000000 -0.040402 +v 75.124626 28.113617 25.053829 +vn 0.859610 0.000002 -0.165374 +v 74.363899 32.428364 21.099625 +vn 1.264038 0.000000 -0.243178 +v 74.895103 32.695507 23.860798 +vn 1.321118 0.000000 -0.254159 +v 75.156105 32.993713 25.217482 +vn 2.165308 0.000004 -0.416566 +v 75.149338 30.209538 25.182302 +vn 0.200971 -0.000000 -0.038664 +v 76.679512 26.740294 33.136051 +vn 0.715990 0.000002 -0.137744 +v 76.697266 28.245863 33.228336 +vn 0.534310 0.000000 -0.102792 +v 76.180519 27.764736 30.542305 +vn 0.267039 0.666162 1.388057 +v 71.996040 35.338497 8.791578 +vn 0.268436 0.669647 1.395318 +v 72.012505 35.153580 8.877157 +vn 0.005623 0.054211 0.029230 +v 56.978554 37.452759 9.385705 +vn 0.075931 0.732656 0.394764 +v 57.088562 37.406780 9.449879 +vn 0.137705 1.327544 0.715782 +v 71.674271 37.150532 7.119029 +vn 0.229764 2.214425 1.194352 +v 60.551853 37.406780 8.783600 +vn 0.031353 0.302335 0.162972 +v 59.598507 37.150532 9.442204 +vn 0.224889 0.985945 1.168964 +v 47.382626 35.868492 13.183980 +vn 0.224888 0.985940 1.168961 +v 71.856773 36.352104 8.067668 +vn 0.000781 0.005699 0.004062 +v 71.770264 36.781719 7.617991 +vn 0.329656 2.404277 1.713509 +v 59.439774 37.126163 9.506907 +vn 0.000000 0.000000 0.000000 +v 58.300529 37.132675 9.716898 +vn 0.312847 2.924138 1.105057 +v 58.834583 37.093670 9.668919 +vn 0.001859 0.024886 0.009663 +v 71.570282 37.452759 6.578501 +vn 0.246491 0.828731 1.281251 +v 71.932442 35.868492 8.461005 +vn 0.004004 0.013462 0.020812 +v 47.446220 35.338497 13.514553 +vn -0.010065 -0.853472 -0.052316 +v 44.992771 27.189064 13.242427 +vn -0.020964 -1.777714 -0.108969 +v 51.780609 26.868217 17.170813 +vn -0.023424 -1.986311 -0.121756 +v 61.232605 27.449877 5.863266 +vn -0.024629 -2.088577 -0.128024 +v 58.929241 27.283329 9.023430 +vn -0.015332 -1.299903 -0.079681 +v 58.809258 27.282513 9.059827 +vn -0.002403 -0.203750 -0.012489 +v 58.359135 27.139223 11.484049 +vn -0.017737 -1.504510 -0.092223 +v 58.309364 27.285778 9.102742 +vn -0.020704 -1.755669 -0.107618 +v 55.616589 27.411655 7.567233 +vn -0.013032 -1.105068 -0.067738 +v 47.938751 27.189064 12.675670 +vn -0.016842 -1.428414 -0.087563 +v 54.076530 26.062111 29.879890 +vn -0.019847 -1.683300 -0.103188 +v 54.026432 26.058466 29.948986 +vn -0.022126 -1.875963 -0.114987 +v 53.712753 26.029385 30.483768 +vn -0.011837 -1.003841 -0.061534 +v 53.552719 25.999935 30.994987 +vn -0.009645 -0.819150 -0.050224 +v 53.514042 25.981487 31.303373 +vn -0.008031 -0.680241 -0.041689 +v 53.514153 25.976261 31.388626 +vn -0.000297 -0.025187 -0.001544 +v 50.928787 26.201115 28.217762 +vn -0.030817 -2.613801 -0.160223 +v 53.514442 25.962425 31.614302 +vn -0.010487 -0.890110 -0.054562 +v 68.806427 26.062111 27.046103 +vn -0.008447 -0.716294 -0.043907 +v 68.623718 26.048828 27.297941 +vn -0.028122 -2.384750 -0.146178 +v 68.756279 26.058466 27.115208 +vn -0.025570 -2.168273 -0.132912 +v 68.515053 26.037975 27.495895 +vn -0.000413 -0.035027 -0.002147 +v 62.093616 26.073893 28.145342 +vn -0.015174 -1.286690 -0.078872 +v 68.338547 26.012682 27.942495 +vn -0.019490 -1.652682 -0.101301 +v 68.254539 25.986547 28.385019 +vn -0.017682 -1.499308 -0.091888 +v 68.244034 25.976261 28.554842 +vn -0.011160 -0.946362 -0.058009 +v 68.218460 26.326206 22.850769 +vn -0.003683 -0.312362 -0.019147 +v 73.165169 25.937754 28.236309 +vn -0.005528 -0.469582 -0.028789 +v 73.194099 25.909863 28.685766 +vn -0.029769 -2.522883 -0.154637 +v 73.183594 25.899576 28.855589 +vn -0.011519 -0.976585 -0.059861 +v 72.995468 25.856739 29.590630 +vn -0.023542 -1.999032 -0.122559 +v 72.923080 25.848146 29.744713 +vn -0.020702 -1.755967 -0.107642 +v 72.631706 25.824013 30.194506 +vn -0.022984 -1.949830 -0.119533 +v 71.988434 25.798077 30.741371 +vn -0.009966 -0.844503 -0.051754 +v 71.553574 25.790627 30.946589 +vn -0.028912 -2.451771 -0.150288 +v 71.338646 25.788862 31.016699 +vn -0.005873 -0.497848 -0.030512 +v 70.807259 25.790627 31.090166 +vn -0.004049 -0.343960 -0.021100 +v 70.411186 25.796120 31.076721 +vn -0.002555 -0.216406 -0.013258 +v 70.327293 25.798077 31.060946 +vn -0.005916 -0.501893 -0.030749 +v 70.105293 25.803261 31.019094 +vn -0.000182 -0.015469 -0.000948 +v 58.193188 25.848146 32.578499 +vn -0.023257 -1.972210 -0.120895 +v 68.283722 25.943062 29.088823 +vn -0.025257 -2.141572 -0.131262 +v 68.361572 25.923698 29.389732 +vn -0.028254 -2.395958 -0.146868 +v 68.626915 25.886189 29.950634 +vn -0.008475 -0.718662 -0.044053 +v 68.759964 25.873442 30.132986 +vn -0.000078 -0.006574 -0.000403 +v 58.265583 25.856739 32.424416 +vn -0.025136 -2.131563 -0.130654 +v 68.965179 25.856739 30.365990 +vn -0.011761 -0.997351 -0.061133 +v 69.023651 25.852247 30.428022 +vn -0.010350 -0.877345 -0.053798 +v 69.089577 25.848146 30.482216 +vn -0.028100 -2.382853 -0.146063 +v 69.263924 25.837296 30.625723 +vn -0.008816 -0.747499 -0.045824 +v 69.527039 25.824013 30.791792 +vn -0.007396 -0.627085 -0.038446 +v 69.604355 25.820885 30.827938 +vn -0.000829 -0.070324 -0.004311 +v 68.476524 25.904634 29.678623 +vn -0.024873 -2.109061 -0.129282 +v 58.435280 25.937754 31.070093 +vn -0.026879 -2.280107 -0.139755 +v 58.463875 25.923698 31.293884 +vn -0.028986 -2.459254 -0.150731 +v 58.464321 25.904634 31.604805 +vn -0.031284 -2.649664 -0.162452 +v 58.369694 25.873442 32.131901 +vn -0.004930 -0.418033 -0.025624 +v 68.810265 25.868631 30.201771 +vn -0.000158 -0.013368 -0.000819 +v 69.454826 25.827658 30.746227 +vn -0.028047 -2.378055 -0.145787 +v 57.951962 25.827658 32.959187 +vn -0.000128 -0.010892 -0.000668 +v 69.808907 25.812611 30.923559 +vn -0.007392 -0.626800 -0.038423 +v 57.688858 25.812611 33.255257 +vn -0.005916 -0.501659 -0.030750 +v 70.023972 25.805826 30.992867 +vn -0.000102 -0.008670 -0.000531 +v 57.514957 25.805826 33.399391 +vn -0.003564 -0.302393 -0.018534 +v 57.109299 25.794794 33.657429 +vn -0.033254 -2.821314 -0.172922 +v 56.904839 25.791292 33.753883 +vn -0.005256 -0.446077 -0.027339 +v 56.823685 25.790627 33.780373 +vn -0.006949 -0.589280 -0.036122 +v 56.608757 25.788862 33.850483 +vn -0.029633 -2.512786 -0.154028 +v 56.302967 25.788862 33.909313 +vn -0.027806 -2.356854 -0.144481 +v 56.077370 25.790627 33.923950 +vn -0.015065 -1.278764 -0.078375 +v 55.375401 25.803261 33.852879 +vn -0.019070 -1.616768 -0.099106 +v 54.874439 25.820885 33.661728 +vn -0.026290 -2.227515 -0.136547 +v 54.080334 25.868631 33.035564 +vn -0.003939 -0.334056 -0.020477 +v 52.746826 25.600410 37.667839 +vn -0.022469 -1.902663 -0.116640 +v 54.359653 25.848146 33.316006 +vn -0.016567 -1.404957 -0.086120 +v 54.533997 25.837296 33.459515 +vn -0.019623 -1.663382 -0.101965 +v 54.797138 25.824013 33.625580 +vn -0.021125 -1.791529 -0.109815 +v 55.079014 25.812611 33.757343 +vn -0.011240 -0.954213 -0.058481 +v 55.766525 25.794794 33.915756 +vn -0.025522 -2.166686 -0.132789 +v 55.681297 25.796120 33.910507 +vn -0.002848 -0.241930 -0.014830 +v 73.076561 25.962425 27.850878 +vn -0.002871 -0.244280 -0.014975 +v 72.993141 25.976261 27.641191 +vn -0.032526 -2.760149 -0.169193 +v 72.811218 25.999935 27.289974 +vn -0.003950 -0.334462 -0.020495 +v 71.911095 26.062111 26.448816 +vn -0.004008 -0.340248 -0.020861 +v 71.833778 26.065239 26.412672 +vn -0.032744 -2.779749 -0.170426 +v 71.629128 26.073511 26.317068 +vn -0.026841 -2.275572 -0.139481 +v 70.716064 26.094831 26.144928 +vn -0.011823 -1.002846 -0.061474 +v 70.630875 26.095497 26.150444 +vn -0.019339 -1.640743 -0.100577 +v 69.598946 26.091330 26.416964 +vn -0.017357 -1.472600 -0.090269 +v 69.521751 26.090002 26.453463 +vn -0.028947 -2.454696 -0.150466 +v 66.578064 26.868217 14.324030 +vn -0.010161 -0.861606 -0.052814 +v 66.011253 26.886908 14.128163 +vn -0.018488 -1.567746 -0.096099 +v 60.892159 27.567686 4.006828 +vn -0.018493 -1.567796 -0.096100 +v 61.173477 27.469414 5.555912 +vn -0.000234 -0.019838 -0.001216 +v 61.073132 26.073893 28.341667 +vn -0.012455 -1.056135 -0.064739 +v 58.403152 25.948370 30.903088 +vn -0.021683 -1.839116 -0.112727 +v 58.263256 25.976261 30.474977 +vn -0.018877 -1.600987 -0.098133 +v 58.081326 25.999935 30.123760 +vn -0.020343 -1.724421 -0.105718 +v 57.948280 26.012682 29.941408 +vn -0.012198 -1.034603 -0.063413 +v 57.618668 26.037975 29.592178 +vn -0.024532 -2.080675 -0.127528 +v 57.684593 26.033876 29.646372 +vn -0.026849 -2.276824 -0.139564 +v 57.444317 26.048828 29.448671 +vn -0.029031 -2.461269 -0.150896 +v 57.181206 26.062111 29.282602 +vn -0.029177 -2.474631 -0.151664 +v 57.103886 26.065239 29.246456 +vn -0.005646 -0.478811 -0.029350 +v 56.684273 26.080296 29.081528 +vn -0.031040 -2.632193 -0.161349 +v 56.899239 26.073511 29.150852 +vn -0.027015 -2.290219 -0.140377 +v 55.986176 26.094831 28.978714 +vn -0.024765 -2.100579 -0.128764 +v 55.675388 26.097260 28.998867 +vn -0.019131 -1.623166 -0.099499 +v 54.869053 26.091330 29.250750 +vn -0.017564 -1.490217 -0.091350 +v 54.791859 26.090002 29.287249 +vn -0.021121 -1.791586 -0.109821 +v 54.719810 26.088047 29.333023 +vn -0.012285 -1.041716 -0.063855 +v 54.463398 26.080296 29.508787 +vn -0.005645 -0.478687 -0.029342 +v 53.421013 26.326206 25.697552 +vn -0.023257 -1.973264 -0.120959 +v 54.529179 26.082863 29.454258 +vn 0.030376 2.575776 0.157889 +v 67.902382 34.970417 12.655975 +vn 0.005430 0.460484 0.028226 +v 47.462685 35.153580 13.600132 +vn 0.022395 1.899061 0.116406 +v 54.822617 34.805954 17.855391 +vn 0.031583 2.678230 0.164167 +v 58.905815 34.974163 14.325680 +vn 0.018176 1.541225 0.094473 +v 54.142002 34.777916 18.443687 +vn 0.011891 1.008412 0.061812 +v 56.180191 34.357391 24.912003 +vn -0.240042 0.244905 0.046058 +v 64.640221 42.441532 22.165798 +vn -0.245890 0.243008 0.015924 +v 64.498436 42.393948 21.428791 +vn -1.033934 -0.382897 -0.628650 +v 64.108391 38.000809 19.401363 +vn -0.201905 -0.132730 -0.087990 +v 65.105515 36.364048 19.291088 +vn -0.972701 0.833765 0.983884 +v 64.965973 41.759834 23.859028 +vn -1.157105 -0.947035 -0.306968 +v 65.182312 36.068989 19.690277 +vn -1.033934 -0.382909 -0.628650 +v 64.884438 37.973030 18.141928 +vn -1.243446 -0.460500 -0.756037 +v 64.924889 37.518620 18.352179 +vn -1.262474 -0.068470 -0.855082 +v 64.831230 39.445396 17.865381 +vn -1.049713 -0.056808 -0.711032 +v 64.038155 39.445889 19.036266 +vn -1.109476 -1.046562 -0.059621 +v 65.353737 35.642532 20.581331 +vn -0.922517 -0.870205 -0.049574 +v 65.445679 35.517838 21.059244 +vn -1.033341 1.071922 0.336154 +v 65.633987 43.439590 22.038057 +vn -1.041819 0.277212 -0.669775 +v 64.077850 40.550362 19.242599 +vn -1.049790 0.055969 -0.711078 +v 64.837143 39.946739 17.896112 +vn -0.194973 -0.159576 -0.051724 +v 65.265495 35.827209 20.122641 +vn -1.367030 -0.000053 0.262985 +v 64.330994 39.446640 20.558413 +vn -1.480785 0.000011 0.284887 +v 64.055885 40.191998 19.128443 +vn -1.604137 -0.000037 0.308592 +v 64.350174 39.980480 20.658138 +vn -1.366919 -0.000007 0.262984 +v 64.243858 37.134884 20.105499 +vn -1.367072 -0.000004 0.262998 +v 64.108124 40.891331 19.399967 +vn -1.604364 0.000000 0.308652 +v 64.364799 40.145279 20.734161 +vn -0.113769 0.000004 0.021887 +v 64.042656 39.069904 19.059660 +vn -0.113772 0.000003 0.021887 +v 64.078056 38.341614 19.243677 +vn -1.366863 0.000033 0.262946 +v 64.339630 39.086071 20.603313 +vn -1.366924 -0.000036 0.262999 +v 64.350266 38.912914 20.658621 +vn -1.367040 0.000010 0.262980 +v 64.405319 38.454250 20.944765 +vn -0.237180 -0.000001 0.045632 +v 64.488396 38.135056 21.376616 +vn -1.367033 -0.000007 0.263009 +v 64.430038 36.593735 21.073254 +vn -0.113808 -0.000001 0.021897 +v 64.301460 36.913589 20.404915 +vn -0.237200 -0.000001 0.045634 +v 64.520393 38.068111 21.542925 +vn -1.604202 0.000006 0.308632 +v 64.587852 38.000175 21.893555 +vn -1.367034 0.000004 0.262997 +v 64.569603 36.453186 21.798729 +vn -0.113801 0.000000 0.021894 +v 64.640778 36.453377 22.168688 +vn -0.113794 -0.000000 0.021891 +v 64.711395 36.500771 22.535736 +vn -1.366889 0.000004 0.262967 +v 64.721664 38.135670 22.589117 +vn -1.367048 -0.000002 0.263003 +v 64.846489 36.733505 23.237947 +vn -0.237185 0.000002 0.045633 +v 64.804688 38.455292 23.020670 +vn -0.237207 -0.000001 0.045634 +v 64.826614 38.595646 23.134649 +vn -0.113771 0.000002 0.021889 +v 65.063599 37.685196 24.366478 +vn -1.366934 0.000018 0.262990 +v 64.845032 38.749439 23.230366 +vn -1.367013 0.000010 0.263004 +v 64.243446 41.757961 20.103352 +vn -1.366841 -0.000005 0.262948 +v 64.405144 40.439426 20.943855 +vn -1.366923 -0.000006 0.262962 +v 64.300987 41.979553 20.402464 +vn -1.604228 -0.000012 0.308603 +v 64.458015 40.671249 21.218702 +vn -0.237185 -0.000001 0.045629 +v 64.488167 40.759056 21.375410 +vn -0.113743 -0.000000 0.021883 +v 64.429504 42.300076 21.070503 +vn -0.237201 0.000001 0.045636 +v 64.553452 40.871548 21.714767 +vn -1.367048 0.000001 0.262972 +v 64.569054 42.441341 21.795839 +vn -0.237182 -0.000000 0.045630 +v 64.656105 40.871815 22.248354 +vn -1.604160 -0.000009 0.308638 +v 64.689438 40.826614 22.421604 +vn -0.113743 0.000002 0.021879 +v 64.845985 42.162468 23.235317 +vn -0.113813 -0.000001 0.021898 +v 64.908371 41.981129 23.559612 +vn -1.604430 -0.000015 0.308685 +v 64.804512 40.440468 23.019760 +vn -1.367326 0.000028 0.263030 +v 64.844902 40.146526 23.229715 +vn -1.604373 0.000039 0.308636 +v 64.859566 39.981804 23.305906 +vn -1.367104 -0.000034 0.263016 +v 64.876671 39.629799 23.394819 +vn -0.237186 0.000001 0.045629 +v 64.751572 40.672024 22.744589 +vn -0.237182 -0.000000 0.045629 +v 64.779427 40.565052 22.889357 +vn -1.367066 -0.000004 0.262997 +v 65.101707 38.003387 24.564560 +vn -1.480785 0.000011 0.284887 +v 65.153946 38.702721 24.836084 +vn -1.367055 0.000010 0.263006 +v 65.131981 38.344357 24.721928 +vn -1.480846 -0.000005 0.284895 +v 65.167244 39.072823 24.905212 +vn -1.367059 -0.000007 0.262997 +v 65.153801 40.194855 24.835358 +vn -1.199833 -1.063171 -0.197200 +v 64.363846 36.732250 20.729210 +vn -0.212841 -0.198095 0.187647 +v 64.966385 37.136757 23.861176 +vn -0.938755 -0.873716 0.827631 +v 66.068886 36.366562 24.298624 +vn -0.169845 -0.176306 0.078866 +v 65.820778 35.643738 23.008991 +vn -0.718984 0.277989 1.008221 +v 66.289383 40.921688 25.444761 +vn -0.864736 0.334343 1.212607 +v 66.318748 40.444027 25.597404 +vn -0.204935 0.115998 -0.103471 +v 64.975334 41.796913 18.614428 +vn -1.286971 0.728454 -0.649785 +v 64.146233 41.209522 19.598049 +vn -0.962261 0.787047 -0.256007 +v 64.363342 42.161217 20.726580 +vn -0.838283 0.870213 0.388309 +v 65.728134 43.376877 22.527445 +vn -0.228583 0.237290 0.105884 +v 64.779793 42.300983 22.891273 +vn -1.041797 -0.278043 -0.669483 +v 64.056030 38.699863 19.129168 +vn -1.215987 -0.689060 -0.613316 +v 64.975761 37.094627 18.616638 +vn -0.275683 -0.156220 -0.139048 +v 64.146568 37.682812 19.599808 +vn -1.286799 -0.729136 -0.649105 +v 64.191963 37.392635 19.835770 +vn -1.186802 0.190244 -0.790239 +v 64.042587 39.821896 19.059315 +vn -1.174062 -1.107486 -0.063067 +v 64.498993 36.500225 21.431665 +vn -1.040838 -1.062770 0.629358 +v 64.780319 36.594643 22.894024 +vn -0.749778 0.573002 0.848806 +v 66.137520 42.186985 24.655401 +vn -0.198178 0.104394 0.263752 +v 65.101440 40.893909 24.563162 +vn -0.996675 0.654548 -0.434804 +v 64.191582 41.499920 19.833786 +vn -1.198587 0.787176 -0.522839 +v 65.035782 42.184120 18.928610 +vn -0.207462 0.097474 -0.116664 +v 64.924530 41.372654 18.350315 +vn -0.186985 0.176307 -0.010218 +v 65.353035 43.250977 20.577698 +vn -0.938894 0.874326 0.826875 +v 65.991501 42.825726 23.896412 +vn -0.780748 0.727055 0.687597 +v 66.068298 42.530670 24.295601 +vn -1.093465 1.134286 0.355725 +v 64.710838 42.394493 22.532862 +vn -0.904869 -0.071230 1.336052 +v 65.171677 39.448830 24.928261 +vn -0.855109 -0.067308 1.262578 +v 66.336670 38.947979 25.690577 +vn -0.954117 0.729137 1.080219 +v 65.017868 41.502083 24.128757 +vn -0.737113 0.481788 0.913858 +v 65.063263 41.211906 24.364719 +vn -0.718975 -0.277167 1.008553 +v 66.318924 38.454502 25.598343 +vn -0.749546 -0.572341 0.849242 +v 65.018250 37.394798 24.130741 +vn -0.993447 -0.924611 0.876087 +v 64.908844 36.915165 23.562061 +vn -0.158147 -0.147189 0.139464 +v 65.992126 36.071102 23.899647 +vn -0.174102 -0.180613 0.056817 +v 65.634720 35.455376 22.041878 +vn -0.925052 0.487302 1.231139 +v 65.131775 40.553104 24.720850 +vn -0.099279 0.007975 0.146581 +v 65.167175 39.824814 24.904867 +vn -0.855207 0.068698 1.262671 +v 66.336571 39.950649 25.690052 +vn -0.000012 0.124918 -0.000061 +v 65.539093 43.439342 21.544811 +vn -0.016164 0.091035 -0.084022 +v 68.963753 42.184120 18.172934 +vn -0.100682 1.344078 -0.523341 +v 65.264824 43.065830 20.119164 +vn -0.131717 1.266673 -0.684661 +v 65.181694 42.823616 19.687042 +vn -0.268575 0.668058 -1.396038 +v 68.852501 41.372654 17.594639 +vn -0.259828 0.446060 -1.350574 +v 68.782860 40.440216 17.232672 +vn -0.259829 0.446073 -1.350584 +v 64.884171 40.918030 18.140526 +vn 0.284313 0.095875 1.477848 +v 70.264542 39.950649 24.934376 +vn 0.296153 0.099867 1.539389 +v 70.267563 39.699635 24.950079 +vn -0.073950 1.521253 -0.384389 +v 65.444939 43.376144 21.055380 +vn -0.013881 0.101044 -0.072155 +v 65.104935 42.528164 19.288065 +vn -0.174529 1.270415 -0.907195 +v 69.032906 42.528164 18.532389 +vn -0.279855 0.282280 -1.454672 +v 64.854889 40.440216 17.988346 +vn -0.250636 0.841038 -1.302796 +v 68.903305 41.796913 17.858751 +vn 0.005858 0.121036 0.030451 +v 69.748047 43.252190 22.249683 +vn 0.073650 1.521649 0.382829 +v 65.820076 43.252190 23.005358 +vn 0.109113 1.460770 0.567164 +v 65.908325 43.067505 23.464048 +vn 0.268447 0.669521 1.395373 +v 70.217354 40.921688 24.689085 +vn 0.268291 0.271566 1.394563 +v 70.246719 40.444027 24.841728 +vn 0.210372 0.922228 1.093503 +v 66.198051 41.800091 24.970051 +vn 0.210372 0.922228 1.093503 +v 70.065491 42.186985 23.899725 +vn 0.019921 0.066977 0.103547 +v 66.248932 41.376099 25.234510 +vn 0.250493 0.842198 1.302052 +v 70.176903 41.376099 24.478834 +vn -0.061700 -0.000009 0.011869 +v 65.539833 35.455128 21.548632 +vn -1.807768 -0.000022 0.347789 +v 65.733398 35.391171 22.554787 +vn -1.119541 -0.000014 0.215384 +v 65.737389 35.300861 22.575521 +vn -1.607659 -0.000000 0.309280 +v 65.728882 35.518578 22.531309 +vn -2.472898 -0.000020 0.475782 +v 65.908989 35.828888 23.467525 +vn -0.336447 0.000001 0.064728 +v 66.514908 37.884193 26.617046 +vn -1.310556 -0.000007 0.252128 +v 66.289650 37.976688 25.446163 +vn -2.344884 0.000007 0.451113 +v 66.249290 37.522064 25.236374 +vn -1.815957 -0.000005 0.349347 +v 66.138039 36.710598 24.658079 +vn -1.124194 -0.000003 0.216268 +v 66.198479 37.097805 24.972261 +vn -1.419345 -0.000005 0.272863 +v 66.339592 39.699635 25.705755 +vn -0.579396 0.000001 0.111467 +v 66.342583 39.449322 25.721308 +vn -1.396767 0.000004 0.268713 +v 64.837250 38.944069 17.896637 +vn -1.940714 0.000001 0.373359 +v 64.855072 38.450691 17.989285 +vn -1.240964 0.000003 0.238738 +v 65.036293 36.707745 18.931288 +vn -0.006865 -0.000001 0.001321 +v 64.597069 35.766628 16.648207 +vn -1.442960 0.000015 0.277539 +v 64.835304 40.196674 17.886539 +vn 0.000078 0.006620 0.000405 +v 70.272575 39.697979 24.976152 +vn 0.000167 0.014137 0.000867 +v 68.773964 40.193138 17.186436 +vn 0.018507 1.567696 0.096197 +v 64.845993 40.193138 17.942112 +vn 0.031874 -0.000000 -0.006132 +v 69.192795 43.065830 19.363487 +vn 0.699548 -0.000003 -0.134600 +v 69.274765 40.145279 19.789566 +vn 2.169153 0.000004 -0.417298 +v 69.315109 40.439426 19.999262 +vn 1.411364 -0.000011 -0.271548 +v 69.367981 40.671249 20.274107 +vn 1.411132 0.000003 -0.271478 +v 69.398132 40.759056 20.430815 +vn 1.411272 0.000001 -0.271493 +v 69.467064 43.439342 20.789135 +vn 0.069563 0.000000 -0.013382 +v 69.372910 43.376144 20.299704 +vn 1.411287 0.000001 -0.271493 +v 69.430099 40.826176 20.596979 +vn 0.192945 0.000000 -0.037120 +v 69.497551 40.894455 20.947596 +vn 1.411273 -0.000000 -0.271514 +v 69.566071 40.871815 21.303759 +vn 1.604202 -0.000000 -0.308631 +v 69.531944 40.894543 21.126377 +vn 1.411260 -0.000000 -0.271493 +v 69.561958 43.439590 21.282381 +vn 0.069568 0.000000 -0.013385 +v 69.656105 43.376877 21.771769 +vn 1.604175 -0.000010 -0.308572 +v 69.599403 40.826614 21.477009 +vn 1.480835 0.000004 -0.284903 +v 69.836296 43.067505 22.708372 +vn 1.480817 -0.000005 -0.284874 +v 69.919472 42.825726 23.140736 +vn 1.411356 0.000018 -0.271548 +v 69.689392 40.565052 21.944761 +vn 1.480851 0.000003 -0.284889 +v 69.996269 42.530670 23.539925 +vn 1.411229 -0.000009 -0.271480 +v 69.714478 40.440468 22.075167 +vn 0.192943 0.000001 -0.037120 +v 69.754868 40.146526 22.285120 +vn 1.411166 0.000007 -0.271489 +v 70.126022 41.800091 24.214375 +vn 1.603862 0.000021 -0.308573 +v 69.736404 40.300220 22.189165 +vn 2.056629 -0.000053 -0.395574 +v 68.763275 40.196674 17.130863 +vn 1.550401 -0.000020 -0.298281 +v 68.812134 40.918030 17.384850 +vn 0.182898 0.000002 -0.035185 +v 69.249519 39.807266 19.658356 +vn 2.079435 0.000052 -0.400030 +v 69.243126 39.264919 19.625113 +vn 1.800282 -0.000001 -0.346331 +v 69.109665 42.823616 18.931366 +vn 1.411263 0.000005 -0.271495 +v 69.281006 43.250977 19.822021 +vn 1.315725 -0.000004 -0.253125 +v 69.240952 39.446640 19.613817 +vn 1.643000 -0.000015 -0.316075 +v 69.315285 38.454250 20.000172 +vn 1.798107 -0.000030 -0.345903 +v 69.340370 38.329666 20.130575 +vn 0.478248 0.000001 -0.092006 +v 68.904175 32.857552 17.863255 +vn 2.214688 0.000006 -0.426067 +v 68.646049 33.219078 16.521528 +vn 1.372454 0.000001 -0.264038 +v 68.513268 34.768574 15.831351 +vn 1.470818 0.000006 -0.282973 +v 69.368217 38.222706 20.275343 +vn 1.365151 -0.000000 -0.262626 +v 69.166855 32.604336 19.228642 +vn 0.031707 0.000000 -0.006100 +v 69.699440 32.428364 21.996990 +vn 1.666694 -0.000005 -0.320698 +v 69.566338 38.023182 21.305166 +vn 0.029078 -0.000001 -0.005594 +v 70.442879 37.884193 25.861370 +vn 1.172460 0.000030 -0.225555 +v 69.736580 38.595646 22.190054 +vn 1.411137 -0.000013 -0.271473 +v 69.769524 39.981804 22.361311 +vn 0.560684 -0.000001 -0.107867 +v 69.769615 38.914249 22.361794 +vn 1.604143 -0.000029 -0.308604 +v 69.780167 39.808659 22.416618 +vn 1.507376 0.000014 -0.289997 +v 69.786629 39.629799 22.450226 +vn 1.883473 -0.000003 -0.362341 +v 70.230637 32.695507 24.758162 +vn 0.435999 -0.000002 -0.083879 +v 67.914772 34.928131 12.720387 +vn 1.355222 0.000001 -0.260726 +v 68.394073 33.686779 15.211790 +vn 0.154272 -0.050974 0.801897 +v 66.470818 34.145573 26.387878 +vn -0.201542 0.066592 -1.047607 +v 64.642441 35.766621 16.639477 +vn -0.003114 0.001029 -0.016187 +v 64.630005 38.559273 16.819387 +vn -0.355900 -0.000000 0.068469 +v 44.275478 27.861065 12.912979 +vn -0.948115 -0.000000 0.182402 +v 46.509041 38.329666 24.522942 +vn -0.995295 0.000003 0.191478 +v 46.462021 38.594498 24.278538 +vn -0.096957 0.000000 0.018653 +v 46.418194 39.807266 24.050722 +vn -2.056629 0.000058 0.395574 +v 45.931946 40.196674 21.523230 +vn -1.326855 0.000005 0.255264 +v 46.428902 38.912914 24.106392 +vn -1.480857 0.000003 0.284894 +v 45.951530 40.440216 21.625038 +vn -0.070227 0.000001 0.013511 +v 45.942635 40.193138 21.578802 +vn -1.159074 -0.000011 0.222987 +v 46.443562 38.748192 24.182585 +vn -2.370804 -0.000036 0.456102 +v 46.483952 38.454250 24.392538 +vn -1.869627 0.000009 0.359675 +v 46.567032 38.135056 24.824387 +vn -0.022223 0.000000 0.004275 +v 47.555691 33.147514 29.963390 +vn -1.835191 0.000002 0.353063 +v 46.800297 38.135670 26.036888 +vn -1.129193 -0.000008 0.217241 +v 46.948906 39.087452 26.809347 +vn -1.124316 -0.000000 0.216300 +v 47.088142 42.825726 27.533102 +vn -1.697445 -0.000001 0.326560 +v 46.938290 38.914249 26.754160 +vn -1.161439 0.000002 0.223438 +v 47.234161 42.186985 28.292091 +vn -1.726940 -0.000007 0.332242 +v 47.345573 41.376099 28.871201 +vn -1.008421 0.000021 0.194007 +v 46.883320 38.455292 26.468443 +vn -0.034959 -0.000000 0.006725 +v 47.611549 37.884193 30.253736 +vn -1.616403 0.000001 0.310968 +v 47.415386 40.444027 29.234095 +vn -0.096281 -0.000000 0.018523 +v 46.957474 39.448078 26.853886 +vn -2.056656 -0.000145 0.395374 +v 47.441246 39.697979 29.368519 +vn -0.069571 -0.000000 0.013384 +v 46.132423 42.184120 22.565300 +vn -1.411132 0.000001 0.271477 +v 46.566799 40.759056 24.823181 +vn -0.192942 -0.000000 0.037118 +v 46.598766 40.826176 24.989346 +vn -1.604169 0.000003 0.308633 +v 46.632088 40.871548 25.162539 +vn -1.480767 -0.000001 0.284874 +v 46.541576 43.376144 24.692070 +vn -1.604168 -0.000001 0.308621 +v 46.666222 40.894455 25.339962 +vn -1.604202 0.000000 0.308631 +v 46.700615 40.894543 25.518744 +vn -1.604181 0.000003 0.308605 +v 46.734741 40.871815 25.696125 +vn -1.221959 -0.000001 0.235085 +v 46.858059 40.565052 26.337128 +vn -0.864367 -0.000004 0.166308 +v 46.905079 40.300220 26.581532 +vn -0.699973 0.000000 0.134658 +v 46.923538 40.146526 26.677486 +vn -2.810084 -0.000004 0.540627 +v 46.948837 39.808659 26.808985 +vn -1.480841 0.000003 0.284882 +v 47.004963 43.067505 27.100739 +vn -0.121631 0.040188 -0.632232 +v 45.655373 32.515556 20.085615 +vn -0.296177 0.097861 -1.539514 +v 48.601349 32.515556 19.518858 +vn -0.000015 0.165892 -0.000080 +v 46.635735 43.439342 25.181501 +vn -0.000146 1.570793 -0.000761 +v 49.581715 43.439342 24.614744 +vn 0.127752 1.231445 0.664051 +v 50.034122 42.825726 26.966345 +vn -0.097828 1.305982 -0.508507 +v 46.361465 43.065830 23.755854 +vn -0.109381 1.460201 -0.568555 +v 46.449680 43.250977 24.214388 +vn -0.268578 0.668061 -1.396053 +v 48.967144 41.372654 21.420248 +vn -0.282279 0.484603 -1.467275 +v 48.926785 40.918030 21.210459 +vn -0.252466 0.433423 -1.312306 +v 45.980808 40.918030 21.777216 +vn -0.024160 0.105668 -0.125580 +v 49.017956 41.796913 21.684361 +vn 0.007780 0.160734 0.040439 +v 46.824780 43.376877 26.164135 +vn 0.296153 0.099867 1.539389 +v 47.433212 39.950649 29.326742 +vn 0.015770 0.005319 0.081972 +v 47.436234 39.699635 29.342445 +vn -0.066140 1.360582 -0.343791 +v 49.487556 43.376144 24.125313 +vn -0.018435 0.134186 -0.095822 +v 46.201576 42.528164 22.924755 +vn -0.174529 1.270408 -0.907192 +v 46.278332 42.823616 23.323732 +vn -0.291507 0.294044 -1.515240 +v 48.897511 40.440216 21.058281 +vn -0.015523 0.015658 -0.080688 +v 48.888615 40.193138 21.012045 +vn -0.224163 0.752207 -1.165188 +v 46.071980 41.796913 22.251118 +vn -0.250634 0.841033 -1.302782 +v 46.021168 41.372654 21.987005 +vn 0.033138 1.393909 0.172250 +v 46.730629 43.439590 25.674747 +vn 0.021444 0.121010 0.111465 +v 47.164940 42.530670 27.932291 +vn 0.011523 0.154269 0.059898 +v 46.916721 43.252190 26.642050 +vn 0.097589 1.306489 0.507265 +v 49.950943 43.067505 26.533981 +vn 0.030784 0.031160 0.160014 +v 50.361366 40.444027 28.667337 +vn 0.291473 0.295030 1.515061 +v 50.379189 39.950649 28.759985 +vn 0.024140 0.105825 0.125479 +v 50.180138 42.186985 27.725334 +vn 0.228549 1.001916 1.187989 +v 50.240673 41.800091 28.039984 +vn 0.250493 0.842198 1.302052 +v 47.294693 41.800091 28.606741 +vn 0.240094 0.598807 1.247999 +v 50.291550 41.376099 28.304443 +vn 0.028353 0.070713 0.147376 +v 47.386021 40.921688 29.081451 +vn 0.268448 0.669522 1.395380 +v 50.331997 40.921688 28.514694 +vn 1.193593 0.913475 -0.230082 +v 49.676605 43.439590 25.107990 +vn 0.967470 -0.740316 -0.185756 +v 49.677341 35.455376 25.111813 +vn 1.193761 -0.913476 -0.229205 +v 49.582447 35.455128 24.618565 +vn 1.236481 0.884881 -0.007012 +v 49.862698 43.252190 26.075293 +vn 1.018906 -0.688174 0.081834 +v 50.607594 36.733505 25.977272 +vn 1.340400 -0.905312 0.107655 +v 50.541428 36.594643 25.633348 +vn 1.130228 -0.849498 -0.559453 +v 49.396355 35.642532 23.651264 +vn 1.034673 0.648898 0.163795 +v 50.669476 41.981129 26.298937 +vn 0.237168 0.000001 -0.045627 +v 50.094238 39.628387 23.308878 +vn 1.367033 -0.000009 -0.262994 +v 49.799259 39.445889 21.775591 +vn 1.480767 -0.000008 -0.284879 +v 49.838955 40.550362 21.981924 +vn 1.367073 -0.000007 -0.263006 +v 49.869232 40.891331 22.139292 +vn 0.237207 -0.000001 -0.045635 +v 50.144321 40.299072 23.569202 +vn 0.237185 -0.000001 -0.045631 +v 50.166248 40.439426 23.683182 +vn 1.480960 0.000000 -0.284913 +v 50.004551 41.757961 22.842676 +vn 1.480774 0.000002 -0.284876 +v 49.817135 38.699863 21.868494 +vn 0.237184 -0.000001 -0.045630 +v 50.219124 40.671249 23.958029 +vn 1.367116 0.000008 -0.263008 +v 50.100666 39.807266 23.342276 +vn 1.366891 -0.000000 -0.262966 +v 50.111282 39.980480 23.397465 +vn 0.237184 0.000000 -0.045628 +v 50.249271 40.759056 24.114737 +vn 0.113779 0.000001 -0.021887 +v 50.062096 41.979553 23.141790 +vn 1.367030 0.000012 -0.262971 +v 50.191307 40.564144 23.813421 +vn 0.237180 -0.000001 -0.045631 +v 50.281239 40.826176 24.280899 +vn 0.113743 -0.000000 -0.021882 +v 50.190613 42.300076 23.809828 +vn 1.604166 -0.000005 -0.308631 +v 50.314560 40.871548 24.454092 +vn 1.367038 -0.000000 -0.262984 +v 50.401329 42.441532 24.905123 +vn 1.604160 -0.000001 -0.308600 +v 50.417213 40.871815 24.987679 +vn 1.367056 0.000001 -0.263008 +v 50.471947 42.394493 25.272188 +vn 1.604156 0.000005 -0.308635 +v 50.450542 40.826614 25.160929 +vn 1.367062 0.000004 -0.263019 +v 50.482540 40.759663 25.327238 +vn 1.604210 0.000009 -0.308637 +v 50.540531 40.565052 25.628683 +vn 1.480689 0.000001 -0.284862 +v 50.862545 40.893909 27.302488 +vn 1.367124 0.000001 -0.263014 +v 50.824368 41.211906 27.104046 +vn 1.480797 -0.000007 -0.284875 +v 49.839165 38.341614 21.983002 +vn 0.237179 -0.000001 -0.045628 +v 50.111374 38.912914 23.397947 +vn 1.480689 0.000001 -0.284862 +v 49.869499 38.000809 22.140690 +vn 1.366923 -0.000001 -0.262972 +v 50.004963 37.134884 22.844826 +vn 1.604210 0.000009 -0.308637 +v 50.191513 38.329666 23.814495 +vn 1.367030 0.000007 -0.263006 +v 50.166424 38.454250 23.684092 +vn 1.366883 -0.000006 -0.262953 +v 50.219364 38.222706 23.959265 +vn 0.237200 0.000000 -0.045635 +v 50.281502 38.068111 24.282249 +vn 1.367042 -0.000003 -0.262985 +v 50.260098 36.500225 24.170990 +vn 1.367060 -0.000003 -0.262993 +v 50.383350 38.000263 24.811661 +vn 0.113804 -0.000000 -0.021894 +v 50.401886 36.453377 24.908012 +vn 1.367034 -0.000001 -0.262997 +v 50.330711 36.453186 24.538054 +vn 0.113793 0.000000 -0.021891 +v 50.472500 36.500771 25.275061 +vn 1.604388 -0.000001 -0.308660 +v 50.450802 38.068542 25.162279 +vn 1.604008 0.000002 -0.308581 +v 50.482769 38.135670 25.328442 +vn 0.113777 -0.000000 -0.021889 +v 50.669949 36.915165 26.301388 +vn 1.604426 0.000008 -0.308656 +v 50.540737 38.330574 25.629755 +vn 0.113766 0.000002 -0.021887 +v 50.892879 40.553104 27.460176 +vn 1.367112 0.000003 -0.263009 +v 50.637775 39.629799 26.134146 +vn 1.480816 0.000001 -0.284888 +v 50.779354 37.394798 26.870068 +vn 1.367053 -0.000005 -0.262995 +v 50.914909 40.194855 27.574684 +vn 0.237207 0.000001 -0.045633 +v 50.587723 38.595646 25.873976 +vn 1.480798 -0.000004 -0.284882 +v 50.862812 38.003387 27.303885 +vn 0.237179 0.000001 -0.045629 +v 50.620762 38.914249 26.045713 +vn 0.237178 -0.000002 -0.045630 +v 50.631378 39.087452 26.100901 +vn 1.367039 0.000004 -0.262997 +v 50.932781 39.448830 27.667585 +vn 1.049552 -0.598620 0.241558 +v 50.727493 37.136757 26.600500 +vn 0.248711 -0.126181 0.072938 +v 50.111500 36.366562 27.368559 +vn 0.257430 -0.053445 0.118242 +v 50.361546 38.454502 28.668276 +vn 1.100387 -0.228449 0.505428 +v 50.893085 38.344357 27.461254 +vn 1.447540 -0.300521 0.664881 +v 50.915051 38.702721 27.575411 +vn 1.130823 0.620525 -0.981972 +v 49.907337 41.209522 22.337376 +vn 0.827821 -0.046905 -0.911662 +v 48.879868 38.944069 20.966570 +vn 1.130876 -0.621100 -0.981364 +v 49.953072 37.392635 22.575094 +vn 0.859689 -0.472159 -0.746031 +v 49.907677 37.682812 22.339132 +vn 0.859755 -0.472219 -0.746018 +v 49.078915 36.707745 22.001223 +vn 0.279278 -0.189018 -0.193441 +v 50.062565 36.913589 23.144239 +vn 0.915973 -0.688458 -0.453402 +v 50.191143 36.593735 23.812578 +vn 1.204921 -0.905635 -0.596430 +v 50.124954 36.732250 23.468536 +vn 0.234434 0.167771 -0.001331 +v 49.770756 43.376877 25.597380 +vn 1.340213 0.905638 0.106797 +v 50.607086 42.162468 25.974642 +vn 1.018813 0.688454 0.081186 +v 50.540901 42.300983 25.630598 +vn 0.335414 0.170355 0.098199 +v 50.778973 41.502083 26.868084 +vn 0.242085 -0.151730 0.038468 +v 50.034744 36.071102 26.969580 +vn 1.276834 -0.800243 0.202911 +v 49.951611 35.828888 26.537458 +vn 1.326705 -0.581826 0.461818 +v 50.180653 36.710598 27.728012 +vn 1.104699 -0.138328 0.528081 +v 50.928349 39.072823 27.644539 +vn 1.060655 0.581825 -0.921106 +v 49.078400 42.184120 21.998545 +vn 0.834335 -0.229086 -0.877380 +v 48.927055 37.973030 21.211861 +vn 1.048020 -0.489734 -0.986794 +v 49.018383 37.094627 21.686571 +vn 0.218194 -0.167772 -0.085750 +v 49.488297 35.517838 24.129177 +vn 0.245526 0.140168 0.056359 +v 50.110920 42.530670 27.365534 +vn 1.380582 0.788157 0.316902 +v 50.727081 41.759834 26.598352 +vn 1.453249 0.182967 0.694522 +v 50.928280 39.824814 27.644192 +vn 1.366005 0.057675 0.665658 +v 50.385201 39.449322 28.791241 +vn 1.414449 -0.620522 0.492307 +v 50.824703 37.685196 27.105803 +vn 0.251528 -0.110346 0.087546 +v 50.241096 37.097805 28.042196 +vn 0.261160 0.014551 -0.287627 +v 49.803696 39.821896 21.798639 +vn 0.827781 0.046121 -0.911675 +v 48.873852 39.445396 20.935314 +vn 1.130091 0.849200 -0.560303 +v 49.307442 43.065830 23.189098 +vn 0.871619 0.539396 -0.684024 +v 49.952690 41.499920 22.573111 +vn 1.091827 -0.182967 -1.184152 +v 49.803761 39.069904 21.798986 +vn 0.932559 0.716968 -0.367281 +v 49.395657 43.250977 23.647631 +vn 0.871671 0.539440 -0.684010 +v 49.147552 42.528164 22.357998 +vn 0.207006 0.140019 -0.143555 +v 49.224308 42.823616 22.756975 +vn 0.899954 0.648592 -0.536667 +v 50.124451 42.161217 23.465906 +vn 0.134906 0.022526 -0.146331 +v 49.816994 40.191998 21.867767 +vn 1.249441 0.966123 -0.365118 +v 50.330158 42.441341 24.535164 +vn 0.932540 0.716962 -0.367258 +v 50.259544 42.393948 24.168116 +vn 0.097787 1.172413 0.508291 +v 68.149811 34.257607 13.942123 +vn 0.160790 1.320212 0.835777 +v 72.566849 34.970417 11.758610 +vn 0.114868 1.128181 0.597081 +v 72.814278 34.257607 13.044758 +vn 0.018080 0.272918 0.093979 +v 73.310516 33.219078 15.624163 +vn -0.013421 1.279633 -0.069760 +v 74.630486 32.506702 22.485336 +vn 0.001260 0.289136 0.006549 +v 69.432487 32.460957 20.609421 +vn 0.006843 1.570378 0.035570 +v 74.096954 32.460957 19.712055 +vn -0.032344 1.270108 -0.168121 +v 69.966026 32.506702 23.382702 +vn -0.003918 0.069224 -0.020363 +v 70.491646 32.993713 26.114845 +vn 0.000140 -1.534393 0.000726 +v 64.621979 40.894543 22.070972 +vn 0.000143 -1.570803 0.000743 +v 64.587585 40.894455 21.892191 +vn 0.000139 -1.522280 0.000720 +v 50.348694 40.894455 24.631517 +vn 0.000143 -1.570801 0.000743 +v 50.383087 40.894543 24.810297 +vn -0.006863 -0.002299 -0.035674 +v 69.788803 39.448078 22.461519 +vn -0.287015 -0.096145 -1.491893 +v 46.955303 39.629799 26.842592 +vn 0.004710 -0.026511 0.024481 +v 69.340164 40.564144 20.129501 +vn 0.203288 -1.144322 1.056683 +v 64.430199 40.564144 21.074097 +vn 0.197010 -1.108972 1.024049 +v 46.483776 40.439426 24.391628 +vn 0.203036 1.145568 1.055373 +v 64.430405 38.329666 21.075171 +vn 0.006221 0.015511 0.032336 +v 64.364929 38.748192 20.734812 +vn 0.268464 0.669362 1.395464 +v 69.274887 38.748192 19.790218 +vn 0.268461 0.669345 1.395447 +v 50.126034 38.748192 23.474138 +vn -0.004040 -0.029471 -0.021000 +v 69.661537 40.672024 21.799994 +vn 0.275731 -0.473534 1.433239 +v 64.339561 39.807266 20.602951 +vn 0.291530 -0.293395 1.515358 +v 69.243095 39.628387 19.624958 +vn 0.282524 -0.284338 1.468544 +v 46.411766 39.628387 24.017324 +vn 0.242911 -0.814913 1.262639 +v 46.443436 40.145279 24.181932 +vn 0.003310 0.031897 0.017207 +v 64.458260 38.222706 21.219938 +vn 0.003310 0.031895 0.017206 +v 69.398361 38.135056 20.432020 +vn 0.004412 0.042514 0.022935 +v 50.249504 38.135056 24.115940 +vn 0.138472 1.334226 0.719771 +v 46.536892 38.222706 24.667709 +vn 0.071956 1.486390 0.374023 +v 69.463684 38.022903 20.771578 +vn 0.073661 1.521608 0.382885 +v 69.430359 38.068111 20.598330 +vn 0.071386 1.474630 0.371062 +v 50.314831 38.022903 24.455498 +vn 0.223302 0.978416 1.160718 +v 69.293350 38.594498 19.886171 +vn 0.221537 0.970674 1.151541 +v 50.144493 38.594498 23.570091 +vn 0.275658 0.474579 1.432858 +v 69.249596 39.086071 19.658720 +vn 0.282206 0.485853 1.466896 +v 69.260231 38.912914 19.714025 +vn 0.273483 0.470857 1.421554 +v 50.100735 39.086071 23.342640 +vn -0.284706 -0.288352 -1.479891 +v 64.870201 39.808659 23.361214 +vn 0.073934 -1.521276 0.384307 +v 64.520134 40.826176 21.541573 +vn 0.036460 -1.522205 0.189518 +v 69.463417 40.871548 20.770172 +vn 0.174554 -1.270334 0.907322 +v 46.508835 40.564144 24.521868 +vn 0.143057 -1.376224 0.743606 +v 46.536652 40.671249 24.666473 +vn 0.296170 -0.097849 1.539477 +v 64.333130 39.628387 20.569553 +vn 0.287027 -0.094840 1.491955 +v 46.409622 39.446640 24.006184 +vn 0.296173 -0.097856 1.539497 +v 50.092098 39.446640 23.297737 +vn 0.268594 -0.667873 1.396141 +v 69.260139 39.980480 19.713545 +vn 0.260297 -0.647257 1.353012 +v 50.125908 40.145279 23.473488 +vn 0.008296 -0.020629 0.043122 +v 46.428810 39.980480 24.105911 +vn 0.005300 -0.023202 0.027551 +v 64.383217 40.299072 20.829878 +vn 0.228685 -1.001046 1.188695 +v 69.293182 40.299072 19.885283 +vn 0.221621 -0.970125 1.151977 +v 46.461849 40.299072 24.277649 +vn 0.109087 1.460807 0.567030 +v 46.599026 38.068111 24.990696 +vn 0.036188 1.522392 0.188103 +v 64.553726 38.022903 21.716173 +vn 0.001144 0.048134 0.005947 +v 50.348957 38.000175 24.632881 +vn 0.035902 1.510371 0.186617 +v 46.632359 38.022903 25.163944 +vn 0.005804 0.019533 0.030171 +v 64.383385 38.594498 20.830767 +vn 0.291460 0.295228 1.514999 +v 64.333160 39.264919 20.569706 +vn 0.282462 0.286107 1.468226 +v 46.418262 39.086071 24.051086 +vn 0.291465 0.295226 1.515020 +v 46.411797 39.264919 24.017479 +vn 0.282462 0.286107 1.468226 +v 50.094269 39.264919 23.309032 +vn -0.006271 -0.035384 -0.032598 +v 46.883144 40.440468 26.467533 +vn -0.203037 -1.145565 -1.055380 +v 50.565620 40.440468 25.759087 +vn -0.223386 0.977835 -1.161151 +v 69.714653 38.455292 22.076077 +vn -0.007065 0.030928 -0.036725 +v 46.905251 38.595646 26.582420 +vn -0.007065 0.030927 -0.036725 +v 50.565792 38.455292 25.759996 +vn -0.008292 -0.020673 -0.043100 +v 50.620667 39.981804 26.045231 +vn -0.268462 -0.669340 -1.395451 +v 46.938194 39.981804 26.753677 +vn -0.000143 1.570789 -0.000743 +v 69.497810 38.000175 20.948959 +vn -0.000004 0.048511 -0.000023 +v 46.666485 38.000175 25.341326 +vn -0.250426 -0.842761 -1.301702 +v 50.587551 40.300220 25.873085 +vn -0.007737 -0.026037 -0.040216 +v 50.606010 40.146526 25.969040 +vn -0.203291 1.144324 -1.056699 +v 64.779633 38.330574 22.890430 +vn -0.109429 1.460099 -0.568806 +v 69.599663 38.068542 21.478359 +vn -0.002535 0.033825 -0.013177 +v 69.631630 38.135670 21.644522 +vn -0.106050 1.415010 -0.551241 +v 46.768330 38.068542 25.870726 +vn -0.273480 -0.470889 -1.421537 +v 50.631310 39.808659 26.100538 +vn -0.002528 -0.033855 -0.013143 +v 64.721436 40.759663 22.587912 +vn -0.109101 -1.460815 -0.567100 +v 69.631393 40.759663 21.643318 +vn -0.109099 -1.460797 -0.567090 +v 46.768070 40.826614 25.869375 +vn -0.004412 -0.042513 -0.022932 +v 46.830208 40.672024 26.192360 +vn -0.142871 -1.376775 -0.742637 +v 50.512680 40.672024 25.483913 +vn -0.142868 -1.376759 -0.742624 +v 46.800064 40.759663 26.035685 +vn -0.228600 -1.001624 -1.188250 +v 64.826447 40.300220 23.133760 +vn -0.289313 0.095596 -1.503838 +v 69.786659 39.266331 22.450378 +vn -0.289313 0.095596 -1.503838 +v 64.878838 39.448078 23.406115 +vn -0.287029 0.094825 -1.491964 +v 50.637802 39.266331 26.134300 +vn -0.296176 0.097847 -1.539510 +v 50.639946 39.448078 26.145439 +vn -0.006756 0.006799 -0.035117 +v 64.876694 39.266331 23.394974 +vn -0.282525 0.284333 -1.468553 +v 46.955330 39.266331 26.842745 +vn -0.004045 0.029437 -0.021025 +v 64.751808 38.223469 22.745825 +vn -0.174554 1.270346 -0.907322 +v 69.661774 38.223469 21.801229 +vn -0.004045 0.029437 -0.021025 +v 69.689598 38.330574 21.945835 +vn -0.005391 0.039237 -0.028025 +v 46.830444 38.223469 26.193596 +vn -0.174552 1.270327 -0.907313 +v 46.858265 38.330574 26.338202 +vn -0.004420 0.042521 -0.022973 +v 50.512917 38.223469 25.485149 +vn -0.072204 1.486041 -0.375312 +v 64.656380 38.023182 22.249760 +vn -0.073916 1.521276 -0.384210 +v 64.689697 38.068542 22.422955 +vn -0.071634 1.474302 -0.372351 +v 46.735012 38.023182 25.697533 +vn -0.000866 0.036120 -0.004499 +v 64.622246 38.000263 22.072336 +vn -0.037343 1.558311 -0.194109 +v 69.532204 38.000263 21.127741 +vn -0.001154 0.048142 -0.005997 +v 46.700878 38.000263 25.520107 +vn -0.001154 0.048142 -0.005997 +v 50.417484 38.023182 24.989086 +vn -0.262372 0.652371 -1.363796 +v 69.754990 38.749439 22.285770 +vn -0.006225 0.015477 -0.032355 +v 64.859657 38.914249 23.306389 +vn -0.260300 0.647219 -1.353026 +v 50.606136 38.749439 25.969690 +vn -0.268596 0.667848 -1.396151 +v 46.923664 38.749439 26.678137 +vn -0.006541 0.011235 -0.034002 +v 64.870270 39.087452 23.361576 +vn -0.282263 0.484796 -1.467191 +v 69.780235 39.087452 22.416981 +vn 0.000002 -0.020690 0.000010 +v 61.316620 34.574280 6.299973 +vn 0.000131 -1.361355 0.000683 +v 61.312920 34.574375 6.490880 +vn 0.000170 -1.759523 0.000882 +v 55.456875 34.574280 7.427290 +vn 0.292272 -0.096571 1.519215 +v 61.036880 32.926773 4.759091 +vn 0.296176 -0.097861 1.539509 +v 61.039318 33.133568 4.771767 +vn 0.292268 -0.096573 1.519197 +v 70.859245 33.133568 2.882577 +vn 0.296176 -0.097861 1.539509 +v 55.144924 32.926773 5.892605 +vn -0.263798 1.475888 -1.371210 +v 60.995525 31.783306 7.656045 +vn -0.143822 0.804652 -0.747582 +v 60.987606 31.798721 7.674161 +vn -0.200761 1.129789 -1.043548 +v 71.395844 31.798721 5.671790 +vn 0.002978 -0.016771 0.015481 +v 55.257820 34.198410 6.479429 +vn 0.278486 0.479351 1.447561 +v 70.866638 32.516430 2.921004 +vn 0.109377 -1.460204 0.568539 +v 71.072044 34.496571 3.988700 +vn 0.107774 -1.438808 0.560206 +v 46.522228 34.496571 8.711675 +vn 0.109377 -1.460206 0.568537 +v 46.485836 34.420193 8.522511 +vn 0.003541 -0.008804 0.018409 +v 70.895279 33.721729 3.069858 +vn 0.264668 -0.657970 1.375734 +v 46.328823 33.534252 7.706368 +vn 0.264672 -0.657974 1.375752 +v 55.183392 33.721729 6.092562 +vn 0.268603 -0.667747 1.396186 +v 55.166759 33.534252 6.006098 +vn 0.003018 -0.013198 0.015688 +v 70.941185 34.056538 3.308511 +vn 0.003018 -0.013198 0.015688 +v 61.096321 33.896751 5.068068 +vn 0.268412 0.669899 1.395193 +v 61.058811 32.319458 4.873092 +vn 0.264874 0.661067 1.376803 +v 70.878738 32.319458 2.983902 +vn 0.268416 0.669899 1.395212 +v 46.328922 32.319458 7.706877 +vn 0.287609 0.291711 1.494978 +v 70.859268 32.719955 2.882709 +vn 0.003844 0.003899 0.019983 +v 61.046711 32.516430 4.810194 +vn -0.003656 -0.009125 -0.019004 +v 46.908474 33.535702 10.719367 +vn -0.210914 -0.526392 -1.096319 +v 56.492821 33.535702 8.875499 +vn -0.003656 -0.009125 -0.019004 +v 56.404926 33.723171 8.802396 +vn -0.225874 0.988361 -1.174083 +v 71.420784 31.958406 5.801417 +vn -0.169939 0.743599 -0.883336 +v 60.925636 31.958406 7.820507 +vn -0.228723 1.000822 -1.188892 +v 46.846027 31.798721 10.394764 +vn 0.065802 -1.354528 0.342034 +v 61.272781 34.524712 5.985285 +vn 0.073905 -1.521326 0.384152 +v 61.256676 34.524712 5.988383 +vn 0.001084 -0.022296 0.005632 +v 55.360161 34.496571 7.011404 +vn 0.000492 -0.020515 0.002556 +v 61.312759 34.574272 6.279903 +vn 0.037348 -1.558316 0.194131 +v 71.148788 34.574272 4.387615 +vn 0.037347 -1.558297 0.194129 +v 61.273930 34.548199 6.078078 +vn 0.037348 -1.558315 0.194131 +v 55.453011 34.574272 7.407220 +vn 0.000546 -0.022796 0.002840 +v 55.414185 34.548199 7.205395 +vn 0.174529 -1.270393 0.907194 +v 46.419884 34.198410 8.179700 +vn 0.143094 -1.376104 0.743794 +v 71.035652 34.420193 3.799536 +vn 0.143093 -1.376104 0.743794 +v 55.323772 34.420193 6.822240 +vn 0.143096 -1.376117 0.743806 +v 46.451553 34.320305 8.344303 +vn 0.004273 -0.004295 0.022211 +v 46.309429 33.133568 7.605552 +vn 0.291544 -0.293056 1.515435 +v 55.147362 33.133568 5.905281 +vn 0.247286 -0.830286 1.285382 +v 61.075348 33.721729 4.959048 +vn 0.003674 -0.012335 0.019095 +v 46.345459 33.721729 7.792832 +vn 0.073631 1.521676 0.382732 +v 61.274227 31.306643 6.079606 +vn 0.072554 1.499420 0.377134 +v 55.414478 31.306643 7.206923 +vn 0.174314 1.271226 0.906076 +v 61.181690 31.534010 5.511811 +vn 0.002555 0.018632 0.013280 +v 55.289734 31.534010 6.645325 +vn 0.203022 1.145651 1.055300 +v 70.941391 31.797485 3.309555 +vn 0.002678 0.015114 0.013922 +v 70.969948 31.655691 3.457995 +vn 0.002976 0.016795 0.015470 +v 46.391571 31.797485 8.032529 +vn 0.002976 0.016795 0.015470 +v 55.258064 31.655691 6.480699 +vn 0.109783 1.469524 0.570605 +v 61.235847 31.392776 5.793306 +vn 0.000784 0.010498 0.004076 +v 71.072342 31.358046 3.990242 +vn 0.108450 1.450880 0.563744 +v 46.522526 31.358046 8.713217 +vn 0.097286 1.300423 0.505689 +v 55.376564 31.358046 7.009848 +vn 0.032072 1.350712 0.166707 +v 61.274078 31.280785 6.288991 +vn 0.000542 0.022801 0.002816 +v 55.418308 31.304075 7.226835 +vn 0.036982 1.556277 0.192217 +v 46.560440 31.306643 8.910293 +vn 0.003303 0.011111 0.017170 +v 70.895439 32.131989 3.070702 +vn 0.246792 0.830149 1.282815 +v 46.366615 31.957125 7.902797 +vn 0.250457 0.842477 1.301867 +v 46.345619 32.131989 7.793677 +vn 0.246790 0.830135 1.282803 +v 55.183556 32.131989 6.093406 +vn 0.003906 0.001304 0.020303 +v 70.856804 32.926773 2.869901 +vn 0.004341 0.001449 0.022563 +v 46.309456 32.719955 7.605683 +vn -0.270127 -0.090169 -1.404110 +v 56.676979 32.928387 8.958290 +vn -0.296165 -0.098865 -1.539451 +v 46.927944 33.135204 10.820560 +vn -0.278750 -0.479804 -1.448930 +v 71.470390 33.338730 6.059290 +vn -0.003457 -0.005951 -0.017970 +v 60.891953 33.535702 8.029180 +vn -0.000726 -0.001250 -0.003774 +v 46.920574 33.338730 10.782265 +vn -0.186147 -0.625765 -0.967583 +v 60.946449 33.723171 7.928683 +vn -0.203025 -1.145688 -1.055313 +v 71.367081 34.199467 5.522300 +vn -0.200168 -1.129561 -1.040463 +v 46.845825 34.057674 10.393715 +vn -0.175820 -1.694872 -0.913905 +v 61.258160 34.420887 7.111399 +vn -0.001842 -0.017756 -0.009574 +v 71.335411 34.321148 5.357674 +vn -0.002042 -0.019684 -0.010614 +v 55.812225 34.420887 8.159105 +vn -0.140790 -1.357186 -0.731819 +v 46.785595 34.321148 10.080648 +vn -0.247499 0.830993 -1.286491 +v 71.441757 32.133430 5.910437 +vn -0.300860 1.010157 -1.563857 +v 56.384117 31.958406 8.694220 +vn -0.196912 0.661145 -1.023540 +v 56.476284 32.133430 8.789543 +vn -0.003435 0.005904 -0.017853 +v 71.470482 32.518005 6.059753 +vn -0.327201 0.562429 -1.700779 +v 60.814278 32.320908 8.044650 +vn -0.003784 0.006504 -0.019669 +v 46.920666 32.518005 10.782727 +vn -0.003784 0.006505 -0.019671 +v 56.570694 32.320908 8.861045 +vn -0.292604 0.096686 -1.520941 +v 60.751659 32.928387 8.174390 +vn -0.141264 1.358505 -0.734282 +v 71.335663 31.534855 5.358966 +vn -0.174032 1.673631 -0.904613 +v 61.176445 31.434967 7.128626 +vn -0.143096 1.376117 -0.743806 +v 46.751560 31.434967 9.903733 +vn -0.001563 0.020874 -0.008124 +v 55.776115 31.358620 7.971396 +vn -0.037310 1.558325 -0.193935 +v 71.188240 31.280876 4.592679 +vn -0.041717 1.742393 -0.216843 +v 61.270115 31.280876 6.500761 +vn -0.032416 1.353925 -0.168498 +v 61.266422 31.306923 6.710764 +vn -0.003907 -0.003963 -0.020310 +v 56.582695 33.338730 8.923434 +vn -0.225691 -0.989283 -1.173131 +v 71.420601 33.898132 5.800478 +vn -0.002872 -0.012587 -0.014926 +v 61.088646 34.057674 7.653634 +vn -0.228557 -1.001846 -1.188028 +v 71.395645 34.057674 5.670740 +vn -0.163193 -0.714598 -0.848333 +v 61.060886 33.999672 7.707832 +vn -0.002469 -0.018003 -0.012832 +v 46.817268 34.199467 10.245275 +vn -0.134398 -0.980130 -0.698595 +v 56.036705 34.199467 8.471608 +vn -0.002468 -0.018001 -0.012830 +v 55.928535 34.321148 8.321699 +vn -0.072712 -1.501767 -0.377952 +v 71.264687 34.497074 4.990050 +vn -0.082268 -1.699150 -0.427627 +v 55.613091 34.548508 7.796787 +vn -0.073673 -1.521617 -0.382947 +v 46.676956 34.548508 9.515950 +vn -0.096477 -1.297019 -0.501256 +v 61.303711 34.490608 6.923106 +vn -0.120594 -1.622751 -0.627160 +v 55.693523 34.497074 7.985682 +vn -0.037046 -1.558518 -0.192566 +v 71.187935 34.574375 4.591091 +vn -0.037046 -1.558516 -0.192566 +v 46.638119 34.574375 9.314066 +vn -0.265315 0.659574 -1.379097 +v 71.458389 32.320908 5.996901 +vn -0.226455 0.562969 -1.177103 +v 60.868248 32.168861 7.961548 +vn -0.000689 0.001712 -0.003579 +v 46.908573 32.320908 10.719875 +vn -0.288016 0.289504 -1.497095 +v 71.477783 32.721592 6.097717 +vn -0.313647 0.315269 -1.630326 +v 60.770199 32.518005 8.118308 +vn -0.265910 0.267288 -1.382191 +v 56.674541 32.721592 8.945614 +vn -0.003886 0.003907 -0.020202 +v 56.638954 32.518005 8.913091 +vn -0.091955 1.891141 -0.477977 +v 61.266220 31.311365 6.728227 +vn -0.001068 0.021946 -0.005551 +v 55.655907 31.306923 7.790134 +vn -0.074019 1.521145 -0.384749 +v 46.677250 31.306923 9.517477 +vn -0.091858 1.889162 -0.477476 +v 55.662575 31.311365 7.806274 +vn -0.022291 -0.058641 -0.115866 +v 45.754868 31.906664 4.722975 +vn -0.098464 -0.259026 -0.511794 +v 46.792843 27.567686 6.719300 +vn -0.410818 -1.080539 -2.134999 +v 70.601196 28.748648 1.541240 +vn -0.181062 -0.476331 -0.941155 +v 60.484760 31.906664 1.889190 +vn -0.226671 0.074895 -1.178224 +v 54.592804 31.906664 3.022704 +vn 0.265741 0.699116 1.381311 +v 51.725163 32.743256 35.756310 +vn 0.232202 0.610881 1.206976 +v 76.274979 32.743256 31.033335 +vn 0.352026 -0.116315 1.829813 +v 75.544533 25.600410 33.281940 +vn 0.444256 -0.146792 2.309240 +v 52.123806 26.241262 37.828434 +vn 0.023534 1.995097 0.122301 +v 72.279839 27.965517 28.017206 +vn 0.017258 1.463392 0.089703 +v 71.904739 28.001427 27.503540 +vn 0.013154 1.115644 0.068383 +v 71.559708 28.020782 27.254135 +vn 0.011191 0.948666 0.058158 +v 71.366455 28.028603 27.163761 +vn 0.030965 2.626631 0.160985 +v 70.953598 28.039904 27.058821 +vn 0.030465 2.583380 0.158356 +v 70.527489 28.044874 27.059690 +vn 0.000256 0.021721 0.001331 +v 67.170486 28.113617 26.584072 +vn 0.010155 0.861418 0.052806 +v 69.045937 27.965517 28.639355 +vn 0.023775 2.015372 0.123528 +v 69.125305 27.990200 28.221403 +vn 0.017126 1.452184 0.089014 +v 69.203674 28.001427 28.023180 +vn 0.019612 1.662790 0.101919 +v 69.306305 28.011675 27.836245 +vn 0.013954 1.183530 0.072556 +v 69.577461 28.028603 27.507933 +vn 0.009506 0.806224 0.049426 +v 69.921913 28.039904 27.257298 +vn 0.026788 2.271990 0.139285 +v 69.741806 28.035006 27.371834 +vn 0.007502 0.636136 0.038990 +v 70.114883 28.043211 27.166206 +vn 0.023531 1.995097 0.122286 +v 72.439278 27.912836 28.845966 +vn 0.017000 1.441429 0.088349 +v 72.412743 27.900188 29.057392 +vn 0.019098 1.619502 0.099272 +v 72.359901 27.888153 29.263918 +vn 0.023265 1.973092 0.120957 +v 72.178909 27.866678 29.649078 +vn 0.029162 2.472828 0.151567 +v 71.743401 27.843346 30.113489 +vn 0.005746 0.487266 0.029864 +v 71.370232 27.835142 30.319136 +vn 0.004086 0.346504 0.021239 +v 71.167282 27.833479 30.385315 +vn 0.026062 2.209995 0.135467 +v 69.073219 27.939177 29.063824 +vn 0.000429 0.036330 0.002227 +v 68.226372 27.764736 32.072548 +vn 0.028286 2.399680 0.147089 +v 69.205376 27.912836 29.468115 +vn 0.028938 2.454595 0.150448 +v 70.531616 27.838449 30.426502 +vn 0.007500 0.636148 0.038991 +v 70.744606 27.835142 30.439495 +vn 0.011660 0.988648 0.060603 +v 70.321869 27.843346 30.386969 +vn 0.022086 1.873114 0.114814 +v 69.925507 27.857569 30.231188 +vn 0.018841 1.597775 0.097939 +v 69.745140 27.866678 30.117294 +vn 0.021329 1.808605 0.110864 +v 69.580475 27.876926 29.981783 +vn 0.023756 2.015350 0.123531 +v 69.434158 27.888153 29.826784 +vn -0.018488 -1.567744 -0.096099 +v 67.195198 30.209538 26.712547 +vn -0.018488 -1.567746 -0.096099 +v 71.908768 30.209538 25.805735 +vn -0.296177 0.097860 -1.539511 +v 72.964653 29.860657 31.294212 +vn -0.563489 0.186197 -2.928997 +v 72.943474 28.064154 31.184092 +vn -0.171536 0.056677 -0.891634 +v 68.251091 29.860657 32.201023 +vn 0.296175 -0.097861 1.539514 +v 68.569992 30.209538 26.448061 +vn 0.011769 -0.003889 0.061175 +v 71.887581 28.413034 25.695614 +vn 0.026061 2.209994 0.135467 +v 57.682102 27.939177 31.255283 +vn 0.023755 2.015371 0.123531 +v 57.321167 27.990200 30.492323 +vn 0.017124 1.452202 0.089016 +v 57.174850 28.001427 30.337324 +vn 0.019604 1.662799 0.101922 +v 57.010181 28.011675 30.201813 +vn 0.022099 1.873112 0.114827 +v 56.829819 28.020782 30.087919 +vn 0.026804 2.271996 0.139283 +v 56.433453 28.035006 29.932138 +vn 0.005632 0.477636 0.029277 +v 55.797596 28.044874 29.893476 +vn 0.003901 0.330756 0.020275 +v 55.588039 28.044874 29.933792 +vn 0.032712 2.773934 0.170032 +v 55.385090 28.043211 29.999971 +vn 0.025557 2.166673 0.132800 +v 54.316307 27.952452 31.686220 +vn 0.023522 1.995059 0.122302 +v 54.316055 27.965517 31.473139 +vn 0.019361 1.641544 0.100614 +v 54.395416 27.990200 31.055189 +vn 0.015183 1.287485 0.078918 +v 54.576412 28.011675 30.670029 +vn 0.025298 2.145439 0.131528 +v 54.701645 28.020782 30.497345 +vn 0.009291 0.787813 0.048283 +v 55.011921 28.035006 30.205618 +vn 0.030976 2.626637 0.160984 +v 55.192024 28.039904 30.091084 +vn 0.030334 2.573741 0.157776 +v 57.709126 27.925900 31.466671 +vn 0.028310 2.399683 0.147083 +v 57.709385 27.912836 31.679752 +vn 0.023774 2.015369 0.123528 +v 57.630016 27.888153 32.097702 +vn 0.021328 1.808599 0.110862 +v 57.551651 27.876926 32.295929 +vn 0.000957 0.081117 0.004972 +v 59.584839 27.764736 33.735035 +vn 0.018843 1.597782 0.097939 +v 57.449020 27.866678 32.482864 +vn 0.007501 0.636014 0.038983 +v 56.640343 27.835142 33.152920 +vn 0.005633 0.477642 0.029277 +v 56.437393 27.833479 33.219101 +vn 0.003900 0.330752 0.020275 +v 56.227837 27.833479 33.259415 +vn 0.016563 1.404493 0.086092 +v 54.343330 27.939177 31.897608 +vn 0.010206 0.865498 0.053053 +v 50.574806 28.113617 29.776804 +vn 0.016994 1.441476 0.088353 +v 54.578556 27.900188 32.488392 +vn 0.015182 1.287486 0.078918 +v 55.015247 27.866678 32.951080 +vn -0.015605 -1.323241 -0.081111 +v 58.234764 29.860657 34.127998 +vn -0.012220 -1.036275 -0.063521 +v 53.840099 30.209538 29.281845 +vn 0.094153 -0.031109 0.489403 +v 50.599525 30.209538 29.905277 +vn 0.111247 -0.036757 0.578257 +v 53.818913 28.413034 29.171724 +vn 0.256375 -0.084710 1.332624 +v 58.528950 28.113617 28.246559 +vn 0.552551 -0.182573 2.872139 +v 57.157688 28.413034 28.529400 +vn -0.352310 -0.000000 0.067778 +v 58.553665 30.209538 28.375034 +vn -0.124642 0.041184 -0.647879 +v 58.213581 28.064154 34.017876 +vn -0.124641 0.041183 -0.647878 +v 59.609554 29.860657 33.863510 +vn -0.202023 0.066752 -1.050112 +v 51.655415 29.860657 35.393753 +vn 0.000346 0.029346 0.001799 +v 69.604698 28.064154 31.826416 +vn 0.000346 0.029346 0.001799 +v 72.962326 28.057924 31.282099 +vn 0.018486 1.567719 0.096089 +v 69.623550 28.057924 31.924423 +vn 0.171527 0.000003 -0.032999 +v 69.104996 30.633932 29.229004 +vn 2.823564 -0.000004 -0.543205 +v 68.780930 30.440424 27.544506 +vn 0.065370 -0.000000 -0.012576 +v 69.422005 30.228603 30.876797 +vn 1.597013 -0.000032 -0.307244 +v 69.625877 29.860657 31.936537 +vn 1.542504 0.000003 -0.296823 +v 68.548805 28.413034 26.337940 +vn -0.003993 -0.338633 -0.020757 +v 69.648270 30.153843 32.052898 +vn -0.014495 -1.229114 -0.075342 +v 72.760780 30.228603 30.234472 +vn -0.003993 -0.338634 -0.020757 +v 71.893440 30.515184 25.726080 +vn -0.018488 -1.567743 -0.096099 +v 68.554665 30.515184 26.368404 +vn 0.104325 -0.034470 0.542275 +v 68.529945 28.419264 26.239931 +vn -1.487992 -0.000003 0.286339 +v 71.868721 28.419264 25.597607 +vn -1.370986 0.000008 0.263751 +v 72.119705 30.440424 26.902182 +vn -0.171527 0.000001 0.032999 +v 72.443771 30.633932 28.586679 +vn -0.315951 -0.000001 0.060804 +v 72.987045 30.153843 31.410572 +vn -0.000386 -0.032709 -0.002005 +v 72.764313 30.528021 30.252825 +vn -0.034324 -2.905665 -0.178098 +v 72.471054 30.607592 29.011148 +vn -0.002328 -0.197115 -0.012082 +v 72.470795 30.620655 28.798069 +vn -0.029026 -2.462717 -0.150964 +v 72.391685 30.582907 29.429100 +vn -0.020476 -1.737191 -0.106496 +v 72.210686 30.561432 29.814259 +vn -0.013235 -1.122896 -0.068837 +v 72.313316 30.571682 29.627323 +vn -0.007847 -0.665375 -0.040788 +v 71.775185 30.538101 30.278669 +vn -0.005270 -0.446866 -0.027389 +v 71.595078 30.533205 30.393206 +vn -0.001875 -0.158976 -0.009745 +v 69.425537 30.528021 30.895151 +vn -0.020500 -1.737192 -0.106491 +v 69.776917 30.561432 30.282476 +vn -0.006483 -0.549403 -0.033677 +v 69.340240 30.594944 29.819784 +vn -0.000106 -0.008993 -0.000551 +v 72.123238 30.739841 26.920534 +vn -0.002329 -0.197114 -0.012082 +v 72.390434 30.647207 28.380356 +vn -0.031937 -2.711264 -0.166197 +v 72.208527 30.672918 27.995901 +vn -0.020486 -1.737183 -0.106483 +v 71.771851 30.706430 27.533209 +vn -0.011203 -0.950102 -0.058238 +v 71.398232 30.723356 27.328941 +vn -0.007847 -0.665377 -0.040788 +v 71.195122 30.729761 27.263535 +vn -0.003216 -0.272592 -0.016714 +v 70.772285 30.737967 27.211027 +vn -0.000576 -0.048828 -0.002994 +v 68.784454 30.739841 27.562859 +vn -0.007846 -0.665360 -0.040787 +v 69.773590 30.729761 27.537014 +vn -0.011205 -0.950102 -0.058237 +v 69.609238 30.723356 27.673115 +vn -0.013241 -1.122901 -0.068830 +v 69.235451 30.696182 28.188360 +vn -0.020485 -1.737189 -0.106484 +v 69.338081 30.706430 28.001427 +vn -0.002320 -0.197115 -0.012084 +v 69.077972 30.647207 29.017616 +vn 0.018141 1.538427 0.094294 +v 58.232433 28.057924 34.115883 +vn 1.370979 -0.000006 -0.263753 +v 54.051037 30.440424 30.378290 +vn 0.315956 0.000000 -0.060782 +v 53.824776 30.515184 29.202190 +vn 0.054498 0.000000 -0.010484 +v 53.800060 28.419264 29.073715 +vn 1.370979 0.000010 -0.263752 +v 54.692116 30.228603 33.710583 +vn 0.054498 -0.000000 -0.010484 +v 54.893661 28.057924 34.758209 +vn 2.714576 -0.000001 -0.522212 +v 54.895992 29.860657 34.770321 +vn 0.315953 -0.000000 -0.060781 +v 54.918377 30.153843 34.886681 +vn 1.542503 -0.000000 -0.296769 +v 54.874805 28.064154 34.660202 +vn -0.018488 -1.567742 -0.096099 +v 58.257153 30.153843 34.244358 +vn -0.018488 -1.567746 -0.096099 +v 57.389812 30.440424 29.735966 +vn -0.003993 -0.338633 -0.020757 +v 57.163551 30.515184 28.559864 +vn -1.488002 0.000001 0.286278 +v 57.138832 28.419264 28.431391 +vn -2.714563 0.000005 0.522223 +v 57.178875 30.209538 28.639521 +vn -0.029028 -2.462718 -0.150963 +v 57.661793 30.582907 32.262886 +vn -0.025232 -2.137904 -0.131037 +v 57.583431 30.571682 32.461109 +vn -0.015520 -1.315931 -0.080659 +v 57.355564 30.552324 32.820728 +vn -0.001875 -0.158973 -0.009745 +v 58.034420 30.528021 33.086609 +vn -0.003215 -0.272595 -0.016714 +v 56.672123 30.529896 33.318100 +vn -0.000576 -0.048828 -0.002994 +v 54.695644 30.528021 33.728935 +vn -0.027256 -2.311143 -0.141673 +v 55.420643 30.544506 33.320526 +vn -0.017962 -1.523394 -0.093377 +v 55.047028 30.561432 33.116261 +vn -0.009406 -0.798417 -0.048940 +v 54.736042 30.582907 32.825748 +vn -0.025185 -2.137896 -0.131045 +v 54.882362 30.571682 32.980751 +vn -0.004193 -0.355314 -0.021780 +v 54.507275 30.607592 32.467079 +vn -0.000742 -0.062685 -0.003842 +v 54.375107 30.633932 32.062790 +vn -0.034330 -2.905665 -0.178098 +v 57.581722 30.660273 31.016172 +vn -0.001501 -0.127283 -0.007801 +v 55.829376 30.739630 30.058657 +vn -0.000022 -0.001887 -0.000116 +v 57.393345 30.739841 29.754320 +vn -0.033194 -2.814070 -0.172550 +v 55.223801 30.734657 30.256264 +vn -0.006476 -0.549469 -0.033682 +v 54.374340 30.672918 31.426899 +vn -0.001454 -0.123403 -0.007565 +v 54.054569 30.739841 30.396645 +vn -0.002320 -0.197166 -0.012087 +v 54.348083 30.647207 31.851400 +vn -0.016594 0.005483 -0.086256 +v 58.030888 30.228603 33.068256 +vn -0.390772 -0.001575 0.100932 +v 72.358658 27.952452 28.215174 +vn -1.520882 -0.006149 0.392767 +v 72.411995 27.939177 28.421499 +vn 1.130111 0.004552 -0.291851 +v 69.126556 27.925900 29.270149 +vn 1.130092 0.004572 -0.291887 +v 69.067329 27.440147 29.033234 +vn -0.076061 0.025130 -0.395359 +v 71.161400 27.334450 30.354727 +vn -0.076061 0.025132 -0.395374 +v 70.957726 27.833479 30.425631 +vn -0.296168 0.097860 -1.539505 +v 70.951836 27.334450 30.395042 +vn 0.624465 0.052988 -0.984709 +v 69.919617 27.358541 30.200598 +vn 0.840370 0.071308 -1.325165 +v 69.739250 27.367649 30.086706 +vn 0.330916 0.028080 -0.521816 +v 69.780449 30.860849 30.300829 +vn 0.945262 -0.053005 0.682694 +v 69.431534 28.020782 27.663559 +vn 0.843250 -0.090973 1.322114 +v 69.777115 31.029179 27.555368 +vn 0.326217 0.010707 -0.237395 +v 69.302582 27.401161 29.624014 +vn 0.499963 0.016405 -0.363834 +v 69.469467 30.882324 30.010319 +vn -0.217355 -0.067611 1.144816 +v 70.947708 27.540874 27.028231 +vn -0.292509 -0.090988 1.540650 +v 71.157455 27.535978 27.067764 +vn -0.115175 -0.035828 0.606627 +v 70.985374 30.734657 27.224001 +vn -0.292508 -0.090991 1.540645 +v 70.988907 31.034075 27.242355 +vn 1.130818 -0.030951 0.287480 +v 69.072472 27.978165 28.427931 +vn 0.599274 -0.016393 0.152350 +v 69.157089 30.684956 28.386585 +vn 1.521819 -0.041673 0.386940 +v 69.104248 30.672918 28.593111 +vn 1.002372 -0.085764 1.206351 +v 69.735924 27.535978 27.341244 +vn 0.263993 -0.037303 0.557896 +v 69.953697 30.734657 27.422480 +vn 0.406656 -0.057462 0.859386 +v 70.150192 31.037384 27.349741 +vn -1.002340 0.085775 -1.206368 +v 71.907753 27.849751 29.977388 +vn 0.292509 0.090993 -1.540647 +v 70.315987 27.344318 30.356379 +vn 0.177332 0.055163 -0.934013 +v 70.563393 30.533205 30.591682 +vn 0.667190 0.079166 -1.419847 +v 70.154068 30.843924 30.505096 +vn 0.262698 0.031171 -0.559047 +v 69.960815 30.851742 30.414722 +vn 0.667190 0.079166 -1.419847 +v 69.957283 30.552324 30.396368 +vn 0.353292 0.007774 -0.194767 +v 69.199493 27.413807 29.437527 +vn 0.353288 0.007775 -0.194767 +v 69.308464 27.900188 29.654604 +vn -1.459702 -0.018327 0.579960 +v 72.311615 30.660273 28.182388 +vn -0.624460 -0.053001 0.984699 +v 71.740074 28.011675 27.368027 +vn -0.840380 -0.071320 1.325157 +v 71.734192 27.512646 27.337439 +vn -0.509463 -0.043230 0.803350 +v 71.591484 30.715538 27.419315 +vn -1.143512 -0.052458 1.075658 +v 71.898857 27.502398 27.472950 +vn -0.293719 -0.013474 0.276290 +v 72.045174 27.491171 27.627949 +vn -1.143512 -0.052458 1.075658 +v 72.051056 27.990200 27.658539 +vn -1.143506 -0.052447 1.075653 +v 71.936516 30.696182 27.668720 +vn -0.450179 -0.020648 0.423467 +v 72.082832 30.684956 27.823719 +vn -0.024862 -0.024352 0.402076 +v 70.734627 27.544182 27.015257 +vn -0.096766 -0.094783 1.564944 +v 70.740509 28.043211 27.045845 +vn -0.096767 -0.094780 1.564946 +v 70.775818 31.037384 27.229380 +vn 0.296182 -0.097862 1.539523 +v 70.317932 28.044874 27.100006 +vn 0.116581 -0.038518 0.605975 +v 70.349709 30.739630 27.265188 +vn 0.296181 -0.097858 1.539519 +v 70.559265 30.739630 27.224873 +vn -0.483225 -0.085766 1.492177 +v 71.163345 28.035006 27.098354 +vn -0.292963 -0.052000 0.904656 +v 71.401764 31.022774 27.347296 +vn 1.570692 -0.018328 -0.003036 +v 69.040314 27.453424 28.821846 +vn 0.618425 -0.007223 -0.001196 +v 69.081505 30.946625 29.035971 +vn 0.885811 -0.031808 0.348411 +v 69.160614 30.984373 28.404938 +vn 1.558498 -0.030249 0.193790 +v 69.040054 27.466488 28.608767 +vn 1.558504 -0.030265 0.193790 +v 69.077713 30.660273 28.804537 +vn 1.558062 -0.006132 -0.199564 +v 69.046196 27.952452 28.852436 +vn 0.451369 -0.031171 0.421673 +v 69.463310 30.715538 27.828741 +vn 1.146381 -0.079168 1.070960 +v 69.466843 31.014956 27.847094 +vn 0.451369 -0.031171 0.421673 +v 69.612770 31.022774 27.691467 +vn 0.125078 -0.024954 0.383010 +v 70.108994 27.544182 27.135616 +vn 0.191689 -0.038244 0.586986 +v 70.146660 30.737967 27.331387 +vn -0.191648 0.038225 -0.586760 +v 71.402016 30.529896 30.484316 +vn -0.191655 0.038227 -0.586785 +v 71.202591 30.827650 30.568850 +vn -0.486762 0.097090 -1.490309 +v 71.199059 30.528233 30.550497 +vn -0.843264 0.090976 -1.322157 +v 71.778709 30.837519 30.297024 +vn -0.294505 0.020340 -0.275129 +v 72.047791 27.358541 29.791174 +vn -0.451371 0.031171 -0.421674 +v 72.085457 30.552324 29.986944 +vn -1.146376 0.079168 -1.070955 +v 72.088989 30.851742 30.005297 +vn -0.451371 0.031171 -0.421674 +v 71.943062 30.843924 30.160923 +vn -1.146376 0.079168 -1.070955 +v 71.939529 30.544506 30.142570 +vn -1.023437 0.046351 -0.559343 +v 72.173027 27.367649 29.618488 +vn -0.834965 0.037824 -0.456336 +v 72.316849 30.871098 29.645678 +vn -0.944915 0.018349 -0.117494 +v 72.444519 30.594944 29.222574 +vn 0.124136 0.022033 -0.383340 +v 70.118759 27.849751 30.321562 +vn 0.483198 0.085764 -1.492150 +v 70.112869 27.350721 30.290972 +vn 0.190257 0.033770 -0.587503 +v 70.353645 30.538101 30.552149 +vn 0.483219 0.085769 -1.492157 +v 70.150536 30.544506 30.486742 +vn 0.038163 0.037311 -0.616009 +v 70.566925 30.832623 30.610037 +vn -0.061234 0.058849 -0.948323 +v 70.989502 30.528233 30.590813 +vn -0.101023 0.097088 -1.564529 +v 70.776382 30.529896 30.604677 +vn 0.693326 0.031795 -0.652178 +v 69.465935 30.582907 29.991964 +vn 0.256834 0.016024 -0.310877 +v 69.574585 27.377897 29.951195 +vn 0.606045 0.037814 -0.733569 +v 69.612251 30.571682 30.146965 +vn 1.084713 0.013631 -0.430971 +v 69.120674 27.426872 29.239559 +vn 0.884967 0.011111 -0.351610 +v 69.158333 30.620655 29.435329 +vn 0.574727 0.007216 -0.228347 +v 69.240685 30.907009 29.651649 +vn 1.459700 0.018327 -0.579959 +v 69.237152 30.607592 29.633297 +vn -1.375347 -0.030243 0.758228 +v 72.170860 27.479136 27.800131 +vn -1.022058 -0.022474 0.563460 +v 72.176750 27.978165 27.830719 +vn -0.833876 -0.018340 0.459715 +v 72.212059 30.972336 28.014254 +vn -0.393632 -0.024560 0.476460 +v 71.775383 31.005848 27.551561 +vn 0.100931 -0.097088 1.564547 +v 70.562798 31.039047 27.243225 +vn -0.670513 0.094780 -1.417341 +v 71.563293 27.838449 30.228024 +vn -0.670516 0.094768 -1.417345 +v 71.598602 30.832623 30.411558 +vn -0.945263 0.052991 -0.682702 +v 72.053680 27.857569 29.821762 +vn -0.375270 0.013470 -0.147587 +v 72.275658 27.377897 29.431553 +vn -1.460991 0.052443 -0.574583 +v 72.281540 27.876926 29.462143 +vn -0.403501 0.004715 0.000780 +v 72.439018 27.925900 28.632887 +vn -1.520885 -0.006138 0.392796 +v 57.622879 27.453424 31.018370 +vn -0.390776 -0.001580 0.100918 +v 57.676220 27.440147 31.224695 +vn 1.130118 0.004560 -0.291856 +v 54.396667 27.925900 32.103931 +vn -0.116587 0.038518 -0.605978 +v 56.469170 30.528233 33.384281 +vn -0.116587 0.038518 -0.605978 +v 56.263145 30.827650 33.442951 +vn -0.296193 0.097857 -1.539506 +v 56.259613 30.528233 33.424599 +vn 0.624473 0.053000 -0.984699 +v 55.189728 27.358541 33.034382 +vn 0.330929 0.028086 -0.521807 +v 55.227390 30.552324 33.230152 +vn 0.771175 -0.043228 0.556987 +v 54.736954 31.014956 30.680880 +vn 0.626630 -0.067615 0.982458 +v 55.006035 27.535978 30.175030 +vn 0.511230 -0.055161 0.801542 +v 55.227333 31.034075 30.274618 +vn 0.511236 -0.055166 0.801539 +v 55.043697 30.729761 30.370800 +vn 0.326208 0.010706 -0.237423 +v 54.704266 27.888153 32.660568 +vn 0.499959 0.016405 -0.363875 +v 54.610332 30.594944 32.653572 +vn -0.292505 -0.090985 1.540626 +v 56.223705 28.039904 29.892605 +vn -0.217362 -0.067609 1.144828 +v 56.217823 27.540874 29.862017 +vn -0.292512 -0.090984 1.540641 +v 56.427567 27.535978 29.901550 +vn -0.177332 -0.055159 0.934011 +v 56.468761 31.029179 30.115673 +vn -0.177335 -0.055157 0.934010 +v 56.255486 30.734657 30.057787 +vn -0.292513 -0.090981 1.540643 +v 56.465229 30.729761 30.097321 +vn -0.171401 -0.020336 0.364759 +v 56.630680 27.529573 29.966957 +vn 0.391015 -0.010708 0.099447 +v 54.342564 27.978165 31.261719 +vn 1.521802 -0.041675 0.387041 +v 54.336678 27.479136 31.231129 +vn 0.599274 -0.016405 0.152403 +v 54.427197 30.684956 31.220369 +vn 1.002356 -0.085772 1.206361 +v 54.847572 28.028603 30.341719 +vn 0.744848 -0.063734 0.896455 +v 54.841686 27.529573 30.311129 +vn 0.394662 -0.033773 0.474985 +v 54.879349 30.723356 30.506899 +vn 0.172270 -0.024354 0.364153 +v 55.186138 27.540874 30.060493 +vn 0.670487 -0.094785 1.417344 +v 55.379204 27.544182 29.969383 +vn 0.670493 -0.094786 1.417354 +v 55.416866 30.737967 30.165154 +vn -0.744861 0.063731 -0.896458 +v 57.013512 27.843346 32.947273 +vn -1.002362 0.085756 -1.206368 +v 57.213169 30.843924 32.994709 +vn -0.394651 0.033771 -0.474985 +v 57.048820 30.837519 33.130810 +vn -0.607688 0.052001 -0.731387 +v 57.209641 30.544506 32.976357 +vn 0.292528 0.090992 -1.540643 +v 55.586098 27.344318 33.190163 +vn 0.115170 0.035824 -0.606632 +v 55.833504 30.533205 33.425468 +vn 0.115181 0.035833 -0.606620 +v 55.627289 30.837519 33.404289 +vn 0.292526 0.091004 -1.540635 +v 55.623760 30.538101 33.385933 +vn 0.495794 0.058829 -1.055100 +v 55.195614 27.857569 33.064972 +vn 0.262698 0.031174 -0.559048 +v 55.230923 30.851742 33.248508 +vn 0.353300 0.007768 -0.194710 +v 54.469612 27.413807 32.271309 +vn 1.375448 0.030236 -0.758036 +v 54.510807 30.907009 32.485432 +vn -0.374991 -0.004710 0.148989 +v 57.549946 27.965517 30.850992 +vn -1.459700 -0.018332 0.579964 +v 57.628765 27.952452 31.048958 +vn -0.884969 -0.011113 0.351610 +v 57.660542 30.647207 31.214140 +vn -0.884967 -0.011111 0.351613 +v 57.585255 30.959690 31.034527 +vn -0.499962 -0.016402 0.363834 +v 57.356476 30.984373 30.675858 +vn -0.499967 -0.016410 0.363822 +v 57.478638 30.672918 30.829685 +vn -0.330923 -0.028084 0.521806 +v 56.861599 30.715538 30.253101 +vn -0.840387 -0.071329 1.325163 +v 57.041962 30.706430 30.366993 +vn -0.450184 -0.020648 0.423466 +v 57.210159 30.995600 30.520859 +vn -0.450178 -0.020645 0.423466 +v 57.352943 30.684956 30.657505 +vn 0.179600 -0.059343 0.933542 +v 55.619820 30.739630 30.098972 +vn -0.359074 -0.063731 1.108824 +v 56.636566 28.028603 29.997545 +vn -0.483213 -0.085760 1.492166 +v 56.668343 30.723356 30.162727 +vn 0.618430 -0.007216 -0.001173 +v 54.347836 30.660273 31.638319 +vn 1.085723 -0.038973 0.427001 +v 54.467896 27.502398 30.826376 +vn 1.460995 -0.052443 0.574590 +v 54.389534 27.491171 31.024599 +vn 0.575169 -0.020651 0.226215 +v 54.505558 30.696182 31.022146 +vn 1.023433 -0.046349 0.559340 +v 54.473782 28.001427 30.856964 +vn 0.542318 -0.024558 0.296395 +v 54.608192 30.706430 30.835211 +vn 1.558529 -0.030237 0.193575 +v 54.310173 27.466488 31.442549 +vn 0.944949 -0.018344 0.117383 +v 54.351364 30.959690 31.656673 +vn 0.294504 -0.020339 0.275128 +v 54.695759 27.521755 30.466755 +vn 0.695010 -0.048001 0.649284 +v 54.733421 30.715538 30.662525 +vn 0.295116 -0.058863 0.903543 +v 55.623348 31.039047 30.117327 +vn -1.558068 0.006131 0.199537 +v 57.713882 30.633932 31.420465 +vn -0.613540 0.002421 0.078586 +v 57.740902 30.620655 31.631853 +vn -0.486772 0.097096 -1.490310 +v 56.431507 27.334450 33.188511 +vn -0.216646 0.023377 -0.339674 +v 56.833408 27.838449 33.061810 +vn -0.332026 0.035828 -0.520582 +v 57.045292 30.538101 33.112453 +vn -0.843261 0.090987 -1.322129 +v 56.865185 30.533205 33.226990 +vn -0.294509 0.020337 -0.275129 +v 57.177860 27.849751 32.811172 +vn -1.146383 0.079167 -1.070948 +v 57.359097 30.851742 32.839081 +vn -0.391015 0.010705 -0.099405 +v 57.682850 27.900188 31.891176 +vn -1.521844 0.041668 -0.386887 +v 57.714626 30.594944 32.056358 +vn -0.400334 0.007773 -0.049779 +v 57.676964 27.401161 31.860588 +vn -0.613583 0.011916 -0.076295 +v 57.744694 30.907009 31.863287 +vn -1.558510 0.030265 -0.193792 +v 57.718159 30.894361 32.074711 +vn 0.483214 0.085773 -1.492169 +v 55.591980 27.843346 33.220753 +vn 0.124135 0.022034 -0.383338 +v 55.388866 27.849751 33.155346 +vn 0.292956 0.052009 -0.904648 +v 55.424175 30.843924 33.338882 +vn 0.071894 0.070435 -1.162876 +v 55.801727 27.838449 33.260288 +vn 0.096752 0.094788 -1.564939 +v 56.014816 27.835142 33.273262 +vn 0.096753 0.094780 -1.564947 +v 56.050125 30.829313 33.456795 +vn -0.100916 0.097087 -1.564535 +v 56.046593 30.529896 33.438442 +vn 0.849788 0.038977 -0.799364 +v 54.850582 27.876926 32.815567 +vn 1.143520 0.052440 -1.075642 +v 54.844696 27.377897 32.784981 +vn 0.606028 0.037822 -0.733575 +v 55.050560 30.860849 33.134613 +vn 1.084676 0.013624 -0.431019 +v 54.475498 27.912836 32.301899 +vn 0.574717 0.007225 -0.228380 +v 54.428448 30.620655 32.269115 +vn -1.375347 -0.030256 0.758227 +v 57.440971 27.479136 30.633915 +vn -1.022058 -0.022484 0.563459 +v 57.446857 27.978165 30.664505 +vn -0.393632 -0.024564 0.476471 +v 57.206627 30.696182 30.502504 +vn 0.025928 -0.024943 0.401918 +v 55.791714 27.545847 29.862886 +vn 0.025928 -0.024943 0.401918 +v 56.010616 28.043211 29.879631 +vn 0.100929 -0.097094 1.564527 +v 56.004734 27.544182 29.849041 +vn 0.061192 -0.058868 0.948548 +v 56.045925 31.037384 30.063166 +vn 0.100930 -0.097096 1.564533 +v 56.042397 30.737967 30.044811 +vn -0.264019 0.037327 -0.558098 +v 56.675652 30.829313 33.336456 +vn -0.945253 0.052999 -0.682715 +v 57.323788 27.857569 32.655548 +vn -1.272080 0.071324 -0.918769 +v 57.317902 27.358541 32.624958 +vn -0.500906 0.028085 -0.361783 +v 57.480797 30.561432 32.648045 +vn -1.272075 0.071322 -0.918766 +v 57.484329 30.860849 32.666397 +vn -1.085720 0.038978 -0.426999 +v 57.545769 27.377897 32.265339 +vn -0.403505 0.004712 0.000780 +v 57.703499 27.413807 31.649162 +vn -0.952262 0.011122 0.001841 +v 57.741161 30.607592 31.844933 +vn -1.268112 -0.679203 0.284202 +v 73.133041 25.948370 28.069304 +vn 0.941831 -0.739749 0.846198 +v 68.864822 26.065239 26.983849 +vn -0.110853 -0.057369 -0.047032 +v 72.354019 27.389124 29.233330 +vn -0.118139 -0.059016 -0.018373 +v 72.406853 27.401161 29.026802 +vn -1.366284 -0.682524 -0.212485 +v 73.155472 25.886189 29.079416 +vn -1.417564 -0.708169 -0.220270 +v 72.433388 27.413807 28.815378 +vn -1.217446 -0.689357 0.439228 +v 72.352768 27.453424 28.184586 +vn -0.013869 -0.025272 0.040526 +v 71.360573 27.529573 27.133171 +vn -0.467185 -0.851284 1.365115 +v 71.414162 26.080296 26.247744 +vn -0.241336 -0.724352 1.193627 +v 71.026947 26.090002 26.163887 +vn -0.285291 -0.856280 1.411025 +v 71.110840 26.088047 26.179663 +vn -1.006854 -0.639853 -0.976969 +v 72.418747 25.812611 30.421471 +vn -1.376691 -0.692843 -0.040640 +v 73.194214 25.904634 28.771019 +vn -1.060066 -0.708585 0.723929 +v 72.678169 26.012682 27.107624 +vn -1.147395 -0.699178 0.587038 +v 72.920380 25.986547 27.487391 +vn -0.804133 -0.837713 1.207350 +v 71.983307 26.058466 26.494383 +vn 0.575621 -0.791439 1.191465 +v 69.803406 26.094831 26.320511 +vn 0.020250 -0.064410 0.105261 +v 70.099487 26.097260 26.223911 +vn 0.229414 -0.729706 1.192516 +v 70.521606 27.545847 27.029102 +vn 0.259052 -0.823975 1.346573 +v 70.312042 27.545847 27.069418 +vn 0.079423 -0.793501 1.319663 +v 70.405281 26.097260 26.165081 +vn 1.283042 -0.679202 -0.206599 +v 68.272964 25.948370 29.004301 +vn 1.239893 -0.675520 0.115172 +v 68.243927 25.981487 28.469589 +vn 1.202741 -0.717547 0.434395 +v 68.442665 26.029385 27.649981 +vn 1.264689 -0.754505 0.456769 +v 68.359734 26.017492 27.859955 +vn 1.323851 -0.748755 0.295034 +v 69.119423 27.491171 28.190815 +vn 0.076473 -0.629312 -1.413589 +v 70.525734 27.339420 30.395912 +vn 0.077320 -0.629197 -1.413294 +v 70.496414 25.794794 31.081974 +vn -0.096156 -0.624320 -1.406572 +v 71.032852 25.788862 31.075527 +vn 1.292867 -0.741551 -0.764848 +v 68.517754 25.899576 29.753220 +vn 1.323035 -0.706923 -0.388268 +v 68.305092 25.937754 29.171307 +vn -0.958442 -0.688940 -1.188751 +v 72.244850 25.805826 30.565607 +vn -0.071533 -0.051453 -0.088800 +v 72.179062 25.803261 30.620136 +vn -1.116548 -0.646764 -0.844092 +v 72.814415 25.837296 29.942667 +vn -0.076278 -0.054830 -0.094608 +v 71.901863 27.350721 29.946800 +vn -0.098041 -0.053111 -0.056738 +v 72.964188 25.852247 29.669930 +vn -0.108998 -0.054945 -0.031086 +v 73.099586 25.873442 29.298115 +vn -1.334254 -0.672637 -0.381690 +v 73.078400 25.868631 29.380653 +vn -0.807273 -0.701104 0.929008 +v 72.414482 26.033876 26.812588 +vn -0.954895 -0.829311 1.098891 +v 72.348557 26.037975 26.758394 +vn -0.955727 -0.717535 0.849617 +v 72.472954 26.029385 26.874619 +vn -1.004970 -0.754506 0.893393 +v 72.627869 26.017492 27.038837 +vn -0.879367 -0.763182 1.010615 +v 72.174210 26.048828 26.614885 +vn -0.263251 -0.788150 1.298792 +v 71.332840 26.082863 26.221514 +vn -0.592450 -0.781529 1.199265 +v 71.553825 27.521755 27.223545 +vn 0.788454 -0.856279 1.204456 +v 69.449699 26.088047 26.499239 +vn 0.578698 -0.795250 1.196985 +v 69.916031 27.540874 27.226709 +vn 0.033965 -0.064836 0.102549 +v 69.884560 26.095497 26.294022 +vn -0.007569 -0.064652 0.107825 +v 70.941620 26.091330 26.158655 +vn 1.360158 -0.724809 -0.046462 +v 68.244370 25.962425 28.780510 +vn 0.995125 -0.781529 0.893845 +v 69.425652 27.521755 27.632971 +vn 1.264626 -0.754380 0.456112 +v 68.473946 26.033876 27.570681 +vn 1.270521 -0.758148 0.459319 +v 69.197784 27.502398 27.992590 +vn 1.349561 -0.735272 0.125583 +v 68.282661 25.999935 28.161194 +vn 0.116692 -0.063577 0.010859 +v 69.066589 27.479136 28.397341 +vn -0.003142 -0.020448 -0.046072 +v 70.738724 27.336113 30.408907 +vn 0.085491 -0.057368 -0.084802 +v 69.428268 27.389124 29.796194 +vn 0.103192 -0.056594 -0.044820 +v 68.444992 25.909863 29.599417 +vn -0.014178 -0.020449 -0.043949 +v 71.364349 27.336113 30.288546 +vn -0.432816 -0.624260 -1.341685 +v 71.634727 25.791292 30.920099 +vn -0.595813 -0.629213 -1.283993 +v 71.839088 25.794794 30.823664 +vn -0.019455 -0.020545 -0.041925 +v 71.557411 27.339420 30.197435 +vn -0.593092 -0.626339 -1.278128 +v 71.916382 25.796120 30.787148 +vn -0.682739 -0.578492 -1.098339 +v 71.737518 27.344318 30.082899 +vn -1.365831 -0.703467 0.130338 +v 73.193764 25.923698 28.460100 +vn -0.044742 -0.023042 0.004247 +v 72.406113 27.440147 28.390909 +vn -1.365662 -0.703315 0.129640 +v 73.154411 25.943062 28.151785 +vn -1.298942 -0.669025 0.123991 +v 72.433128 27.426872 28.602299 +vn -0.097888 -0.059645 0.050066 +v 72.961609 25.981487 27.561985 +vn -1.251995 -0.762870 0.640353 +v 72.273949 27.466488 27.986618 +vn 0.822871 -0.745221 0.958122 +v 69.193283 26.080296 26.675001 +vn 0.074842 -0.067780 0.087144 +v 69.571579 27.529573 27.477345 +vn 0.865136 -0.783497 1.007334 +v 69.019287 26.073511 26.819159 +vn 0.103087 -0.066027 0.052969 +v 69.300415 27.512646 27.805655 +vn 0.075735 -0.626271 -1.406891 +v 70.722069 25.791292 31.095680 +vn -0.082264 -0.052266 -0.079763 +v 72.573311 25.820885 30.256760 +vn -1.212884 -0.702667 -0.917224 +v 72.681854 25.827658 30.125401 +vn 0.070177 -0.063578 0.081749 +v 69.259071 26.082863 26.620474 +vn -1.333043 -0.714118 0.299349 +v 58.424519 25.943062 30.985571 +vn -0.706701 -0.598796 -1.136811 +v 57.258545 25.798077 33.575157 +vn 0.234457 -0.598796 -1.317880 +v 55.597404 25.798077 33.894730 +vn -1.281435 -0.663161 -0.543624 +v 58.348507 25.868631 32.214439 +vn -1.299208 -0.649019 -0.202033 +v 58.453705 25.899576 31.689375 +vn -0.041952 -0.023754 0.015134 +v 57.544060 27.466488 30.820402 +vn -1.280333 -0.724812 0.461488 +v 58.346668 25.962425 30.684662 +vn -0.034836 -0.063579 0.101953 +v 56.602951 26.082863 29.055300 +vn -0.285272 -0.856280 1.411022 +v 56.380947 26.088047 29.013447 +vn 0.415880 -0.793504 1.254939 +v 55.369595 26.097260 29.057695 +vn 0.049517 -0.055327 -0.110733 +v 55.382980 27.350721 33.124756 +vn -0.087079 -0.055339 -0.084496 +v 57.171974 27.350721 32.780586 +vn -1.147393 -0.699175 0.587043 +v 58.190487 25.986547 30.321175 +vn -0.680370 -0.708350 1.020823 +v 57.004299 27.512646 30.171223 +vn -0.804141 -0.837712 1.207346 +v 57.253414 26.058466 29.328167 +vn 0.575646 -0.791487 1.191493 +v 55.073513 26.094831 29.154295 +vn 1.264541 -0.754559 0.456986 +v 53.744095 26.033876 30.404459 +vn 1.323551 -0.748679 0.295525 +v 53.608658 26.012682 30.776279 +vn 1.317531 -0.745274 0.294181 +v 53.629807 26.017492 30.693748 +vn 1.097851 -0.672557 -0.848355 +v 53.896976 25.886189 32.784428 +vn 1.355545 -0.717629 -0.218361 +v 54.337444 27.440147 31.867020 +vn 1.283036 -0.679243 -0.206681 +v 54.310421 27.453424 31.655630 +vn 1.355551 -0.717633 -0.218343 +v 53.543034 25.948370 31.838093 +vn 1.252202 -0.669041 -0.366845 +v 53.575165 25.937754 32.005100 +vn 0.113891 -0.060851 -0.033366 +v 54.390781 27.426872 32.073345 +vn 1.316684 -0.703493 -0.385736 +v 53.631645 25.923698 32.223526 +vn -0.071532 -0.051453 -0.088800 +v 57.449173 25.803261 33.453922 +vn -0.914700 -0.657937 -1.135507 +v 57.007629 27.344318 32.916683 +vn -0.096538 -0.055921 -0.072985 +v 57.443134 27.367649 32.452274 +vn -1.208292 -0.654510 -0.699120 +v 58.084530 25.837296 32.776451 +vn -0.043683 -0.022022 -0.012496 +v 57.624130 27.389124 32.067116 +vn -1.334405 -0.672600 -0.380234 +v 58.425587 25.886189 31.913200 +vn -1.309318 -0.658906 -0.038429 +v 58.464214 25.909863 31.519552 +vn -0.086938 -0.065271 0.077285 +v 57.315281 27.491171 30.461735 +vn -0.955727 -0.717538 0.849617 +v 57.743065 26.029385 29.708405 +vn -1.009405 -0.758149 0.897939 +v 57.168964 27.502398 30.306734 +vn -0.592450 -0.781530 1.199264 +v 56.823933 27.521755 30.057331 +vn 0.418080 -0.797274 1.260877 +v 55.154671 26.095497 29.127806 +vn 0.395349 -0.754555 1.193405 +v 55.582157 27.545847 29.903202 +vn -0.094109 -0.795079 1.325979 +v 56.211830 26.091330 28.992420 +vn -0.093694 -0.791580 1.320143 +v 56.297058 26.090002 28.997673 +vn 0.075539 -0.754595 1.254959 +v 55.900986 26.095497 28.984228 +vn 1.191576 -0.763208 0.612178 +v 53.893787 26.048828 30.131733 +vn 1.133335 -0.725905 0.582256 +v 53.785137 26.037975 30.329685 +vn 0.995151 -0.781547 0.893828 +v 54.134899 26.065239 29.817640 +vn 1.466206 -0.798801 0.136066 +v 53.524647 25.986547 31.218805 +vn 0.002520 -0.020523 -0.046098 +v 55.795841 27.339420 33.229698 +vn 1.131701 -0.649088 -0.669475 +v 53.787865 25.899576 32.587002 +vn 0.102894 -0.059015 -0.060868 +v 54.572670 27.401161 32.457802 +vn 1.102992 -0.675785 -0.852563 +v 54.698380 27.389124 32.629978 +vn 0.089680 -0.054946 -0.069319 +v 54.030071 25.873442 32.966770 +vn 0.992763 -0.666372 -0.985153 +v 54.235268 25.856739 33.199780 +vn 0.988013 -0.663184 -0.980439 +v 54.293797 25.852247 33.261799 +vn 0.062560 -0.055935 -0.103634 +v 55.009365 27.367649 32.920490 +vn 0.687977 -0.615121 -1.139671 +v 54.724979 25.827658 33.580006 +vn 1.269511 -0.696235 -0.551303 +v 53.715111 25.909863 32.433201 +vn 1.093383 -0.627109 -0.646778 +v 53.746639 25.904634 32.512405 +vn 1.316656 -0.703488 -0.385689 +v 53.553837 25.943062 31.922609 +vn -1.025765 -0.594269 -0.775740 +v 57.901814 25.824013 33.028290 +vn -0.014178 -0.020449 -0.043949 +v 56.634460 27.336113 33.122330 +vn -0.593507 -0.626410 -1.278061 +v 57.186497 25.796120 33.620930 +vn -0.770935 -0.653222 -1.240222 +v 56.827522 27.339420 33.031219 +vn -0.098041 -0.053111 -0.056740 +v 58.234299 25.852247 32.503712 +vn -0.118144 -0.060850 0.011274 +v 57.703239 27.426872 31.436083 +vn -0.097888 -0.059646 0.050066 +v 58.231724 25.981487 30.395771 +vn -1.114126 -0.745386 0.762606 +v 57.897980 26.017492 29.872623 +vn 0.865115 -0.783492 1.007345 +v 54.289398 26.073511 29.652943 +vn 0.095099 -0.066687 0.065509 +v 54.570530 27.512646 30.639441 +vn -0.091559 -0.593675 -1.337560 +v 56.221951 27.334450 33.228828 +vn -0.003143 -0.020449 -0.046072 +v 56.008930 27.336113 33.242672 +vn -0.095944 -0.624252 -1.406484 +v 55.992176 25.791292 33.929466 +vn -1.011854 -0.642946 -0.981290 +v 57.843426 25.820885 33.090546 +vn 0.448978 -0.688943 -1.459518 +v 55.294083 25.805826 33.826653 +vn -0.101529 0.012665 0.027061 +v 72.689682 32.936100 28.577045 +vn 0.648582 0.097138 1.377505 +v 69.957222 31.034075 27.440832 +vn 1.468054 0.194416 -0.366995 +v 69.108528 30.933350 29.247358 +vn 0.101838 0.013487 -0.025458 +v 68.913231 32.922829 29.520058 +vn 1.540753 0.187019 -0.184950 +v 68.855606 32.944691 29.174501 +vn 1.488534 0.180680 -0.178682 +v 68.873070 32.936100 29.311298 +vn -1.438935 0.174969 0.584600 +v 72.655136 32.944691 28.443537 +vn 0.831220 0.263631 -1.297096 +v 69.657249 32.846298 30.625416 +vn -1.536594 0.223037 -0.179630 +v 72.717247 32.884747 29.409529 +vn 1.096019 0.111037 1.032914 +v 69.370560 33.026978 27.733027 +vn 0.992145 0.108452 1.202917 +v 69.653427 33.039387 27.476149 +vn -0.065691 0.008193 0.017525 +v 72.393967 30.946625 28.398708 +vn 1.212991 0.226404 -0.870692 +v 69.237755 32.876957 30.205971 +vn -1.432885 0.207893 -0.167398 +v 72.448051 30.894361 29.240927 +vn 0.067156 0.007341 0.081439 +v 69.547142 33.035244 27.564184 +vn 0.806806 0.099794 1.272595 +v 69.770012 33.042557 27.401987 +vn -0.097215 0.289000 -1.532995 +v 70.803802 32.810127 30.994938 +vn -0.052003 0.006743 0.007071 +v 72.447304 30.933350 28.605034 +vn -1.484119 0.192432 0.201813 +v 72.474327 30.920073 28.816422 +vn -1.440653 0.244867 -0.554725 +v 72.656609 32.870937 29.646420 +vn -0.802360 0.273385 -1.249737 +v 71.832893 32.816372 30.695118 +vn 0.052571 0.005922 0.000307 +v 69.081245 30.959690 28.822889 +vn 0.105147 0.011846 0.000598 +v 68.855453 32.953144 29.036612 +vn 1.540718 0.187047 -0.185077 +v 68.886566 32.929462 29.416945 +vn 1.410287 0.137999 0.565384 +v 69.238983 30.995600 28.206715 +vn 1.215215 0.118567 0.888705 +v 69.234924 33.018517 27.897144 +vn 0.471280 0.094952 1.447889 +v 70.353241 31.039047 27.283541 +vn 0.483574 0.097319 1.483095 +v 70.314301 33.050713 27.164234 +vn -1.126796 0.141380 1.073923 +v 72.134529 33.000874 27.627140 +vn -0.464331 0.105828 1.449370 +v 71.415482 33.035244 27.204746 +vn 0.281388 0.273382 -1.458231 +v 70.454575 32.816372 30.960283 +vn 0.012765 0.012401 -0.066149 +v 70.357178 30.837519 30.570503 +vn 0.775960 0.245753 -1.209115 +v 69.864136 32.835857 30.755957 +vn 0.921847 0.237506 -1.103674 +v 69.468384 32.858055 30.469965 +vn 1.269418 0.208005 -0.685690 +v 69.038193 32.899254 29.880606 +vn 1.268490 0.207894 -0.687103 +v 69.343773 30.894361 29.838139 +vn -1.511596 0.206133 0.014478 +v 72.474586 30.907009 29.029501 +vn -1.511568 0.206131 0.014374 +v 72.747452 32.905785 29.060493 +vn -1.405823 0.239102 -0.542257 +v 72.605949 32.863670 29.774776 +vn -1.266041 0.237577 -0.682053 +v 72.214218 30.860849 29.832613 +vn -1.265518 0.237502 -0.682901 +v 72.566765 32.858055 29.873888 +vn -1.464499 0.228616 -0.361324 +v 72.395218 30.882324 29.447453 +vn -1.464697 0.228615 -0.360706 +v 72.682976 32.876957 29.543167 +vn 0.051842 0.005500 0.006771 +v 69.107780 30.972336 28.611465 +vn 0.045782 0.004418 0.025418 +v 69.341614 31.005848 28.019779 +vn 0.084891 0.008278 0.061998 +v 69.297539 33.023071 27.810801 +vn 0.098302 0.093984 1.504017 +v 70.661209 33.049877 27.111113 +vn -0.012566 0.004527 0.067184 +v 71.198654 31.029179 27.281889 +vn 0.094679 0.276997 -1.481509 +v 70.779915 30.829313 30.623030 +vn 1.104322 0.239101 -1.025145 +v 69.615784 30.871098 30.165318 +vn -0.988138 0.277740 -1.178754 +v 72.137970 32.826893 30.464764 +vn -0.987629 0.277820 -1.179202 +v 71.949486 32.819542 30.620956 +vn -0.954187 0.268413 -1.139273 +v 72.055763 32.823685 30.532921 +vn -1.210857 0.254720 -0.865772 +v 72.367989 32.840412 30.199961 +vn -0.049398 0.006195 0.047031 +v 72.086365 30.984373 27.842073 +vn -0.835749 0.123922 1.333459 +v 71.595016 31.014956 27.437670 +vn -0.771643 0.114422 1.231230 +v 71.738770 33.023071 27.341148 +vn -0.985478 0.131614 1.205940 +v 71.945656 33.012627 27.471689 +vn -0.267476 0.096319 1.429556 +v 71.043518 33.045006 27.117043 +vn -0.299401 0.107815 1.600182 +v 71.148338 33.042557 27.136820 +vn 1.394724 0.204036 -0.541840 +v 69.161865 30.920073 29.453684 +vn 0.019637 0.019091 -0.101822 +v 70.559395 32.813923 30.980062 +vn 0.956623 0.246111 -1.142331 +v 69.550751 32.852936 30.537661 +vn -0.637438 0.276998 -1.340637 +v 71.405540 30.829313 30.502670 +vn -0.637843 0.277024 -1.340479 +v 71.646355 32.812271 30.797882 +vn -0.467597 0.282142 -1.424585 +v 71.390076 32.809052 30.899731 +vn -0.019566 0.019542 -0.101700 +v 71.048218 32.808216 30.979116 +vn -0.084582 0.017779 -0.060401 +v 72.305374 32.835857 30.286304 +vn -1.369289 0.164813 0.768106 +v 72.315147 30.959690 28.200741 +vn -0.994607 0.132884 1.218618 +v 71.940048 30.995600 27.687075 +vn -0.094353 0.282140 -1.496389 +v 70.941696 32.809052 30.985991 +vn -0.095140 0.282101 -1.496288 +v 70.993034 30.827650 30.609165 +vn 1.316392 0.127156 0.729020 +v 54.357590 33.005993 30.963581 +vn 1.503977 0.199186 -0.376046 +v 54.156677 32.929462 32.250729 +vn 1.468053 0.194419 -0.366995 +v 54.378639 30.933350 32.081142 +vn 1.453063 0.192434 -0.363247 +v 54.431976 30.920073 32.287468 +vn -1.208562 0.146815 0.893557 +v 57.635265 32.981972 30.724920 +vn 1.488524 0.180705 -0.178847 +v 54.143177 32.936100 32.145084 +vn -1.390291 0.169054 0.564846 +v 57.874226 32.953144 31.149218 +vn -1.536594 0.223040 -0.179630 +v 57.987358 32.884747 32.243313 +vn 0.958551 0.104782 1.162171 +v 54.817253 33.035244 30.397968 +vn 0.043436 0.004748 0.052663 +v 55.047230 31.029179 30.389153 +vn -0.458909 0.104780 1.434873 +v 56.685593 33.035244 30.038530 +vn 1.255906 0.234238 -0.900424 +v 54.426495 32.884747 32.928364 +vn -1.603948 0.232784 -0.185440 +v 58.004532 32.892925 32.106560 +vn 1.453993 0.146825 0.380484 +v 54.189991 32.981972 31.387732 +vn 1.488962 0.157704 0.196339 +v 54.138645 32.966003 31.658104 +vn 0.871734 0.107817 1.374878 +v 55.040123 33.042557 30.235771 +vn 0.294715 0.096560 1.531930 +v 55.584408 33.050713 29.998020 +vn 0.019873 0.006511 0.103298 +v 55.824802 33.050713 29.951773 +vn 0.297659 0.097521 1.547200 +v 55.832905 31.039047 30.077011 +vn -0.093907 0.279228 -1.481114 +v 56.211807 32.809052 33.819775 +vn 1.225813 0.228651 -0.878987 +v 54.739574 30.882324 32.844105 +vn 1.255955 0.234257 -0.900432 +v 54.570660 32.870937 33.125854 +vn -0.052002 0.006743 0.007069 +v 57.717411 30.933350 31.438818 +vn -1.484120 0.192432 0.201813 +v 57.744434 30.920073 31.650206 +vn 1.553140 0.175001 0.008795 +v 54.125698 32.944691 32.008289 +vn 0.068034 0.007666 0.000385 +v 54.351616 30.946625 31.869755 +vn 1.504954 0.151986 0.393856 +v 54.216408 32.987988 31.284470 +vn 1.396133 0.136574 0.559028 +v 54.267094 32.995258 31.156109 +vn 0.063324 0.006195 0.025356 +v 54.430725 30.984373 31.238724 +vn 1.215233 0.118567 0.888676 +v 54.505032 33.018517 30.730928 +vn 0.055075 0.005374 0.040275 +v 54.611721 31.005848 30.853563 +vn 1.095818 0.111009 1.033101 +v 54.882881 31.022774 30.525253 +vn -0.093742 0.099558 1.556993 +v 56.069214 33.048801 29.935953 +vn -0.016124 0.003675 0.050328 +v 56.671875 31.022774 30.181080 +vn 0.056135 0.017779 -0.087473 +v 55.134247 32.835857 33.589741 +vn 0.999176 0.257289 -1.194725 +v 54.885891 30.871098 32.999104 +vn 1.032401 0.265892 -1.235017 +v 54.820824 32.852936 33.371452 +vn 0.059552 0.009762 -0.032258 +v 54.613865 30.894361 32.671925 +vn 1.420117 0.232744 -0.768506 +v 54.359818 32.892925 32.807743 +vn 0.091752 0.015038 -0.049683 +v 54.308266 32.899254 32.714397 +vn -1.548663 0.211193 0.014671 +v 58.017681 32.899254 32.000771 +vn -0.462356 0.279226 -1.410225 +v 56.660187 32.809052 33.733517 +vn -0.866976 0.295355 -1.350154 +v 57.103004 32.816372 33.528904 +vn -1.312188 0.246110 -0.705845 +v 57.785500 32.852936 32.801102 +vn -1.391559 0.236673 -0.536733 +v 57.665325 30.882324 32.281239 +vn -0.048762 0.008293 -0.018809 +v 57.586960 30.871098 32.479462 +vn -0.091588 0.017187 -0.049341 +v 57.836872 32.858055 32.707672 +vn -0.101592 0.015859 -0.025065 +v 57.953087 32.876957 32.376953 +vn -1.500505 0.234207 -0.369524 +v 57.926720 32.870937 32.480206 +vn 1.437233 0.152290 0.188912 +v 54.125408 32.959675 31.763912 +vn 0.051853 0.005494 0.006816 +v 54.377872 30.972336 31.445253 +vn 1.375756 0.132871 0.762597 +v 54.509090 30.995600 31.040499 +vn 1.173406 0.114420 0.857014 +v 54.567650 33.023071 30.644585 +vn 0.021168 0.004262 0.064993 +v 55.420399 31.037384 30.183506 +vn -1.251734 0.152011 0.923584 +v 57.572468 32.987988 30.638821 +vn -0.036200 0.005374 0.057838 +v 57.045490 31.005848 30.385347 +vn -0.003134 0.003371 0.052731 +v 56.259014 31.034075 30.076139 +vn 0.006901 0.006586 0.105381 +v 55.931320 33.049877 29.944899 +vn 1.503967 0.199180 -0.376110 +v 54.217865 32.914238 32.487358 +vn 0.095475 0.279855 -1.496748 +v 55.837036 30.832623 33.443821 +vn 0.006623 0.019412 -0.103822 +v 55.936039 32.812271 33.820282 +vn 0.097070 0.286732 -1.533328 +v 55.829506 32.813923 33.813847 +vn 0.638921 0.262063 -1.342989 +v 55.230915 32.831951 33.634872 +vn 1.131382 0.244946 -1.050260 +v 54.738510 32.858055 33.303745 +vn -1.253153 0.263630 -0.896099 +v 57.719166 32.846298 32.922104 +vn -1.089189 0.136585 1.036983 +v 57.477795 32.995258 30.538424 +vn -1.309763 0.157739 0.734858 +v 57.783360 32.966003 30.956921 +vn -0.059351 0.007148 0.033299 +v 57.482166 30.972336 30.848040 +vn -0.634503 0.111034 1.365859 +v 56.912216 33.026978 30.129803 +vn -0.022204 0.003892 0.047895 +v 56.865128 31.014956 30.271454 +vn -0.655568 0.114900 1.414120 +v 57.008881 33.023071 30.174932 +vn -0.267466 0.096318 1.429559 +v 56.313625 33.045006 29.950829 +vn -0.299389 0.107814 1.600181 +v 56.418449 33.042557 29.970606 +vn 0.032455 0.018807 -0.098943 +v 55.457539 32.823685 33.726143 +vn 0.480253 0.277740 -1.461243 +v 55.355911 32.826893 33.693352 +vn -0.022321 0.009710 -0.047001 +v 56.868717 30.832623 33.245342 +vn -0.659099 0.286733 -1.387848 +v 57.013000 32.813923 33.586163 +vn -0.044673 0.019412 -0.093954 +v 56.916462 32.812271 33.631668 +vn -0.466896 0.282107 -1.424765 +v 56.472702 30.827650 33.402634 +vn -0.270587 0.270271 -1.406548 +v 56.318329 32.808216 33.812901 +vn -1.438979 0.174957 0.584644 +v 57.834824 32.959675 31.050283 +vn -1.390324 0.169051 0.564709 +v 57.664074 30.946625 31.232492 +vn -0.066435 0.008876 0.081401 +v 57.404636 33.000874 30.460924 +vn 0.265742 0.699103 1.381316 +v 66.344604 39.697979 25.731829 +vn -0.247253 0.868618 -1.285211 +v 45.726643 38.559273 20.456078 +vn -0.175371 0.616091 -0.911571 +v 68.557976 38.559273 16.063711 +vn -0.280662 -0.265808 0.786876 +v 59.756031 34.946129 14.619476 +vn 1.035770 -0.498219 1.174425 +v 57.905457 27.120533 11.876236 +vn -1.756611 -0.548767 -2.058952 +v 65.778191 34.374424 22.787634 +vn -0.841127 -0.262766 -0.985471 +v 65.364769 34.357391 23.145042 +vn 0.790124 -0.209284 -0.165310 +v 55.329880 34.385426 24.618225 +vn -0.967216 -0.254600 0.169892 +v 64.885788 34.768574 16.529219 +vn -0.000541 -0.046074 -0.002825 +v 65.773750 35.392830 22.519989 +vn -0.030835 -2.612271 -0.160112 +v 65.713318 35.397808 22.450407 +vn -0.018378 -1.558540 -0.095535 +v 64.642441 35.766628 16.639479 +vn 0.022533 -0.014252 -0.066568 +v 61.281570 34.189182 26.674751 +vn -0.526056 -0.498216 1.474903 +v 64.857506 34.777916 16.382204 +vn -0.907663 -0.283540 -1.063483 +v 61.639938 26.055202 28.537531 +vn -1.192229 -1.197740 0.153262 +v 47.359364 27.719242 12.310676 +vn -1.465571 -1.471995 0.188383 +v 50.426838 26.801964 29.007669 +vn 1.308502 -1.346039 -0.337296 +v 69.590553 27.567686 2.333402 +vn 0.020706 1.755885 0.107629 +v 70.554688 33.050713 27.117987 +vn 0.027203 2.303237 0.141200 +v 70.212830 33.049877 27.197374 +vn 0.029917 2.538977 0.155611 +v 70.081459 33.048801 27.240231 +vn 0.030766 2.612236 0.160091 +v 69.956558 33.046658 27.299223 +vn 0.028534 2.421368 0.148417 +v 69.860016 33.045006 27.344728 +vn 0.005393 0.457136 0.028022 +v 69.464935 33.032036 27.632341 +vn 0.001828 0.155006 0.009502 +v 57.215771 33.012627 30.305473 +vn 0.010358 0.878500 0.053840 +v 69.153854 33.012627 28.008785 +vn 0.023649 2.006231 0.122928 +v 68.919930 32.981972 28.553938 +vn 0.016162 1.370146 0.084009 +v 68.855339 32.959675 28.930120 +vn 0.000113 0.009575 0.000587 +v 57.986450 32.929462 31.513945 +vn 0.000143 0.012135 0.000744 +v 57.925243 32.944691 31.277321 +vn 0.014649 1.242373 0.076143 +v 68.885658 32.974182 28.687576 +vn 0.000129 0.010913 0.000669 +v 57.716671 32.974182 30.836304 +vn 0.025141 2.131786 0.130679 +v 68.946297 32.987988 28.450686 +vn 0.011745 0.995601 0.061049 +v 69.036140 33.000874 28.223217 +vn 0.000104 0.008806 0.000540 +v 69.087517 33.005993 28.129789 +vn 0.019082 1.618262 0.099189 +v 57.959789 32.936100 31.410831 +vn 0.000106 0.009012 0.000552 +v 68.868484 32.966003 28.824327 +vn 0.000118 0.009993 0.000613 +v 68.996964 32.995258 28.322329 +vn 0.010260 0.870340 0.053333 +v 57.322266 33.005993 30.393229 +vn 0.010614 0.899454 0.055154 +v 57.099064 33.018517 30.231880 +vn 0.029523 2.503941 0.153470 +v 56.787216 33.032036 30.071323 +vn 0.007324 0.621092 0.038071 +v 56.554234 33.039387 29.996216 +vn 0.000030 0.002579 0.000158 +v 70.387024 33.147514 25.571024 +vn 0.032739 2.775221 0.170153 +v 56.207088 33.046658 29.944391 +vn 0.029946 2.539716 0.155701 +v 55.226669 33.046658 30.133007 +vn 0.023246 1.970294 0.120756 +v 54.155811 32.974182 31.521353 +vn 0.025576 2.168128 0.132889 +v 54.125526 32.953144 31.870403 +vn 0.000292 0.024780 0.001518 +v 50.501671 33.147514 29.396635 +vn 0.019546 1.656529 0.101515 +v 54.306274 33.000874 31.056999 +vn 0.021690 1.840244 0.112836 +v 54.423965 33.012627 30.842569 +vn 0.012558 1.064788 0.065264 +v 54.735046 33.032036 30.466125 +vn 0.024090 2.042651 0.125200 +v 54.640671 33.026978 30.566811 +vn 0.027900 2.365408 0.144966 +v 54.923534 33.039387 30.309935 +vn 0.029803 2.527748 0.154980 +v 55.130127 33.045006 30.178513 +vn 0.031633 2.681426 0.164272 +v 55.351574 33.048801 30.074015 +vn 0.031754 2.693160 0.165125 +v 55.482941 33.049877 30.031158 +vn 0.023359 1.978680 0.121311 +v 72.564713 32.959675 28.216497 +vn 0.013354 1.131223 0.069354 +v 72.604118 32.953144 28.315432 +vn 0.021095 1.789879 0.109702 +v 72.446564 32.974182 28.002518 +vn 0.015436 1.309686 0.080271 +v 72.513252 32.966003 28.123137 +vn 0.018838 1.599263 0.098003 +v 72.302361 32.987988 27.805037 +vn 0.017756 1.507435 0.092376 +v 72.365158 32.981972 27.891134 +vn 0.000437 0.037030 0.002270 +v 75.218338 33.092384 25.540936 +vn 0.016944 1.436713 0.088069 +v 72.207687 32.995258 27.704639 +vn 0.022156 1.879566 0.115198 +v 72.052155 33.005993 27.559443 +vn 0.024436 2.071565 0.126992 +v 71.828957 33.018517 27.398094 +vn 0.026435 2.241983 0.137416 +v 71.642105 33.026978 27.296019 +vn 0.004479 0.379883 0.023286 +v 71.517105 33.032036 27.237537 +vn 0.000405 0.034316 0.002104 +v 70.553871 33.092384 26.438301 +vn 0.031443 2.666764 0.163467 +v 71.284119 33.039387 27.162430 +vn 0.025310 2.144800 0.131456 +v 70.936981 33.046658 27.110605 +vn 0.023384 1.982070 0.121485 +v 70.799103 33.048801 27.102167 +vn 0.026664 2.259656 0.138483 +v 72.729843 32.922829 28.785805 +vn 0.010109 0.856652 0.052500 +v 72.716339 32.929462 28.680161 +vn 0.012117 1.027172 0.062957 +v 72.747299 32.914238 28.922602 +vn 0.022489 1.906348 0.116837 +v 72.734421 32.892925 29.272776 +vn 0.014203 1.203974 0.073789 +v 72.747574 32.899254 29.166985 +vn 0.021108 1.790758 0.109803 +v 72.515388 32.852936 29.967316 +vn 0.023013 1.951162 0.119582 +v 72.449051 32.846298 30.088320 +vn 0.025403 2.154088 0.132032 +v 72.232353 32.831951 30.364079 +vn 0.031049 2.633115 0.161444 +v 71.742889 32.813923 30.752377 +vn 0.005640 0.478300 0.029324 +v 71.521446 32.810127 30.856874 +vn 0.003960 0.335812 0.020591 +v 71.288612 32.808216 30.932869 +vn 0.000059 0.004970 0.000305 +v 57.575481 32.835857 33.120090 +vn 0.000146 0.012372 0.000758 +v 57.999950 32.922829 31.619591 +vn 0.017600 1.492533 0.091484 +v 68.947769 32.914238 29.653568 +vn 0.017745 1.504876 0.092240 +v 58.017410 32.914238 31.756388 +vn 0.000143 0.012135 0.000744 +v 68.998795 32.905785 29.781673 +vn 0.020602 1.746633 0.107091 +v 58.017563 32.905785 31.894278 +vn 0.014693 1.246161 0.076371 +v 69.089661 32.892925 29.973969 +vn 0.014648 1.242368 0.076141 +v 69.156349 32.884747 30.094587 +vn 0.025127 2.131774 0.130609 +v 69.300552 32.870937 30.292068 +vn 0.011713 0.993729 0.060883 +v 69.395226 32.863670 30.392466 +vn 0.025065 2.124700 0.130289 +v 57.876057 32.863670 32.608562 +vn 0.008868 0.752169 0.046097 +v 57.638096 32.840412 33.033745 +vn 0.028101 2.382668 0.146069 +v 69.773956 32.840412 30.699009 +vn 0.029575 2.508141 0.153730 +v 69.960800 32.831951 30.801086 +vn 0.000075 0.006326 0.000388 +v 57.502460 32.831951 33.197865 +vn 0.007323 0.621018 0.038064 +v 70.085800 32.826893 30.859566 +vn 0.031106 2.637883 0.161690 +v 70.187431 32.823685 30.892359 +vn 0.005979 0.507058 0.031078 +v 57.325878 32.823685 33.366707 +vn 0.000047 0.003959 0.000243 +v 70.318787 32.819542 30.934675 +vn 0.030947 2.624481 0.160858 +v 57.408081 32.826893 33.298550 +vn 0.005914 0.501520 0.030742 +v 57.219593 32.819542 33.454739 +vn 0.034046 2.886208 0.176971 +v 70.665932 32.812271 30.986498 +vn 0.000643 0.054509 0.003341 +v 56.791557 32.810127 33.690659 +vn 0.002363 0.200429 0.012285 +v 56.558720 32.808216 33.766655 +vn 0.020206 1.711911 0.104954 +v 54.507816 32.876957 33.039764 +vn 0.026618 2.259627 0.138488 +v 54.183338 32.922829 32.353844 +vn 0.012472 1.056371 0.064765 +v 54.268864 32.905785 32.615463 +vn 0.005643 0.478315 0.029324 +v 56.073917 32.810127 33.828720 +vn 0.029407 2.492968 0.152830 +v 55.724682 32.816372 33.794067 +vn 0.009276 0.786632 0.048217 +v 55.588898 32.819542 33.768459 +vn 0.023387 1.982568 0.121536 +v 55.044064 32.840412 33.532795 +vn 0.015467 1.310420 0.080344 +v 54.927361 32.846298 33.459202 +vn 0.019029 1.611964 0.098832 +v 54.665352 32.863670 33.226246 +vn -0.018488 -1.567748 -0.096100 +v 47.791321 32.554409 23.248281 +vn -0.017965 -1.523414 -0.093382 +v 48.639805 32.274055 27.658665 +vn -1.023946 0.000000 0.196990 +v 47.329750 34.144943 21.907705 +vn -1.542510 0.000001 0.296753 +v 47.370945 37.638145 22.121828 +vn -0.719620 -0.000000 0.138443 +v 48.502254 37.264343 28.002338 +vn 0.018487 1.567738 0.096099 +v 48.698654 37.264343 27.964556 +vn -0.010763 0.003556 -0.055944 +v 47.567341 37.638145 22.084045 +vn 0.296172 -0.097861 1.539515 +v 48.443409 32.274055 27.696447 +vn -0.018488 -1.567748 -0.096099 +v 69.065254 32.274055 23.729149 +vn -0.682228 -0.000000 0.131249 +v 67.933945 32.647858 17.848639 +vn 0.018095 1.534499 0.094061 +v 69.124100 37.264343 24.035040 +vn 0.018487 1.567734 0.096098 +v 69.320503 37.264343 23.997257 +vn 0.018096 1.534482 0.094060 +v 68.189186 37.638145 18.116745 +vn 0.860283 -0.000001 -0.165505 +v 69.261650 32.274055 23.691366 +vn -0.296186 0.097860 -1.539511 +v 67.992790 37.638145 18.154530 +vn -0.296186 0.097860 -1.539511 +v 68.130341 32.647858 17.810854 +vn -0.453321 0.096767 -1.491343 +v 59.409355 27.286600 8.877703 +vn 1.457897 0.020540 -0.615549 +v 55.492302 31.280785 7.401309 +vn 1.563299 0.021970 -0.659687 +v 55.574558 31.280876 7.596490 +vn 1.401658 0.019675 -0.591125 +v 55.372860 27.449877 6.990583 +vn 1.451047 0.020444 -0.612679 +v 55.496300 37.917774 7.632237 +vn 1.390357 0.019589 -0.587054 +v 55.570572 37.917866 7.808144 +vn 1.451076 0.020444 -0.612660 +v 55.531143 34.574375 7.603197 +vn 0.058265 0.000817 -0.024555 +v 55.739853 37.864441 8.207960 +vn 1.166848 0.016071 -0.486663 +v 55.700066 34.490608 8.001154 +vn -0.046144 0.001201 -0.010718 +v 61.077744 27.375963 7.098868 +vn -1.025693 0.026688 -0.238248 +v 61.134232 31.534855 7.321551 +vn -0.899127 0.023326 -0.207553 +v 61.127060 31.557924 7.355211 +vn -2.151963 0.055824 -0.496695 +v 61.165653 34.199467 7.484885 +vn -1.637942 0.042597 -0.380167 +v 61.200024 37.745140 7.734471 +vn 1.265598 0.113638 -2.094261 +v 56.505417 33.498474 8.885402 +vn 0.244608 0.021831 -0.403741 +v 56.646233 33.135204 8.950924 +vn 1.280412 0.114620 -2.118884 +v 56.489738 32.168861 8.803900 +vn 1.485559 0.079579 -1.585057 +v 56.142513 31.656748 8.452569 +vn 0.632102 0.033860 -0.674438 +v 56.272274 31.798721 8.581312 +vn 0.002538 0.000136 -0.002715 +v 56.432846 27.344353 8.508171 +vn 1.073751 0.057526 -1.145054 +v 55.975113 27.375963 8.080529 +vn 1.126334 0.060383 -1.201337 +v 56.553570 37.581589 9.135686 +vn 0.956042 0.051253 -1.019704 +v 56.316475 37.683620 8.918522 +vn 0.760022 0.040715 -0.810475 +v 56.170826 34.057674 8.599740 +vn 0.641267 0.034411 -0.684213 +v 56.297031 33.898132 8.710000 +vn 0.022572 -0.000000 -0.004342 +v 55.313728 27.469414 6.683230 +vn 1.233474 -0.000002 -0.237272 +v 55.359997 31.392776 6.923721 +vn 0.026129 0.000000 -0.005027 +v 55.436939 37.917618 7.323677 +vn 0.396660 0.262714 -3.055643 +v 58.218220 37.150532 9.707748 +vn 0.514522 0.084758 -1.481716 +v 57.562119 27.298674 9.036112 +vn 0.569614 0.093833 -1.640374 +v 57.679352 37.239975 9.645487 +vn 0.020598 0.003393 -0.059317 +v 56.969593 27.318205 8.831476 +vn -0.004624 0.003378 -0.054218 +v 58.184422 27.286600 9.113360 +vn 1.674170 0.051708 -1.166026 +v 55.894501 31.434967 8.144784 +vn 1.815261 0.055849 -1.260352 +v 56.005283 31.534855 8.308274 +vn 0.757975 0.023320 -0.526269 +v 56.024429 31.557924 8.336872 +vn 1.276021 0.039396 -0.888440 +v 56.097393 37.745140 8.716132 +vn 0.757956 0.023322 -0.526294 +v 56.055264 34.172634 8.497147 +vn -0.134305 0.098243 -1.577284 +v 58.924877 37.087070 9.660819 +vn -2.428246 0.112297 -1.843186 +v 60.630196 37.452759 8.683191 +vn -0.529163 0.030803 -0.399853 +v 60.826279 33.338730 8.107039 +vn -0.376948 0.021830 -0.284157 +v 60.777477 33.135204 8.156141 +vn -0.017744 0.001030 -0.013408 +v 60.432880 27.318205 8.165197 +vn -2.372356 0.137733 -1.790563 +v 60.749218 32.721592 8.161714 +vn -1.380073 -0.000000 0.265504 +v 61.236313 31.358046 5.882530 +vn -1.512020 0.000001 0.290881 +v 61.296688 37.917618 6.196359 +vn -0.960011 0.038829 -0.448891 +v 61.060333 31.656748 7.506463 +vn -1.938542 0.078386 -0.906487 +v 61.157894 34.172634 7.515486 +vn -1.137587 0.093834 -1.311937 +v 60.075809 37.239975 9.184449 +vn -1.027558 0.084758 -1.185048 +v 59.958572 27.298674 8.575074 +vn -0.800536 0.098255 -1.448916 +v 59.525467 37.132675 9.481241 +vn -1.509069 0.019591 -0.029281 +v 61.278057 31.304075 6.099518 +vn -0.053823 0.000697 -0.001033 +v 61.220230 27.411655 6.489185 +vn -1.508929 0.019588 -0.029286 +v 61.352345 37.917866 6.695827 +vn -1.576336 0.020386 -0.029535 +v 61.308647 34.548508 6.701057 +vn -1.390996 0.018068 -0.026676 +v 61.304043 34.497074 6.906312 +vn -0.005085 0.000065 -0.000076 +v 61.343494 37.864441 7.129913 +vn -1.522395 0.039628 -0.353620 +v 61.293682 37.839470 7.341565 +vn -1.999942 0.051184 -0.456096 +v 61.210480 34.321148 7.305542 +vn -1.058337 0.027086 -0.241359 +v 61.207512 34.312927 7.317633 +vn -1.534292 0.039910 -0.356162 +v 61.215351 37.760574 7.670162 +vn -1.941759 0.050580 -0.451436 +v 61.222050 31.358620 6.923690 +vn -0.023022 0.000600 -0.005352 +v 61.191738 27.404522 6.611038 +vn -1.094218 0.028503 -0.254392 +v 61.200790 31.394100 7.019108 +vn -1.459579 0.059053 -0.683032 +v 60.864689 27.350676 7.552396 +vn -0.004057 0.000164 -0.001913 +v 60.811356 27.344353 7.665818 +vn -0.543923 0.021986 -0.253952 +v 60.875416 32.133430 7.943223 +vn -0.029621 0.001198 -0.013847 +v 60.932079 37.581589 8.293333 +vn -2.110548 0.085400 -0.986806 +v 61.012363 33.898132 7.802849 +vn -0.411836 0.016708 -0.193353 +v 60.883930 33.498474 8.043050 +vn -1.208124 0.048919 -0.565050 +v 61.071674 37.683620 8.003700 +vn 0.434819 -0.000000 -0.083657 +v 55.154667 33.337154 5.943245 +vn 0.894392 -0.000001 -0.172073 +v 55.204365 33.896751 6.201581 +vn 1.063671 -0.000001 -0.204639 +v 55.229305 34.056538 6.331215 +vn 1.420503 -0.000005 -0.273296 +v 55.289486 34.320305 6.644032 +vn 1.764775 0.000002 -0.339505 +v 54.950108 37.147907 4.879951 +vn 1.420529 0.000000 -0.273289 +v 55.164299 37.682098 5.993318 +vn 1.746065 0.000002 -0.335914 +v 55.147388 32.719955 5.905413 +vn 1.555157 -0.000009 -0.299184 +v 55.154755 32.516430 5.943708 +vn 1.366368 -0.000002 -0.262865 +v 55.166855 32.319458 6.006606 +vn 2.206081 0.000019 -0.424413 +v 55.204548 31.957125 6.202527 +vn 0.042030 -0.000000 -0.008086 +v 55.000202 27.567686 5.140342 +vn 1.077064 -0.000001 -0.207206 +v 55.229507 31.797485 6.332258 +vn 1.625704 0.000005 -0.312770 +v 55.324051 31.434301 6.823695 +vn -1.802187 0.000006 0.346716 +v 61.058716 33.534252 4.872584 +vn -1.225528 0.000004 0.235775 +v 61.046623 33.337154 4.809731 +vn -0.060215 -0.000001 0.011584 +v 60.525677 35.376511 2.101882 +vn -1.480875 0.000001 0.284896 +v 60.584129 35.864510 2.405715 +vn -1.746065 -0.000002 0.335914 +v 61.039345 32.719955 4.771899 +vn -2.027774 0.000007 0.390109 +v 61.075512 32.131989 4.959892 +vn -0.831839 -0.000007 0.160032 +v 61.121464 31.797485 5.198744 +vn -2.206081 -0.000018 0.424413 +v 61.096504 31.957125 5.069013 +vn -1.242414 0.000003 0.239009 +v 61.150021 31.655691 5.347185 +vn -1.515924 0.000000 0.291637 +v 61.189579 27.469414 5.552814 +vn -1.207375 0.000000 0.232287 +v 61.216007 31.434301 5.690181 +vn -1.604343 0.000006 0.308656 +v 61.121262 34.056538 5.197701 +vn -1.420598 0.000004 0.273304 +v 60.746132 36.778572 3.247786 +vn -0.183711 0.000000 0.035343 +v 61.149776 34.198410 5.345915 +vn -1.480840 -0.000003 0.284883 +v 60.842064 37.147907 3.746436 +vn -0.183694 -0.000000 0.035339 +v 61.181442 34.320305 5.510518 +vn -1.480767 0.000001 0.284877 +v 60.945972 37.450668 4.286564 +vn -1.420529 0.000001 0.273288 +v 61.056255 37.682098 4.859804 +vn -1.604214 0.000001 0.308626 +v 61.252117 34.496571 5.877890 +vn -1.420493 0.000001 0.273281 +v 61.215725 34.420193 5.688726 +vn -0.000784 0.000259 -0.004075 +v 61.219742 31.392776 5.796404 +vn -0.000787 0.000260 -0.004089 +v 55.343891 31.392776 6.926820 +vn -0.296136 0.097861 -1.539520 +v 55.297623 27.469414 6.686328 +vn -0.295294 0.097560 -1.534780 +v 55.396927 34.524712 7.115701 +vn -0.296204 0.097861 -1.539511 +v 55.380825 34.524712 7.118799 +vn 0.008748 0.741842 0.045473 +v 44.786377 31.056692 15.568623 +vn 0.009739 0.825903 0.050625 +v 48.252270 30.884907 17.704353 +vn 0.018488 1.567746 0.096098 +v 45.306290 30.884907 18.271109 +vn -0.259333 0.085686 -1.348004 +v 44.413383 27.719242 12.877433 +vn -0.108398 0.650183 -0.563448 +v 47.231552 28.717300 12.398706 +vn -0.196356 1.177761 -1.020648 +v 44.285572 28.717300 12.965464 +vn -0.671287 -0.674229 0.086286 +v 47.480862 26.801964 29.574427 +vn 0.227344 -1.363628 1.181720 +v 47.982811 26.201115 28.784519 +vn -0.209183 -0.977167 -1.087341 +v 47.594925 32.554409 23.286064 +vn -0.013315 -0.062199 -0.069212 +v 47.526150 34.144943 21.869921 +# 1781 vertices, 0 vertices normals + +f 2//2 90//90 1//1 +f 90//90 2//2 83//83 +f 3//3 2//2 1708//1708 +f 2//2 3//3 83//83 +f 83//83 3//3 1716//1716 +f 1690//1690 5//5 1667//1667 +f 4//4 5//5 73//73 +f 5//5 4//4 1667//1667 +f 1667//1667 4//4 1668//1668 +f 6//6 73//73 5//5 +f 97//97 1759//1759 18//18 +f 1759//1759 97//97 23//23 +f 24//24 69//69 20//20 +f 69//69 24//24 25//25 +f 1763//1763 7//7 99//99 +f 7//7 1763//1763 1764//1764 +f 8//8 1739//1739 22//22 +f 1739//1739 8//8 17//17 +f 9//9 90//90 89//89 +f 90//90 9//9 1//1 +f 70//70 6//6 16//16 +f 6//6 70//70 73//73 +f 11//11 1750//1750 10//10 +f 1750//1750 11//11 1749//1749 +f 13//13 47//47 12//12 +f 47//47 13//13 45//45 +f 1720//1720 94//94 93//93 +f 1723//1723 94//94 1720//1720 +f 1676//1676 94//94 1723//1723 +f 14//14 94//94 1676//1676 +f 94//94 14//14 1733//1733 +f 76//76 15//15 82//82 +f 15//15 76//76 1699//1699 +f 1699//1699 76//76 1685//1685 +f 1764//1764 89//89 7//7 +f 89//89 1764//1764 9//9 +f 17//17 16//16 1739//1739 +f 16//16 17//17 70//70 +f 1759//1759 19//19 18//18 +f 19//19 1759//1759 1761//1761 +f 69//69 1738//1738 20//20 +f 1738//1738 69//69 21//21 +f 1761//1761 99//99 19//19 +f 99//99 1761//1761 1763//1763 +f 21//21 22//22 1738//1738 +f 22//22 21//21 8//8 +f 10//10 23//23 97//97 +f 23//23 10//10 1750//1750 +f 12//12 25//25 24//24 +f 25//25 12//12 47//47 +f 26//26 612//612 27//27 +f 612//612 40//40 37//37 +f 40//40 612//612 26//26 +f 28//28 510//510 29//29 +f 29//29 31//31 28//28 +f 31//31 29//29 616//616 +f 590//590 31//31 616//616 +f 30//30 31//31 590//590 +f 606//606 31//31 30//30 +f 33//33 31//31 606//606 +f 31//31 33//33 32//32 +f 607//607 32//32 33//33 +f 593//593 32//32 607//607 +f 34//34 32//32 593//593 +f 36//36 32//32 34//34 +f 35//35 32//32 36//36 +f 531//531 32//32 35//35 +f 608//608 32//32 531//531 +f 527//527 32//32 608//608 +f 43//43 527//527 526//526 +f 40//40 586//586 37//37 +f 40//40 38//38 586//586 +f 40//40 39//39 38//38 +f 40//40 614//614 39//39 +f 43//43 614//614 40//40 +f 614//614 43//43 603//603 +f 603//603 43//43 585//585 +f 527//527 43//43 32//32 +f 42//42 43//43 526//526 +f 41//41 43//43 42//42 +f 602//602 43//43 41//41 +f 601//601 43//43 602//602 +f 585//585 43//43 601//601 +f 44//44 45//45 859//859 +f 753//753 45//45 44//44 +f 784//784 45//45 753//753 +f 45//45 46//46 47//47 +f 791//791 859//859 54//54 +f 781//781 859//859 48//48 +f 44//44 859//859 781//781 +f 46//46 45//45 784//784 +f 859//859 805//805 48//48 +f 859//859 49//49 805//805 +f 859//859 760//760 49//49 +f 859//859 802//802 760//760 +f 859//859 801//801 802//802 +f 859//859 791//791 801//801 +f 54//54 50//50 791//791 +f 54//54 51//51 50//50 +f 54//54 52//52 51//51 +f 54//54 795//795 52//52 +f 54//54 799//799 795//795 +f 54//54 53//53 799//799 +f 54//54 55//55 53//53 +f 56//56 55//55 54//54 +f 1776//1776 55//55 56//56 +f 55//55 1776//1776 857//857 +f 57//57 1776//1776 828//828 +f 828//828 1776//1776 58//58 +f 59//59 60//60 61//61 +f 60//60 62//62 75//75 +f 59//59 61//61 823//823 +f 60//60 63//63 62//62 +f 59//59 823//823 850//850 +f 60//60 67//67 63//63 +f 59//59 850//850 66//66 +f 857//857 1776//1776 57//57 +f 58//58 1776//1776 64//64 +f 64//64 1776//1776 768//768 +f 768//768 1776//1776 65//65 +f 65//65 1776//1776 66//66 +f 59//59 66//66 1776//1776 +f 60//60 255//255 140//140 +f 60//60 132//132 67//67 +f 60//60 140//140 132//132 +f 60//60 59//59 255//255 +f 1773//1773 255//255 59//59 +f 32//32 1773//1773 493//493 +f 1773//1773 32//32 255//255 +f 47//47 46//46 25//25 +f 68//68 25//25 46//46 +f 25//25 68//68 69//69 +f 777//777 69//69 68//68 +f 69//69 777//777 21//21 +f 780//780 21//21 777//777 +f 21//21 780//780 8//8 +f 751//751 8//8 780//780 +f 8//8 751//751 17//17 +f 750//750 17//17 751//751 +f 17//17 750//750 70//70 +f 72//72 70//70 750//750 +f 70//70 72//72 73//73 +f 71//71 73//73 72//72 +f 847//847 73//73 71//71 +f 847//847 4//4 73//73 +f 843//843 4//4 847//847 +f 82//82 843//843 74//74 +f 76//76 74//74 79//79 +f 843//843 82//82 4//4 +f 75//75 79//79 817//817 +f 75//75 817//817 838//838 +f 75//75 838//838 813//813 +f 74//74 76//76 82//82 +f 75//75 813//813 77//77 +f 75//75 77//77 78//78 +f 75//75 78//78 763//763 +f 75//75 763//763 810//810 +f 75//75 810//810 807//807 +f 75//75 807//807 60//60 +f 79//79 75//75 76//76 +f 938//938 1547//1547 933//933 +f 1547//1547 80//80 933//933 +f 81//81 945//945 80//80 +f 867//867 80//80 1547//1547 +f 81//81 80//80 867//867 +f 945//945 81//81 864//864 +f 1547//1547 938//938 1578//1578 +f 864//864 938//938 945//945 +f 938//938 864//864 1578//1578 +f 82//82 1668//1668 4//4 +f 1668//1668 82//82 1670//1670 +f 1670//1670 82//82 15//15 +f 1716//1716 93//93 83//83 +f 1719//1719 93//93 1716//1716 +f 93//93 1719//1719 1720//1720 +f 1593//1593 121//121 120//120 +f 1593//1593 84//84 121//121 +f 123//123 84//84 865//865 +f 865//865 84//84 1593//1593 +f 11//11 98//98 742//742 +f 99//99 85//85 98//98 +f 99//99 752//752 85//85 +f 99//99 86//86 752//752 +f 99//99 756//756 86//86 +f 749//749 7//7 89//89 +f 99//99 87//87 756//756 +f 99//99 88//88 87//87 +f 99//99 778//778 88//88 +f 91//91 89//89 90//90 +f 7//7 749//749 778//778 +f 89//89 91//91 749//749 +f 90//90 773//773 91//91 +f 83//83 773//773 90//90 +f 83//83 846//846 773//773 +f 83//83 92//92 846//846 +f 93//93 92//92 83//83 +f 92//92 93//93 841//841 +f 94//94 841//841 93//93 +f 841//841 94//94 95//95 +f 138//138 95//95 94//94 +f 95//95 138//138 815//815 +f 129//129 815//815 138//138 +f 815//815 129//129 812//812 +f 134//134 812//812 129//129 +f 812//812 134//134 836//836 +f 133//133 836//836 134//134 +f 836//836 133//133 834//834 +f 139//139 834//834 133//133 +f 125//125 96//96 139//139 +f 834//834 139//139 96//96 +f 98//98 11//11 10//10 +f 98//98 10//10 97//97 +f 98//98 97//97 18//18 +f 98//98 18//18 19//19 +f 11//11 742//742 101//101 +f 98//98 19//19 99//99 +f 778//778 99//99 7//7 +f 101//101 742//742 804//804 +f 761//761 101//101 804//804 +f 748//748 101//101 761//761 +f 759//759 101//101 748//748 +f 800//800 101//101 759//759 +f 100//100 101//101 800//800 +f 101//101 100//100 861//861 +f 789//789 861//861 100//100 +f 790//790 861//861 789//789 +f 102//102 861//861 790//790 +f 103//103 861//861 102//102 +f 794//794 861//861 103//103 +f 105//105 861//861 794//794 +f 104//104 861//861 105//105 +f 830//830 861//861 104//104 +f 106//106 861//861 830//830 +f 108//108 861//861 106//106 +f 107//107 861//861 108//108 +f 115//115 107//107 826//826 +f 126//126 96//96 125//125 +f 96//96 126//126 109//109 +f 109//109 126//126 808//808 +f 808//808 126//126 110//110 +f 110//110 126//126 111//111 +f 111//111 126//126 851//851 +f 851//851 126//126 821//821 +f 821//821 126//126 848//848 +f 112//112 848//848 126//126 +f 629//629 848//848 112//112 +f 848//848 629//629 818//818 +f 112//112 126//126 628//628 +f 818//818 629//629 766//766 +f 113//113 766//766 629//629 +f 766//766 113//113 746//746 +f 746//746 113//113 114//114 +f 630//630 114//114 113//113 +f 114//114 630//630 826//826 +f 115//115 826//826 630//630 +f 107//107 115//115 861//861 +f 117//117 115//115 116//116 +f 117//117 116//116 633//633 +f 117//117 633//633 118//118 +f 117//117 118//118 631//631 +f 121//121 631//631 119//119 +f 121//121 119//119 120//120 +f 631//631 121//121 117//117 +f 115//115 117//117 861//861 +f 122//122 117//117 124//124 +f 84//84 123//123 124//124 +f 117//117 122//122 861//861 +f 122//122 124//124 123//123 +f 255//255 125//125 140//140 +f 125//125 255//255 126//126 +f 62//62 127//127 75//75 +f 127//127 62//62 128//128 +f 128//128 62//62 1693//1693 +f 1693//1693 62//62 1691//1691 +f 1702//1702 129//129 138//138 +f 130//130 129//129 1702//1702 +f 1711//1711 129//129 130//130 +f 129//129 1711//1711 131//131 +f 132//132 133//133 67//67 +f 133//133 132//132 139//139 +f 131//131 134//134 129//129 +f 1713//1713 134//134 131//131 +f 135//135 134//134 1713//1713 +f 1701//1701 134//134 135//135 +f 136//136 1701//1701 137//137 +f 63//63 1691//1691 62//62 +f 1691//1691 63//63 136//136 +f 136//136 63//63 1701//1701 +f 1701//1701 63//63 134//134 +f 63//63 133//133 134//134 +f 133//133 63//63 67//67 +f 1733//1733 138//138 94//94 +f 1730//1730 138//138 1733//1733 +f 138//138 1730//1730 1702//1702 +f 75//75 1685//1685 76//76 +f 1685//1685 75//75 1684//1684 +f 1684//1684 75//75 127//127 +f 140//140 139//139 132//132 +f 139//139 140//140 125//125 +f 141//141 142//142 1779//1779 +f 142//142 141//141 149//149 +f 1548//1548 143//143 1756//1756 +f 1548//1548 1715//1715 143//143 +f 1548//1548 1725//1725 1715//1715 +f 231//231 1672//1672 1725//1725 +f 231//231 1727//1727 1672//1672 +f 231//231 1728//1728 1727//1727 +f 231//231 1705//1705 1728//1728 +f 231//231 1712//1712 1705//1705 +f 146//146 1712//1712 231//231 +f 1712//1712 146//146 1663//1663 +f 1663//1663 146//146 144//144 +f 144//144 146//146 145//145 +f 145//145 146//146 147//147 +f 147//147 146//146 1695//1695 +f 146//146 1692//1692 1695//1695 +f 1535//1535 1692//1692 146//146 +f 1535//1535 1694//1694 1692//1692 +f 1535//1535 1682//1682 1694//1694 +f 149//149 1682//1682 1535//1535 +f 1682//1682 149//149 1683//1683 +f 1666//1666 1769//1769 1688//1688 +f 149//149 1535//1535 142//142 +f 1683//1683 149//149 148//148 +f 148//148 149//149 1666//1666 +f 860//860 1666//1666 149//149 +f 251//251 156//156 252//252 +f 156//156 150//150 151//151 +f 156//156 151//151 1345//1345 +f 156//156 1345//1345 1346//1346 +f 156//156 1346//1346 1319//1319 +f 156//156 1319//1319 152//152 +f 156//156 152//152 1321//1321 +f 156//156 1321//1321 1320//1320 +f 156//156 1320//1320 153//153 +f 156//156 153//153 1348//1348 +f 156//156 1348//1348 154//154 +f 156//156 154//154 155//155 +f 156//156 155//155 157//157 +f 156//156 1325//1325 1360//1360 +f 1326//1326 156//156 1360//1360 +f 1325//1325 156//156 157//157 +f 1779//1779 252//252 156//156 +f 252//252 1779//1779 142//142 +f 1666//1666 860//860 1769//1769 +f 1769//1769 860//860 1744//1744 +f 1226//1226 166//166 1297//1297 +f 158//158 166//166 1226//1226 +f 160//160 166//166 158//158 +f 159//159 166//166 160//160 +f 162//162 159//159 161//161 +f 162//162 161//161 1276//1276 +f 162//162 1276//1276 1248//1248 +f 162//162 1248//1248 1249//1249 +f 162//162 1249//1249 163//163 +f 162//162 163//163 1278//1278 +f 162//162 1278//1278 164//164 +f 162//162 164//164 1247//1247 +f 162//162 1247//1247 165//165 +f 162//162 165//165 1274//1274 +f 159//159 162//162 166//166 +f 1246//1246 162//162 1274//1274 +f 162//162 1246//1246 181//181 +f 1225//1225 866//866 1291//1291 +f 866//866 167//167 1291//1291 +f 866//866 1289//1289 167//167 +f 866//866 168//168 1289//1289 +f 866//866 1237//1237 168//168 +f 866//866 169//169 1237//1237 +f 866//866 1229//1229 169//169 +f 866//866 1261//1261 1229//1229 +f 866//866 1262//1262 1261//1261 +f 866//866 170//170 1262//1262 +f 866//866 1260//1260 170//170 +f 866//866 171//171 1260//1260 +f 866//866 1258//1258 171//171 +f 866//866 1301//1301 1258//1258 +f 866//866 172//172 1301//1301 +f 866//866 1300//1300 172//172 +f 866//866 1236//1236 1300//1300 +f 866//866 1256//1256 1236//1236 +f 866//866 1257//1257 1256//1256 +f 866//866 173//173 1257//1257 +f 866//866 1287//1287 173//173 +f 866//866 1285//1285 1287//1287 +f 866//866 1284//1284 1285//1285 +f 866//866 174//174 1284//1284 +f 866//866 175//175 174//174 +f 866//866 1253//1253 175//175 +f 866//866 176//176 1253//1253 +f 866//866 1299//1299 176//176 +f 866//866 1252//1252 1299//1299 +f 866//866 177//177 1252//1252 +f 866//866 178//178 177//177 +f 866//866 179//179 178//178 +f 1329//1329 179//179 866//866 +f 179//179 1329//1329 202//202 +f 1374//1374 191//191 200//200 +f 180//180 188//188 189//189 +f 1255//1255 162//162 181//181 +f 182//182 162//162 1255//1255 +f 1282//1282 162//162 182//182 +f 192//192 162//162 1282//1282 +f 1545//1545 192//192 1254//1254 +f 1545//1545 1254//1254 183//183 +f 1545//1545 183//183 184//184 +f 1545//1545 184//184 197//197 +f 1306//1306 197//197 186//186 +f 185//185 186//186 187//187 +f 188//188 180//180 187//187 +f 1332//1332 189//189 198//198 +f 199//199 198//198 190//190 +f 191//191 1374//1374 190//190 +f 203//203 202//202 1329//1329 +f 192//192 1545//1545 162//162 +f 1545//1545 1303//1303 234//234 +f 187//187 1365//1365 185//185 +f 1545//1545 193//193 1303//1303 +f 1545//1545 194//194 193//193 +f 1545//1545 1335//1335 194//194 +f 1545//1545 195//195 1335//1335 +f 1545//1545 1307//1307 195//195 +f 1545//1545 1334//1334 1307//1307 +f 1545//1545 196//196 1334//1334 +f 1545//1545 1306//1306 196//196 +f 197//197 1306//1306 1545//1545 +f 186//186 185//185 1306//1306 +f 187//187 180//180 1365//1365 +f 189//189 1332//1332 180//180 +f 198//198 199//199 1332//1332 +f 190//190 1361//1361 199//199 +f 190//190 1374//1374 1361//1361 +f 200//200 201//201 1374//1374 +f 200//200 203//203 201//201 +f 202//202 203//203 200//200 +f 866//866 1304//1304 1329//1329 +f 866//866 1363//1363 1304//1304 +f 213//213 1363//1363 866//866 +f 1363//1363 213//213 204//204 +f 204//204 213//213 205//205 +f 205//205 213//213 206//206 +f 206//206 213//213 207//207 +f 207//207 213//213 208//208 +f 208//208 213//213 209//209 +f 213//213 218//218 1373//1373 +f 213//213 1305//1305 219//219 +f 213//213 1375//1375 210//210 +f 213//213 211//211 217//217 +f 213//213 214//214 215//215 +f 213//213 1353//1353 212//212 +f 213//213 1350//1350 1322//1322 +f 213//213 1326//1326 1328//1328 +f 156//156 1326//1326 213//213 +f 1358//1358 213//213 1328//1328 +f 1359//1359 213//213 1358//1358 +f 1350//1350 213//213 1359//1359 +f 1353//1353 213//213 1322//1322 +f 1354//1354 213//213 212//212 +f 1355//1355 213//213 1354//1354 +f 214//214 213//213 1355//1355 +f 1357//1357 213//213 215//215 +f 216//216 213//213 1357//1357 +f 211//211 213//213 216//216 +f 1375//1375 213//213 217//217 +f 1305//1305 213//213 210//210 +f 218//218 213//213 219//219 +f 209//209 213//213 1373//1373 +f 220//220 866//866 1225//1225 +f 866//866 220//220 1548//1548 +f 221//221 1548//1548 220//220 +f 1293//1293 1548//1548 221//221 +f 1239//1239 1548//1548 1293//1293 +f 222//222 1548//1548 1239//1239 +f 1238//1238 1548//1548 222//222 +f 1266//1266 1548//1548 1238//1238 +f 1265//1265 1548//1548 1266//1266 +f 1263//1263 1548//1548 1265//1265 +f 230//230 1263//1263 1264//1264 +f 230//230 1264//1264 1267//1267 +f 230//230 1267//1267 1240//1240 +f 230//230 1240//1240 223//223 +f 166//166 223//223 224//224 +f 166//166 224//224 225//225 +f 166//166 225//225 1233//1233 +f 166//166 1233//1233 1268//1268 +f 166//166 1268//1268 1235//1235 +f 166//166 1235//1235 1234//1234 +f 166//166 1234//1234 1273//1273 +f 166//166 1273//1273 226//226 +f 166//166 226//226 227//227 +f 166//166 227//227 1245//1245 +f 166//166 1245//1245 1242//1242 +f 166//166 1242//1242 1272//1272 +f 166//166 1272//1272 1241//1241 +f 166//166 1241//1241 228//228 +f 166//166 228//228 229//229 +f 166//166 229//229 1270//1270 +f 166//166 1270//1270 1302//1302 +f 166//166 1302//1302 1295//1295 +f 166//166 1295//1295 1297//1297 +f 223//223 166//166 230//230 +f 1263//1263 230//230 1548//1548 +f 231//231 1548//1548 230//230 +f 1725//1725 1548//1548 231//231 +f 1548//1548 1756//1756 232//232 +f 1756//1756 143//143 233//233 +f 235//235 234//234 1303//1303 +f 1309//1309 234//234 235//235 +f 236//236 234//234 1309//1309 +f 1367//1367 234//234 236//236 +f 1315//1315 234//234 1367//1367 +f 237//237 234//234 1315//1315 +f 238//238 234//234 237//237 +f 1368//1368 234//234 238//238 +f 1337//1337 234//234 1368//1368 +f 240//240 234//234 1337//1337 +f 239//239 234//234 240//240 +f 241//241 234//234 239//239 +f 1317//1317 234//234 241//241 +f 242//242 234//234 1317//1317 +f 243//243 234//234 242//242 +f 245//245 234//234 243//243 +f 244//244 234//234 245//245 +f 1310//1310 234//234 244//244 +f 252//252 1310//1310 1311//1311 +f 252//252 1311//1311 1343//1343 +f 252//252 1343//1343 1342//1342 +f 252//252 1342//1342 246//246 +f 252//252 246//246 1344//1344 +f 252//252 1344//1344 247//247 +f 252//252 248//248 249//249 +f 252//252 250//250 253//253 +f 156//156 251//251 1369//1369 +f 1310//1310 252//252 234//234 +f 1312//1312 252//252 247//247 +f 1340//1340 252//252 1312//1312 +f 1318//1318 252//252 1340//1340 +f 248//248 252//252 1318//1318 +f 250//250 252//252 249//249 +f 251//251 252//252 253//253 +f 156//156 1347//1347 150//150 +f 156//156 1369//1369 1347//1347 +f 126//126 254//254 628//628 +f 254//254 1544//1544 439//439 +f 254//254 1534//1534 1544//1544 +f 257//257 254//254 126//126 +f 254//254 257//257 1534//1534 +f 255//255 256//256 257//257 +f 32//32 258//258 255//255 +f 256//256 255//255 258//258 +f 255//255 257//257 126//126 +f 439//439 1544//1544 1539//1539 +f 1537//1537 453//453 1536//1536 +f 1543//1543 453//453 1537//1537 +f 258//258 32//32 1538//1538 +f 1543//1543 43//43 453//453 +f 259//259 43//43 1543//1543 +f 1538//1538 43//43 259//259 +f 43//43 1538//1538 32//32 +f 363//363 260//260 272//272 +f 372//372 261//261 363//363 +f 283//283 266//266 262//262 +f 312//312 264//264 349//349 +f 400//400 263//263 338//338 +f 338//338 263//263 279//279 +f 271//271 386//386 292//292 +f 365//365 332//332 347//347 +f 264//264 353//353 349//349 +f 378//378 334//334 379//379 +f 265//265 275//275 289//289 +f 266//266 267//267 262//262 +f 398//398 269//269 268//268 +f 269//269 398//398 282//282 +f 275//275 270//270 288//288 +f 270//270 271//271 288//288 +f 325//325 326//326 356//356 +f 349//349 353//353 342//342 +f 369//369 375//375 273//273 +f 330//330 344//344 345//345 +f 346//346 331//331 330//330 +f 366//366 332//332 365//365 +f 347//347 261//261 372//372 +f 347//347 332//332 306//306 +f 334//334 311//311 379//379 +f 272//272 260//260 333//333 +f 267//267 336//336 337//337 +f 399//399 266//266 335//335 +f 262//262 267//267 337//337 +f 375//375 277//277 273//273 +f 274//274 269//269 339//339 +f 269//269 274//274 268//268 +f 289//289 275//275 324//324 +f 276//276 269//269 282//282 +f 269//269 276//276 339//339 +f 685//685 282//282 335//335 +f 671//671 339//339 276//276 +f 284//284 335//335 283//283 +f 339//339 671//671 277//277 +f 285//285 283//283 262//262 +f 650//650 277//277 671//671 +f 646//646 262//262 337//337 +f 277//277 650//650 273//273 +f 684//684 337//337 338//338 +f 278//278 273//273 650//650 +f 286//286 338//338 279//279 +f 273//273 278//278 280//280 +f 281//281 280//280 278//278 +f 645//645 279//279 289//289 +f 282//282 685//685 276//276 +f 335//335 284//284 685//685 +f 283//283 285//285 284//284 +f 262//262 646//646 285//285 +f 337//337 684//684 646//646 +f 654//654 289//289 324//324 +f 338//338 286//286 684//684 +f 279//279 645//645 286//286 +f 287//287 324//324 288//288 +f 289//289 654//654 645//645 +f 324//324 287//287 654//654 +f 290//290 288//288 340//340 +f 288//288 290//290 287//287 +f 340//340 681//681 290//290 +f 292//292 681//681 340//340 +f 292//292 291//291 681//681 +f 292//292 727//727 291//291 +f 293//293 727//727 292//292 +f 727//727 293//293 724//724 +f 294//294 724//724 293//293 +f 724//724 294//294 725//725 +f 341//341 725//725 294//294 +f 725//725 341//341 295//295 +f 296//296 295//295 341//341 +f 295//295 296//296 718//718 +f 357//357 718//718 296//296 +f 718//718 357//357 700//700 +f 325//325 700//700 357//357 +f 700//700 325//325 297//297 +f 356//356 297//297 325//325 +f 297//297 356//356 298//298 +f 299//299 298//298 356//356 +f 319//319 300//300 299//299 +f 298//298 299//299 300//300 +f 280//280 281//281 331//331 +f 677//677 331//331 281//281 +f 331//331 677//677 344//344 +f 302//302 344//344 677//677 +f 344//344 302//302 301//301 +f 643//643 301//301 302//302 +f 301//301 643//643 303//303 +f 304//304 303//303 643//643 +f 303//303 304//304 332//332 +f 305//305 332//332 304//304 +f 332//332 305//305 306//306 +f 667//667 306//306 305//305 +f 306//306 667//667 261//261 +f 307//307 261//261 667//667 +f 261//261 307//307 308//308 +f 637//637 308//308 307//307 +f 636//636 308//308 637//637 +f 636//636 260//260 308//308 +f 309//309 260//260 636//636 +f 350//350 309//309 310//310 +f 309//309 350//350 260//260 +f 334//334 310//310 705//705 +f 311//311 705//705 317//317 +f 310//310 334//334 350//350 +f 312//312 317//317 318//318 +f 264//264 318//318 313//313 +f 705//705 311//311 334//334 +f 353//353 313//313 711//711 +f 354//354 711//711 314//314 +f 343//343 314//314 315//315 +f 360//360 315//315 666//666 +f 323//323 666//666 316//316 +f 317//317 312//312 311//311 +f 361//361 316//316 713//713 +f 300//300 319//319 732//732 +f 318//318 264//264 312//312 +f 321//321 732//732 319//319 +f 313//313 353//353 264//264 +f 732//732 321//321 735//735 +f 711//711 354//354 353//353 +f 320//320 735//735 321//321 +f 314//314 343//343 354//354 +f 735//735 320//320 716//716 +f 315//315 360//360 343//343 +f 322//322 716//716 320//320 +f 666//666 323//323 360//360 +f 716//716 322//322 713//713 +f 316//316 361//361 323//323 +f 351//351 713//713 322//322 +f 713//713 351//351 361//361 +f 324//324 275//275 288//288 +f 356//356 394//394 395//395 +f 325//325 358//358 326//326 +f 296//296 327//327 390//390 +f 294//294 389//389 327//327 +f 294//294 327//327 341//341 +f 328//328 323//323 329//329 +f 323//323 362//362 329//329 +f 369//369 273//273 346//346 +f 330//330 331//331 344//344 +f 373//373 301//301 366//366 +f 366//366 303//303 332//332 +f 366//366 301//301 303//303 +f 363//363 261//261 308//308 +f 333//333 334//334 378//378 +f 398//398 399//399 335//335 +f 335//335 266//266 283//283 +f 336//336 400//400 337//337 +f 337//337 400//400 338//338 +f 339//339 405//405 274//274 +f 277//277 405//405 339//339 +f 405//405 277//277 375//375 +f 279//279 263//263 289//289 +f 263//263 265//265 289//289 +f 288//288 271//271 340//340 +f 340//340 271//271 292//292 +f 321//321 393//393 392//392 +f 356//356 326//326 394//394 +f 319//319 393//393 321//321 +f 341//341 327//327 296//296 +f 294//294 359//359 389//389 +f 342//342 354//354 382//382 +f 360//360 323//323 328//328 +f 384//384 343//343 328//328 +f 373//373 344//344 301//301 +f 345//345 344//344 373//373 +f 346//346 280//280 331//331 +f 346//346 273//273 280//280 +f 347//347 306//306 261//261 +f 363//363 308//308 260//260 +f 348//348 312//312 349//349 +f 379//379 312//312 348//348 +f 350//350 334//334 333//333 +f 260//260 350//350 333//333 +f 398//398 335//335 282//282 +f 322//322 397//397 351//351 +f 397//397 322//322 352//352 +f 355//355 322//322 320//320 +f 322//322 355//355 352//352 +f 320//320 321//321 355//355 +f 299//299 393//393 319//319 +f 296//296 390//390 358//358 +f 292//292 359//359 293//293 +f 386//386 359//359 292//292 +f 353//353 354//354 342//342 +f 382//382 354//354 384//384 +f 354//354 343//343 384//384 +f 311//311 312//312 379//379 +f 321//321 392//392 355//355 +f 356//356 395//395 299//299 +f 299//299 395//395 393//393 +f 296//296 358//358 357//357 +f 357//357 358//358 325//325 +f 293//293 359//359 294//294 +f 343//343 360//360 328//328 +f 396//396 361//361 351//351 +f 361//361 396//396 362//362 +f 396//396 351//351 397//397 +f 323//323 361//361 362//362 +f 363//363 417//417 411//411 +f 417//417 363//363 272//272 +f 364//364 373//373 374//374 +f 373//373 364//364 345//345 +f 365//365 433//433 406//406 +f 433//433 365//365 347//347 +f 366//366 406//406 432//432 +f 406//406 366//366 365//365 +f 429//429 346//346 367//367 +f 346//346 429//429 369//369 +f 368//368 369//369 429//429 +f 369//369 368//368 375//375 +f 376//376 345//345 364//364 +f 345//345 376//376 330//330 +f 396//396 370//370 362//362 +f 370//370 396//396 371//371 +f 347//347 412//412 433//433 +f 412//412 347//347 372//372 +f 372//372 411//411 412//412 +f 411//411 372//372 363//363 +f 373//373 432//432 374//374 +f 432//432 373//373 366//366 +f 404//404 375//375 368//368 +f 375//375 404//404 405//405 +f 367//367 330//330 376//376 +f 330//330 367//367 346//346 +f 272//272 418//418 417//417 +f 418//418 272//272 333//333 +f 333//333 377//377 418//418 +f 377//377 333//333 378//378 +f 349//349 383//383 423//423 +f 383//383 349//349 342//342 +f 378//378 420//420 377//377 +f 420//420 378//378 379//379 +f 329//329 380//380 328//328 +f 380//380 329//329 381//381 +f 328//328 385//385 384//384 +f 385//385 328//328 380//380 +f 348//348 423//423 421//421 +f 423//423 348//348 349//349 +f 362//362 381//381 329//329 +f 381//381 362//362 370//370 +f 382//382 383//383 342//342 +f 383//383 382//382 426//426 +f 384//384 426//426 382//382 +f 426//426 384//384 385//385 +f 379//379 421//421 420//420 +f 421//421 379//379 348//348 +f 1541//1541 359//359 386//386 +f 1541//1541 389//389 359//359 +f 387//387 389//389 1541//1541 +f 327//327 387//387 388//388 +f 327//327 388//388 1536//1536 +f 387//387 327//327 389//389 +f 1536//1536 390//390 327//327 +f 1536//1536 358//358 390//390 +f 453//453 358//358 1536//1536 +f 358//358 453//453 326//326 +f 326//326 453//453 394//394 +f 355//355 391//391 352//352 +f 392//392 391//391 355//355 +f 393//393 391//391 392//392 +f 395//395 391//391 393//393 +f 391//391 395//395 453//453 +f 394//394 453//453 395//395 +f 397//397 1531//1531 396//396 +f 352//352 391//391 397//397 +f 397//397 391//391 1531//1531 +f 266//266 455//455 401//401 +f 274//274 455//455 268//268 +f 455//455 398//398 268//268 +f 455//455 399//399 398//398 +f 455//455 266//266 399//399 +f 401//401 267//267 266//266 +f 401//401 336//336 267//267 +f 401//401 400//400 336//336 +f 401//401 263//263 400//400 +f 401//401 265//265 263//263 +f 401//401 275//275 265//265 +f 401//401 270//270 275//275 +f 401//401 271//271 270//270 +f 271//271 401//401 386//386 +f 455//455 274//274 402//402 +f 402//402 274//274 405//405 +f 396//396 403//403 371//371 +f 403//403 396//396 1531//1531 +f 402//402 404//404 428//428 +f 404//404 402//402 405//405 +f 404//404 430//430 651//651 +f 406//406 674//674 430//430 +f 406//406 407//407 674//674 +f 406//406 678//678 407//407 +f 406//406 408//408 678//678 +f 413//413 433//433 412//412 +f 406//406 642//642 408//408 +f 406//406 409//409 642//642 +f 406//406 410//410 409//409 +f 433//433 413//413 410//410 +f 668//668 412//412 411//411 +f 412//412 668//668 413//413 +f 411//411 414//414 668//668 +f 417//417 414//414 411//411 +f 417//417 416//416 414//414 +f 417//417 415//415 416//416 +f 418//418 415//415 417//417 +f 415//415 418//418 419//419 +f 377//377 419//419 418//418 +f 419//419 377//377 706//706 +f 420//420 706//706 377//377 +f 706//706 420//420 649//649 +f 421//421 649//649 420//420 +f 649//649 421//421 422//422 +f 423//423 422//422 421//421 +f 422//422 423//423 424//424 +f 383//383 424//424 423//423 +f 424//424 383//383 427//427 +f 426//426 427//427 383//383 +f 385//385 425//425 426//426 +f 427//427 426//426 425//425 +f 435//435 439//439 1533//1533 +f 404//404 1533//1533 428//428 +f 663//663 1533//1533 404//404 +f 430//430 404//404 368//368 +f 430//430 368//368 429//429 +f 430//430 429//429 367//367 +f 430//430 367//367 376//376 +f 430//430 376//376 364//364 +f 404//404 431//431 663//663 +f 430//430 364//364 374//374 +f 430//430 374//374 432//432 +f 430//430 432//432 406//406 +f 410//410 406//406 433//433 +f 404//404 651//651 434//434 +f 404//404 434//434 431//431 +f 1533//1533 663//663 664//664 +f 1533//1533 664//664 647//647 +f 1533//1533 647//647 661//661 +f 435//435 1533//1533 661//661 +f 439//439 435//435 436//436 +f 440//440 439//439 436//436 +f 439//439 437//437 438//438 +f 439//439 440//440 437//437 +f 655//655 437//437 440//440 +f 437//437 655//655 441//441 +f 659//659 441//441 655//655 +f 658//658 441//441 659//659 +f 632//632 658//658 696//696 +f 658//658 632//632 441//441 +f 728//728 632//632 696//696 +f 442//442 728//728 443//443 +f 442//442 443//443 701//701 +f 634//634 701//701 702//702 +f 634//634 702//702 719//719 +f 444//444 719//719 720//720 +f 444//444 720//720 691//691 +f 444//444 691//691 445//445 +f 444//444 445//445 731//731 +f 444//444 731//731 447//447 +f 728//728 442//442 632//632 +f 371//371 447//447 736//736 +f 371//371 736//736 712//712 +f 425//425 385//385 446//446 +f 380//380 446//446 385//385 +f 446//446 380//380 448//448 +f 381//381 448//448 380//380 +f 447//447 371//371 444//444 +f 448//448 381//381 449//449 +f 370//370 449//449 381//381 +f 371//371 449//449 370//370 +f 449//449 371//371 640//640 +f 640//640 371//371 712//712 +f 719//719 444//444 634//634 +f 444//444 371//371 403//403 +f 701//701 634//634 442//442 +f 634//634 444//444 450//450 +f 1573//1573 450//450 444//444 +f 1573//1573 635//635 450//450 +f 635//635 1573//1573 1599//1599 +f 439//439 451//451 254//254 +f 451//451 439//439 627//627 +f 627//627 439//439 452//452 +f 452//452 439//439 438//438 +f 1778//1778 1578//1578 467//467 +f 1778//1778 1547//1547 1578//1578 +f 475//475 43//43 40//40 +f 1578//1578 43//43 467//467 +f 467//467 43//43 475//475 +f 453//453 444//444 391//391 +f 43//43 1578//1578 453//453 +f 453//453 1573//1573 444//444 +f 1573//1573 453//453 1578//1578 +f 1533//1533 1542//1542 455//455 +f 1533//1533 454//454 1542//1542 +f 439//439 454//454 1533//1533 +f 454//454 439//439 1539//1539 +f 455//455 1542//1542 401//401 +f 456//456 1772//1772 1777//1777 +f 456//456 1774//1774 1772//1772 +f 457//457 1532//1532 492//492 +f 464//464 1532//1532 458//458 +f 459//459 462//462 463//463 +f 1532//1532 463//463 460//460 +f 686//686 1532//1532 461//461 +f 687//687 463//463 686//686 +f 652//652 463//463 672//672 +f 462//462 459//459 501//501 +f 676//676 501//501 459//459 +f 653//653 512//512 676//676 +f 679//679 511//511 653//653 +f 512//512 653//653 511//511 +f 501//501 676//676 512//512 +f 459//459 463//463 652//652 +f 672//672 463//463 687//687 +f 1532//1532 686//686 463//463 +f 461//461 1532//1532 464//464 +f 1532//1532 465//465 458//458 +f 1532//1532 457//457 465//465 +f 492//492 657//657 457//457 +f 492//492 466//466 657//657 +f 492//492 680//680 466//466 +f 492//492 683//683 680//680 +f 492//492 697//697 683//683 +f 467//467 697//697 492//492 +f 697//697 467//467 729//729 +f 729//729 467//467 726//726 +f 726//726 467//467 703//703 +f 703//703 467//467 468//468 +f 468//468 467//467 721//721 +f 505//505 477//477 717//717 +f 477//477 470//470 491//491 +f 505//505 717//717 469//469 +f 477//477 514//514 470//470 +f 505//505 469//469 471//471 +f 477//477 472//472 514//514 +f 475//475 471//471 734//734 +f 477//477 521//521 472//472 +f 475//475 734//734 692//692 +f 477//477 473//473 521//521 +f 475//475 692//692 474//474 +f 477//477 523//523 473//473 +f 475//475 474//474 722//722 +f 477//477 476//476 523//523 +f 475//475 721//721 467//467 +f 1778//1778 492//492 1774//1774 +f 477//477 505//505 504//504 +f 477//477 504//504 476//476 +f 721//721 475//475 722//722 +f 1778//1778 1774//1774 456//456 +f 492//492 1778//1778 467//467 +f 471//471 475//475 505//505 +f 505//505 475//475 478//478 +f 511//511 679//679 479//479 +f 644//644 479//479 679//679 +f 479//479 644//644 507//507 +f 669//669 507//507 644//644 +f 507//507 669//669 508//508 +f 670//670 508//508 669//669 +f 508//508 670//670 497//497 +f 480//480 497//497 670//670 +f 497//497 480//480 498//498 +f 481//481 498//498 480//480 +f 498//498 481//481 483//483 +f 482//482 483//483 481//481 +f 483//483 482//482 494//494 +f 484//484 494//494 482//482 +f 485//485 494//494 484//484 +f 485//485 513//513 494//494 +f 486//486 513//513 485//485 +f 503//503 486//486 707//707 +f 486//486 503//503 513//513 +f 515//515 707//707 710//710 +f 491//491 710//710 708//708 +f 491//491 708//708 487//487 +f 491//491 487//487 689//689 +f 707//707 515//515 503//503 +f 491//491 689//689 488//488 +f 491//491 488//488 489//489 +f 491//491 489//489 695//695 +f 491//491 695//695 490//490 +f 491//491 490//490 641//641 +f 491//491 641//641 477//477 +f 710//710 491//491 515//515 +f 505//505 26//26 27//27 +f 26//26 505//505 478//478 +f 460//460 510//510 28//28 +f 510//510 460//460 463//463 +f 32//32 1532//1532 31//31 +f 492//492 32//32 493//493 +f 32//32 492//492 1532//1532 +f 494//494 525//525 495//495 +f 525//525 494//494 513//513 +f 605//605 507//507 621//621 +f 507//507 605//605 479//479 +f 491//491 496//496 516//516 +f 496//496 491//491 470//470 +f 497//497 620//620 617//617 +f 620//620 497//497 498//498 +f 508//508 617//617 622//622 +f 617//617 508//508 497//497 +f 500//500 512//512 499//499 +f 512//512 500//500 501//501 +f 509//509 501//501 500//500 +f 501//501 509//509 462//462 +f 502//502 479//479 605//605 +f 479//479 502//502 511//511 +f 503//503 528//528 597//597 +f 528//528 503//503 515//515 +f 505//505 518//518 504//504 +f 518//518 505//505 27//27 +f 476//476 524//524 523//523 +f 524//524 476//476 517//517 +f 498//498 506//506 620//620 +f 506//506 498//498 483//483 +f 483//483 495//495 506//506 +f 495//495 483//483 494//494 +f 507//507 622//622 621//621 +f 622//622 507//507 508//508 +f 510//510 462//462 509//509 +f 462//462 510//510 463//463 +f 499//499 511//511 502//502 +f 511//511 499//499 512//512 +f 513//513 597//597 525//525 +f 597//597 513//513 503//503 +f 514//514 519//519 609//609 +f 519//519 514//514 472//472 +f 515//515 516//516 528//528 +f 516//516 515//515 491//491 +f 470//470 609//609 496//496 +f 609//609 470//470 514//514 +f 504//504 517//517 476//476 +f 517//517 504//504 518//518 +f 521//521 519//519 472//472 +f 519//519 521//521 520//520 +f 473//473 520//520 521//521 +f 520//520 473//473 522//522 +f 523//523 522//522 473//473 +f 522//522 523//523 524//524 +f 525//525 550//550 495//495 +f 550//550 625//625 495//495 +f 597//597 552//552 550//550 +f 526//526 527//527 569//569 +f 528//528 599//599 597//597 +f 591//591 34//34 593//593 +f 612//612 604//604 583//583 +f 604//604 612//612 37//37 +f 603//603 585//585 577//577 +f 569//569 527//527 608//608 +f 519//519 557//557 600//600 +f 529//529 41//41 530//530 +f 585//585 601//601 584//584 +f 41//41 42//42 570//570 +f 530//530 41//41 570//570 +f 587//587 39//39 580//580 +f 586//586 38//38 587//587 +f 617//617 623//623 622//622 +f 592//592 33//33 560//560 +f 595//595 531//531 35//35 +f 516//516 599//599 528//528 +f 597//597 550//550 525//525 +f 516//516 532//532 598//598 +f 524//524 578//578 575//575 +f 524//524 575//575 556//556 +f 533//533 615//615 624//624 +f 615//615 533//533 534//534 +f 542//542 624//624 535//535 +f 673//673 534//534 533//533 +f 543//543 535//535 536//536 +f 534//534 673//673 619//619 +f 675//675 536//536 589//589 +f 688//688 619//619 673//673 +f 537//537 589//589 618//618 +f 619//619 688//688 540//540 +f 538//538 618//618 539//539 +f 665//665 540//540 688//688 +f 546//546 539//539 545//545 +f 540//540 665//665 558//558 +f 559//559 558//558 665//665 +f 541//541 545//545 623//623 +f 624//624 542//542 533//533 +f 535//535 543//543 542//542 +f 536//536 675//675 543//543 +f 589//589 537//537 675//675 +f 618//618 538//538 537//537 +f 544//544 623//623 548//548 +f 539//539 546//546 538//538 +f 545//545 541//541 546//546 +f 547//547 548//548 626//626 +f 623//623 544//544 541//541 +f 548//548 547//547 544//544 +f 549//549 626//626 625//625 +f 626//626 549//549 547//547 +f 625//625 638//638 549//549 +f 550//550 638//638 625//625 +f 550//550 639//639 638//638 +f 550//550 551//551 639//639 +f 552//552 551//551 550//550 +f 551//551 552//552 553//553 +f 599//599 553//553 552//552 +f 553//553 599//599 554//554 +f 598//598 554//554 599//599 +f 554//554 598//598 709//709 +f 532//532 709//709 598//598 +f 709//709 532//532 555//555 +f 610//610 555//555 532//532 +f 555//555 610//610 690//690 +f 600//600 690//690 610//610 +f 690//690 600//600 698//698 +f 557//557 698//698 600//600 +f 698//698 557//557 699//699 +f 556//556 699//699 557//557 +f 575//575 694//694 556//556 +f 699//699 556//556 694//694 +f 558//558 559//559 560//560 +f 648//648 560//560 559//559 +f 560//560 648//648 592//592 +f 662//662 592//592 648//648 +f 592//592 662//662 591//591 +f 563//563 591//591 662//662 +f 591//591 563//563 561//561 +f 562//562 561//561 563//563 +f 561//561 562//562 594//594 +f 564//564 594//594 562//562 +f 594//594 564//564 596//596 +f 656//656 596//596 564//564 +f 596//596 656//656 595//595 +f 565//565 595//595 656//656 +f 595//595 565//565 566//566 +f 660//660 566//566 565//565 +f 682//682 566//566 660//660 +f 682//682 569//569 566//566 +f 567//567 569//569 682//682 +f 568//568 567//567 730//730 +f 567//567 568//568 569//569 +f 570//570 730//730 571//571 +f 530//530 571//571 572//572 +f 730//730 570//570 568//568 +f 529//529 572//572 723//723 +f 573//573 723//723 574//574 +f 571//571 530//530 570//570 +f 584//584 574//574 693//693 +f 577//577 693//693 579//579 +f 613//613 579//579 733//733 +f 580//580 733//733 581//581 +f 587//587 581//581 582//582 +f 572//572 529//529 530//530 +f 588//588 582//582 714//714 +f 694//694 575//575 704//704 +f 723//723 573//573 529//529 +f 578//578 704//704 575//575 +f 574//574 584//584 573//573 +f 704//704 578//578 576//576 +f 693//693 577//577 584//584 +f 611//611 576//576 578//578 +f 579//579 613//613 577//577 +f 576//576 611//611 715//715 +f 733//733 580//580 613//613 +f 583//583 715//715 611//611 +f 581//581 587//587 580//580 +f 715//715 583//583 714//714 +f 582//582 588//588 587//587 +f 604//604 714//714 583//583 +f 714//714 604//604 588//588 +f 584//584 601//601 573//573 +f 602//602 41//41 529//529 +f 577//577 585//585 584//584 +f 38//38 39//39 587//587 +f 39//39 614//614 613//613 +f 586//586 587//587 588//588 +f 618//618 589//589 502//502 +f 548//548 623//623 620//620 +f 534//534 590//590 616//616 +f 590//590 534//534 619//619 +f 558//558 606//606 540//540 +f 591//591 593//593 592//592 +f 592//592 593//593 607//607 +f 594//594 36//36 34//34 +f 594//594 34//34 561//561 +f 595//595 35//35 596//596 +f 595//595 608//608 531//531 +f 597//597 599//599 552//552 +f 516//516 598//598 599//599 +f 519//519 600//600 609//609 +f 609//609 532//532 496//496 +f 496//496 532//532 516//516 +f 517//517 518//518 578//578 +f 517//517 578//578 524//524 +f 522//522 556//556 557//557 +f 524//524 556//556 522//522 +f 522//522 557//557 520//520 +f 520//520 557//557 519//519 +f 42//42 526//526 570//570 +f 570//570 526//526 568//568 +f 573//573 601//601 529//529 +f 601//601 602//602 529//529 +f 580//580 39//39 613//613 +f 614//614 603//603 577//577 +f 604//604 586//586 588//588 +f 586//586 604//604 37//37 +f 605//605 618//618 502//502 +f 535//535 509//509 500//500 +f 622//622 539//539 621//621 +f 540//540 606//606 30//30 +f 540//540 30//30 590//590 +f 592//592 607//607 33//33 +f 596//596 35//35 594//594 +f 594//594 35//35 36//36 +f 569//569 608//608 566//566 +f 566//566 608//608 595//595 +f 609//609 610//610 532//532 +f 609//609 600//600 610//610 +f 518//518 611//611 578//578 +f 27//27 611//611 518//518 +f 611//611 27//27 583//583 +f 583//583 27//27 612//612 +f 568//568 526//526 569//569 +f 613//613 614//614 577//577 +f 499//499 535//535 500//500 +f 615//615 616//616 29//29 +f 616//616 615//615 534//534 +f 620//620 623//623 617//617 +f 539//539 618//618 621//621 +f 619//619 540//540 590//590 +f 560//560 33//33 606//606 +f 560//560 606//606 558//558 +f 561//561 34//34 591//591 +f 536//536 535//535 499//499 +f 502//502 589//589 499//499 +f 495//495 626//626 506//506 +f 506//506 626//626 620//620 +f 621//621 618//618 605//605 +f 545//545 539//539 622//622 +f 623//623 545//545 622//622 +f 589//589 536//536 499//499 +f 510//510 615//615 29//29 +f 624//624 510//510 509//509 +f 510//510 624//624 615//615 +f 535//535 624//624 509//509 +f 625//625 626//626 495//495 +f 626//626 548//548 620//620 +f 627//627 113//113 629//629 +f 113//113 627//627 452//452 +f 438//438 115//115 630//630 +f 115//115 438//438 437//437 +f 254//254 112//112 628//628 +f 112//112 254//254 451//451 +f 451//451 629//629 112//112 +f 629//629 451//451 627//627 +f 452//452 630//630 113//113 +f 630//630 452//452 438//438 +f 442//442 631//631 118//118 +f 631//631 442//442 634//634 +f 437//437 116//116 115//115 +f 116//116 437//437 441//441 +f 441//441 633//633 116//116 +f 633//633 441//441 632//632 +f 632//632 118//118 633//633 +f 118//118 632//632 442//442 +f 450//450 120//120 119//119 +f 120//120 450//450 635//635 +f 634//634 119//119 631//631 +f 119//119 634//634 450//450 +f 635//635 1593//1593 120//120 +f 1593//1593 635//635 1599//1599 +f 636//636 414//414 416//416 +f 414//414 636//636 637//637 +f 485//485 638//638 639//639 +f 638//638 485//485 484//484 +f 685//685 434//434 276//276 +f 434//434 685//685 431//431 +f 687//687 673//673 672//672 +f 673//673 687//687 688//688 +f 640//640 316//316 449//449 +f 316//316 640//640 713//713 +f 715//715 641//641 576//576 +f 641//641 715//715 477//477 +f 302//302 642//642 643//643 +f 642//642 302//302 408//408 +f 644//644 546//546 669//669 +f 546//546 644//644 538//538 +f 286//286 436//436 435//435 +f 436//436 286//286 645//645 +f 465//465 562//562 563//563 +f 562//562 465//465 457//457 +f 646//646 664//664 285//285 +f 664//664 646//646 647//647 +f 464//464 559//559 461//461 +f 559//559 464//464 648//648 +f 318//318 649//649 422//422 +f 649//649 318//318 317//317 +f 487//487 709//709 555//555 +f 709//709 487//487 708//708 +f 667//667 410//410 413//413 +f 410//410 667//667 305//305 +f 481//481 544//544 547//547 +f 544//544 481//481 480//480 +f 650//650 674//674 278//278 +f 674//674 650//650 430//430 +f 459//459 543//543 676//676 +f 543//543 459//459 542//542 +f 671//671 430//430 650//650 +f 430//430 671//671 651//651 +f 652//652 542//542 459//459 +f 542//542 652//652 533//533 +f 281//281 678//678 677//677 +f 678//678 281//281 407//407 +f 653//653 537//537 679//679 +f 537//537 653//653 675//675 +f 654//654 655//655 440//440 +f 655//655 654//654 287//287 +f 657//657 656//656 564//564 +f 656//656 657//657 466//466 +f 645//645 440//440 436//436 +f 440//440 645//645 654//654 +f 457//457 564//564 562//562 +f 564//564 457//457 657//657 +f 290//290 658//658 659//659 +f 658//658 290//290 681//681 +f 680//680 660//660 565//565 +f 660//660 680//680 683//683 +f 286//286 661//661 684//684 +f 661//661 286//286 435//435 +f 465//465 662//662 458//458 +f 662//662 465//465 563//563 +f 285//285 663//663 284//284 +f 663//663 285//285 664//664 +f 461//461 665//665 686//686 +f 665//665 461//461 559//559 +f 449//449 666//666 448//448 +f 666//666 449//449 316//316 +f 576//576 490//490 704//704 +f 490//490 576//576 641//641 +f 307//307 413//413 668//668 +f 413//413 307//307 667//667 +f 482//482 547//547 549//549 +f 547//547 482//482 481//481 +f 637//637 668//668 414//414 +f 668//668 637//637 307//307 +f 484//484 549//549 638//638 +f 549//549 484//484 482//482 +f 304//304 642//642 409//409 +f 642//642 304//304 643//643 +f 670//670 546//546 541//541 +f 546//546 670//670 669//669 +f 305//305 409//409 410//410 +f 409//409 305//305 304//304 +f 480//480 541//541 544//544 +f 541//541 480//480 670//670 +f 276//276 651//651 671//671 +f 651//651 276//276 434//434 +f 672//672 533//533 652//652 +f 533//533 672//672 673//673 +f 278//278 407//407 281//281 +f 407//407 278//278 674//674 +f 676//676 675//675 653//653 +f 675//675 676//676 543//543 +f 677//677 408//408 302//302 +f 408//408 677//677 678//678 +f 679//679 538//538 644//644 +f 538//538 679//679 537//537 +f 287//287 659//659 655//655 +f 659//659 287//287 290//290 +f 466//466 565//565 656//656 +f 565//565 466//466 680//680 +f 681//681 696//696 658//658 +f 696//696 681//681 291//291 +f 683//683 682//682 660//660 +f 682//682 683//683 697//697 +f 684//684 647//647 646//646 +f 647//647 684//684 661//661 +f 458//458 648//648 464//464 +f 648//648 458//458 662//662 +f 284//284 431//431 685//685 +f 431//431 284//284 663//663 +f 686//686 688//688 687//687 +f 688//688 686//686 665//665 +f 309//309 416//416 415//415 +f 416//416 309//309 636//636 +f 486//486 639//639 551//551 +f 639//639 486//486 485//485 +f 313//313 422//422 424//424 +f 422//422 313//313 318//318 +f 689//689 555//555 690//690 +f 555//555 689//689 487//487 +f 691//691 298//298 445//445 +f 298//298 691//691 297//297 +f 693//693 692//692 579//579 +f 692//692 693//693 474//474 +f 446//446 314//314 425//425 +f 314//314 446//446 315//315 +f 694//694 489//489 699//699 +f 489//489 694//694 695//695 +f 291//291 728//728 696//696 +f 728//728 291//291 727//727 +f 697//697 567//567 682//682 +f 567//567 697//697 729//729 +f 425//425 711//711 427//427 +f 711//711 425//425 314//314 +f 699//699 488//488 698//698 +f 488//488 699//699 489//489 +f 720//720 297//297 691//691 +f 297//297 720//720 700//700 +f 574//574 474//474 693//693 +f 474//474 574//574 722//722 +f 725//725 702//702 701//701 +f 702//702 725//725 295//295 +f 703//703 572//572 571//571 +f 572//572 703//703 468//468 +f 448//448 315//315 446//446 +f 315//315 448//448 666//666 +f 704//704 695//695 694//694 +f 695//695 704//704 490//490 +f 705//705 419//419 706//706 +f 419//419 705//705 310//310 +f 710//710 553//553 554//554 +f 553//553 710//710 707//707 +f 317//317 706//706 649//649 +f 706//706 317//317 705//705 +f 708//708 554//554 709//709 +f 554//554 708//708 710//710 +f 310//310 415//415 419//419 +f 415//415 310//310 309//309 +f 707//707 551//551 553//553 +f 551//551 707//707 486//486 +f 427//427 313//313 424//424 +f 313//313 427//427 711//711 +f 698//698 689//689 690//690 +f 689//689 698//698 488//488 +f 712//712 713//713 640//640 +f 713//713 712//712 716//716 +f 714//714 477//477 715//715 +f 477//477 714//714 717//717 +f 736//736 716//716 712//712 +f 716//716 736//736 735//735 +f 582//582 717//717 714//714 +f 717//717 582//582 469//469 +f 718//718 720//720 719//719 +f 720//720 718//718 700//700 +f 721//721 574//574 723//723 +f 574//574 721//721 722//722 +f 295//295 719//719 702//702 +f 719//719 295//295 718//718 +f 468//468 723//723 572//572 +f 723//723 468//468 721//721 +f 724//724 701//701 443//443 +f 701//701 724//724 725//725 +f 726//726 571//571 730//730 +f 571//571 726//726 703//703 +f 727//727 443//443 728//728 +f 443//443 727//727 724//724 +f 729//729 730//730 567//567 +f 730//730 729//729 726//726 +f 731//731 732//732 447//447 +f 732//732 731//731 300//300 +f 733//733 471//471 581//581 +f 471//471 733//733 734//734 +f 445//445 300//300 731//731 +f 300//300 445//445 298//298 +f 579//579 734//734 733//733 +f 734//734 579//579 692//692 +f 447//447 735//735 736//736 +f 735//735 447//447 732//732 +f 581//581 469//469 582//582 +f 469//469 581//581 471//471 +f 846//846 737//737 773//773 +f 737//737 846//846 738//738 +f 773//773 737//737 772//772 +f 847//847 739//739 1669//1669 +f 71//71 739//739 847//847 +f 739//739 71//71 775//775 +f 740//740 742//742 741//741 +f 742//742 740//740 804//804 +f 48//48 782//782 781//781 +f 782//782 48//48 743//743 +f 746//746 744//744 745//745 +f 1709//1709 746//746 114//114 +f 746//746 1709//1709 744//744 +f 1680//1680 768//768 1681//1681 +f 768//768 1680//1680 64//64 +f 1758//1758 87//87 1760//1760 +f 87//87 1758//1758 756//756 +f 68//68 747//747 777//777 +f 747//747 68//68 1736//1736 +f 1753//1753 100//100 1754//1754 +f 100//100 1753//1753 789//789 +f 791//791 1743//1743 801//801 +f 1743//1743 791//791 1745//1745 +f 758//758 748//748 762//762 +f 748//748 758//758 759//759 +f 760//760 1741//1741 49//49 +f 1741//1741 760//760 1742//1742 +f 1765//1765 778//778 749//749 +f 778//778 1765//1765 1766//1766 +f 750//750 779//779 771//771 +f 779//779 750//750 751//751 +f 1747//1747 752//752 783//783 +f 752//752 1747//1747 85//85 +f 753//753 754//754 784//784 +f 754//754 753//753 755//755 +f 757//757 756//756 1758//1758 +f 756//756 757//757 86//86 +f 46//46 1736//1736 68//68 +f 1736//1736 46//46 1735//1735 +f 787//787 103//103 102//102 +f 103//103 787//787 1757//1757 +f 51//51 1746//1746 788//788 +f 1746//1746 51//51 52//52 +f 1752//1752 759//759 758//758 +f 759//759 1752//1752 800//800 +f 802//802 1742//1742 760//760 +f 1742//1742 802//802 803//803 +f 762//762 761//761 1751//1751 +f 761//761 762//762 748//748 +f 49//49 1740//1740 805//805 +f 1740//1740 49//49 1741//1741 +f 109//109 811//811 96//96 +f 811//811 109//109 809//809 +f 763//763 765//765 764//764 +f 765//765 763//763 78//78 +f 745//745 766//766 746//746 +f 766//766 745//745 767//767 +f 1681//1681 65//65 819//819 +f 65//65 1681//1681 768//768 +f 91//91 769//769 749//749 +f 774//774 769//769 91//91 +f 769//769 774//774 770//770 +f 749//749 769//769 1765//1765 +f 776//776 1771//1771 1770//1770 +f 72//72 1771//1771 776//776 +f 72//72 771//771 1771//1771 +f 771//771 72//72 750//750 +f 772//772 91//91 773//773 +f 91//91 772//772 774//774 +f 71//71 776//776 775//775 +f 776//776 71//71 72//72 +f 1762//1762 87//87 88//88 +f 87//87 1762//1762 1760//1760 +f 780//780 747//747 1737//1737 +f 747//747 780//780 777//777 +f 1766//1766 88//88 778//778 +f 88//88 1766//1766 1762//1762 +f 751//751 1737//1737 779//779 +f 1737//1737 751//751 780//780 +f 1748//1748 85//85 1747//1747 +f 85//85 1748//1748 98//98 +f 44//44 755//755 753//753 +f 755//755 44//44 1734//1734 +f 741//741 98//98 1748//1748 +f 98//98 741//741 742//742 +f 781//781 1734//1734 44//44 +f 1734//1734 781//781 782//782 +f 783//783 86//86 757//757 +f 86//86 783//783 752//752 +f 784//784 1735//1735 46//46 +f 1735//1735 784//784 754//754 +f 1707//1707 105//105 794//794 +f 105//105 1707//1707 785//785 +f 795//795 786//786 796//796 +f 786//786 795//795 799//799 +f 1755//1755 102//102 790//790 +f 102//102 1755//1755 787//787 +f 50//50 788//788 792//792 +f 788//788 50//50 51//51 +f 1753//1753 790//790 789//789 +f 790//790 1753//1753 1755//1755 +f 791//791 792//792 1745//1745 +f 792//792 791//791 50//50 +f 1757//1757 794//794 103//103 +f 793//793 794//794 1757//1757 +f 1707//1707 793//793 1767//1767 +f 793//793 1707//1707 794//794 +f 1746//1746 52//52 1768//1768 +f 1768//1768 796//796 1689//1689 +f 795//795 1768//1768 52//52 +f 1768//1768 795//795 796//796 +f 1714//1714 105//105 785//785 +f 105//105 1714//1714 104//104 +f 104//104 1714//1714 797//797 +f 53//53 798//798 799//799 +f 798//798 53//53 1664//1664 +f 786//786 799//799 798//798 +f 1754//1754 800//800 1752//1752 +f 800//800 1754//1754 100//100 +f 801//801 803//803 802//802 +f 803//803 801//801 1743//1743 +f 1751//1751 804//804 740//740 +f 804//804 1751//1751 761//761 +f 805//805 743//743 48//48 +f 743//743 805//805 1740//1740 +f 111//111 1704//1704 110//110 +f 1704//1704 111//111 825//825 +f 60//60 1678//1678 806//806 +f 1678//1678 60//60 807//807 +f 808//808 809//809 109//109 +f 809//809 808//808 1732//1732 +f 1732//1732 808//808 1703//1703 +f 810//810 764//764 1677//1677 +f 810//810 1677//1677 833//833 +f 764//764 810//810 763//763 +f 96//96 1731//1731 834//834 +f 1731//1731 96//96 811//811 +f 78//78 1687//1687 765//765 +f 1687//1687 78//78 77//77 +f 836//836 1675//1675 812//812 +f 836//836 1710//1710 1675//1675 +f 1710//1710 836//836 835//835 +f 813//813 1700//1700 1686//1686 +f 813//813 839//839 1700//1700 +f 839//839 813//813 838//838 +f 815//815 814//814 95//95 +f 814//814 815//815 1721//1721 +f 817//817 816//816 840//840 +f 816//816 817//817 79//79 +f 767//767 818//818 766//766 +f 818//818 767//767 1729//1729 +f 819//819 66//66 820//820 +f 66//66 819//819 65//65 +f 822//822 821//821 848//848 +f 821//821 822//822 852//852 +f 824//824 823//823 854//854 +f 823//823 824//824 850//850 +f 851//851 825//825 111//111 +f 825//825 851//851 1706//1706 +f 853//853 60//60 806//806 +f 60//60 853//853 61//61 +f 827//827 826//826 107//107 +f 826//826 827//827 1673//1673 +f 58//58 1696//1696 828//828 +f 1696//1696 58//58 1697//1697 +f 1724//1724 107//107 108//108 +f 1726//1726 107//107 1724//1724 +f 107//107 1726//1726 827//827 +f 828//828 829//829 57//57 +f 829//829 828//828 1696//1696 +f 831//831 106//106 830//830 +f 106//106 831//831 832//832 +f 857//857 1665//1665 55//55 +f 1665//1665 857//857 856//856 +f 797//797 830//830 104//104 +f 830//830 797//797 831//831 +f 55//55 1664//1664 53//53 +f 1664//1664 55//55 1665//1665 +f 110//110 1703//1703 808//808 +f 1703//1703 110//110 1704//1704 +f 807//807 833//833 1678//1678 +f 833//833 807//807 810//810 +f 834//834 835//835 836//836 +f 835//835 834//834 837//837 +f 837//837 834//834 1731//1731 +f 77//77 1686//1686 1687//1687 +f 1686//1686 77//77 813//813 +f 812//812 1721//1721 815//815 +f 812//812 1722//1722 1721//1721 +f 1722//1722 812//812 1675//1675 +f 838//838 840//840 839//839 +f 840//840 838//838 817//817 +f 841//841 1717//1717 92//92 +f 1717//1717 841//841 1718//1718 +f 74//74 842//842 845//845 +f 842//842 74//74 843//843 +f 95//95 1718//1718 841//841 +f 95//95 844//844 1718//1718 +f 844//844 95//95 814//814 +f 79//79 1671//1671 816//816 +f 79//79 845//845 1671//1671 +f 845//845 79//79 74//74 +f 92//92 738//738 846//846 +f 738//738 92//92 1717//1717 +f 843//843 1669//1669 842//842 +f 1669//1669 843//843 847//847 +f 848//848 849//849 822//822 +f 1729//1729 848//848 818//818 +f 848//848 1729//1729 849//849 +f 1679//1679 850//850 824//824 +f 820//820 850//850 1679//1679 +f 850//850 820//820 66//66 +f 852//852 851//851 821//821 +f 851//851 852//852 1706//1706 +f 854//854 61//61 853//853 +f 61//61 854//854 823//823 +f 1673//1673 114//114 826//826 +f 1674//1674 114//114 1673//1673 +f 114//114 1674//1674 1709//1709 +f 64//64 1697//1697 58//58 +f 1697//1697 64//64 1698//1698 +f 1698//1698 64//64 1680//1680 +f 832//832 108//108 106//106 +f 855//855 108//108 832//832 +f 108//108 855//855 1724//1724 +f 57//57 856//856 857//857 +f 856//856 57//57 858//858 +f 858//858 57//57 829//829 +f 860//860 859//859 863//863 +f 860//860 863//863 1744//1744 +f 859//859 860//860 54//54 +f 1548//1548 101//101 861//861 +f 101//101 1548//1548 862//862 +f 862//862 1548//1548 232//232 +f 863//863 45//45 13//13 +f 45//45 863//863 859//859 +f 101//101 1749//1749 11//11 +f 1749//1749 101//101 862//862 +f 81//81 865//865 864//864 +f 865//865 81//81 123//123 +f 866//866 123//123 81//81 +f 213//213 81//81 867//867 +f 81//81 213//213 866//866 +f 123//123 866//866 122//122 +f 117//117 1022//1022 124//124 +f 117//117 1021//1021 1022//1022 +f 117//117 868//868 1021//1021 +f 117//117 1108//1108 868//868 +f 117//117 1059//1059 1108//1108 +f 117//117 869//869 1059//1059 +f 117//117 1054//1054 869//869 +f 117//117 870//870 1054//1054 +f 117//117 871//871 870//870 +f 117//117 1068//1068 871//871 +f 117//117 872//872 1068//1068 +f 117//117 1063//1063 872//872 +f 117//117 873//873 1063//1063 +f 874//874 873//873 117//117 +f 873//873 874//874 1065//1065 +f 1075//1075 874//874 890//890 +f 875//875 874//874 1075//1075 +f 1039//1039 874//874 875//875 +f 876//876 874//874 1039//1039 +f 877//877 874//874 876//876 +f 878//878 874//874 877//877 +f 1031//1031 874//874 878//878 +f 879//879 874//874 1031//1031 +f 881//881 874//874 879//879 +f 880//880 874//874 881//881 +f 882//882 874//874 880//880 +f 1065//1065 874//874 882//882 +f 1117//1117 124//124 1022//1022 +f 883//883 124//124 1117//1117 +f 884//884 124//124 883//883 +f 885//885 124//124 884//884 +f 1116//1116 124//124 885//885 +f 886//886 124//124 1116//1116 +f 1114//1114 124//124 886//886 +f 1045//1045 124//124 1114//1114 +f 887//887 124//124 1045//1045 +f 1112//1112 124//124 887//887 +f 888//888 124//124 1112//1112 +f 889//889 124//124 888//888 +f 891//891 889//889 1026//1026 +f 891//891 1026//1026 894//894 +f 891//891 890//890 874//874 +f 890//890 891//891 1023//1023 +f 1023//1023 891//891 892//892 +f 889//889 891//891 124//124 +f 893//893 891//891 894//894 +f 895//895 891//891 893//893 +f 1093//1093 891//891 895//895 +f 896//896 891//891 1093//1093 +f 897//897 891//891 896//896 +f 898//898 891//891 897//897 +f 899//899 891//891 898//898 +f 1052//1052 891//891 899//899 +f 892//892 891//891 1052//1052 +f 904//904 874//874 900//900 +f 874//874 904//904 891//891 +f 904//904 905//905 952//952 +f 905//905 904//904 900//900 +f 902//902 121//121 84//84 +f 121//121 902//902 901//901 +f 84//84 903//903 902//902 +f 891//891 903//903 124//124 +f 124//124 903//903 84//84 +f 946//946 904//904 952//952 +f 946//946 891//891 904//904 +f 903//903 891//891 946//946 +f 900//900 953//953 905//905 +f 953//953 874//874 906//906 +f 874//874 953//953 900//900 +f 906//906 121//121 901//901 +f 906//906 117//117 121//121 +f 117//117 906//906 874//874 +f 940//940 907//907 927//927 +f 940//940 1161//1161 907//907 +f 940//940 1160//1160 1161//1161 +f 940//940 1210//1210 1160//1160 +f 940//940 908//908 1210//1210 +f 940//940 909//909 908//908 +f 940//940 910//910 909//909 +f 940//940 911//911 910//910 +f 940//940 1171//1171 911//911 +f 940//940 912//912 1171//1171 +f 940//940 1132//1132 912//912 +f 940//940 1213//1213 1132//1132 +f 940//940 913//913 1213//1213 +f 940//940 914//914 913//913 +f 933//933 914//914 940//940 +f 914//914 933//933 915//915 +f 916//916 933//933 932//932 +f 917//917 933//933 916//916 +f 1139//1139 933//933 917//917 +f 918//918 933//933 1139//1139 +f 1177//1177 933//933 918//918 +f 919//919 933//933 1177//1177 +f 920//920 933//933 919//919 +f 1142//1142 933//933 920//920 +f 921//921 933//933 1142//1142 +f 922//922 933//933 921//921 +f 915//915 933//933 922//922 +f 923//923 927//927 907//907 +f 924//924 927//927 923//923 +f 1192//1192 927//927 924//924 +f 925//925 927//927 1192//1192 +f 926//926 927//927 925//925 +f 928//928 927//927 926//926 +f 1218//1218 927//927 928//928 +f 1190//1190 927//927 1218//1218 +f 1148//1148 927//927 1190//1190 +f 1187//1187 927//927 1148//1148 +f 929//929 927//927 1187//1187 +f 930//930 927//927 929//929 +f 931//931 927//927 930//930 +f 80//80 931//931 1201//1201 +f 80//80 1201//1201 1200//1200 +f 80//80 932//932 933//933 +f 932//932 80//80 1120//1120 +f 1120//1120 80//80 1207//1207 +f 1207//1207 80//80 934//934 +f 934//934 80//80 1130//1130 +f 1130//1130 80//80 1204//1204 +f 931//931 80//80 927//927 +f 1197//1197 80//80 1200//1200 +f 1198//1198 80//80 1197//1197 +f 1156//1156 80//80 1198//1198 +f 935//935 80//80 1156//1156 +f 1204//1204 80//80 935//935 +f 936//936 942//942 944//944 +f 942//942 936//936 1000//1000 +f 945//945 937//937 993//993 +f 937//937 945//945 938//938 +f 938//938 939//939 937//937 +f 940//940 939//939 933//933 +f 933//933 939//939 938//938 +f 941//941 942//942 1000//1000 +f 941//941 940//940 942//942 +f 939//939 940//940 941//941 +f 927//927 942//942 940//940 +f 942//942 927//927 944//944 +f 944//944 943//943 936//936 +f 943//943 927//927 995//995 +f 927//927 943//943 944//944 +f 995//995 945//945 993//993 +f 995//995 80//80 945//945 +f 80//80 995//995 927//927 +f 946//946 947//947 903//903 +f 947//947 946//946 948//948 +f 958//958 906//906 959//959 +f 906//906 958//958 953//953 +f 981//981 949//949 950//950 +f 957//957 905//905 958//958 +f 950//950 905//905 957//957 +f 951//951 950//950 949//949 +f 951//951 949//949 971//971 +f 950//950 951//951 905//905 +f 951//951 952//952 905//905 +f 954//954 952//952 951//951 +f 948//948 952//952 954//954 +f 952//952 948//948 946//946 +f 958//958 905//905 953//953 +f 954//954 955//955 962//962 +f 955//955 954//954 951//951 +f 950//950 956//956 960//960 +f 956//956 950//950 957//957 +f 958//958 956//956 957//957 +f 956//956 958//958 959//959 +f 903//903 947//947 902//902 +f 901//901 959//959 906//906 +f 959//959 901//901 956//956 +f 901//901 960//960 956//956 +f 960//960 961//961 974//974 +f 955//955 960//960 901//901 +f 960//960 955//955 961//961 +f 902//902 955//955 901//901 +f 902//902 962//962 955//955 +f 962//962 902//902 947//947 +f 961//961 955//955 963//963 +f 947//947 954//954 962//962 +f 954//954 947//947 948//948 +f 963//963 965//965 961//961 +f 963//963 964//964 965//965 +f 963//963 1092//1092 964//964 +f 963//963 966//966 1092//1092 +f 963//963 968//968 966//966 +f 963//963 967//967 968//968 +f 963//963 1086//1086 967//967 +f 963//963 1089//1089 1086//1086 +f 963//963 969//969 1089//1089 +f 963//963 970//970 969//969 +f 963//963 1081//1081 970//970 +f 963//963 1083//1083 1081//1081 +f 963//963 1098//1098 1083//1083 +f 971//971 1098//1098 963//963 +f 971//971 1099//1099 1098//1098 +f 971//971 1047//1047 1099//1099 +f 971//971 1095//1095 1047//1047 +f 971//971 1096//1096 1095//1095 +f 971//971 1050//1050 1096//1096 +f 971//971 972//972 1050//1050 +f 971//971 1102//1102 972//972 +f 971//971 1100//1100 1102//1102 +f 971//971 973//973 1100//1100 +f 971//971 1106//1106 973//973 +f 971//971 1104//1104 1106//1106 +f 1104//1104 971//971 949//949 +f 975//975 974//974 961//961 +f 1053//1053 974//974 975//975 +f 976//976 974//974 1053//1053 +f 1061//1061 974//974 976//976 +f 1060//1060 974//974 1061//1061 +f 977//977 974//974 1060//1060 +f 1056//1056 974//974 977//977 +f 978//978 974//974 1056//1056 +f 979//979 974//974 978//978 +f 1037//1037 974//974 979//979 +f 980//980 974//974 1037//1037 +f 1067//1067 974//974 980//980 +f 1066//1066 974//974 1067//1067 +f 1066//1066 981//981 974//974 +f 1080//1080 981//981 1066//1066 +f 1043//1043 981//981 1080//1080 +f 982//982 981//981 1043//1043 +f 983//983 981//981 982//982 +f 1076//1076 981//981 983//983 +f 985//985 981//981 1076//1076 +f 984//984 981//981 985//985 +f 1040//1040 981//981 984//984 +f 1041//1041 981//981 1040//1040 +f 1074//1074 981//981 1041//1041 +f 986//986 981//981 1074//1074 +f 981//981 986//986 949//949 +f 955//955 971//971 963//963 +f 971//971 955//955 951//951 +f 950//950 974//974 981//981 +f 974//974 950//950 960//960 +f 995//995 987//987 943//943 +f 987//987 995//995 992//992 +f 990//990 941//941 999//999 +f 941//941 990//990 939//939 +f 1018//1018 1012//1012 988//988 +f 989//989 937//937 990//990 +f 988//988 937//937 989//989 +f 991//991 988//988 1012//1012 +f 991//991 1012//1012 1006//1006 +f 988//988 991//991 937//937 +f 991//991 993//993 937//937 +f 994//994 993//993 991//991 +f 992//992 993//993 994//994 +f 993//993 992//992 995//995 +f 990//990 937//937 939//939 +f 994//994 1020//1020 996//996 +f 1020//1020 994//994 991//991 +f 988//988 998//998 997//997 +f 998//998 988//988 989//989 +f 990//990 998//998 989//989 +f 998//998 990//990 999//999 +f 943//943 987//987 936//936 +f 1000//1000 999//999 941//941 +f 999//999 1000//1000 998//998 +f 1000//1000 997//997 998//998 +f 997//997 1184//1184 1015//1015 +f 1020//1020 997//997 1000//1000 +f 997//997 1020//1020 1184//1184 +f 936//936 1020//1020 1000//1000 +f 936//936 996//996 1020//1020 +f 996//996 936//936 987//987 +f 1184//1184 1020//1020 1004//1004 +f 987//987 994//994 996//996 +f 994//994 987//987 992//992 +f 1004//1004 1185//1185 1184//1184 +f 1004//1004 1224//1224 1185//1185 +f 1004//1004 1193//1193 1224//1224 +f 1004//1004 1001//1001 1193//1193 +f 1004//1004 1002//1002 1001//1001 +f 1004//1004 1220//1220 1002//1002 +f 1004//1004 1003//1003 1220//1220 +f 1004//1004 1151//1151 1003//1003 +f 1004//1004 1188//1188 1151//1151 +f 1004//1004 1189//1189 1188//1188 +f 1004//1004 1005//1005 1189//1189 +f 1004//1004 1121//1121 1005//1005 +f 1004//1004 1123//1123 1121//1121 +f 1006//1006 1123//1123 1004//1004 +f 1006//1006 1203//1203 1123//1123 +f 1006//1006 1153//1153 1203//1203 +f 1006//1006 1155//1155 1153//1153 +f 1006//1006 1007//1007 1155//1155 +f 1006//1006 1125//1125 1007//1007 +f 1006//1006 1008//1008 1125//1125 +f 1006//1006 1010//1010 1008//1008 +f 1006//1006 1009//1009 1010//1010 +f 1006//1006 1131//1131 1009//1009 +f 1006//1006 1011//1011 1131//1131 +f 1006//1006 1208//1208 1011//1011 +f 1208//1208 1006//1006 1012//1012 +f 1162//1162 1015//1015 1184//1184 +f 1013//1013 1015//1015 1162//1162 +f 1165//1165 1015//1015 1013//1013 +f 1169//1169 1015//1015 1165//1165 +f 1211//1211 1015//1015 1169//1169 +f 1167//1167 1015//1015 1211//1211 +f 1166//1166 1015//1015 1167//1167 +f 1172//1172 1015//1015 1166//1166 +f 1137//1137 1015//1015 1172//1172 +f 1136//1136 1015//1015 1137//1137 +f 1216//1216 1015//1015 1136//1136 +f 1014//1014 1015//1015 1216//1216 +f 1170//1170 1015//1015 1014//1014 +f 1170//1170 1018//1018 1015//1015 +f 1147//1147 1018//1018 1170//1170 +f 1016//1016 1018//1018 1147//1147 +f 1129//1129 1018//1018 1016//1016 +f 1144//1144 1018//1018 1129//1129 +f 1182//1182 1018//1018 1144//1144 +f 1178//1178 1018//1018 1182//1182 +f 1176//1176 1018//1018 1178//1178 +f 1141//1141 1018//1018 1176//1176 +f 1017//1017 1018//1018 1141//1141 +f 1173//1173 1018//1018 1017//1017 +f 1019//1019 1018//1018 1173//1173 +f 1018//1018 1019//1019 1012//1012 +f 988//988 1015//1015 1018//1018 +f 1015//1015 988//988 997//997 +f 1020//1020 1006//1006 1004//1004 +f 1006//1006 1020//1020 991//991 +f 961//961 1387//1387 975//975 +f 1387//1387 961//961 1393//1393 +f 1290//1290 1021//1021 1231//1231 +f 1021//1021 1290//1290 1022//1022 +f 1436//1436 949//949 1378//1378 +f 949//949 1436//1436 1104//1104 +f 1023//1023 1024//1024 890//890 +f 1024//1024 1023//1023 1103//1103 +f 1025//1025 1026//1026 889//889 +f 1026//1026 1025//1025 1027//1027 +f 1083//1083 1447//1447 1082//1082 +f 1447//1447 1083//1083 1098//1098 +f 1028//1028 897//897 896//896 +f 897//897 1028//1028 1029//1029 +f 1050//1050 1030//1030 1049//1049 +f 1030//1030 1050//1050 972//972 +f 1298//1298 1031//1031 878//878 +f 1031//1031 1298//1298 1275//1275 +f 985//985 1077//1077 1420//1420 +f 1077//1077 985//985 1076//1076 +f 1042//1042 880//880 881//881 +f 880//880 1042//1042 1271//1271 +f 982//982 1377//1377 1032//1032 +f 1377//1377 982//982 1043//1043 +f 899//899 1033//1033 1052//1052 +f 1033//1033 899//899 1281//1281 +f 1034//1034 973//973 1411//1411 +f 973//973 1034//1034 1100//1100 +f 1035//1035 1068//1068 872//872 +f 1068//1068 1035//1035 1036//1036 +f 1037//1037 1423//1423 1038//1038 +f 1423//1423 1037//1037 979//979 +f 1232//1232 870//870 871//871 +f 870//870 1232//1232 1269//1269 +f 978//978 1431//1431 1069//1069 +f 1431//1431 978//978 1056//1056 +f 1039//1039 1250//1250 876//876 +f 1250//1250 1039//1039 1279//1279 +f 1419//1419 1040//1040 1072//1072 +f 1040//1040 1419//1419 1041//1041 +f 1296//1296 881//881 879//879 +f 881//881 1296//1296 1042//1042 +f 983//983 1032//1032 1078//1078 +f 1032//1032 983//983 982//982 +f 1271//1271 882//882 880//880 +f 882//882 1271//1271 1079//1079 +f 1043//1043 1044//1044 1377//1377 +f 1044//1044 1043//1043 1080//1080 +f 1259//1259 887//887 1045//1045 +f 887//887 1259//1259 1288//1288 +f 1089//1089 1084//1084 1088//1088 +f 1084//1084 1089//1089 969//969 +f 1251//1251 895//895 893//893 +f 895//895 1251//1251 1046//1046 +f 1047//1047 1407//1407 1097//1097 +f 1407//1407 1047//1047 1095//1095 +f 1094//1094 896//896 1093//1093 +f 896//896 1094//1094 1028//1028 +f 1096//1096 1049//1049 1048//1048 +f 1049//1049 1096//1096 1050//1050 +f 1052//1052 1051//1051 892//892 +f 1051//1051 1052//1052 1033//1033 +f 1411//1411 1106//1106 1105//1105 +f 1106//1106 1411//1411 973//973 +f 1231//1231 868//868 1294//1294 +f 868//868 1231//1231 1021//1021 +f 975//975 1444//1444 1053//1053 +f 1444//1444 975//975 1387//1387 +f 1107//1107 1059//1059 1058//1058 +f 1059//1059 1107//1107 1108//1108 +f 976//976 1430//1430 1061//1061 +f 1430//1430 976//976 1109//1109 +f 1269//1269 1054//1054 870//870 +f 1054//1054 1269//1269 1055//1055 +f 1056//1056 1110//1110 1431//1431 +f 1110//1110 1056//1056 977//977 +f 1058//1058 869//869 1057//1057 +f 869//869 1058//1058 1059//1059 +f 1061//1061 1445//1445 1060//1060 +f 1445//1445 1061//1061 1430//1430 +f 1062//1062 872//872 1063//1063 +f 872//872 1062//1062 1035//1035 +f 980//980 1038//1038 1064//1064 +f 1038//1038 980//980 1037//1037 +f 1244//1244 873//873 1065//1065 +f 873//873 1244//1244 1243//1243 +f 1066//1066 1111//1111 1402//1402 +f 1111//1111 1066//1066 1067//1067 +f 1036//1036 871//871 1068//1068 +f 871//871 1036//1036 1232//1232 +f 979//979 1069//1069 1423//1423 +f 1069//1069 979//979 978//978 +f 1075//1075 1073//1073 875//875 +f 1073//1073 1075//1075 1070//1070 +f 1071//1071 1074//1074 1397//1397 +f 1074//1074 1071//1071 986//986 +f 876//876 1277//1277 877//877 +f 1277//1277 876//876 1250//1250 +f 1072//1072 984//984 1400//1400 +f 984//984 1072//1072 1040//1040 +f 877//877 1298//1298 878//878 +f 1298//1298 877//877 1277//1277 +f 1400//1400 985//985 1420//1420 +f 985//985 1400//1400 984//984 +f 875//875 1279//1279 1039//1039 +f 1279//1279 875//875 1073//1073 +f 1397//1397 1041//1041 1419//1419 +f 1041//1041 1397//1397 1074//1074 +f 1378//1378 986//986 1071//1071 +f 986//986 1378//1378 949//949 +f 890//890 1070//1070 1075//1075 +f 1070//1070 890//890 1024//1024 +f 1275//1275 879//879 1031//1031 +f 879//879 1275//1275 1296//1296 +f 1076//1076 1078//1078 1077//1077 +f 1078//1078 1076//1076 983//983 +f 1079//1079 1065//1065 882//882 +f 1065//1065 1079//1079 1244//1244 +f 1080//1080 1402//1402 1044//1044 +f 1402//1402 1080//1080 1066//1066 +f 1283//1283 889//889 888//888 +f 889//889 1283//1283 1025//1025 +f 1081//1081 1082//1082 1439//1439 +f 1082//1082 1081//1081 1083//1083 +f 1288//1288 1112//1112 887//887 +f 1112//1112 1288//1288 1286//1286 +f 969//969 1113//1113 1084//1084 +f 1113//1113 969//969 970//970 +f 1085//1085 1045//1045 1114//1114 +f 1045//1045 1085//1085 1259//1259 +f 1086//1086 1088//1088 1087//1087 +f 1088//1088 1086//1086 1089//1089 +f 1090//1090 1116//1116 1115//1115 +f 1116//1116 1090//1090 886//886 +f 967//967 1091//1091 968//968 +f 1091//1091 967//967 1415//1415 +f 1227//1227 884//884 1228//1228 +f 884//884 1227//1227 885//885 +f 966//966 1389//1389 1092//1092 +f 1389//1389 966//966 1417//1417 +f 1228//1228 883//883 1230//1230 +f 883//883 1228//1228 884//884 +f 1092//1092 1412//1412 964//964 +f 1412//1412 1092//1092 1389//1389 +f 965//965 1393//1393 961//961 +f 1393//1393 965//965 1394//1394 +f 1292//1292 1022//1022 1290//1290 +f 1022//1022 1292//1292 1117//1117 +f 1046//1046 1093//1093 895//895 +f 1093//1093 1046//1046 1094//1094 +f 1095//1095 1048//1048 1407//1407 +f 1048//1048 1095//1095 1096//1096 +f 1280//1280 893//893 894//894 +f 893//893 1280//1280 1251//1251 +f 1099//1099 1097//1097 1424//1424 +f 1097//1097 1099//1099 1047//1047 +f 1027//1027 894//894 1026//1026 +f 894//894 1027//1027 1280//1280 +f 1098//1098 1424//1424 1447//1447 +f 1424//1424 1098//1098 1099//1099 +f 898//898 1281//1281 899//899 +f 1281//1281 898//898 1101//1101 +f 1425//1425 1100//1100 1034//1034 +f 1100//1100 1425//1425 1102//1102 +f 897//897 1101//1101 898//898 +f 1101//1101 897//897 1029//1029 +f 1030//1030 1102//1102 1425//1425 +f 1102//1102 1030//1030 972//972 +f 892//892 1103//1103 1023//1023 +f 1103//1103 892//892 1051//1051 +f 1105//1105 1104//1104 1436//1436 +f 1104//1104 1105//1105 1106//1106 +f 1294//1294 1108//1108 1107//1107 +f 1108//1108 1294//1294 868//868 +f 1053//1053 1109//1109 976//976 +f 1109//1109 1053//1053 1444//1444 +f 1057//1057 1054//1054 1055//1055 +f 1054//1054 1057//1057 869//869 +f 1060//1060 1110//1110 977//977 +f 1110//1110 1060//1060 1445//1445 +f 1243//1243 1063//1063 873//873 +f 1063//1063 1243//1243 1062//1062 +f 1067//1067 1064//1064 1111//1111 +f 1064//1064 1067//1067 980//980 +f 1286//1286 888//888 1112//1112 +f 888//888 1286//1286 1283//1283 +f 970//970 1439//1439 1113//1113 +f 1439//1439 970//970 1081//1081 +f 1090//1090 1114//1114 886//886 +f 1114//1114 1090//1090 1085//1085 +f 967//967 1087//1087 1415//1415 +f 1087//1087 967//967 1086//1086 +f 1115//1115 885//885 1227//1227 +f 885//885 1115//1115 1116//1116 +f 968//968 1417//1417 966//966 +f 1417//1417 968//968 1091//1091 +f 1230//1230 1117//1117 1292//1292 +f 1117//1117 1230//1230 883//883 +f 964//964 1394//1394 965//965 +f 1394//1394 964//964 1412//1412 +f 1184//1184 1529//1529 1162//1162 +f 1529//1529 1184//1184 1470//1470 +f 1119//1119 1161//1161 1118//1118 +f 1161//1161 1119//1119 907//907 +f 1451//1451 1012//1012 1450//1450 +f 1012//1012 1451//1451 1208//1208 +f 1120//1120 1323//1323 932//932 +f 1323//1323 1120//1120 1327//1327 +f 1186//1186 931//931 930//930 +f 931//931 1186//1186 1371//1371 +f 1121//1121 1122//1122 1526//1526 +f 1122//1122 1121//1121 1123//1123 +f 1124//1124 935//935 1156//1156 +f 935//935 1124//1124 1356//1356 +f 1125//1125 1206//1206 1157//1157 +f 1206//1206 1125//1125 1008//1008 +f 1370//1370 920//920 919//919 +f 920//920 1370//1370 1181//1181 +f 1178//1178 1126//1126 1478//1478 +f 1126//1126 1178//1178 1182//1182 +f 1127//1127 922//922 921//921 +f 922//922 1127//1127 1145//1145 +f 1129//1129 1128//1128 1457//1457 +f 1128//1128 1129//1129 1016//1016 +f 1130//1130 1351//1351 934//934 +f 1351//1351 1130//1130 1352//1352 +f 1468//1468 1131//1131 1485//1485 +f 1131//1131 1468//1468 1009//1009 +f 1133//1133 912//912 1132//1132 +f 912//912 1133//1133 1134//1134 +f 1136//1136 1135//1135 1504//1504 +f 1135//1135 1136//1136 1137//1137 +f 1138//1138 911//911 1171//1171 +f 911//911 1138//1138 1339//1339 +f 1172//1172 1517//1517 1481//1481 +f 1517//1517 1172//1172 1166//1166 +f 1139//1139 1175//1175 918//918 +f 1175//1175 1139//1139 1140//1140 +f 1498//1498 1141//1141 1476//1476 +f 1141//1141 1498//1498 1017//1017 +f 1143//1143 921//921 1142//1142 +f 921//921 1143//1143 1127//1127 +f 1144//1144 1457//1457 1479//1479 +f 1457//1457 1144//1144 1129//1129 +f 1145//1145 915//915 922//922 +f 915//915 1145//1145 1146//1146 +f 1016//1016 1501//1501 1128//1128 +f 1501//1501 1016//1016 1147//1147 +f 1314//1314 1148//1148 1190//1190 +f 1148//1148 1314//1314 1330//1330 +f 1151//1151 1150//1150 1149//1149 +f 1150//1150 1151//1151 1188//1188 +f 1349//1349 1197//1197 1200//1200 +f 1197//1197 1349//1349 1152//1152 +f 1153//1153 1154//1154 1507//1507 +f 1154//1154 1153//1153 1155//1155 +f 1313//1313 1156//1156 1198//1198 +f 1156//1156 1313//1313 1124//1124 +f 1007//1007 1157//1157 1199//1199 +f 1157//1157 1007//1007 1125//1125 +f 934//934 1158//1158 1207//1207 +f 1158//1158 934//934 1351//1351 +f 1485//1485 1011//1011 1159//1159 +f 1011//1011 1485//1485 1131//1131 +f 1118//1118 1160//1160 1308//1308 +f 1160//1160 1118//1118 1161//1161 +f 1162//1162 1163//1163 1013//1013 +f 1163//1163 1162//1162 1529//1529 +f 1209//1209 908//908 1336//1336 +f 908//908 1209//1209 1210//1210 +f 1165//1165 1164//1164 1169//1169 +f 1164//1164 1165//1165 1515//1515 +f 1339//1339 910//910 911//911 +f 910//910 1339//1339 1316//1316 +f 1166//1166 1503//1503 1517//1517 +f 1503//1503 1166//1166 1167//1167 +f 1336//1336 909//909 1338//1338 +f 909//909 1336//1336 908//908 +f 1169//1169 1168//1168 1211//1211 +f 1168//1168 1169//1169 1164//1164 +f 1214//1214 1132//1132 1213//1213 +f 1132//1132 1214//1214 1133//1133 +f 1216//1216 1504//1504 1215//1215 +f 1504//1504 1216//1216 1136//1136 +f 1341//1341 913//913 914//914 +f 913//913 1341//1341 1212//1212 +f 1170//1170 1466//1466 1183//1183 +f 1466//1466 1170//1170 1014//1014 +f 1134//1134 1171//1171 912//912 +f 1171//1171 1134//1134 1138//1138 +f 1137//1137 1481//1481 1135//1135 +f 1481//1481 1137//1137 1172//1172 +f 916//916 1179//1179 917//917 +f 1179//1179 916//916 1324//1324 +f 1473//1473 1173//1173 1180//1180 +f 1173//1173 1473//1473 1019//1019 +f 918//918 1174//1174 1177//1177 +f 1174//1174 918//918 1175//1175 +f 1476//1476 1176//1176 1499//1499 +f 1176//1176 1476//1476 1141//1141 +f 1177//1177 1370//1370 919//919 +f 1370//1370 1177//1177 1174//1174 +f 1499//1499 1178//1178 1478//1478 +f 1178//1178 1499//1499 1176//1176 +f 917//917 1140//1140 1139//1139 +f 1140//1140 917//917 1179//1179 +f 1180//1180 1017//1017 1498//1498 +f 1017//1017 1180//1180 1173//1173 +f 1450//1450 1019//1019 1473//1473 +f 1019//1019 1450//1450 1012//1012 +f 932//932 1324//1324 916//916 +f 1324//1324 932//932 1323//1323 +f 1181//1181 1142//1142 920//920 +f 1142//1142 1181//1181 1143//1143 +f 1182//1182 1479//1479 1126//1126 +f 1479//1479 1182//1182 1144//1144 +f 1146//1146 914//914 915//915 +f 914//914 1146//1146 1341//1341 +f 1147//1147 1183//1183 1501//1501 +f 1183//1183 1147//1147 1170//1170 +f 1185//1185 1470//1470 1184//1184 +f 1470//1470 1185//1185 1471//1471 +f 1366//1366 907//907 1119//1119 +f 907//907 1366//1366 923//923 +f 1362//1362 930//930 929//929 +f 930//930 1362//1362 1186//1186 +f 1005//1005 1526//1526 1217//1217 +f 1526//1526 1005//1005 1121//1121 +f 1330//1330 1187//1187 1148//1148 +f 1187//1187 1330//1330 1364//1364 +f 1188//1188 1523//1523 1150//1150 +f 1523//1523 1188//1188 1189//1189 +f 1219//1219 1190//1190 1218//1218 +f 1190//1190 1219//1219 1314//1314 +f 1003//1003 1149//1149 1191//1191 +f 1149//1149 1003//1003 1151//1151 +f 1331//1331 926//926 1222//1222 +f 926//926 1331//1331 928//928 +f 1220//1220 1493//1493 1002//1002 +f 1493//1493 1220//1220 1221//1221 +f 1333//1333 1192//1192 1194//1194 +f 1192//1192 1333//1333 925//925 +f 1001//1001 1196//1196 1193//1193 +f 1196//1196 1001//1001 1492//1492 +f 1194//1194 924//924 1223//1223 +f 924//924 1194//1194 1192//1192 +f 1193//1193 1195//1195 1224//1224 +f 1195//1195 1193//1193 1196//1196 +f 1152//1152 1198//1198 1197//1197 +f 1198//1198 1152//1152 1313//1313 +f 1155//1155 1199//1199 1154//1154 +f 1199//1199 1155//1155 1007//1007 +f 1372//1372 1200//1200 1201//1201 +f 1200//1200 1372//1372 1349//1349 +f 1203//1203 1507//1507 1202//1202 +f 1507//1507 1203//1203 1153//1153 +f 1371//1371 1201//1201 931//931 +f 1201//1201 1371//1371 1372//1372 +f 1123//1123 1202//1202 1122//1122 +f 1202//1202 1123//1123 1203//1203 +f 1204//1204 1352//1352 1130//1130 +f 1352//1352 1204//1204 1205//1205 +f 1483//1483 1009//1009 1468//1468 +f 1009//1009 1483//1483 1010//1010 +f 935//935 1205//1205 1204//1204 +f 1205//1205 935//935 1356//1356 +f 1206//1206 1010//1010 1483//1483 +f 1010//1010 1206//1206 1008//1008 +f 1207//1207 1327//1327 1120//1120 +f 1327//1327 1207//1207 1158//1158 +f 1159//1159 1208//1208 1451//1451 +f 1208//1208 1159//1159 1011//1011 +f 1308//1308 1210//1210 1209//1209 +f 1210//1210 1308//1308 1160//1160 +f 1013//1013 1515//1515 1165//1165 +f 1515//1515 1013//1013 1163//1163 +f 1338//1338 910//910 1316//1316 +f 910//910 1338//1338 909//909 +f 1211//1211 1503//1503 1167//1167 +f 1503//1503 1211//1211 1168//1168 +f 1212//1212 1213//1213 913//913 +f 1213//1213 1212//1212 1214//1214 +f 1014//1014 1215//1215 1466//1466 +f 1215//1215 1014//1014 1216//1216 +f 1364//1364 929//929 1187//1187 +f 929//929 1364//1364 1362//1362 +f 1189//1189 1217//1217 1523//1523 +f 1217//1217 1189//1189 1005//1005 +f 1331//1331 1218//1218 928//928 +f 1218//1218 1331//1331 1219//1219 +f 1220//1220 1191//1191 1221//1221 +f 1191//1191 1220//1220 1003//1003 +f 1222//1222 925//925 1333//1333 +f 925//925 1222//1222 926//926 +f 1002//1002 1492//1492 1001//1001 +f 1492//1492 1002//1002 1493//1493 +f 1223//1223 923//923 1366//1366 +f 923//923 1223//1223 924//924 +f 1224//1224 1471//1471 1185//1185 +f 1471//1471 1224//1224 1195//1195 +f 1290//1290 1225//1225 1291//1291 +f 1225//1225 1290//1290 1231//1231 +f 1231//1231 220//220 1225//1225 +f 1288//1288 1257//1257 173//173 +f 1297//1297 1296//1296 1226//1226 +f 179//179 1046//1046 178//178 +f 1227//1227 1262//1262 170//170 +f 1228//1228 169//169 1229//1229 +f 1237//1237 1228//1228 1230//1230 +f 1228//1228 1237//1237 169//169 +f 221//221 1294//1294 1293//1293 +f 1294//1294 221//221 1231//1231 +f 1231//1231 221//221 220//220 +f 1268//1268 1232//1232 1036//1036 +f 1232//1232 1268//1268 1233//1233 +f 1234//1234 1036//1036 1035//1035 +f 1036//1036 1234//1234 1235//1235 +f 1242//1242 1244//1244 1272//1272 +f 191//191 1028//1028 1094//1094 +f 1028//1028 191//191 190//190 +f 191//191 1094//1094 200//200 +f 188//188 1029//1029 189//189 +f 182//182 1103//1103 1282//1282 +f 1259//1259 1300//1300 1236//1236 +f 168//168 1230//1230 1292//1292 +f 1230//1230 168//168 1237//1237 +f 1107//1107 1238//1238 222//222 +f 1107//1107 222//222 1239//1239 +f 223//223 1055//1055 1269//1269 +f 1055//1055 223//223 1240//1240 +f 1232//1232 225//225 224//224 +f 1232//1232 1233//1233 225//225 +f 1241//1241 1079//1079 228//228 +f 1242//1242 1243//1243 1244//1244 +f 1243//1243 1242//1242 1245//1245 +f 1243//1243 1245//1245 227//227 +f 1274//1274 1070//1070 1246//1246 +f 1298//1298 1276//1276 161//161 +f 1276//1276 1298//1298 1277//1277 +f 1279//1279 1247//1247 164//164 +f 1247//1247 1279//1279 1073//1073 +f 1248//1248 1250//1250 1249//1249 +f 1250//1250 163//163 1249//1249 +f 163//163 1250//1250 1279//1279 +f 1252//1252 1251//1251 1280//1280 +f 1251//1251 1252//1252 177//177 +f 176//176 1027//1027 1253//1253 +f 1033//1033 192//192 1051//1051 +f 192//192 1033//1033 1254//1254 +f 1101//1101 186//186 1281//1281 +f 186//186 1101//1101 187//187 +f 1024//1024 1255//1255 181//181 +f 1255//1255 1024//1024 1103//1103 +f 1255//1255 1103//1103 182//182 +f 1257//1257 1259//1259 1256//1256 +f 1259//1259 1257//1257 1288//1288 +f 1090//1090 1258//1258 1301//1301 +f 1259//1259 1236//1236 1256//1256 +f 1025//1025 174//174 175//175 +f 1260//1260 1090//1090 1115//1115 +f 1090//1090 1260//1260 171//171 +f 1090//1090 171//171 1258//1258 +f 1261//1261 1227//1227 1228//1228 +f 1227//1227 1261//1261 1262//1262 +f 1228//1228 1229//1229 1261//1261 +f 1292//1292 1289//1289 168//168 +f 1238//1238 1058//1058 1266//1266 +f 1058//1058 1238//1238 1107//1107 +f 1263//1263 1055//1055 1264//1264 +f 1055//1055 1263//1263 1057//1057 +f 1058//1058 1265//1265 1266//1266 +f 1055//1055 1267//1267 1264//1264 +f 1055//1055 1240//1240 1267//1267 +f 1036//1036 1235//1235 1268//1268 +f 224//224 1269//1269 1232//1232 +f 1269//1269 224//224 223//223 +f 229//229 1042//1042 1270//1270 +f 1042//1042 229//229 1271//1271 +f 228//228 1271//1271 229//229 +f 1271//1271 228//228 1079//1079 +f 1272//1272 1079//1079 1241//1241 +f 1079//1079 1272//1272 1244//1244 +f 1273//1273 1035//1035 1062//1062 +f 1035//1035 1273//1273 1234//1234 +f 227//227 1062//1062 1243//1243 +f 1062//1062 227//227 226//226 +f 1062//1062 226//226 1273//1273 +f 165//165 1070//1070 1274//1274 +f 160//160 1298//1298 159//159 +f 1226//1226 1275//1275 158//158 +f 1275//1275 1226//1226 1296//1296 +f 1277//1277 1248//1248 1276//1276 +f 1248//1248 1277//1277 1250//1250 +f 1278//1278 1279//1279 164//164 +f 163//163 1279//1279 1278//1278 +f 1073//1073 165//165 1247//1247 +f 165//165 1073//1073 1070//1070 +f 200//200 1094//1094 202//202 +f 176//176 1280//1280 1027//1027 +f 1280//1280 176//176 1299//1299 +f 183//183 1033//1033 184//184 +f 1254//1254 1033//1033 183//183 +f 1281//1281 184//184 1033//1033 +f 184//184 1281//1281 197//197 +f 197//197 1281//1281 186//186 +f 1029//1029 187//187 1101//1101 +f 187//187 1029//1029 188//188 +f 189//189 1029//1029 198//198 +f 190//190 1029//1029 1028//1028 +f 1029//1029 190//190 198//198 +f 1051//1051 1282//1282 1103//1103 +f 1282//1282 1051//1051 192//192 +f 1024//1024 1246//1246 1070//1070 +f 1246//1246 1024//1024 181//181 +f 1283//1283 1285//1285 1284//1284 +f 174//174 1283//1283 1284//1284 +f 1283//1283 174//174 1025//1025 +f 1285//1285 1286//1286 1287//1287 +f 1286//1286 1285//1285 1283//1283 +f 1287//1287 1288//1288 173//173 +f 1288//1288 1287//1287 1286//1286 +f 175//175 1027//1027 1025//1025 +f 1027//1027 175//175 1253//1253 +f 170//170 1115//1115 1227//1227 +f 1115//1115 170//170 1260//1260 +f 1292//1292 167//167 1289//1289 +f 167//167 1290//1290 1291//1291 +f 1290//1290 167//167 1292//1292 +f 1293//1293 1107//1107 1239//1239 +f 1107//1107 1293//1293 1294//1294 +f 1265//1265 1057//1057 1263//1263 +f 1057//1057 1265//1265 1058//1058 +f 1295//1295 1296//1296 1297//1297 +f 159//159 1298//1298 161//161 +f 158//158 1298//1298 160//160 +f 1298//1298 158//158 1275//1275 +f 177//177 1046//1046 1251//1251 +f 1046//1046 177//177 178//178 +f 1252//1252 1280//1280 1299//1299 +f 1300//1300 1085//1085 172//172 +f 1085//1085 1300//1300 1259//1259 +f 172//172 1090//1090 1301//1301 +f 1090//1090 172//172 1085//1085 +f 1270//1270 1042//1042 1302//1302 +f 1302//1302 1296//1296 1295//1295 +f 1296//1296 1302//1302 1042//1042 +f 179//179 1094//1094 1046//1046 +f 1094//1094 179//179 202//202 +f 1356//1356 1355//1355 1205//1205 +f 1355//1355 1356//1356 214//214 +f 1119//1119 235//235 1303//1303 +f 235//235 1119//1119 1118//1118 +f 1118//1118 1309//1309 235//235 +f 1330//1330 1329//1329 1304//1304 +f 1369//1369 1143//1143 1347//1347 +f 210//210 1152//1152 1305//1305 +f 1333//1333 1306//1306 185//185 +f 1194//1194 1307//1307 1334//1334 +f 195//195 1194//1194 1223//1223 +f 1194//1194 195//195 1307//1307 +f 236//236 1308//1308 1367//1367 +f 1308//1308 236//236 1118//1118 +f 1118//1118 236//236 1309//1309 +f 1310//1310 1138//1138 1134//1134 +f 1138//1138 1310//1310 244//244 +f 1343//1343 1134//1134 1133//1133 +f 1134//1134 1343//1343 1311//1311 +f 1312//1312 1341//1341 1340//1340 +f 211//211 1124//1124 1313//1313 +f 1124//1124 211//211 216//216 +f 211//211 1313//1313 217//217 +f 214//214 1356//1356 215//215 +f 1328//1328 1327//1327 1358//1358 +f 1314//1314 1374//1374 201//201 +f 1335//1335 1223//1223 1366//1366 +f 1223//1223 1335//1335 195//195 +f 1209//1209 238//238 237//237 +f 1209//1209 237//237 1315//1315 +f 242//242 1316//1316 1339//1339 +f 1316//1316 242//242 1317//1317 +f 1138//1138 245//245 243//243 +f 1138//1138 244//244 245//245 +f 1318//1318 1146//1146 248//248 +f 155//155 1324//1324 157//157 +f 1174//1174 152//152 1319//1319 +f 152//152 1174//1174 1175//1175 +f 1175//1175 1320//1320 1321//1321 +f 1320//1320 1175//1175 1140//1140 +f 152//152 1175//1175 1321//1321 +f 153//153 1140//1140 1348//1348 +f 209//209 1371//1371 208//208 +f 1322//1322 1351//1351 1353//1353 +f 1323//1323 1325//1325 1324//1324 +f 1325//1325 1323//1323 1360//1360 +f 1326//1326 1327//1327 1328//1328 +f 1329//1329 1314//1314 203//203 +f 1314//1314 1329//1329 1330//1330 +f 1331//1331 1332//1332 199//199 +f 1314//1314 201//201 203//203 +f 1186//1186 206//206 207//207 +f 1331//1331 180//180 1332//1332 +f 196//196 1333//1333 1194//1194 +f 1333//1333 196//196 1306//1306 +f 1194//1194 1334//1334 196//196 +f 1366//1366 194//194 1335//1335 +f 1336//1336 1337//1337 1368//1368 +f 240//240 1316//1316 239//239 +f 1316//1316 240//240 1338//1338 +f 1337//1337 1338//1338 240//240 +f 1338//1338 1337//1337 1336//1336 +f 1316//1316 241//241 239//239 +f 1316//1316 1317//1317 241//241 +f 1134//1134 1311//1311 1310//1310 +f 243//243 1339//1339 1138//1138 +f 1339//1339 243//243 242//242 +f 249//249 1127//1127 250//250 +f 1127//1127 249//249 1145//1145 +f 248//248 1145//1145 249//249 +f 1145//1145 248//248 1146//1146 +f 1340//1340 1146//1146 1318//1318 +f 1146//1146 1340//1340 1341//1341 +f 1342//1342 1133//1133 1214//1214 +f 1133//1133 1342//1342 1343//1343 +f 1212//1212 247//247 1344//1344 +f 1312//1312 1212//1212 1341//1341 +f 1212//1212 1312//1312 247//247 +f 1344//1344 1214//1214 1212//1212 +f 1214//1214 1344//1344 246//246 +f 1214//1214 246//246 1342//1342 +f 157//157 1324//1324 1325//1325 +f 1345//1345 1370//1370 1346//1346 +f 1347//1347 1181//1181 150//150 +f 1181//1181 1347//1347 1143//1143 +f 1370//1370 1319//1319 1346//1346 +f 1319//1319 1370//1370 1174//1174 +f 1320//1320 1140//1140 153//153 +f 1140//1140 154//154 1348//1348 +f 154//154 1140//1140 1179//1179 +f 1179//1179 155//155 154//154 +f 155//155 1179//1179 1324//1324 +f 219//219 1152//1152 1349//1349 +f 1152//1152 219//219 1305//1305 +f 218//218 1349//1349 1372//1372 +f 1349//1349 218//218 219//219 +f 1350//1350 1351//1351 1322//1322 +f 1352//1352 1353//1353 1351//1351 +f 1353//1353 1352//1352 212//212 +f 1205//1205 1354//1354 1352//1352 +f 1354//1354 1205//1205 1355//1355 +f 212//212 1352//1352 1354//1354 +f 215//215 1356//1356 1357//1357 +f 216//216 1356//1356 1124//1124 +f 1356//1356 216//216 1357//1357 +f 1158//1158 1358//1358 1327//1327 +f 1358//1358 1158//1158 1359//1359 +f 1351//1351 1359//1359 1158//1158 +f 1359//1359 1351//1351 1350//1350 +f 1323//1323 1326//1326 1360//1360 +f 1326//1326 1323//1323 1327//1327 +f 1361//1361 1331//1331 199//199 +f 1331//1331 1361//1361 1219//1219 +f 1362//1362 204//204 205//205 +f 206//206 1362//1362 205//205 +f 1362//1362 206//206 1186//1186 +f 204//204 1364//1364 1363//1363 +f 1364//1364 204//204 1362//1362 +f 1363//1363 1330//1330 1304//1304 +f 1330//1330 1363//1363 1364//1364 +f 207//207 1371//1371 1186//1186 +f 1371//1371 207//207 208//208 +f 1365//1365 1331//1331 1222//1222 +f 1331//1331 1365//1365 180//180 +f 185//185 1222//1222 1333//1333 +f 1222//1222 185//185 1365//1365 +f 1366//1366 193//193 194//194 +f 193//193 1119//1119 1303//1303 +f 1119//1119 193//193 1366//1366 +f 1367//1367 1209//1209 1315//1315 +f 1209//1209 1367//1367 1308//1308 +f 238//238 1336//1336 1368//1368 +f 1336//1336 238//238 1209//1209 +f 251//251 1143//1143 1369//1369 +f 151//151 1370//1370 1345//1345 +f 150//150 1370//1370 151//151 +f 1370//1370 150//150 1181//1181 +f 217//217 1313//1313 1375//1375 +f 209//209 1372//1372 1371//1371 +f 1372//1372 209//209 1373//1373 +f 218//218 1372//1372 1373//1373 +f 1374//1374 1219//1219 1361//1361 +f 1219//1219 1374//1374 1314//1314 +f 250//250 1127//1127 253//253 +f 253//253 1143//1143 251//251 +f 1143//1143 253//253 1127//1127 +f 210//210 1313//1313 1152//1152 +f 1313//1313 210//210 1375//1375 +f 1393//1393 1376//1376 1387//1387 +f 1376//1376 1393//1393 1604//1604 +f 1556//1556 1565//1565 1420//1420 +f 1377//1377 1552//1552 1553//1553 +f 1552//1552 1377//1377 1044//1044 +f 1605//1605 1603//1603 1394//1394 +f 1379//1379 1378//1378 1399//1399 +f 1378//1378 1379//1379 1436//1436 +f 1589//1589 1592//1592 1109//1109 +f 1380//1380 1381//1381 1071//1071 +f 1382//1382 1588//1588 1387//1387 +f 1383//1383 1626//1626 1030//1030 +f 1384//1384 1606//1606 1389//1389 +f 1554//1554 1385//1385 1078//1078 +f 1386//1386 1390//1390 1032//1032 +f 1405//1405 1600//1600 1423//1423 +f 1376//1376 1382//1382 1387//1387 +f 1621//1621 1388//1388 1411//1411 +f 1413//1413 1605//1605 1394//1394 +f 1389//1389 1607//1607 1412//1412 +f 1607//1607 1389//1389 1606//1606 +f 1426//1426 1610//1610 1088//1088 +f 1557//1557 1561//1561 1419//1419 +f 1561//1561 1567//1567 1419//1419 +f 1032//1032 1553//1553 1391//1391 +f 1553//1553 1032//1032 1377//1377 +f 1078//1078 1390//1390 1554//1554 +f 1390//1390 1078//1078 1032//1032 +f 1391//1391 1386//1386 1032//1032 +f 1402//1402 1549//1549 1403//1403 +f 1549//1549 1402//1402 1111//1111 +f 1392//1392 1446//1446 1424//1424 +f 1388//1388 1034//1034 1411//1411 +f 1034//1034 1388//1388 1622//1622 +f 1393//1393 1603//1603 1604//1604 +f 1603//1603 1393//1393 1394//1394 +f 1414//1414 1395//1395 1417//1417 +f 1396//1396 1427//1427 1084//1084 +f 1398//1398 1380//1380 1071//1071 +f 1398//1398 1397//1397 1558//1558 +f 1397//1397 1398//1398 1071//1071 +f 1557//1557 1072//1072 1563//1563 +f 1072//1072 1557//1557 1419//1419 +f 1378//1378 1381//1381 1399//1399 +f 1381//1381 1378//1378 1071//1071 +f 1568//1568 1563//1563 1072//1072 +f 1568//1568 1400//1400 1564//1564 +f 1400//1400 1568//1568 1072//1072 +f 1401//1401 1556//1556 1420//1420 +f 1077//1077 1385//1385 1421//1421 +f 1385//1385 1077//1077 1078//1078 +f 1402//1402 1550//1550 1044//1044 +f 1550//1550 1402//1402 1403//1403 +f 1445//1445 1594//1594 1404//1404 +f 1594//1594 1445//1445 1430//1430 +f 1601//1601 1602//1602 1064//1064 +f 1069//1069 1405//1405 1423//1423 +f 1405//1405 1069//1069 1598//1598 +f 1632//1632 1406//1406 1407//1407 +f 1630//1630 1632//1632 1407//1407 +f 1030//1030 1408//1408 1049//1049 +f 1408//1408 1030//1030 1626//1626 +f 1622//1622 1623//1623 1034//1034 +f 1409//1409 1030//1030 1425//1425 +f 1030//1030 1409//1409 1438//1438 +f 1620//1620 1621//1621 1411//1411 +f 1411//1411 1410//1410 1620//1620 +f 1410//1410 1411//1411 1105//1105 +f 1412//1412 1413//1413 1394//1394 +f 1413//1413 1412//1412 1607//1607 +f 1441//1441 1612//1612 1439//1439 +f 1084//1084 1611//1611 1396//1396 +f 1611//1611 1084//1084 1113//1113 +f 1609//1609 1608//1608 1415//1415 +f 1091//1091 1414//1414 1417//1417 +f 1414//1414 1091//1091 1416//1416 +f 1415//1415 1416//1416 1091//1091 +f 1416//1416 1415//1415 1608//1608 +f 1417//1417 1418//1418 1389//1389 +f 1418//1418 1417//1417 1395//1395 +f 1418//1418 1384//1384 1389//1389 +f 1558//1558 1419//1419 1567//1567 +f 1419//1419 1558//1558 1397//1397 +f 1564//1564 1420//1420 1565//1565 +f 1420//1420 1564//1564 1400//1400 +f 1420//1420 1421//1421 1401//1401 +f 1421//1421 1420//1420 1077//1077 +f 1551//1551 1552//1552 1044//1044 +f 1550//1550 1551//1551 1044//1044 +f 1430//1430 1592//1592 1591//1591 +f 1592//1592 1430//1430 1109//1109 +f 1433//1433 1596//1596 1110//1110 +f 1602//1602 1422//1422 1064//1064 +f 1038//1038 1601//1601 1064//1064 +f 1601//1601 1038//1038 1434//1434 +f 1600//1600 1435//1435 1423//1423 +f 1111//1111 1422//1422 1549//1549 +f 1422//1422 1111//1111 1064//1064 +f 1616//1616 1618//1618 1436//1436 +f 1379//1379 1616//1616 1436//1436 +f 1635//1635 1392//1392 1424//1424 +f 1097//1097 1635//1635 1424//1424 +f 1635//1635 1097//1097 1437//1437 +f 1627//1627 1629//1629 1048//1048 +f 1049//1049 1627//1627 1048//1048 +f 1627//1627 1049//1049 1408//1408 +f 1623//1623 1425//1425 1034//1034 +f 1425//1425 1623//1623 1409//1409 +f 1088//1088 1428//1428 1426//1426 +f 1428//1428 1088//1088 1084//1084 +f 1427//1427 1428//1428 1084//1084 +f 1429//1429 1609//1609 1415//1415 +f 1591//1591 1594//1594 1430//1430 +f 1590//1590 1589//1589 1109//1109 +f 1110//1110 1432//1432 1431//1431 +f 1432//1432 1110//1110 1596//1596 +f 1595//1595 1433//1433 1110//1110 +f 1597//1597 1598//1598 1069//1069 +f 1431//1431 1597//1597 1069//1069 +f 1597//1597 1431//1431 1432//1432 +f 1423//1423 1434//1434 1038//1038 +f 1434//1434 1423//1423 1435//1435 +f 1618//1618 1105//1105 1436//1436 +f 1105//1105 1618//1618 1410//1410 +f 1407//1407 1437//1437 1097//1097 +f 1437//1437 1407//1407 1406//1406 +f 1048//1048 1630//1630 1407//1407 +f 1630//1630 1048//1048 1629//1629 +f 1438//1438 1383//1383 1030//1030 +f 1113//1113 1440//1440 1611//1611 +f 1440//1440 1113//1113 1439//1439 +f 1612//1612 1440//1440 1439//1439 +f 1082//1082 1441//1441 1439//1439 +f 1441//1441 1082//1082 1613//1613 +f 1082//1082 1442//1442 1613//1613 +f 1442//1442 1082//1082 1447//1447 +f 1415//1415 1443//1443 1429//1429 +f 1443//1443 1415//1415 1087//1087 +f 1087//1087 1610//1610 1443//1443 +f 1610//1610 1087//1087 1088//1088 +f 1109//1109 1587//1587 1590//1590 +f 1587//1587 1109//1109 1444//1444 +f 1444//1444 1588//1588 1587//1587 +f 1588//1588 1444//1444 1387//1387 +f 1110//1110 1404//1404 1595//1595 +f 1404//1404 1110//1110 1445//1445 +f 1447//1447 1446//1446 1442//1442 +f 1446//1446 1447//1447 1424//1424 +f 1470//1470 1566//1566 1529//1529 +f 1566//1566 1470//1470 1559//1559 +f 1580//1580 1448//1448 1478//1478 +f 1128//1128 1575//1575 1584//1584 +f 1575//1575 1128//1128 1501//1501 +f 1617//1617 1615//1615 1471//1471 +f 1639//1639 1450//1450 1449//1449 +f 1450//1450 1639//1639 1451//1451 +f 1562//1562 1452//1452 1515//1515 +f 1472//1472 1453//1453 1473//1473 +f 1560//1560 1454//1454 1529//1529 +f 1645//1645 1644//1644 1206//1206 +f 1455//1455 1460//1460 1196//1196 +f 1581//1581 1582//1582 1479//1479 +f 1583//1583 1456//1456 1457//1457 +f 1458//1458 1572//1572 1135//1135 +f 1566//1566 1560//1560 1529//1529 +f 1459//1459 1638//1638 1485//1485 +f 1619//1619 1617//1617 1471//1471 +f 1196//1196 1488//1488 1195//1195 +f 1488//1488 1196//1196 1460//1460 +f 1633//1633 1628//1628 1149//1149 +f 1461//1461 1576//1576 1498//1498 +f 1576//1576 1462//1462 1498//1498 +f 1457//1457 1584//1584 1463//1463 +f 1584//1584 1457//1457 1128//1128 +f 1479//1479 1456//1456 1581//1581 +f 1456//1456 1479//1479 1457//1457 +f 1463//1463 1583//1583 1457//1457 +f 1183//1183 1465//1465 1464//1464 +f 1465//1465 1183//1183 1466//1466 +f 1641//1641 1467//1467 1202//1202 +f 1638//1638 1468//1468 1485//1485 +f 1468//1468 1638//1638 1469//1469 +f 1470//1470 1615//1615 1559//1559 +f 1615//1615 1470//1470 1471//1471 +f 1624//1624 1496//1496 1492//1492 +f 1490//1490 1634//1634 1150//1150 +f 1577//1577 1472//1472 1473//1473 +f 1577//1577 1180//1180 1497//1497 +f 1180//1180 1577//1577 1473//1473 +f 1461//1461 1476//1476 1474//1474 +f 1476//1476 1461//1461 1498//1498 +f 1450//1450 1453//1453 1449//1449 +f 1453//1453 1450//1450 1473//1473 +f 1475//1475 1474//1474 1476//1476 +f 1475//1475 1499//1499 1579//1579 +f 1499//1499 1475//1475 1476//1476 +f 1477//1477 1580//1580 1478//1478 +f 1126//1126 1582//1582 1500//1500 +f 1582//1582 1126//1126 1479//1479 +f 1183//1183 1586//1586 1501//1501 +f 1586//1586 1183//1183 1464//1464 +f 1168//1168 1513//1513 1530//1530 +f 1513//1513 1168//1168 1164//1164 +f 1574//1574 1480//1480 1215//1215 +f 1481//1481 1458//1458 1135//1135 +f 1458//1458 1481//1481 1571//1571 +f 1643//1643 1642//1642 1154//1154 +f 1521//1521 1643//1643 1154//1154 +f 1206//1206 1482//1482 1157//1157 +f 1482//1482 1206//1206 1644//1644 +f 1469//1469 1646//1646 1468//1468 +f 1511//1511 1206//1206 1483//1483 +f 1206//1206 1511//1511 1484//1484 +f 1486//1486 1459//1459 1485//1485 +f 1485//1485 1487//1487 1486//1486 +f 1487//1487 1485//1485 1159//1159 +f 1195//1195 1619//1619 1471//1471 +f 1619//1619 1195//1195 1488//1488 +f 1489//1489 1636//1636 1217//1217 +f 1150//1150 1524//1524 1490//1490 +f 1524//1524 1150//1150 1523//1523 +f 1512//1512 1491//1491 1221//1221 +f 1493//1493 1624//1624 1492//1492 +f 1624//1624 1493//1493 1494//1494 +f 1221//1221 1494//1494 1493//1493 +f 1494//1494 1221//1221 1491//1491 +f 1492//1492 1495//1495 1196//1196 +f 1495//1495 1492//1492 1496//1496 +f 1495//1495 1455//1455 1196//1196 +f 1497//1497 1498//1498 1462//1462 +f 1498//1498 1497//1497 1180//1180 +f 1579//1579 1478//1478 1448//1448 +f 1478//1478 1579//1579 1499//1499 +f 1478//1478 1500//1500 1477//1477 +f 1500//1500 1478//1478 1126//1126 +f 1585//1585 1575//1575 1501//1501 +f 1586//1586 1585//1585 1501//1501 +f 1164//1164 1452//1452 1502//1502 +f 1452//1452 1164//1164 1515//1515 +f 1555//1555 1570//1570 1503//1503 +f 1480//1480 1505//1505 1215//1215 +f 1504//1504 1574//1574 1215//1215 +f 1574//1574 1504//1504 1519//1519 +f 1572//1572 1520//1520 1135//1135 +f 1466//1466 1505//1505 1465//1465 +f 1505//1505 1466//1466 1215//1215 +f 1506//1506 1640//1640 1451//1451 +f 1639//1639 1506//1506 1451//1451 +f 1508//1508 1641//1641 1202//1202 +f 1507//1507 1508//1508 1202//1202 +f 1508//1508 1507//1507 1509//1509 +f 1510//1510 1522//1522 1199//1199 +f 1157//1157 1510//1510 1199//1199 +f 1510//1510 1157//1157 1482//1482 +f 1646//1646 1483//1483 1468//1468 +f 1483//1483 1646//1646 1511//1511 +f 1149//1149 1631//1631 1633//1633 +f 1631//1631 1149//1149 1150//1150 +f 1634//1634 1631//1631 1150//1150 +f 1625//1625 1512//1512 1221//1221 +f 1502//1502 1513//1513 1164//1164 +f 1514//1514 1562//1562 1515//1515 +f 1503//1503 1518//1518 1517//1517 +f 1518//1518 1503//1503 1570//1570 +f 1569//1569 1555//1555 1503//1503 +f 1516//1516 1571//1571 1481//1481 +f 1517//1517 1516//1516 1481//1481 +f 1516//1516 1517//1517 1518//1518 +f 1135//1135 1519//1519 1504//1504 +f 1519//1519 1135//1135 1520//1520 +f 1640//1640 1159//1159 1451//1451 +f 1159//1159 1640//1640 1487//1487 +f 1154//1154 1509//1509 1507//1507 +f 1509//1509 1154//1154 1642//1642 +f 1199//1199 1521//1521 1154//1154 +f 1521//1521 1199//1199 1522//1522 +f 1484//1484 1645//1645 1206//1206 +f 1523//1523 1525//1525 1524//1524 +f 1525//1525 1523//1523 1217//1217 +f 1636//1636 1525//1525 1217//1217 +f 1526//1526 1489//1489 1217//1217 +f 1489//1489 1526//1526 1637//1637 +f 1526//1526 1527//1527 1637//1637 +f 1527//1527 1526//1526 1122//1122 +f 1221//1221 1614//1614 1625//1625 +f 1614//1614 1221//1221 1191//1191 +f 1191//1191 1628//1628 1614//1614 +f 1628//1628 1191//1191 1149//1149 +f 1515//1515 1528//1528 1514//1514 +f 1528//1528 1515//1515 1163//1163 +f 1163//1163 1454//1454 1528//1528 +f 1454//1454 1163//1163 1529//1529 +f 1503//1503 1530//1530 1569//1569 +f 1530//1530 1503//1503 1168//1168 +f 1122//1122 1467//1467 1527//1527 +f 1467//1467 1122//1122 1202//1202 +f 475//475 26//26 478//478 +f 26//26 475//475 40//40 +f 391//391 403//403 1531//1531 +f 403//403 391//391 444//444 +f 31//31 460//460 28//28 +f 460//460 31//31 1532//1532 +f 1533//1533 402//402 428//428 +f 402//402 1533//1533 455//455 +f 146//146 1534//1534 257//257 +f 1534//1534 146//146 231//231 +f 1535//1535 257//257 256//256 +f 257//257 1535//1535 146//146 +f 142//142 256//256 258//258 +f 256//256 142//142 1535//1535 +f 1540//1540 1536//1536 388//388 +f 166//166 1536//1536 1540//1540 +f 166//166 1537//1537 1536//1536 +f 1537//1537 166//166 162//162 +f 1538//1538 142//142 258//258 +f 142//142 1538//1538 252//252 +f 230//230 1539//1539 1544//1544 +f 1540//1540 454//454 1539//1539 +f 454//454 1540//1540 1542//1542 +f 166//166 1539//1539 230//230 +f 1539//1539 166//166 1540//1540 +f 386//386 1542//1542 1540//1540 +f 386//386 1540//1540 1541//1541 +f 1542//1542 386//386 401//401 +f 234//234 1543//1543 1545//1545 +f 1543//1543 234//234 259//259 +f 252//252 259//259 234//234 +f 259//259 252//252 1538//1538 +f 231//231 1544//1544 1534//1534 +f 1544//1544 231//231 230//230 +f 387//387 1540//1540 388//388 +f 162//162 1543//1543 1537//1537 +f 1543//1543 162//162 1545//1545 +f 1541//1541 1540//1540 387//387 +f 1546//1546 860//860 149//149 +f 56//56 860//860 1546//1546 +f 860//860 56//56 54//54 +f 1547//1547 213//213 867//867 +f 213//213 1547//1547 156//156 +f 122//122 1548//1548 861//861 +f 1548//1548 122//122 866//866 +f 1553//1553 1599//1599 1573//1573 +f 1599//1599 1549//1549 1422//1422 +f 1599//1599 1403//1403 1549//1549 +f 1599//1599 1550//1550 1403//1403 +f 1599//1599 1551//1551 1550//1550 +f 1599//1599 1552//1552 1551//1551 +f 1599//1599 1553//1553 1552//1552 +f 1573//1573 1391//1391 1553//1553 +f 1573//1573 1386//1386 1391//1391 +f 1573//1573 1390//1390 1386//1386 +f 1573//1573 1554//1554 1390//1390 +f 1573//1573 1385//1385 1554//1554 +f 1573//1573 1421//1421 1385//1385 +f 1573//1573 1401//1401 1421//1421 +f 1573//1573 1556//1556 1401//1401 +f 1555//1555 1556//1556 1573//1573 +f 1556//1556 1555//1555 1565//1565 +f 1452//1452 1557//1557 1563//1563 +f 1454//1454 1398//1398 1558//1558 +f 1381//1381 1559//1559 1399//1399 +f 1566//1566 1381//1381 1380//1380 +f 1398//1398 1560//1560 1380//1380 +f 1528//1528 1558//1558 1567//1567 +f 1514//1514 1567//1567 1561//1561 +f 1557//1557 1562//1562 1561//1561 +f 1502//1502 1563//1563 1568//1568 +f 1513//1513 1568//1568 1564//1564 +f 1569//1569 1565//1565 1555//1555 +f 1381//1381 1566//1566 1559//1559 +f 1380//1380 1560//1560 1566//1566 +f 1398//1398 1454//1454 1560//1560 +f 1558//1558 1528//1528 1454//1454 +f 1567//1567 1514//1514 1528//1528 +f 1561//1561 1562//1562 1514//1514 +f 1557//1557 1452//1452 1562//1562 +f 1563//1563 1502//1502 1452//1452 +f 1568//1568 1513//1513 1502//1502 +f 1564//1564 1530//1530 1513//1513 +f 1564//1564 1569//1569 1530//1530 +f 1565//1565 1569//1569 1564//1564 +f 1573//1573 1570//1570 1555//1555 +f 1573//1573 1518//1518 1570//1570 +f 1573//1573 1516//1516 1518//1518 +f 1573//1573 1571//1571 1516//1516 +f 1573//1573 1458//1458 1571//1571 +f 1573//1573 1572//1572 1458//1458 +f 1573//1573 1520//1520 1572//1572 +f 1573//1573 1519//1519 1520//1520 +f 1573//1573 1574//1574 1519//1519 +f 1573//1573 1480//1480 1574//1574 +f 1578//1578 1480//1480 1573//1573 +f 1480//1480 1578//1578 1505//1505 +f 1505//1505 1578//1578 1465//1465 +f 1578//1578 1575//1575 1585//1585 +f 1578//1578 1456//1456 1583//1583 +f 1578//1578 1477//1477 1500//1500 +f 1578//1578 1448//1448 1580//1580 +f 1578//1578 1475//1475 1579//1579 +f 1578//1578 1462//1462 1576//1576 +f 1578//1578 1453//1453 1472//1472 +f 1453//1453 1578//1578 1449//1449 +f 1577//1577 1578//1578 1472//1472 +f 1497//1497 1578//1578 1577//1577 +f 1462//1462 1578//1578 1497//1497 +f 1461//1461 1578//1578 1576//1576 +f 1474//1474 1578//1578 1461//1461 +f 1475//1475 1578//1578 1474//1474 +f 1448//1448 1578//1578 1579//1579 +f 1477//1477 1578//1578 1580//1580 +f 1582//1582 1578//1578 1500//1500 +f 1581//1581 1578//1578 1582//1582 +f 1456//1456 1578//1578 1581//1581 +f 1463//1463 1578//1578 1583//1583 +f 1584//1584 1578//1578 1463//1463 +f 1575//1575 1578//1578 1584//1584 +f 1586//1586 1578//1578 1585//1585 +f 1464//1464 1578//1578 1586//1586 +f 1465//1465 1578//1578 1464//1464 +f 1593//1593 1604//1604 865//865 +f 1593//1593 1376//1376 1604//1604 +f 1593//1593 1382//1382 1376//1376 +f 1593//1593 1588//1588 1382//1382 +f 1593//1593 1587//1587 1588//1588 +f 1593//1593 1590//1590 1587//1587 +f 1593//1593 1589//1589 1590//1590 +f 1593//1593 1592//1592 1589//1589 +f 1593//1593 1591//1591 1592//1592 +f 1593//1593 1594//1594 1591//1591 +f 1593//1593 1404//1404 1594//1594 +f 1593//1593 1595//1595 1404//1404 +f 1593//1593 1433//1433 1595//1595 +f 1593//1593 1596//1596 1433//1433 +f 1593//1593 1432//1432 1596//1596 +f 1593//1593 1597//1597 1432//1432 +f 1593//1593 1598//1598 1597//1597 +f 1599//1599 1598//1598 1593//1593 +f 1598//1598 1599//1599 1405//1405 +f 1405//1405 1599//1599 1600//1600 +f 1600//1600 1599//1599 1435//1435 +f 1435//1435 1599//1599 1434//1434 +f 1434//1434 1599//1599 1601//1601 +f 1601//1601 1599//1599 1602//1602 +f 1602//1602 1599//1599 1422//1422 +f 1603//1603 865//865 1604//1604 +f 1605//1605 865//865 1603//1603 +f 1413//1413 865//865 1605//1605 +f 1607//1607 865//865 1413//1413 +f 1606//1606 865//865 1607//1607 +f 1384//1384 865//865 1606//1606 +f 1418//1418 865//865 1384//1384 +f 1395//1395 865//865 1418//1418 +f 1414//1414 865//865 1395//1395 +f 1416//1416 865//865 1414//1414 +f 1608//1608 865//865 1416//1416 +f 1609//1609 865//865 1608//1608 +f 1429//1429 865//865 1609//1609 +f 1443//1443 865//865 1429//1429 +f 1610//1610 865//865 1443//1443 +f 1426//1426 865//865 1610//1610 +f 1428//1428 865//865 1426//1426 +f 1427//1427 865//865 1428//1428 +f 1396//1396 865//865 1427//1427 +f 1611//1611 865//865 1396//1396 +f 1440//1440 865//865 1611//1611 +f 1612//1612 865//865 1440//1440 +f 1441//1441 865//865 1612//1612 +f 1613//1613 865//865 1441//1441 +f 1442//1442 865//865 1613//1613 +f 1446//1446 865//865 1442//1442 +f 1392//1392 865//865 1446//1446 +f 1614//1614 1627//1627 1408//1408 +f 1455//1455 1388//1388 1621//1621 +f 1617//1617 1618//1618 1616//1616 +f 1559//1559 1379//1379 1399//1399 +f 1615//1615 1379//1379 1559//1559 +f 1379//1379 1615//1615 1616//1616 +f 1617//1617 1616//1616 1615//1615 +f 1619//1619 1618//1618 1617//1617 +f 1618//1618 1619//1619 1410//1410 +f 1488//1488 1410//1410 1619//1619 +f 1410//1410 1488//1488 1620//1620 +f 1460//1460 1620//1620 1488//1488 +f 1620//1620 1460//1460 1621//1621 +f 1455//1455 1621//1621 1460//1460 +f 1495//1495 1388//1388 1455//1455 +f 1388//1388 1495//1495 1622//1622 +f 1496//1496 1622//1622 1495//1495 +f 1622//1622 1496//1496 1623//1623 +f 1624//1624 1623//1623 1496//1496 +f 1623//1623 1624//1624 1409//1409 +f 1494//1494 1409//1409 1624//1624 +f 1409//1409 1494//1494 1438//1438 +f 1491//1491 1438//1438 1494//1494 +f 1438//1438 1491//1491 1383//1383 +f 1512//1512 1383//1383 1491//1491 +f 1383//1383 1512//1512 1626//1626 +f 1625//1625 1626//1626 1512//1512 +f 1626//1626 1625//1625 1408//1408 +f 1614//1614 1408//1408 1625//1625 +f 1628//1628 1627//1627 1614//1614 +f 1627//1627 1628//1628 1629//1629 +f 1633//1633 1629//1629 1628//1628 +f 1629//1629 1633//1633 1630//1630 +f 1630//1630 1633//1633 1632//1632 +f 1631//1631 1632//1632 1633//1633 +f 1634//1634 1632//1632 1631//1631 +f 1632//1632 1634//1634 1406//1406 +f 1406//1406 1634//1634 1437//1437 +f 1490//1490 1437//1437 1634//1634 +f 1524//1524 1437//1437 1490//1490 +f 1437//1437 1524//1524 1635//1635 +f 1635//1635 1524//1524 1392//1392 +f 1525//1525 1392//1392 1524//1524 +f 1636//1636 1392//1392 1525//1525 +f 1392//1392 1636//1636 865//865 +f 864//864 1636//1636 1489//1489 +f 864//864 1489//1489 1637//1637 +f 864//864 1637//1637 1527//1527 +f 864//864 1510//1510 1482//1482 +f 864//864 1638//1638 1459//1459 +f 864//864 1639//1639 1449//1449 +f 864//864 1449//1449 1578//1578 +f 1639//1639 864//864 1506//1506 +f 1506//1506 864//864 1640//1640 +f 1640//1640 864//864 1487//1487 +f 1487//1487 864//864 1486//1486 +f 1486//1486 864//864 1459//1459 +f 1638//1638 864//864 1469//1469 +f 1469//1469 864//864 1646//1646 +f 1636//1636 864//864 865//865 +f 1467//1467 864//864 1527//1527 +f 1641//1641 864//864 1467//1467 +f 1508//1508 864//864 1641//1641 +f 1509//1509 864//864 1508//1508 +f 1642//1642 864//864 1509//1509 +f 1643//1643 864//864 1642//1642 +f 1521//1521 864//864 1643//1643 +f 1522//1522 864//864 1521//1521 +f 1510//1510 864//864 1522//1522 +f 1644//1644 864//864 1482//1482 +f 1645//1645 864//864 1644//1644 +f 1484//1484 864//864 1645//1645 +f 1511//1511 864//864 1484//1484 +f 1646//1646 864//864 1511//1511 +f 1648//1648 1780//1780 1647//1647 +f 1780//1780 1648//1648 1654//1654 +f 1649//1649 1651//1651 1650//1650 +f 1651//1651 1649//1649 1780//1780 +f 1651//1651 1780//1780 1654//1654 +f 1653//1653 1651//1651 1652//1652 +f 1651//1651 1653//1653 1650//1650 +f 1653//1653 1649//1649 1650//1650 +f 1649//1649 1653//1653 1781//1781 +f 1781//1781 1652//1652 1647//1647 +f 1647//1647 1652//1652 1648//1648 +f 1652//1652 1781//1781 1653//1653 +f 1651//1651 1648//1648 1652//1652 +f 1648//1648 1651//1651 1654//1654 +f 1660//1660 1656//1656 1662//1662 +f 1656//1656 1660//1660 1655//1655 +f 1656//1656 1657//1657 1661//1661 +f 1657//1657 1656//1656 1655//1655 +f 1659//1659 1657//1657 1658//1658 +f 1657//1657 1659//1659 1661//1661 +f 1659//1659 1660//1660 1662//1662 +f 1660//1660 1659//1659 1658//1658 +f 1657//1657 1660//1660 1658//1658 +f 1660//1660 1657//1657 1655//1655 +f 1659//1659 1656//1656 1661//1661 +f 1656//1656 1659//1659 1662//1662 +f 1663//1663 135//135 1713//1713 +f 135//135 1663//1663 144//144 +f 1664//1664 1666//1666 798//798 +f 148//148 1664//1664 1665//1665 +f 148//148 1665//1665 856//856 +f 148//148 856//856 858//858 +f 1664//1664 148//148 1666//1666 +f 1669//1669 1667//1667 1668//1668 +f 1667//1667 1669//1669 739//739 +f 1670//1670 1669//1669 1668//1668 +f 1669//1669 1670//1670 842//842 +f 842//842 1670//1670 845//845 +f 845//845 1670//1670 1671//1671 +f 1672//1672 1726//1726 1725//1725 +f 1726//1726 1672//1672 827//827 +f 827//827 1672//1672 1673//1673 +f 1673//1673 1672//1672 1674//1674 +f 1676//1676 1722//1722 1675//1675 +f 1676//1676 1675//1675 1710//1710 +f 1722//1722 1676//1676 1723//1723 +f 128//128 1684//1684 127//127 +f 128//128 1677//1677 1684//1684 +f 128//128 833//833 1677//1677 +f 128//128 1678//1678 833//833 +f 128//128 806//806 1678//1678 +f 128//128 853//853 806//806 +f 1694//1694 853//853 128//128 +f 1694//1694 854//854 853//853 +f 1694//1694 824//824 854//854 +f 1694//1694 1679//1679 824//824 +f 1679//1679 1694//1694 1682//1682 +f 1682//1682 1698//1698 1680//1680 +f 1682//1682 1680//1680 1681//1681 +f 1682//1682 1681//1681 819//819 +f 1682//1682 819//819 820//820 +f 1682//1682 820//820 1679//1679 +f 1698//1698 1682//1682 1683//1683 +f 1685//1685 1700//1700 1699//1699 +f 1684//1684 1700//1700 1685//1685 +f 1700//1700 1684//1684 1686//1686 +f 1686//1686 1684//1684 1687//1687 +f 1687//1687 1684//1684 765//765 +f 765//765 1684//1684 764//764 +f 764//764 1684//1684 1677//1677 +f 796//796 1688//1688 1689//1689 +f 786//786 1688//1688 796//796 +f 1666//1666 786//786 798//798 +f 786//786 1666//1666 1688//1688 +f 1690//1690 776//776 1770//1770 +f 1690//1690 775//775 776//776 +f 739//739 1690//1690 1667//1667 +f 1690//1690 739//739 775//775 +f 136//136 1693//1693 1691//1691 +f 1692//1692 136//136 1695//1695 +f 136//136 1692//1692 1693//1693 +f 1694//1694 1693//1693 1692//1692 +f 1693//1693 1694//1694 128//128 +f 1695//1695 137//137 147//147 +f 137//137 1695//1695 136//136 +f 1683//1683 858//858 829//829 +f 1683//1683 829//829 1696//1696 +f 1683//1683 1696//1696 1697//1697 +f 1683//1683 1697//1697 1698//1698 +f 858//858 1683//1683 148//148 +f 15//15 1671//1671 1670//1670 +f 1699//1699 1671//1671 15//15 +f 1671//1671 1699//1699 816//816 +f 816//816 1699//1699 840//840 +f 840//840 1699//1699 839//839 +f 839//839 1699//1699 1700//1700 +f 147//147 1701//1701 145//145 +f 1701//1701 147//147 137//137 +f 144//144 1701//1701 135//135 +f 1701//1701 144//144 145//145 +f 1730//1730 130//130 1702//1702 +f 1732//1732 130//130 1730//1730 +f 1703//1703 130//130 1732//1732 +f 1704//1704 130//130 1703//1703 +f 825//825 130//130 1704//1704 +f 1706//1706 130//130 825//825 +f 1705//1705 849//849 1728//1728 +f 849//849 1705//1705 822//822 +f 822//822 1705//1705 852//852 +f 852//852 1705//1705 1706//1706 +f 1706//1706 1705//1705 130//130 +f 233//233 1707//1707 1767//1767 +f 233//233 785//785 1707//1707 +f 143//143 785//785 233//233 +f 785//785 143//143 1714//1714 +f 774//774 1708//1708 770//770 +f 772//772 1708//1708 774//774 +f 737//737 1708//1708 772//772 +f 1708//1708 737//737 3//3 +f 1727//1727 1674//1674 1672//1672 +f 1674//1674 1727//1727 1709//1709 +f 1709//1709 1727//1727 744//744 +f 1710//1710 14//14 1676//1676 +f 835//835 14//14 1710//1710 +f 14//14 835//835 837//837 +f 1705//1705 1711//1711 130//130 +f 1711//1711 1705//1705 1712//1712 +f 1711//1711 1713//1713 131//131 +f 1712//1712 1713//1713 1711//1711 +f 1713//1713 1712//1712 1663//1663 +f 143//143 797//797 1714//1714 +f 1715//1715 797//797 143//143 +f 797//797 1715//1715 831//831 +f 831//831 1715//1715 832//832 +f 832//832 1715//1715 855//855 +f 738//738 3//3 737//737 +f 738//738 1716//1716 3//3 +f 1719//1719 738//738 1717//1717 +f 1719//1719 1717//1717 1718//1718 +f 1719//1719 1718//1718 844//844 +f 738//738 1719//1719 1716//1716 +f 1723//1723 844//844 814//814 +f 844//844 1720//1720 1719//1719 +f 1723//1723 814//814 1721//1721 +f 1723//1723 1721//1721 1722//1722 +f 844//844 1723//1723 1720//1720 +f 1725//1725 855//855 1715//1715 +f 1725//1725 1724//1724 855//855 +f 1724//1724 1725//1725 1726//1726 +f 1728//1728 744//744 1727//1727 +f 744//744 1728//1728 745//745 +f 745//745 1728//1728 767//767 +f 767//767 1728//1728 1729//1729 +f 1729//1729 1728//1728 849//849 +f 837//837 1733//1733 14//14 +f 1730//1730 837//837 1731//1731 +f 1730//1730 1731//1731 811//811 +f 1730//1730 811//811 809//809 +f 1730//1730 809//809 1732//1732 +f 837//837 1730//1730 1733//1733 +f 13//13 1734//1734 782//782 +f 22//22 755//755 1734//1734 +f 22//22 754//754 755//755 +f 22//22 1735//1735 754//754 +f 22//22 1736//1736 1735//1735 +f 1771//1771 1739//1739 16//16 +f 22//22 747//747 1736//1736 +f 22//22 1737//1737 747//747 +f 22//22 779//779 1737//1737 +f 1771//1771 16//16 6//6 +f 1739//1739 771//771 779//779 +f 1771//1771 6//6 5//5 +f 1739//1739 1771//1771 771//771 +f 1734//1734 13//13 12//12 +f 1734//1734 12//12 24//24 +f 1734//1734 24//24 20//20 +f 1734//1734 20//20 1738//1738 +f 1734//1734 1738//1738 22//22 +f 13//13 782//782 863//863 +f 779//779 22//22 1739//1739 +f 863//863 782//782 743//743 +f 1740//1740 863//863 743//743 +f 1741//1741 863//863 1740//1740 +f 1742//1742 863//863 1741//1741 +f 803//803 863//863 1742//1742 +f 1743//1743 863//863 803//803 +f 1745//1745 863//863 1743//1743 +f 863//863 1745//1745 1744//1744 +f 792//792 1744//1744 1745//1745 +f 788//788 1744//1744 792//792 +f 1746//1746 1744//1744 788//788 +f 1769//1769 1746//1746 1768//1768 +f 1746//1746 1769//1769 1744//1744 +f 1748//1748 1749//1749 862//862 +f 1747//1747 1749//1749 1748//1748 +f 783//783 1749//1749 1747//1747 +f 1749//1749 757//757 1750//1750 +f 1750//1750 757//757 23//23 +f 1753//1753 862//862 232//232 +f 741//741 862//862 740//740 +f 1748//1748 862//862 741//741 +f 862//862 1751//1751 740//740 +f 862//862 762//762 1751//1751 +f 862//862 758//758 762//762 +f 862//862 1752//1752 758//758 +f 862//862 1754//1754 1752//1752 +f 862//862 1753//1753 1754//1754 +f 232//232 1755//1755 1753//1753 +f 232//232 787//787 1755//1755 +f 232//232 1757//1757 787//787 +f 1756//1756 1757//1757 232//232 +f 1757//1757 1756//1756 793//793 +f 757//757 1749//1749 783//783 +f 1758//1758 23//23 757//757 +f 23//23 1758//1758 1759//1759 +f 1760//1760 1759//1759 1758//1758 +f 1759//1759 1760//1760 1761//1761 +f 1762//1762 1761//1761 1760//1760 +f 1761//1761 1762//1762 1763//1763 +f 1766//1766 1763//1763 1762//1762 +f 1763//1763 1766//1766 1764//1764 +f 1765//1765 1764//1764 1766//1766 +f 769//769 1764//1764 1765//1765 +f 1764//1764 769//769 9//9 +f 9//9 769//769 1//1 +f 1//1 769//769 2//2 +f 1756//1756 1767//1767 793//793 +f 1767//1767 1756//1756 233//233 +f 1688//1688 1768//1768 1689//1689 +f 1768//1768 1688//1688 1769//1769 +f 769//769 1708//1708 2//2 +f 1708//1708 769//769 770//770 +f 1770//1770 5//5 1690//1690 +f 5//5 1770//1770 1771//1771 +f 1772//1772 1773//1773 59//59 +f 1773//1773 1772//1772 1774//1774 +f 1775//1775 1777//1777 1776//1776 +f 1775//1775 1776//1776 56//56 +f 1775//1775 56//56 1546//1546 +f 1777//1777 1775//1775 456//456 +f 1776//1776 1772//1772 59//59 +f 1772//1772 1776//1776 1777//1777 +f 141//141 456//456 1775//1775 +f 1779//1779 456//456 141//141 +f 1779//1779 1778//1778 456//456 +f 1779//1779 1547//1547 1778//1778 +f 1547//1547 1779//1779 156//156 +f 141//141 1546//1546 149//149 +f 1546//1546 141//141 1775//1775 +f 1774//1774 493//493 1773//1773 +f 493//493 1774//1774 492//492 +f 1781//1781 1780//1780 1649//1649 +f 1780//1780 1781//1781 1647//1647 +# 3586 faces, 0 coords texture + +# End of File \ No newline at end of file diff --git a/tests/sla_print/sla_print_tests_main.cpp b/tests/sla_print/sla_print_tests_main.cpp index 457523e19..5952e5545 100644 --- a/tests/sla_print/sla_print_tests_main.cpp +++ b/tests/sla_print/sla_print_tests_main.cpp @@ -260,7 +260,7 @@ void test_support_model_collision( // Set head penetration to a small negative value which should ensure that // the supports will not touch the model body. - supportcfg.head_penetration_mm = -input_supportcfg.head_front_radius_mm; + supportcfg.head_penetration_mm = -1.; // 1 mm should be more than enough test_supports(obj_filename, supportcfg, byproducts); @@ -297,7 +297,8 @@ const char * const AROUND_PAD_TEST_OBJECTS[] = { const char *const SUPPORT_TEST_MODELS[] = { "cube_with_concave_hole_enlarged_standing.obj", - "A_upsidedown.obj" + "A_upsidedown.obj", + "extruder_idler.obj" }; } // namespace @@ -411,7 +412,7 @@ TEST(SLASupportGeneration, FloorSupportGeometryIsValid) { for (auto &fname: SUPPORT_TEST_MODELS) test_supports(fname, supportcfg); } -TEST(SLASupportGeneration, SupportsDoNotPierceModel) { +TEST(SLASupportGeneration, ElevatedSupportsDoNotPierceModel) { sla::SupportConfig supportcfg; @@ -419,6 +420,15 @@ TEST(SLASupportGeneration, SupportsDoNotPierceModel) { test_support_model_collision(fname, supportcfg); } +TEST(SLASupportGeneration, FloorSupportsDoNotPierceModel) { + + sla::SupportConfig supportcfg; + supportcfg.object_elevation_mm = 0; + + for (auto fname : SUPPORT_TEST_MODELS) + test_support_model_collision(fname, supportcfg); +} + TEST(SLARasterOutput, DefaultRasterShouldBeEmpty) { sla::Raster raster; ASSERT_TRUE(raster.empty()); From 2edd5abf06a61d802c115aeceddb9a2a3788494b Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 3 Oct 2019 17:18:03 +0200 Subject: [PATCH 38/53] Fix endless loop in pinhead creation. * Headless stick penetration value from global cfg * eliminate warnings --- src/libslic3r/SLA/SLASupportTreeBuilder.cpp | 3 +++ src/libslic3r/SLA/SLASupportTreeBuilder.hpp | 6 +++--- src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp | 7 ++++++- tests/sla_print/sla_print_tests_main.cpp | 3 ++- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/SLA/SLASupportTreeBuilder.cpp b/src/libslic3r/SLA/SLASupportTreeBuilder.cpp index 3fa9f3b98..2e0310ed8 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuilder.cpp +++ b/src/libslic3r/SLA/SLASupportTreeBuilder.cpp @@ -171,6 +171,9 @@ Head::Head(double r_big_mm, , width_mm(length_mm) , penetration_mm(penetration) { + assert(width_mm > 0.); + assert(r_back_mm > 0.); + assert(r_pin_mm > 0.); // We create two spheres which will be connected with a robe that fits // both circles perfectly. diff --git a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp index 95fcdcc32..c0d9f04c0 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuilder.hpp +++ b/src/libslic3r/SLA/SLASupportTreeBuilder.hpp @@ -311,7 +311,7 @@ public: if (m_pillars.capacity() < m_heads.size()) m_pillars.reserve(m_heads.size() * 10); - assert(headid >= 0 && headid < m_head_indices.size()); + assert(headid >= 0 && size_t(headid) < m_head_indices.size()); Head &head = m_heads[m_head_indices[size_t(headid)]]; m_pillars.emplace_back(head, std::forward(args)...); @@ -328,7 +328,7 @@ public: void add_pillar_base(long pid, double baseheight = 3, double radius = 2) { std::lock_guard lk(m_mutex); - assert(pid >= 0 && pid < m_pillars.size()); + assert(pid >= 0 && size_t(pid) < m_pillars.size()); m_pillars[size_t(pid)].add_base(baseheight, radius); } @@ -398,7 +398,7 @@ public: const Bridge& add_bridge(long headid, const Vec3d &endp, size_t s = 45) { std::lock_guard lk(m_mutex); - assert(headid >= 0 && headid < m_head_indices.size()); + assert(headid >= 0 && size_t(headid) < m_head_indices.size()); Head &h = m_heads[m_head_indices[size_t(headid)]]; m_bridges.emplace_back(h.junction_point(), endp, h.r_back_mm, s); diff --git a/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp index 60e8f15b7..392a963e1 100644 --- a/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp +++ b/src/libslic3r/SLA/SLASupportTreeBuildsteps.cpp @@ -1096,6 +1096,11 @@ void SupportTreeBuildsteps::routing_to_model() double dist = distance(endp, hitp) + m_cfg.head_penetration_mm; double w = dist - 2 * head.r_pin_mm - head.r_back_mm; + if (w < 0.) { + BOOST_LOG_TRIVIAL(error) << "Pinhead width is negative!"; + w = 0.; + } + Head tailhead(head.r_back_mm, head.r_pin_mm, w, @@ -1348,7 +1353,7 @@ void SupportTreeBuildsteps::routing_headless() m_thr(); const auto R = double(m_support_pts[i].head_front_radius); - const double HWIDTH_MM = R/3; + const double HWIDTH_MM = m_cfg.head_penetration_mm; // Exact support position Vec3d sph = m_support_pts[i].pos.cast(); diff --git a/tests/sla_print/sla_print_tests_main.cpp b/tests/sla_print/sla_print_tests_main.cpp index 5952e5545..bd2475f41 100644 --- a/tests/sla_print/sla_print_tests_main.cpp +++ b/tests/sla_print/sla_print_tests_main.cpp @@ -260,7 +260,7 @@ void test_support_model_collision( // Set head penetration to a small negative value which should ensure that // the supports will not touch the model body. - supportcfg.head_penetration_mm = -1.; // 1 mm should be more than enough + supportcfg.head_penetration_mm = -0.1; test_supports(obj_filename, supportcfg, byproducts); @@ -277,6 +277,7 @@ void test_support_model_collision( const ExPolygons &mod_slice = byproducts.model_slices[n]; Polygons intersections = intersection(sup_slice, mod_slice); + notouch = notouch && intersections.empty(); } From fe7f2e4d95155f6f79a194f52fd1b8e2af0c50eb Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Fri, 4 Oct 2019 11:04:26 +0200 Subject: [PATCH 39/53] Catch2 test framework integration. --- cmake/modules/Catch2/Catch.cmake | 175 + cmake/modules/Catch2/CatchAddTests.cmake | 106 + .../Catch2/ParseAndAddCatchTests.cmake | 225 + tests/CMakeLists.txt | 49 +- tests/catch2/LICENSE.txt | 23 + tests/catch2/VERSION.txt | 2 + tests/catch2/catch.hpp | 17075 ++++++++++++++++ tests/catch2/catch_reporter_automake.hpp | 62 + tests/catch2/catch_reporter_tap.hpp | 253 + tests/catch2/catch_reporter_teamcity.hpp | 220 + tests/example/CMakeLists.txt | 5 + tests/example/example_tests_main.cpp | 6 + tests/timeutils/CMakeLists.txt | 3 +- tests/timeutils/timeutils_tests_main.cpp | 21 +- 14 files changed, 18205 insertions(+), 20 deletions(-) create mode 100644 cmake/modules/Catch2/Catch.cmake create mode 100644 cmake/modules/Catch2/CatchAddTests.cmake create mode 100644 cmake/modules/Catch2/ParseAndAddCatchTests.cmake create mode 100644 tests/catch2/LICENSE.txt create mode 100644 tests/catch2/VERSION.txt create mode 100644 tests/catch2/catch.hpp create mode 100644 tests/catch2/catch_reporter_automake.hpp create mode 100644 tests/catch2/catch_reporter_tap.hpp create mode 100644 tests/catch2/catch_reporter_teamcity.hpp create mode 100644 tests/example/CMakeLists.txt create mode 100644 tests/example/example_tests_main.cpp diff --git a/cmake/modules/Catch2/Catch.cmake b/cmake/modules/Catch2/Catch.cmake new file mode 100644 index 000000000..486e32331 --- /dev/null +++ b/cmake/modules/Catch2/Catch.cmake @@ -0,0 +1,175 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#[=======================================================================[.rst: +Catch +----- + +This module defines a function to help use the Catch test framework. + +The :command:`catch_discover_tests` discovers tests by asking the compiled test +executable to enumerate its tests. This does not require CMake to be re-run +when tests change. However, it may not work in a cross-compiling environment, +and setting test properties is less convenient. + +This command is intended to replace use of :command:`add_test` to register +tests, and will create a separate CTest test for each Catch test case. Note +that this is in some cases less efficient, as common set-up and tear-down logic +cannot be shared by multiple test cases executing in the same instance. +However, it provides more fine-grained pass/fail information to CTest, which is +usually considered as more beneficial. By default, the CTest test name is the +same as the Catch name; see also ``TEST_PREFIX`` and ``TEST_SUFFIX``. + +.. command:: catch_discover_tests + + Automatically add tests with CTest by querying the compiled test executable + for available tests:: + + catch_discover_tests(target + [TEST_SPEC arg1...] + [EXTRA_ARGS arg1...] + [WORKING_DIRECTORY dir] + [TEST_PREFIX prefix] + [TEST_SUFFIX suffix] + [PROPERTIES name1 value1...] + [TEST_LIST var] + ) + + ``catch_discover_tests`` sets up a post-build command on the test executable + that generates the list of tests by parsing the output from running the test + with the ``--list-test-names-only`` argument. This ensures that the full + list of tests is obtained. Since test discovery occurs at build time, it is + not necessary to re-run CMake when the list of tests changes. + However, it requires that :prop_tgt:`CROSSCOMPILING_EMULATOR` is properly set + in order to function in a cross-compiling environment. + + Additionally, setting properties on tests is somewhat less convenient, since + the tests are not available at CMake time. Additional test properties may be + assigned to the set of tests as a whole using the ``PROPERTIES`` option. If + more fine-grained test control is needed, custom content may be provided + through an external CTest script using the :prop_dir:`TEST_INCLUDE_FILES` + directory property. The set of discovered tests is made accessible to such a + script via the ``_TESTS`` variable. + + The options are: + + ``target`` + Specifies the Catch executable, which must be a known CMake executable + target. CMake will substitute the location of the built executable when + running the test. + + ``TEST_SPEC arg1...`` + Specifies test cases, wildcarded test cases, tags and tag expressions to + pass to the Catch executable with the ``--list-test-names-only`` argument. + + ``EXTRA_ARGS arg1...`` + Any extra arguments to pass on the command line to each test case. + + ``WORKING_DIRECTORY dir`` + Specifies the directory in which to run the discovered test cases. If this + option is not provided, the current binary directory is used. + + ``TEST_PREFIX prefix`` + Specifies a ``prefix`` to be prepended to the name of each discovered test + case. This can be useful when the same test executable is being used in + multiple calls to ``catch_discover_tests()`` but with different + ``TEST_SPEC`` or ``EXTRA_ARGS``. + + ``TEST_SUFFIX suffix`` + Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of + every discovered test case. Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may + be specified. + + ``PROPERTIES name1 value1...`` + Specifies additional properties to be set on all tests discovered by this + invocation of ``catch_discover_tests``. + + ``TEST_LIST var`` + Make the list of tests available in the variable ``var``, rather than the + default ``_TESTS``. This can be useful when the same test + executable is being used in multiple calls to ``catch_discover_tests()``. + Note that this variable is only available in CTest. + +#]=======================================================================] + +#------------------------------------------------------------------------------ +function(catch_discover_tests TARGET) + cmake_parse_arguments( + "" + "" + "TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST" + "TEST_SPEC;EXTRA_ARGS;PROPERTIES" + ${ARGN} + ) + + if(NOT _WORKING_DIRECTORY) + set(_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") + endif() + if(NOT _TEST_LIST) + set(_TEST_LIST ${TARGET}_TESTS) + endif() + + ## Generate a unique name based on the extra arguments + string(SHA1 args_hash "${_TEST_SPEC} ${_EXTRA_ARGS}") + string(SUBSTRING ${args_hash} 0 7 args_hash) + + # Define rule to generate test list for aforementioned test executable + set(ctest_include_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_include-${args_hash}.cmake") + set(ctest_tests_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_tests-${args_hash}.cmake") + get_property(crosscompiling_emulator + TARGET ${TARGET} + PROPERTY CROSSCOMPILING_EMULATOR + ) + add_custom_command( + TARGET ${TARGET} POST_BUILD + BYPRODUCTS "${ctest_tests_file}" + COMMAND "${CMAKE_COMMAND}" + -D "TEST_TARGET=${TARGET}" + -D "TEST_EXECUTABLE=$" + -D "TEST_EXECUTOR=${crosscompiling_emulator}" + -D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}" + -D "TEST_SPEC=${_TEST_SPEC}" + -D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}" + -D "TEST_PROPERTIES=${_PROPERTIES}" + -D "TEST_PREFIX=${_TEST_PREFIX}" + -D "TEST_SUFFIX=${_TEST_SUFFIX}" + -D "TEST_LIST=${_TEST_LIST}" + -D "CTEST_FILE=${ctest_tests_file}" + -P "${_CATCH_DISCOVER_TESTS_SCRIPT}" + VERBATIM + ) + + file(WRITE "${ctest_include_file}" + "if(EXISTS \"${ctest_tests_file}\")\n" + " include(\"${ctest_tests_file}\")\n" + "else()\n" + " add_test(${TARGET}_NOT_BUILT-${args_hash} ${TARGET}_NOT_BUILT-${args_hash})\n" + "endif()\n" + ) + + if(NOT ${CMAKE_VERSION} VERSION_LESS "3.10.0") + # Add discovered tests to directory TEST_INCLUDE_FILES + set_property(DIRECTORY + APPEND PROPERTY TEST_INCLUDE_FILES "${ctest_include_file}" + ) + else() + # Add discovered tests as directory TEST_INCLUDE_FILE if possible + get_property(test_include_file_set DIRECTORY PROPERTY TEST_INCLUDE_FILE SET) + if (NOT ${test_include_file_set}) + set_property(DIRECTORY + PROPERTY TEST_INCLUDE_FILE "${ctest_include_file}" + ) + else() + message(FATAL_ERROR + "Cannot set more than one TEST_INCLUDE_FILE" + ) + endif() + endif() + +endfunction() + +############################################################################### + +set(_CATCH_DISCOVER_TESTS_SCRIPT + ${CMAKE_CURRENT_LIST_DIR}/CatchAddTests.cmake +) diff --git a/cmake/modules/Catch2/CatchAddTests.cmake b/cmake/modules/Catch2/CatchAddTests.cmake new file mode 100644 index 000000000..ca5ebc17e --- /dev/null +++ b/cmake/modules/Catch2/CatchAddTests.cmake @@ -0,0 +1,106 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +set(prefix "${TEST_PREFIX}") +set(suffix "${TEST_SUFFIX}") +set(spec ${TEST_SPEC}) +set(extra_args ${TEST_EXTRA_ARGS}) +set(properties ${TEST_PROPERTIES}) +set(script) +set(suite) +set(tests) + +function(add_command NAME) + set(_args "") + foreach(_arg ${ARGN}) + if(_arg MATCHES "[^-./:a-zA-Z0-9_]") + set(_args "${_args} [==[${_arg}]==]") # form a bracket_argument + else() + set(_args "${_args} ${_arg}") + endif() + endforeach() + set(script "${script}${NAME}(${_args})\n" PARENT_SCOPE) +endfunction() + +macro(_add_catch_test_labels LINE) + # convert to list of tags + string(REPLACE "][" "]\\;[" tags ${line}) + + add_command( + set_tests_properties "${prefix}${test}${suffix}" + PROPERTIES + LABELS "${tags}" + ) +endmacro() + +macro(_add_catch_test LINE) + set(test ${line}) + # use escape commas to handle properly test cases with commans inside the name + string(REPLACE "," "\\," test_name ${test}) + # ...and add to script + add_command( + add_test "${prefix}${test}${suffix}" + ${TEST_EXECUTOR} + "${TEST_EXECUTABLE}" + "${test_name}" + ${extra_args} + ) + + add_command( + set_tests_properties "${prefix}${test}${suffix}" + PROPERTIES + WORKING_DIRECTORY "${TEST_WORKING_DIR}" + ${properties} + ) + list(APPEND tests "${prefix}${test}${suffix}") +endmacro() + +# Run test executable to get list of available tests +if(NOT EXISTS "${TEST_EXECUTABLE}") + message(FATAL_ERROR + "Specified test executable '${TEST_EXECUTABLE}' does not exist" + ) +endif() +execute_process( + COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" ${spec} --list-tests + OUTPUT_VARIABLE output + RESULT_VARIABLE result +) +# Catch --list-test-names-only reports the number of tests, so 0 is... surprising +if(${result} EQUAL 0) + message(WARNING + "Test executable '${TEST_EXECUTABLE}' contains no tests!\n" + ) +elseif(${result} LESS 0) + message(FATAL_ERROR + "Error running test executable '${TEST_EXECUTABLE}':\n" + " Result: ${result}\n" + " Output: ${output}\n" + ) +endif() + +string(REPLACE "\n" ";" output "${output}") +set(test) +set(tags_regex "(\\[([^\\[]*)\\])+$") + +# Parse output +foreach(line ${output}) + # lines without leading whitespaces are catch output not tests + if(${line} MATCHES "^[ \t]+") + # strip leading spaces and tabs + string(REGEX REPLACE "^[ \t]+" "" line ${line}) + + if(${line} MATCHES "${tags_regex}") + _add_catch_test_labels(${line}) + else() + _add_catch_test(${line}) + endif() + endif() +endforeach() + +# Create a list of all discovered tests, which users may use to e.g. set +# properties on the tests +add_command(set ${TEST_LIST} ${tests}) + +# Write CTest script +file(WRITE "${CTEST_FILE}" "${script}") diff --git a/cmake/modules/Catch2/ParseAndAddCatchTests.cmake b/cmake/modules/Catch2/ParseAndAddCatchTests.cmake new file mode 100644 index 000000000..925d93281 --- /dev/null +++ b/cmake/modules/Catch2/ParseAndAddCatchTests.cmake @@ -0,0 +1,225 @@ +#==================================================================================================# +# supported macros # +# - TEST_CASE, # +# - SCENARIO, # +# - TEST_CASE_METHOD, # +# - CATCH_TEST_CASE, # +# - CATCH_SCENARIO, # +# - CATCH_TEST_CASE_METHOD. # +# # +# Usage # +# 1. make sure this module is in the path or add this otherwise: # +# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") # +# 2. make sure that you've enabled testing option for the project by the call: # +# enable_testing() # +# 3. add the lines to the script for testing target (sample CMakeLists.txt): # +# project(testing_target) # +# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") # +# enable_testing() # +# # +# find_path(CATCH_INCLUDE_DIR "catch.hpp") # +# include_directories(${INCLUDE_DIRECTORIES} ${CATCH_INCLUDE_DIR}) # +# # +# file(GLOB SOURCE_FILES "*.cpp") # +# add_executable(${PROJECT_NAME} ${SOURCE_FILES}) # +# # +# include(ParseAndAddCatchTests) # +# ParseAndAddCatchTests(${PROJECT_NAME}) # +# # +# The following variables affect the behavior of the script: # +# # +# PARSE_CATCH_TESTS_VERBOSE (Default OFF) # +# -- enables debug messages # +# PARSE_CATCH_TESTS_NO_HIDDEN_TESTS (Default OFF) # +# -- excludes tests marked with [!hide], [.] or [.foo] tags # +# PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME (Default ON) # +# -- adds fixture class name to the test name # +# PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME (Default ON) # +# -- adds cmake target name to the test name # +# PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS (Default OFF) # +# -- causes CMake to rerun when file with tests changes so that new tests will be discovered # +# # +# One can also set (locally) the optional variable OptionalCatchTestLauncher to precise the way # +# a test should be run. For instance to use test MPI, one can write # +# set(OptionalCatchTestLauncher ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NUMPROC}) # +# just before calling this ParseAndAddCatchTests function # +# # +# The AdditionalCatchParameters optional variable can be used to pass extra argument to the test # +# command. For example, to include successful tests in the output, one can write # +# set(AdditionalCatchParameters --success) # +# # +# After the script, the ParseAndAddCatchTests_TESTS property for the target, and for each source # +# file in the target is set, and contains the list of the tests extracted from that target, or # +# from that file. This is useful, for example to add further labels or properties to the tests. # +# # +#==================================================================================================# + +if (CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.8) + message(FATAL_ERROR "ParseAndAddCatchTests requires CMake 2.8.8 or newer") +endif() + +option(PARSE_CATCH_TESTS_VERBOSE "Print Catch to CTest parser debug messages" OFF) +option(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS "Exclude tests with [!hide], [.] or [.foo] tags" OFF) +option(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME "Add fixture class name to the test name" ON) +option(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME "Add target name to the test name" ON) +option(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS "Add test file to CMAKE_CONFIGURE_DEPENDS property" OFF) + +function(ParseAndAddCatchTests_PrintDebugMessage) + if(PARSE_CATCH_TESTS_VERBOSE) + message(STATUS "ParseAndAddCatchTests: ${ARGV}") + endif() +endfunction() + +# This removes the contents between +# - block comments (i.e. /* ... */) +# - full line comments (i.e. // ... ) +# contents have been read into '${CppCode}'. +# !keep partial line comments +function(ParseAndAddCatchTests_RemoveComments CppCode) + string(ASCII 2 CMakeBeginBlockComment) + string(ASCII 3 CMakeEndBlockComment) + string(REGEX REPLACE "/\\*" "${CMakeBeginBlockComment}" ${CppCode} "${${CppCode}}") + string(REGEX REPLACE "\\*/" "${CMakeEndBlockComment}" ${CppCode} "${${CppCode}}") + string(REGEX REPLACE "${CMakeBeginBlockComment}[^${CMakeEndBlockComment}]*${CMakeEndBlockComment}" "" ${CppCode} "${${CppCode}}") + string(REGEX REPLACE "\n[ \t]*//+[^\n]+" "\n" ${CppCode} "${${CppCode}}") + + set(${CppCode} "${${CppCode}}" PARENT_SCOPE) +endfunction() + +# Worker function +function(ParseAndAddCatchTests_ParseFile SourceFile TestTarget) + # If SourceFile is an object library, do not scan it (as it is not a file). Exit without giving a warning about a missing file. + if(SourceFile MATCHES "\\\$") + ParseAndAddCatchTests_PrintDebugMessage("Detected OBJECT library: ${SourceFile} this will not be scanned for tests.") + return() + endif() + # According to CMake docs EXISTS behavior is well-defined only for full paths. + get_filename_component(SourceFile ${SourceFile} ABSOLUTE) + if(NOT EXISTS ${SourceFile}) + message(WARNING "Cannot find source file: ${SourceFile}") + return() + endif() + ParseAndAddCatchTests_PrintDebugMessage("parsing ${SourceFile}") + file(STRINGS ${SourceFile} Contents NEWLINE_CONSUME) + + # Remove block and fullline comments + ParseAndAddCatchTests_RemoveComments(Contents) + + # Find definition of test names + string(REGEX MATCHALL "[ \t]*(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^\)]+\\)+[ \t\n]*{+[ \t]*(//[^\n]*[Tt][Ii][Mm][Ee][Oo][Uu][Tt][ \t]*[0-9]+)*" Tests "${Contents}") + + if(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS AND Tests) + ParseAndAddCatchTests_PrintDebugMessage("Adding ${SourceFile} to CMAKE_CONFIGURE_DEPENDS property") + set_property( + DIRECTORY + APPEND + PROPERTY CMAKE_CONFIGURE_DEPENDS ${SourceFile} + ) + endif() + + foreach(TestName ${Tests}) + # Strip newlines + string(REGEX REPLACE "\\\\\n|\n" "" TestName "${TestName}") + + # Get test type and fixture if applicable + string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^,^\"]*" TestTypeAndFixture "${TestName}") + string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)" TestType "${TestTypeAndFixture}") + string(REGEX REPLACE "${TestType}\\([ \t]*" "" TestFixture "${TestTypeAndFixture}") + + # Get string parts of test definition + string(REGEX MATCHALL "\"+([^\\^\"]|\\\\\")+\"+" TestStrings "${TestName}") + + # Strip wrapping quotation marks + string(REGEX REPLACE "^\"(.*)\"$" "\\1" TestStrings "${TestStrings}") + string(REPLACE "\";\"" ";" TestStrings "${TestStrings}") + + # Validate that a test name and tags have been provided + list(LENGTH TestStrings TestStringsLength) + if(TestStringsLength GREATER 2 OR TestStringsLength LESS 1) + message(FATAL_ERROR "You must provide a valid test name and tags for all tests in ${SourceFile}") + endif() + + # Assign name and tags + list(GET TestStrings 0 Name) + if("${TestType}" STREQUAL "SCENARIO") + set(Name "Scenario: ${Name}") + endif() + if(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME AND TestFixture) + set(CTestName "${TestFixture}:${Name}") + else() + set(CTestName "${Name}") + endif() + if(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME) + set(CTestName "${TestTarget}:${CTestName}") + endif() + # add target to labels to enable running all tests added from this target + set(Labels ${TestTarget}) + if(TestStringsLength EQUAL 2) + list(GET TestStrings 1 Tags) + string(TOLOWER "${Tags}" Tags) + # remove target from labels if the test is hidden + if("${Tags}" MATCHES ".*\\[!?(hide|\\.)\\].*") + list(REMOVE_ITEM Labels ${TestTarget}) + endif() + string(REPLACE "]" ";" Tags "${Tags}") + string(REPLACE "[" "" Tags "${Tags}") + else() + # unset tags variable from previous loop + unset(Tags) + endif() + + list(APPEND Labels ${Tags}) + + set(HiddenTagFound OFF) + foreach(label ${Labels}) + string(REGEX MATCH "^!hide|^\\." result ${label}) + if(result) + set(HiddenTagFound ON) + break() + endif(result) + endforeach(label) + if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_LESS "3.9") + ParseAndAddCatchTests_PrintDebugMessage("Skipping test \"${CTestName}\" as it has [!hide], [.] or [.foo] label") + else() + ParseAndAddCatchTests_PrintDebugMessage("Adding test \"${CTestName}\"") + if(Labels) + ParseAndAddCatchTests_PrintDebugMessage("Setting labels to ${Labels}") + endif() + + # Escape commas in the test spec + string(REPLACE "," "\\," Name ${Name}) + + # Add the test and set its properties + add_test(NAME "\"${CTestName}\"" COMMAND ${OptionalCatchTestLauncher} $ ${Name} ${AdditionalCatchParameters}) + # Old CMake versions do not document VERSION_GREATER_EQUAL, so we use VERSION_GREATER with 3.8 instead + if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_GREATER "3.8") + ParseAndAddCatchTests_PrintDebugMessage("Setting DISABLED test property") + set_tests_properties("\"${CTestName}\"" PROPERTIES DISABLED ON) + else() + set_tests_properties("\"${CTestName}\"" PROPERTIES FAIL_REGULAR_EXPRESSION "No tests ran" + LABELS "${Labels}") + endif() + set_property( + TARGET ${TestTarget} + APPEND + PROPERTY ParseAndAddCatchTests_TESTS "\"${CTestName}\"") + set_property( + SOURCE ${SourceFile} + APPEND + PROPERTY ParseAndAddCatchTests_TESTS "\"${CTestName}\"") + endif() + + + endforeach() +endfunction() + +# entry point +function(ParseAndAddCatchTests TestTarget) + ParseAndAddCatchTests_PrintDebugMessage("Started parsing ${TestTarget}") + get_target_property(SourceFiles ${TestTarget} SOURCES) + ParseAndAddCatchTests_PrintDebugMessage("Found the following sources: ${SourceFiles}") + foreach(SourceFile ${SourceFiles}) + ParseAndAddCatchTests_ParseFile(${SourceFile} ${TestTarget}) + endforeach() + ParseAndAddCatchTests_PrintDebugMessage("Finished parsing ${TestTarget}") +endfunction() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1246c3043..9c4a75857 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,13 +1,50 @@ # TODO Add individual tests as executables in separate directories # add_subirectory() -find_package(GTest REQUIRED) - set(TEST_DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data) file(TO_NATIVE_PATH "${TEST_DATA_DIR}" TEST_DATA_DIR) -add_library(test_common INTERFACE) -target_compile_definitions(test_common INTERFACE TEST_DATA_DIR="${TEST_DATA_DIR}") -target_link_libraries(test_common INTERFACE GTest::GTest GTest::Main) +add_library(Catch2 INTERFACE) +list (APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules/Catch2) +target_include_directories(Catch2 INTERFACE ${CMAKE_CURRENT_LIST_DIR}) +add_library(Catch2::Catch2 ALIAS Catch2) +include(Catch) + +add_library(test_catch2_common INTERFACE) +target_compile_definitions(test_catch2_common INTERFACE TEST_DATA_DIR="${TEST_DATA_DIR}") +target_link_libraries(test_catch2_common INTERFACE Catch2::Catch2) + +add_library(test_common INTERFACE) +target_link_libraries(test_common INTERFACE test_catch2_common) + +# DEPRECATED: +find_package(GTest REQUIRED) +add_library(test_gtest_common INTERFACE) +target_compile_definitions(test_gtest_common INTERFACE TEST_DATA_DIR="${TEST_DATA_DIR}") +target_link_libraries(test_gtest_common INTERFACE GTest::GTest GTest::Main) + +function(prusaslicer_discover_tests TARGET) + catch_discover_tests(${TARGET}) +endfunction() + +macro(subdirlist result curdir) + file(GLOB children RELATIVE ${curdir} ${curdir}/*) + set(dirlist "") + foreach(child ${children}) + if(IS_DIRECTORY ${curdir}/${child} AND NOT ${child} STREQUAL "catch2" ) + list(APPEND dirlist ${child}) + endif() + endforeach() + set(${result} ${dirlist}) +endmacro() + +subdirlist(SUBDIRS ${CMAKE_CURRENT_LIST_DIR}) +message(STATUS ${SUBDIRS}) + +foreach(subdir ${SUBDIRS}) + add_subdirectory(${subdir}) +endforeach() + +#add_subdirectory(timeutils) +#add_subdirectory(example) -add_subdirectory(timeutils) diff --git a/tests/catch2/LICENSE.txt b/tests/catch2/LICENSE.txt new file mode 100644 index 000000000..36b7cd93c --- /dev/null +++ b/tests/catch2/LICENSE.txt @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/tests/catch2/VERSION.txt b/tests/catch2/VERSION.txt new file mode 100644 index 000000000..587a8125d --- /dev/null +++ b/tests/catch2/VERSION.txt @@ -0,0 +1,2 @@ +2.9.2 g2c869e1 + diff --git a/tests/catch2/catch.hpp b/tests/catch2/catch.hpp new file mode 100644 index 000000000..5feb2a4be --- /dev/null +++ b/tests/catch2/catch.hpp @@ -0,0 +1,17075 @@ +/* + * Catch v2.9.2 + * Generated: 2019-08-08 13:35:12.279703 + * ---------------------------------------------------------- + * This file has been merged from multiple headers. Please don't edit it directly + * Copyright (c) 2019 Two Blue Cubes Ltd. All rights reserved. + * + * Distributed under the Boost Software License, Version 1.0. (See accompanying + * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + */ +#ifndef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED +#define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED +// start catch.hpp + + +#define CATCH_VERSION_MAJOR 2 +#define CATCH_VERSION_MINOR 9 +#define CATCH_VERSION_PATCH 2 + +#ifdef __clang__ +# pragma clang system_header +#elif defined __GNUC__ +# pragma GCC system_header +#endif + +// start catch_suppress_warnings.h + +#ifdef __clang__ +# ifdef __ICC // icpc defines the __clang__ macro +# pragma warning(push) +# pragma warning(disable: 161 1682) +# else // __ICC +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wpadded" +# pragma clang diagnostic ignored "-Wswitch-enum" +# pragma clang diagnostic ignored "-Wcovered-switch-default" +# endif +#elif defined __GNUC__ + // Because REQUIREs trigger GCC's -Wparentheses, and because still + // supported version of g++ have only buggy support for _Pragmas, + // Wparentheses have to be suppressed globally. +# pragma GCC diagnostic ignored "-Wparentheses" // See #674 for details + +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wunused-variable" +# pragma GCC diagnostic ignored "-Wpadded" +#endif +// end catch_suppress_warnings.h +#if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER) +# define CATCH_IMPL +# define CATCH_CONFIG_ALL_PARTS +#endif + +// In the impl file, we want to have access to all parts of the headers +// Can also be used to sanely support PCHs +#if defined(CATCH_CONFIG_ALL_PARTS) +# define CATCH_CONFIG_EXTERNAL_INTERFACES +# if defined(CATCH_CONFIG_DISABLE_MATCHERS) +# undef CATCH_CONFIG_DISABLE_MATCHERS +# endif +# if !defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER) +# define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER +# endif +#endif + +#if !defined(CATCH_CONFIG_IMPL_ONLY) +// start catch_platform.h + +#ifdef __APPLE__ +# include +# if TARGET_OS_OSX == 1 +# define CATCH_PLATFORM_MAC +# elif TARGET_OS_IPHONE == 1 +# define CATCH_PLATFORM_IPHONE +# endif + +#elif defined(linux) || defined(__linux) || defined(__linux__) +# define CATCH_PLATFORM_LINUX + +#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || defined(__MINGW32__) +# define CATCH_PLATFORM_WINDOWS +#endif + +// end catch_platform.h + +#ifdef CATCH_IMPL +# ifndef CLARA_CONFIG_MAIN +# define CLARA_CONFIG_MAIN_NOT_DEFINED +# define CLARA_CONFIG_MAIN +# endif +#endif + +// start catch_user_interfaces.h + +namespace Catch { + unsigned int rngSeed(); +} + +// end catch_user_interfaces.h +// start catch_tag_alias_autoregistrar.h + +// start catch_common.h + +// start catch_compiler_capabilities.h + +// Detect a number of compiler features - by compiler +// The following features are defined: +// +// CATCH_CONFIG_COUNTER : is the __COUNTER__ macro supported? +// CATCH_CONFIG_WINDOWS_SEH : is Windows SEH supported? +// CATCH_CONFIG_POSIX_SIGNALS : are POSIX signals supported? +// CATCH_CONFIG_DISABLE_EXCEPTIONS : Are exceptions enabled? +// **************** +// Note to maintainers: if new toggles are added please document them +// in configuration.md, too +// **************** + +// In general each macro has a _NO_ form +// (e.g. CATCH_CONFIG_NO_POSIX_SIGNALS) which disables the feature. +// Many features, at point of detection, define an _INTERNAL_ macro, so they +// can be combined, en-mass, with the _NO_ forms later. + +#ifdef __cplusplus + +# if (__cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L) +# define CATCH_CPP14_OR_GREATER +# endif + +# if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) +# define CATCH_CPP17_OR_GREATER +# endif + +#endif + +#if defined(CATCH_CPP17_OR_GREATER) +# define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS +#endif + +#ifdef __clang__ + +# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + _Pragma( "clang diagnostic push" ) \ + _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) \ + _Pragma( "clang diagnostic ignored \"-Wglobal-constructors\"") +# define CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \ + _Pragma( "clang diagnostic pop" ) + +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + _Pragma( "clang diagnostic push" ) \ + _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) +# define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS \ + _Pragma( "clang diagnostic pop" ) + +# define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \ + _Pragma( "clang diagnostic push" ) \ + _Pragma( "clang diagnostic ignored \"-Wunused-variable\"" ) +# define CATCH_INTERNAL_UNSUPPRESS_UNUSED_WARNINGS \ + _Pragma( "clang diagnostic pop" ) + +# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ + _Pragma( "clang diagnostic push" ) \ + _Pragma( "clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"" ) +# define CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS \ + _Pragma( "clang diagnostic pop" ) + +#endif // __clang__ + +//////////////////////////////////////////////////////////////////////////////// +// Assume that non-Windows platforms support posix signals by default +#if !defined(CATCH_PLATFORM_WINDOWS) + #define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS +#endif + +//////////////////////////////////////////////////////////////////////////////// +// We know some environments not to support full POSIX signals +#if defined(__CYGWIN__) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(__DJGPP__) + #define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS +#endif + +#ifdef __OS400__ +# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS +# define CATCH_CONFIG_COLOUR_NONE +#endif + +//////////////////////////////////////////////////////////////////////////////// +// Android somehow still does not support std::to_string +#if defined(__ANDROID__) +# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING +#endif + +//////////////////////////////////////////////////////////////////////////////// +// Not all Windows environments support SEH properly +#if defined(__MINGW32__) +# define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH +#endif + +//////////////////////////////////////////////////////////////////////////////// +// PS4 +#if defined(__ORBIS__) +# define CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE +#endif + +//////////////////////////////////////////////////////////////////////////////// +// Cygwin +#ifdef __CYGWIN__ + +// Required for some versions of Cygwin to declare gettimeofday +// see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin +# define _BSD_SOURCE +// some versions of cygwin (most) do not support std::to_string. Use the libstd check. +// https://gcc.gnu.org/onlinedocs/gcc-4.8.2/libstdc++/api/a01053_source.html line 2812-2813 +# if !((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \ + && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)) + +# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING + +# endif +#endif // __CYGWIN__ + +//////////////////////////////////////////////////////////////////////////////// +// Visual C++ +#ifdef _MSC_VER + +# if _MSC_VER >= 1900 // Visual Studio 2015 or newer +# define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS +# endif + +// Universal Windows platform does not support SEH +// Or console colours (or console at all...) +# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) +# define CATCH_CONFIG_COLOUR_NONE +# else +# define CATCH_INTERNAL_CONFIG_WINDOWS_SEH +# endif + +// MSVC traditional preprocessor needs some workaround for __VA_ARGS__ +// _MSVC_TRADITIONAL == 0 means new conformant preprocessor +// _MSVC_TRADITIONAL == 1 means old traditional non-conformant preprocessor +# if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL) +# define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +# endif +#endif // _MSC_VER + +#if defined(_REENTRANT) || defined(_MSC_VER) +// Enable async processing, as -pthread is specified or no additional linking is required +# define CATCH_INTERNAL_CONFIG_USE_ASYNC +#endif // _MSC_VER + +//////////////////////////////////////////////////////////////////////////////// +// Check if we are compiled with -fno-exceptions or equivalent +#if defined(__EXCEPTIONS) || defined(__cpp_exceptions) || defined(_CPPUNWIND) +# define CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED +#endif + +//////////////////////////////////////////////////////////////////////////////// +// DJGPP +#ifdef __DJGPP__ +# define CATCH_INTERNAL_CONFIG_NO_WCHAR +#endif // __DJGPP__ + +//////////////////////////////////////////////////////////////////////////////// +// Embarcadero C++Build +#if defined(__BORLANDC__) + #define CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN +#endif + +//////////////////////////////////////////////////////////////////////////////// + +// Use of __COUNTER__ is suppressed during code analysis in +// CLion/AppCode 2017.2.x and former, because __COUNTER__ is not properly +// handled by it. +// Otherwise all supported compilers support COUNTER macro, +// but user still might want to turn it off +#if ( !defined(__JETBRAINS_IDE__) || __JETBRAINS_IDE__ >= 20170300L ) + #define CATCH_INTERNAL_CONFIG_COUNTER +#endif + +//////////////////////////////////////////////////////////////////////////////// + +// RTX is a special version of Windows that is real time. +// This means that it is detected as Windows, but does not provide +// the same set of capabilities as real Windows does. +#if defined(UNDER_RTSS) || defined(RTX64_BUILD) + #define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH + #define CATCH_INTERNAL_CONFIG_NO_ASYNC + #define CATCH_CONFIG_COLOUR_NONE +#endif + +//////////////////////////////////////////////////////////////////////////////// +// Check if string_view is available and usable +// The check is split apart to work around v140 (VS2015) preprocessor issue... +#if defined(__has_include) +#if __has_include() && defined(CATCH_CPP17_OR_GREATER) +# define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW +#endif +#endif + +//////////////////////////////////////////////////////////////////////////////// +// Check if optional is available and usable +#if defined(__has_include) +# if __has_include() && defined(CATCH_CPP17_OR_GREATER) +# define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL +# endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) +#endif // __has_include + +//////////////////////////////////////////////////////////////////////////////// +// Check if byte is available and usable +#if defined(__has_include) +# if __has_include() && defined(CATCH_CPP17_OR_GREATER) +# define CATCH_INTERNAL_CONFIG_CPP17_BYTE +# endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) +#endif // __has_include + +//////////////////////////////////////////////////////////////////////////////// +// Check if variant is available and usable +#if defined(__has_include) +# if __has_include() && defined(CATCH_CPP17_OR_GREATER) +# if defined(__clang__) && (__clang_major__ < 8) + // work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852 + // fix should be in clang 8, workaround in libstdc++ 8.2 +# include +# if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) +# define CATCH_CONFIG_NO_CPP17_VARIANT +# else +# define CATCH_INTERNAL_CONFIG_CPP17_VARIANT +# endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) +# else +# define CATCH_INTERNAL_CONFIG_CPP17_VARIANT +# endif // defined(__clang__) && (__clang_major__ < 8) +# endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) +#endif // __has_include + +#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) +# define CATCH_CONFIG_COUNTER +#endif +#if defined(CATCH_INTERNAL_CONFIG_WINDOWS_SEH) && !defined(CATCH_CONFIG_NO_WINDOWS_SEH) && !defined(CATCH_CONFIG_WINDOWS_SEH) && !defined(CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH) +# define CATCH_CONFIG_WINDOWS_SEH +#endif +// This is set by default, because we assume that unix compilers are posix-signal-compatible by default. +#if defined(CATCH_INTERNAL_CONFIG_POSIX_SIGNALS) && !defined(CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_POSIX_SIGNALS) +# define CATCH_CONFIG_POSIX_SIGNALS +#endif +// This is set by default, because we assume that compilers with no wchar_t support are just rare exceptions. +#if !defined(CATCH_INTERNAL_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_WCHAR) +# define CATCH_CONFIG_WCHAR +#endif + +#if !defined(CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_CPP11_TO_STRING) +# define CATCH_CONFIG_CPP11_TO_STRING +#endif + +#if defined(CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_NO_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_CPP17_OPTIONAL) +# define CATCH_CONFIG_CPP17_OPTIONAL +#endif + +#if defined(CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS) && !defined(CATCH_CONFIG_NO_CPP17_UNCAUGHT_EXCEPTIONS) && !defined(CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS) +# define CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS +#endif + +#if defined(CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_NO_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_CPP17_STRING_VIEW) +# define CATCH_CONFIG_CPP17_STRING_VIEW +#endif + +#if defined(CATCH_INTERNAL_CONFIG_CPP17_VARIANT) && !defined(CATCH_CONFIG_NO_CPP17_VARIANT) && !defined(CATCH_CONFIG_CPP17_VARIANT) +# define CATCH_CONFIG_CPP17_VARIANT +#endif + +#if defined(CATCH_INTERNAL_CONFIG_CPP17_BYTE) && !defined(CATCH_CONFIG_NO_CPP17_BYTE) && !defined(CATCH_CONFIG_CPP17_BYTE) +# define CATCH_CONFIG_CPP17_BYTE +#endif + +#if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT) +# define CATCH_INTERNAL_CONFIG_NEW_CAPTURE +#endif + +#if defined(CATCH_INTERNAL_CONFIG_NEW_CAPTURE) && !defined(CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NEW_CAPTURE) +# define CATCH_CONFIG_NEW_CAPTURE +#endif + +#if !defined(CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED) && !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) +# define CATCH_CONFIG_DISABLE_EXCEPTIONS +#endif + +#if defined(CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_NO_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_POLYFILL_ISNAN) +# define CATCH_CONFIG_POLYFILL_ISNAN +#endif + +#if defined(CATCH_INTERNAL_CONFIG_USE_ASYNC) && !defined(CATCH_INTERNAL_CONFIG_NO_ASYNC) && !defined(CATCH_CONFIG_NO_USE_ASYNC) && !defined(CATCH_CONFIG_USE_ASYNC) +# define CATCH_CONFIG_USE_ASYNC +#endif + +#if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS +# define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS +#endif +#if !defined(CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS +# define CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS +#endif +#if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS +# define CATCH_INTERNAL_UNSUPPRESS_UNUSED_WARNINGS +#endif +#if !defined(CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS +# define CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS +#endif + +#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) +#define CATCH_TRY if ((true)) +#define CATCH_CATCH_ALL if ((false)) +#define CATCH_CATCH_ANON(type) if ((false)) +#else +#define CATCH_TRY try +#define CATCH_CATCH_ALL catch (...) +#define CATCH_CATCH_ANON(type) catch (type) +#endif + +#if defined(CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_NO_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) +#define CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +#endif + +// end catch_compiler_capabilities.h +#define INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) name##line +#define INTERNAL_CATCH_UNIQUE_NAME_LINE( name, line ) INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) +#ifdef CATCH_CONFIG_COUNTER +# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ ) +#else +# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __LINE__ ) +#endif + +#include +#include +#include + +// We need a dummy global operator<< so we can bring it into Catch namespace later +struct Catch_global_namespace_dummy {}; +std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy); + +namespace Catch { + + struct CaseSensitive { enum Choice { + Yes, + No + }; }; + + class NonCopyable { + NonCopyable( NonCopyable const& ) = delete; + NonCopyable( NonCopyable && ) = delete; + NonCopyable& operator = ( NonCopyable const& ) = delete; + NonCopyable& operator = ( NonCopyable && ) = delete; + + protected: + NonCopyable(); + virtual ~NonCopyable(); + }; + + struct SourceLineInfo { + + SourceLineInfo() = delete; + SourceLineInfo( char const* _file, std::size_t _line ) noexcept + : file( _file ), + line( _line ) + {} + + SourceLineInfo( SourceLineInfo const& other ) = default; + SourceLineInfo& operator = ( SourceLineInfo const& ) = default; + SourceLineInfo( SourceLineInfo&& ) noexcept = default; + SourceLineInfo& operator = ( SourceLineInfo&& ) noexcept = default; + + bool empty() const noexcept; + bool operator == ( SourceLineInfo const& other ) const noexcept; + bool operator < ( SourceLineInfo const& other ) const noexcept; + + char const* file; + std::size_t line; + }; + + std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ); + + // Bring in operator<< from global namespace into Catch namespace + // This is necessary because the overload of operator<< above makes + // lookup stop at namespace Catch + using ::operator<<; + + // Use this in variadic streaming macros to allow + // >> +StreamEndStop + // as well as + // >> stuff +StreamEndStop + struct StreamEndStop { + std::string operator+() const; + }; + template + T const& operator + ( T const& value, StreamEndStop ) { + return value; + } +} + +#define CATCH_INTERNAL_LINEINFO \ + ::Catch::SourceLineInfo( __FILE__, static_cast( __LINE__ ) ) + +// end catch_common.h +namespace Catch { + + struct RegistrarForTagAliases { + RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); + }; + +} // end namespace Catch + +#define CATCH_REGISTER_TAG_ALIAS( alias, spec ) \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); } \ + CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS + +// end catch_tag_alias_autoregistrar.h +// start catch_test_registry.h + +// start catch_interfaces_testcase.h + +#include + +namespace Catch { + + class TestSpec; + + struct ITestInvoker { + virtual void invoke () const = 0; + virtual ~ITestInvoker(); + }; + + class TestCase; + struct IConfig; + + struct ITestCaseRegistry { + virtual ~ITestCaseRegistry(); + virtual std::vector const& getAllTests() const = 0; + virtual std::vector const& getAllTestsSorted( IConfig const& config ) const = 0; + }; + + bool isThrowSafe( TestCase const& testCase, IConfig const& config ); + bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ); + std::vector filterTests( std::vector const& testCases, TestSpec const& testSpec, IConfig const& config ); + std::vector const& getAllTestCasesSorted( IConfig const& config ); + +} + +// end catch_interfaces_testcase.h +// start catch_stringref.h + +#include +#include +#include + +namespace Catch { + + /// A non-owning string class (similar to the forthcoming std::string_view) + /// Note that, because a StringRef may be a substring of another string, + /// it may not be null terminated. c_str() must return a null terminated + /// string, however, and so the StringRef will internally take ownership + /// (taking a copy), if necessary. In theory this ownership is not externally + /// visible - but it does mean (substring) StringRefs should not be shared between + /// threads. + class StringRef { + public: + using size_type = std::size_t; + + private: + friend struct StringRefTestAccess; + + char const* m_start; + size_type m_size; + + char* m_data = nullptr; + + void takeOwnership(); + + static constexpr char const* const s_empty = ""; + + public: // construction/ assignment + StringRef() noexcept + : StringRef( s_empty, 0 ) + {} + + StringRef( StringRef const& other ) noexcept + : m_start( other.m_start ), + m_size( other.m_size ) + {} + + StringRef( StringRef&& other ) noexcept + : m_start( other.m_start ), + m_size( other.m_size ), + m_data( other.m_data ) + { + other.m_data = nullptr; + } + + StringRef( char const* rawChars ) noexcept; + + StringRef( char const* rawChars, size_type size ) noexcept + : m_start( rawChars ), + m_size( size ) + {} + + StringRef( std::string const& stdString ) noexcept + : m_start( stdString.c_str() ), + m_size( stdString.size() ) + {} + + ~StringRef() noexcept { + delete[] m_data; + } + + auto operator = ( StringRef const &other ) noexcept -> StringRef& { + delete[] m_data; + m_data = nullptr; + m_start = other.m_start; + m_size = other.m_size; + return *this; + } + + operator std::string() const; + + void swap( StringRef& other ) noexcept; + + public: // operators + auto operator == ( StringRef const& other ) const noexcept -> bool; + auto operator != ( StringRef const& other ) const noexcept -> bool; + + auto operator[] ( size_type index ) const noexcept -> char; + + public: // named queries + auto empty() const noexcept -> bool { + return m_size == 0; + } + auto size() const noexcept -> size_type { + return m_size; + } + + auto numberOfCharacters() const noexcept -> size_type; + auto c_str() const -> char const*; + + public: // substrings and searches + auto substr( size_type start, size_type size ) const noexcept -> StringRef; + + // Returns the current start pointer. + // Note that the pointer can change when if the StringRef is a substring + auto currentData() const noexcept -> char const*; + + private: // ownership queries - may not be consistent between calls + auto isOwned() const noexcept -> bool; + auto isSubstring() const noexcept -> bool; + }; + + auto operator + ( StringRef const& lhs, StringRef const& rhs ) -> std::string; + auto operator + ( StringRef const& lhs, char const* rhs ) -> std::string; + auto operator + ( char const* lhs, StringRef const& rhs ) -> std::string; + + auto operator += ( std::string& lhs, StringRef const& sr ) -> std::string&; + auto operator << ( std::ostream& os, StringRef const& sr ) -> std::ostream&; + + inline auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { + return StringRef( rawChars, size ); + } + +} // namespace Catch + +inline auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef { + return Catch::StringRef( rawChars, size ); +} + +// end catch_stringref.h +// start catch_type_traits.hpp + + +#include + +namespace Catch{ + +#ifdef CATCH_CPP17_OR_GREATER + template + inline constexpr auto is_unique = std::true_type{}; + + template + inline constexpr auto is_unique = std::bool_constant< + (!std::is_same_v && ...) && is_unique + >{}; +#else + +template +struct is_unique : std::true_type{}; + +template +struct is_unique : std::integral_constant +::value + && is_unique::value + && is_unique::value +>{}; + +#endif +} + +// end catch_type_traits.hpp +// start catch_preprocessor.hpp + + +#define CATCH_RECURSION_LEVEL0(...) __VA_ARGS__ +#define CATCH_RECURSION_LEVEL1(...) CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL2(...) CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL3(...) CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL4(...) CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL5(...) CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__))) + +#ifdef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +#define INTERNAL_CATCH_EXPAND_VARGS(...) __VA_ARGS__ +// MSVC needs more evaluations +#define CATCH_RECURSION_LEVEL6(...) CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(__VA_ARGS__))) +#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL6(CATCH_RECURSION_LEVEL6(__VA_ARGS__)) +#else +#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL5(__VA_ARGS__) +#endif + +#define CATCH_REC_END(...) +#define CATCH_REC_OUT + +#define CATCH_EMPTY() +#define CATCH_DEFER(id) id CATCH_EMPTY() + +#define CATCH_REC_GET_END2() 0, CATCH_REC_END +#define CATCH_REC_GET_END1(...) CATCH_REC_GET_END2 +#define CATCH_REC_GET_END(...) CATCH_REC_GET_END1 +#define CATCH_REC_NEXT0(test, next, ...) next CATCH_REC_OUT +#define CATCH_REC_NEXT1(test, next) CATCH_DEFER ( CATCH_REC_NEXT0 ) ( test, next, 0) +#define CATCH_REC_NEXT(test, next) CATCH_REC_NEXT1(CATCH_REC_GET_END test, next) + +#define CATCH_REC_LIST0(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) +#define CATCH_REC_LIST1(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0) ) ( f, peek, __VA_ARGS__ ) +#define CATCH_REC_LIST2(f, x, peek, ...) f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) + +#define CATCH_REC_LIST0_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) +#define CATCH_REC_LIST1_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0_UD) ) ( f, userdata, peek, __VA_ARGS__ ) +#define CATCH_REC_LIST2_UD(f, userdata, x, peek, ...) f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) + +// Applies the function macro `f` to each of the remaining parameters, inserts commas between the results, +// and passes userdata as the first parameter to each invocation, +// e.g. CATCH_REC_LIST_UD(f, x, a, b, c) evaluates to f(x, a), f(x, b), f(x, c) +#define CATCH_REC_LIST_UD(f, userdata, ...) CATCH_RECURSE(CATCH_REC_LIST2_UD(f, userdata, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) + +#define CATCH_REC_LIST(f, ...) CATCH_RECURSE(CATCH_REC_LIST2(f, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) + +#define INTERNAL_CATCH_EXPAND1(param) INTERNAL_CATCH_EXPAND2(param) +#define INTERNAL_CATCH_EXPAND2(...) INTERNAL_CATCH_NO## __VA_ARGS__ +#define INTERNAL_CATCH_DEF(...) INTERNAL_CATCH_DEF __VA_ARGS__ +#define INTERNAL_CATCH_NOINTERNAL_CATCH_DEF +#define INTERNAL_CATCH_STRINGIZE(...) INTERNAL_CATCH_STRINGIZE2(__VA_ARGS__) +#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +#define INTERNAL_CATCH_STRINGIZE2(...) #__VA_ARGS__ +#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) +#else +// MSVC is adding extra space and needs another indirection to expand INTERNAL_CATCH_NOINTERNAL_CATCH_DEF +#define INTERNAL_CATCH_STRINGIZE2(...) INTERNAL_CATCH_STRINGIZE3(__VA_ARGS__) +#define INTERNAL_CATCH_STRINGIZE3(...) #__VA_ARGS__ +#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) (INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) + 1) +#endif + +#define INTERNAL_CATCH_MAKE_NAMESPACE2(...) ns_##__VA_ARGS__ +#define INTERNAL_CATCH_MAKE_NAMESPACE(name) INTERNAL_CATCH_MAKE_NAMESPACE2(name) + +#define INTERNAL_CATCH_REMOVE_PARENS(...) INTERNAL_CATCH_EXPAND1(INTERNAL_CATCH_DEF __VA_ARGS__) + +#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) decltype(get_wrapper()) +#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__)) +#else +#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) INTERNAL_CATCH_EXPAND_VARGS(decltype(get_wrapper())) +#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))) +#endif + +#define INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(...)\ + CATCH_REC_LIST(INTERNAL_CATCH_MAKE_TYPE_LIST,__VA_ARGS__) + +#define INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_0) INTERNAL_CATCH_REMOVE_PARENS(_0) +#define INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_0, _1) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_1) +#define INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_0, _1, _2) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_1, _2) +#define INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_0, _1, _2, _3) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_1, _2, _3) +#define INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_0, _1, _2, _3, _4) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_1, _2, _3, _4) +#define INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_0, _1, _2, _3, _4, _5) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_1, _2, _3, _4, _5) +#define INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_0, _1, _2, _3, _4, _5, _6) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_1, _2, _4, _5, _6) +#define INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_0, _1, _2, _3, _4, _5, _6, _7) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_1, _2, _3, _4, _5, _6, _7) +#define INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_1, _2, _3, _4, _5, _6, _7, _8) +#define INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9) +#define INTERNAL_CATCH_REMOVE_PARENS_11_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) + +#define INTERNAL_CATCH_VA_NARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N + +#define INTERNAL_CATCH_TYPE_GEN\ + template struct TypeList {};\ + template\ + constexpr auto get_wrapper() noexcept -> TypeList { return {}; }\ + \ + template class L1, typename...E1, template class L2, typename...E2> \ + constexpr auto append(L1, L2) noexcept -> L1 { return {}; }\ + template< template class L1, typename...E1, template class L2, typename...E2, typename...Rest>\ + constexpr auto append(L1, L2, Rest...) noexcept -> decltype(append(L1{}, Rest{}...)) { return {}; }\ + template< template class L1, typename...E1, typename...Rest>\ + constexpr auto append(L1, TypeList, Rest...) noexcept -> L1 { return {}; }\ + \ + template< template class Container, template class List, typename...elems>\ + constexpr auto rewrap(List) noexcept -> TypeList> { return {}; }\ + template< template class Container, template class List, class...Elems, typename...Elements>\ + constexpr auto rewrap(List,Elements...) noexcept -> decltype(append(TypeList>{}, rewrap(Elements{}...))) { return {}; }\ + \ + template