diff --git a/README.md b/README.md
index d7c679c..21ad107 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,27 @@ Interactive Datacenter Visualization & Management with Three.js / WebGL.
3D DC Insight is a browser-based datacenter management platform built on Three.js and WebGL. It transforms floor-plans, racks, servers and sensors into a real-time, interactive 3D world where operators can see, customize and act at a glance.
+## Project setup
+```
+npm install
+```
+
+### Compiles and hot-reloads for development
+```
+npm start
+```
+
### Features
+- Server room home view
+
+- 3D overview
+
+- View Racks
+
+- Door animation
+
+- Rack animation
+
- Immersive 3D View
- Drag-and-Drop Builder
- Live Monitoring
diff --git a/assets/basic/thumbnail.png b/assets/basic/thumbnail.png
new file mode 100644
index 0000000..80910d9
Binary files /dev/null and b/assets/basic/thumbnail.png differ
diff --git a/assets/bed/bed.glb b/assets/bed/bed.glb
new file mode 100644
index 0000000..3fcdc3b
Binary files /dev/null and b/assets/bed/bed.glb differ
diff --git a/assets/bed/thumbnail.png b/assets/bed/thumbnail.png
new file mode 100644
index 0000000..cb50c4b
Binary files /dev/null and b/assets/bed/thumbnail.png differ
diff --git a/public/assets/column/column10.jpg b/assets/column/column10.jpg
similarity index 100%
rename from public/assets/column/column10.jpg
rename to assets/column/column10.jpg
diff --git a/public/assets/column/column11.jpg b/assets/column/column11.jpg
similarity index 100%
rename from public/assets/column/column11.jpg
rename to assets/column/column11.jpg
diff --git a/public/assets/column/column12.jpg b/assets/column/column12.jpg
similarity index 100%
rename from public/assets/column/column12.jpg
rename to assets/column/column12.jpg
diff --git a/public/assets/column/column13.jpg b/assets/column/column13.jpg
similarity index 100%
rename from public/assets/column/column13.jpg
rename to assets/column/column13.jpg
diff --git a/public/assets/column/column3.jpg b/assets/column/column3.jpg
similarity index 100%
rename from public/assets/column/column3.jpg
rename to assets/column/column3.jpg
diff --git a/public/assets/column/column4.jpg b/assets/column/column4.jpg
similarity index 100%
rename from public/assets/column/column4.jpg
rename to assets/column/column4.jpg
diff --git a/public/assets/column/column6.jpg b/assets/column/column6.jpg
similarity index 100%
rename from public/assets/column/column6.jpg
rename to assets/column/column6.jpg
diff --git a/public/assets/column/column_lightmap3.jpg b/assets/column/column_lightmap3.jpg
similarity index 100%
rename from public/assets/column/column_lightmap3.jpg
rename to assets/column/column_lightmap3.jpg
diff --git a/public/assets/column/column_lightmap4.jpg b/assets/column/column_lightmap4.jpg
similarity index 100%
rename from public/assets/column/column_lightmap4.jpg
rename to assets/column/column_lightmap4.jpg
diff --git a/assets/column/thumbnail.png b/assets/column/thumbnail.png
new file mode 100644
index 0000000..f4b7519
Binary files /dev/null and b/assets/column/thumbnail.png differ
diff --git a/public/assets/door/door-l.png b/assets/door/door.png
similarity index 100%
rename from public/assets/door/door-l.png
rename to assets/door/door.png
diff --git a/assets/door/thumbnail.png b/assets/door/thumbnail.png
new file mode 100644
index 0000000..7678a23
Binary files /dev/null and b/assets/door/thumbnail.png differ
diff --git a/public/assets/door/door1.png b/assets/double_door/door-l.png
similarity index 100%
rename from public/assets/door/door1.png
rename to assets/double_door/door-l.png
diff --git a/public/assets/door/door-r.png b/assets/double_door/door-r.png
similarity index 100%
rename from public/assets/door/door-r.png
rename to assets/double_door/door-r.png
diff --git a/assets/double_door/thumbnail.png b/assets/double_door/thumbnail.png
new file mode 100644
index 0000000..65b74dc
Binary files /dev/null and b/assets/double_door/thumbnail.png differ
diff --git a/public/assets/env/envmap.jpg b/assets/env/envmap.jpg
similarity index 100%
rename from public/assets/env/envmap.jpg
rename to assets/env/envmap.jpg
diff --git a/public/assets/env/envmap1.jpg b/assets/env/envmap1.jpg
similarity index 100%
rename from public/assets/env/envmap1.jpg
rename to assets/env/envmap1.jpg
diff --git a/public/assets/env/envmap2.jpg b/assets/env/envmap2.jpg
similarity index 100%
rename from public/assets/env/envmap2.jpg
rename to assets/env/envmap2.jpg
diff --git a/public/assets/env/envmap3.jpg b/assets/env/envmap3.jpg
similarity index 100%
rename from public/assets/env/envmap3.jpg
rename to assets/env/envmap3.jpg
diff --git a/public/assets/env/envmap4.jpg b/assets/env/envmap4.jpg
similarity index 100%
rename from public/assets/env/envmap4.jpg
rename to assets/env/envmap4.jpg
diff --git a/public/assets/env/envmap5.jpg b/assets/env/envmap5.jpg
similarity index 100%
rename from public/assets/env/envmap5.jpg
rename to assets/env/envmap5.jpg
diff --git a/public/assets/env/envmap6.jpg b/assets/env/envmap6.jpg
similarity index 100%
rename from public/assets/env/envmap6.jpg
rename to assets/env/envmap6.jpg
diff --git a/public/assets/env/inside_lightmap.jpg b/assets/env/exterior_lightmap.jpg
similarity index 100%
rename from public/assets/env/inside_lightmap.jpg
rename to assets/env/exterior_lightmap.jpg
diff --git a/public/assets/env/outside_lightmap9.jpg b/assets/env/exterior_lightmap9.jpg
similarity index 100%
rename from public/assets/env/outside_lightmap9.jpg
rename to assets/env/exterior_lightmap9.jpg
diff --git a/public/assets/env/outside_lightmap.jpg b/assets/env/interior_lightmap.jpg
similarity index 100%
rename from public/assets/env/outside_lightmap.jpg
rename to assets/env/interior_lightmap.jpg
diff --git a/public/assets/env/inside_lightmap8.jpg b/assets/env/interior_lightmap8.jpg
similarity index 100%
rename from public/assets/env/inside_lightmap8.jpg
rename to assets/env/interior_lightmap8.jpg
diff --git a/public/assets/env/inside_lightmap9.jpg b/assets/env/interior_lightmap9.jpg
similarity index 100%
rename from public/assets/env/inside_lightmap9.jpg
rename to assets/env/interior_lightmap9.jpg
diff --git a/public/assets/env/metal_normalmap.jpg b/assets/env/metal_normalmap.jpg
similarity index 100%
rename from public/assets/env/metal_normalmap.jpg
rename to assets/env/metal_normalmap.jpg
diff --git a/public/assets/env/white.png b/assets/env/white.png
similarity index 100%
rename from public/assets/env/white.png
rename to assets/env/white.png
diff --git a/public/assets/wall/floor5.jpg b/assets/glasswall/floor.jpg
similarity index 100%
rename from public/assets/wall/floor5.jpg
rename to assets/glasswall/floor.jpg
diff --git a/public/assets/wall/glass-wall4.png b/assets/glasswall/glass-wall.png
similarity index 100%
rename from public/assets/wall/glass-wall4.png
rename to assets/glasswall/glass-wall.png
diff --git a/public/assets/wall/floor.jpg b/assets/glasswall/roof.jpg
similarity index 100%
rename from public/assets/wall/floor.jpg
rename to assets/glasswall/roof.jpg
diff --git a/assets/glasswall/thumbnail.png b/assets/glasswall/thumbnail.png
new file mode 100644
index 0000000..82caa7d
Binary files /dev/null and b/assets/glasswall/thumbnail.png differ
diff --git a/assets/marker/marker.png b/assets/marker/marker.png
new file mode 100644
index 0000000..87d5c3f
Binary files /dev/null and b/assets/marker/marker.png differ
diff --git a/assets/marker/thumbnail.png b/assets/marker/thumbnail.png
new file mode 100644
index 0000000..87d5c3f
Binary files /dev/null and b/assets/marker/thumbnail.png differ
diff --git a/public/assets/plant/plant.png b/assets/plant/plant.png
similarity index 100%
rename from public/assets/plant/plant.png
rename to assets/plant/plant.png
diff --git a/public/assets/plant/plant2.png b/assets/plant/plant2.png
similarity index 100%
rename from public/assets/plant/plant2.png
rename to assets/plant/plant2.png
diff --git a/assets/plant/thumbnail.png b/assets/plant/thumbnail.png
new file mode 100644
index 0000000..5af6e4f
Binary files /dev/null and b/assets/plant/thumbnail.png differ
diff --git a/public/assets/rack/inside_back.jpg b/assets/rack/interior_back.jpg
similarity index 100%
rename from public/assets/rack/inside_back.jpg
rename to assets/rack/interior_back.jpg
diff --git a/public/assets/rack/inside_side.jpg b/assets/rack/interior_side.jpg
similarity index 100%
rename from public/assets/rack/inside_side.jpg
rename to assets/rack/interior_side.jpg
diff --git a/public/assets/rack/inside_top.jpg b/assets/rack/interior_top.jpg
similarity index 100%
rename from public/assets/rack/inside_top.jpg
rename to assets/rack/interior_top.jpg
diff --git a/public/assets/rack/rack42u.png b/assets/rack/rack42u.png
similarity index 100%
rename from public/assets/rack/rack42u.png
rename to assets/rack/rack42u.png
diff --git a/public/assets/rack/rack_back.jpg b/assets/rack/rack_back.jpg
similarity index 100%
rename from public/assets/rack/rack_back.jpg
rename to assets/rack/rack_back.jpg
diff --git a/public/assets/rack/rack_door_back.jpg b/assets/rack/rack_door_back.jpg
similarity index 100%
rename from public/assets/rack/rack_door_back.jpg
rename to assets/rack/rack_door_back.jpg
diff --git a/public/assets/rack/rack_door_front.jpg b/assets/rack/rack_door_front.jpg
similarity index 100%
rename from public/assets/rack/rack_door_front.jpg
rename to assets/rack/rack_door_front.jpg
diff --git a/public/assets/rack/rack_inside.jpg b/assets/rack/rack_inside.jpg
similarity index 100%
rename from public/assets/rack/rack_inside.jpg
rename to assets/rack/rack_inside.jpg
diff --git a/public/assets/rack/rack_side.jpg b/assets/rack/rack_side.jpg
similarity index 100%
rename from public/assets/rack/rack_side.jpg
rename to assets/rack/rack_side.jpg
diff --git a/public/assets/rack/rack_top.jpg b/assets/rack/rack_top.jpg
similarity index 100%
rename from public/assets/rack/rack_top.jpg
rename to assets/rack/rack_top.jpg
diff --git a/assets/rack/thumbnail.png b/assets/rack/thumbnail.png
new file mode 100644
index 0000000..fe99a78
Binary files /dev/null and b/assets/rack/thumbnail.png differ
diff --git a/assets/rack2/interior_side.jpg b/assets/rack2/interior_side.jpg
new file mode 100644
index 0000000..119da66
Binary files /dev/null and b/assets/rack2/interior_side.jpg differ
diff --git a/assets/rack2/interior_top.jpg b/assets/rack2/interior_top.jpg
new file mode 100644
index 0000000..c3f6006
Binary files /dev/null and b/assets/rack2/interior_top.jpg differ
diff --git a/public/assets/rack2/r1brack.jpg b/assets/rack2/r1brack.jpg
similarity index 100%
rename from public/assets/rack2/r1brack.jpg
rename to assets/rack2/r1brack.jpg
diff --git a/public/assets/rack2/r1dbrack.jpg b/assets/rack2/r1dbrack.jpg
similarity index 100%
rename from public/assets/rack2/r1dbrack.jpg
rename to assets/rack2/r1dbrack.jpg
diff --git a/public/assets/rack2/r1frack.jpg b/assets/rack2/r1frack.jpg
similarity index 100%
rename from public/assets/rack2/r1frack.jpg
rename to assets/rack2/r1frack.jpg
diff --git a/public/assets/rack2/r1frack42.png b/assets/rack2/r1frack42.png
similarity index 100%
rename from public/assets/rack2/r1frack42.png
rename to assets/rack2/r1frack42.png
diff --git a/public/assets/rack2/r1srack.jpg b/assets/rack2/r1srack.jpg
similarity index 100%
rename from public/assets/rack2/r1srack.jpg
rename to assets/rack2/r1srack.jpg
diff --git a/public/assets/rack2/r1track.jpg b/assets/rack2/r1track.jpg
similarity index 100%
rename from public/assets/rack2/r1track.jpg
rename to assets/rack2/r1track.jpg
diff --git a/assets/rack2/thumbnail.png b/assets/rack2/thumbnail.png
new file mode 100644
index 0000000..351a1be
Binary files /dev/null and b/assets/rack2/thumbnail.png differ
diff --git a/assets/skybox/skybox.jpg b/assets/skybox/skybox.jpg
new file mode 100644
index 0000000..ab0e075
Binary files /dev/null and b/assets/skybox/skybox.jpg differ
diff --git a/assets/skybox/thumbnail.png b/assets/skybox/thumbnail.png
new file mode 100644
index 0000000..79b7ca0
Binary files /dev/null and b/assets/skybox/thumbnail.png differ
diff --git a/public/assets/wall/wall.png b/assets/wall/exterior-wall.png
similarity index 100%
rename from public/assets/wall/wall.png
rename to assets/wall/exterior-wall.png
diff --git a/public/assets/wall/floor4.jpg b/assets/wall/floor.jpg
similarity index 100%
rename from public/assets/wall/floor4.jpg
rename to assets/wall/floor.jpg
diff --git a/assets/wall/interior-wall.jpg b/assets/wall/interior-wall.jpg
new file mode 100644
index 0000000..d104432
Binary files /dev/null and b/assets/wall/interior-wall.jpg differ
diff --git a/assets/wall/roof.jpg b/assets/wall/roof.jpg
new file mode 100644
index 0000000..4f22171
Binary files /dev/null and b/assets/wall/roof.jpg differ
diff --git a/assets/wall/thumbnail.png b/assets/wall/thumbnail.png
new file mode 100644
index 0000000..5b06577
Binary files /dev/null and b/assets/wall/thumbnail.png differ
diff --git a/public/assets/wall/wall14.jpg b/assets/wall2/exterior-wall.jpg
similarity index 100%
rename from public/assets/wall/wall14.jpg
rename to assets/wall2/exterior-wall.jpg
diff --git a/assets/wall2/floor.jpg b/assets/wall2/floor.jpg
new file mode 100644
index 0000000..2fb3466
Binary files /dev/null and b/assets/wall2/floor.jpg differ
diff --git a/public/assets/wall/inner-wall10.jpg b/assets/wall2/interior-wall.jpg
similarity index 100%
rename from public/assets/wall/inner-wall10.jpg
rename to assets/wall2/interior-wall.jpg
diff --git a/assets/wall2/roof.jpg b/assets/wall2/roof.jpg
new file mode 100644
index 0000000..4f22171
Binary files /dev/null and b/assets/wall2/roof.jpg differ
diff --git a/assets/wall2/thumbnail.png b/assets/wall2/thumbnail.png
new file mode 100644
index 0000000..17fe1eb
Binary files /dev/null and b/assets/wall2/thumbnail.png differ
diff --git a/assets/wall2/wall.jpg b/assets/wall2/wall.jpg
new file mode 100644
index 0000000..fe4c72a
Binary files /dev/null and b/assets/wall2/wall.jpg differ
diff --git a/assets/window/thumbnail.png b/assets/window/thumbnail.png
new file mode 100644
index 0000000..b8e9223
Binary files /dev/null and b/assets/window/thumbnail.png differ
diff --git a/public/assets/window/window3.png b/assets/window/window.png
similarity index 100%
rename from public/assets/window/window3.png
rename to assets/window/window.png
diff --git a/global.css b/global.css
new file mode 100644
index 0000000..e568178
--- /dev/null
+++ b/global.css
@@ -0,0 +1,89 @@
+@charset "utf-8";
+* {
+ box-sizing: border-box;
+}
+html {
+ background-color: #fff;
+ color: #000;
+ font-size: 16px;
+}
+blockquote, body, button, dd, dl, figure, form, h1, h2, h3, h4, h5, h6, input, legend, ol, p, pre, td, textarea, th, ul, xmp {
+ margin: 0;
+ padding: 0;
+}
+body, button, code, input, kbd, pre, samp, select, textarea, tt, xmp {
+ line-height: 1.5;
+}
+big, button, h1, h2, h3, h4, h5, h6, input, select, small, textarea {
+ font-size: 100%;
+}
+h1, h2, h3, h4, h5, h6 {
+ font-family: tahoma, arial, "Hiragino Sans GB", "微软雅黑", simsun, sans-serif;
+}
+b, h1, h2, h3, h4, h5, h6, strong {
+ font-weight: 400;
+}
+address, cite, dfn, em, i, optgroup, var {
+ font-style: normal;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ text-align: left;
+}
+caption, th {
+ text-align: inherit;
+}
+menu, ol, ul {
+ list-style: none;
+}
+img {
+ border: 0;
+}
+button, img, input, object, select, textarea {
+ vertical-align: middle;
+}
+article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+audio, canvas, video {
+ display: inline-block;
+}
+blockquote:after, blockquote:before, q:after, q:before {
+ content: "\0020";
+}
+textarea {
+ overflow: auto;
+ resize: vertical;
+}
+a, button, input, select, textarea {
+ border: none;
+ outline: 0 none;
+}
+button::-moz-focus-inner, input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+mark {
+ background-color: transparent;
+}
+a, del, ins, s, u {
+ text-decoration: none;
+}
+sub, sup {
+ vertical-align: baseline;
+}
+html {
+ height: 100%;
+ overflow-x: hidden;
+}
+body {
+ color: #333;
+ font-family: Arial, "Microsoft Yahei", "Helvetica Neue", Helvetica, sans-serif;
+ line-height: 1;
+}
+a {
+ color: #25a4bb;
+ text-decoration: none;
+}
+
diff --git a/iconfont/demo.css b/iconfont/demo.css
new file mode 100644
index 0000000..a67054a
--- /dev/null
+++ b/iconfont/demo.css
@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+ font-family: "iconfont logo";
+ src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+ src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+ url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+ url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+ url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+ font-family: "iconfont logo";
+ font-size: 160px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+ position: relative;
+}
+
+.nav-tabs .nav-more {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ height: 42px;
+ line-height: 42px;
+ color: #666;
+}
+
+#tabs {
+ border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+ cursor: pointer;
+ width: 100px;
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ font-size: 16px;
+ border-bottom: 2px solid transparent;
+ position: relative;
+ z-index: 1;
+ margin-bottom: -1px;
+ color: #666;
+}
+
+
+#tabs .active {
+ border-bottom-color: #f00;
+ color: #222;
+}
+
+.tab-container .content {
+ display: none;
+}
+
+/* 页面布局 */
+.main {
+ padding: 30px 100px;
+ width: 960px;
+ margin: 0 auto;
+}
+
+.main .logo {
+ color: #333;
+ text-align: left;
+ margin-bottom: 30px;
+ line-height: 1;
+ height: 110px;
+ margin-top: -50px;
+ overflow: hidden;
+ *zoom: 1;
+}
+
+.main .logo a {
+ font-size: 160px;
+ color: #333;
+}
+
+.helps {
+ margin-top: 40px;
+}
+
+.helps pre {
+ padding: 20px;
+ margin: 10px 0;
+ border: solid 1px #e7e1cd;
+ background-color: #fffdef;
+ overflow: auto;
+}
+
+.icon_lists {
+ width: 100% !important;
+ overflow: hidden;
+ *zoom: 1;
+}
+
+.icon_lists li {
+ width: 100px;
+ margin-bottom: 10px;
+ margin-right: 20px;
+ text-align: center;
+ list-style: none !important;
+ cursor: default;
+}
+
+.icon_lists li .code-name {
+ line-height: 1.2;
+}
+
+.icon_lists .icon {
+ display: block;
+ height: 100px;
+ line-height: 100px;
+ font-size: 42px;
+ margin: 10px auto;
+ color: #333;
+ -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+ -moz-transition: font-size 0.25s linear, width 0.25s linear;
+ transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+ font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+ /* 通过设置 font-size 来改变图标大小 */
+ width: 1em;
+ /* 图标和文字相邻时,垂直对齐 */
+ vertical-align: -0.15em;
+ /* 通过设置 color 来改变 SVG 的颜色/fill */
+ fill: currentColor;
+ /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+ normalize.css 中也包含这行 */
+ overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+ color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+ color: #666;
+ font-size: 14px;
+ line-height: 1.8;
+}
+
+.highlight {
+ line-height: 1.5;
+}
+
+.markdown img {
+ vertical-align: middle;
+ max-width: 100%;
+}
+
+.markdown h1 {
+ color: #404040;
+ font-weight: 500;
+ line-height: 40px;
+ margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+ color: #404040;
+ margin: 1.6em 0 0.6em 0;
+ font-weight: 500;
+ clear: both;
+}
+
+.markdown h1 {
+ font-size: 28px;
+}
+
+.markdown h2 {
+ font-size: 22px;
+}
+
+.markdown h3 {
+ font-size: 16px;
+}
+
+.markdown h4 {
+ font-size: 14px;
+}
+
+.markdown h5 {
+ font-size: 12px;
+}
+
+.markdown h6 {
+ font-size: 12px;
+}
+
+.markdown hr {
+ height: 1px;
+ border: 0;
+ background: #e9e9e9;
+ margin: 16px 0;
+ clear: both;
+}
+
+.markdown p {
+ margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+ width: 80%;
+}
+
+.markdown ul>li {
+ list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+ margin-left: 20px;
+ padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+ margin: 0.6em 0;
+}
+
+.markdown ol>li {
+ list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+ margin-left: 20px;
+ padding-left: 4px;
+}
+
+.markdown code {
+ margin: 0 3px;
+ padding: 0 5px;
+ background: #eee;
+ border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+ font-weight: 600;
+}
+
+.markdown>table {
+ border-collapse: collapse;
+ border-spacing: 0px;
+ empty-cells: show;
+ border: 1px solid #e9e9e9;
+ width: 95%;
+ margin-bottom: 24px;
+}
+
+.markdown>table th {
+ white-space: nowrap;
+ color: #333;
+ font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+ border: 1px solid #e9e9e9;
+ padding: 8px 16px;
+ text-align: left;
+}
+
+.markdown>table th {
+ background: #F7F7F7;
+}
+
+.markdown blockquote {
+ font-size: 90%;
+ color: #999;
+ border-left: 4px solid #e9e9e9;
+ padding-left: 0.8em;
+ margin: 1em 0;
+}
+
+.markdown blockquote p {
+ margin: 0;
+}
+
+.markdown .anchor {
+ opacity: 0;
+ transition: opacity 0.3s ease;
+ margin-left: 8px;
+}
+
+.markdown .waiting {
+ color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+ opacity: 1;
+ display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+ clear: both;
+}
+
+
+.hljs {
+ display: block;
+ background: white;
+ padding: 0.5em;
+ color: #333333;
+ overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+ color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+ color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+ color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+ color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+ color: #63a35c;
+}
+
+.hljs-tag {
+ color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+ color: #795da3;
+}
+
+.hljs-addition {
+ color: #55a532;
+ background-color: #eaffea;
+}
+
+.hljs-deletion {
+ color: #bd2c00;
+ background-color: #ffecec;
+}
+
+.hljs-link {
+ text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+ color: black;
+ background: none;
+ text-shadow: 0 1px white;
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ line-height: 1.5;
+
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+ text-shadow: none;
+ background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+ text-shadow: none;
+ background: #b3d4fc;
+}
+
+@media print {
+
+ code[class*="language-"],
+ pre[class*="language-"] {
+ text-shadow: none;
+ }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+ padding: 1em;
+ margin: .5em 0;
+ overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+ background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+ padding: .1em;
+ border-radius: .3em;
+ white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: slategray;
+}
+
+.token.punctuation {
+ color: #999;
+}
+
+.namespace {
+ opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+ color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+ color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+ color: #9a6e3a;
+ background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+ color: #07a;
+}
+
+.token.function,
+.token.class-name {
+ color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+ color: #e90;
+}
+
+.token.important,
+.token.bold {
+ font-weight: bold;
+}
+
+.token.italic {
+ font-style: italic;
+}
+
+.token.entity {
+ cursor: help;
+}
diff --git a/iconfont/demo_index.html b/iconfont/demo_index.html
new file mode 100644
index 0000000..890cd11
--- /dev/null
+++ b/iconfont/demo_index.html
@@ -0,0 +1,487 @@
+
+
+
+
+ iconfont Demo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ - Unicode
+ - Font class
+ - Symbol
+
+
+
查看项目
+
+
+
+
+
+
+ -
+
+
cutting
+ 
+
+
+ -
+
+
model & plane-overlay
+ 
+
+
+ -
+
+
first view-filled
+ 
+
+
+ -
+
+
measure-area
+ 
+
+
+ -
+
+
measure-filled
+ 
+
+
+ -
+
+
measure-angle
+ 
+
+
+ -
+
+
measure-distance
+ 
+
+
+ -
+
+
weather control-filled
+ 
+
+
+ -
+
+
configuration
+ 
+
+
+ -
+
+
cloud download-filled
+ 
+
+
+ -
+
+
cloud upload-filled
+ 
+
+
+ -
+
+
phase-review
+ 
+
+
+ -
+
+
data-space planning
+ 
+
+
+
+
+
Unicode 引用
+
+
+
Unicode 是字体在网页端最原始的应用方式,特点是:
+
+ - 支持按字体的方式去动态调整图标大小,颜色等等。
+ - 默认情况下不支持多色,直接添加多色图标会自动去色。
+
+
+ 注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)
+
+
Unicode 使用步骤如下:
+
第一步:拷贝项目下面生成的 @font-face
+
@font-face {
+ font-family: 'iconfont';
+ src: url('iconfont.woff2?t=1620285948639') format('woff2'),
+ url('iconfont.woff?t=1620285948639') format('woff'),
+ url('iconfont.ttf?t=1620285948639') format('truetype');
+}
+
+
第二步:定义使用 iconfont 的样式
+
.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+
第三步:挑选相应图标并获取字体编码,应用于页面
+
+<span class="iconfont">3</span>
+
+
+ "iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。
+
+
+
+
+
+
+ -
+
+
+ cutting
+
+ .icon-clip-plane
+
+
+
+ -
+
+
+ model & plane-overlay
+
+ .icon-clip-box
+
+
+
+ -
+
+
+ first view-filled
+
+ .icon-firstview-filled
+
+
+
+ -
+
+
+ measure-area
+
+ .icon-measure-area
+
+
+
+ -
+
+
+ measure-filled
+
+ .icon-measure-filled
+
+
+
+ -
+
+
+ measure-angle
+
+ .icon-measure-angle
+
+
+
+ -
+
+
+ measure-distance
+
+ .icon-measure-distance
+
+
+
+ -
+
+
+ weather control-filled
+
+ .icon-weathercontrol-filled
+
+
+
+ -
+
+
+ configuration
+
+ .icon-configuration
+
+
+
+ -
+
+
+ cloud download-filled
+
+ .icon-clouddownload-filled
+
+
+
+ -
+
+
+ cloud upload-filled
+
+ .icon-cloudupload-filled
+
+
+
+ -
+
+
+ phase-review
+
+ .icon-phase-review
+
+
+
+ -
+
+
+ data-space planning
+
+ .icon-data-spaceplanning
+
+
+
+
+
+
font-class 引用
+
+
+
font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。
+
与 Unicode 使用方式相比,具有如下特点:
+
+ - 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
+ - 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
+
+
使用步骤如下:
+
第一步:引入项目下面生成的 fontclass 代码:
+
<link rel="stylesheet" href="./iconfont.css">
+
+
第二步:挑选相应图标并获取类名,应用于页面:
+
<span class="iconfont icon-xxx"></span>
+
+
+ "
+ iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。
+
+
+
+
+
+
+
Symbol 引用
+
+
+
这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章
+ 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:
+
+ - 支持多色图标了,不再受单色限制。
+ - 通过一些技巧,支持像字体那样,通过
font-size, color 来调整样式。
+ - 兼容性较差,支持 IE9+,及现代浏览器。
+ - 浏览器渲染 SVG 的性能一般,还不如 png。
+
+
使用步骤如下:
+
第一步:引入项目下面生成的 symbol 代码:
+
<script src="./iconfont.js"></script>
+
+
第二步:加入通用 CSS 代码(引入一次就行):
+
<style>
+.icon {
+ width: 1em;
+ height: 1em;
+ vertical-align: -0.15em;
+ fill: currentColor;
+ overflow: hidden;
+}
+</style>
+
+
第三步:挑选相应图标并获取类名,应用于页面:
+
<svg class="icon" aria-hidden="true">
+ <use xlink:href="#icon-xxx"></use>
+</svg>
+
+
+
+
+
+
+
+
+
diff --git a/iconfont/iconfont.css b/iconfont/iconfont.css
new file mode 100644
index 0000000..b51ade9
--- /dev/null
+++ b/iconfont/iconfont.css
@@ -0,0 +1,246 @@
+@font-face {
+ font-family: "x-viewer-iconfont";
+ src: url('iconfont.woff2') format('woff2'),
+ url('iconfont.woff') format('woff'),
+ url('iconfont.ttf') format('truetype');}
+
+.x-viewer-iconfont {
+ font-family: "x-viewer-iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-measure-area-color:before {
+ content: "\e699";
+}
+
+.icon-angle-measure:before {
+ content: "\e69a";
+}
+
+.icon-measure-distance:before {
+ content: "\e69d";
+}
+
+.icon-measure-color:before {
+ content: "\e69f";
+}
+
+.icon-annotation:before {
+ content: "\e696";
+}
+
+.icon-annotation-show:before {
+ content: "\e697";
+}
+
+.icon-annotation-hide:before {
+ content: "\e698";
+}
+
+.icon-frame-clipping:before {
+ content: "\e695";
+}
+
+.icon-compared:before {
+ content: "\e694";
+}
+
+.icon-font24:before {
+ content: "\e68e";
+}
+
+.icon-font14:before {
+ content: "\e68f";
+}
+
+.icon-font18:before {
+ content: "\e693";
+}
+
+.icon-line-4:before {
+ content: "\e68a";
+}
+
+.icon-line-1:before {
+ content: "\e68c";
+}
+
+.icon-line-2:before {
+ content: "\e68d";
+}
+
+.icon-line-3:before {
+ content: "\e690";
+}
+
+.icon-color-red:before {
+ content: "\e691";
+}
+
+.icon-eraser:before {
+ content: "\e692";
+}
+
+.icon-cross:before {
+ content: "\e689";
+}
+
+.icon-cloud:before {
+ content: "\e67d";
+}
+
+.icon-polyline:before {
+ content: "\e67e";
+}
+
+.icon-rectangle:before {
+ content: "\e67f";
+}
+
+.icon-text:before {
+ content: "\e681";
+}
+
+.icon-oval:before {
+ content: "\e682";
+}
+
+.icon-round:before {
+ content: "\e683";
+}
+
+.icon-cloud-segment:before {
+ content: "\e685";
+}
+
+.icon-arrow:before {
+ content: "\e67c";
+}
+
+.icon-revoke:before {
+ content: "\e67a";
+}
+
+.icon-redo:before {
+ content: "\e67b";
+}
+
+.icon-kuangxuanfangda:before {
+ content: "\e676";
+}
+
+.icon-tucengkongzhi:before {
+ content: "\e677";
+}
+
+.icon-celiang1:before {
+ content: "\e69b";
+}
+
+.icon-zhushitu:before {
+ content: "\e68b";
+}
+
+.icon-wenzi:before {
+ content: "\e688";
+}
+
+.icon-tianjiapizhu:before {
+ content: "\e687";
+}
+
+.icon-shuxing:before {
+ content: "\e686";
+}
+
+.icon-quanping:before {
+ content: "\e684";
+}
+
+.icon-chexiao:before {
+ content: "\e680";
+}
+
+.icon-bim_diyirencheng:before {
+ content: "\e662";
+}
+
+.icon-shanchu:before {
+ content: "\e620";
+}
+
+.icon-xiajiantou:before {
+ content: "\e61f";
+}
+
+.icon-xianshi:before {
+ content: "\e61d";
+}
+
+.icon-yincang:before {
+ content: "\e619";
+}
+
+.icon-youjiantou:before {
+ content: "\e61c";
+}
+
+.icon-tianjia:before {
+ content: "\e61b";
+}
+
+.icon-celiang:before {
+ content: "\e61a";
+}
+
+.icon-SAASfuben-:before {
+ content: "\e6bf";
+}
+
+.icon-SAASfuben-1:before {
+ content: "\e6c0";
+}
+
+.icon-xuanzhuan-copy:before {
+ content: "\e600";
+}
+
+.icon-yidong:before {
+ content: "\e61e";
+}
+
+.icon-baocunxiangmu:before {
+ content: "\e609";
+}
+
+.icon-dengguang:before {
+ content: "\e60a";
+}
+
+.icon-tiankonghe:before {
+ content: "\e60d";
+}
+
+.icon-a-ziyuan65:before {
+ content: "\e610";
+}
+
+.icon-a-ziyuan69:before {
+ content: "\e611";
+}
+
+.icon-a-ziyuan63:before {
+ content: "\e612";
+}
+
+.icon-a-ziyuan70:before {
+ content: "\e614";
+}
+
+.icon-a-ziyuan61-copy:before {
+ content: "\e615";
+}
+
diff --git a/iconfont/iconfont.js b/iconfont/iconfont.js
new file mode 100644
index 0000000..52c0de0
--- /dev/null
+++ b/iconfont/iconfont.js
@@ -0,0 +1 @@
+!function(l){var a,e,t,i,o,c,n='',d=(d=document.getElementsByTagName("script"))[d.length-1].getAttribute("data-injectcss");if(d&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}function m(){o||(o=!0,t())}a=function(){var l,a,e,t;(t=document.createElement("div")).innerHTML=n,n=null,(e=t.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",l=e,(a=document.body).firstChild?(t=l,(e=a.firstChild).parentNode.insertBefore(t,e)):a.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(e=function(){document.removeEventListener("DOMContentLoaded",e,!1),a()},document.addEventListener("DOMContentLoaded",e,!1)):document.attachEvent&&(t=a,i=l.document,o=!1,(c=function(){try{i.documentElement.doScroll("left")}catch(l){return void setTimeout(c,50)}m()})(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,m())})}(window);
\ No newline at end of file
diff --git a/iconfont/iconfont.ttf b/iconfont/iconfont.ttf
new file mode 100644
index 0000000..18d426b
Binary files /dev/null and b/iconfont/iconfont.ttf differ
diff --git a/iconfont/iconfont.woff b/iconfont/iconfont.woff
new file mode 100644
index 0000000..23adb8d
Binary files /dev/null and b/iconfont/iconfont.woff differ
diff --git a/iconfont/iconfont.woff2 b/iconfont/iconfont.woff2
new file mode 100644
index 0000000..1eb0d90
Binary files /dev/null and b/iconfont/iconfont.woff2 differ
diff --git a/iconfont/iconfont2.css b/iconfont/iconfont2.css
new file mode 100644
index 0000000..aeefff7
--- /dev/null
+++ b/iconfont/iconfont2.css
@@ -0,0 +1,240 @@
+/* Original url: https://at.alicdn.com/t/c/font_2809422_kipm6ycaet.css */
+
+@font-face {
+ font-family: "x-viewer-iconfont2";
+ src: url('iconfont2.woff2') format('woff2'),
+ url('iconfont2.woff') format('woff'),
+ url('iconfont2.ttf') format('truetype');
+}
+
+.x-viewer-iconfont2 {
+ font-family: "x-viewer-iconfont2" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-debug:before {
+ content: "\e61f";
+}
+
+.icon-camera:before {
+ content: "\e614";
+}
+
+.icon-loading:before {
+ content: "\e61c";
+}
+
+.icon-show:before {
+ content: "\e613";
+}
+
+.icon-hide:before {
+ content: "\e611";
+}
+
+.icon-firstperson:before {
+ content: "\e60d";
+}
+
+.icon-more:before {
+ content: "\e65f";
+}
+
+.icon-choosesectionplane-filled:before {
+ content: "\e629";
+}
+
+.icon-choosesectionplane:before {
+ content: "\e62a";
+}
+
+.icon-reset:before {
+ content: "\e626";
+}
+
+.icon-showsectionplane:before {
+ content: "\e627";
+}
+
+.icon-hidesectionplane:before {
+ content: "\e628";
+}
+
+.icon-home-filled:before {
+ content: "\e619";
+}
+
+.icon-home:before {
+ content: "\e61b";
+}
+
+.icon-settings:before {
+ content: "\e618";
+}
+
+.icon-clear:before {
+ content: "\e615";
+}
+
+.icon-viewpoint:before {
+ content: "\e616";
+}
+
+.icon-clear-filled:before {
+ content: "\e617";
+}
+
+.icon-fullscreen-filled:before {
+ content: "\e612";
+}
+
+.icon-sectionplane:before {
+ content: "\e60f";
+}
+
+.icon-sectionplane-filled:before {
+ content: "\e610";
+}
+
+.icon-settings-filled:before {
+ content: "\e60e";
+}
+
+.icon-areameasure-filled:before {
+ content: "\e60b";
+}
+
+.icon-areameasure:before {
+ content: "\e60c";
+}
+
+.icon-distancemeasure-filled:before {
+ content: "\e608";
+}
+
+.icon-distancemeasure:before {
+ content: "\e604";
+}
+
+.icon-viewpoint-filled:before {
+ content: "\e606";
+}
+
+.icon-new:before {
+ content: "\e60a";
+}
+
+.icon-clearmeasure-bak:before {
+ content: "\e661";
+}
+
+.icon-orthomode:before {
+ content: "\e660";
+}
+
+.icon-measure-filled:before {
+ content: "\e65d";
+}
+
+.icon-measure:before {
+ content: "\e65e";
+}
+
+.icon-view:before {
+ content: "\e65c";
+}
+
+.icon-bimtree-filled:before {
+ content: "\e65b";
+}
+
+.icon-bimtree:before {
+ content: "\e655";
+}
+
+.icon-orthomode-filled:before {
+ content: "\e654";
+}
+
+.icon-section:before {
+ content: "\e652";
+}
+
+.icon-section-filled:before {
+ content: "\e653";
+}
+
+.icon-info:before {
+ content: "\e651";
+}
+
+.icon-settings-bak:before {
+ content: "\e640";
+}
+
+.icon-sectionbox-filled:before {
+ content: "\e6c1";
+}
+
+.icon-property-filled:before {
+ content: "\e644";
+}
+
+.icon-info-filled:before {
+ content: "\e67d";
+}
+
+.icon-pizhu:before {
+ content: "\e64d";
+}
+
+.icon-pizhu-tianchong:before {
+ content: "\e64e";
+}
+
+.icon-view-filled:before {
+ content: "\e63c";
+}
+
+.icon-location-filled:before {
+ content: "\e63d";
+}
+
+.icon-property:before {
+ content: "\e643";
+}
+
+.icon-sectionbox:before {
+ content: "\e645";
+}
+
+.icon-fullscreen:before {
+ content: "\e658";
+}
+
+.icon-dishangxiamoshiqiehuan:before {
+ content: "\e662";
+}
+
+.icon-celiang:before {
+ content: "\e61a";
+}
+
+.icon-SAASfuben-:before {
+ content: "\e6bf";
+}
+
+.icon-SAASfuben-1:before {
+ content: "\e6c0";
+}
+
+.icon-xuanzhuan-copy:before {
+ content: "\e600";
+}
+
+.icon-move:before {
+ content: "\e61e";
+}
diff --git a/iconfont/iconfont2.ttf b/iconfont/iconfont2.ttf
new file mode 100644
index 0000000..4b56b0e
Binary files /dev/null and b/iconfont/iconfont2.ttf differ
diff --git a/iconfont/iconfont2.woff b/iconfont/iconfont2.woff
new file mode 100644
index 0000000..93072df
Binary files /dev/null and b/iconfont/iconfont2.woff differ
diff --git a/iconfont/iconfont2.woff2 b/iconfont/iconfont2.woff2
new file mode 100644
index 0000000..8959ced
Binary files /dev/null and b/iconfont/iconfont2.woff2 differ
diff --git a/images/snapshots/door_animation.gif b/images/snapshots/door_animation.gif
new file mode 100644
index 0000000..ff1bb38
Binary files /dev/null and b/images/snapshots/door_animation.gif differ
diff --git a/images/snapshots/home_view.png b/images/snapshots/home_view.png
new file mode 100644
index 0000000..f92a78b
Binary files /dev/null and b/images/snapshots/home_view.png differ
diff --git a/images/snapshots/overview.gif b/images/snapshots/overview.gif
new file mode 100644
index 0000000..88bbed7
Binary files /dev/null and b/images/snapshots/overview.gif differ
diff --git a/images/snapshots/rack_animation.gif b/images/snapshots/rack_animation.gif
new file mode 100644
index 0000000..0743446
Binary files /dev/null and b/images/snapshots/rack_animation.gif differ
diff --git a/images/snapshots/view_racks.gif b/images/snapshots/view_racks.gif
new file mode 100644
index 0000000..d658f23
Binary files /dev/null and b/images/snapshots/view_racks.gif differ
diff --git a/index.html b/index.html
index 44a9335..3165415 100644
--- a/index.html
+++ b/index.html
@@ -1,13 +1,899 @@
-
-
-
-
-
-
- Vite + TS
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..47548c0
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,1871 @@
+{
+ "name": "server-room",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "server-room",
+ "version": "0.0.0",
+ "dependencies": {
+ "@tweenjs/tween.js": "^25.0.0",
+ "camera-controls": "^2.9.0",
+ "http-server": "^14.1.1",
+ "three": "^0.170.0",
+ "three-bvh-csg": "^0.0.16",
+ "three-mesh-bvh": "^0.8.3"
+ },
+ "devDependencies": {
+ "@types/three": "^0.170.0",
+ "@vitejs/plugin-vue": "^5.2.1",
+ "typescript": "~5.6.2",
+ "vite": "^5.4.10"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.3.tgz",
+ "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.28.2"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.28.2",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.2.tgz",
+ "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+ "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+ "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+ "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+ "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+ "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+ "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+ "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+ "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+ "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+ "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+ "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+ "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+ "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+ "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+ "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+ "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+ "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+ "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+ "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.48.0.tgz",
+ "integrity": "sha512-aVzKH922ogVAWkKiyKXorjYymz2084zrhrZRXtLrA5eEx5SO8Dj0c/4FpCHZyn7MKzhW2pW4tK28vVr+5oQ2xw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.48.0.tgz",
+ "integrity": "sha512-diOdQuw43xTa1RddAFbhIA8toirSzFMcnIg8kvlzRbK26xqEnKJ/vqQnghTAajy2Dcy42v+GMPMo6jq67od+Dw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.48.0.tgz",
+ "integrity": "sha512-QhR2KA18fPlJWFefySJPDYZELaVqIUVnYgAOdtJ+B/uH96CFg2l1TQpX19XpUMWUqMyIiyY45wje8K6F4w4/CA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.48.0.tgz",
+ "integrity": "sha512-Q9RMXnQVJ5S1SYpNSTwXDpoQLgJ/fbInWOyjbCnnqTElEyeNvLAB3QvG5xmMQMhFN74bB5ZZJYkKaFPcOG8sGg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.48.0.tgz",
+ "integrity": "sha512-3jzOhHWM8O8PSfyft+ghXZfBkZawQA0PUGtadKYxFqpcYlOYjTi06WsnYBsbMHLawr+4uWirLlbhcYLHDXR16w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.48.0.tgz",
+ "integrity": "sha512-NcD5uVUmE73C/TPJqf78hInZmiSBsDpz3iD5MF/BuB+qzm4ooF2S1HfeTChj5K4AV3y19FFPgxonsxiEpy8v/A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.48.0.tgz",
+ "integrity": "sha512-JWnrj8qZgLWRNHr7NbpdnrQ8kcg09EBBq8jVOjmtlB3c8C6IrynAJSMhMVGME4YfTJzIkJqvSUSVJRqkDnu/aA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.48.0.tgz",
+ "integrity": "sha512-9xu92F0TxuMH0tD6tG3+GtngwdgSf8Bnz+YcsPG91/r5Vgh5LNofO48jV55priA95p3c92FLmPM7CvsVlnSbGQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.48.0.tgz",
+ "integrity": "sha512-NLtvJB5YpWn7jlp1rJiY0s+G1Z1IVmkDuiywiqUhh96MIraC0n7XQc2SZ1CZz14shqkM+XN2UrfIo7JB6UufOA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.48.0.tgz",
+ "integrity": "sha512-QJ4hCOnz2SXgCh+HmpvZkM+0NSGcZACyYS8DGbWn2PbmA0e5xUk4bIP8eqJyNXLtyB4gZ3/XyvKtQ1IFH671vQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.48.0.tgz",
+ "integrity": "sha512-Pk0qlGJnhILdIC5zSKQnprFjrGmjfDM7TPZ0FKJxRkoo+kgMRAg4ps1VlTZf8u2vohSicLg7NP+cA5qE96PaFg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.48.0.tgz",
+ "integrity": "sha512-/dNFc6rTpoOzgp5GKoYjT6uLo8okR/Chi2ECOmCZiS4oqh3mc95pThWma7Bgyk6/WTEvjDINpiBCuecPLOgBLQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.48.0.tgz",
+ "integrity": "sha512-YBwXsvsFI8CVA4ej+bJF2d9uAeIiSkqKSPQNn0Wyh4eMDY4wxuSp71BauPjQNCKK2tD2/ksJ7uhJ8X/PVY9bHQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.48.0.tgz",
+ "integrity": "sha512-FI3Rr2aGAtl1aHzbkBIamsQyuauYtTF9SDUJ8n2wMXuuxwchC3QkumZa1TEXYIv/1AUp1a25Kwy6ONArvnyeVQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.48.0.tgz",
+ "integrity": "sha512-Dx7qH0/rvNNFmCcIRe1pyQ9/H0XO4v/f0SDoafwRYwc2J7bJZ5N4CHL/cdjamISZ5Cgnon6iazAVRFlxSoHQnQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.48.0.tgz",
+ "integrity": "sha512-GUdZKTeKBq9WmEBzvFYuC88yk26vT66lQV8D5+9TgkfbewhLaTHRNATyzpQwwbHIfJvDJ3N9WJ90wK/uR3cy3Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.48.0.tgz",
+ "integrity": "sha512-ao58Adz/v14MWpQgYAb4a4h3fdw73DrDGtaiF7Opds5wNyEQwtO6M9dBh89nke0yoZzzaegq6J/EXs7eBebG8A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.48.0.tgz",
+ "integrity": "sha512-kpFno46bHtjZVdRIOxqaGeiABiToo2J+st7Yce+aiAoo1H0xPi2keyQIP04n2JjDVuxBN6bSz9R6RdTK5hIppw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.48.0.tgz",
+ "integrity": "sha512-rFYrk4lLk9YUTIeihnQMiwMr6gDhGGSbWThPEDfBoU/HdAtOzPXeexKi7yU8jO+LWRKnmqPN9NviHQf6GDwBcQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.48.0.tgz",
+ "integrity": "sha512-sq0hHLTgdtwOPDB5SJOuaoHyiP1qSwg+71TQWk8iDS04bW1wIE0oQ6otPiRj2ZvLYNASLMaTp8QRGUVZ+5OL5A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@tweenjs/tween.js": {
+ "version": "25.0.0",
+ "resolved": "https://registry.npmmirror.com/@tweenjs/tween.js/-/tween.js-25.0.0.tgz",
+ "integrity": "sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==",
+ "license": "MIT"
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/stats.js": {
+ "version": "0.17.4",
+ "resolved": "https://registry.npmmirror.com/@types/stats.js/-/stats.js-0.17.4.tgz",
+ "integrity": "sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/three": {
+ "version": "0.170.0",
+ "resolved": "https://registry.npmmirror.com/@types/three/-/three-0.170.0.tgz",
+ "integrity": "sha512-CUm2uckq+zkCY7ZbFpviRttY+6f9fvwm6YqSqPfA5K22s9w7R4VnA3rzJse8kHVvuzLcTx+CjNCs2NYe0QFAyg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tweenjs/tween.js": "~23.1.3",
+ "@types/stats.js": "*",
+ "@types/webxr": "*",
+ "@webgpu/types": "*",
+ "fflate": "~0.8.2",
+ "meshoptimizer": "~0.18.1"
+ }
+ },
+ "node_modules/@types/three/node_modules/@tweenjs/tween.js": {
+ "version": "23.1.3",
+ "resolved": "https://registry.npmmirror.com/@tweenjs/tween.js/-/tween.js-23.1.3.tgz",
+ "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/webxr": {
+ "version": "0.5.22",
+ "resolved": "https://registry.npmmirror.com/@types/webxr/-/webxr-0.5.22.tgz",
+ "integrity": "sha512-Vr6Stjv5jPRqH690f5I5GLjVk8GSsoQSYJ2FVd/3jJF7KaqfwPi3ehfBS96mlQ2kPCwZaX6U0rG2+NGHBKkA/A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz",
+ "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^5.0.0 || ^6.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.19.tgz",
+ "integrity": "sha512-/afpyvlkrSNYbPo94Qu8GtIOWS+g5TRdOvs6XZNw6pWQQmj5pBgSZvEPOIZlqWq0YvoUhDDQaQ2TnzuJdOV4hA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.28.3",
+ "@vue/shared": "3.5.19",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.19.tgz",
+ "integrity": "sha512-Drs6rPHQZx/pN9S6ml3Z3K/TWCIRPvzG2B/o5kFK9X0MNHt8/E+38tiRfojufrYBfA6FQUFB2qBBRXlcSXWtOA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-core": "3.5.19",
+ "@vue/shared": "3.5.19"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.19.tgz",
+ "integrity": "sha512-YWCm1CYaJ+2RvNmhCwI7t3I3nU+hOrWGWMsn+Z/kmm1jy5iinnVtlmkiZwbLlbV1SRizX7vHsc0/bG5dj0zRTg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.28.3",
+ "@vue/compiler-core": "3.5.19",
+ "@vue/compiler-dom": "3.5.19",
+ "@vue/compiler-ssr": "3.5.19",
+ "@vue/shared": "3.5.19",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.17",
+ "postcss": "^8.5.6",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.19.tgz",
+ "integrity": "sha512-/wx0VZtkWOPdiQLWPeQeqpHWR/LuNC7bHfSX7OayBTtUy8wur6vT6EQIX6Et86aED6J+y8tTw43qo2uoqGg5sw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.19",
+ "@vue/shared": "3.5.19"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.19.tgz",
+ "integrity": "sha512-4bueZg2qs5MSsK2dQk3sssV0cfvxb/QZntTC8v7J448GLgmfPkQ+27aDjlt40+XFqOwUq5yRxK5uQh14Fc9eVA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/shared": "3.5.19"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.19.tgz",
+ "integrity": "sha512-TaooCr8Hge1sWjLSyhdubnuofs3shhzZGfyD11gFolZrny76drPwBVQj28/z/4+msSFb18tOIg6VVVgf9/IbIA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/reactivity": "3.5.19",
+ "@vue/shared": "3.5.19"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.19.tgz",
+ "integrity": "sha512-qmahqeok6ztuUTmV8lqd7N9ymbBzctNF885n8gL3xdCC1u2RnM/coX16Via0AiONQXUoYpxPojL3U1IsDgSWUQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/reactivity": "3.5.19",
+ "@vue/runtime-core": "3.5.19",
+ "@vue/shared": "3.5.19",
+ "csstype": "^3.1.3"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.19.tgz",
+ "integrity": "sha512-ZJ/zV9SQuaIO+BEEVq/2a6fipyrSYfjKMU3267bPUk+oTx/hZq3RzV7VCh0Unlppt39Bvh6+NzxeopIFv4HJNg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-ssr": "3.5.19",
+ "@vue/shared": "3.5.19"
+ },
+ "peerDependencies": {
+ "vue": "3.5.19"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.19.tgz",
+ "integrity": "sha512-IhXCOn08wgKrLQxRFKKlSacWg4Goi1BolrdEeLYn6tgHjJNXVrWJ5nzoxZqNwl5p88aLlQ8LOaoMa3AYvaKJ/Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webgpu/types": {
+ "version": "0.1.64",
+ "resolved": "https://registry.npmmirror.com/@webgpu/types/-/types-0.1.64.tgz",
+ "integrity": "sha512-84kRIAGV46LJTlJZWxShiOrNL30A+9KokD7RB3dRCIqODFjodS5tCD5yyiZ8kIReGVZSDfA3XkkwyyOIF6K62A==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmmirror.com/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "license": "MIT"
+ },
+ "node_modules/basic-auth": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/basic-auth/-/basic-auth-2.0.1.tgz",
+ "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "5.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/camera-controls": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmmirror.com/camera-controls/-/camera-controls-2.10.1.tgz",
+ "integrity": "sha512-KnaKdcvkBJ1Irbrzl8XD6WtZltkRjp869Jx8c0ujs9K+9WD+1D7ryBsCiVqJYUqt6i/HR5FxT7RLASieUD+Q5w==",
+ "license": "MIT",
+ "peerDependencies": {
+ "three": ">=0.126.1"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/corser": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/corser/-/corser-2.0.1.tgz",
+ "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz",
+ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.21.5",
+ "@esbuild/android-arm": "0.21.5",
+ "@esbuild/android-arm64": "0.21.5",
+ "@esbuild/android-x64": "0.21.5",
+ "@esbuild/darwin-arm64": "0.21.5",
+ "@esbuild/darwin-x64": "0.21.5",
+ "@esbuild/freebsd-arm64": "0.21.5",
+ "@esbuild/freebsd-x64": "0.21.5",
+ "@esbuild/linux-arm": "0.21.5",
+ "@esbuild/linux-arm64": "0.21.5",
+ "@esbuild/linux-ia32": "0.21.5",
+ "@esbuild/linux-loong64": "0.21.5",
+ "@esbuild/linux-mips64el": "0.21.5",
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "license": "MIT"
+ },
+ "node_modules/fflate": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmmirror.com/fflate/-/fflate-0.8.2.tgz",
+ "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.11",
+ "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.11.tgz",
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "license": "MIT",
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
+ "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-encoding": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "license": "MIT",
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/http-server": {
+ "version": "14.1.1",
+ "resolved": "https://registry.npmmirror.com/http-server/-/http-server-14.1.1.tgz",
+ "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==",
+ "license": "MIT",
+ "dependencies": {
+ "basic-auth": "^2.0.1",
+ "chalk": "^4.1.2",
+ "corser": "^2.0.1",
+ "he": "^1.2.0",
+ "html-encoding-sniffer": "^3.0.0",
+ "http-proxy": "^1.18.1",
+ "mime": "^1.6.0",
+ "minimist": "^1.2.6",
+ "opener": "^1.5.1",
+ "portfinder": "^1.0.28",
+ "secure-compare": "3.0.1",
+ "union": "~0.5.0",
+ "url-join": "^4.0.1"
+ },
+ "bin": {
+ "http-server": "bin/http-server"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.18",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.18.tgz",
+ "integrity": "sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/meshoptimizer": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmmirror.com/meshoptimizer/-/meshoptimizer-0.18.1.tgz",
+ "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/opener": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz",
+ "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
+ "license": "(WTFPL OR MIT)",
+ "bin": {
+ "opener": "bin/opener-bin.js"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/portfinder": {
+ "version": "1.0.37",
+ "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.37.tgz",
+ "integrity": "sha512-yuGIEjDAYnnOex9ddMnKZEMFE0CcGo6zbfzDklkmT1m5z734ss6JMzN9rNB3+RR7iS+F10D4/BVIaXOyh8PQKw==",
+ "license": "MIT",
+ "dependencies": {
+ "async": "^3.2.6",
+ "debug": "^4.3.6"
+ },
+ "engines": {
+ "node": ">= 10.12"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.14.0.tgz",
+ "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "license": "MIT"
+ },
+ "node_modules/rollup": {
+ "version": "4.48.0",
+ "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.48.0.tgz",
+ "integrity": "sha512-BXHRqK1vyt9XVSEHZ9y7xdYtuYbwVod2mLwOMFP7t/Eqoc1pHRlG/WdV2qNeNvZHRQdLedaFycljaYYM96RqJQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.8"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.48.0",
+ "@rollup/rollup-android-arm64": "4.48.0",
+ "@rollup/rollup-darwin-arm64": "4.48.0",
+ "@rollup/rollup-darwin-x64": "4.48.0",
+ "@rollup/rollup-freebsd-arm64": "4.48.0",
+ "@rollup/rollup-freebsd-x64": "4.48.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.48.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.48.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.48.0",
+ "@rollup/rollup-linux-arm64-musl": "4.48.0",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.48.0",
+ "@rollup/rollup-linux-ppc64-gnu": "4.48.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.48.0",
+ "@rollup/rollup-linux-riscv64-musl": "4.48.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.48.0",
+ "@rollup/rollup-linux-x64-gnu": "4.48.0",
+ "@rollup/rollup-linux-x64-musl": "4.48.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.48.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.48.0",
+ "@rollup/rollup-win32-x64-msvc": "4.48.0",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
+ },
+ "node_modules/secure-compare": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/secure-compare/-/secure-compare-3.0.1.tgz",
+ "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==",
+ "license": "MIT"
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/three": {
+ "version": "0.170.0",
+ "resolved": "https://registry.npmmirror.com/three/-/three-0.170.0.tgz",
+ "integrity": "sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ==",
+ "license": "MIT"
+ },
+ "node_modules/three-bvh-csg": {
+ "version": "0.0.16",
+ "resolved": "https://registry.npmmirror.com/three-bvh-csg/-/three-bvh-csg-0.0.16.tgz",
+ "integrity": "sha512-RgC5dY0hAKdfd1bmD3o2CDfmK9GTkvsA1ECzoqTMhSkjSc2zp1z4Wpa5+emLi/EosF5P6+aK2veTxTLZA9+Mhw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "three": ">=0.151.0",
+ "three-mesh-bvh": ">=0.6.6"
+ }
+ },
+ "node_modules/three-mesh-bvh": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmmirror.com/three-mesh-bvh/-/three-mesh-bvh-0.8.3.tgz",
+ "integrity": "sha512-4G5lBaF+g2auKX3P0yqx+MJC6oVt6sB5k+CchS6Ob0qvH0YIhuUk1eYr7ktsIpY+albCqE80/FVQGV190PmiAg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "three": ">= 0.159.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.6.3",
+ "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.6.3.tgz",
+ "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/union": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/union/-/union-0.5.0.tgz",
+ "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==",
+ "dependencies": {
+ "qs": "^6.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/url-join": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/url-join/-/url-join-4.0.1.tgz",
+ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
+ "license": "MIT"
+ },
+ "node_modules/vite": {
+ "version": "5.4.19",
+ "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.19.tgz",
+ "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.21.3",
+ "postcss": "^8.4.43",
+ "rollup": "^4.20.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || >=20.0.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "sass-embedded": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.5.19",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.19.tgz",
+ "integrity": "sha512-ZRh0HTmw6KChRYWgN8Ox/wi7VhpuGlvMPrHjIsdRbzKNgECFLzy+dKL5z9yGaBSjCpmcfJCbh3I1tNSRmBz2tg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.19",
+ "@vue/compiler-sfc": "3.5.19",
+ "@vue/runtime-dom": "3.5.19",
+ "@vue/server-renderer": "3.5.19",
+ "@vue/shared": "3.5.19"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
+ "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "0.6.3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index 20ab8af..29add50 100644
--- a/package.json
+++ b/package.json
@@ -1,9 +1,10 @@
{
- "name": "room3d",
+ "name": "server-room",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
+ "start": "http-server -p 8080 -c-1 .",
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview"
@@ -17,6 +18,7 @@
"dependencies": {
"@tweenjs/tween.js": "^25.0.0",
"camera-controls": "^2.9.0",
+ "http-server": "^14.1.1",
"three": "^0.170.0",
"three-bvh-csg": "^0.0.16",
"three-mesh-bvh": "^0.8.3"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
deleted file mode 100644
index 399aef6..0000000
--- a/pnpm-lock.yaml
+++ /dev/null
@@ -1,801 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@tweenjs/tween.js':
- specifier: ^25.0.0
- version: 25.0.0
- camera-controls:
- specifier: ^2.9.0
- version: 2.9.0(three@0.170.0)
- three:
- specifier: ^0.170.0
- version: 0.170.0
- three-bvh-csg:
- specifier: ^0.0.16
- version: 0.0.16(three-mesh-bvh@0.8.3(three@0.170.0))(three@0.170.0)
- three-mesh-bvh:
- specifier: ^0.8.3
- version: 0.8.3(three@0.170.0)
- devDependencies:
- '@types/three':
- specifier: ^0.170.0
- version: 0.170.0
- '@vitejs/plugin-vue':
- specifier: ^5.2.1
- version: 5.2.1(vite@5.4.11)(vue@3.5.13(typescript@5.6.3))
- typescript:
- specifier: ~5.6.2
- version: 5.6.3
- vite:
- specifier: ^5.4.10
- version: 5.4.11
-
-packages:
-
- '@babel/helper-string-parser@7.25.9':
- resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.25.9':
- resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.26.2':
- resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- '@babel/types@7.26.0':
- resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
- engines: {node: '>=6.9.0'}
-
- '@esbuild/aix-ppc64@0.21.5':
- resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.21.5':
- resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.21.5':
- resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.21.5':
- resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.21.5':
- resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.21.5':
- resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.21.5':
- resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.21.5':
- resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.21.5':
- resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.21.5':
- resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.21.5':
- resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.21.5':
- resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.21.5':
- resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.21.5':
- resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.21.5':
- resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.21.5':
- resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.21.5':
- resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.21.5':
- resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-x64@0.21.5':
- resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.21.5':
- resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.21.5':
- resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.21.5':
- resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.21.5':
- resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
-
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
-
- '@rollup/rollup-android-arm-eabi@4.27.2':
- resolution: {integrity: sha512-Tj+j7Pyzd15wAdSJswvs5CJzJNV+qqSUcr/aCD+jpQSBtXvGnV0pnrjoc8zFTe9fcKCatkpFpOO7yAzpO998HA==}
- cpu: [arm]
- os: [android]
-
- '@rollup/rollup-android-arm64@4.27.2':
- resolution: {integrity: sha512-xsPeJgh2ThBpUqlLgRfiVYBEf/P1nWlWvReG+aBWfNv3XEBpa6ZCmxSVnxJgLgkNz4IbxpLy64h2gCmAAQLneQ==}
- cpu: [arm64]
- os: [android]
-
- '@rollup/rollup-darwin-arm64@4.27.2':
- resolution: {integrity: sha512-KnXU4m9MywuZFedL35Z3PuwiTSn/yqRIhrEA9j+7OSkji39NzVkgxuxTYg5F8ryGysq4iFADaU5osSizMXhU2A==}
- cpu: [arm64]
- os: [darwin]
-
- '@rollup/rollup-darwin-x64@4.27.2':
- resolution: {integrity: sha512-Hj77A3yTvUeCIx/Vi+4d4IbYhyTwtHj07lVzUgpUq9YpJSEiGJj4vXMKwzJ3w5zp5v3PFvpJNgc/J31smZey6g==}
- cpu: [x64]
- os: [darwin]
-
- '@rollup/rollup-freebsd-arm64@4.27.2':
- resolution: {integrity: sha512-RjgKf5C3xbn8gxvCm5VgKZ4nn0pRAIe90J0/fdHUsgztd3+Zesb2lm2+r6uX4prV2eUByuxJNdt647/1KPRq5g==}
- cpu: [arm64]
- os: [freebsd]
-
- '@rollup/rollup-freebsd-x64@4.27.2':
- resolution: {integrity: sha512-duq21FoXwQtuws+V9H6UZ+eCBc7fxSpMK1GQINKn3fAyd9DFYKPJNcUhdIKOrMFjLEJgQskoMoiuizMt+dl20g==}
- cpu: [x64]
- os: [freebsd]
-
- '@rollup/rollup-linux-arm-gnueabihf@4.27.2':
- resolution: {integrity: sha512-6npqOKEPRZkLrMcvyC/32OzJ2srdPzCylJjiTJT2c0bwwSGm7nz2F9mNQ1WrAqCBZROcQn91Fno+khFhVijmFA==}
- cpu: [arm]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-arm-musleabihf@4.27.2':
- resolution: {integrity: sha512-V9Xg6eXtgBtHq2jnuQwM/jr2mwe2EycnopO8cbOvpzFuySCGtKlPCI3Hj9xup/pJK5Q0388qfZZy2DqV2J8ftw==}
- cpu: [arm]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-arm64-gnu@4.27.2':
- resolution: {integrity: sha512-uCFX9gtZJoQl2xDTpRdseYuNqyKkuMDtH6zSrBTA28yTfKyjN9hQ2B04N5ynR8ILCoSDOrG/Eg+J2TtJ1e/CSA==}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-arm64-musl@4.27.2':
- resolution: {integrity: sha512-/PU9P+7Rkz8JFYDHIi+xzHabOu9qEWR07L5nWLIUsvserrxegZExKCi2jhMZRd0ATdboKylu/K5yAXbp7fYFvA==}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-powerpc64le-gnu@4.27.2':
- resolution: {integrity: sha512-eCHmol/dT5odMYi/N0R0HC8V8QE40rEpkyje/ZAXJYNNoSfrObOvG/Mn+s1F/FJyB7co7UQZZf6FuWnN6a7f4g==}
- cpu: [ppc64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-riscv64-gnu@4.27.2':
- resolution: {integrity: sha512-DEP3Njr9/ADDln3kNi76PXonLMSSMiCir0VHXxmGSHxCxDfQ70oWjHcJGfiBugzaqmYdTC7Y+8Int6qbnxPBIQ==}
- cpu: [riscv64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-s390x-gnu@4.27.2':
- resolution: {integrity: sha512-NHGo5i6IE/PtEPh5m0yw5OmPMpesFnzMIS/lzvN5vknnC1sXM5Z/id5VgcNPgpD+wHmIcuYYgW+Q53v+9s96lQ==}
- cpu: [s390x]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-x64-gnu@4.27.2':
- resolution: {integrity: sha512-PaW2DY5Tan+IFvNJGHDmUrORadbe/Ceh8tQxi8cmdQVCCYsLoQo2cuaSj+AU+YRX8M4ivS2vJ9UGaxfuNN7gmg==}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-x64-musl@4.27.2':
- resolution: {integrity: sha512-dOlWEMg2gI91Qx5I/HYqOD6iqlJspxLcS4Zlg3vjk1srE67z5T2Uz91yg/qA8sY0XcwQrFzWWiZhMNERylLrpQ==}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-win32-arm64-msvc@4.27.2':
- resolution: {integrity: sha512-euMIv/4x5Y2/ImlbGl88mwKNXDsvzbWUlT7DFky76z2keajCtcbAsN9LUdmk31hAoVmJJYSThgdA0EsPeTr1+w==}
- cpu: [arm64]
- os: [win32]
-
- '@rollup/rollup-win32-ia32-msvc@4.27.2':
- resolution: {integrity: sha512-RsnE6LQkUHlkC10RKngtHNLxb7scFykEbEwOFDjr3CeCMG+Rr+cKqlkKc2/wJ1u4u990urRHCbjz31x84PBrSQ==}
- cpu: [ia32]
- os: [win32]
-
- '@rollup/rollup-win32-x64-msvc@4.27.2':
- resolution: {integrity: sha512-foJM5vv+z2KQmn7emYdDLyTbkoO5bkHZE1oth2tWbQNGW7mX32d46Hz6T0MqXdWS2vBZhaEtHqdy9WYwGfiliA==}
- cpu: [x64]
- os: [win32]
-
- '@tweenjs/tween.js@23.1.3':
- resolution: {integrity: sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==}
-
- '@tweenjs/tween.js@25.0.0':
- resolution: {integrity: sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==}
-
- '@types/estree@1.0.6':
- resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
-
- '@types/stats.js@0.17.3':
- resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==}
-
- '@types/three@0.170.0':
- resolution: {integrity: sha512-CUm2uckq+zkCY7ZbFpviRttY+6f9fvwm6YqSqPfA5K22s9w7R4VnA3rzJse8kHVvuzLcTx+CjNCs2NYe0QFAyg==}
-
- '@types/webxr@0.5.20':
- resolution: {integrity: sha512-JGpU6qiIJQKUuVSKx1GtQnHJGxRjtfGIhzO2ilq43VZZS//f1h1Sgexbdk+Lq+7569a6EYhOWrUpIruR/1Enmg==}
-
- '@vitejs/plugin-vue@5.2.1':
- resolution: {integrity: sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==}
- engines: {node: ^18.0.0 || >=20.0.0}
- peerDependencies:
- vite: ^5.0.0 || ^6.0.0
- vue: ^3.2.25
-
- '@vue/compiler-core@3.5.13':
- resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
-
- '@vue/compiler-dom@3.5.13':
- resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
-
- '@vue/compiler-sfc@3.5.13':
- resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
-
- '@vue/compiler-ssr@3.5.13':
- resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
-
- '@vue/reactivity@3.5.13':
- resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==}
-
- '@vue/runtime-core@3.5.13':
- resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==}
-
- '@vue/runtime-dom@3.5.13':
- resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==}
-
- '@vue/server-renderer@3.5.13':
- resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==}
- peerDependencies:
- vue: 3.5.13
-
- '@vue/shared@3.5.13':
- resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
-
- '@webgpu/types@0.1.51':
- resolution: {integrity: sha512-ktR3u64NPjwIViNCck+z9QeyN0iPkQCUOQ07ZCV1RzlkfP+olLTeEZ95O1QHS+v4w9vJeY9xj/uJuSphsHy5rQ==}
-
- camera-controls@2.9.0:
- resolution: {integrity: sha512-TpCujnP0vqPppTXXJRYpvIy0xq9Tro6jQf2iYUxlDpPCNxkvE/XGaTuwIxnhINOkVP/ob2CRYXtY3iVYXeMEzA==}
- peerDependencies:
- three: '>=0.126.1'
-
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
-
- entities@4.5.0:
- resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
- engines: {node: '>=0.12'}
-
- esbuild@0.21.5:
- resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
- engines: {node: '>=12'}
- hasBin: true
-
- estree-walker@2.0.2:
- resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
-
- fflate@0.8.2:
- resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- magic-string@0.30.14:
- resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==}
-
- meshoptimizer@0.18.1:
- resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==}
-
- nanoid@3.3.7:
- resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- postcss@8.4.49:
- resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
- engines: {node: ^10 || ^12 || >=14}
-
- rollup@4.27.2:
- resolution: {integrity: sha512-KreA+PzWmk2yaFmZVwe6GB2uBD86nXl86OsDkt1bJS9p3vqWuEQ6HnJJ+j/mZi/q0920P99/MVRlB4L3crpF5w==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- three-bvh-csg@0.0.16:
- resolution: {integrity: sha512-RgC5dY0hAKdfd1bmD3o2CDfmK9GTkvsA1ECzoqTMhSkjSc2zp1z4Wpa5+emLi/EosF5P6+aK2veTxTLZA9+Mhw==}
- peerDependencies:
- three: '>=0.151.0'
- three-mesh-bvh: '>=0.6.6'
-
- three-mesh-bvh@0.8.3:
- resolution: {integrity: sha512-4G5lBaF+g2auKX3P0yqx+MJC6oVt6sB5k+CchS6Ob0qvH0YIhuUk1eYr7ktsIpY+albCqE80/FVQGV190PmiAg==}
- peerDependencies:
- three: '>= 0.159.0'
-
- three@0.170.0:
- resolution: {integrity: sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ==}
-
- typescript@5.6.3:
- resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==}
- engines: {node: '>=14.17'}
- hasBin: true
-
- vite@5.4.11:
- resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^18.0.0 || >=20.0.0
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- sass-embedded: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
-
- vue@3.5.13:
- resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
-snapshots:
-
- '@babel/helper-string-parser@7.25.9': {}
-
- '@babel/helper-validator-identifier@7.25.9': {}
-
- '@babel/parser@7.26.2':
- dependencies:
- '@babel/types': 7.26.0
-
- '@babel/types@7.26.0':
- dependencies:
- '@babel/helper-string-parser': 7.25.9
- '@babel/helper-validator-identifier': 7.25.9
-
- '@esbuild/aix-ppc64@0.21.5':
- optional: true
-
- '@esbuild/android-arm64@0.21.5':
- optional: true
-
- '@esbuild/android-arm@0.21.5':
- optional: true
-
- '@esbuild/android-x64@0.21.5':
- optional: true
-
- '@esbuild/darwin-arm64@0.21.5':
- optional: true
-
- '@esbuild/darwin-x64@0.21.5':
- optional: true
-
- '@esbuild/freebsd-arm64@0.21.5':
- optional: true
-
- '@esbuild/freebsd-x64@0.21.5':
- optional: true
-
- '@esbuild/linux-arm64@0.21.5':
- optional: true
-
- '@esbuild/linux-arm@0.21.5':
- optional: true
-
- '@esbuild/linux-ia32@0.21.5':
- optional: true
-
- '@esbuild/linux-loong64@0.21.5':
- optional: true
-
- '@esbuild/linux-mips64el@0.21.5':
- optional: true
-
- '@esbuild/linux-ppc64@0.21.5':
- optional: true
-
- '@esbuild/linux-riscv64@0.21.5':
- optional: true
-
- '@esbuild/linux-s390x@0.21.5':
- optional: true
-
- '@esbuild/linux-x64@0.21.5':
- optional: true
-
- '@esbuild/netbsd-x64@0.21.5':
- optional: true
-
- '@esbuild/openbsd-x64@0.21.5':
- optional: true
-
- '@esbuild/sunos-x64@0.21.5':
- optional: true
-
- '@esbuild/win32-arm64@0.21.5':
- optional: true
-
- '@esbuild/win32-ia32@0.21.5':
- optional: true
-
- '@esbuild/win32-x64@0.21.5':
- optional: true
-
- '@jridgewell/sourcemap-codec@1.5.0': {}
-
- '@rollup/rollup-android-arm-eabi@4.27.2':
- optional: true
-
- '@rollup/rollup-android-arm64@4.27.2':
- optional: true
-
- '@rollup/rollup-darwin-arm64@4.27.2':
- optional: true
-
- '@rollup/rollup-darwin-x64@4.27.2':
- optional: true
-
- '@rollup/rollup-freebsd-arm64@4.27.2':
- optional: true
-
- '@rollup/rollup-freebsd-x64@4.27.2':
- optional: true
-
- '@rollup/rollup-linux-arm-gnueabihf@4.27.2':
- optional: true
-
- '@rollup/rollup-linux-arm-musleabihf@4.27.2':
- optional: true
-
- '@rollup/rollup-linux-arm64-gnu@4.27.2':
- optional: true
-
- '@rollup/rollup-linux-arm64-musl@4.27.2':
- optional: true
-
- '@rollup/rollup-linux-powerpc64le-gnu@4.27.2':
- optional: true
-
- '@rollup/rollup-linux-riscv64-gnu@4.27.2':
- optional: true
-
- '@rollup/rollup-linux-s390x-gnu@4.27.2':
- optional: true
-
- '@rollup/rollup-linux-x64-gnu@4.27.2':
- optional: true
-
- '@rollup/rollup-linux-x64-musl@4.27.2':
- optional: true
-
- '@rollup/rollup-win32-arm64-msvc@4.27.2':
- optional: true
-
- '@rollup/rollup-win32-ia32-msvc@4.27.2':
- optional: true
-
- '@rollup/rollup-win32-x64-msvc@4.27.2':
- optional: true
-
- '@tweenjs/tween.js@23.1.3': {}
-
- '@tweenjs/tween.js@25.0.0': {}
-
- '@types/estree@1.0.6': {}
-
- '@types/stats.js@0.17.3': {}
-
- '@types/three@0.170.0':
- dependencies:
- '@tweenjs/tween.js': 23.1.3
- '@types/stats.js': 0.17.3
- '@types/webxr': 0.5.20
- '@webgpu/types': 0.1.51
- fflate: 0.8.2
- meshoptimizer: 0.18.1
-
- '@types/webxr@0.5.20': {}
-
- '@vitejs/plugin-vue@5.2.1(vite@5.4.11)(vue@3.5.13(typescript@5.6.3))':
- dependencies:
- vite: 5.4.11
- vue: 3.5.13(typescript@5.6.3)
-
- '@vue/compiler-core@3.5.13':
- dependencies:
- '@babel/parser': 7.26.2
- '@vue/shared': 3.5.13
- entities: 4.5.0
- estree-walker: 2.0.2
- source-map-js: 1.2.1
-
- '@vue/compiler-dom@3.5.13':
- dependencies:
- '@vue/compiler-core': 3.5.13
- '@vue/shared': 3.5.13
-
- '@vue/compiler-sfc@3.5.13':
- dependencies:
- '@babel/parser': 7.26.2
- '@vue/compiler-core': 3.5.13
- '@vue/compiler-dom': 3.5.13
- '@vue/compiler-ssr': 3.5.13
- '@vue/shared': 3.5.13
- estree-walker: 2.0.2
- magic-string: 0.30.14
- postcss: 8.4.49
- source-map-js: 1.2.1
-
- '@vue/compiler-ssr@3.5.13':
- dependencies:
- '@vue/compiler-dom': 3.5.13
- '@vue/shared': 3.5.13
-
- '@vue/reactivity@3.5.13':
- dependencies:
- '@vue/shared': 3.5.13
-
- '@vue/runtime-core@3.5.13':
- dependencies:
- '@vue/reactivity': 3.5.13
- '@vue/shared': 3.5.13
-
- '@vue/runtime-dom@3.5.13':
- dependencies:
- '@vue/reactivity': 3.5.13
- '@vue/runtime-core': 3.5.13
- '@vue/shared': 3.5.13
- csstype: 3.1.3
-
- '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.6.3))':
- dependencies:
- '@vue/compiler-ssr': 3.5.13
- '@vue/shared': 3.5.13
- vue: 3.5.13(typescript@5.6.3)
-
- '@vue/shared@3.5.13': {}
-
- '@webgpu/types@0.1.51': {}
-
- camera-controls@2.9.0(three@0.170.0):
- dependencies:
- three: 0.170.0
-
- csstype@3.1.3: {}
-
- entities@4.5.0: {}
-
- esbuild@0.21.5:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.21.5
- '@esbuild/android-arm': 0.21.5
- '@esbuild/android-arm64': 0.21.5
- '@esbuild/android-x64': 0.21.5
- '@esbuild/darwin-arm64': 0.21.5
- '@esbuild/darwin-x64': 0.21.5
- '@esbuild/freebsd-arm64': 0.21.5
- '@esbuild/freebsd-x64': 0.21.5
- '@esbuild/linux-arm': 0.21.5
- '@esbuild/linux-arm64': 0.21.5
- '@esbuild/linux-ia32': 0.21.5
- '@esbuild/linux-loong64': 0.21.5
- '@esbuild/linux-mips64el': 0.21.5
- '@esbuild/linux-ppc64': 0.21.5
- '@esbuild/linux-riscv64': 0.21.5
- '@esbuild/linux-s390x': 0.21.5
- '@esbuild/linux-x64': 0.21.5
- '@esbuild/netbsd-x64': 0.21.5
- '@esbuild/openbsd-x64': 0.21.5
- '@esbuild/sunos-x64': 0.21.5
- '@esbuild/win32-arm64': 0.21.5
- '@esbuild/win32-ia32': 0.21.5
- '@esbuild/win32-x64': 0.21.5
-
- estree-walker@2.0.2: {}
-
- fflate@0.8.2: {}
-
- fsevents@2.3.3:
- optional: true
-
- magic-string@0.30.14:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.0
-
- meshoptimizer@0.18.1: {}
-
- nanoid@3.3.7: {}
-
- picocolors@1.1.1: {}
-
- postcss@8.4.49:
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- rollup@4.27.2:
- dependencies:
- '@types/estree': 1.0.6
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.27.2
- '@rollup/rollup-android-arm64': 4.27.2
- '@rollup/rollup-darwin-arm64': 4.27.2
- '@rollup/rollup-darwin-x64': 4.27.2
- '@rollup/rollup-freebsd-arm64': 4.27.2
- '@rollup/rollup-freebsd-x64': 4.27.2
- '@rollup/rollup-linux-arm-gnueabihf': 4.27.2
- '@rollup/rollup-linux-arm-musleabihf': 4.27.2
- '@rollup/rollup-linux-arm64-gnu': 4.27.2
- '@rollup/rollup-linux-arm64-musl': 4.27.2
- '@rollup/rollup-linux-powerpc64le-gnu': 4.27.2
- '@rollup/rollup-linux-riscv64-gnu': 4.27.2
- '@rollup/rollup-linux-s390x-gnu': 4.27.2
- '@rollup/rollup-linux-x64-gnu': 4.27.2
- '@rollup/rollup-linux-x64-musl': 4.27.2
- '@rollup/rollup-win32-arm64-msvc': 4.27.2
- '@rollup/rollup-win32-ia32-msvc': 4.27.2
- '@rollup/rollup-win32-x64-msvc': 4.27.2
- fsevents: 2.3.3
-
- source-map-js@1.2.1: {}
-
- three-bvh-csg@0.0.16(three-mesh-bvh@0.8.3(three@0.170.0))(three@0.170.0):
- dependencies:
- three: 0.170.0
- three-mesh-bvh: 0.8.3(three@0.170.0)
-
- three-mesh-bvh@0.8.3(three@0.170.0):
- dependencies:
- three: 0.170.0
-
- three@0.170.0: {}
-
- typescript@5.6.3: {}
-
- vite@5.4.11:
- dependencies:
- esbuild: 0.21.5
- postcss: 8.4.49
- rollup: 4.27.2
- optionalDependencies:
- fsevents: 2.3.3
-
- vue@3.5.13(typescript@5.6.3):
- dependencies:
- '@vue/compiler-dom': 3.5.13
- '@vue/compiler-sfc': 3.5.13
- '@vue/runtime-dom': 3.5.13
- '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.6.3))
- '@vue/shared': 3.5.13
- optionalDependencies:
- typescript: 5.6.3
diff --git a/public/assets/door/door14-l.png b/public/assets/door/door14-l.png
deleted file mode 100644
index ffafb2d..0000000
Binary files a/public/assets/door/door14-l.png and /dev/null differ
diff --git a/public/assets/door/door14-r.png b/public/assets/door/door14-r.png
deleted file mode 100644
index 7b55705..0000000
Binary files a/public/assets/door/door14-r.png and /dev/null differ
diff --git a/public/assets/door/door15-l.jpg b/public/assets/door/door15-l.jpg
deleted file mode 100644
index d83b2c7..0000000
Binary files a/public/assets/door/door15-l.jpg and /dev/null differ
diff --git a/public/assets/door/door15-r.jpg b/public/assets/door/door15-r.jpg
deleted file mode 100644
index 7ecda83..0000000
Binary files a/public/assets/door/door15-r.jpg and /dev/null differ
diff --git a/public/assets/door/door2.jpg b/public/assets/door/door2.jpg
deleted file mode 100644
index 824f683..0000000
Binary files a/public/assets/door/door2.jpg and /dev/null differ
diff --git a/public/assets/jianzhu/dalou.mtl b/public/assets/jianzhu/dalou.mtl
deleted file mode 100644
index c2f237b..0000000
--- a/public/assets/jianzhu/dalou.mtl
+++ /dev/null
@@ -1,54 +0,0 @@
-# 3ds Max Wavefront OBJ Exporter v0.94b - (c)2007 guruware
-# �������ļ�:14.09.2017 11:23:33
-
-newmtl Material__2596
- Ns 10.0000
- Ni 1.5000
- d 1.0000
- Tf 1.0000 1.0000 1.0000
- illum 2
- Ka 1 1 1
- Kd 0.5882 0.5882 0.5882
- Ks 0.0000 0.0000 0.0000
- Ke 0.0000 0.0000 0.0000
- map_Ka fangzi4-2.jpg
- map_Kd fangzi4-2.jpg
-
-newmtl Material__2569
- Ns 10.0000
- Ni 1.5000
- d 1.0000
- Tf 1.0000 1.0000 1.0000
- illum 2
- Ka 1 1 1
- Kd 0.5882 0.5882 0.5882
- Ks 0.0000 0.0000 0.0000
- Ke 0.0000 0.0000 0.0000
- map_Ka fangzi4-4.jpg
- map_Kd fangzi4-4.jpg
-
-newmtl Material__2593
- Ns 10.0000
- Ni 1.5000
- d 1.0000
- Tf 1.0000 1.0000 1.0000
- illum 2
- Ka 1 1 1
- Kd 0.5882 0.5882 0.5882
- Ks 0.0000 0.0000 0.0000
- Ke 0.0000 0.0000 0.0000
- map_Ka fangzi4-3.jpg
- map_Kd fangzi4-3.jpg
-
-newmtl Material__2590
- Ns 10.0000
- Ni 1.5000
- d 1.0000
- Tf 1.0000 1.0000 1.0000
- illum 2
- Ka 1 1 1
- Kd 0.5882 0.5882 0.5882
- Ks 0.0000 0.0000 0.0000
- Ke 0.0000 0.0000 0.0000
- map_Ka fangzi4-1.jpg
- map_Kd fangzi4-1.jpg
diff --git a/public/assets/jianzhu/dalou.obj b/public/assets/jianzhu/dalou.obj
deleted file mode 100644
index 2374873..0000000
--- a/public/assets/jianzhu/dalou.obj
+++ /dev/null
@@ -1,4286 +0,0 @@
-# 3ds Max Wavefront OBJ Exporter v0.94b - (c)2007 guruware
-# ļ:14.09.2017 11:23:33
-
-mtllib dalou.mtl
-
-#
-# object fangzi4_2
-#
-
-v -79.9662 -71.7484 -119.2779
-v -79.9662 -71.7484 -156.1582
-v 236.4906 -71.7484 -156.1582
-v 236.4906 -71.7484 -119.2779
-v -73.5773 -59.5598 -150.3165
-v -73.5773 -59.5598 -156.1582
-v -79.9662 -59.5598 -156.1582
-v -73.5773 -59.5598 -119.2779
-v -79.9662 -59.5598 -119.2779
-v 236.4906 -66.7484 -119.2779
-v 229.6014 -66.7484 -119.2779
-v -73.5773 -66.7484 -119.2779
-v -79.9662 -66.7484 -119.2779
-v 236.4906 -66.7484 -156.1582
-v -79.9662 -66.7484 -156.1582
-v -73.5773 -66.7484 -156.1582
-v 229.6014 -66.7484 -156.1582
-v 236.4906 -59.5598 -119.2779
-v 236.4906 -59.5598 -156.1582
-v 229.6014 -59.5598 -156.1582
-v 229.6014 -59.5598 -150.3165
-v 229.6014 -59.5598 -119.2779
-v 229.6014 -66.7484 -150.3165
-v -73.5773 -66.7484 -150.3165
-v -79.9662 19.6372 -119.2779
-v -79.9662 19.6372 -156.1582
-v 236.4906 19.6372 -156.1582
-v 236.4906 19.6372 -119.2779
-v -73.5773 31.8258 -150.3165
-v -73.5773 31.8258 -156.1582
-v -79.9662 31.8258 -156.1582
-v -73.5773 31.8258 -119.2779
-v -79.9662 31.8258 -119.2779
-v 236.4906 24.6372 -119.2779
-v 229.6014 24.6372 -119.2779
-v -73.5773 24.6372 -119.2779
-v -79.9662 24.6372 -119.2779
-v 236.4906 24.6372 -156.1582
-v -79.9662 24.6372 -156.1582
-v -73.5773 24.6372 -156.1582
-v 229.6014 24.6372 -156.1582
-v 236.4906 31.8258 -119.2779
-v 236.4906 31.8258 -156.1582
-v 229.6014 31.8258 -156.1582
-v 229.6014 31.8258 -150.3165
-v 229.6014 31.8258 -119.2779
-v 229.6014 24.6372 -150.3165
-v -73.5773 24.6372 -150.3165
-v -78.9663 35.9217 -155.1582
-v -78.9663 35.9217 -119.2779
-v -78.9663 34.9217 -119.2779
-v -78.9663 34.9217 -155.1582
-v 236.4906 35.9217 -155.1582
-v 236.4906 34.9217 -155.1582
-v 236.4906 35.9217 -156.1582
-v 236.4906 34.9217 -156.1582
-v -79.9663 35.9217 -156.1582
-v -79.9663 34.9217 -156.1582
-v -79.9663 35.9217 -119.2779
-v -79.9663 34.9217 -119.2779
-v -78.9663 39.6922 -155.1582
-v -78.9663 39.6922 -119.2779
-v -78.9663 38.6922 -119.2779
-v -78.9663 38.6922 -155.1582
-v 236.4906 39.6922 -155.1582
-v 236.4906 38.6922 -155.1582
-v 236.4906 39.6922 -156.1582
-v 236.4906 38.6922 -156.1582
-v -79.9663 39.6922 -156.1582
-v -79.9663 38.6922 -156.1582
-v -79.9663 39.6922 -119.2779
-v -79.9663 38.6922 -119.2779
-v -78.9663 43.4628 -155.1582
-v -78.9663 43.4628 -119.2779
-v -78.9663 42.4628 -119.2779
-v -78.9663 42.4628 -155.1582
-v 236.4906 43.4628 -155.1582
-v 236.4906 42.4628 -155.1582
-v 236.4906 43.4628 -156.1582
-v 236.4906 42.4628 -156.1582
-v -79.9663 43.4628 -156.1582
-v -79.9663 42.4628 -156.1582
-v -79.9663 43.4628 -119.2779
-v -79.9663 42.4628 -119.2779
-v -78.9663 47.2333 -155.1582
-v -78.9663 47.2333 -119.2779
-v -78.9663 46.2333 -119.2779
-v -78.9663 46.2333 -155.1582
-v 236.4906 47.2333 -155.1582
-v 236.4906 46.2333 -155.1582
-v 236.4906 47.2333 -156.1582
-v 236.4906 46.2333 -156.1582
-v -79.9663 47.2333 -156.1582
-v -79.9663 46.2333 -156.1582
-v -79.9663 47.2333 -119.2779
-v -79.9663 46.2333 -119.2779
-v -78.9663 51.0039 -155.1582
-v -78.9663 51.0039 -119.2779
-v -78.9663 50.0039 -119.2779
-v -78.9663 50.0039 -155.1582
-v 236.4906 51.0039 -155.1582
-v 236.4906 50.0039 -155.1582
-v 236.4906 51.0039 -156.1582
-v 236.4906 50.0039 -156.1582
-v -79.9663 51.0039 -156.1582
-v -79.9663 50.0039 -156.1582
-v -79.9663 51.0039 -119.2779
-v -79.9663 50.0039 -119.2779
-v -78.9663 54.7745 -155.1582
-v -78.9663 54.7745 -119.2779
-v -78.9663 53.7745 -119.2779
-v -78.9663 53.7745 -155.1582
-v 236.4906 54.7745 -155.1582
-v 236.4906 53.7745 -155.1582
-v 236.4906 54.7745 -156.1582
-v 236.4906 53.7745 -156.1582
-v -79.9663 54.7745 -156.1582
-v -79.9663 53.7745 -156.1582
-v -79.9663 54.7745 -119.2779
-v -79.9663 53.7745 -119.2779
-v -78.9663 58.5450 -155.1582
-v -78.9663 58.5450 -119.2779
-v -78.9663 57.5450 -119.2779
-v -78.9663 57.5450 -155.1582
-v 236.4906 58.5450 -155.1582
-v 236.4906 57.5450 -155.1582
-v 236.4906 58.5450 -156.1582
-v 236.4906 57.5450 -156.1582
-v -79.9663 58.5450 -156.1582
-v -79.9663 57.5450 -156.1582
-v -79.9663 58.5450 -119.2779
-v -79.9663 57.5450 -119.2779
-v -78.9663 62.3156 -155.1582
-v -78.9663 62.3156 -119.2779
-v -78.9663 61.3156 -119.2779
-v -78.9663 61.3156 -155.1582
-v 236.4906 62.3156 -155.1582
-v 236.4906 61.3156 -155.1582
-v 236.4906 62.3156 -156.1582
-v 236.4906 61.3156 -156.1582
-v -79.9663 62.3156 -156.1582
-v -79.9663 61.3156 -156.1582
-v -79.9663 62.3156 -119.2779
-v -79.9663 61.3156 -119.2779
-v -78.0904 31.8258 -155.2502
-v -78.0904 31.8258 -156.0502
-v -77.2904 31.8258 -156.0502
-v -77.2904 31.8258 -155.2502
-v -78.0904 65.3300 -155.2502
-v -77.2904 65.3300 -155.2502
-v -77.2904 65.3300 -156.0502
-v -78.0904 65.3300 -156.0502
-v -40.6155 31.8258 -155.2502
-v -40.6155 31.8258 -156.0502
-v -39.8155 31.8258 -156.0502
-v -39.8155 31.8258 -155.2502
-v -40.6155 65.3300 -155.2502
-v -39.8155 65.3300 -155.2502
-v -39.8155 65.3300 -156.0502
-v -40.6155 65.3300 -156.0502
-v -3.1407 31.8258 -155.2502
-v -3.1407 31.8258 -156.0502
-v -2.3407 31.8258 -156.0502
-v -2.3407 31.8258 -155.2502
-v -3.1407 65.3300 -155.2502
-v -2.3407 65.3300 -155.2502
-v -2.3407 65.3300 -156.0502
-v -3.1407 65.3300 -156.0502
-v 34.3342 31.8258 -155.2502
-v 34.3342 31.8258 -156.0502
-v 35.1342 31.8258 -156.0502
-v 35.1342 31.8258 -155.2502
-v 34.3342 65.3300 -155.2502
-v 35.1342 65.3300 -155.2502
-v 35.1342 65.3300 -156.0502
-v 34.3342 65.3300 -156.0502
-v 71.8090 31.8258 -155.2502
-v 71.8090 31.8258 -156.0502
-v 72.6090 31.8258 -156.0502
-v 72.6090 31.8258 -155.2502
-v 71.8090 65.3300 -155.2502
-v 72.6090 65.3300 -155.2502
-v 72.6090 65.3300 -156.0502
-v 71.8090 65.3300 -156.0502
-v 109.2839 31.8258 -155.2502
-v 109.2839 31.8258 -156.0502
-v 110.0839 31.8258 -156.0502
-v 110.0839 31.8258 -155.2502
-v 109.2839 65.3300 -155.2502
-v 110.0839 65.3300 -155.2502
-v 110.0839 65.3300 -156.0502
-v 109.2839 65.3300 -156.0502
-v 146.7587 31.8258 -155.2502
-v 146.7587 31.8258 -156.0502
-v 147.5587 31.8258 -156.0502
-v 147.5587 31.8258 -155.2502
-v 146.7587 65.3300 -155.2502
-v 147.5587 65.3300 -155.2502
-v 147.5587 65.3300 -156.0502
-v 146.7587 65.3300 -156.0502
-v 184.2336 31.8258 -155.2502
-v 184.2336 31.8258 -156.0502
-v 185.0336 31.8258 -156.0502
-v 185.0336 31.8258 -155.2502
-v 184.2336 65.3300 -155.2502
-v 185.0336 65.3300 -155.2502
-v 185.0336 65.3300 -156.0502
-v 184.2336 65.3300 -156.0502
-v 221.7084 31.8258 -155.2502
-v 221.7084 31.8258 -156.0502
-v 222.5084 31.8258 -156.0502
-v 222.5084 31.8258 -155.2502
-v 221.7084 65.3300 -155.2502
-v 222.5084 65.3300 -155.2502
-v 222.5084 65.3300 -156.0502
-v 221.7084 65.3300 -156.0502
-v -79.8684 31.8258 -136.7342
-v -79.8684 31.8258 -137.5342
-v -79.0684 31.8258 -137.5342
-v -79.0684 31.8258 -136.7342
-v -79.8684 65.3300 -136.7342
-v -79.0684 65.3300 -136.7342
-v -79.0684 65.3300 -137.5342
-v -79.8684 65.3300 -137.5342
-v -79.8684 -13.8670 -136.7342
-v -79.8684 -13.8670 -137.5342
-v -79.0684 -13.8670 -137.5342
-v -79.0684 -13.8670 -136.7342
-v -79.8684 19.6372 -136.7342
-v -79.0684 19.6372 -136.7342
-v -79.0684 19.6372 -137.5342
-v -79.8684 19.6372 -137.5342
-v -79.9662 -26.0556 -119.2779
-v -79.9662 -26.0556 -156.1582
-v 236.4906 -26.0556 -156.1582
-v 236.4906 -26.0556 -119.2779
-v -73.5773 -13.8670 -150.3165
-v -73.5773 -13.8670 -156.1582
-v -79.9662 -13.8670 -156.1582
-v -73.5773 -13.8670 -119.2779
-v -79.9662 -13.8670 -119.2779
-v 236.4906 -21.0556 -119.2779
-v 229.6014 -21.0556 -119.2779
-v -73.5773 -21.0556 -119.2779
-v -79.9662 -21.0556 -119.2779
-v 236.4906 -21.0556 -156.1582
-v -79.9662 -21.0556 -156.1582
-v -73.5773 -21.0556 -156.1582
-v 229.6014 -21.0556 -156.1582
-v 236.4906 -13.8670 -119.2779
-v 236.4906 -13.8670 -156.1582
-v 229.6014 -13.8670 -156.1582
-v 229.6014 -13.8670 -150.3165
-v 229.6014 -13.8670 -119.2779
-v 229.6014 -21.0556 -150.3165
-v -73.5773 -21.0556 -150.3165
-v -78.9663 -9.7711 -155.1582
-v -78.9663 -9.7711 -119.2779
-v -78.9663 -10.7711 -119.2779
-v -78.9663 -10.7711 -155.1582
-v 236.4906 -9.7711 -155.1582
-v 236.4906 -10.7711 -155.1582
-v 236.4906 -9.7711 -156.1582
-v 236.4906 -10.7711 -156.1582
-v -79.9663 -9.7711 -156.1582
-v -79.9663 -10.7711 -156.1582
-v -79.9663 -9.7711 -119.2779
-v -79.9663 -10.7711 -119.2779
-v -78.9663 -6.0006 -155.1582
-v -78.9663 -6.0006 -119.2779
-v -78.9663 -7.0006 -119.2779
-v -78.9663 -7.0006 -155.1582
-v 236.4906 -6.0006 -155.1582
-v 236.4906 -7.0006 -155.1582
-v 236.4906 -6.0006 -156.1582
-v 236.4906 -7.0006 -156.1582
-v -79.9663 -6.0006 -156.1582
-v -79.9663 -7.0006 -156.1582
-v -79.9663 -6.0006 -119.2779
-v -79.9663 -7.0006 -119.2779
-v -78.9663 -2.2300 -155.1582
-v -78.9663 -2.2300 -119.2779
-v -78.9663 -3.2300 -119.2779
-v -78.9663 -3.2300 -155.1582
-v 236.4906 -2.2300 -155.1582
-v 236.4906 -3.2300 -155.1582
-v 236.4906 -2.2300 -156.1582
-v 236.4906 -3.2300 -156.1582
-v -79.9663 -2.2300 -156.1582
-v -79.9663 -3.2300 -156.1582
-v -79.9663 -2.2300 -119.2779
-v -79.9663 -3.2300 -119.2779
-v -78.9663 1.5405 -155.1582
-v -78.9663 1.5405 -119.2779
-v -78.9663 0.5405 -119.2779
-v -78.9663 0.5405 -155.1582
-v 236.4906 1.5405 -155.1582
-v 236.4906 0.5405 -155.1582
-v 236.4906 1.5405 -156.1582
-v 236.4906 0.5405 -156.1582
-v -79.9663 1.5405 -156.1582
-v -79.9663 0.5405 -156.1582
-v -79.9663 1.5405 -119.2779
-v -79.9663 0.5405 -119.2779
-v -78.9663 5.3111 -155.1582
-v -78.9663 5.3111 -119.2779
-v -78.9663 4.3111 -119.2779
-v -78.9663 4.3111 -155.1582
-v 236.4906 5.3111 -155.1582
-v 236.4906 4.3111 -155.1582
-v 236.4906 5.3111 -156.1582
-v 236.4906 4.3111 -156.1582
-v -79.9663 5.3111 -156.1582
-v -79.9663 4.3111 -156.1582
-v -79.9663 5.3111 -119.2779
-v -79.9663 4.3111 -119.2779
-v -78.9663 9.0816 -155.1582
-v -78.9663 9.0816 -119.2779
-v -78.9663 8.0816 -119.2779
-v -78.9663 8.0816 -155.1582
-v 236.4906 9.0816 -155.1582
-v 236.4906 8.0816 -155.1582
-v 236.4906 9.0816 -156.1582
-v 236.4906 8.0816 -156.1582
-v -79.9663 9.0816 -156.1582
-v -79.9663 8.0816 -156.1582
-v -79.9663 9.0816 -119.2779
-v -79.9663 8.0816 -119.2779
-v -78.9663 12.8522 -155.1582
-v -78.9663 12.8522 -119.2779
-v -78.9663 11.8522 -119.2779
-v -78.9663 11.8522 -155.1582
-v 236.4906 12.8522 -155.1582
-v 236.4906 11.8522 -155.1582
-v 236.4906 12.8522 -156.1582
-v 236.4906 11.8522 -156.1582
-v -79.9663 12.8522 -156.1582
-v -79.9663 11.8522 -156.1582
-v -79.9663 12.8522 -119.2779
-v -79.9663 11.8522 -119.2779
-v -78.9663 16.6228 -155.1582
-v -78.9663 16.6228 -119.2779
-v -78.9663 15.6228 -119.2779
-v -78.9663 15.6228 -155.1582
-v 236.4906 16.6228 -155.1582
-v 236.4906 15.6228 -155.1582
-v 236.4906 16.6228 -156.1582
-v 236.4906 15.6228 -156.1582
-v -79.9663 16.6228 -156.1582
-v -79.9663 15.6228 -156.1582
-v -79.9663 16.6228 -119.2779
-v -79.9663 15.6228 -119.2779
-v -78.0904 -13.8670 -155.2502
-v -78.0904 -13.8670 -156.0502
-v -77.2904 -13.8670 -156.0502
-v -77.2904 -13.8670 -155.2502
-v -78.0904 19.6372 -155.2502
-v -77.2904 19.6372 -155.2502
-v -77.2904 19.6372 -156.0502
-v -78.0904 19.6372 -156.0502
-v -40.6155 -13.8670 -155.2502
-v -40.6155 -13.8670 -156.0502
-v -39.8155 -13.8670 -156.0502
-v -39.8155 -13.8670 -155.2502
-v -40.6155 19.6372 -155.2502
-v -39.8155 19.6372 -155.2502
-v -39.8155 19.6372 -156.0502
-v -40.6155 19.6372 -156.0502
-v -3.1407 -13.8670 -155.2502
-v -3.1407 -13.8670 -156.0502
-v -2.3407 -13.8670 -156.0502
-v -2.3407 -13.8670 -155.2502
-v -3.1407 19.6372 -155.2502
-v -2.3407 19.6372 -155.2502
-v -2.3407 19.6372 -156.0502
-v -3.1407 19.6372 -156.0502
-v 34.3342 -13.8670 -155.2502
-v 34.3342 -13.8670 -156.0502
-v 35.1342 -13.8670 -156.0502
-v 35.1342 -13.8670 -155.2502
-v 34.3342 19.6372 -155.2502
-v 35.1342 19.6372 -155.2502
-v 35.1342 19.6372 -156.0502
-v 34.3342 19.6372 -156.0502
-v 71.8090 -13.8670 -155.2502
-v 71.8090 -13.8670 -156.0502
-v 72.6090 -13.8670 -156.0502
-v 72.6090 -13.8670 -155.2502
-v 71.8090 19.6372 -155.2502
-v 72.6090 19.6372 -155.2502
-v 72.6090 19.6372 -156.0502
-v 71.8090 19.6372 -156.0502
-v 109.2839 -13.8670 -155.2502
-v 109.2839 -13.8670 -156.0502
-v 110.0839 -13.8670 -156.0502
-v 110.0839 -13.8670 -155.2502
-v 109.2839 19.6372 -155.2502
-v 110.0839 19.6372 -155.2502
-v 110.0839 19.6372 -156.0502
-v 109.2839 19.6372 -156.0502
-v 146.7587 -13.8670 -155.2502
-v 146.7587 -13.8670 -156.0502
-v 147.5587 -13.8670 -156.0502
-v 147.5587 -13.8670 -155.2502
-v 146.7587 19.6372 -155.2502
-v 147.5587 19.6372 -155.2502
-v 147.5587 19.6372 -156.0502
-v 146.7587 19.6372 -156.0502
-v 184.2336 -13.8670 -155.2502
-v 184.2336 -13.8670 -156.0502
-v 185.0336 -13.8670 -156.0502
-v 185.0336 -13.8670 -155.2502
-v 184.2336 19.6372 -155.2502
-v 185.0336 19.6372 -155.2502
-v 185.0336 19.6372 -156.0502
-v 184.2336 19.6372 -156.0502
-v 221.7084 -13.8670 -155.2502
-v 221.7084 -13.8670 -156.0502
-v 222.5084 -13.8670 -156.0502
-v 222.5084 -13.8670 -155.2502
-v 221.7084 19.6372 -155.2502
-v 222.5084 19.6372 -155.2502
-v 222.5084 19.6372 -156.0502
-v 221.7084 19.6372 -156.0502
-v -79.8684 -59.5598 -136.7342
-v -79.8684 -59.5598 -137.5342
-v -79.0684 -59.5598 -137.5342
-v -79.0684 -59.5598 -136.7342
-v -79.8684 -26.0556 -136.7342
-v -79.0684 -26.0556 -136.7342
-v -79.0684 -26.0556 -137.5342
-v -79.8684 -26.0556 -137.5342
-v -78.9663 -55.4639 -155.1582
-v -78.9663 -55.4639 -119.2779
-v -78.9663 -56.4639 -119.2779
-v -78.9663 -56.4639 -155.1582
-v 236.4906 -55.4639 -155.1582
-v 236.4906 -56.4639 -155.1582
-v 236.4906 -55.4639 -156.1582
-v 236.4906 -56.4639 -156.1582
-v -79.9663 -55.4639 -156.1582
-v -79.9663 -56.4639 -156.1582
-v -79.9663 -55.4639 -119.2779
-v -79.9663 -56.4639 -119.2779
-v -78.9663 -51.6934 -155.1582
-v -78.9663 -51.6934 -119.2779
-v -78.9663 -52.6934 -119.2779
-v -78.9663 -52.6934 -155.1582
-v 236.4906 -51.6934 -155.1582
-v 236.4906 -52.6934 -155.1582
-v 236.4906 -51.6934 -156.1582
-v 236.4906 -52.6934 -156.1582
-v -79.9663 -51.6934 -156.1582
-v -79.9663 -52.6934 -156.1582
-v -79.9663 -51.6934 -119.2779
-v -79.9663 -52.6934 -119.2779
-v -78.9663 -47.9228 -155.1582
-v -78.9663 -47.9228 -119.2779
-v -78.9663 -48.9228 -119.2779
-v -78.9663 -48.9228 -155.1582
-v 236.4906 -47.9228 -155.1582
-v 236.4906 -48.9228 -155.1582
-v 236.4906 -47.9228 -156.1582
-v 236.4906 -48.9228 -156.1582
-v -79.9663 -47.9228 -156.1582
-v -79.9663 -48.9228 -156.1582
-v -79.9663 -47.9228 -119.2779
-v -79.9663 -48.9228 -119.2779
-v -78.9663 -44.1523 -155.1582
-v -78.9663 -44.1523 -119.2779
-v -78.9663 -45.1523 -119.2779
-v -78.9663 -45.1523 -155.1582
-v 236.4906 -44.1523 -155.1582
-v 236.4906 -45.1523 -155.1582
-v 236.4906 -44.1523 -156.1582
-v 236.4906 -45.1523 -156.1582
-v -79.9663 -44.1523 -156.1582
-v -79.9663 -45.1523 -156.1582
-v -79.9663 -44.1523 -119.2779
-v -79.9663 -45.1523 -119.2779
-v -78.9663 -40.3817 -155.1582
-v -78.9663 -40.3817 -119.2779
-v -78.9663 -41.3817 -119.2779
-v -78.9663 -41.3817 -155.1582
-v 236.4906 -40.3817 -155.1582
-v 236.4906 -41.3817 -155.1582
-v 236.4906 -40.3817 -156.1582
-v 236.4906 -41.3817 -156.1582
-v -79.9663 -40.3817 -156.1582
-v -79.9663 -41.3817 -156.1582
-v -79.9663 -40.3817 -119.2779
-v -79.9663 -41.3817 -119.2779
-v -78.9663 -36.6112 -155.1582
-v -78.9663 -36.6112 -119.2779
-v -78.9663 -37.6112 -119.2779
-v -78.9663 -37.6112 -155.1582
-v 236.4906 -36.6112 -155.1582
-v 236.4906 -37.6112 -155.1582
-v 236.4906 -36.6112 -156.1582
-v 236.4906 -37.6112 -156.1582
-v -79.9663 -36.6112 -156.1582
-v -79.9663 -37.6112 -156.1582
-v -79.9663 -36.6112 -119.2779
-v -79.9663 -37.6112 -119.2779
-v -78.9663 -32.8406 -155.1582
-v -78.9663 -32.8406 -119.2779
-v -78.9663 -33.8406 -119.2779
-v -78.9663 -33.8406 -155.1582
-v 236.4906 -32.8406 -155.1582
-v 236.4906 -33.8406 -155.1582
-v 236.4906 -32.8406 -156.1582
-v 236.4906 -33.8406 -156.1582
-v -79.9663 -32.8406 -156.1582
-v -79.9663 -33.8406 -156.1582
-v -79.9663 -32.8406 -119.2779
-v -79.9663 -33.8406 -119.2779
-v -78.9663 -29.0700 -155.1582
-v -78.9663 -29.0700 -119.2779
-v -78.9663 -30.0700 -119.2779
-v -78.9663 -30.0700 -155.1582
-v 236.4906 -29.0700 -155.1582
-v 236.4906 -30.0700 -155.1582
-v 236.4906 -29.0700 -156.1582
-v 236.4906 -30.0700 -156.1582
-v -79.9663 -29.0700 -156.1582
-v -79.9663 -30.0700 -156.1582
-v -79.9663 -29.0700 -119.2779
-v -79.9663 -30.0700 -119.2779
-v -78.0904 -59.5598 -155.2502
-v -78.0904 -59.5598 -156.0502
-v -77.2904 -59.5598 -156.0502
-v -77.2904 -59.5598 -155.2502
-v -78.0904 -26.0556 -155.2502
-v -77.2904 -26.0556 -155.2502
-v -77.2904 -26.0556 -156.0502
-v -78.0904 -26.0556 -156.0502
-v -40.6155 -59.5598 -155.2502
-v -40.6155 -59.5598 -156.0502
-v -39.8155 -59.5598 -156.0502
-v -39.8155 -59.5598 -155.2502
-v -40.6155 -26.0556 -155.2502
-v -39.8155 -26.0556 -155.2502
-v -39.8155 -26.0556 -156.0502
-v -40.6155 -26.0556 -156.0502
-v -3.1407 -59.5598 -155.2502
-v -3.1407 -59.5598 -156.0502
-v -2.3407 -59.5598 -156.0502
-v -2.3407 -59.5598 -155.2502
-v -3.1407 -26.0556 -155.2502
-v -2.3407 -26.0556 -155.2502
-v -2.3407 -26.0556 -156.0502
-v -3.1407 -26.0556 -156.0502
-v 34.3342 -59.5598 -155.2502
-v 34.3342 -59.5598 -156.0502
-v 35.1342 -59.5598 -156.0502
-v 35.1342 -59.5598 -155.2502
-v 34.3342 -26.0556 -155.2502
-v 35.1342 -26.0556 -155.2502
-v 35.1342 -26.0556 -156.0502
-v 34.3342 -26.0556 -156.0502
-v 71.8090 -59.5598 -155.2502
-v 71.8090 -59.5598 -156.0502
-v 72.6090 -59.5598 -156.0502
-v 72.6090 -59.5598 -155.2502
-v 71.8090 -26.0556 -155.2502
-v 72.6090 -26.0556 -155.2502
-v 72.6090 -26.0556 -156.0502
-v 71.8090 -26.0556 -156.0502
-v 109.2839 -59.5598 -155.2502
-v 109.2839 -59.5598 -156.0502
-v 110.0839 -59.5598 -156.0502
-v 110.0839 -59.5598 -155.2502
-v 109.2839 -26.0556 -155.2502
-v 110.0839 -26.0556 -155.2502
-v 110.0839 -26.0556 -156.0502
-v 109.2839 -26.0556 -156.0502
-v 146.7587 -59.5598 -155.2502
-v 146.7587 -59.5598 -156.0502
-v 147.5587 -59.5598 -156.0502
-v 147.5587 -59.5598 -155.2502
-v 146.7587 -26.0556 -155.2502
-v 147.5587 -26.0556 -155.2502
-v 147.5587 -26.0556 -156.0502
-v 146.7587 -26.0556 -156.0502
-v 184.2336 -59.5598 -155.2502
-v 184.2336 -59.5598 -156.0502
-v 185.0336 -59.5598 -156.0502
-v 185.0336 -59.5598 -155.2502
-v 184.2336 -26.0556 -155.2502
-v 185.0336 -26.0556 -155.2502
-v 185.0336 -26.0556 -156.0502
-v 184.2336 -26.0556 -156.0502
-v 221.7084 -59.5598 -155.2502
-v 221.7084 -59.5598 -156.0502
-v 222.5084 -59.5598 -156.0502
-v 222.5084 -59.5598 -155.2502
-v 221.7084 -26.0556 -155.2502
-v 222.5084 -26.0556 -155.2502
-v 222.5084 -26.0556 -156.0502
-v 221.7084 -26.0556 -156.0502
-# 600 vertices
-
-vn 0.0000 -1.0000 -0.0000
-vn -0.0000 1.0000 -0.0000
-vn 0.0000 1.0000 -0.0000
-vn 0.0000 0.0000 1.0000
-vn 1.0000 0.0000 -0.0000
-vn 0.0000 0.0000 -1.0000
-vn -1.0000 0.0000 -0.0000
-vn 0.0000 1.0000 0.0000
-vn 0.0000 -0.0000 1.0000
-# 9 vertex normals
-
-vt 0.0100 0.8156 0.0000
-vt 0.0303 0.8156 0.0000
-vt 0.0303 0.9900 0.0000
-vt 0.0100 0.9900 0.0000
-vt 0.0586 0.4389 0.0000
-vt 0.0586 0.4421 0.0000
-vt 0.0551 0.4421 0.0000
-vt 0.0586 0.4218 0.0000
-vt 0.0551 0.4218 0.0000
-vt 0.1399 0.8156 0.0000
-vt 0.1399 0.9900 0.0000
-vt 0.1371 0.9900 0.0000
-vt 0.1371 0.9862 0.0000
-vt 0.1371 0.8192 0.0000
-vt 0.1371 0.8156 0.0000
-vt 0.1988 0.8456 0.0000
-vt 0.1988 0.8660 0.0000
-vt 0.1961 0.8660 0.0000
-vt 0.1961 0.8456 0.0000
-vt 0.1623 0.8156 0.0000
-vt 0.1623 0.9900 0.0000
-vt 0.1595 0.9900 0.0000
-vt 0.1595 0.9865 0.0000
-vt 0.1595 0.8194 0.0000
-vt 0.1595 0.8156 0.0000
-vt 0.1988 0.8705 0.0000
-vt 0.1988 0.8908 0.0000
-vt 0.1961 0.8908 0.0000
-vt 0.1961 0.8705 0.0000
-vt 0.2295 0.4218 0.0000
-vt 0.2295 0.4421 0.0000
-vt 0.2257 0.4421 0.0000
-vt 0.2257 0.4389 0.0000
-vt 0.2257 0.4218 0.0000
-vt 0.0951 0.9900 0.0000
-vt 0.0780 0.9900 0.0000
-vt 0.0780 0.8229 0.0000
-vt 0.0951 0.8229 0.0000
-vt 0.1332 0.8192 0.0000
-vt 0.1332 0.8156 0.0000
-vt 0.1707 0.8014 0.0000
-vt 0.1707 0.8185 0.0000
-vt 0.1668 0.8185 0.0000
-vt 0.1668 0.8014 0.0000
-vt 0.1792 0.8229 0.0000
-vt 0.1792 0.9900 0.0000
-vt 0.1752 0.9900 0.0000
-vt 0.1752 0.8229 0.0000
-vt 0.0604 0.8014 0.0000
-vt 0.0604 0.8185 0.0000
-vt 0.0564 0.8185 0.0000
-vt 0.0564 0.8014 0.0000
-vt 0.1332 0.9900 0.0000
-vt 0.1332 0.9862 0.0000
-vt 0.1921 0.8660 0.0000
-vt 0.1921 0.8456 0.0000
-vt 0.1556 0.8194 0.0000
-vt 0.1556 0.8156 0.0000
-vt 0.1556 0.9865 0.0000
-vt 0.1556 0.9900 0.0000
-vt 0.1921 0.8908 0.0000
-vt 0.1921 0.8705 0.0000
-vt 0.2427 0.4086 0.0000
-vt 0.2427 0.3883 0.0000
-vt 0.4170 0.3883 0.0000
-vt 0.4170 0.4086 0.0000
-vt 0.4338 0.3383 0.0000
-vt 0.4338 0.3415 0.0000
-vt 0.4302 0.3415 0.0000
-vt 0.4338 0.3212 0.0000
-vt 0.4302 0.3212 0.0000
-vt 0.1287 0.8156 0.0000
-vt 0.1287 0.9900 0.0000
-vt 0.1259 0.9900 0.0000
-vt 0.1259 0.9862 0.0000
-vt 0.1259 0.8192 0.0000
-vt 0.1259 0.8156 0.0000
-vt 0.1988 0.9201 0.0000
-vt 0.1988 0.9404 0.0000
-vt 0.1961 0.9404 0.0000
-vt 0.1961 0.9201 0.0000
-vt 0.1175 0.8156 0.0000
-vt 0.1175 0.9900 0.0000
-vt 0.1147 0.9900 0.0000
-vt 0.1147 0.9865 0.0000
-vt 0.1147 0.8194 0.0000
-vt 0.1147 0.8156 0.0000
-vt 0.1988 0.9449 0.0000
-vt 0.1988 0.9652 0.0000
-vt 0.1961 0.9652 0.0000
-vt 0.1961 0.9449 0.0000
-vt 0.6046 0.3212 0.0000
-vt 0.6046 0.3415 0.0000
-vt 0.6008 0.3415 0.0000
-vt 0.6008 0.3383 0.0000
-vt 0.6008 0.3212 0.0000
-vt 0.0519 0.9900 0.0000
-vt 0.0348 0.9900 0.0000
-vt 0.0348 0.8229 0.0000
-vt 0.0519 0.8229 0.0000
-vt 0.1220 0.8192 0.0000
-vt 0.1220 0.8156 0.0000
-vt 0.0388 0.8014 0.0000
-vt 0.0388 0.8185 0.0000
-vt 0.0348 0.8185 0.0000
-vt 0.0348 0.8014 0.0000
-vt 0.1876 0.8229 0.0000
-vt 0.1876 0.9900 0.0000
-vt 0.1837 0.9900 0.0000
-vt 0.1837 0.8229 0.0000
-vt 0.1876 0.8014 0.0000
-vt 0.1876 0.8185 0.0000
-vt 0.1837 0.8185 0.0000
-vt 0.1837 0.8014 0.0000
-vt 0.1220 0.9900 0.0000
-vt 0.1220 0.9862 0.0000
-vt 0.1921 0.9404 0.0000
-vt 0.1921 0.9201 0.0000
-vt 0.1108 0.8194 0.0000
-vt 0.1108 0.8156 0.0000
-vt 0.1108 0.9865 0.0000
-vt 0.1108 0.9900 0.0000
-vt 0.1921 0.9652 0.0000
-vt 0.1921 0.9449 0.0000
-vt 0.0419 0.3278 0.0000
-vt 0.0221 0.3278 0.0000
-vt 0.0221 0.3272 0.0000
-vt 0.0419 0.3272 0.0000
-vt 0.7922 0.2056 0.0000
-vt 0.6184 0.2056 0.0000
-vt 0.6184 0.2051 0.0000
-vt 0.7922 0.2051 0.0000
-vt 0.0386 0.2051 0.0000
-vt 0.0391 0.2051 0.0000
-vt 0.0391 0.2056 0.0000
-vt 0.0386 0.2056 0.0000
-vt 0.2295 0.2745 0.0000
-vt 0.0551 0.2745 0.0000
-vt 0.0551 0.2739 0.0000
-vt 0.2295 0.2739 0.0000
-vt 0.1573 0.4303 0.0000
-vt 0.1370 0.4303 0.0000
-vt 0.1370 0.4297 0.0000
-vt 0.1573 0.4297 0.0000
-vt 0.5783 0.3297 0.0000
-vt 0.5783 0.3291 0.0000
-vt 0.5789 0.3291 0.0000
-vt 0.5789 0.3297 0.0000
-vt 0.6046 0.6565 0.0000
-vt 0.6046 0.6571 0.0000
-vt 0.4308 0.6571 0.0000
-vt 0.4302 0.6565 0.0000
-vt 0.4308 0.6768 0.0000
-vt 0.4302 0.6768 0.0000
-vt 0.2427 0.6768 0.0000
-vt 0.2427 0.6565 0.0000
-vt 0.2432 0.6565 0.0000
-vt 0.2432 0.6763 0.0000
-vt 0.4170 0.6763 0.0000
-vt 0.4170 0.6768 0.0000
-vt 0.0419 0.6768 0.0000
-vt 0.0221 0.6768 0.0000
-vt 0.0221 0.6763 0.0000
-vt 0.0419 0.6763 0.0000
-vt 0.6052 0.1781 0.0000
-vt 0.4313 0.1781 0.0000
-vt 0.4313 0.1776 0.0000
-vt 0.6052 0.1776 0.0000
-vt 0.5833 0.3297 0.0000
-vt 0.5833 0.3291 0.0000
-vt 0.5838 0.3291 0.0000
-vt 0.5838 0.3297 0.0000
-vt 0.4170 0.3415 0.0000
-vt 0.2427 0.3415 0.0000
-vt 0.2427 0.3410 0.0000
-vt 0.4170 0.3410 0.0000
-vt 0.7201 0.2961 0.0000
-vt 0.6998 0.2961 0.0000
-vt 0.6998 0.2956 0.0000
-vt 0.7201 0.2956 0.0000
-vt 0.4738 0.3297 0.0000
-vt 0.4738 0.3291 0.0000
-vt 0.4744 0.3291 0.0000
-vt 0.4744 0.3297 0.0000
-vt 0.2295 0.6901 0.0000
-vt 0.2295 0.6906 0.0000
-vt 0.0556 0.6906 0.0000
-vt 0.0551 0.6901 0.0000
-vt 0.0556 0.7104 0.0000
-vt 0.0551 0.7104 0.0000
-vt 0.6178 0.5427 0.0000
-vt 0.6178 0.5224 0.0000
-vt 0.6184 0.5224 0.0000
-vt 0.6184 0.5422 0.0000
-vt 0.7922 0.5422 0.0000
-vt 0.7922 0.5427 0.0000
-vt 0.0419 0.6098 0.0000
-vt 0.0221 0.6098 0.0000
-vt 0.0221 0.6092 0.0000
-vt 0.0419 0.6092 0.0000
-vt 0.6052 0.2194 0.0000
-vt 0.4313 0.2194 0.0000
-vt 0.4313 0.2189 0.0000
-vt 0.6052 0.2189 0.0000
-vt 0.5882 0.3297 0.0000
-vt 0.5882 0.3291 0.0000
-vt 0.5888 0.3291 0.0000
-vt 0.5888 0.3297 0.0000
-vt 0.2295 0.3751 0.0000
-vt 0.0551 0.3751 0.0000
-vt 0.0551 0.3745 0.0000
-vt 0.2295 0.3745 0.0000
-vt 0.4595 0.3297 0.0000
-vt 0.4392 0.3297 0.0000
-vt 0.4392 0.3291 0.0000
-vt 0.4595 0.3291 0.0000
-vt 0.6515 0.2961 0.0000
-vt 0.6515 0.2956 0.0000
-vt 0.6520 0.2956 0.0000
-vt 0.6520 0.2961 0.0000
-vt 0.6046 0.5559 0.0000
-vt 0.6046 0.5565 0.0000
-vt 0.4308 0.5565 0.0000
-vt 0.4302 0.5559 0.0000
-vt 0.4308 0.5762 0.0000
-vt 0.4302 0.5762 0.0000
-vt 0.2427 0.5762 0.0000
-vt 0.2427 0.5559 0.0000
-vt 0.2432 0.5559 0.0000
-vt 0.2432 0.5757 0.0000
-vt 0.4170 0.5757 0.0000
-vt 0.4170 0.5762 0.0000
-vt 0.0419 0.5092 0.0000
-vt 0.0221 0.5092 0.0000
-vt 0.0221 0.5086 0.0000
-vt 0.0419 0.5086 0.0000
-vt 0.7922 0.1644 0.0000
-vt 0.6184 0.1644 0.0000
-vt 0.6184 0.1638 0.0000
-vt 0.7922 0.1638 0.0000
-vt 0.7659 0.2961 0.0000
-vt 0.7659 0.2956 0.0000
-vt 0.7665 0.2956 0.0000
-vt 0.7665 0.2961 0.0000
-vt 0.7922 0.2469 0.0000
-vt 0.6178 0.2469 0.0000
-vt 0.6178 0.2464 0.0000
-vt 0.7922 0.2464 0.0000
-vt 0.5325 0.3297 0.0000
-vt 0.5122 0.3297 0.0000
-vt 0.5122 0.3291 0.0000
-vt 0.5325 0.3291 0.0000
-vt 0.6564 0.2961 0.0000
-vt 0.6564 0.2956 0.0000
-vt 0.6570 0.2956 0.0000
-vt 0.6570 0.2961 0.0000
-vt 0.2295 0.5895 0.0000
-vt 0.2295 0.5900 0.0000
-vt 0.0556 0.5900 0.0000
-vt 0.0551 0.5895 0.0000
-vt 0.0556 0.6098 0.0000
-vt 0.0551 0.6098 0.0000
-vt 0.6178 0.4421 0.0000
-vt 0.6178 0.4218 0.0000
-vt 0.6184 0.4218 0.0000
-vt 0.6184 0.4416 0.0000
-vt 0.7922 0.4416 0.0000
-vt 0.7922 0.4421 0.0000
-vt 0.0419 0.4756 0.0000
-vt 0.0221 0.4756 0.0000
-vt 0.0221 0.4751 0.0000
-vt 0.0419 0.4751 0.0000
-vt 0.7922 0.2194 0.0000
-vt 0.6184 0.2194 0.0000
-vt 0.6184 0.2189 0.0000
-vt 0.7922 0.2189 0.0000
-vt 0.6041 0.2799 0.0000
-vt 0.6046 0.2799 0.0000
-vt 0.6046 0.2805 0.0000
-vt 0.6041 0.2805 0.0000
-vt 0.7922 0.2332 0.0000
-vt 0.6178 0.2332 0.0000
-vt 0.6178 0.2326 0.0000
-vt 0.7922 0.2326 0.0000
-vt 0.4595 0.3217 0.0000
-vt 0.4392 0.3217 0.0000
-vt 0.4392 0.3212 0.0000
-vt 0.4595 0.3212 0.0000
-vt 0.0435 0.1913 0.0000
-vt 0.0441 0.1913 0.0000
-vt 0.0441 0.1919 0.0000
-vt 0.0435 0.1919 0.0000
-vt 0.6046 0.4553 0.0000
-vt 0.6046 0.4559 0.0000
-vt 0.4308 0.4559 0.0000
-vt 0.4302 0.4553 0.0000
-vt 0.4308 0.4756 0.0000
-vt 0.4302 0.4756 0.0000
-vt 0.2427 0.4756 0.0000
-vt 0.2427 0.4553 0.0000
-vt 0.2432 0.4553 0.0000
-vt 0.2432 0.4751 0.0000
-vt 0.4170 0.4751 0.0000
-vt 0.4170 0.4756 0.0000
-vt 0.0419 0.3415 0.0000
-vt 0.0221 0.3415 0.0000
-vt 0.0221 0.3410 0.0000
-vt 0.0419 0.3410 0.0000
-vt 0.4181 0.2056 0.0000
-vt 0.2443 0.2056 0.0000
-vt 0.2443 0.2051 0.0000
-vt 0.4181 0.2051 0.0000
-vt 0.2240 0.3805 0.0000
-vt 0.2245 0.3805 0.0000
-vt 0.2245 0.3811 0.0000
-vt 0.2240 0.3811 0.0000
-vt 0.4170 0.3080 0.0000
-vt 0.2427 0.3080 0.0000
-vt 0.2427 0.3074 0.0000
-vt 0.4170 0.3074 0.0000
-vt 0.4842 0.3217 0.0000
-vt 0.4639 0.3217 0.0000
-vt 0.4639 0.3212 0.0000
-vt 0.4842 0.3212 0.0000
-vt 0.2240 0.3134 0.0000
-vt 0.2245 0.3134 0.0000
-vt 0.2245 0.3140 0.0000
-vt 0.2240 0.3140 0.0000
-vt 0.2295 0.4889 0.0000
-vt 0.2295 0.4894 0.0000
-vt 0.0556 0.4894 0.0000
-vt 0.0551 0.4889 0.0000
-vt 0.0556 0.5092 0.0000
-vt 0.0551 0.5092 0.0000
-vt 0.6178 0.3415 0.0000
-vt 0.6178 0.3212 0.0000
-vt 0.6184 0.3212 0.0000
-vt 0.6184 0.3410 0.0000
-vt 0.7922 0.3410 0.0000
-vt 0.7922 0.3415 0.0000
-vt 0.0424 0.2607 0.0000
-vt 0.0227 0.2607 0.0000
-vt 0.0227 0.2601 0.0000
-vt 0.0424 0.2601 0.0000
-vt 0.4181 0.1781 0.0000
-vt 0.2443 0.1781 0.0000
-vt 0.2443 0.1776 0.0000
-vt 0.4181 0.1776 0.0000
-vt 0.1784 0.1363 0.0000
-vt 0.1789 0.1363 0.0000
-vt 0.1789 0.1368 0.0000
-vt 0.1784 0.1368 0.0000
-vt 0.2295 0.4086 0.0000
-vt 0.0551 0.4086 0.0000
-vt 0.0551 0.4080 0.0000
-vt 0.2295 0.4080 0.0000
-vt 0.5078 0.3297 0.0000
-vt 0.4875 0.3297 0.0000
-vt 0.4875 0.3291 0.0000
-vt 0.5078 0.3291 0.0000
-vt 0.3948 0.0279 0.0000
-vt 0.3954 0.0279 0.0000
-vt 0.3954 0.0285 0.0000
-vt 0.3948 0.0285 0.0000
-vt 0.2295 0.4553 0.0000
-vt 0.2295 0.4559 0.0000
-vt 0.0556 0.4559 0.0000
-vt 0.0551 0.4553 0.0000
-vt 0.0556 0.4756 0.0000
-vt 0.0551 0.4756 0.0000
-vt 0.4302 0.4421 0.0000
-vt 0.4302 0.4218 0.0000
-vt 0.4308 0.4218 0.0000
-vt 0.4308 0.4416 0.0000
-vt 0.6046 0.4416 0.0000
-vt 0.6046 0.4421 0.0000
-vt 0.0441 0.2194 0.0000
-vt 0.0243 0.2194 0.0000
-vt 0.0243 0.2189 0.0000
-vt 0.0441 0.2189 0.0000
-vt 0.4181 0.2194 0.0000
-vt 0.2443 0.2194 0.0000
-vt 0.2443 0.2189 0.0000
-vt 0.4181 0.2189 0.0000
-vt 0.2131 0.4303 0.0000
-vt 0.2131 0.4297 0.0000
-vt 0.2136 0.4297 0.0000
-vt 0.2136 0.4303 0.0000
-vt 0.6046 0.2942 0.0000
-vt 0.4302 0.2942 0.0000
-vt 0.4302 0.2937 0.0000
-vt 0.6046 0.2937 0.0000
-vt 0.6471 0.2882 0.0000
-vt 0.6268 0.2882 0.0000
-vt 0.6268 0.2877 0.0000
-vt 0.6471 0.2877 0.0000
-vt 0.2032 0.4303 0.0000
-vt 0.2032 0.4297 0.0000
-vt 0.2037 0.4297 0.0000
-vt 0.2037 0.4303 0.0000
-vt 0.7922 0.3883 0.0000
-vt 0.7922 0.3888 0.0000
-vt 0.6184 0.3888 0.0000
-vt 0.6178 0.3883 0.0000
-vt 0.6184 0.4086 0.0000
-vt 0.6178 0.4086 0.0000
-vt 0.2427 0.5092 0.0000
-vt 0.2427 0.4889 0.0000
-vt 0.2432 0.4889 0.0000
-vt 0.2432 0.5086 0.0000
-vt 0.4170 0.5086 0.0000
-vt 0.4170 0.5092 0.0000
-vt 0.2195 0.3806 0.0000
-vt 0.2195 0.3811 0.0000
-vt 0.2191 0.3811 0.0000
-vt 0.2191 0.3806 0.0000
-vt 0.2822 0.0827 0.0000
-vt 0.2817 0.0827 0.0000
-vt 0.2817 0.0822 0.0000
-vt 0.2822 0.0822 0.0000
-vt 0.2511 0.1364 0.0000
-vt 0.2511 0.1368 0.0000
-vt 0.2326 0.1368 0.0000
-vt 0.2326 0.1364 0.0000
-vt 0.7561 0.1364 0.0000
-vt 0.7561 0.1368 0.0000
-vt 0.7377 0.1368 0.0000
-vt 0.7377 0.1364 0.0000
-vt 0.5397 0.0822 0.0000
-vt 0.5397 0.0827 0.0000
-vt 0.5212 0.0827 0.0000
-vt 0.5212 0.0822 0.0000
-vt 0.5757 0.1003 0.0000
-vt 0.5757 0.1007 0.0000
-vt 0.5573 0.1007 0.0000
-vt 0.5573 0.1003 0.0000
-vt 0.2871 0.0773 0.0000
-vt 0.2871 0.0777 0.0000
-vt 0.2867 0.0777 0.0000
-vt 0.2867 0.0773 0.0000
-vt 0.2262 0.1781 0.0000
-vt 0.2257 0.1781 0.0000
-vt 0.2257 0.1777 0.0000
-vt 0.2262 0.1777 0.0000
-vt 0.4314 0.0100 0.0000
-vt 0.4314 0.0104 0.0000
-vt 0.4130 0.0104 0.0000
-vt 0.4130 0.0100 0.0000
-vt 0.7561 0.1003 0.0000
-vt 0.7561 0.1007 0.0000
-vt 0.7377 0.1007 0.0000
-vt 0.7377 0.1003 0.0000
-vt 0.4314 0.1364 0.0000
-vt 0.4314 0.1368 0.0000
-vt 0.4130 0.1368 0.0000
-vt 0.4130 0.1364 0.0000
-vt 0.7200 0.0281 0.0000
-vt 0.7200 0.0285 0.0000
-vt 0.7016 0.0285 0.0000
-vt 0.7016 0.0281 0.0000
-vt 0.1617 0.4297 0.0000
-vt 0.1622 0.4297 0.0000
-vt 0.1622 0.4301 0.0000
-vt 0.1617 0.4301 0.0000
-vt 0.5422 0.3291 0.0000
-vt 0.5422 0.3296 0.0000
-vt 0.5417 0.3296 0.0000
-vt 0.5417 0.3291 0.0000
-vt 0.2871 0.1003 0.0000
-vt 0.2871 0.1007 0.0000
-vt 0.2687 0.1007 0.0000
-vt 0.2687 0.1003 0.0000
-vt 0.6479 0.1364 0.0000
-vt 0.6479 0.1368 0.0000
-vt 0.6294 0.1368 0.0000
-vt 0.6294 0.1364 0.0000
-vt 0.6118 0.0281 0.0000
-vt 0.6118 0.0285 0.0000
-vt 0.5934 0.0285 0.0000
-vt 0.5934 0.0281 0.0000
-vt 0.6118 0.1003 0.0000
-vt 0.6118 0.1007 0.0000
-vt 0.5934 0.1007 0.0000
-vt 0.5934 0.1003 0.0000
-vt 0.0441 0.1865 0.0000
-vt 0.0441 0.1869 0.0000
-vt 0.0436 0.1869 0.0000
-vt 0.0436 0.1865 0.0000
-vt 0.1789 0.1319 0.0000
-vt 0.1785 0.1319 0.0000
-vt 0.1785 0.1314 0.0000
-vt 0.1789 0.1314 0.0000
-vt 0.3954 0.0461 0.0000
-vt 0.3954 0.0466 0.0000
-vt 0.3769 0.0466 0.0000
-vt 0.3769 0.0461 0.0000
-vt 0.7561 0.0281 0.0000
-vt 0.7561 0.0285 0.0000
-vt 0.7377 0.0285 0.0000
-vt 0.7377 0.0281 0.0000
-vt 0.5397 0.0642 0.0000
-vt 0.5397 0.0646 0.0000
-vt 0.5212 0.0646 0.0000
-vt 0.5212 0.0642 0.0000
-vt 0.6840 0.0642 0.0000
-vt 0.6840 0.0646 0.0000
-vt 0.6655 0.0646 0.0000
-vt 0.6655 0.0642 0.0000
-vt 0.4071 0.3136 0.0000
-vt 0.4071 0.3140 0.0000
-vt 0.4067 0.3140 0.0000
-vt 0.4067 0.3136 0.0000
-vt 0.0391 0.2007 0.0000
-vt 0.0387 0.2007 0.0000
-vt 0.0387 0.2002 0.0000
-vt 0.0391 0.2002 0.0000
-vt 0.3232 0.1003 0.0000
-vt 0.3232 0.1007 0.0000
-vt 0.3047 0.1007 0.0000
-vt 0.3047 0.1003 0.0000
-vt 0.5397 0.1364 0.0000
-vt 0.5397 0.1368 0.0000
-vt 0.5212 0.1368 0.0000
-vt 0.5212 0.1364 0.0000
-vt 0.4675 0.1003 0.0000
-vt 0.4675 0.1007 0.0000
-vt 0.4490 0.1007 0.0000
-vt 0.4490 0.1003 0.0000
-vt 0.5757 0.1364 0.0000
-vt 0.5757 0.1368 0.0000
-vt 0.5573 0.1368 0.0000
-vt 0.5573 0.1364 0.0000
-vt 0.0342 0.2052 0.0000
-vt 0.0342 0.2056 0.0000
-vt 0.0337 0.2056 0.0000
-vt 0.0337 0.2052 0.0000
-vt 0.5954 0.1506 0.0000
-vt 0.5949 0.1506 0.0000
-vt 0.5949 0.1502 0.0000
-vt 0.5954 0.1502 0.0000
-vt 0.4314 0.0461 0.0000
-vt 0.4314 0.0466 0.0000
-vt 0.4130 0.0466 0.0000
-vt 0.4130 0.0461 0.0000
-vt 0.6118 0.0822 0.0000
-vt 0.6118 0.0827 0.0000
-vt 0.5934 0.0827 0.0000
-vt 0.5934 0.0822 0.0000
-vt 0.5036 0.0642 0.0000
-vt 0.5036 0.0646 0.0000
-vt 0.4851 0.0646 0.0000
-vt 0.4851 0.0642 0.0000
-vt 0.6840 0.0822 0.0000
-vt 0.6840 0.0827 0.0000
-vt 0.6655 0.0827 0.0000
-vt 0.6655 0.0822 0.0000
-vt 0.4132 0.1591 0.0000
-vt 0.4132 0.1595 0.0000
-vt 0.4127 0.1595 0.0000
-vt 0.4127 0.1591 0.0000
-vt 0.3954 0.0187 0.0000
-vt 0.3949 0.0187 0.0000
-vt 0.3949 0.0183 0.0000
-vt 0.3954 0.0183 0.0000
-vt 0.4675 0.0281 0.0000
-vt 0.4675 0.0285 0.0000
-vt 0.4490 0.0285 0.0000
-vt 0.4490 0.0281 0.0000
-vt 0.7200 0.0642 0.0000
-vt 0.7200 0.0646 0.0000
-vt 0.7016 0.0646 0.0000
-vt 0.7016 0.0642 0.0000
-vt 0.5397 0.0281 0.0000
-vt 0.5397 0.0285 0.0000
-vt 0.5212 0.0285 0.0000
-vt 0.5212 0.0281 0.0000
-vt 0.6118 0.1364 0.0000
-vt 0.6118 0.1368 0.0000
-vt 0.5934 0.1368 0.0000
-vt 0.5934 0.1364 0.0000
-vt 0.3856 0.0281 0.0000
-vt 0.3856 0.0285 0.0000
-vt 0.3851 0.0285 0.0000
-vt 0.3851 0.0281 0.0000
-vt 0.2773 0.0827 0.0000
-vt 0.2769 0.0827 0.0000
-vt 0.2769 0.0822 0.0000
-vt 0.2773 0.0822 0.0000
-vt 0.2871 0.1364 0.0000
-vt 0.2871 0.1368 0.0000
-vt 0.2687 0.1368 0.0000
-vt 0.2687 0.1364 0.0000
-vt 0.7922 0.0642 0.0000
-vt 0.7922 0.0646 0.0000
-vt 0.7737 0.0646 0.0000
-vt 0.7737 0.0642 0.0000
-vt 0.5397 0.0100 0.0000
-vt 0.5397 0.0104 0.0000
-vt 0.5212 0.0104 0.0000
-vt 0.5212 0.0100 0.0000
-vt 0.6840 0.1003 0.0000
-vt 0.6840 0.1007 0.0000
-vt 0.6655 0.1007 0.0000
-vt 0.6655 0.1003 0.0000
-vt 0.3134 0.0642 0.0000
-vt 0.3134 0.0646 0.0000
-vt 0.3130 0.0646 0.0000
-vt 0.3130 0.0642 0.0000
-vt 0.3184 0.0597 0.0000
-vt 0.3179 0.0597 0.0000
-vt 0.3179 0.0592 0.0000
-vt 0.3184 0.0592 0.0000
-vt 0.3232 0.1183 0.0000
-vt 0.3232 0.1188 0.0000
-vt 0.3047 0.1188 0.0000
-vt 0.3047 0.1183 0.0000
-vt 0.7922 0.1183 0.0000
-vt 0.7922 0.1188 0.0000
-vt 0.7737 0.1188 0.0000
-vt 0.7737 0.1183 0.0000
-vt 0.3593 0.0822 0.0000
-vt 0.3593 0.0827 0.0000
-vt 0.3408 0.0827 0.0000
-vt 0.3408 0.0822 0.0000
-vt 0.6840 0.1183 0.0000
-vt 0.6840 0.1188 0.0000
-vt 0.6655 0.1188 0.0000
-vt 0.6655 0.1183 0.0000
-vt 0.3232 0.0544 0.0000
-vt 0.3232 0.0548 0.0000
-vt 0.3228 0.0548 0.0000
-vt 0.3228 0.0544 0.0000
-vt 0.3544 0.0416 0.0000
-vt 0.3540 0.0416 0.0000
-vt 0.3540 0.0412 0.0000
-vt 0.3544 0.0412 0.0000
-vt 0.3954 0.0822 0.0000
-vt 0.3954 0.0827 0.0000
-vt 0.3769 0.0827 0.0000
-vt 0.3769 0.0822 0.0000
-vt 0.3593 0.1003 0.0000
-vt 0.3593 0.1007 0.0000
-vt 0.3408 0.1007 0.0000
-vt 0.3408 0.1003 0.0000
-vt 0.3232 0.0822 0.0000
-vt 0.3232 0.0827 0.0000
-vt 0.3047 0.0827 0.0000
-vt 0.3047 0.0822 0.0000
-vt 0.5036 0.1003 0.0000
-vt 0.5036 0.1007 0.0000
-vt 0.4851 0.1007 0.0000
-vt 0.4851 0.1003 0.0000
-vt 0.0391 0.1866 0.0000
-vt 0.0391 0.1870 0.0000
-vt 0.0387 0.1870 0.0000
-vt 0.0387 0.1866 0.0000
-vt 0.2262 0.1733 0.0000
-vt 0.2257 0.1733 0.0000
-vt 0.2257 0.1728 0.0000
-vt 0.2262 0.1728 0.0000
-vt 0.4675 0.0461 0.0000
-vt 0.4675 0.0466 0.0000
-vt 0.4490 0.0466 0.0000
-vt 0.4490 0.0461 0.0000
-vt 0.4314 0.0642 0.0000
-vt 0.4314 0.0646 0.0000
-vt 0.4130 0.0646 0.0000
-vt 0.4130 0.0642 0.0000
-vt 0.2511 0.1183 0.0000
-vt 0.2511 0.1188 0.0000
-vt 0.2326 0.1188 0.0000
-vt 0.2326 0.1183 0.0000
-vt 0.6479 0.0100 0.0000
-vt 0.6479 0.0104 0.0000
-vt 0.6294 0.0104 0.0000
-vt 0.6294 0.0100 0.0000
-vt 0.2427 0.3751 0.0000
-vt 0.2427 0.3547 0.0000
-vt 0.4170 0.3547 0.0000
-vt 0.4170 0.3751 0.0000
-vt 0.6213 0.3048 0.0000
-vt 0.6213 0.3080 0.0000
-vt 0.6178 0.3080 0.0000
-vt 0.6213 0.2877 0.0000
-vt 0.6178 0.2877 0.0000
-vt 0.1063 0.8156 0.0000
-vt 0.1063 0.9900 0.0000
-vt 0.1035 0.9900 0.0000
-vt 0.1035 0.9862 0.0000
-vt 0.1035 0.8192 0.0000
-vt 0.1035 0.8156 0.0000
-vt 0.1988 0.8953 0.0000
-vt 0.1988 0.9156 0.0000
-vt 0.1961 0.9156 0.0000
-vt 0.1961 0.8953 0.0000
-vt 0.1511 0.8156 0.0000
-vt 0.1511 0.9900 0.0000
-vt 0.1483 0.9900 0.0000
-vt 0.1483 0.9865 0.0000
-vt 0.1483 0.8194 0.0000
-vt 0.1483 0.8156 0.0000
-vt 0.1988 0.9697 0.0000
-vt 0.1988 0.9900 0.0000
-vt 0.1961 0.9900 0.0000
-vt 0.1961 0.9697 0.0000
-vt 0.7922 0.2877 0.0000
-vt 0.7922 0.3080 0.0000
-vt 0.7884 0.3080 0.0000
-vt 0.7884 0.3048 0.0000
-vt 0.7884 0.2877 0.0000
-vt 0.0735 0.9900 0.0000
-vt 0.0564 0.9900 0.0000
-vt 0.0564 0.8229 0.0000
-vt 0.0735 0.8229 0.0000
-vt 0.0996 0.8192 0.0000
-vt 0.0996 0.8156 0.0000
-vt 0.0819 0.8014 0.0000
-vt 0.0819 0.8185 0.0000
-vt 0.0780 0.8185 0.0000
-vt 0.0780 0.8014 0.0000
-vt 0.1707 0.8229 0.0000
-vt 0.1707 0.9900 0.0000
-vt 0.1668 0.9900 0.0000
-vt 0.1668 0.8229 0.0000
-vt 0.1792 0.8014 0.0000
-vt 0.1792 0.8185 0.0000
-vt 0.1752 0.8185 0.0000
-vt 0.1752 0.8014 0.0000
-vt 0.0996 0.9900 0.0000
-vt 0.0996 0.9862 0.0000
-vt 0.1921 0.9156 0.0000
-vt 0.1921 0.8953 0.0000
-vt 0.1444 0.8194 0.0000
-vt 0.1444 0.8156 0.0000
-vt 0.1444 0.9865 0.0000
-vt 0.1444 0.9900 0.0000
-vt 0.1921 0.9900 0.0000
-vt 0.1921 0.9697 0.0000
-vt 0.0419 0.2745 0.0000
-vt 0.0221 0.2745 0.0000
-vt 0.0221 0.2739 0.0000
-vt 0.0419 0.2739 0.0000
-vt 0.2306 0.2332 0.0000
-vt 0.0567 0.2332 0.0000
-vt 0.0567 0.2326 0.0000
-vt 0.2306 0.2326 0.0000
-vt 0.0937 0.4303 0.0000
-vt 0.0937 0.4297 0.0000
-vt 0.0943 0.4297 0.0000
-vt 0.0943 0.4303 0.0000
-vt 0.6046 0.2469 0.0000
-vt 0.4302 0.2469 0.0000
-vt 0.4302 0.2464 0.0000
-vt 0.6046 0.2464 0.0000
-vt 0.1988 0.4303 0.0000
-vt 0.1784 0.4303 0.0000
-vt 0.1784 0.4297 0.0000
-vt 0.1988 0.4297 0.0000
-vt 0.0987 0.4303 0.0000
-vt 0.0987 0.4297 0.0000
-vt 0.0992 0.4297 0.0000
-vt 0.0992 0.4303 0.0000
-vt 0.6046 0.7236 0.0000
-vt 0.6046 0.7241 0.0000
-vt 0.4308 0.7241 0.0000
-vt 0.4302 0.7236 0.0000
-vt 0.4308 0.7439 0.0000
-vt 0.4302 0.7439 0.0000
-vt 0.4302 0.7104 0.0000
-vt 0.4302 0.6901 0.0000
-vt 0.4308 0.6901 0.0000
-vt 0.4308 0.7098 0.0000
-vt 0.6046 0.7098 0.0000
-vt 0.6046 0.7104 0.0000
-vt 0.0419 0.4421 0.0000
-vt 0.0221 0.4421 0.0000
-vt 0.0221 0.4416 0.0000
-vt 0.0419 0.4416 0.0000
-vt 0.2311 0.1919 0.0000
-vt 0.0573 0.1919 0.0000
-vt 0.0573 0.1913 0.0000
-vt 0.2311 0.1913 0.0000
-vt 0.4176 0.1638 0.0000
-vt 0.4181 0.1638 0.0000
-vt 0.4181 0.1644 0.0000
-vt 0.4176 0.1644 0.0000
-vt 0.2295 0.3948 0.0000
-vt 0.0551 0.3948 0.0000
-vt 0.0551 0.3943 0.0000
-vt 0.2295 0.3943 0.0000
-vt 0.1091 0.4223 0.0000
-vt 0.0888 0.4223 0.0000
-vt 0.0888 0.4218 0.0000
-vt 0.1091 0.4218 0.0000
-vt 0.2306 0.1776 0.0000
-vt 0.2311 0.1776 0.0000
-vt 0.2311 0.1781 0.0000
-vt 0.2306 0.1781 0.0000
-vt 0.4170 0.7236 0.0000
-vt 0.4170 0.7241 0.0000
-vt 0.2432 0.7241 0.0000
-vt 0.2427 0.7236 0.0000
-vt 0.2432 0.7439 0.0000
-vt 0.2427 0.7439 0.0000
-vt 0.2427 0.7104 0.0000
-vt 0.2427 0.6901 0.0000
-vt 0.2432 0.6901 0.0000
-vt 0.2432 0.7098 0.0000
-vt 0.4170 0.7098 0.0000
-vt 0.4170 0.7104 0.0000
-vt 0.0419 0.5762 0.0000
-vt 0.0221 0.5762 0.0000
-vt 0.0221 0.5757 0.0000
-vt 0.0419 0.5757 0.0000
-vt 0.2295 0.2607 0.0000
-vt 0.0556 0.2607 0.0000
-vt 0.0556 0.2601 0.0000
-vt 0.2295 0.2601 0.0000
-vt 0.5991 0.2799 0.0000
-vt 0.5997 0.2799 0.0000
-vt 0.5997 0.2805 0.0000
-vt 0.5991 0.2805 0.0000
-vt 0.4170 0.2745 0.0000
-vt 0.2427 0.2745 0.0000
-vt 0.2427 0.2739 0.0000
-vt 0.4170 0.2739 0.0000
-vt 0.1338 0.4223 0.0000
-vt 0.1135 0.4223 0.0000
-vt 0.1135 0.4218 0.0000
-vt 0.1338 0.4218 0.0000
-vt 0.2289 0.3134 0.0000
-vt 0.2295 0.3134 0.0000
-vt 0.2295 0.3140 0.0000
-vt 0.2289 0.3140 0.0000
-vt 0.2295 0.7236 0.0000
-vt 0.2295 0.7241 0.0000
-vt 0.0556 0.7241 0.0000
-vt 0.0551 0.7236 0.0000
-vt 0.0556 0.7439 0.0000
-vt 0.0551 0.7439 0.0000
-vt 0.2427 0.6433 0.0000
-vt 0.2427 0.6230 0.0000
-vt 0.2432 0.6230 0.0000
-vt 0.2432 0.6428 0.0000
-vt 0.4170 0.6428 0.0000
-vt 0.4170 0.6433 0.0000
-vt 0.0419 0.7104 0.0000
-vt 0.0221 0.7104 0.0000
-vt 0.0221 0.7098 0.0000
-vt 0.0419 0.7098 0.0000
-vt 0.2311 0.2056 0.0000
-vt 0.0573 0.2056 0.0000
-vt 0.0573 0.2051 0.0000
-vt 0.2311 0.2051 0.0000
-vt 0.4639 0.3297 0.0000
-vt 0.4639 0.3291 0.0000
-vt 0.4645 0.3291 0.0000
-vt 0.4645 0.3297 0.0000
-vt 0.4170 0.3278 0.0000
-vt 0.2427 0.3278 0.0000
-vt 0.2427 0.3272 0.0000
-vt 0.4170 0.3272 0.0000
-vt 0.0844 0.4223 0.0000
-vt 0.0640 0.4223 0.0000
-vt 0.0640 0.4218 0.0000
-vt 0.0844 0.4218 0.0000
-vt 0.4689 0.3297 0.0000
-vt 0.4689 0.3291 0.0000
-vt 0.4694 0.3291 0.0000
-vt 0.4694 0.3297 0.0000
-vt 0.2295 0.6565 0.0000
-vt 0.2295 0.6571 0.0000
-vt 0.0556 0.6571 0.0000
-vt 0.0551 0.6565 0.0000
-vt 0.0556 0.6768 0.0000
-vt 0.0551 0.6768 0.0000
-vt 0.2427 0.6098 0.0000
-vt 0.2427 0.5895 0.0000
-vt 0.2432 0.5895 0.0000
-vt 0.2432 0.6092 0.0000
-vt 0.4170 0.6092 0.0000
-vt 0.4170 0.6098 0.0000
-vt 0.0419 0.7439 0.0000
-vt 0.0221 0.7439 0.0000
-vt 0.0221 0.7434 0.0000
-vt 0.0419 0.7434 0.0000
-vt 0.6052 0.1644 0.0000
-vt 0.4313 0.1644 0.0000
-vt 0.4313 0.1638 0.0000
-vt 0.6052 0.1638 0.0000
-vt 0.2289 0.3805 0.0000
-vt 0.2295 0.3805 0.0000
-vt 0.2295 0.3811 0.0000
-vt 0.2289 0.3811 0.0000
-vt 0.6046 0.3080 0.0000
-vt 0.4302 0.3080 0.0000
-vt 0.4302 0.3074 0.0000
-vt 0.6046 0.3074 0.0000
-vt 0.5337 0.3217 0.0000
-vt 0.5134 0.3217 0.0000
-vt 0.5134 0.3212 0.0000
-vt 0.5337 0.3212 0.0000
-vt 0.2289 0.2799 0.0000
-vt 0.2295 0.2799 0.0000
-vt 0.2295 0.2805 0.0000
-vt 0.2289 0.2805 0.0000
-vt 0.2295 0.6230 0.0000
-vt 0.2295 0.6235 0.0000
-vt 0.0556 0.6235 0.0000
-vt 0.0551 0.6230 0.0000
-vt 0.0556 0.6433 0.0000
-vt 0.0551 0.6433 0.0000
-vt 0.6178 0.5092 0.0000
-vt 0.6178 0.4889 0.0000
-vt 0.6184 0.4889 0.0000
-vt 0.6184 0.5086 0.0000
-vt 0.7922 0.5086 0.0000
-vt 0.7922 0.5092 0.0000
-vt 0.0419 0.6433 0.0000
-vt 0.0221 0.6433 0.0000
-vt 0.0221 0.6428 0.0000
-vt 0.0419 0.6428 0.0000
-vt 0.6052 0.2056 0.0000
-vt 0.4313 0.2056 0.0000
-vt 0.4313 0.2051 0.0000
-vt 0.6052 0.2051 0.0000
-vt 0.4115 0.2799 0.0000
-vt 0.4121 0.2799 0.0000
-vt 0.4121 0.2805 0.0000
-vt 0.4115 0.2805 0.0000
-vt 0.6046 0.2745 0.0000
-vt 0.4302 0.2745 0.0000
-vt 0.4302 0.2739 0.0000
-vt 0.6046 0.2739 0.0000
-vt 0.0844 0.4303 0.0000
-vt 0.0640 0.4303 0.0000
-vt 0.0640 0.4297 0.0000
-vt 0.0844 0.4297 0.0000
-vt 0.2144 0.1182 0.0000
-vt 0.2150 0.1182 0.0000
-vt 0.2150 0.1188 0.0000
-vt 0.2144 0.1188 0.0000
-vt 0.6046 0.5224 0.0000
-vt 0.6046 0.5229 0.0000
-vt 0.4308 0.5229 0.0000
-vt 0.4302 0.5224 0.0000
-vt 0.4308 0.5427 0.0000
-vt 0.4302 0.5427 0.0000
-vt 0.4302 0.5092 0.0000
-vt 0.4302 0.4889 0.0000
-vt 0.4308 0.4889 0.0000
-vt 0.4308 0.5086 0.0000
-vt 0.6046 0.5086 0.0000
-vt 0.6046 0.5092 0.0000
-vt 0.0419 0.5427 0.0000
-vt 0.0221 0.5427 0.0000
-vt 0.0221 0.5422 0.0000
-vt 0.0419 0.5422 0.0000
-vt 0.4176 0.2332 0.0000
-vt 0.2438 0.2332 0.0000
-vt 0.2438 0.2326 0.0000
-vt 0.4176 0.2326 0.0000
-vt 0.2289 0.3470 0.0000
-vt 0.2295 0.3470 0.0000
-vt 0.2295 0.3475 0.0000
-vt 0.2289 0.3475 0.0000
-vt 0.4170 0.2942 0.0000
-vt 0.2427 0.2942 0.0000
-vt 0.2427 0.2937 0.0000
-vt 0.4170 0.2937 0.0000
-vt 0.6471 0.2961 0.0000
-vt 0.6268 0.2961 0.0000
-vt 0.6268 0.2956 0.0000
-vt 0.6471 0.2956 0.0000
-vt 0.2081 0.4303 0.0000
-vt 0.2081 0.4297 0.0000
-vt 0.2087 0.4297 0.0000
-vt 0.2087 0.4303 0.0000
-vt 0.4170 0.5224 0.0000
-vt 0.4170 0.5229 0.0000
-vt 0.2432 0.5229 0.0000
-vt 0.2427 0.5224 0.0000
-vt 0.2432 0.5427 0.0000
-vt 0.2427 0.5427 0.0000
-vt 0.0551 0.5427 0.0000
-vt 0.0551 0.5224 0.0000
-vt 0.0556 0.5224 0.0000
-vt 0.0556 0.5422 0.0000
-vt 0.2295 0.5422 0.0000
-vt 0.2295 0.5427 0.0000
-vt 0.0430 0.2469 0.0000
-vt 0.0232 0.2469 0.0000
-vt 0.0232 0.2464 0.0000
-vt 0.0430 0.2464 0.0000
-vt 0.7922 0.1919 0.0000
-vt 0.6184 0.1919 0.0000
-vt 0.6184 0.1913 0.0000
-vt 0.7922 0.1913 0.0000
-vt 0.6614 0.2961 0.0000
-vt 0.6614 0.2956 0.0000
-vt 0.6619 0.2956 0.0000
-vt 0.6619 0.2961 0.0000
-vt 0.2295 0.2942 0.0000
-vt 0.0551 0.2942 0.0000
-vt 0.0551 0.2937 0.0000
-vt 0.2295 0.2937 0.0000
-vt 0.5739 0.3297 0.0000
-vt 0.5536 0.3297 0.0000
-vt 0.5536 0.3291 0.0000
-vt 0.5739 0.3291 0.0000
-vt 0.7709 0.2961 0.0000
-vt 0.7709 0.2956 0.0000
-vt 0.7714 0.2956 0.0000
-vt 0.7714 0.2961 0.0000
-vt 0.7922 0.3547 0.0000
-vt 0.7922 0.3553 0.0000
-vt 0.6184 0.3553 0.0000
-vt 0.6178 0.3547 0.0000
-vt 0.6184 0.3751 0.0000
-vt 0.6178 0.3751 0.0000
-vt 0.4302 0.4086 0.0000
-vt 0.4302 0.3883 0.0000
-vt 0.4308 0.3883 0.0000
-vt 0.4308 0.4080 0.0000
-vt 0.6046 0.4080 0.0000
-vt 0.6046 0.4086 0.0000
-vt 0.2195 0.3471 0.0000
-vt 0.2195 0.3475 0.0000
-vt 0.2191 0.3475 0.0000
-vt 0.2191 0.3471 0.0000
-vt 0.3543 0.0466 0.0000
-vt 0.3539 0.0466 0.0000
-vt 0.3539 0.0461 0.0000
-vt 0.3543 0.0461 0.0000
-vt 0.4314 0.0281 0.0000
-vt 0.4314 0.0285 0.0000
-vt 0.4130 0.0285 0.0000
-vt 0.4130 0.0281 0.0000
-vt 0.5397 0.1183 0.0000
-vt 0.5397 0.1188 0.0000
-vt 0.5212 0.1188 0.0000
-vt 0.5212 0.1183 0.0000
-vt 0.5036 0.0281 0.0000
-vt 0.5036 0.0285 0.0000
-vt 0.4851 0.0285 0.0000
-vt 0.4851 0.0281 0.0000
-vt 0.7200 0.1364 0.0000
-vt 0.7200 0.1368 0.0000
-vt 0.7016 0.1368 0.0000
-vt 0.7016 0.1364 0.0000
-vt 0.3593 0.0412 0.0000
-vt 0.3593 0.0416 0.0000
-vt 0.3588 0.0416 0.0000
-vt 0.3588 0.0412 0.0000
-vt 0.7249 0.2956 0.0000
-vt 0.7249 0.2960 0.0000
-vt 0.7245 0.2960 0.0000
-vt 0.7245 0.2956 0.0000
-vt 0.2150 0.1364 0.0000
-vt 0.2150 0.1368 0.0000
-vt 0.1965 0.1368 0.0000
-vt 0.1965 0.1364 0.0000
-vt 0.6118 0.1183 0.0000
-vt 0.6118 0.1188 0.0000
-vt 0.5934 0.1188 0.0000
-vt 0.5934 0.1183 0.0000
-vt 0.3593 0.1183 0.0000
-vt 0.3593 0.1188 0.0000
-vt 0.3408 0.1188 0.0000
-vt 0.3408 0.1183 0.0000
-vt 0.0419 0.4950 0.0000
-vt 0.0419 0.4954 0.0000
-vt 0.0234 0.4954 0.0000
-vt 0.0234 0.4950 0.0000
-vt 0.7293 0.2956 0.0000
-vt 0.7298 0.2956 0.0000
-vt 0.7298 0.2960 0.0000
-vt 0.7293 0.2960 0.0000
-vt 0.0343 0.1919 0.0000
-vt 0.0338 0.1919 0.0000
-vt 0.0338 0.1914 0.0000
-vt 0.0343 0.1914 0.0000
-vt 0.4675 0.0100 0.0000
-vt 0.4675 0.0104 0.0000
-vt 0.4490 0.0104 0.0000
-vt 0.4490 0.0100 0.0000
-vt 0.7200 0.1003 0.0000
-vt 0.7200 0.1007 0.0000
-vt 0.7016 0.1007 0.0000
-vt 0.7016 0.1003 0.0000
-vt 0.4675 0.0642 0.0000
-vt 0.4675 0.0646 0.0000
-vt 0.4490 0.0646 0.0000
-vt 0.4490 0.0642 0.0000
-vt 0.0419 0.5956 0.0000
-vt 0.0419 0.5960 0.0000
-vt 0.0234 0.5960 0.0000
-vt 0.0234 0.5956 0.0000
-vt 0.3905 0.0231 0.0000
-vt 0.3905 0.0235 0.0000
-vt 0.3901 0.0235 0.0000
-vt 0.3901 0.0231 0.0000
-vt 0.2871 0.0729 0.0000
-vt 0.2867 0.0729 0.0000
-vt 0.2867 0.0724 0.0000
-vt 0.2871 0.0724 0.0000
-vt 0.5036 0.0100 0.0000
-vt 0.5036 0.0104 0.0000
-vt 0.4851 0.0104 0.0000
-vt 0.4851 0.0100 0.0000
-vt 0.7922 0.0822 0.0000
-vt 0.7922 0.0827 0.0000
-vt 0.7737 0.0827 0.0000
-vt 0.7737 0.0822 0.0000
-vt 0.3593 0.1364 0.0000
-vt 0.3593 0.1368 0.0000
-vt 0.3408 0.1368 0.0000
-vt 0.3408 0.1364 0.0000
-vt 0.0419 0.7632 0.0000
-vt 0.0419 0.7637 0.0000
-vt 0.0234 0.7637 0.0000
-vt 0.0234 0.7632 0.0000
-vt 0.2511 0.0905 0.0000
-vt 0.2511 0.0909 0.0000
-vt 0.2506 0.0909 0.0000
-vt 0.2506 0.0905 0.0000
-vt 0.3495 0.0466 0.0000
-vt 0.3490 0.0466 0.0000
-vt 0.3490 0.0461 0.0000
-vt 0.3495 0.0461 0.0000
-vt 0.3954 0.1003 0.0000
-vt 0.3954 0.1007 0.0000
-vt 0.3769 0.1007 0.0000
-vt 0.3769 0.1003 0.0000
-vt 0.0419 0.4614 0.0000
-vt 0.0419 0.4619 0.0000
-vt 0.0234 0.4619 0.0000
-vt 0.0234 0.4614 0.0000
-vt 0.4314 0.0822 0.0000
-vt 0.4314 0.0827 0.0000
-vt 0.4130 0.0827 0.0000
-vt 0.4130 0.0822 0.0000
-vt 0.0419 0.5620 0.0000
-vt 0.0419 0.5625 0.0000
-vt 0.0234 0.5625 0.0000
-vt 0.0234 0.5620 0.0000
-vt 0.3593 0.0363 0.0000
-vt 0.3593 0.0368 0.0000
-vt 0.3588 0.0368 0.0000
-vt 0.3588 0.0363 0.0000
-vt 0.2213 0.1781 0.0000
-vt 0.2209 0.1781 0.0000
-vt 0.2209 0.1777 0.0000
-vt 0.2213 0.1777 0.0000
-vt 0.5036 0.0461 0.0000
-vt 0.5036 0.0466 0.0000
-vt 0.4851 0.0466 0.0000
-vt 0.4851 0.0461 0.0000
-vt 0.0419 0.6962 0.0000
-vt 0.0419 0.6966 0.0000
-vt 0.0234 0.6966 0.0000
-vt 0.0234 0.6962 0.0000
-vt 0.5757 0.0461 0.0000
-vt 0.5757 0.0466 0.0000
-vt 0.5573 0.0466 0.0000
-vt 0.5573 0.0461 0.0000
-vt 0.7561 0.1183 0.0000
-vt 0.7561 0.1188 0.0000
-vt 0.7377 0.1188 0.0000
-vt 0.7377 0.1183 0.0000
-vt 0.4083 0.1639 0.0000
-vt 0.4083 0.1644 0.0000
-vt 0.4079 0.1644 0.0000
-vt 0.4079 0.1639 0.0000
-vt 0.2100 0.1188 0.0000
-vt 0.2096 0.1188 0.0000
-vt 0.2096 0.1183 0.0000
-vt 0.2100 0.1183 0.0000
-vt 0.3954 0.1183 0.0000
-vt 0.3954 0.1188 0.0000
-vt 0.3769 0.1188 0.0000
-vt 0.3769 0.1183 0.0000
-vt 0.7922 0.1364 0.0000
-vt 0.7922 0.1368 0.0000
-vt 0.7737 0.1368 0.0000
-vt 0.7737 0.1364 0.0000
-vt 0.5036 0.1183 0.0000
-vt 0.5036 0.1188 0.0000
-vt 0.4851 0.1188 0.0000
-vt 0.4851 0.1183 0.0000
-vt 0.7561 0.0822 0.0000
-vt 0.7561 0.0827 0.0000
-vt 0.7377 0.0827 0.0000
-vt 0.7377 0.0822 0.0000
-vt 0.2150 0.1134 0.0000
-vt 0.2150 0.1138 0.0000
-vt 0.2145 0.1138 0.0000
-vt 0.2145 0.1134 0.0000
-vt 0.6002 0.1506 0.0000
-vt 0.5998 0.1506 0.0000
-vt 0.5998 0.1502 0.0000
-vt 0.6002 0.1502 0.0000
-vt 0.4675 0.0822 0.0000
-vt 0.4675 0.0827 0.0000
-vt 0.4490 0.0827 0.0000
-vt 0.4490 0.0822 0.0000
-vt 0.0419 0.6626 0.0000
-vt 0.0419 0.6631 0.0000
-vt 0.0234 0.6631 0.0000
-vt 0.0234 0.6626 0.0000
-vt 0.6479 0.0461 0.0000
-vt 0.6479 0.0466 0.0000
-vt 0.6294 0.0466 0.0000
-vt 0.6294 0.0461 0.0000
-vt 0.7561 0.0642 0.0000
-vt 0.7561 0.0646 0.0000
-vt 0.7377 0.0646 0.0000
-vt 0.7377 0.0642 0.0000
-vt 0.4181 0.1590 0.0000
-vt 0.4181 0.1594 0.0000
-vt 0.4177 0.1594 0.0000
-vt 0.4177 0.1590 0.0000
-vt 0.2511 0.0958 0.0000
-vt 0.2506 0.0958 0.0000
-vt 0.2506 0.0953 0.0000
-vt 0.2511 0.0953 0.0000
-vt 0.5757 0.0281 0.0000
-vt 0.5757 0.0285 0.0000
-vt 0.5573 0.0285 0.0000
-vt 0.5573 0.0281 0.0000
-vt 0.0419 0.6291 0.0000
-vt 0.0419 0.6295 0.0000
-vt 0.0234 0.6295 0.0000
-vt 0.0234 0.6291 0.0000
-vt 0.6840 0.0100 0.0000
-vt 0.6840 0.0104 0.0000
-vt 0.6655 0.0104 0.0000
-vt 0.6655 0.0100 0.0000
-vt 0.5757 0.1183 0.0000
-vt 0.5757 0.1188 0.0000
-vt 0.5573 0.1188 0.0000
-vt 0.5573 0.1183 0.0000
-vt 0.2461 0.1003 0.0000
-vt 0.2461 0.1007 0.0000
-vt 0.2457 0.1007 0.0000
-vt 0.2457 0.1003 0.0000
-vt 0.2195 0.2805 0.0000
-vt 0.2191 0.2805 0.0000
-vt 0.2191 0.2800 0.0000
-vt 0.2195 0.2800 0.0000
-vt 0.4314 0.1183 0.0000
-vt 0.4314 0.1188 0.0000
-vt 0.4130 0.1188 0.0000
-vt 0.4130 0.1183 0.0000
-vt 0.6118 0.0100 0.0000
-vt 0.6118 0.0104 0.0000
-vt 0.5934 0.0104 0.0000
-vt 0.5934 0.0100 0.0000
-vt 0.4675 0.1183 0.0000
-vt 0.4675 0.1188 0.0000
-vt 0.4490 0.1188 0.0000
-vt 0.4490 0.1183 0.0000
-vt 0.2871 0.1183 0.0000
-vt 0.2871 0.1188 0.0000
-vt 0.2687 0.1188 0.0000
-vt 0.2687 0.1183 0.0000
-vt 0.0435 0.2332 0.0000
-vt 0.0238 0.2332 0.0000
-vt 0.0238 0.2326 0.0000
-vt 0.0435 0.2326 0.0000
-vt 0.6046 0.2332 0.0000
-vt 0.4308 0.2332 0.0000
-vt 0.4308 0.2326 0.0000
-vt 0.6046 0.2326 0.0000
-vt 0.0435 0.2001 0.0000
-vt 0.0441 0.2001 0.0000
-vt 0.0441 0.2007 0.0000
-vt 0.0435 0.2007 0.0000
-vt 0.2295 0.3415 0.0000
-vt 0.0551 0.3415 0.0000
-vt 0.0551 0.3410 0.0000
-vt 0.2295 0.3410 0.0000
-vt 0.1585 0.4223 0.0000
-vt 0.1382 0.4223 0.0000
-vt 0.1382 0.4218 0.0000
-vt 0.1585 0.4218 0.0000
-vt 0.2240 0.2799 0.0000
-vt 0.2245 0.2799 0.0000
-vt 0.2245 0.2805 0.0000
-vt 0.2240 0.2805 0.0000
-vt 0.4170 0.4218 0.0000
-vt 0.4170 0.4223 0.0000
-vt 0.2432 0.4223 0.0000
-vt 0.2427 0.4218 0.0000
-vt 0.2432 0.4421 0.0000
-vt 0.2427 0.4421 0.0000
-vt 0.0551 0.5762 0.0000
-vt 0.0551 0.5559 0.0000
-vt 0.0556 0.5559 0.0000
-vt 0.0556 0.5757 0.0000
-vt 0.2295 0.5757 0.0000
-vt 0.2295 0.5762 0.0000
-vt 0.0419 0.2942 0.0000
-vt 0.0221 0.2942 0.0000
-vt 0.0221 0.2937 0.0000
-vt 0.0419 0.2937 0.0000
-vt 0.2300 0.2469 0.0000
-vt 0.0562 0.2469 0.0000
-vt 0.0562 0.2464 0.0000
-vt 0.2300 0.2464 0.0000
-vt 0.2240 0.3470 0.0000
-vt 0.2245 0.3470 0.0000
-vt 0.2245 0.3475 0.0000
-vt 0.2240 0.3475 0.0000
-vt 0.2295 0.3613 0.0000
-vt 0.0551 0.3613 0.0000
-vt 0.0551 0.3607 0.0000
-vt 0.2295 0.3607 0.0000
-vt 0.5090 0.3217 0.0000
-vt 0.4886 0.3217 0.0000
-vt 0.4886 0.3212 0.0000
-vt 0.5090 0.3212 0.0000
-vt 0.4115 0.3134 0.0000
-vt 0.4121 0.3134 0.0000
-vt 0.4121 0.3140 0.0000
-vt 0.4115 0.3140 0.0000
-vt 0.7922 0.4553 0.0000
-vt 0.7922 0.4559 0.0000
-vt 0.6184 0.4559 0.0000
-vt 0.6178 0.4553 0.0000
-vt 0.6184 0.4756 0.0000
-vt 0.6178 0.4756 0.0000
-vt 0.6178 0.5762 0.0000
-vt 0.6178 0.5559 0.0000
-vt 0.6184 0.5559 0.0000
-vt 0.6184 0.5757 0.0000
-vt 0.7922 0.5757 0.0000
-vt 0.7922 0.5762 0.0000
-vt 0.0419 0.7774 0.0000
-vt 0.0221 0.7774 0.0000
-vt 0.0221 0.7769 0.0000
-vt 0.0419 0.7769 0.0000
-vt 0.7922 0.1781 0.0000
-vt 0.6184 0.1781 0.0000
-vt 0.6184 0.1776 0.0000
-vt 0.7922 0.1776 0.0000
-vt 0.2505 0.1002 0.0000
-vt 0.2511 0.1002 0.0000
-vt 0.2511 0.1007 0.0000
-vt 0.2505 0.1007 0.0000
-vt 0.7922 0.2745 0.0000
-vt 0.6178 0.2745 0.0000
-vt 0.6178 0.2739 0.0000
-vt 0.7922 0.2739 0.0000
-vt 0.6954 0.2961 0.0000
-vt 0.6750 0.2961 0.0000
-vt 0.6750 0.2956 0.0000
-vt 0.6954 0.2956 0.0000
-vt 0.2866 0.0821 0.0000
-vt 0.2871 0.0821 0.0000
-vt 0.2871 0.0827 0.0000
-vt 0.2866 0.0827 0.0000
-vt 0.7922 0.6230 0.0000
-vt 0.7922 0.6235 0.0000
-vt 0.6184 0.6235 0.0000
-vt 0.6178 0.6230 0.0000
-vt 0.6184 0.6433 0.0000
-vt 0.6178 0.6433 0.0000
-vt 0.4302 0.3751 0.0000
-vt 0.4302 0.3547 0.0000
-vt 0.4308 0.3547 0.0000
-vt 0.4308 0.3745 0.0000
-vt 0.6046 0.3745 0.0000
-vt 0.6046 0.3751 0.0000
-vt 0.0419 0.3080 0.0000
-vt 0.0221 0.3080 0.0000
-vt 0.0221 0.3074 0.0000
-vt 0.0419 0.3074 0.0000
-vt 0.6052 0.1919 0.0000
-vt 0.4313 0.1919 0.0000
-vt 0.4313 0.1913 0.0000
-vt 0.6052 0.1913 0.0000
-vt 0.3227 0.0641 0.0000
-vt 0.3232 0.0641 0.0000
-vt 0.3232 0.0646 0.0000
-vt 0.3227 0.0646 0.0000
-vt 0.7922 0.2607 0.0000
-vt 0.6178 0.2607 0.0000
-vt 0.6178 0.2601 0.0000
-vt 0.7922 0.2601 0.0000
-vt 0.7615 0.2961 0.0000
-vt 0.7412 0.2961 0.0000
-vt 0.7412 0.2956 0.0000
-vt 0.7615 0.2956 0.0000
-vt 0.3587 0.0460 0.0000
-vt 0.3593 0.0460 0.0000
-vt 0.3593 0.0466 0.0000
-vt 0.3587 0.0466 0.0000
-vt 0.7922 0.7236 0.0000
-vt 0.7922 0.7241 0.0000
-vt 0.6184 0.7241 0.0000
-vt 0.6178 0.7236 0.0000
-vt 0.6184 0.7439 0.0000
-vt 0.6178 0.7439 0.0000
-vt 0.4302 0.7774 0.0000
-vt 0.4302 0.7571 0.0000
-vt 0.4308 0.7571 0.0000
-vt 0.4308 0.7769 0.0000
-vt 0.6046 0.7769 0.0000
-vt 0.6046 0.7774 0.0000
-vt 0.0419 0.3613 0.0000
-vt 0.0221 0.3613 0.0000
-vt 0.0221 0.3607 0.0000
-vt 0.0419 0.3607 0.0000
-vt 0.2311 0.2194 0.0000
-vt 0.0573 0.2194 0.0000
-vt 0.0573 0.2189 0.0000
-vt 0.2311 0.2189 0.0000
-vt 0.0106 0.2189 0.0000
-vt 0.0111 0.2189 0.0000
-vt 0.0111 0.2194 0.0000
-vt 0.0106 0.2194 0.0000
-vt 0.2295 0.3080 0.0000
-vt 0.0551 0.3080 0.0000
-vt 0.0551 0.3074 0.0000
-vt 0.2295 0.3074 0.0000
-vt 0.6718 0.2882 0.0000
-vt 0.6515 0.2882 0.0000
-vt 0.6515 0.2877 0.0000
-vt 0.6718 0.2877 0.0000
-vt 0.0100 0.2326 0.0000
-vt 0.0106 0.2326 0.0000
-vt 0.0106 0.2332 0.0000
-vt 0.0100 0.2332 0.0000
-vt 0.7922 0.6901 0.0000
-vt 0.7922 0.6906 0.0000
-vt 0.6184 0.6906 0.0000
-vt 0.6178 0.6901 0.0000
-vt 0.6184 0.7104 0.0000
-vt 0.6178 0.7104 0.0000
-vt 0.2427 0.7774 0.0000
-vt 0.2427 0.7571 0.0000
-vt 0.2432 0.7571 0.0000
-vt 0.2432 0.7769 0.0000
-vt 0.4170 0.7769 0.0000
-vt 0.4170 0.7774 0.0000
-vt 0.0419 0.3948 0.0000
-vt 0.0221 0.3948 0.0000
-vt 0.0221 0.3943 0.0000
-vt 0.0419 0.3943 0.0000
-vt 0.4181 0.1919 0.0000
-vt 0.2443 0.1919 0.0000
-vt 0.2443 0.1913 0.0000
-vt 0.4181 0.1913 0.0000
-vt 0.6046 0.1500 0.0000
-vt 0.6052 0.1500 0.0000
-vt 0.6052 0.1506 0.0000
-vt 0.6046 0.1506 0.0000
-vt 0.2295 0.3278 0.0000
-vt 0.0551 0.3278 0.0000
-vt 0.0551 0.3272 0.0000
-vt 0.2295 0.3272 0.0000
-vt 0.6965 0.2882 0.0000
-vt 0.6762 0.2882 0.0000
-vt 0.6762 0.2877 0.0000
-vt 0.6965 0.2877 0.0000
-vt 0.0435 0.2051 0.0000
-vt 0.0441 0.2051 0.0000
-vt 0.0441 0.2056 0.0000
-vt 0.0435 0.2056 0.0000
-vt 0.7922 0.6565 0.0000
-vt 0.7922 0.6571 0.0000
-vt 0.6184 0.6571 0.0000
-vt 0.6178 0.6565 0.0000
-vt 0.6184 0.6768 0.0000
-vt 0.6178 0.6768 0.0000
-vt 0.6178 0.7774 0.0000
-vt 0.6178 0.7571 0.0000
-vt 0.6184 0.7571 0.0000
-vt 0.6184 0.7769 0.0000
-vt 0.7922 0.7769 0.0000
-vt 0.7922 0.7774 0.0000
-vt 0.0419 0.3751 0.0000
-vt 0.0221 0.3751 0.0000
-vt 0.0221 0.3745 0.0000
-vt 0.0419 0.3745 0.0000
-vt 0.7922 0.1506 0.0000
-vt 0.6184 0.1506 0.0000
-vt 0.6184 0.1500 0.0000
-vt 0.7922 0.1500 0.0000
-vt 0.4165 0.2799 0.0000
-vt 0.4170 0.2799 0.0000
-vt 0.4170 0.2805 0.0000
-vt 0.4165 0.2805 0.0000
-vt 0.4170 0.2607 0.0000
-vt 0.2427 0.2607 0.0000
-vt 0.2427 0.2601 0.0000
-vt 0.4170 0.2601 0.0000
-vt 0.7213 0.2882 0.0000
-vt 0.7009 0.2882 0.0000
-vt 0.7009 0.2877 0.0000
-vt 0.7213 0.2877 0.0000
-vt 0.4165 0.3134 0.0000
-vt 0.4170 0.3134 0.0000
-vt 0.4170 0.3140 0.0000
-vt 0.4165 0.3140 0.0000
-vt 0.2295 0.7571 0.0000
-vt 0.2295 0.7577 0.0000
-vt 0.0556 0.7577 0.0000
-vt 0.0551 0.7571 0.0000
-vt 0.0556 0.7774 0.0000
-vt 0.0551 0.7774 0.0000
-vt 0.6178 0.6098 0.0000
-vt 0.6178 0.5895 0.0000
-vt 0.6184 0.5895 0.0000
-vt 0.6184 0.6092 0.0000
-vt 0.7922 0.6092 0.0000
-vt 0.7922 0.6098 0.0000
-vt 0.0419 0.4086 0.0000
-vt 0.0221 0.4086 0.0000
-vt 0.0221 0.4080 0.0000
-vt 0.0419 0.4080 0.0000
-vt 0.4170 0.2469 0.0000
-vt 0.2432 0.2469 0.0000
-vt 0.2432 0.2464 0.0000
-vt 0.4170 0.2464 0.0000
-vt 0.0888 0.4303 0.0000
-vt 0.0888 0.4297 0.0000
-vt 0.0893 0.4297 0.0000
-vt 0.0893 0.4303 0.0000
-vt 0.6046 0.2607 0.0000
-vt 0.4302 0.2607 0.0000
-vt 0.4302 0.2601 0.0000
-vt 0.6046 0.2601 0.0000
-vt 0.1326 0.4303 0.0000
-vt 0.1123 0.4303 0.0000
-vt 0.1123 0.4297 0.0000
-vt 0.1326 0.4297 0.0000
-vt 0.7758 0.2961 0.0000
-vt 0.7758 0.2956 0.0000
-vt 0.7764 0.2956 0.0000
-vt 0.7764 0.2961 0.0000
-vt 0.6046 0.6230 0.0000
-vt 0.6046 0.6235 0.0000
-vt 0.4308 0.6235 0.0000
-vt 0.4302 0.6230 0.0000
-vt 0.4308 0.6433 0.0000
-vt 0.4302 0.6433 0.0000
-vt 0.4302 0.6098 0.0000
-vt 0.4302 0.5895 0.0000
-vt 0.4308 0.5895 0.0000
-vt 0.4308 0.6092 0.0000
-vt 0.6046 0.6092 0.0000
-vt 0.6046 0.6098 0.0000
-vt 0.6002 0.1453 0.0000
-vt 0.6002 0.1457 0.0000
-vt 0.5998 0.1457 0.0000
-vt 0.5998 0.1453 0.0000
-vt 0.2195 0.3140 0.0000
-vt 0.2191 0.3140 0.0000
-vt 0.2191 0.3136 0.0000
-vt 0.2195 0.3136 0.0000
-vt 0.5757 0.0642 0.0000
-vt 0.5757 0.0646 0.0000
-vt 0.5573 0.0646 0.0000
-vt 0.5573 0.0642 0.0000
-vt 0.7200 0.0822 0.0000
-vt 0.7200 0.0827 0.0000
-vt 0.7016 0.0827 0.0000
-vt 0.7016 0.0822 0.0000
-vt 0.3593 0.0642 0.0000
-vt 0.3593 0.0646 0.0000
-vt 0.3408 0.0646 0.0000
-vt 0.3408 0.0642 0.0000
-vt 0.6840 0.0461 0.0000
-vt 0.6840 0.0466 0.0000
-vt 0.6655 0.0466 0.0000
-vt 0.6655 0.0461 0.0000
-vt 0.4071 0.2800 0.0000
-vt 0.4071 0.2805 0.0000
-vt 0.4067 0.2805 0.0000
-vt 0.4067 0.2800 0.0000
-vt 0.5947 0.2805 0.0000
-vt 0.5943 0.2805 0.0000
-vt 0.5943 0.2800 0.0000
-vt 0.5947 0.2800 0.0000
-vt 0.6118 0.0461 0.0000
-vt 0.6118 0.0466 0.0000
-vt 0.5934 0.0466 0.0000
-vt 0.5934 0.0461 0.0000
-vt 0.6479 0.1183 0.0000
-vt 0.6479 0.1188 0.0000
-vt 0.6294 0.1188 0.0000
-vt 0.6294 0.1183 0.0000
-vt 0.3954 0.0642 0.0000
-vt 0.3954 0.0646 0.0000
-vt 0.3769 0.0646 0.0000
-vt 0.3769 0.0642 0.0000
-vt 0.7922 0.0281 0.0000
-vt 0.7922 0.0285 0.0000
-vt 0.7737 0.0285 0.0000
-vt 0.7737 0.0281 0.0000
-vt 0.1739 0.1364 0.0000
-vt 0.1739 0.1368 0.0000
-vt 0.1735 0.1368 0.0000
-vt 0.1735 0.1364 0.0000
-vt 0.3183 0.0646 0.0000
-vt 0.3178 0.0646 0.0000
-vt 0.3178 0.0642 0.0000
-vt 0.3183 0.0642 0.0000
-vt 0.6479 0.0281 0.0000
-vt 0.6479 0.0285 0.0000
-vt 0.6294 0.0285 0.0000
-vt 0.6294 0.0281 0.0000
-vt 0.7561 0.0461 0.0000
-vt 0.7561 0.0466 0.0000
-vt 0.7377 0.0466 0.0000
-vt 0.7377 0.0461 0.0000
-vt 0.3232 0.1364 0.0000
-vt 0.3232 0.1368 0.0000
-vt 0.3047 0.1368 0.0000
-vt 0.3047 0.1364 0.0000
-vt 0.7200 0.1183 0.0000
-vt 0.7200 0.1188 0.0000
-vt 0.7016 0.1188 0.0000
-vt 0.7016 0.1183 0.0000
-vt 0.3232 0.0592 0.0000
-vt 0.3232 0.0597 0.0000
-vt 0.3228 0.0597 0.0000
-vt 0.3228 0.0592 0.0000
-vt 0.3954 0.0235 0.0000
-vt 0.3949 0.0235 0.0000
-vt 0.3949 0.0231 0.0000
-vt 0.3954 0.0231 0.0000
-vt 0.4675 0.1364 0.0000
-vt 0.4675 0.1368 0.0000
-vt 0.4490 0.1368 0.0000
-vt 0.4490 0.1364 0.0000
-vt 0.6479 0.1003 0.0000
-vt 0.6479 0.1007 0.0000
-vt 0.6294 0.1007 0.0000
-vt 0.6294 0.1003 0.0000
-vt 0.5036 0.1364 0.0000
-vt 0.5036 0.1368 0.0000
-vt 0.4851 0.1368 0.0000
-vt 0.4851 0.1364 0.0000
-vt 0.0419 0.4279 0.0000
-vt 0.0419 0.4284 0.0000
-vt 0.0234 0.4284 0.0000
-vt 0.0234 0.4279 0.0000
-vt 0.0111 0.2140 0.0000
-vt 0.0111 0.2145 0.0000
-vt 0.0107 0.2145 0.0000
-vt 0.0107 0.2140 0.0000
-vt 0.1670 0.4297 0.0000
-vt 0.1670 0.4301 0.0000
-vt 0.1666 0.4301 0.0000
-vt 0.1666 0.4297 0.0000
-vt 0.5397 0.1003 0.0000
-vt 0.5397 0.1007 0.0000
-vt 0.5212 0.1007 0.0000
-vt 0.5212 0.1003 0.0000
-vt 0.7200 0.0461 0.0000
-vt 0.7200 0.0466 0.0000
-vt 0.7016 0.0466 0.0000
-vt 0.7016 0.0461 0.0000
-vt 0.5757 0.0100 0.0000
-vt 0.5757 0.0104 0.0000
-vt 0.5573 0.0104 0.0000
-vt 0.5573 0.0100 0.0000
-vt 0.0419 0.7297 0.0000
-vt 0.0419 0.7301 0.0000
-vt 0.0234 0.7301 0.0000
-vt 0.0234 0.7297 0.0000
-vt 0.5369 0.3291 0.0000
-vt 0.5373 0.3291 0.0000
-vt 0.5373 0.3296 0.0000
-vt 0.5369 0.3296 0.0000
-vt 0.2823 0.0777 0.0000
-vt 0.2818 0.0777 0.0000
-vt 0.2818 0.0773 0.0000
-vt 0.2823 0.0773 0.0000
-vt 0.5757 0.0822 0.0000
-vt 0.5757 0.0827 0.0000
-vt 0.5573 0.0827 0.0000
-vt 0.5573 0.0822 0.0000
-vt 0.6479 0.0822 0.0000
-vt 0.6479 0.0827 0.0000
-vt 0.6294 0.0827 0.0000
-vt 0.6294 0.0822 0.0000
-vt 0.4314 0.1003 0.0000
-vt 0.4314 0.1007 0.0000
-vt 0.4130 0.1007 0.0000
-vt 0.4130 0.1003 0.0000
-vt 0.0419 0.5285 0.0000
-vt 0.0419 0.5290 0.0000
-vt 0.0234 0.5290 0.0000
-vt 0.0234 0.5285 0.0000
-vt 0.6052 0.1452 0.0000
-vt 0.6052 0.1456 0.0000
-vt 0.6047 0.1456 0.0000
-vt 0.6047 0.1452 0.0000
-vt 0.4132 0.1644 0.0000
-vt 0.4127 0.1644 0.0000
-vt 0.4127 0.1639 0.0000
-vt 0.4132 0.1639 0.0000
-vt 0.6118 0.0642 0.0000
-vt 0.6118 0.0646 0.0000
-vt 0.5934 0.0646 0.0000
-vt 0.5934 0.0642 0.0000
-vt 0.7561 0.0100 0.0000
-vt 0.7561 0.0104 0.0000
-vt 0.7377 0.0104 0.0000
-vt 0.7377 0.0100 0.0000
-vt 0.5397 0.0461 0.0000
-vt 0.5397 0.0466 0.0000
-vt 0.5212 0.0466 0.0000
-vt 0.5212 0.0461 0.0000
-vt 0.7922 0.1003 0.0000
-vt 0.7922 0.1007 0.0000
-vt 0.7737 0.1007 0.0000
-vt 0.7737 0.1003 0.0000
-vt 0.2311 0.1727 0.0000
-vt 0.2311 0.1732 0.0000
-vt 0.2307 0.1732 0.0000
-vt 0.2307 0.1727 0.0000
-vt 0.0391 0.1919 0.0000
-vt 0.0387 0.1919 0.0000
-vt 0.0387 0.1914 0.0000
-vt 0.0391 0.1914 0.0000
-vt 0.6840 0.0281 0.0000
-vt 0.6840 0.0285 0.0000
-vt 0.6655 0.0285 0.0000
-vt 0.6655 0.0281 0.0000
-vt 0.6479 0.0642 0.0000
-vt 0.6479 0.0646 0.0000
-vt 0.6294 0.0646 0.0000
-vt 0.6294 0.0642 0.0000
-vt 0.3954 0.1364 0.0000
-vt 0.3954 0.1368 0.0000
-vt 0.3769 0.1368 0.0000
-vt 0.3769 0.1364 0.0000
-vt 0.6840 0.1364 0.0000
-vt 0.6840 0.1368 0.0000
-vt 0.6655 0.1368 0.0000
-vt 0.6655 0.1364 0.0000
-vt 0.0106 0.2278 0.0000
-vt 0.0106 0.2282 0.0000
-vt 0.0101 0.2282 0.0000
-vt 0.0101 0.2278 0.0000
-vt 0.3904 0.0285 0.0000
-vt 0.3900 0.0285 0.0000
-vt 0.3900 0.0281 0.0000
-vt 0.3904 0.0281 0.0000
-vt 0.7200 0.0100 0.0000
-vt 0.7200 0.0104 0.0000
-vt 0.7016 0.0104 0.0000
-vt 0.7016 0.0100 0.0000
-vt 0.7922 0.0100 0.0000
-vt 0.7922 0.0104 0.0000
-vt 0.7737 0.0104 0.0000
-vt 0.7737 0.0100 0.0000
-vt 0.5036 0.0822 0.0000
-vt 0.5036 0.0827 0.0000
-vt 0.4851 0.0827 0.0000
-vt 0.4851 0.0822 0.0000
-vt 0.7922 0.0461 0.0000
-vt 0.7922 0.0466 0.0000
-vt 0.7737 0.0466 0.0000
-vt 0.7737 0.0461 0.0000
-# 1770 texture coords
-
-g fangzi4_2
-usemtl Material__2596
-s 2
-f 1/1/1 2/2/1 3/3/1 4/4/1
-s 4
-f 5/5/2 6/6/3 7/7/2 8/8/2
-f 9/9/3 8/8/2 7/7/2
-s 8
-f 1/10/4 4/11/4 10/12/4 11/13/4
-f 1/10/4 11/13/4 12/14/4 13/15/4
-s 16
-f 4/16/5 3/17/5 14/18/5 10/19/5
-s 32
-f 3/20/6 2/21/6 15/22/6 16/23/6
-f 3/20/6 16/23/6 17/24/6 14/25/6
-s 64
-f 2/26/7 1/27/7 13/28/7 15/29/7
-s 4
-f 18/30/8 19/31/3 20/32/3 21/33/3
-f 22/34/8 18/30/8 21/33/3
-f 11/35/3 23/36/3 24/37/3 12/38/3
-f 20/32/3 6/6/3 5/5/2 21/33/3
-s off
-f 13/15/4 12/14/4 8/39/4 9/40/4
-f 12/41/5 24/42/5 5/43/5 8/44/5
-f 24/45/4 23/46/4 21/47/4 5/48/4
-f 23/49/7 11/50/7 22/51/7 21/52/7
-f 11/13/4 10/12/4 18/53/4 22/54/4
-f 10/19/5 14/18/5 19/55/5 18/56/5
-f 14/25/6 17/24/6 20/57/6 19/58/6
-f 17/24/6 16/23/6 6/59/6 20/57/6
-f 16/23/6 15/22/6 7/60/6 6/59/6
-f 15/29/7 13/28/7 9/61/7 7/62/7
-s 2
-f 25/63/1 26/64/1 27/65/1 28/66/1
-s 4
-f 29/67/3 30/68/3 31/69/3 32/70/3
-f 33/71/3 32/70/3 31/69/3
-s 8
-f 25/72/4 28/73/4 34/74/4 35/75/4
-f 25/72/4 35/75/4 36/76/4 37/77/4
-s 16
-f 28/78/5 27/79/5 38/80/5 34/81/5
-s 32
-f 27/82/6 26/83/6 39/84/6 40/85/6
-f 27/82/6 40/85/6 41/86/6 38/87/6
-s 64
-f 26/88/7 25/89/7 37/90/7 39/91/7
-s 4
-f 42/92/3 43/93/3 44/94/3 45/95/3
-f 46/96/3 42/92/3 45/95/3
-f 35/97/3 47/98/3 48/99/3 36/100/3
-f 44/94/3 30/68/3 29/67/3 45/95/3
-s off
-f 37/77/4 36/76/4 32/101/4 33/102/4
-f 36/103/5 48/104/5 29/105/5 32/106/5
-f 48/107/4 47/108/4 45/109/4 29/110/4
-f 47/111/7 35/112/7 46/113/7 45/114/7
-f 35/75/4 34/74/4 42/115/4 46/116/4
-f 34/81/5 38/80/5 43/117/5 42/118/5
-f 38/87/6 41/86/6 44/119/6 43/120/6
-f 41/86/6 40/85/6 30/121/6 44/119/6
-f 40/85/6 39/84/6 31/122/6 30/121/6
-f 39/91/7 37/90/7 33/123/7 31/124/7
-s 1
-f 49/125/5 50/126/5 51/127/5 52/128/5
-s 4
-f 53/129/4 49/130/4 52/131/4 54/132/4
-s 2
-f 55/133/5 53/134/5 54/135/5 56/136/5
-s 4
-f 57/137/6 55/138/6 56/139/6 58/140/6
-s 2
-f 59/141/7 57/142/7 58/143/7 60/144/7
-s 4
-f 50/145/4 59/146/4 60/147/4 51/148/4
-s 16
-f 56/149/1 54/150/1 52/151/1 58/152/1
-f 58/152/1 52/151/1 51/153/1 60/154/1
-f 57/155/3 59/156/3 50/157/3 49/158/3
-f 49/158/3 53/159/3 55/160/3 57/155/3
-s 1
-f 61/161/5 62/162/5 63/163/5 64/164/5
-s 4
-f 65/165/4 61/166/4 64/167/4 66/168/4
-s 2
-f 67/169/5 65/170/5 66/171/5 68/172/5
-s 4
-f 69/173/6 67/174/6 68/175/6 70/176/6
-s 2
-f 71/177/7 69/178/7 70/179/7 72/180/7
-s 4
-f 62/181/4 71/182/4 72/183/4 63/184/4
-s 16
-f 68/185/1 66/186/1 64/187/1 70/188/1
-f 70/188/1 64/187/1 63/189/1 72/190/1
-f 69/191/3 71/192/3 62/193/3 61/194/3
-f 61/194/3 65/195/3 67/196/3 69/191/3
-s 1
-f 73/197/5 74/198/5 75/199/5 76/200/5
-s 4
-f 77/201/4 73/202/4 76/203/4 78/204/4
-s 2
-f 79/205/5 77/206/5 78/207/5 80/208/5
-s 4
-f 81/209/6 79/210/6 80/211/6 82/212/6
-s 2
-f 83/213/7 81/214/7 82/215/7 84/216/7
-s 4
-f 74/217/4 83/218/4 84/219/4 75/220/4
-s 16
-f 80/221/1 78/222/1 76/223/1 82/224/1
-f 82/224/1 76/223/1 75/225/1 84/226/1
-f 81/227/3 83/228/3 74/229/3 73/230/3
-f 73/230/3 77/231/3 79/232/3 81/227/3
-s 1
-f 85/233/5 86/234/5 87/235/5 88/236/5
-s 4
-f 89/237/4 85/238/4 88/239/4 90/240/4
-s 2
-f 91/241/5 89/242/5 90/243/5 92/244/5
-s 4
-f 93/245/6 91/246/6 92/247/6 94/248/6
-s 2
-f 95/249/7 93/250/7 94/251/7 96/252/7
-s 4
-f 86/253/4 95/254/4 96/255/4 87/256/4
-s 16
-f 92/257/1 90/258/1 88/259/1 94/260/1
-f 94/260/1 88/259/1 87/261/1 96/262/1
-f 93/263/3 95/264/3 86/265/3 85/266/3
-f 85/266/3 89/267/3 91/268/3 93/263/3
-s 1
-f 97/269/5 98/270/5 99/271/5 100/272/5
-s 4
-f 101/273/4 97/274/4 100/275/4 102/276/4
-s 2
-f 103/277/5 101/278/5 102/279/5 104/280/5
-s 4
-f 105/281/6 103/282/6 104/283/6 106/284/6
-s 2
-f 107/285/7 105/286/7 106/287/7 108/288/7
-s 4
-f 98/289/4 107/290/4 108/291/4 99/292/4
-s 16
-f 104/293/1 102/294/1 100/295/1 106/296/1
-f 106/296/1 100/295/1 99/297/1 108/298/1
-f 105/299/3 107/300/3 98/301/3 97/302/3
-f 97/302/3 101/303/3 103/304/3 105/299/3
-s 1
-f 109/305/5 110/306/5 111/307/5 112/308/5
-s 4
-f 113/309/4 109/310/4 112/311/4 114/312/4
-s 2
-f 115/313/5 113/314/5 114/315/5 116/316/5
-s 4
-f 117/317/6 115/318/6 116/319/6 118/320/6
-s 2
-f 119/321/7 117/322/7 118/323/7 120/324/7
-s 4
-f 110/325/4 119/326/4 120/327/4 111/328/4
-s 16
-f 116/329/1 114/330/1 112/331/1 118/332/1
-f 118/332/1 112/331/1 111/333/1 120/334/1
-f 117/335/3 119/336/3 110/337/3 109/338/3
-f 109/338/3 113/339/3 115/340/3 117/335/3
-s 1
-f 121/341/5 122/342/5 123/343/5 124/344/5
-s 4
-f 125/345/4 121/346/4 124/347/4 126/348/4
-s 2
-f 127/349/5 125/350/5 126/351/5 128/352/5
-s 4
-f 129/353/6 127/354/6 128/355/6 130/356/6
-s 2
-f 131/357/7 129/358/7 130/359/7 132/360/7
-s 4
-f 122/361/4 131/362/4 132/363/4 123/364/4
-s 16
-f 128/365/1 126/366/1 124/367/1 130/368/1
-f 130/368/1 124/367/1 123/369/1 132/370/1
-f 129/371/3 131/372/3 122/373/3 121/374/3
-f 121/374/3 125/375/3 127/376/3 129/371/3
-s 1
-f 133/377/5 134/378/5 135/379/5 136/380/5
-s 4
-f 137/381/4 133/382/4 136/383/4 138/384/4
-s 2
-f 139/385/5 137/386/5 138/387/5 140/388/5
-s 4
-f 141/389/6 139/390/6 140/391/6 142/392/6
-s 2
-f 143/393/7 141/394/7 142/395/7 144/396/7
-s 4
-f 134/397/4 143/398/4 144/399/4 135/400/4
-s 16
-f 140/401/1 138/402/1 136/403/1 142/404/1
-f 142/404/1 136/403/1 135/405/1 144/406/1
-f 141/407/3 143/408/3 134/409/3 133/410/3
-f 133/410/3 137/411/3 139/412/3 141/407/3
-s 2
-f 145/413/1 146/414/1 147/415/1 148/416/1
-s 4
-f 149/417/3 150/418/3 151/419/3 152/420/3
-s 8
-f 145/421/9 148/422/9 150/423/9 149/424/9
-s 16
-f 148/425/5 147/426/5 151/427/5 150/428/5
-s 32
-f 147/429/6 146/430/6 152/431/6 151/432/6
-s 64
-f 146/433/7 145/434/7 149/435/7 152/436/7
-s 2
-f 153/437/1 154/438/1 155/439/1 156/440/1
-s 4
-f 157/441/3 158/442/3 159/443/3 160/444/3
-s 8
-f 153/445/9 156/446/9 158/447/9 157/448/9
-s 16
-f 156/449/5 155/450/5 159/451/5 158/452/5
-s 32
-f 155/453/6 154/454/6 160/455/6 159/456/6
-s 64
-f 154/457/7 153/458/7 157/459/7 160/460/7
-s 2
-f 161/461/1 162/462/1 163/463/1 164/464/1
-s 4
-f 165/465/3 166/466/3 167/467/3 168/468/3
-s 8
-f 161/469/9 164/470/9 166/471/9 165/472/9
-s 16
-f 164/473/5 163/474/5 167/475/5 166/476/5
-s 32
-f 163/477/6 162/478/6 168/479/6 167/480/6
-s 64
-f 162/481/7 161/482/7 165/483/7 168/484/7
-s 2
-f 169/485/1 170/486/1 171/487/1 172/488/1
-s 4
-f 173/489/3 174/490/3 175/491/3 176/492/3
-s 8
-f 169/493/9 172/494/9 174/495/9 173/496/9
-s 16
-f 172/497/5 171/498/5 175/499/5 174/500/5
-s 32
-f 171/501/6 170/502/6 176/503/6 175/504/6
-s 64
-f 170/505/7 169/506/7 173/507/7 176/508/7
-s 2
-f 177/509/1 178/510/1 179/511/1 180/512/1
-s 4
-f 181/513/3 182/514/3 183/515/3 184/516/3
-s 8
-f 177/517/9 180/518/9 182/519/9 181/520/9
-s 16
-f 180/521/5 179/522/5 183/523/5 182/524/5
-s 32
-f 179/525/6 178/526/6 184/527/6 183/528/6
-s 64
-f 178/529/7 177/530/7 181/531/7 184/532/7
-s 2
-f 185/533/1 186/534/1 187/535/1 188/536/1
-s 4
-f 189/537/3 190/538/3 191/539/3 192/540/3
-s 8
-f 185/541/9 188/542/9 190/543/9 189/544/9
-s 16
-f 188/545/5 187/546/5 191/547/5 190/548/5
-s 32
-f 187/549/6 186/550/6 192/551/6 191/552/6
-s 64
-f 186/553/7 185/554/7 189/555/7 192/556/7
-s 2
-f 193/557/1 194/558/1 195/559/1 196/560/1
-s 4
-f 197/561/3 198/562/3 199/563/3 200/564/3
-s 8
-f 193/565/9 196/566/9 198/567/9 197/568/9
-s 16
-f 196/569/5 195/570/5 199/571/5 198/572/5
-s 32
-f 195/573/6 194/574/6 200/575/6 199/576/6
-s 64
-f 194/577/7 193/578/7 197/579/7 200/580/7
-s 2
-f 201/581/1 202/582/1 203/583/1 204/584/1
-s 4
-f 205/585/3 206/586/3 207/587/3 208/588/3
-s 8
-f 201/589/9 204/590/9 206/591/9 205/592/9
-s 16
-f 204/593/5 203/594/5 207/595/5 206/596/5
-s 32
-f 203/597/6 202/598/6 208/599/6 207/600/6
-s 64
-f 202/601/7 201/602/7 205/603/7 208/604/7
-s 2
-f 209/605/1 210/606/1 211/607/1 212/608/1
-s 4
-f 213/609/3 214/610/3 215/611/3 216/612/3
-s 8
-f 209/613/9 212/614/9 214/615/9 213/616/9
-s 16
-f 212/617/5 211/618/5 215/619/5 214/620/5
-s 32
-f 211/621/6 210/622/6 216/623/6 215/624/6
-s 64
-f 210/625/7 209/626/7 213/627/7 216/628/7
-s 2
-f 217/629/1 218/630/1 219/631/1 220/632/1
-s 4
-f 221/633/3 222/634/3 223/635/3 224/636/3
-s 8
-f 217/637/9 220/638/9 222/639/9 221/640/9
-s 16
-f 220/641/5 219/642/5 223/643/5 222/644/5
-s 32
-f 219/645/6 218/646/6 224/647/6 223/648/6
-s 64
-f 218/649/7 217/650/7 221/651/7 224/652/7
-s 2
-f 225/653/1 226/654/1 227/655/1 228/656/1
-s 4
-f 229/657/3 230/658/3 231/659/3 232/660/3
-s 8
-f 225/661/9 228/662/9 230/663/9 229/664/9
-s 16
-f 228/665/5 227/666/5 231/667/5 230/668/5
-s 32
-f 227/669/6 226/670/6 232/671/6 231/672/6
-s 64
-f 226/673/7 225/674/7 229/675/7 232/676/7
-s 2
-f 233/677/1 234/678/1 235/679/1 236/680/1
-s 4
-f 237/681/2 238/682/3 239/683/2 240/684/2
-f 241/685/3 240/684/2 239/683/2
-s 8
-f 233/686/4 236/687/4 242/688/4 243/689/4
-f 233/686/4 243/689/4 244/690/4 245/691/4
-s 16
-f 236/692/5 235/693/5 246/694/5 242/695/5
-s 32
-f 235/696/6 234/697/6 247/698/6 248/699/6
-f 235/696/6 248/699/6 249/700/6 246/701/6
-s 64
-f 234/702/7 233/703/7 245/704/7 247/705/7
-s 4
-f 250/706/3 251/707/3 252/708/3 253/709/3
-f 254/710/3 250/706/3 253/709/3
-f 243/711/3 255/712/3 256/713/3 244/714/3
-f 252/708/3 238/682/3 237/681/2 253/709/3
-s off
-f 245/691/4 244/690/4 240/715/4 241/716/4
-f 244/717/5 256/718/5 237/719/5 240/720/5
-f 256/721/4 255/722/4 253/723/4 237/724/4
-f 255/725/7 243/726/7 254/727/7 253/728/7
-f 243/689/4 242/688/4 250/729/4 254/730/4
-f 242/695/5 246/694/5 251/731/5 250/732/5
-f 246/701/6 249/700/6 252/733/6 251/734/6
-f 249/700/6 248/699/6 238/735/6 252/733/6
-f 248/699/6 247/698/6 239/736/6 238/735/6
-f 247/705/7 245/704/7 241/737/7 239/738/7
-s 1
-f 257/739/5 258/740/5 259/741/5 260/742/5
-s 4
-f 261/743/4 257/744/4 260/745/4 262/746/4
-s 2
-f 263/747/5 261/748/5 262/749/5 264/750/5
-s 4
-f 265/751/6 263/752/6 264/753/6 266/754/6
-s 2
-f 267/755/7 265/756/7 266/757/7 268/758/7
-s 4
-f 258/759/4 267/760/4 268/761/4 259/762/4
-s 16
-f 264/763/1 262/764/1 260/765/1 266/766/1
-f 266/766/1 260/765/1 259/767/1 268/768/1
-f 265/769/3 267/770/3 258/771/3 257/772/3
-f 257/772/3 261/773/3 263/774/3 265/769/3
-s 1
-f 269/775/5 270/776/5 271/777/5 272/778/5
-s 4
-f 273/779/4 269/780/4 272/781/4 274/782/4
-s 2
-f 275/783/5 273/784/5 274/785/5 276/786/5
-s 4
-f 277/787/6 275/788/6 276/789/6 278/790/6
-s 2
-f 279/791/7 277/792/7 278/793/7 280/794/7
-s 4
-f 270/795/4 279/796/4 280/797/4 271/798/4
-s 16
-f 276/799/1 274/800/1 272/801/1 278/802/1
-f 278/802/1 272/801/1 271/803/1 280/804/1
-f 277/805/3 279/806/3 270/807/3 269/808/3
-f 269/808/3 273/809/3 275/810/3 277/805/3
-s 1
-f 281/811/5 282/812/5 283/813/5 284/814/5
-s 4
-f 285/815/4 281/816/4 284/817/4 286/818/4
-s 2
-f 287/819/5 285/820/5 286/821/5 288/822/5
-s 4
-f 289/823/6 287/824/6 288/825/6 290/826/6
-s 2
-f 291/827/7 289/828/7 290/829/7 292/830/7
-s 4
-f 282/831/4 291/832/4 292/833/4 283/834/4
-s 16
-f 288/835/1 286/836/1 284/837/1 290/838/1
-f 290/838/1 284/837/1 283/839/1 292/840/1
-f 289/841/3 291/842/3 282/843/3 281/844/3
-f 281/844/3 285/845/3 287/846/3 289/841/3
-s 1
-f 293/847/5 294/848/5 295/849/5 296/850/5
-s 4
-f 297/851/4 293/852/4 296/853/4 298/854/4
-s 2
-f 299/855/5 297/856/5 298/857/5 300/858/5
-s 4
-f 301/859/6 299/860/6 300/861/6 302/862/6
-s 2
-f 303/863/7 301/864/7 302/865/7 304/866/7
-s 4
-f 294/867/4 303/868/4 304/869/4 295/870/4
-s 16
-f 300/871/1 298/872/1 296/873/1 302/874/1
-f 302/874/1 296/873/1 295/875/1 304/876/1
-f 301/877/3 303/878/3 294/879/3 293/880/3
-f 293/880/3 297/881/3 299/882/3 301/877/3
-s 1
-f 305/883/5 306/884/5 307/885/5 308/886/5
-s 4
-f 309/887/4 305/888/4 308/889/4 310/890/4
-s 2
-f 311/891/5 309/892/5 310/893/5 312/894/5
-s 4
-f 313/895/6 311/896/6 312/897/6 314/898/6
-s 2
-f 315/899/7 313/900/7 314/901/7 316/902/7
-s 4
-f 306/903/4 315/904/4 316/905/4 307/906/4
-s 16
-f 312/907/1 310/908/1 308/909/1 314/910/1
-f 314/910/1 308/909/1 307/911/1 316/912/1
-f 313/913/3 315/914/3 306/915/3 305/916/3
-f 305/916/3 309/917/3 311/918/3 313/913/3
-s 1
-f 317/919/5 318/920/5 319/921/5 320/922/5
-s 4
-f 321/923/4 317/924/4 320/925/4 322/926/4
-s 2
-f 323/927/5 321/928/5 322/929/5 324/930/5
-s 4
-f 325/931/6 323/932/6 324/933/6 326/934/6
-s 2
-f 327/935/7 325/936/7 326/937/7 328/938/7
-s 4
-f 318/939/4 327/940/4 328/941/4 319/942/4
-s 16
-f 324/943/1 322/944/1 320/945/1 326/946/1
-f 326/946/1 320/945/1 319/947/1 328/948/1
-f 325/949/3 327/950/3 318/951/3 317/952/3
-f 317/952/3 321/953/3 323/954/3 325/949/3
-s 1
-f 329/955/5 330/956/5 331/957/5 332/958/5
-s 4
-f 333/959/4 329/960/4 332/961/4 334/962/4
-s 2
-f 335/963/5 333/964/5 334/965/5 336/966/5
-s 4
-f 337/967/6 335/968/6 336/969/6 338/970/6
-s 2
-f 339/971/7 337/972/7 338/973/7 340/974/7
-s 4
-f 330/975/4 339/976/4 340/977/4 331/978/4
-s 16
-f 336/979/1 334/980/1 332/981/1 338/982/1
-f 338/982/1 332/981/1 331/983/1 340/984/1
-f 337/985/3 339/986/3 330/987/3 329/988/3
-f 329/988/3 333/989/3 335/990/3 337/985/3
-s 1
-f 341/991/5 342/992/5 343/993/5 344/994/5
-s 4
-f 345/995/4 341/996/4 344/997/4 346/998/4
-s 2
-f 347/999/5 345/1000/5 346/1001/5 348/1002/5
-s 4
-f 349/1003/6 347/1004/6 348/1005/6 350/1006/6
-s 2
-f 351/1007/7 349/1008/7 350/1009/7 352/1010/7
-s 4
-f 342/1011/4 351/1012/4 352/1013/4 343/1014/4
-s 16
-f 348/1015/1 346/1016/1 344/1017/1 350/1018/1
-f 350/1018/1 344/1017/1 343/1019/1 352/1020/1
-f 349/1021/3 351/1022/3 342/1023/3 341/1024/3
-f 341/1024/3 345/1025/3 347/1026/3 349/1021/3
-s 2
-f 353/1027/1 354/1028/1 355/1029/1 356/1030/1
-s 4
-f 357/1031/3 358/1032/3 359/1033/3 360/1034/3
-s 8
-f 353/1035/9 356/1036/9 358/1037/9 357/1038/9
-s 16
-f 356/1039/5 355/1040/5 359/1041/5 358/1042/5
-s 32
-f 355/1043/6 354/1044/6 360/1045/6 359/1046/6
-s 64
-f 354/1047/7 353/1048/7 357/1049/7 360/1050/7
-s 2
-f 361/1051/1 362/1052/1 363/1053/1 364/1054/1
-s 4
-f 365/1055/3 366/1056/3 367/1057/3 368/1058/3
-s 8
-f 361/1059/9 364/1060/9 366/1061/9 365/1062/9
-s 16
-f 364/1063/5 363/1064/5 367/1065/5 366/1066/5
-s 32
-f 363/1067/6 362/1068/6 368/1069/6 367/1070/6
-s 64
-f 362/1071/7 361/1072/7 365/1073/7 368/1074/7
-s 2
-f 369/1075/1 370/1076/1 371/1077/1 372/1078/1
-s 4
-f 373/1079/3 374/1080/3 375/1081/3 376/1082/3
-s 8
-f 369/1083/9 372/1084/9 374/1085/9 373/1086/9
-s 16
-f 372/1087/5 371/1088/5 375/1089/5 374/1090/5
-s 32
-f 371/1091/6 370/1092/6 376/1093/6 375/1094/6
-s 64
-f 370/1095/7 369/1096/7 373/1097/7 376/1098/7
-s 2
-f 377/1099/1 378/1100/1 379/1101/1 380/1102/1
-s 4
-f 381/1103/3 382/1104/3 383/1105/3 384/1106/3
-s 8
-f 377/1107/9 380/1108/9 382/1109/9 381/1110/9
-s 16
-f 380/1111/5 379/1112/5 383/1113/5 382/1114/5
-s 32
-f 379/1115/6 378/1116/6 384/1117/6 383/1118/6
-s 64
-f 378/1119/7 377/1120/7 381/1121/7 384/1122/7
-s 2
-f 385/1123/1 386/1124/1 387/1125/1 388/1126/1
-s 4
-f 389/1127/3 390/1128/3 391/1129/3 392/1130/3
-s 8
-f 385/1131/9 388/1132/9 390/1133/9 389/1134/9
-s 16
-f 388/1135/5 387/1136/5 391/1137/5 390/1138/5
-s 32
-f 387/1139/6 386/1140/6 392/1141/6 391/1142/6
-s 64
-f 386/1143/7 385/1144/7 389/1145/7 392/1146/7
-s 2
-f 393/1147/1 394/1148/1 395/1149/1 396/1150/1
-s 4
-f 397/1151/3 398/1152/3 399/1153/3 400/1154/3
-s 8
-f 393/1155/9 396/1156/9 398/1157/9 397/1158/9
-s 16
-f 396/1159/5 395/1160/5 399/1161/5 398/1162/5
-s 32
-f 395/1163/6 394/1164/6 400/1165/6 399/1166/6
-s 64
-f 394/1167/7 393/1168/7 397/1169/7 400/1170/7
-s 2
-f 401/1171/1 402/1172/1 403/1173/1 404/1174/1
-s 4
-f 405/1175/3 406/1176/3 407/1177/3 408/1178/3
-s 8
-f 401/1179/9 404/1180/9 406/1181/9 405/1182/9
-s 16
-f 404/1183/5 403/1184/5 407/1185/5 406/1186/5
-s 32
-f 403/1187/6 402/1188/6 408/1189/6 407/1190/6
-s 64
-f 402/1191/7 401/1192/7 405/1193/7 408/1194/7
-s 2
-f 409/1195/1 410/1196/1 411/1197/1 412/1198/1
-s 4
-f 413/1199/3 414/1200/3 415/1201/3 416/1202/3
-s 8
-f 409/1203/9 412/1204/9 414/1205/9 413/1206/9
-s 16
-f 412/1207/5 411/1208/5 415/1209/5 414/1210/5
-s 32
-f 411/1211/6 410/1212/6 416/1213/6 415/1214/6
-s 64
-f 410/1215/7 409/1216/7 413/1217/7 416/1218/7
-s 2
-f 417/1219/1 418/1220/1 419/1221/1 420/1222/1
-s 4
-f 421/1223/3 422/1224/3 423/1225/3 424/1226/3
-s 8
-f 417/1227/9 420/1228/9 422/1229/9 421/1230/9
-s 16
-f 420/1231/5 419/1232/5 423/1233/5 422/1234/5
-s 32
-f 419/1235/6 418/1236/6 424/1237/6 423/1238/6
-s 64
-f 418/1239/7 417/1240/7 421/1241/7 424/1242/7
-s 2
-f 425/1243/1 426/1244/1 427/1245/1 428/1246/1
-s 4
-f 429/1247/3 430/1248/3 431/1249/3 432/1250/3
-s 8
-f 425/1251/9 428/1252/9 430/1253/9 429/1254/9
-s 16
-f 428/1255/5 427/1256/5 431/1257/5 430/1258/5
-s 32
-f 427/1259/6 426/1260/6 432/1261/6 431/1262/6
-s 64
-f 426/1263/7 425/1264/7 429/1265/7 432/1266/7
-s 1
-f 433/1267/5 434/1268/5 435/1269/5 436/1270/5
-s 4
-f 437/1271/4 433/1272/4 436/1273/4 438/1274/4
-s 2
-f 439/1275/5 437/1276/5 438/1277/5 440/1278/5
-s 4
-f 441/1279/6 439/1280/6 440/1281/6 442/1282/6
-s 2
-f 443/1283/7 441/1284/7 442/1285/7 444/1286/7
-s 4
-f 434/1287/4 443/1288/4 444/1289/4 435/1290/4
-s 16
-f 440/1291/1 438/1292/1 436/1293/1 442/1294/1
-f 442/1294/1 436/1293/1 435/1295/1 444/1296/1
-f 441/1297/3 443/1298/3 434/1299/3 433/1300/3
-f 433/1300/3 437/1301/3 439/1302/3 441/1297/3
-s 1
-f 445/1303/5 446/1304/5 447/1305/5 448/1306/5
-s 4
-f 449/1307/4 445/1308/4 448/1309/4 450/1310/4
-s 2
-f 451/1311/5 449/1312/5 450/1313/5 452/1314/5
-s 4
-f 453/1315/6 451/1316/6 452/1317/6 454/1318/6
-s 2
-f 455/1319/7 453/1320/7 454/1321/7 456/1322/7
-s 4
-f 446/1323/4 455/1324/4 456/1325/4 447/1326/4
-s 16
-f 452/1327/1 450/1328/1 448/1329/1 454/1330/1
-f 454/1330/1 448/1329/1 447/1331/1 456/1332/1
-f 453/1333/3 455/1334/3 446/1335/3 445/1336/3
-f 445/1336/3 449/1337/3 451/1338/3 453/1333/3
-s 1
-f 457/1339/5 458/1340/5 459/1341/5 460/1342/5
-s 4
-f 461/1343/4 457/1344/4 460/1345/4 462/1346/4
-s 2
-f 463/1347/5 461/1348/5 462/1349/5 464/1350/5
-s 4
-f 465/1351/6 463/1352/6 464/1353/6 466/1354/6
-s 2
-f 467/1355/7 465/1356/7 466/1357/7 468/1358/7
-s 4
-f 458/1359/4 467/1360/4 468/1361/4 459/1362/4
-s 16
-f 464/1363/1 462/1364/1 460/1365/1 466/1366/1
-f 466/1366/1 460/1365/1 459/1367/1 468/1368/1
-f 465/1369/3 467/1370/3 458/1371/3 457/1372/3
-f 457/1372/3 461/1373/3 463/1374/3 465/1369/3
-s 1
-f 469/1375/5 470/1376/5 471/1377/5 472/1378/5
-s 4
-f 473/1379/4 469/1380/4 472/1381/4 474/1382/4
-s 2
-f 475/1383/5 473/1384/5 474/1385/5 476/1386/5
-s 4
-f 477/1387/6 475/1388/6 476/1389/6 478/1390/6
-s 2
-f 479/1391/7 477/1392/7 478/1393/7 480/1394/7
-s 4
-f 470/1395/4 479/1396/4 480/1397/4 471/1398/4
-s 16
-f 476/1399/1 474/1400/1 472/1401/1 478/1402/1
-f 478/1402/1 472/1401/1 471/1403/1 480/1404/1
-f 477/1405/3 479/1406/3 470/1407/3 469/1408/3
-f 469/1408/3 473/1409/3 475/1410/3 477/1405/3
-s 1
-f 481/1411/5 482/1412/5 483/1413/5 484/1414/5
-s 4
-f 485/1415/4 481/1416/4 484/1417/4 486/1418/4
-s 2
-f 487/1419/5 485/1420/5 486/1421/5 488/1422/5
-s 4
-f 489/1423/6 487/1424/6 488/1425/6 490/1426/6
-s 2
-f 491/1427/7 489/1428/7 490/1429/7 492/1430/7
-s 4
-f 482/1431/4 491/1432/4 492/1433/4 483/1434/4
-s 16
-f 488/1435/1 486/1436/1 484/1437/1 490/1438/1
-f 490/1438/1 484/1437/1 483/1439/1 492/1440/1
-f 489/1441/3 491/1442/3 482/1443/3 481/1444/3
-f 481/1444/3 485/1445/3 487/1446/3 489/1441/3
-s 1
-f 493/1447/5 494/1448/5 495/1449/5 496/1450/5
-s 4
-f 497/1451/4 493/1452/4 496/1453/4 498/1454/4
-s 2
-f 499/1455/5 497/1456/5 498/1457/5 500/1458/5
-s 4
-f 501/1459/6 499/1460/6 500/1461/6 502/1462/6
-s 2
-f 503/1463/7 501/1464/7 502/1465/7 504/1466/7
-s 4
-f 494/1467/4 503/1468/4 504/1469/4 495/1470/4
-s 16
-f 500/1471/1 498/1472/1 496/1473/1 502/1474/1
-f 502/1474/1 496/1473/1 495/1475/1 504/1476/1
-f 501/1477/3 503/1478/3 494/1479/3 493/1480/3
-f 493/1480/3 497/1481/3 499/1482/3 501/1477/3
-s 1
-f 505/1483/5 506/1484/5 507/1485/5 508/1486/5
-s 4
-f 509/1487/4 505/1488/4 508/1489/4 510/1490/4
-s 2
-f 511/1491/5 509/1492/5 510/1493/5 512/1494/5
-s 4
-f 513/1495/6 511/1496/6 512/1497/6 514/1498/6
-s 2
-f 515/1499/7 513/1500/7 514/1501/7 516/1502/7
-s 4
-f 506/1503/4 515/1504/4 516/1505/4 507/1506/4
-s 16
-f 512/1507/1 510/1508/1 508/1509/1 514/1510/1
-f 514/1510/1 508/1509/1 507/1511/1 516/1512/1
-f 513/1513/3 515/1514/3 506/1515/3 505/1516/3
-f 505/1516/3 509/1517/3 511/1518/3 513/1513/3
-s 1
-f 517/1519/5 518/1520/5 519/1521/5 520/1522/5
-s 4
-f 521/1523/4 517/1524/4 520/1525/4 522/1526/4
-s 2
-f 523/1527/5 521/1528/5 522/1529/5 524/1530/5
-s 4
-f 525/1531/6 523/1532/6 524/1533/6 526/1534/6
-s 2
-f 527/1535/7 525/1536/7 526/1537/7 528/1538/7
-s 4
-f 518/1539/4 527/1540/4 528/1541/4 519/1542/4
-s 16
-f 524/1543/1 522/1544/1 520/1545/1 526/1546/1
-f 526/1546/1 520/1545/1 519/1547/1 528/1548/1
-f 525/1549/3 527/1550/3 518/1551/3 517/1552/3
-f 517/1552/3 521/1553/3 523/1554/3 525/1549/3
-s 2
-f 529/1555/1 530/1556/1 531/1557/1 532/1558/1
-s 4
-f 533/1559/3 534/1560/3 535/1561/3 536/1562/3
-s 8
-f 529/1563/9 532/1564/9 534/1565/9 533/1566/9
-s 16
-f 532/1567/5 531/1568/5 535/1569/5 534/1570/5
-s 32
-f 531/1571/6 530/1572/6 536/1573/6 535/1574/6
-s 64
-f 530/1575/7 529/1576/7 533/1577/7 536/1578/7
-s 2
-f 537/1579/1 538/1580/1 539/1581/1 540/1582/1
-s 4
-f 541/1583/3 542/1584/3 543/1585/3 544/1586/3
-s 8
-f 537/1587/9 540/1588/9 542/1589/9 541/1590/9
-s 16
-f 540/1591/5 539/1592/5 543/1593/5 542/1594/5
-s 32
-f 539/1595/6 538/1596/6 544/1597/6 543/1598/6
-s 64
-f 538/1599/7 537/1600/7 541/1601/7 544/1602/7
-s 2
-f 545/1603/1 546/1604/1 547/1605/1 548/1606/1
-s 4
-f 549/1607/3 550/1608/3 551/1609/3 552/1610/3
-s 8
-f 545/1611/9 548/1612/9 550/1613/9 549/1614/9
-s 16
-f 548/1615/5 547/1616/5 551/1617/5 550/1618/5
-s 32
-f 547/1619/6 546/1620/6 552/1621/6 551/1622/6
-s 64
-f 546/1623/7 545/1624/7 549/1625/7 552/1626/7
-s 2
-f 553/1627/1 554/1628/1 555/1629/1 556/1630/1
-s 4
-f 557/1631/3 558/1632/3 559/1633/3 560/1634/3
-s 8
-f 553/1635/9 556/1636/9 558/1637/9 557/1638/9
-s 16
-f 556/1639/5 555/1640/5 559/1641/5 558/1642/5
-s 32
-f 555/1643/6 554/1644/6 560/1645/6 559/1646/6
-s 64
-f 554/1647/7 553/1648/7 557/1649/7 560/1650/7
-s 2
-f 561/1651/1 562/1652/1 563/1653/1 564/1654/1
-s 4
-f 565/1655/3 566/1656/3 567/1657/3 568/1658/3
-s 8
-f 561/1659/9 564/1660/9 566/1661/9 565/1662/9
-s 16
-f 564/1663/5 563/1664/5 567/1665/5 566/1666/5
-s 32
-f 563/1667/6 562/1668/6 568/1669/6 567/1670/6
-s 64
-f 562/1671/7 561/1672/7 565/1673/7 568/1674/7
-s 2
-f 569/1675/1 570/1676/1 571/1677/1 572/1678/1
-s 4
-f 573/1679/3 574/1680/3 575/1681/3 576/1682/3
-s 8
-f 569/1683/9 572/1684/9 574/1685/9 573/1686/9
-s 16
-f 572/1687/5 571/1688/5 575/1689/5 574/1690/5
-s 32
-f 571/1691/6 570/1692/6 576/1693/6 575/1694/6
-s 64
-f 570/1695/7 569/1696/7 573/1697/7 576/1698/7
-s 2
-f 577/1699/1 578/1700/1 579/1701/1 580/1702/1
-s 4
-f 581/1703/3 582/1704/3 583/1705/3 584/1706/3
-s 8
-f 577/1707/9 580/1708/9 582/1709/9 581/1710/9
-s 16
-f 580/1711/5 579/1712/5 583/1713/5 582/1714/5
-s 32
-f 579/1715/6 578/1716/6 584/1717/6 583/1718/6
-s 64
-f 578/1719/7 577/1720/7 581/1721/7 584/1722/7
-s 2
-f 585/1723/1 586/1724/1 587/1725/1 588/1726/1
-s 4
-f 589/1727/3 590/1728/3 591/1729/3 592/1730/3
-s 8
-f 585/1731/9 588/1732/9 590/1733/9 589/1734/9
-s 16
-f 588/1735/5 587/1736/5 591/1737/5 590/1738/5
-s 32
-f 587/1739/6 586/1740/6 592/1741/6 591/1742/6
-s 64
-f 586/1743/7 585/1744/7 589/1745/7 592/1746/7
-s 2
-f 593/1747/1 594/1748/1 595/1749/1 596/1750/1
-s 4
-f 597/1751/3 598/1752/3 599/1753/3 600/1754/3
-s 8
-f 593/1755/9 596/1756/9 598/1757/9 597/1758/9
-s 16
-f 596/1759/5 595/1760/5 599/1761/5 598/1762/5
-s 32
-f 595/1763/6 594/1764/6 600/1765/6 599/1766/6
-s 64
-f 594/1767/7 593/1768/7 597/1769/7 600/1770/7
-# 483 polygons - 6 triangles
-
-#
-# object fangzi4_4
-#
-
-v -156.2529 84.6696 -19.2197
-v -156.2529 84.6696 112.2465
-v -243.0753 84.6696 112.2465
-v -243.0753 84.6696 -19.2197
-v -156.2529 114.6696 -19.2197
-v -243.0753 114.6696 -19.2197
-v -243.0753 114.6696 112.2465
-v -156.2529 114.6696 112.2465
-# 8 vertices
-
-vn 0.0000 -1.0000 -0.0000
-vn 0.0000 1.0000 -0.0000
-vn 0.0000 0.0000 1.0000
-vn 1.0000 0.0000 -0.0000
-vn 0.0000 0.0000 -1.0000
-vn -1.0000 0.0000 -0.0000
-# 6 vertex normals
-
-vt 0.5239 0.3494 0.0000
-vt 0.0100 0.3494 0.0000
-vt 0.0100 0.0100 0.0000
-vt 0.5239 0.0100 0.0000
-vt 0.0100 0.7110 0.0000
-vt 0.0100 0.3716 0.0000
-vt 0.5239 0.3716 0.0000
-vt 0.5239 0.7110 0.0000
-vt 0.8855 0.4889 0.0000
-vt 0.5461 0.4889 0.0000
-vt 0.5461 0.3716 0.0000
-vt 0.8855 0.3716 0.0000
-vt 0.5239 0.8505 0.0000
-vt 0.0100 0.8505 0.0000
-vt 0.0100 0.7332 0.0000
-vt 0.5239 0.7332 0.0000
-vt 0.8855 0.1273 0.0000
-vt 0.5461 0.1273 0.0000
-vt 0.5461 0.0100 0.0000
-vt 0.8855 0.0100 0.0000
-vt 0.5239 0.9900 0.0000
-vt 0.0100 0.9900 0.0000
-vt 0.0100 0.8727 0.0000
-vt 0.5239 0.8727 0.0000
-# 24 texture coords
-
-g fangzi4_4
-usemtl Material__2569
-s 2
-f 601/1771/10 602/1772/10 603/1773/10 604/1774/10
-s 4
-f 605/1775/11 606/1776/11 607/1777/11 608/1778/11
-s 8
-f 608/1779/12 607/1780/12 603/1781/12 602/1782/12
-s 16
-f 605/1783/13 608/1784/13 602/1785/13 601/1786/13
-s 32
-f 606/1787/14 605/1788/14 601/1789/14 604/1790/14
-s 64
-f 607/1791/15 606/1792/15 604/1793/15 603/1794/15
-# 6 polygons
-
-#
-# object fangzi4_3
-#
-
-v -237.6845 -114.6696 44.2269
-v -237.6845 -114.6696 -123.3472
-v -221.7078 -114.6696 -123.3472
-v -237.6845 -114.6695 67.0635
-v -237.6845 -114.6696 100.7195
-v -100.9245 -114.6696 -123.3472
-v 235.1561 -114.6696 -123.3472
-v 235.1561 -114.6696 -45.4411
-v 235.1561 -114.6696 44.0551
-v 235.1561 -114.6696 100.7195
-v -237.6845 65.3304 100.7195
-v 235.1561 65.3304 100.7195
-v 235.1561 65.3304 44.0551
-v 235.1561 65.3304 -45.4411
-v 235.1561 65.3304 -123.3472
-v -100.9245 65.3304 -123.3472
-v -221.7078 65.3304 -123.3472
-v -237.6845 65.3304 67.0634
-v -237.6845 65.3304 -123.3472
-v -237.6845 65.3304 44.2269
-v 235.1561 -48.2532 44.0551
-v 235.1561 -114.5008 44.0551
-v -100.9245 55.4677 -123.3472
-v -100.9245 33.5057 -123.3472
-v -100.9245 9.1933 -123.3472
-v -100.9245 -12.7687 -123.3472
-v -100.9245 -37.4116 -123.3472
-v -100.9245 -59.3653 -123.3472
-v -100.9245 -70.7291 -123.3472
-v -100.9245 -114.3707 -123.3472
-v -237.6845 54.2127 44.2269
-v -237.6845 31.7127 44.2269
-v -237.6845 7.4938 44.2269
-v -237.6845 -15.0062 44.2269
-v -237.6845 -38.8739 44.2269
-v -237.6845 -61.3739 44.2269
-v -221.7078 -114.3707 -123.3472
-v -221.7078 55.4677 -123.3472
-v -221.7078 33.5057 -123.3472
-v -221.7078 9.1933 -123.3472
-v -221.7078 -12.7687 -123.3472
-v -221.7078 -37.4116 -123.3472
-v -221.7078 -59.3653 -123.3472
-v -221.7078 -70.7291 -123.3472
-v -221.7078 9.1933 -120.8944
-v -100.9245 9.1933 -120.8944
-v -100.9245 -12.7687 -120.8944
-v -221.7078 -12.7687 -120.8944
-v -221.7078 -70.7291 -120.8944
-v -100.9245 -70.7291 -120.8944
-v -100.9245 -114.3707 -120.8944
-v -221.7078 -114.3707 -120.8944
-v -221.7078 -37.4116 -120.8944
-v -100.9245 -37.4116 -120.8944
-v -100.9245 -59.3653 -120.8944
-v -221.7078 -59.3653 -120.8944
-v -221.7078 55.4677 -120.8944
-v -100.9245 55.4677 -120.8944
-v -100.9245 33.5057 -120.8944
-v -221.7078 33.5057 -120.8944
-v -237.6845 -61.3739 67.0635
-v -237.6845 54.2127 67.0634
-v -237.6845 31.7127 67.0634
-v -237.6845 7.4938 67.0635
-v -237.6845 -15.0062 67.0635
-v -237.6845 -38.8738 67.0635
-v -235.2317 7.4938 67.0635
-v -235.2317 7.4938 44.2269
-v -235.2317 -15.0062 44.2269
-v -235.2317 -15.0062 67.0635
-v -235.2317 -38.8738 67.0635
-v -235.2317 -38.8739 44.2269
-v -235.2317 -61.3739 44.2269
-v -235.2317 -61.3739 67.0635
-v -235.2317 54.2127 67.0634
-v -235.2317 54.2127 44.2269
-v -235.2317 31.7127 44.2269
-v -235.2317 31.7127 67.0634
-v 235.1561 -48.2532 -45.4411
-v 235.1561 -114.5008 -45.4411
-v 230.6561 -48.2532 -45.4411
-v 230.6561 -48.2532 44.0551
-v 230.6561 -114.5008 44.0551
-v 230.6561 -114.5008 -45.4411
-# 84 vertices
-
-vn 0.0000 -1.0000 0.0000
-vn 0.0000 -1.0000 -0.0000
-vn -0.0000 -1.0000 0.0000
-vn -0.0000 -1.0000 -0.0000
-vn 0.0000 1.0000 -0.0000
-vn 0.0000 0.0000 1.0000
-vn 1.0000 0.0000 -0.0000
-vn -0.0000 0.0000 -1.0000
-vn 0.0000 -0.0000 -1.0000
-vn 0.0000 0.0000 -1.0000
-vn -1.0000 0.0000 -0.0000
-vn 0.0000 1.0000 0.0000
-vn 0.0000 -0.0000 1.0000
-# 13 vertex normals
-
-vt 0.3493 0.4448 0.0000
-vt 0.5381 0.4448 0.0000
-vt 0.5381 0.4628 0.0000
-vt 0.3235 0.4448 0.0000
-vt 0.2856 0.4448 0.0000
-vt 0.5381 0.5989 0.0000
-vt 0.5381 0.9776 0.0000
-vt 0.4503 0.9776 0.0000
-vt 0.3495 0.9776 0.0000
-vt 0.2856 0.9776 0.0000
-vt 0.2625 0.4448 0.0000
-vt 0.2625 0.9776 0.0000
-vt 0.1986 0.9776 0.0000
-vt 0.0978 0.9776 0.0000
-vt 0.0100 0.9776 0.0000
-vt 0.0100 0.5989 0.0000
-vt 0.0100 0.4628 0.0000
-vt 0.2246 0.4448 0.0000
-vt 0.0100 0.4448 0.0000
-vt 0.1988 0.4448 0.0000
-vt 0.7640 0.4448 0.0000
-vt 0.7640 0.9776 0.0000
-vt 0.5612 0.9776 0.0000
-vt 0.5612 0.4448 0.0000
-vt 0.4136 0.2331 0.0000
-vt 0.2856 0.2331 0.0000
-vt 0.2856 0.1692 0.0000
-vt 0.4882 0.2331 0.0000
-vt 0.4884 0.2331 0.0000
-vt 0.4884 0.1692 0.0000
-vt 0.7983 0.8235 0.0000
-vt 0.7872 0.8235 0.0000
-vt 0.7872 0.4448 0.0000
-vt 0.8230 0.8235 0.0000
-vt 0.8504 0.8235 0.0000
-vt 0.8752 0.8235 0.0000
-vt 0.9029 0.8235 0.0000
-vt 0.9277 0.8235 0.0000
-vt 0.9405 0.8235 0.0000
-vt 0.9897 0.8235 0.0000
-vt 0.9900 0.8235 0.0000
-vt 0.9900 0.4448 0.0000
-vt 0.0225 0.3581 0.0000
-vt 0.0100 0.3581 0.0000
-vt 0.0100 0.1692 0.0000
-vt 0.0479 0.3581 0.0000
-vt 0.0752 0.3581 0.0000
-vt 0.1005 0.3581 0.0000
-vt 0.1274 0.3581 0.0000
-vt 0.1528 0.3581 0.0000
-vt 0.2128 0.3581 0.0000
-vt 0.2128 0.1692 0.0000
-vt 0.9900 0.9596 0.0000
-vt 0.9897 0.9596 0.0000
-vt 0.9900 0.9776 0.0000
-vt 0.7872 0.9776 0.0000
-vt 0.7872 0.9596 0.0000
-vt 0.7983 0.9596 0.0000
-vt 0.8230 0.9596 0.0000
-vt 0.8504 0.9596 0.0000
-vt 0.8752 0.9596 0.0000
-vt 0.9029 0.9596 0.0000
-vt 0.9277 0.9596 0.0000
-vt 0.9405 0.9596 0.0000
-vt 0.5742 0.2213 0.0000
-vt 0.7103 0.2213 0.0000
-vt 0.7103 0.2461 0.0000
-vt 0.5742 0.2461 0.0000
-vt 0.0298 0.0585 0.0000
-vt 0.1659 0.0585 0.0000
-vt 0.1659 0.1076 0.0000
-vt 0.0298 0.1076 0.0000
-vt 0.5742 0.2491 0.0000
-vt 0.7103 0.2491 0.0000
-vt 0.7103 0.2738 0.0000
-vt 0.5742 0.2738 0.0000
-vt 0.5742 0.1936 0.0000
-vt 0.7103 0.1936 0.0000
-vt 0.7103 0.2183 0.0000
-vt 0.5742 0.2183 0.0000
-vt 0.2884 0.0100 0.0000
-vt 0.2884 0.1461 0.0000
-vt 0.2856 0.1461 0.0000
-vt 0.2856 0.0100 0.0000
-vt 0.6157 0.3970 0.0000
-vt 0.6157 0.4217 0.0000
-vt 0.6130 0.4217 0.0000
-vt 0.6130 0.3970 0.0000
-vt 0.5116 0.4217 0.0000
-vt 0.5116 0.2856 0.0000
-vt 0.5143 0.2856 0.0000
-vt 0.5143 0.4217 0.0000
-vt 0.8466 0.4217 0.0000
-vt 0.8466 0.3970 0.0000
-vt 0.8494 0.3970 0.0000
-vt 0.8494 0.4217 0.0000
-vt 0.7899 0.2856 0.0000
-vt 0.7899 0.4217 0.0000
-vt 0.7872 0.4217 0.0000
-vt 0.7872 0.2856 0.0000
-vt 0.4440 0.2421 0.0000
-vt 0.4440 0.2913 0.0000
-vt 0.4412 0.2913 0.0000
-vt 0.4412 0.2421 0.0000
-vt 0.2360 0.4217 0.0000
-vt 0.2360 0.2856 0.0000
-vt 0.2387 0.2856 0.0000
-vt 0.2387 0.4217 0.0000
-vt 0.4517 0.2913 0.0000
-vt 0.4517 0.2421 0.0000
-vt 0.4545 0.2421 0.0000
-vt 0.4545 0.2913 0.0000
-vt 0.5640 0.2856 0.0000
-vt 0.5640 0.4217 0.0000
-vt 0.5612 0.4217 0.0000
-vt 0.5612 0.2856 0.0000
-vt 0.0722 0.1214 0.0000
-vt 0.0722 0.1461 0.0000
-vt 0.0695 0.1461 0.0000
-vt 0.0695 0.1214 0.0000
-vt 0.5612 0.2625 0.0000
-vt 0.5612 0.1264 0.0000
-vt 0.5640 0.1264 0.0000
-vt 0.5640 0.2625 0.0000
-vt 0.8131 0.3655 0.0000
-vt 0.8131 0.3408 0.0000
-vt 0.8158 0.3408 0.0000
-vt 0.8158 0.3655 0.0000
-vt 0.5899 0.2856 0.0000
-vt 0.5899 0.4217 0.0000
-vt 0.5871 0.4217 0.0000
-vt 0.5871 0.2856 0.0000
-vt 0.3143 0.1214 0.0000
-vt 0.3143 0.1461 0.0000
-vt 0.3115 0.1461 0.0000
-vt 0.3115 0.1214 0.0000
-vt 0.0100 0.1461 0.0000
-vt 0.0100 0.0100 0.0000
-vt 0.0128 0.0100 0.0000
-vt 0.0128 0.1461 0.0000
-vt 0.0359 0.1461 0.0000
-vt 0.0359 0.1214 0.0000
-vt 0.0386 0.1214 0.0000
-vt 0.0386 0.1461 0.0000
-vt 0.2128 0.3838 0.0000
-vt 0.1528 0.3838 0.0000
-vt 0.2128 0.4217 0.0000
-vt 0.0100 0.4217 0.0000
-vt 0.0100 0.3838 0.0000
-vt 0.0225 0.3838 0.0000
-vt 0.0479 0.3838 0.0000
-vt 0.0752 0.3838 0.0000
-vt 0.1005 0.3838 0.0000
-vt 0.1274 0.3838 0.0000
-vt 0.6039 0.3560 0.0000
-vt 0.6297 0.3560 0.0000
-vt 0.6297 0.3814 0.0000
-vt 0.6039 0.3814 0.0000
-vt 0.6039 0.3293 0.0000
-vt 0.6297 0.3293 0.0000
-vt 0.6297 0.3547 0.0000
-vt 0.6039 0.3547 0.0000
-vt 0.6310 0.3293 0.0000
-vt 0.6567 0.3293 0.0000
-vt 0.6567 0.3547 0.0000
-vt 0.6310 0.3547 0.0000
-vt 0.8158 0.3964 0.0000
-vt 0.8158 0.4217 0.0000
-vt 0.8131 0.4217 0.0000
-vt 0.8131 0.3964 0.0000
-vt 0.9184 0.8340 0.0000
-vt 0.9184 0.8597 0.0000
-vt 0.9157 0.8597 0.0000
-vt 0.9157 0.8340 0.0000
-vt 0.9556 0.8928 0.0000
-vt 0.9556 0.8674 0.0000
-vt 0.9583 0.8674 0.0000
-vt 0.9583 0.8928 0.0000
-vt 0.8658 0.8340 0.0000
-vt 0.8658 0.8597 0.0000
-vt 0.8630 0.8597 0.0000
-vt 0.8630 0.8340 0.0000
-vt 0.8658 0.9009 0.0000
-vt 0.8658 0.9262 0.0000
-vt 0.8630 0.9262 0.0000
-vt 0.8630 0.9009 0.0000
-vt 0.8658 0.8674 0.0000
-vt 0.8658 0.8932 0.0000
-vt 0.8630 0.8932 0.0000
-vt 0.8630 0.8674 0.0000
-vt 0.9157 0.9262 0.0000
-vt 0.9157 0.9009 0.0000
-vt 0.9184 0.9009 0.0000
-vt 0.9184 0.9262 0.0000
-vt 0.9688 0.8340 0.0000
-vt 0.9688 0.8597 0.0000
-vt 0.9660 0.8597 0.0000
-vt 0.9660 0.8340 0.0000
-vt 0.9583 0.8340 0.0000
-vt 0.9583 0.8594 0.0000
-vt 0.9556 0.8594 0.0000
-vt 0.9556 0.8340 0.0000
-vt 0.9184 0.8674 0.0000
-vt 0.9184 0.8932 0.0000
-vt 0.9157 0.8932 0.0000
-vt 0.9157 0.8674 0.0000
-vt 0.9660 0.9262 0.0000
-vt 0.9660 0.9009 0.0000
-vt 0.9688 0.9009 0.0000
-vt 0.9688 0.9262 0.0000
-vt 0.9688 0.8674 0.0000
-vt 0.9688 0.8932 0.0000
-vt 0.9660 0.8932 0.0000
-vt 0.9660 0.8674 0.0000
-vt 0.4884 0.4217 0.0000
-vt 0.2856 0.4217 0.0000
-vt 0.2856 0.3339 0.0000
-vt 0.4136 0.3339 0.0000
-vt 0.4882 0.3339 0.0000
-vt 0.4884 0.3339 0.0000
-vt 0.3070 0.0330 0.0000
-vt 0.4078 0.0330 0.0000
-vt 0.4078 0.1076 0.0000
-vt 0.3070 0.1076 0.0000
-vt 0.8102 0.9349 0.0000
-vt 0.8102 0.8340 0.0000
-vt 0.8153 0.8340 0.0000
-vt 0.8153 0.9349 0.0000
-vt 0.4800 0.2421 0.0000
-vt 0.4800 0.3167 0.0000
-vt 0.4749 0.3167 0.0000
-vt 0.4749 0.2421 0.0000
-vt 0.9765 0.9349 0.0000
-vt 0.9765 0.8340 0.0000
-vt 0.9816 0.8340 0.0000
-vt 0.9816 0.9349 0.0000
-vt 0.4622 0.3167 0.0000
-vt 0.4622 0.2421 0.0000
-vt 0.4672 0.2421 0.0000
-vt 0.4672 0.3167 0.0000
-# 240 texture coords
-
-g fangzi4_3
-usemtl Material__2593
-s 2
-f 609/1795/16 610/1796/17 611/1797/18 612/1798/19
-f 613/1799/19 612/1798/19 611/1797/18 614/1800/17
-f 613/1799/19 614/1800/17 615/1801/17 616/1802/17
-f 613/1799/19 616/1802/17 617/1803/17 618/1804/17
-s 4
-f 619/1805/20 620/1806/20 621/1807/20 622/1808/20
-f 619/1805/20 622/1808/20 623/1809/20 624/1810/20
-f 619/1805/20 624/1810/20 625/1811/20 626/1812/20
-f 625/1811/20 627/1813/20 628/1814/20 626/1812/20
-s 8
-f 613/1815/21 618/1816/21 620/1817/21 619/1818/21
-s 16
-f 629/1819/22 621/1820/22 620/1821/22 630/1822/22
-f 617/1823/22 630/1822/22 620/1821/22 618/1824/22
-s 32
-f 631/1825/23 624/1826/23 623/1827/23 632/1828/23
-f 633/1829/23 632/1828/23 623/1827/23 634/1830/23
-f 635/1831/24 634/1830/23 623/1827/23 636/1832/23
-f 637/1833/23 636/1832/23 623/1827/23 638/1834/23
-f 614/1835/25 638/1834/23 623/1827/23 615/1836/25
-s 64
-f 639/1837/26 628/1838/26 627/1839/26 640/1840/26
-f 641/1841/26 640/1840/26 627/1839/26 642/1842/26
-f 643/1843/26 642/1842/26 627/1839/26 644/1844/26
-f 609/1845/26 644/1844/26 627/1839/26 610/1846/26
-s 32
-f 611/1847/25 645/1848/23 638/1834/23 614/1835/25
-f 610/1849/25 627/1850/25 625/1851/25 646/1852/25
-f 610/1849/25 646/1852/25 647/1853/23 648/1854/25
-f 610/1849/25 648/1854/25 649/1855/25 650/1856/24
-f 610/1849/25 650/1856/24 651/1857/25 652/1858/23
-f 610/1849/25 652/1858/23 645/1848/23 611/1847/25
-f 625/1851/25 624/1826/23 631/1825/23 646/1852/25
-f 649/1855/25 634/1830/23 635/1831/24 650/1856/24
-f 647/1853/23 632/1828/23 633/1829/23 648/1854/25
-f 653/1859/25 654/1860/25 655/1861/25 656/1862/25
-f 651/1857/25 636/1832/23 637/1833/23 652/1858/23
-f 657/1863/25 658/1864/25 659/1865/25 660/1866/25
-f 661/1867/24 662/1868/24 663/1869/24 664/1870/24
-f 665/1871/25 666/1872/25 667/1873/25 668/1874/25
-s off
-f 648/1875/17 633/1876/17 654/1877/17 653/1878/17
-f 633/1879/26 634/1880/26 655/1881/26 654/1882/26
-f 634/1883/20 649/1884/20 656/1885/20 655/1886/20
-f 649/1887/22 648/1888/22 653/1889/22 656/1890/22
-f 652/1891/17 637/1892/17 658/1893/17 657/1894/17
-f 637/1895/26 638/1896/26 659/1897/26 658/1898/26
-f 638/1899/27 645/1900/27 660/1901/27 659/1902/27
-f 645/1903/22 652/1904/22 657/1905/22 660/1906/22
-f 650/1907/17 635/1908/17 662/1909/17 661/1910/17
-f 635/1911/26 636/1912/26 663/1913/26 662/1914/26
-f 636/1915/20 651/1916/20 664/1917/20 663/1918/20
-f 651/1919/22 650/1920/22 661/1921/22 664/1922/22
-f 646/1923/17 631/1924/17 666/1925/17 665/1926/17
-f 631/1927/26 632/1928/26 667/1929/26 666/1930/26
-f 632/1931/20 647/1932/20 668/1933/20 667/1934/20
-f 647/1935/22 646/1936/22 665/1937/22 668/1938/22
-s 64
-f 612/1939/26 669/1940/26 644/1844/26 609/1845/26
-f 613/1941/26 619/1942/26 626/1943/26 670/1944/26
-f 613/1941/26 670/1944/26 671/1945/26 672/1946/26
-f 613/1941/26 672/1946/26 673/1947/26 674/1948/26
-f 613/1941/26 674/1948/26 669/1940/26 612/1939/26
-f 675/1949/26 676/1950/26 677/1951/26 678/1952/26
-f 679/1953/26 680/1954/26 681/1955/26 682/1956/26
-f 683/1957/26 684/1958/26 685/1959/26 686/1960/26
-f 671/1945/26 640/1840/26 641/1841/26 672/1946/26
-f 626/1943/26 628/1838/26 639/1837/26 670/1944/26
-f 673/1947/26 642/1842/26 643/1843/26 674/1948/26
-s off
-f 641/1961/21 642/1962/21 677/1963/21 676/1964/21
-f 642/1965/20 673/1966/20 678/1967/20 677/1968/20
-f 673/1969/25 672/1970/25 675/1971/25 678/1972/25
-f 672/1973/17 641/1974/17 676/1975/17 675/1976/17
-f 643/1977/21 644/1978/21 681/1979/21 680/1980/21
-f 644/1981/20 669/1982/20 682/1983/20 681/1984/20
-f 669/1985/25 674/1986/25 679/1987/25 682/1988/25
-f 674/1989/16 643/1990/16 680/1991/16 679/1992/16
-f 639/1993/28 640/1994/28 685/1995/28 684/1996/28
-f 640/1997/20 671/1998/20 686/1999/20 685/2000/20
-f 671/2001/25 670/2002/25 683/2003/25 686/2004/25
-f 670/2005/17 639/2006/17 684/2007/17 683/2008/17
-s 16
-f 615/2009/22 623/2010/22 622/2011/22 687/2012/22
-f 615/2009/22 687/2012/22 688/2013/22 616/2014/22
-f 616/2014/22 688/2013/22 630/1822/22 617/1823/22
-f 622/2011/22 621/1820/22 629/1819/22 687/2012/22
-f 689/2015/22 690/2016/22 691/2017/22 692/2018/22
-s off
-f 687/2019/16 629/2020/16 690/2021/16 689/2022/16
-f 629/2023/24 630/2024/24 691/2025/24 690/2026/24
-f 630/2027/20 688/2028/20 692/2029/20 691/2030/20
-f 688/2031/21 687/2032/21 689/2033/21 692/2034/21
-# 82 polygons
-
-#
-# object fangzi4_1
-#
-
-v 244.9100 84.5307 156.1304
-v 244.9100 84.5307 -156.1304
-v -244.9101 84.5307 -156.1304
-v -244.9101 84.5307 156.1304
-v -250.0000 -114.6693 161.2202
-v -250.0000 -114.6693 125.6544
-v -236.3500 -114.6693 125.6544
-v 236.4906 -114.6693 125.6544
-v 249.9999 -114.6693 125.6544
-v 249.9999 -114.6693 161.2202
-v 249.9999 95.3307 161.2203
-v -250.0000 95.3307 161.2203
-v -250.0001 65.3307 161.2203
-v 249.9999 65.3307 161.2203
-v -250.0000 95.3307 -161.2203
-v -250.0000 65.3307 -161.2203
-v -250.0000 65.3307 -53.3294
-v -250.0001 65.3307 125.6545
-v 249.9999 95.3307 -161.2203
-v 249.9999 65.3307 -161.2203
-v 236.4906 65.3307 -161.2203
-v -236.3500 65.3307 -161.2203
-v 249.9999 65.3307 125.6545
-v 249.9999 65.3307 -53.3294
-v -236.3500 65.3307 -53.3294
-v -236.3500 65.3307 125.6545
-v 236.4906 65.3307 -53.3294
-v 236.4906 65.3307 125.6545
-v 250.0001 -114.6693 -161.2203
-v 250.0001 -114.6693 -53.3294
-v 236.4908 -114.6693 -53.3294
-v 236.4908 -114.6693 -161.2203
-v -249.9996 -114.6693 -161.2203
-v -236.3496 -114.6693 -161.2203
-v -236.3496 -114.6693 -53.3294
-v -249.9996 -114.6693 -53.3294
-v -250.0001 55.7282 161.2203
-v -172.1119 55.7282 161.2203
-v -47.1119 55.7283 161.2203
-v 58.8183 55.7283 161.2203
-v 182.9904 55.7283 161.2203
-v 249.9999 55.7283 161.2203
-v -250.0000 -59.3841 161.2202
-v -250.0000 -36.8841 161.2202
-v -250.0000 -13.0779 161.2202
-v -250.0000 9.4221 161.2202
-v -250.0001 33.2282 161.2203
-v 249.9999 33.2283 161.2203
-v 249.9999 9.4222 161.2202
-v 249.9999 -13.0778 161.2202
-v 249.9999 -36.8840 161.2202
-v 250.0000 -59.3840 161.2202
-v 244.9100 95.3307 -156.1304
-v 244.9100 95.3307 156.1304
-v -244.9101 95.3307 -156.1304
-v -244.9101 95.3307 156.1304
-v 182.9905 -36.8840 161.2202
-v 58.8183 -36.8841 161.2202
-v -47.1119 -36.8841 161.2202
-v -172.1119 -36.8841 161.2202
-v 182.9904 -13.0778 161.2202
-v 58.8184 -13.0779 161.2202
-v -47.1119 -13.0779 161.2202
-v -172.1119 -13.0779 161.2202
-v 182.9904 9.4221 161.2202
-v 58.8183 9.4221 161.2202
-v -47.1119 9.4221 161.2202
-v -172.1119 9.4221 161.2202
-v 182.9904 33.2283 161.2203
-v 58.8184 33.2283 161.2203
-v -47.1119 33.2283 161.2203
-v -172.1119 33.2283 161.2203
-v 182.9905 -59.3840 161.2203
-v 58.8183 -59.3840 161.2203
-v -47.1119 -59.3840 161.2202
-v -172.1119 -59.3841 161.2202
-v -47.1119 33.2283 156.1443
-v -47.1119 55.7283 156.1443
-v -172.1119 55.7283 156.1443
-v -172.1119 33.2283 156.1443
-v 182.9904 33.2283 156.1443
-v 182.9904 55.7283 156.1443
-v 58.8183 55.7283 156.1443
-v 58.8184 33.2283 156.1443
-v -47.1119 -13.0779 156.1443
-v -47.1119 9.4221 156.1443
-v -172.1119 9.4221 156.1443
-v -172.1119 -13.0779 156.1443
-v 182.9904 -13.0778 156.1443
-v 182.9904 9.4221 156.1443
-v 58.8183 9.4221 156.1443
-v 58.8184 -13.0779 156.1443
-v -47.1119 -59.3840 156.1443
-v -47.1119 -36.8841 156.1443
-v -172.1119 -36.8841 156.1443
-v -172.1119 -59.3841 156.1443
-v 182.9905 -59.3840 156.1443
-v 182.9905 -36.8840 156.1443
-v 58.8183 -36.8841 156.1443
-v 58.8183 -59.3840 156.1443
-# 100 vertices
-
-vn -0.0000 1.0000 -0.0000
-vn 0.0000 -1.0000 -0.0000
-vn 0.0000 -1.0000 0.0000
-vn 0.0000 0.0000 1.0000
-vn -1.0000 0.0000 -0.0000
-vn -1.0000 -0.0000 -0.0000
-vn 0.0000 0.0000 -1.0000
-vn 1.0000 0.0000 0.0000
-vn 1.0000 -0.0000 -0.0000
-vn 1.0000 -0.0000 0.0000
-vn 1.0000 0.0000 -0.0000
-vn -1.0000 0.0000 0.0000
-vn -1.0000 -0.0000 0.0000
-vn -0.0000 0.0000 -1.0000
-vn 0.0000 -0.0000 1.0000
-vn -0.0000 -0.0000 1.0000
-vn -0.0000 0.0000 1.0000
-vn 0.0000 1.0000 -0.0000
-# 18 vertex normals
-
-vt 0.0100 0.9900 0.0000
-vt 0.0100 0.7464 0.0000
-vt 0.3922 0.7464 0.0000
-vt 0.3922 0.9900 0.0000
-vt 0.4001 0.5088 0.0000
-vt 0.4001 0.5365 0.0000
-vt 0.3895 0.5365 0.0000
-vt 0.0205 0.5365 0.0000
-vt 0.0100 0.5365 0.0000
-vt 0.0100 0.5088 0.0000
-vt 0.4215 0.0398 0.0000
-vt 0.8116 0.0398 0.0000
-vt 0.8116 0.0632 0.0000
-vt 0.4215 0.0632 0.0000
-vt 0.4453 0.4856 0.0000
-vt 0.6969 0.4856 0.0000
-vt 0.6969 0.5090 0.0000
-vt 0.6127 0.5090 0.0000
-vt 0.4730 0.5090 0.0000
-vt 0.4453 0.5090 0.0000
-vt 0.0100 0.5579 0.0000
-vt 0.4001 0.5579 0.0000
-vt 0.4001 0.5813 0.0000
-vt 0.3896 0.5813 0.0000
-vt 0.0207 0.5813 0.0000
-vt 0.0100 0.5813 0.0000
-vt 0.1485 0.0398 0.0000
-vt 0.4001 0.0398 0.0000
-vt 0.4001 0.0632 0.0000
-vt 0.3724 0.0632 0.0000
-vt 0.2327 0.0632 0.0000
-vt 0.1485 0.0632 0.0000
-vt 0.8116 0.3646 0.0000
-vt 0.8009 0.3646 0.0000
-vt 0.8009 0.2250 0.0000
-vt 0.8116 0.2250 0.0000
-vt 0.4320 0.3646 0.0000
-vt 0.4320 0.2250 0.0000
-vt 0.4320 0.4488 0.0000
-vt 0.8009 0.4488 0.0000
-vt 0.2417 0.0705 0.0000
-vt 0.3259 0.0705 0.0000
-vt 0.3259 0.0811 0.0000
-vt 0.2417 0.0811 0.0000
-vt 0.3167 0.1013 0.0000
-vt 0.3273 0.1013 0.0000
-vt 0.3273 0.1855 0.0000
-vt 0.3167 0.1855 0.0000
-vt 0.4215 0.2250 0.0000
-vt 0.4215 0.3646 0.0000
-vt 0.8116 0.0707 0.0000
-vt 0.7508 0.0707 0.0000
-vt 0.6533 0.0707 0.0000
-vt 0.5706 0.0707 0.0000
-vt 0.4737 0.0707 0.0000
-vt 0.4215 0.0707 0.0000
-vt 0.4730 0.6495 0.0000
-vt 0.4453 0.5165 0.0000
-vt 0.4453 0.6495 0.0000
-vt 0.4453 0.6064 0.0000
-vt 0.4453 0.5888 0.0000
-vt 0.4453 0.5702 0.0000
-vt 0.4453 0.5527 0.0000
-vt 0.4453 0.5341 0.0000
-vt 0.0100 0.3083 0.0000
-vt 0.0207 0.3083 0.0000
-vt 0.0207 0.4488 0.0000
-vt 0.0100 0.4488 0.0000
-vt 0.3896 0.3083 0.0000
-vt 0.3896 0.4488 0.0000
-vt 0.4001 0.3083 0.0000
-vt 0.4001 0.4488 0.0000
-vt 0.4001 0.0707 0.0000
-vt 0.4001 0.0882 0.0000
-vt 0.4001 0.1068 0.0000
-vt 0.4001 0.1243 0.0000
-vt 0.4001 0.1429 0.0000
-vt 0.4001 0.1605 0.0000
-vt 0.4001 0.2036 0.0000
-vt 0.3724 0.2036 0.0000
-vt 0.2327 0.2036 0.0000
-vt 0.1485 0.2036 0.0000
-vt 0.5857 0.6899 0.0000
-vt 0.5857 0.7004 0.0000
-vt 0.4453 0.7004 0.0000
-vt 0.4453 0.6899 0.0000
-vt 0.7040 0.4856 0.0000
-vt 0.7882 0.4856 0.0000
-vt 0.7882 0.6261 0.0000
-vt 0.7040 0.6261 0.0000
-vt 0.4001 0.7217 0.0000
-vt 0.3896 0.7217 0.0000
-vt 0.0207 0.7217 0.0000
-vt 0.0100 0.7217 0.0000
-vt 0.2219 0.5886 0.0000
-vt 0.2219 0.6728 0.0000
-vt 0.0815 0.6728 0.0000
-vt 0.0815 0.5886 0.0000
-vt 0.5857 0.6721 0.0000
-vt 0.5857 0.6828 0.0000
-vt 0.4453 0.6828 0.0000
-vt 0.4453 0.6721 0.0000
-vt 0.6969 0.6495 0.0000
-vt 0.6127 0.6495 0.0000
-vt 0.4215 0.7217 0.0000
-vt 0.4215 0.4701 0.0000
-vt 0.4254 0.4741 0.0000
-vt 0.4254 0.7177 0.0000
-vt 0.8116 0.4701 0.0000
-vt 0.8076 0.4741 0.0000
-vt 0.8116 0.7217 0.0000
-vt 0.8076 0.7177 0.0000
-vt 0.4453 0.6566 0.0000
-vt 0.6889 0.6566 0.0000
-vt 0.6889 0.6650 0.0000
-vt 0.4453 0.6650 0.0000
-vt 0.0179 0.2786 0.0000
-vt 0.4001 0.2786 0.0000
-vt 0.4001 0.2870 0.0000
-vt 0.0179 0.2870 0.0000
-vt 0.0815 0.6998 0.0000
-vt 0.3251 0.6998 0.0000
-vt 0.3251 0.7082 0.0000
-vt 0.0815 0.7082 0.0000
-vt 0.4294 0.0100 0.0000
-vt 0.8116 0.0100 0.0000
-vt 0.8116 0.0184 0.0000
-vt 0.4294 0.0184 0.0000
-vt 0.4737 0.1429 0.0000
-vt 0.4215 0.1429 0.0000
-vt 0.4215 0.1243 0.0000
-vt 0.5706 0.1429 0.0000
-vt 0.6533 0.1429 0.0000
-vt 0.7508 0.1429 0.0000
-vt 0.8116 0.1429 0.0000
-vt 0.4737 0.1243 0.0000
-vt 0.5706 0.1243 0.0000
-vt 0.6533 0.1243 0.0000
-vt 0.7508 0.1243 0.0000
-vt 0.8116 0.1243 0.0000
-vt 0.4737 0.1068 0.0000
-vt 0.4215 0.1068 0.0000
-vt 0.4215 0.0882 0.0000
-vt 0.5706 0.1068 0.0000
-vt 0.6533 0.1068 0.0000
-vt 0.7508 0.1068 0.0000
-vt 0.8116 0.1068 0.0000
-vt 0.4737 0.0882 0.0000
-vt 0.5706 0.0882 0.0000
-vt 0.6533 0.0882 0.0000
-vt 0.7508 0.0882 0.0000
-vt 0.8116 0.0882 0.0000
-vt 0.8116 0.2036 0.0000
-vt 0.4215 0.2036 0.0000
-vt 0.4215 0.1605 0.0000
-vt 0.4737 0.1605 0.0000
-vt 0.5706 0.1605 0.0000
-vt 0.6533 0.1605 0.0000
-vt 0.7508 0.1605 0.0000
-vt 0.8116 0.1605 0.0000
-vt 0.0601 0.1706 0.0000
-vt 0.0777 0.1706 0.0000
-vt 0.0777 0.2682 0.0000
-vt 0.0601 0.2682 0.0000
-vt 0.1013 0.1713 0.0000
-vt 0.1189 0.1713 0.0000
-vt 0.1189 0.2682 0.0000
-vt 0.1013 0.2682 0.0000
-vt 0.0395 0.1706 0.0000
-vt 0.0571 0.1706 0.0000
-vt 0.0571 0.2682 0.0000
-vt 0.0395 0.2682 0.0000
-vt 0.1219 0.1713 0.0000
-vt 0.1394 0.1713 0.0000
-vt 0.1394 0.2682 0.0000
-vt 0.1219 0.2682 0.0000
-vt 0.0189 0.1706 0.0000
-vt 0.0365 0.1706 0.0000
-vt 0.0365 0.2682 0.0000
-vt 0.0189 0.2682 0.0000
-vt 0.0807 0.1713 0.0000
-vt 0.0983 0.1713 0.0000
-vt 0.0983 0.2682 0.0000
-vt 0.0807 0.2682 0.0000
-vt 0.2417 0.1124 0.0000
-vt 0.2592 0.1124 0.0000
-vt 0.2592 0.1163 0.0000
-vt 0.2417 0.1163 0.0000
-vt 0.3384 0.1013 0.0000
-vt 0.3384 0.1988 0.0000
-vt 0.3345 0.1988 0.0000
-vt 0.3345 0.1013 0.0000
-vt 0.3505 0.0745 0.0000
-vt 0.3330 0.0745 0.0000
-vt 0.3330 0.0705 0.0000
-vt 0.3505 0.0705 0.0000
-vt 0.3392 0.0921 0.0000
-vt 0.2417 0.0921 0.0000
-vt 0.2417 0.0882 0.0000
-vt 0.3392 0.0882 0.0000
-vt 0.2417 0.1620 0.0000
-vt 0.2592 0.1620 0.0000
-vt 0.2592 0.1659 0.0000
-vt 0.2417 0.1659 0.0000
-vt 0.2330 0.5886 0.0000
-vt 0.2330 0.6855 0.0000
-vt 0.2291 0.6855 0.0000
-vt 0.2291 0.5886 0.0000
-vt 0.2592 0.1053 0.0000
-vt 0.2417 0.1053 0.0000
-vt 0.2417 0.1013 0.0000
-vt 0.2592 0.1013 0.0000
-vt 0.3397 0.6855 0.0000
-vt 0.3397 0.5886 0.0000
-vt 0.3437 0.5886 0.0000
-vt 0.3437 0.6855 0.0000
-vt 0.2663 0.1620 0.0000
-vt 0.2839 0.1620 0.0000
-vt 0.2839 0.1659 0.0000
-vt 0.2663 0.1659 0.0000
-vt 0.3495 0.1013 0.0000
-vt 0.3495 0.1988 0.0000
-vt 0.3455 0.1988 0.0000
-vt 0.3455 0.1013 0.0000
-vt 0.2839 0.1053 0.0000
-vt 0.2663 0.1053 0.0000
-vt 0.2663 0.1013 0.0000
-vt 0.2839 0.1013 0.0000
-vt 0.3566 0.1988 0.0000
-vt 0.3566 0.1013 0.0000
-vt 0.3606 0.1013 0.0000
-vt 0.3606 0.1988 0.0000
-vt 0.2663 0.1124 0.0000
-vt 0.2839 0.1124 0.0000
-vt 0.2839 0.1163 0.0000
-vt 0.2663 0.1163 0.0000
-vt 0.5187 0.5164 0.0000
-vt 0.5187 0.6133 0.0000
-vt 0.5147 0.6133 0.0000
-vt 0.5147 0.5164 0.0000
-vt 0.2839 0.1548 0.0000
-vt 0.2663 0.1548 0.0000
-vt 0.2663 0.1509 0.0000
-vt 0.2839 0.1509 0.0000
-vt 0.0409 0.6855 0.0000
-vt 0.0409 0.5886 0.0000
-vt 0.0449 0.5886 0.0000
-vt 0.0449 0.6855 0.0000
-vt 0.2910 0.1013 0.0000
-vt 0.3086 0.1013 0.0000
-vt 0.3086 0.1053 0.0000
-vt 0.2910 0.1053 0.0000
-vt 0.4965 0.5164 0.0000
-vt 0.4965 0.6139 0.0000
-vt 0.4926 0.6139 0.0000
-vt 0.4926 0.5164 0.0000
-vt 0.2592 0.1274 0.0000
-vt 0.2417 0.1274 0.0000
-vt 0.2417 0.1235 0.0000
-vt 0.2592 0.1235 0.0000
-vt 0.4815 0.6139 0.0000
-vt 0.4815 0.5164 0.0000
-vt 0.4855 0.5164 0.0000
-vt 0.4855 0.6139 0.0000
-vt 0.2417 0.1509 0.0000
-vt 0.2592 0.1509 0.0000
-vt 0.2592 0.1548 0.0000
-vt 0.2417 0.1548 0.0000
-vt 0.5076 0.5164 0.0000
-vt 0.5076 0.6133 0.0000
-vt 0.5037 0.6133 0.0000
-vt 0.5037 0.5164 0.0000
-vt 0.2592 0.1770 0.0000
-vt 0.2417 0.1770 0.0000
-vt 0.2417 0.1730 0.0000
-vt 0.2592 0.1730 0.0000
-vt 0.0299 0.6855 0.0000
-vt 0.0299 0.5886 0.0000
-vt 0.0338 0.5886 0.0000
-vt 0.0338 0.6855 0.0000
-# 280 texture coords
-
-g fangzi4_1
-usemtl Material__2590
-s 2
-f 693/2035/29 694/2036/29 695/2037/29 696/2038/29
-s 4
-f 697/2039/30 698/2040/30 699/2041/30 700/2042/31
-f 697/2039/30 700/2042/31 701/2043/31 702/2044/30
-s 8
-f 703/2045/32 704/2046/32 705/2047/32 706/2048/32
-s 16
-f 704/2049/33 707/2050/34 708/2051/34 709/2052/34
-f 704/2049/33 709/2052/34 710/2053/33 705/2054/33
-s 32
-f 707/2055/35 711/2056/35 712/2057/35 713/2058/35
-f 707/2055/35 713/2058/35 714/2059/35 708/2060/35
-s 64
-f 711/2061/36 703/2062/37 706/2063/37 715/2064/38
-f 711/2061/36 715/2064/38 716/2065/36 712/2066/39
-s 4
-f 709/2067/31 717/2068/31 718/2069/31 710/2070/31
-f 719/2071/31 720/2072/31 718/2069/31 713/2073/30
-f 713/2073/30 718/2069/31 717/2068/31 714/2074/30
-f 721/2075/30 722/2076/30 723/2077/30 724/2078/30
-f 725/2079/30 726/2080/30 727/2081/30 728/2082/30
-f 715/2083/31 720/2072/31 719/2071/31 716/2084/31
-s off
-f 705/2047/32 729/2085/32 730/2086/32 731/2087/32
-f 705/2047/32 731/2087/32 732/2088/32 733/2089/32
-f 705/2047/32 733/2089/32 734/2090/32 706/2048/32
-f 705/2054/34 710/2053/34 698/2091/34 729/2092/34
-f 698/2091/40 697/2093/40 735/2094/40 736/2095/40
-f 698/2091/41 736/2095/41 737/2096/41 738/2097/41
-f 698/2091/41 738/2097/41 739/2098/41 729/2092/41
-f 710/2099/42 718/2100/42 699/2101/42 698/2102/42
-f 718/2100/35 720/2103/35 700/2104/35 699/2101/35
-f 720/2103/42 715/2105/42 701/2106/42 700/2104/42
-f 715/2064/39 706/2063/39 734/2107/39 740/2108/39
-f 715/2064/36 740/2108/36 741/2109/36 742/2110/36
-f 715/2064/39 742/2110/39 743/2111/39 744/2112/39
-f 715/2064/39 744/2112/39 702/2113/39 701/2114/39
-f 712/2066/39 716/2065/39 722/2115/39 721/2116/39
-f 716/2117/32 719/2118/32 723/2119/32 722/2120/32
-f 719/2121/34 713/2122/34 724/2123/34 723/2124/34
-f 713/2058/35 712/2057/35 721/2125/35 724/2126/35
-f 708/2060/35 714/2059/35 726/2127/35 725/2128/35
-f 714/2129/39 717/2130/39 727/2131/39 726/2132/39
-f 717/2133/32 709/2134/32 728/2135/32 727/2136/32
-f 709/2052/34 708/2051/34 725/2137/34 728/2138/34
-f 703/2139/29 711/2140/29 745/2141/29 746/2142/29
-f 711/2140/29 707/2143/29 747/2144/29 745/2141/29
-f 707/2143/29 704/2145/29 748/2146/29 747/2144/29
-f 704/2145/29 703/2139/29 746/2142/29 748/2146/29
-f 746/2147/34 745/2148/34 694/2149/34 693/2150/34
-f 745/2151/32 747/2152/32 695/2153/32 694/2154/32
-f 747/2155/39 748/2156/39 696/2157/39 695/2158/39
-f 748/2159/35 746/2160/35 693/2161/35 696/2162/35
-f 749/2163/32 743/2164/32 742/2165/32 750/2166/32
-f 751/2167/32 750/2166/32 742/2165/32 752/2168/32
-f 736/2169/32 752/2168/32 742/2165/32 753/2170/32
-f 736/2169/32 753/2170/32 754/2171/32 755/2172/32
-f 736/2169/32 755/2172/32 756/2173/32 737/2174/32
-f 757/2175/43 741/2176/43 740/2177/43 758/2178/43
-f 759/2179/43 758/2178/43 740/2177/43 760/2180/43
-f 738/2181/43 760/2180/43 740/2177/43 761/2182/43
-f 738/2181/43 761/2182/43 762/2183/43 763/2184/43
-f 738/2181/43 763/2184/43 764/2185/43 739/2186/43
-f 697/2187/43 702/2188/43 744/2189/43 765/2190/43
-f 697/2187/44 765/2190/44 766/2191/44 767/2192/44
-f 697/2187/44 767/2192/44 768/2193/44 735/2194/44
-f 739/2186/43 764/2185/43 730/2086/43 729/2085/43
-f 737/2174/32 756/2173/32 760/2180/32 738/2181/32
-f 735/2194/44 768/2193/44 752/2168/44 736/2169/44
-f 762/2183/43 732/2088/43 731/2087/43 763/2184/43
-f 769/2195/43 770/2196/43 771/2197/43 772/2198/43
-f 740/2177/43 734/2090/43 733/2089/43 761/2182/43
-f 773/2199/43 774/2200/43 775/2201/43 776/2202/43
-f 754/2171/32 758/2178/32 759/2179/32 755/2172/32
-f 742/2165/32 741/2176/32 757/2175/32 753/2170/32
-f 777/2203/32 778/2204/32 779/2205/32 780/2206/32
-f 781/2207/32 782/2208/32 783/2209/32 784/2210/32
-f 766/2191/45 750/2166/45 751/2167/45 767/2192/45
-f 744/2189/43 743/2164/43 749/2163/43 765/2190/43
-f 785/2211/32 786/2212/32 787/2213/32 788/2214/32
-f 789/2215/45 790/2216/45 791/2217/45 792/2218/45
-f 763/2219/34 731/2220/34 770/2221/34 769/2222/34
-f 731/2223/30 730/2224/30 771/2225/30 770/2226/30
-f 730/2227/36 764/2228/36 772/2229/36 771/2230/36
-f 764/2231/29 763/2232/29 769/2233/29 772/2234/29
-f 761/2235/34 733/2236/34 774/2237/34 773/2238/34
-f 733/2239/30 732/2240/30 775/2241/30 774/2242/30
-f 732/2243/39 762/2244/39 776/2245/39 775/2246/39
-f 762/2247/29 761/2248/29 773/2249/29 776/2250/29
-f 755/2251/34 759/2252/34 778/2253/34 777/2254/34
-f 759/2255/30 760/2256/30 779/2257/30 778/2258/30
-f 760/2259/37 756/2260/37 780/2261/37 779/2262/37
-f 756/2263/29 755/2264/29 777/2265/29 780/2266/29
-f 753/2267/33 757/2268/33 782/2269/33 781/2270/33
-f 757/2271/30 758/2272/30 783/2273/30 782/2274/30
-f 758/2275/39 754/2276/39 784/2277/39 783/2278/39
-f 754/2279/29 753/2280/29 781/2281/29 784/2282/29
-f 767/2283/34 751/2284/34 786/2285/34 785/2286/34
-f 751/2287/30 752/2288/30 787/2289/30 786/2290/30
-f 752/2291/37 768/2292/37 788/2293/37 787/2294/37
-f 768/2295/29 767/2296/29 785/2297/29 788/2298/29
-f 765/2299/33 749/2300/33 790/2301/33 789/2302/33
-f 749/2303/30 750/2304/30 791/2305/30 790/2306/30
-f 750/2307/39 766/2308/39 792/2309/39 791/2310/39
-f 766/2311/46 765/2312/46 789/2313/46 792/2314/46
-# 98 polygons
-
diff --git a/public/assets/jianzhu/fangzi4-1.jpg b/public/assets/jianzhu/fangzi4-1.jpg
deleted file mode 100644
index 0853e33..0000000
Binary files a/public/assets/jianzhu/fangzi4-1.jpg and /dev/null differ
diff --git a/public/assets/jianzhu/fangzi4-2.jpg b/public/assets/jianzhu/fangzi4-2.jpg
deleted file mode 100644
index a1de8d9..0000000
Binary files a/public/assets/jianzhu/fangzi4-2.jpg and /dev/null differ
diff --git a/public/assets/jianzhu/fangzi4-3.jpg b/public/assets/jianzhu/fangzi4-3.jpg
deleted file mode 100644
index 1698525..0000000
Binary files a/public/assets/jianzhu/fangzi4-3.jpg and /dev/null differ
diff --git a/public/assets/jianzhu/fangzi4-4.jpg b/public/assets/jianzhu/fangzi4-4.jpg
deleted file mode 100644
index 202b11d..0000000
Binary files a/public/assets/jianzhu/fangzi4-4.jpg and /dev/null differ
diff --git a/public/assets/wall/inner-wall11.jpg b/public/assets/wall/inner-wall11.jpg
deleted file mode 100644
index 7a61f1b..0000000
Binary files a/public/assets/wall/inner-wall11.jpg and /dev/null differ
diff --git a/public/assets/wall/inner-wall13.jpg b/public/assets/wall/inner-wall13.jpg
deleted file mode 100644
index 7bee132..0000000
Binary files a/public/assets/wall/inner-wall13.jpg and /dev/null differ
diff --git a/public/assets/wall/outer-wall11.jpg b/public/assets/wall/outer-wall11.jpg
deleted file mode 100644
index fd2fff9..0000000
Binary files a/public/assets/wall/outer-wall11.jpg and /dev/null differ
diff --git a/public/assets/window/window.png b/public/assets/window/window.png
deleted file mode 100644
index 8de6b76..0000000
Binary files a/public/assets/window/window.png and /dev/null differ
diff --git a/public/assets/window/window2.png b/public/assets/window/window2.png
deleted file mode 100644
index 9cc1956..0000000
Binary files a/public/assets/window/window2.png and /dev/null differ
diff --git a/public/vite.svg b/public/vite.svg
deleted file mode 100644
index e7b8dfb..0000000
--- a/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/Common.ts b/src/Common.ts
deleted file mode 100644
index 5665194..0000000
--- a/src/Common.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import * as THREE from "three";
-
-export const loadingManager = new THREE.LoadingManager();
-
-loadingManager.onStart = function (url, itemsLoaded, itemsTotal) {
- console.log(
- "Started loading file: " +
- url +
- ".\nLoaded " +
- itemsLoaded +
- " of " +
- itemsTotal +
- " files."
- );
-};
-
-loadingManager.onLoad = function () {
- console.log("Loading complete!");
-};
-
-loadingManager.onProgress = function (url, itemsLoaded, itemsTotal) {
- console.log(
- "Loading file: " +
- url +
- ".\nLoaded " +
- itemsLoaded +
- " of " +
- itemsTotal +
- " files."
- );
-};
-
-loadingManager.onError = function (url) {
- console.log("There was an error loading " + url);
-};
-
-
-export const textureLoader = new THREE.TextureLoader(loadingManager);
\ No newline at end of file
diff --git a/src/Viewer.ts b/src/Viewer.ts
deleted file mode 100644
index fd5d3df..0000000
--- a/src/Viewer.ts
+++ /dev/null
@@ -1,421 +0,0 @@
-import { Easing, Group, Tween } from "@tweenjs/tween.js";
-import CameraControls from "camera-controls";
-import * as THREE from "three";
-import { RoomEnvironment } from "three/examples/jsm/Addons.js";
-import { createWorld } from "./createWorld";
-import { loadingManager } from "./Common";
-import { Loading } from "./loading/loading";
-
-import { createRack } from "./model/createRack.js";
-
-CameraControls.install({ THREE });
-
-const raycaster = new THREE.Raycaster();
-const mouse = new THREE.Vector2(1, 1);
-
-THREE.Cache.enabled = true;
-
-export class Viewer {
- protected container: HTMLElement;
- public width: number;
- public height: number;
-
- protected clock = new THREE.Clock();
- protected camera?: THREE.PerspectiveCamera;
- protected scene?: THREE.Scene;
- protected renderer?: THREE.WebGLRenderer;
- protected cameraControls?: CameraControls;
-
- private blurMaterial = new THREE.MeshBasicMaterial({
- transparent: true,
- opacity: 0.05,
- color: new THREE.Color(0x000000),
- // depthTest: false,
- });
-
- private isHighlighted = false;
- private rackObject?: THREE.Mesh;
- protected tween = new Group();
-
- constructor(container: HTMLElement) {
- const loading = new Loading();
- loading.hide();
- loadingManager.onProgress = () => {
- loading.show();
- // this.render();
- };
- loadingManager.onLoad = () => {
- loading.hide();
- this.render();
- };
-
- this.container = container;
- const boundRect = this.container.getBoundingClientRect();
- this.width = boundRect.width;
- this.height = boundRect.height;
- this.init();
- this.loadData();
- }
-
- private init() {
- this.initRender();
- this.initScene();
- this.initCamera();
- this.initControls();
- this.initLights();
- this.initEvents();
- this.render();
- this.clock.start();
- this.animate();
- }
-
- protected initRender() {
- this.renderer = new THREE.WebGLRenderer({
- antialias: true,
- logarithmicDepthBuffer: true,
- });
- // renderer.outputColorSpace = THREE.SRGBColorSpace;
- this.renderer.outputColorSpace = THREE.LinearSRGBColorSpace;
- this.renderer.setPixelRatio(window.devicePixelRatio);
- this.renderer.setSize(this.width, this.height);
- // this.renderer.setAnimationLoop(this.animate.bind(this));
- this.container.appendChild(this.renderer.domElement);
- }
-
- protected initCamera() {
- this.camera = new THREE.PerspectiveCamera(
- 60,
- this.width / this.height,
- 1,
- 100000
- );
- this.camera.position.set(-4000, 2500, -4000);
- this.camera.lookAt(0, 0, 0);
-
- this.cameraControls?.saveState();
- }
-
- protected initControls() {
- this.cameraControls = new CameraControls(
- this.camera!,
- this.renderer!.domElement
- );
- this.cameraControls.maxPolarAngle = Math.PI / 2;
- }
-
- protected initScene() {
- if (!this.renderer) {
- return;
- }
- this.scene = new THREE.Scene();
- const pmremGenerator = new THREE.PMREMGenerator(this.renderer);
- this.scene.environment = pmremGenerator.fromScene(
- new RoomEnvironment(),
- 0.01,
- 1,
- 10000
- ).texture;
- this.scene.background = new THREE.Color(0xeeeeee);
-
- // For test
- // const helper = new THREE.GridHelper(10000, 100);
- // helper.position.y = -5;
- // this.scene.add(helper);
- // this.scene.add(new THREE.AxesHelper(100000));
- }
-
- protected initLights() {
- const light1 = new THREE.AmbientLight(0xffffff, 3);
- light1.name = "ambient_light";
- this.scene?.add(light1);
-
- const light2 = new THREE.DirectionalLight(0xffffff, 1);
- light2.position.set(0.5, 1, 0.866).multiplyScalar(300); // ~60º
- light2.name = "main_light";
- this.scene?.add(light2);
- }
-
- render() {
- this.renderer?.render(this.scene!, this.camera!);
- }
-
- animate() {
- const delta = this.clock.getDelta();
- this.tween.update();
- const hasControlsUpdated = this.cameraControls!.update(delta);
- requestAnimationFrame(this.animate.bind(this));
- if (hasControlsUpdated) {
- this.render();
- }
- }
-
- protected initEvents() {
- window.addEventListener("resize", this.handle_resize.bind(this), false);
- this.container.addEventListener(
- "dblclick",
- this.handle_dblclick.bind(this)
- );
-
- let mouseMoved = false;
- this.container.addEventListener("pointerdown", () => {
- mouseMoved = false;
- });
- this.container.addEventListener("pointermove", () => {
- mouseMoved = true;
- });
- this.container.addEventListener("pointerup", (e: MouseEvent) => {
- e.preventDefault();
- const isRightClick = e.button === 2;
- if (!mouseMoved && isRightClick) {
- this.handle_mouseRight();
- }
- });
- }
-
- private handle_resize() {
- const boundRect = this.container.getBoundingClientRect();
- this.width = boundRect.width;
- this.height = boundRect.height;
- this.camera!.aspect = this.width / this.height;
- this.camera!.updateProjectionMatrix();
- this.renderer!.setSize(this.width, this.height);
- this.render();
- }
-
- private handle_mouseRight() {
- if (this.rackObject) {
- const frontDoor = this.rackObject.getObjectByName("rack-front-door")!;
- this.animiteObject(frontDoor);
- const backDoor = this.rackObject.getObjectByName("rack-back-door")!;
- this.animiteObject(backDoor);
- this.rackObject = undefined;
- }
- this.clearHighlight();
- this.cameraControls?.reset(true);
- }
-
- private handle_dblclick(event: MouseEvent) {
- if (this.isHighlighted) return;
- mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
- mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
- raycaster.setFromCamera(mouse, this.camera!);
- const intersects = raycaster.intersectObject(this.scene!, true);
- if (intersects.length > 0) {
- const object = intersects[0].object;
- console.log(object);
- console.log("points:", intersects[0].point.toArray());
- if (this.isRack(object)) {
- this.flyToRack(object.parent!)?.then(() => {
- const frontDoor = object.parent?.getObjectByName("rack-front-door")!;
- this.animiteObject(frontDoor);
- const backDoor = object.parent?.getObjectByName("rack-back-door")!;
- this.animiteObject(backDoor);
- });
- this.rackObject = object.parent as THREE.Mesh;
- // 虚化其他物体
- object.parent!.removeFromParent();
- this.highlightScene();
- this.scene?.add(object.parent!);
- } else {
- if (object.userData.animation) {
- this.animiteObject(object);
- } else {
- this.cameraControls?.moveTo(...intersects[0].point.toArray(), true);
- }
- }
- }
- }
-
- protected flyToRack(rackObject: THREE.Object3D) {
- const box = new THREE.Box3().setFromObject(rackObject);
- const lookAt = box.getCenter(new THREE.Vector3());
- const direction = rackObject
- .getWorldDirection(new THREE.Vector3())
- .normalize();
- const size = box.getSize(new THREE.Vector3());
- const radius = size.length() / 1.5;
- const distance = this.cameraControls?.getDistanceToFitSphere(radius);
- const position = lookAt.clone().add(direction.multiplyScalar(distance!));
-
- // 飞向机柜门正面
- return this.cameraControls?.setLookAt(
- position.x,
- position.y,
- position.z,
- lookAt.x,
- lookAt.y,
- lookAt.z,
- true
- );
- }
-
- protected animiteObject(object: THREE.Object3D) {
- const animatInfo = object.userData.animation.split(":");
- const anchor = animatInfo[1];
- const rotationAngle = parseInt(animatInfo[2]);
- const during = parseInt(animatInfo[3]);
- this.animateRotate(object as THREE.Mesh, anchor, rotationAngle, during);
- }
-
- protected isRack(object: THREE.Object3D) {
- return object.userData.name?.includes("rack");
- }
-
- highlightScene() {
- this.scene?.traverseVisible((obj: THREE.Object3D) => {
- if (obj instanceof THREE.Mesh) {
- // @ts-ignore
- obj.__originalMaterial = obj.material;
- obj.material = this.blurMaterial;
- }
- });
- this.isHighlighted = true;
- }
-
- clearHighlight() {
- this.scene?.traverseVisible((obj: THREE.Object3D) => {
- // @ts-ignore
- if (obj.__originalMaterial) {
- // @ts-ignore
- obj.material = obj.__originalMaterial;
- }
- });
- this.isHighlighted = false;
- this.render();
- }
-
- protected animateRotate(
- object: THREE.Mesh,
- anchor: string,
- angle: number,
- during: number
- ) {
- const size = new THREE.Vector3();
- object.geometry.computeBoundingBox();
- object.geometry.boundingBox!.getSize(size);
- const pivotPoint = new THREE.Vector3();
- const rotationAxis = new THREE.Vector3();
-
- if (anchor === "left") {
- pivotPoint.set(-size.x / 2, 0, 0);
- rotationAxis.set(0, 1, 0);
- } else if (anchor === "right") {
- pivotPoint.set(size.x / 2, 0, 0);
- rotationAxis.set(0, 1, 0);
- }
- pivotPoint.applyMatrix4(object.matrix);
- rotationAxis.applyMatrix4(
- new THREE.Matrix4().extractRotation(object.matrix)
- );
-
- const from = 0;
- let to = 1;
- if (object.userData.animated) {
- to = -1;
- }
- object.userData.animated = !object.userData.animated;
- let lastValue = 0;
-
- new Tween({ x: from }, this.tween)
- .to({ x: to }, during)
- .easing(Easing.Bounce.Out)
- .onUpdate((v) => {
- const tm = new THREE.Matrix4().setPosition(pivotPoint);
- const rm = new THREE.Matrix4();
- rm.makeRotationAxis(
- rotationAxis,
- THREE.MathUtils.degToRad(-angle) * (v.x - lastValue)
- );
- tm.multiply(rm);
- const tmm = new THREE.Matrix4().setPosition(
- pivotPoint.clone().negate()
- );
- tm.multiply(tmm);
- object.applyMatrix4(tm);
-
- // 更新渲染
- this.render();
-
- lastValue = v.x;
- })
- .start();
- }
-
- loadData() {
- createWorld(this.scene!);
- this.createRack(this.scene!);
- // this.createPathFlight();
- this.render();
- }
-
- private createRack(scene: THREE.Scene) {
- // 机柜
- const rackMap = {
- sideMap: "./assets/rack2/r1srack.jpg",
- topMap: "./assets/rack2/r1track.jpg",
- frameMap: "./assets/rack2/r1frack42.png",
- frontDoorMap: "./assets/rack2/r1frack.jpg",
- backDoorMap: "./assets/rack2/r1brack.jpg",
- rackBack: "./assets/rack2/r1brack.jpg",
- };
- for (let i = 0; i < 8; i++) {
- for (let j = 0; j < 20; j++) {
- const rack = createRack({
- ...rackMap,
- position: [-1680 + 230 * i, 100, -1400 + 60 * j],
- rotation: [0, -Math.PI / 2, 0],
- });
- scene.add(rack);
- }
- }
-
- for (let i = 0; i < 10; i++) {
- for (let j = 0; j < 20; j++) {
- const rack = createRack({
- ...rackMap,
- position: [500 + 230 * i, 100, -1400 + 60 * j],
- rotation: [0, -Math.PI / 2, 0],
- });
- scene.add(rack);
- }
- }
- }
-
- // @ts-ignore
- private createPathFlight() {
- const points = [
- [-2108.1056622497044, 140, -1768.2852733169518],
- [-2090.8022641659068, 140, -8.999541340935856],
- [252.92217113182915, 140, -21.646393904821025],
- [2579.693282778835, 140, -16.824099103697677],
- [2488.183270612835, 140, 1271.4025633512294],
- [321.0467169543589, 140, 1261.9262629538507],
- [-2131.2017368499573, 140, 1230.3146832488842],
- ];
- const vectors = points.map((p) => new THREE.Vector3(p[0], p[1], p[2]));
- const curve = new THREE.CatmullRomCurve3(vectors, false, "catmullrom", 0.1);
-
- new Tween({ t: 0 }, this.tween)
- .to({ t: 0.99 }, 20 * 1000)
- .easing(Easing.Linear.Out)
- .onUpdate((v) => {
- const eye = curve.getPointAt(v.t);
- const lookAt = curve.getPointAt(v.t + 0.01);
- this.cameraControls?.setLookAt(
- eye.x,
- eye.y,
- eye.z,
- lookAt.x,
- lookAt.y,
- lookAt.z,
- false
- );
- })
- .start();
-
- const tubeGeometry = new THREE.TubeGeometry(curve, 100, 20, 5, false);
- const material = new THREE.MeshLambertMaterial({ color: 0xff00ff });
- const mesh = new THREE.Mesh(tubeGeometry, material);
- this.scene?.add(mesh);
- }
-}
diff --git a/src/createWorld.ts b/src/createWorld.ts
deleted file mode 100644
index 9f85079..0000000
--- a/src/createWorld.ts
+++ /dev/null
@@ -1,789 +0,0 @@
-import { createWall } from "./model/createWall.js";
-import { createPlant } from "./model/createPlant.js";
-import { createColumn } from "./model/createColumn.js";
-import * as THREE from "three";
-
-export function createWorld(scene: THREE.Scene) {
- // 创建墙
- [
- {
- type: "Wall",
- data: [
- [-2922, -1892],
- [2768, -1892],
- [2768, 2108],
- [-2922, 2108],
- ],
- outsideColor: "#e3e7ed",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- },
- outsideTexture: {
- map: "./assets/wall/wall14.jpg",
- repeat: [50, 1],
- },
- floorTexture: {
- map: "./assets/wall/floor5.jpg",
- repeat: [15, 15],
- },
- roofTexture: {
- map: "./assets/wall/floor.jpg",
- repeat: [15, 15],
- },
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- closed: true,
- children: [
- {
- type: "DoubleDoor",
- width: 120,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door15-l.jpg",
- rightMap: "./assets/door/door15-r.jpg",
- position: [-2070.497907096083, 90, 2108],
- },
- {
- type: "DoubleDoor",
- width: 120,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door15-l.jpg",
- rightMap: "./assets/door/door15-r.jpg",
- position: [-2070.497907096083, 90, -1892],
- },
- ],
- },
- {
- type: "Wall",
- data: [
- [-1932, -1892],
- [-1932, -1592],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [-1932, 1121],
- [2237, 1121],
- [2237, 83],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall13.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall13.jpg",
- repeat: [10, 1],
- },
- closed: false,
- children: [
- {
- type: "Window",
- width: 705,
- frameColor: 0x333640,
- position: [21.8733119497804, 120, 1121],
- map: "./assets/window/window3.png",
- },
- {
- type: "Window",
- width: 930,
- frameColor: 0x333640,
- position: [1696.6050674876196, 120, 1121],
- map: "./assets/window/window3.png",
- },
- {
- type: "Window",
- width: 470.91171148899,
- frameColor: 0x333640,
- position: [-1662.8616076650972, 120, 1121],
- map: "./assets/window/window3.png",
- },
- {
- type: "Window",
- width: 840.0829979159867,
- frameColor: 0x333640,
- position: [-871.5658491761828, 120, 1121],
- map: "./assets/window/window3.png",
- },
- {
- type: "Window",
- width: 561.6639519808001,
- frameColor: 0x333640,
- position: [794.5301772242469, 120, 1121],
- map: "./assets/window/window3.png",
- },
- {
- type: "Window",
- width: 898.9436385369619,
- frameColor: 0x333640,
- position: [2237, 120, 595.2598807357291],
- map: "./assets/window/window3.png",
- },
- ],
- },
- {
- type: "Wall",
- data: [
- [-1932, -127],
- [-1932, 1411],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall13.jpg",
- repeat: [10, 1],
- },
- closed: false,
- children: [
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door14-l.png",
- rightMap: "./assets/door/door14-r.png",
- position: [-1932, 90, 1246.999975369071],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door14-l.png",
- rightMap: "./assets/door/door14-r.png",
- position: [-1932, 90, -29.999992885074985],
- },
- {
- type: "Window",
- width: 854.0334046264043,
- frameColor: 0x333640,
- position: [-1932, 120, 609.9552231978],
- map: "./assets/window/window3.png",
- },
- ],
- },
- {
- type: "Wall",
- data: [
- [-1932, 1411],
- [-1932, 2108],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [240, -1592],
- [240, -1178],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall11.jpg",
- repeat: [2, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall11.jpg",
- repeat: [2, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [-438, 1411],
- [-438, 2108],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [4, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [-2222, 1067],
- [-2922, 1067],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [4, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [-2222, 64],
- [-2922, 64],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [4, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [-2222, -1270],
- [-2922, -1270],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [4, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [1157, 83],
- [1157, 1121],
- ],
- transparent: true,
- insideTexture: {
- map: "./assets/wall/glass-wall4.png",
- repeat: [3, 1],
- },
- outsideTexture: {
- map: "./assets/wall/glass-wall4.png",
- repeat: [3, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [-1932, 83],
- [-390, 83],
- ],
- transparent: true,
- insideTexture: {
- map: "./assets/wall/glass-wall4.png",
- repeat: [3, 1],
- },
- outsideTexture: {
- map: "./assets/wall/glass-wall4.png",
- repeat: [3, 1],
- },
- closed: false,
- children: [
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door14-l.png",
- rightMap: "./assets/door/door14-r.png",
- position: [-1783.000032549887, 90, 83],
- },
- ],
- },
- {
- type: "Wall",
- data: [
- [240, -1178],
- [240, -127],
- ],
- transparent: true,
- insideTexture: {
- map: "./assets/wall/glass-wall4.png",
- repeat: [3, 1],
- },
- outsideTexture: {
- map: "./assets/wall/glass-wall4.png",
- repeat: [3, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [-390, 83],
- [-390, 1121],
- ],
- transparent: true,
- insideTexture: {
- map: "./assets/wall/glass-wall4.png",
- repeat: [3, 1],
- },
- outsideTexture: {
- map: "./assets/wall/glass-wall4.png",
- repeat: [3, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [2768, -127],
- [-1932, -127],
- ],
- transparent: true,
- insideTexture: {
- map: "./assets/wall/glass-wall4.png",
- repeat: [20, 1],
- },
- outsideTexture: {
- map: "./assets/wall/glass-wall4.png",
- repeat: [20, 1],
- },
- closed: false,
- children: [
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door14-l.png",
- rightMap: "./assets/door/door14-r.png",
- position: [-1743.0000015683217, 90, -127],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door14-l.png",
- rightMap: "./assets/door/door14-r.png",
- position: [109.0000057448495, 90, -127],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door14-l.png",
- rightMap: "./assets/door/door14-r.png",
- position: [393.00003503999613, 90, -127],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door14-l.png",
- rightMap: "./assets/door/door14-r.png",
- position: [2640.999966667306, 90, -127],
- },
- ],
- },
- {
- type: "Wall",
- data: [
- [-1932, -1592],
- [-1932, -127],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall13.jpg",
- repeat: [10, 1],
- },
- closed: false,
- children: [
- {
- type: "Window",
- width: 1277,
- frameColor: 0x333640,
- position: [-1932, 120, -835.1127278429044],
- map: "./assets/window/window3.png",
- },
- ],
- },
- {
- type: "Wall",
- data: [
- [-1932, 1411],
- [2768, 1411],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/outer-wall11.jpg",
- repeat: [10, 1],
- },
- closed: false,
- children: [
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door15-l.jpg",
- rightMap: "./assets/door/door15-r.jpg",
- position: [-566.0000325498869, 90, 1411],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door15-l.jpg",
- rightMap: "./assets/door/door15-r.jpg",
- position: [925.9999674501132, 90, 1411],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door15-l.jpg",
- rightMap: "./assets/door/door15-r.jpg",
- position: [1202.9999674501132, 90, 1411],
- },
- ],
- },
- {
- type: "Wall",
- data: [
- [-390, 83],
- [1157, 83],
- [2237, 83],
- ],
- transparent: true,
- insideTexture: {
- map: "./assets/wall/glass-wall4.png",
- repeat: [3, 1],
- },
- outsideTexture: {
- map: "./assets/wall/glass-wall4.png",
- repeat: [3, 1],
- },
- closed: false,
- children: [
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door14-l.png",
- rightMap: "./assets/door/door14-r.png",
- position: [-224.000032549887, 90, 83],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door14-l.png",
- rightMap: "./assets/door/door14-r.png",
- position: [1479.9999674501132, 90, 83],
- },
- ],
- },
- {
- type: "Wall",
- data: [
- [-1932, -1592],
- [2766, -1592],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall11.jpg",
- repeat: [20, 1],
- },
- outsideTexture: {
- map: "./assets/wall/outer-wall11.jpg",
- repeat: [10, 1],
- },
- closed: false,
- children: [
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door14-l.png",
- rightMap: "./assets/door/door14-r.png",
- position: [108.11004610554635, 90, -1592],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door14-l.png",
- rightMap: "./assets/door/door14-r.png",
- position: [387.74448236724686, 90, -1592],
- },
- ],
- },
- {
- type: "Wall",
- data: [
- [1049, 1411],
- [1049, 2108],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [-2222, -880],
- [-2922, -880],
- ],
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [-2222, 677],
- [-2922, 677],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- closed: false,
- },
- {
- type: "Wall",
- data: [
- [-2222, 2108],
- [-2222, -1892],
- ],
- insideLightMap: "./assets/env/inside_lightmap9.jpg",
- outsideLightMap: "./assets/env/outside_lightmap9.jpg",
- insideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- outsideTexture: {
- map: "./assets/wall/inner-wall10.jpg",
- repeat: [10, 1],
- },
- closed: false,
- children: [
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door15-l.jpg",
- rightMap: "./assets/door/door15-r.jpg",
- position: [-2222, 90, -1406.0000011652241],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door15-l.jpg",
- rightMap: "./assets/door/door15-r.jpg",
- position: [-2222, 90, -1045.0000011652244],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door15-l.jpg",
- rightMap: "./assets/door/door15-r.jpg",
- position: [-2222, 90, -120.00000116522426],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door15-l.jpg",
- rightMap: "./assets/door/door15-r.jpg",
- position: [-2222, 90, 509.99999883477574],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door15-l.jpg",
- rightMap: "./assets/door/door15-r.jpg",
- position: [-2222, 90, 921.9999988347759],
- },
- {
- type: "DoubleDoor",
- width: 160,
- height: 180,
- depth: 36,
- frameColor: 0x333640,
- leftMap: "./assets/door/door15-l.jpg",
- rightMap: "./assets/door/door15-r.jpg",
- position: [-2222, 90, 1251.999998834776],
- },
- {
- type: "Window",
- width: 500,
- frameColor: 0x333640,
- position: [-2222, 120, 1700],
- map: "./assets/window/window3.png",
- },
- ],
- },
- ].forEach((json) => scene!.add(createWall(json)));
-
- {
- for (let i = 0; i < 6; i++) {
- const column = createColumn({
- width: 60,
- height: 270,
- depth: 60,
- position: [-1380 + 820 * i, 135, -1850],
- });
- scene.add(column);
-
- const column2 = createColumn({
- width: 60,
- height: 270,
- depth: 60,
- position: [-1380 + 820 * i, 135, 2065],
- });
- scene.add(column2);
- }
-
- [
- [-2250, 135, -1850],
- [-2250, 135, -880],
- [-2250, 135, 72],
- [-2250, 135, 1070],
- [-2250, 135, 2065],
- [2233, 135, 90],
- [1155, 135, 90],
- [-390, 135, 90],
- [243, 135, -127],
- ].forEach((p) => {
- scene.add(
- createColumn({
- width: 60,
- height: 270,
- depth: 60,
- position: p,
- })
- );
- });
- }
-
- {
- [
- [-1970, 10, -1371],
- [-1970, 10, -833],
- [-1970, 10, -305],
- [2511, 10, -55],
- ].forEach((p) =>
- scene.add(
- createPlant({
- width: 30,
- height: 120,
- position: p,
- style: 2,
- })
- )
- );
- }
-}
diff --git a/src/loading/loading.css b/src/loading/loading.css
deleted file mode 100644
index ddfd136..0000000
--- a/src/loading/loading.css
+++ /dev/null
@@ -1,35 +0,0 @@
-/* HTML: */
-.loader {
- /* 定位 */
- position: absolute;
- top: 50%;
- left: 50%;
- z-index: 999;
-
- --s: 20px;
-
- --_d: calc(0.353*var(--s));
- width: calc(var(--s) + var(--_d));
- aspect-ratio: 1;
- display: grid;
- }
- .loader:before,
- .loader:after {
- content: "";
- grid-area: 1/1;
- clip-path: polygon(var(--_d) 0,100% 0,100% calc(100% - var(--_d)),calc(100% - var(--_d)) 100%,0 100%,0 var(--_d));
- background:
- conic-gradient(from -90deg at calc(100% - var(--_d)) var(--_d),
- #fff 135deg,#666 0 270deg,#aaa 0);
- animation: l6 2s infinite;
- }
- .loader:after {
- animation-delay:-1s;
- }
- @keyframes l6{
- 0% {transform:translate(0,0)}
- 25% {transform:translate(30px,0)}
- 50% {transform:translate(30px,30px)}
- 75% {transform:translate(0,30px)}
- 100%{transform:translate(0,0)}
- }
\ No newline at end of file
diff --git a/src/loading/loading.ts b/src/loading/loading.ts
deleted file mode 100644
index e203fd5..0000000
--- a/src/loading/loading.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import "./loading.css";
-
-export class Loading {
- el?: HTMLDivElement;
-
- constructor() {
- this.create();
- }
-
- create() {
- this.el = document.createElement("div");
- this.el.classList.add("loader");
- document.body.append(this.el);
- }
-
- show() {
- this.el!.style.display = "grid";
- }
-
- hide() {
- this.el!.style.display = "none";
- }
-}
\ No newline at end of file
diff --git a/src/main.ts b/src/main.ts
deleted file mode 100644
index a9dd064..0000000
--- a/src/main.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import './style.css'
-import { Viewer } from "./Viewer";
-
-// @ts-ignore
-window.viewer = new Viewer(document.getElementById("app")!);
\ No newline at end of file
diff --git a/src/model/createColumn.js b/src/model/createColumn.js
deleted file mode 100644
index 0f9dc8d..0000000
--- a/src/model/createColumn.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import * as THREE from 'three';
-import { textureLoader } from "../Common";
-
-export function createColumn(json) {
- const position = json.position || [0, 0, 0];
- const rotation = json.rotation || [0, 0, 0];
-
- const width = json.width || 30;
- const height = json.height || 240;
- const depth = json.depth || 30;
-
- const color = json.color || 0xE8E8E8;
- const map = textureLoader.load(json.map || "./assets/column/column10.jpg");
- const lightMap = textureLoader.load("./assets/column/column_lightmap4.jpg");
-
- const boxGeo = new THREE.BoxGeometry(width, height, depth);
- const mesh = new THREE.Mesh(boxGeo, [
- new THREE.MeshPhongMaterial({ color, map, lightMap }), //右
- new THREE.MeshPhongMaterial({ color, map, lightMap }), //左
- new THREE.MeshBasicMaterial({ color }), //上
- new THREE.MeshBasicMaterial({ color }), //下
- new THREE.MeshPhongMaterial({ color, map, lightMap }), //前
- new THREE.MeshPhongMaterial({ color, map, lightMap}), //后
- ]);
-
- mesh.position.set(...position);
- mesh.rotation.set(...rotation);
-
- return mesh;
-}
\ No newline at end of file
diff --git a/src/model/createDoor.js b/src/model/createDoor.js
deleted file mode 100644
index f9dcd38..0000000
--- a/src/model/createDoor.js
+++ /dev/null
@@ -1,141 +0,0 @@
-import * as THREE from 'three';
-import { SUBTRACTION, INTERSECTION, ADDITION, Brush, Evaluator } from 'three-bvh-csg';
-import { textureLoader } from "../Common";
-
-const envMap = textureLoader.load("./assets/env/envmap.jpg");
-envMap.mapping = THREE.EquirectangularReflectionMapping;
-envMap.colorSpace = THREE.SRGBColorSpace;
-
-const specularMap = textureLoader.load("./assets/env/white.png")
-
-// 单开门
-export function createDoor(json) {
- const width = json.width || 205;
- const height = json.height || 180;
- const depth = json.depth || 30;
- const position = json.position || [0, 0, 0];
- const frameColor = json.frameColor || 0xFEFEFE;
- const frameEdge = 10,
- frameBottomEdge = 2;
- const image = textureLoader.load(json.map || "./assets/door/door1.png");
- const group = new THREE.Group();
- group.position.set(...position);
-
- // 门套
- const cutGeo = new THREE.BoxGeometry(width - frameEdge, height - frameEdge / 2 - frameBottomEdge, depth + 2);
- const cutMat = new THREE.MeshPhongMaterial({ color: frameColor });
- const cutMesh = new Brush(cutGeo, cutMat);
- // scene.add(cutMesh);
- let result;
- const evaluator = new Evaluator();
- result = evaluator.evaluate(cutMesh, new Brush(new THREE.BoxGeometry(width - frameEdge - 4, height - frameEdge / 2 - frameBottomEdge - 4, depth + 2), cutMat), SUBTRACTION, result);
- group.add(result);
-
- // 门
- const doorGeo = new THREE.BoxGeometry((width - frameEdge) - 2, height - frameEdge / 2 - frameBottomEdge - 2, 2);
- const uvs = [
- 0, 1, 0.333, 1, 0, 0.5, 0.333, 0.5, //右
- 0, 1, 0.333, 1, 0, 0.5, 0.333, 0.5, // 左
- 0, 1, 0.333, 1, 0, 0.5, 0.333, 0.5, // 上
- 0, 1, 0.333, 1, 0, 0.5, 0.333, 0.5, // 下
- 0.333, 0.5, 0.666, 0.5, 0.333, 0, 0.666, 0, // 前
- 0.666, 1, 1, 1, 0.666, 0.5, 1, 0.5, // 后
- ]
- doorGeo.setAttribute('uv', new THREE.Float32BufferAttribute(uvs, 2));
- const doorMesh = new Brush(doorGeo, new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: image, transparent: true, specularMap }));
- doorMesh.userData.animation = "rotation:left:-80:1000:0:bounceOut";
- group.add(doorMesh);
-
- return group;
-}
-
-// 双开门
-export function createDoubleDoor(json) {
- const width = json.width || 205;
- const height = json.height || 213;
- const depth = json.depth || 26;
- const position = json.position || [0, 0, 0];
- const frameEdge = 10,
- frameBottomEdge = 5;
- const frameColor = json.frameColor || 0xFEFEFE;
- const leftImage = textureLoader.load(json.leftMap || "./assets/door/door-l.png");
- const rightImage = textureLoader.load(json.rightMap || "./assets/door/door-r.png");
- rightImage.flipY = true;
- const group = new THREE.Group();
- group.position.set(...position);
-
- // 门套
- const cutGeo = new THREE.BoxGeometry(width - frameEdge, height - frameEdge / 2 - frameBottomEdge, depth + 2);
- const cutMat = new THREE.MeshPhongMaterial({ color: frameColor });
- const cutMesh = new Brush(cutGeo, cutMat);
- // scene.add(cutMesh);
- let result;
- const evaluator = new Evaluator();
- result = evaluator.evaluate(cutMesh, new Brush(new THREE.BoxGeometry(width - frameEdge - 4, height - frameEdge / 2 - frameBottomEdge - 4, depth + 2), cutMat), SUBTRACTION, result);
- group.add(result);
-
- const uvs = [
- 0, 1, 0.333, 1, 0, 0.5, 0.333, 0.5, //右
- 0, 1, 0.333, 1, 0, 0.5, 0.333, 0.5, // 左
- 0, 1, 0.333, 1, 0, 0.5, 0.333, 0.5, // 上
- 0, 1, 0.333, 1, 0, 0.5, 0.333, 0.5, // 下
- 0.333, 0.5, 0.666, 0.5, 0.333, 0, 0.666, 0, // 前
- 0.666, 1, 1, 1, 0.666, 0.5, 1, 0.5, // 后
- ]
- // 左门
- const doorLeftGeo = new THREE.BoxGeometry((width - frameEdge) / 2 - 2, height - frameEdge / 2 - frameBottomEdge - 2, 2);
- doorLeftGeo.setAttribute('uv', new THREE.Float32BufferAttribute(uvs, 2));
- const doorLeftMesh = new Brush(doorLeftGeo, new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: leftImage, transparent: true, specularMap }));
- doorLeftMesh.userData.animation = "rotation:left:-80:1000:0:bounceOut";
- doorLeftMesh.position.set(-(width - frameEdge) / 4 + 1, 0, 0);
- group.add(doorLeftMesh);
-
- // 右门
- const doorRightGeo = new THREE.BoxGeometry((width - frameEdge) / 2 - 2, height - frameEdge / 2 - frameBottomEdge - 2, 2);
- doorRightGeo.setAttribute('uv', new THREE.Float32BufferAttribute(uvs, 2));
- const doorRightMesh = new Brush(doorRightGeo, new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: rightImage, transparent: true, specularMap }));
- doorRightMesh.position.set((width - frameEdge) / 4 - 1, 0, 0);
- doorRightMesh.userData.animation = "rotation:right:80:1000:0:bounceOut";
- group.add(doorRightMesh);
-
- return group;
-}
-
-// 窗户
-export function createWindow(json) {
- const width = json.width || 120;
- const height = json.height || 150;
- const depth = json.depth || 36;
- const position = json.position || [0, 0, 0];
- const image = textureLoader.load(json.map || "./assets/window/window.png");
- const group = new THREE.Group();
- group.position.set(...position);
-
- const frameEdge = 1;
- const frameColor = json.frameColor || 0xFEFEFE;
- // 窗套
- const cutGeo = new THREE.BoxGeometry(width - frameEdge + 2, height - frameEdge / 2 + 2, depth + 2);
- const cutMat = new THREE.MeshPhongMaterial({ color: frameColor });
- const cutMesh = new Brush(cutGeo, cutMat);
- // scene.add(cutMesh);
- let result;
- const evaluator = new Evaluator();
- result = evaluator.evaluate(cutMesh, new Brush(new THREE.BoxGeometry(width - frameEdge - 1, height - frameEdge / 2 - 1, depth + 2), cutMat), SUBTRACTION, result);
- group.add(result);
-
- // 窗
- const windowGeo = new THREE.BoxGeometry(width, height, 2);
- const uvs = [
- 0, 1, 1, 1, 0, 0, 1, 0, //右
- 0, 1, 1, 1, 0, 0, 1, 0, // 左
- 0, 1, 1, 1, 0, 0, 1, 0, // 上
- 0, 1, 1, 1, 0, 0, 1, 0, // 下
- 0, 1, 1, 1, 0, 0, 1, 0, // 前
- 0, 1, 1, 1, 0, 0, 1, 0, // 后
- ]
- windowGeo.setAttribute('uv', new THREE.Float32BufferAttribute(uvs, 2));
- const windowMesh = new THREE.Mesh(windowGeo, new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: image, transparent: true, shininess: 100, reflectivity: 2, envMap }));
- group.add(windowMesh);
-
- return group;
-}
\ No newline at end of file
diff --git a/src/model/createPlant.js b/src/model/createPlant.js
deleted file mode 100644
index c9c8405..0000000
--- a/src/model/createPlant.js
+++ /dev/null
@@ -1,73 +0,0 @@
-import * as THREE from 'three';
-import { SUBTRACTION, INTERSECTION, ADDITION, Brush, Evaluator } from 'three-bvh-csg';
-import { textureLoader } from "../Common";
-
-export function createPlant(json) {
- const position = json.position || [0, 0, 0];
- const rotation = json.rotation || [0, 0, 0];
-
- const style = json.style || 1;
-
- const nomalMap = textureLoader.load("./assets/env/metal_normalmap.jpg");
- nomalMap.wrapS = THREE.RepeatWrapping;
- nomalMap.wrapT = THREE.RepeatWrapping;
- nomalMap.repeat.set(10, 5);
-
- const group = new THREE.Group();
- if (style === 1) {
- const width = 30;
- const height = 30;
- const flowerpot = createFlowerpot(width * 0.5, width * 0.4, height * 2, nomalMap);
- group.add(flowerpot);
- const image = textureLoader.load("./assets/plant/plant.png");
- image.colorSpace = THREE.SRGBColorSpace;
- createBasePlant(width * 1.5, height + 20, 35, image, group);
- } else if (style === 2) {
- const width = 30;
- const height = 120;
- const flowerpot = createFlowerpot(width * 0.6, width * 0.4, height / 5, nomalMap);
- group.add(flowerpot);
- const image = textureLoader.load("./assets/plant/plant2.png");
- image.colorSpace = THREE.SRGBColorSpace;
- createBasePlant(width * 2, height, 60, image, group);
- }
-
- group.position.set(...position);
- group.rotation.set(...rotation);
-
- return group;
-}
-
-
-function createFlowerpot(w, h, d, normalMap) {
- // 花盆
- const cylinderGeo = new THREE.CylinderGeometry(w, h, d, 20, 1);
- const cylinderVase = new Brush(cylinderGeo, new THREE.MeshPhongMaterial({ color: new THREE.Color(0xbbbbbb), specular: new THREE.Color(0xbbbbbb), normalMap: normalMap, normalScale: new THREE.Vector2(0.4, 0.4) }));
- cylinderVase.updateMatrixWorld();
-
- const cylinderHollow = cylinderVase.clone(true);
- cylinderHollow.scale.set(0.9, 1, 0.9);
- cylinderHollow.updateMatrixWorld();
- const cylinderMud = cylinderHollow.clone(true);
- cylinderMud.scale.set(0.9, 0.7, 0.9);
- cylinderMud.updateMatrixWorld();
- cylinderMud.material = new THREE.MeshPhongMaterial({ color: new THREE.Color(0x163511), specular: new THREE.Color(0x163511) })
-
- let result;
- const evaluator = new Evaluator();
- result = evaluator.evaluate(cylinderVase, cylinderHollow, SUBTRACTION, result);
- result = evaluator.evaluate(result, cylinderMud, ADDITION, result);
- return result;
-}
-
-function createBasePlant(w, h, y, map, parent) {
- // 植物
- const count = 5;
- for (let i = 0; i < count; i++) {
- const plantGeo = new THREE.PlaneGeometry(w, h);
- const plant = new THREE.Mesh(plantGeo, new THREE.MeshPhongMaterial({ alphaTest: 0.5, transparent: true, map: map, side: THREE.DoubleSide }))
- parent.add(plant);
- plant.position.y = y;
- plant.rotateY(Math.PI * i / count);
- }
-}
diff --git a/src/model/createRack.js b/src/model/createRack.js
deleted file mode 100644
index 267e617..0000000
--- a/src/model/createRack.js
+++ /dev/null
@@ -1,116 +0,0 @@
-import * as THREE from 'three';
-import { SUBTRACTION, INTERSECTION, ADDITION, Brush, Evaluator } from 'three-bvh-csg';
-import { textureLoader } from "../Common";
-
-
-const RACK_WIDTH = 60;
-const RACK_INNER_WIDTH = 45.5;
-const envMap = textureLoader.load("./assets/env/envmap.jpg");
-envMap.mapping = THREE.EquirectangularReflectionMapping;
-envMap.colorSpace = THREE.SRGBColorSpace;
-const lightMap = textureLoader.load("./assets/env/outside_lightmap.jpg");
-
-export function createRack(json) {
- const position = json.position || [0, 0, 0];
- const rotation = json.rotation || [0, 0, 0];
-
- const rackWidth = json.width || RACK_WIDTH;
- const rackHeight = json.height || 200; // 42U机柜 4.445*45
- const rackDepth = json.depth || 80;
- const doorDepth = 2;
- const rackSideImage = textureLoader.load(json.sideMap || "./assets/rack/rack_side.jpg");
- const rackTopImage = textureLoader.load(json.topMap || "./assets/rack/rack_top.jpg");
- const rackFrameImage = textureLoader.load(json.frameMap || "./assets/rack/rack42u.png");
-
- const insideSideImage = textureLoader.load("./assets/rack/inside_side.jpg");
- const insideTopImage = textureLoader.load("./assets/rack/inside_top.jpg");
-
- const rackFrontDoorImage = textureLoader.load(json.frontDoorMap || "./assets/rack/rack_door_front.jpg");
- const rackBackDoorImage = textureLoader.load(json.backDoorMap || "./assets/rack/rack_door_back.jpg");
-
- const rackBackImage = textureLoader.load(json.rackBack || "./assets/rack/rack_back.jpg");
-
- const rack = new THREE.Group();
- rack.position.set(...position);
- rack.rotation.set(...rotation);
-
- let cube1, cube2;
- {
- // 柜体
- const geometry = new THREE.BoxGeometry(rackWidth, rackHeight, rackDepth);
- cube1 = new Brush(
- geometry,
- [
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), specular: new THREE.Color(0xe5e5e5), map: rackSideImage, envMap, reflectivity: 0.5 }),// 右面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), specular: new THREE.Color(0xe5e5e5), map: rackSideImage, envMap, reflectivity: 0.5 }), // 左面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), specular: new THREE.Color(0xe5e5e5), map: rackTopImage, envMap, reflectivity: 0.5 }), // 上面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), specular: new THREE.Color(0xe5e5e5), map: rackTopImage, envMap, reflectivity: 0.5 }), // 下面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), specular: new THREE.Color(0xe5e5e5), map: rackFrameImage, envMap, reflectivity: 0.5 }), // 前面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), specular: new THREE.Color(0xe5e5e5), map: rackFrameImage, envMap, reflectivity: 0.5 }), // 后面
- ]
- )
- cube1.updateMatrixWorld();
- // cube1 = new THREE.Mesh(geometry, material);
- // scene.add(cube1);
- }
-
- {
- // 机柜洞
- const geometry = new THREE.BoxGeometry(RACK_INNER_WIDTH, rackHeight - doorDepth * 2 /* 187.69 */, rackDepth);
- cube2 = new Brush(
- geometry,
- [
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), specular: new THREE.Color(0xe5e5e5), map: insideSideImage, lightMap, envMap, reflectivity: 0.5 }),// 右面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), specular: new THREE.Color(0xe5e5e5), map: insideSideImage, lightMap, envMap, reflectivity: 0.5 }), // 左面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), specular: new THREE.Color(0xe5e5e5), map: insideTopImage, lightMap, envMap, reflectivity: 0.5 }), // 上面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), specular: new THREE.Color(0xe5e5e5), map: insideTopImage, lightMap, envMap, reflectivity: 0.5 }), // 下面
- new THREE.MeshBasicMaterial({ color: new THREE.Color(0xffffff), lightMap }), // 前面
- new THREE.MeshBasicMaterial({ color: new THREE.Color(0xffffff), lightMap }), // 后面
- ]
- )
- cube2.updateMatrixWorld();
- // cube2 = new THREE.Mesh(geometry, material);
- // scene.add(cube2);
- }
-
- let result;
- const evaluator = new Evaluator();
- result = evaluator.evaluate(cube1, cube2, SUBTRACTION, result);
- result.name = "rack-body";
- result.userData.name = "rack-body";
- rack.add(result);
-
- {
- const geometry = new THREE.BoxGeometry(rackWidth, rackHeight, doorDepth);
- const rackDoor = new THREE.Mesh(geometry, [
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: insideTopImage, envMap, reflectivity: 0.5 }),// 右面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: insideTopImage, envMap, reflectivity: 0.5 }), // 左面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: insideTopImage, envMap, reflectivity: 0.5 }), // 上面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: insideTopImage, envMap, reflectivity: 0.5 }), // 下面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: rackFrontDoorImage, envMap, reflectivity: 0.7, shininess: 100 }),
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: rackBackDoorImage, envMap, reflectivity: 0.7, shininess: 100 }),
- ]);
- rackDoor.name = "rack-front-door";
- rackDoor.position.z = rackDepth / 2 + 1;
- rackDoor.userData.animation = "rotation:right:-135:1000:0:bounceOut";
- rackDoor.userData.name = "rack-front-door";
- rack.add(rackDoor);
-
- const rackDoorBack = rackDoor.clone();
- rackDoorBack.material = [
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: insideTopImage, envMap, reflectivity: 0.5 }),// 右面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: insideTopImage, envMap, reflectivity: 0.5 }), // 左面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: insideTopImage, envMap, reflectivity: 0.5 }), // 上面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: insideTopImage, envMap, reflectivity: 0.5 }), // 下面
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: rackBackImage, envMap, reflectivity: 0.7, shininess: 100 }),
- new THREE.MeshPhongMaterial({ color: new THREE.Color(0xffffff), map: rackBackImage, envMap, reflectivity: 0.7, shininess: 100 }),
- ]
- rackDoorBack.name = "rack-back-door";
- rackDoorBack.position.z = -rackDepth / 2 - 1;
- rackDoorBack.userData.animation = "rotation:left:-135:1000:0:bounceOut";
- rackDoorBack.userData.name = "rack-back-door";
- rack.add(rackDoorBack);
- }
-
- return rack;
-}
\ No newline at end of file
diff --git a/src/model/createWall.js b/src/model/createWall.js
deleted file mode 100644
index 1c79e73..0000000
--- a/src/model/createWall.js
+++ /dev/null
@@ -1,361 +0,0 @@
-import * as THREE from 'three';
-import { createDoor, createDoubleDoor, createWindow } from './createDoor.js';
-import { Earcut } from 'three/src/extras/Earcut.js';
-import { textureLoader } from "../Common";
-
-const envMap = textureLoader.load("./assets/env/envmap2.jpg");
-envMap.mapping = THREE.EquirectangularReflectionMapping;
-envMap.colorSpace = THREE.SRGBColorSpace;
-
-export function createWall(json) {
- const position = json.position || [0, 0, 0];
-
- const wallHeight = json.height || 260;
- const wallDepth = json.depth || 30;
- let wallData = json.data || [];
- const isCCW = isClockWise(wallData);
- if (!isCCW) {
- wallData = wallData.reverse();
- }
- const closedWall = json.closed;
-
- const topColor = json.topColor || 0xdbdee5;
- const bottomColor = json.bottomColor || 0xffffff;
- const insideColor = json.insideColor || 0xEFEFEF;
- const outsideColor = json.outsideColor || 0xDCE8E9;
-
- const outsideTexture = json.outsideTexture || {};
- const insideTexture = json.insideTexture || {};
- const floorTexture = json.floorTexture || {};
- const roofTexture = json.roofTexture || {};
-
- const outsideWallImage = textureLoader.load(outsideTexture.map || "./assets/wall/wall.png");
- outsideWallImage.wrapS = THREE.RepeatWrapping;
- outsideWallImage.wrapT = THREE.RepeatWrapping;
- outsideWallImage.repeat.set(...outsideTexture.repeat || [5, 1]);
-
- const insideWallImage = textureLoader.load(insideTexture.map || "./assets/env/inside_lightmap.jpg");
- insideWallImage.wrapS = THREE.RepeatWrapping;
- insideWallImage.wrapT = THREE.RepeatWrapping;
- insideWallImage.repeat.set(...insideTexture.repeat || [5, 1]);
-
- const insideLightmap = textureLoader.load(json.insideLightMap || "./assets/env/inside_lightmap.jpg");
- insideLightmap.flipY = false;
- insideLightmap.colorSpace = THREE.SRGBColorSpace;
-
- const outsideLightmap = textureLoader.load(json.outsideLightMap || "./assets/env/outside_lightmap.jpg");
- outsideLightmap.colorSpace = THREE.SRGBColorSpace;
- // outsideLightmap.flipY = false;
-
- // 玻璃墙
- const transparent = json.transparent || false;
-
- const floorMap = textureLoader.load(floorTexture.map || "./assets/wall/floor.jpg");
- floorMap.wrapS = THREE.RepeatWrapping;
- floorMap.wrapT = THREE.RepeatWrapping;
- floorMap.repeat.set(...floorTexture.repeat || [5, 5]);
- const roofMap = textureLoader.load(roofTexture.map || "./assets/wall/floor.jpg");
- roofMap.wrapS = THREE.RepeatWrapping;
- roofMap.wrapT = THREE.RepeatWrapping;
- roofMap.repeat.set(...roofTexture.repeat || [5, 5]);
-
- const children = json.children || [];
-
- const wall = new THREE.Group();
- const materialSide = THREE.FrontSide;
-
- const offset = wallDepth / 2;
-
- const edges = [];
- let firstEdge, prevEdge;
- for (let i = 0; i < wallData.length; i++) {
- const start = wallData[i];
- const isLast = i + 1 === wallData.length;
- if (!closedWall && isLast) {
- break;
- }
- const end = wallData[(i + 1) % wallData.length];
-
- const edge = {
- current: [start, end],
- children: [],
- }
- for (let c = 0; c < children.length; c++) {
- const child = children[c];
- const pos = child.position;
- if (pointOnLine([pos[0], pos[2]], start, end)) {
- let obj;
- if (child.type === "SingleDoor") {
- obj = createDoor(child);
- } else if (child.type === "DoubleDoor") {
- obj = createDoubleDoor(child);
- } else if (child.type === "Window") {
- obj = createWindow(child);
- }
- if (obj) {
- const box = new THREE.Box3().setFromObject(obj);
- const size = box.getSize(new THREE.Vector3());
- edge.children.push({
- size,
- position: obj.position
- });
- const angle = getAngle(1, 0, end[0] - start[0], end[1] - start[1]);
- obj.rotateY(angle);
- wall.add(obj);
- }
- }
- }
- if (i === 0) {
- firstEdge = edge;
- } else {
- edge.prev = prevEdge;
- prevEdge.next = edge;
- if (i + 1 == wallData.length) {
- firstEdge.prev = edge;
- edge.next = firstEdge;
- }
- }
- prevEdge = edge;
- edges.push(edge);
- }
- console.log(edges);
-
- const floorPoints = [];
- for (let i = 0; i < edges.length; i++) {
- const current = edges[i];
-
- const interiorStartVec = getHalfAngleVector(current.prev, current, offset);
- const interiorEndVec = getHalfAngleVector(current, current.next, offset);
-
- const exteriorStartVec = getHalfAngleVector(current.prev, current, offset);
- const exteriorEndVec = getHalfAngleVector(current, current.next, offset);
-
- const v1Start = current.current[0];
- const v1End = current.current[1];
-
- const interiorStart = [v1Start[0] - interiorStartVec[0], v1Start[1] - interiorStartVec[1]];
- const interiorEnd = [v1End[0] - interiorEndVec[0], v1End[1] - interiorEndVec[1]];
-
- const exteriorStart = [v1Start[0] + exteriorStartVec[0], v1Start[1] + exteriorStartVec[1]];
- const exteriorEnd = [v1End[0] + exteriorEndVec[0], v1End[1] + exteriorEndVec[1]];
-
- // build wall
- // inner wall reverse point
- const innerMat = new THREE.MeshPhongMaterial({ color: insideColor, specular: new THREE.Color(0.06, 0.06, 0.06), side: materialSide, map: insideWallImage, lightMap: insideLightmap, transparent });
- wall.add(createMesh([interiorEnd, interiorStart], wallHeight, current.children, innerMat));
- // outer wall
- const outerMat = new THREE.MeshPhongMaterial({ color: outsideColor, specular: new THREE.Color(0.06, 0.06, 0.06), side: materialSide, map: outsideWallImage, lightMap: outsideLightmap, transparent });
- wall.add(createMesh([exteriorStart, exteriorEnd], wallHeight, current.children, outerMat));
- if (transparent) {
- innerMat.envMap = envMap;
- outerMat.envMap = envMap;
- }
-
- // bottom wall
- wall.add(createPlaneMesh([interiorStart, interiorEnd, exteriorEnd, exteriorStart], 0, new THREE.MeshBasicMaterial({ color: bottomColor, side: materialSide })));
- // top wall
- wall.add(createPlaneMesh([interiorStart, interiorEnd, exteriorEnd, exteriorStart].reverse(), wallHeight, new THREE.MeshBasicMaterial({ color: topColor, side: materialSide })));
-
- // // 内踢脚线
- // wall.add(createMesh([interiorEnd, interiorStart], 30, current.children, new THREE.MeshBasicMaterial({ color: 0x333640, side: materialSide, aoMap: insideLightmap, aoMapIntensity: 1 })));
- // // 外踢脚线
- // wall.add(createMesh([exteriorStart, exteriorEnd], 30, current.children, new THREE.MeshBasicMaterial({ color: 0x333640, side: materialSide, aoMap: outsideLightmap, aoMapIntensity: 1 })));
-
- floorPoints.push(exteriorStart);
- }
- // floor
- const floor = createPlaneMesh(floorPoints, 0, new THREE.MeshBasicMaterial({ color: bottomColor, side: THREE.DoubleSide, map: floorMap }));
- wall.add(floor);
- // roof
- wall.add(createPlaneMesh(floorPoints, wallHeight, new THREE.MeshBasicMaterial({ color: bottomColor, side: THREE.BackSide, map: roofMap })));
-
- // console.log(wall);
- return wall;
-}
-
-function compuerTransform(transform, invTransform, start, end) {
- const angle = getAngle(1, 0, end[0] - start[0], end[1] - start[1]);
- const tt = new THREE.Matrix4();
- tt.makeTranslation(-start[0], 0, -start[1]);
- const tr = new THREE.Matrix4();
- tr.makeRotationY(-angle);
- transform.multiplyMatrices(tr, tt);
- invTransform.copy(transform).invert();
-}
-
-function createMesh(edge, height, holes, material) {
- let start = edge[0];
- let end = edge[1];
-
- const transform = new THREE.Matrix4();
- const invTransform = new THREE.Matrix4();
- compuerTransform(transform, invTransform, start, end);
-
- const points = [
- new THREE.Vector3(start[0], 0, start[1]),
- new THREE.Vector3(end[0], 0, end[1]),
- new THREE.Vector3(end[0], height, end[1]),
- new THREE.Vector3(start[0], height, start[1]),
- ].map(v => v.applyMatrix4(transform));
-
- // shape基于xy平面处理的 转到xy平面处理挖洞hole
- const shape = new THREE.Shape([
- new THREE.Vector2(points[0].x, points[0].y),
- new THREE.Vector2(points[1].x, points[1].y),
- new THREE.Vector2(points[2].x, points[2].y),
- new THREE.Vector2(points[3].x, points[3].y),
- ]);
-
- // holes
- for (let i = 0; i < holes.length; i++) {
- const hole = holes[i];
-
- const size = hole.size;
- const halfSize = new THREE.Vector3(size.x / 2, size.y / 2, size.z / 2);
- const pos = hole.position.clone().applyMatrix4(transform);
- const max = pos.clone().sub(halfSize);
- const min = pos.clone().add(halfSize);
-
- shape.holes.push(new THREE.Path([
- new THREE.Vector2(min.x, min.y),
- new THREE.Vector2(max.x, min.y),
- new THREE.Vector2(max.x, max.y),
- new THREE.Vector2(min.x, max.y)
- ]));
- }
- const geometry = new THREE.ShapeGeometry(shape);
-
- // invert 转换回来
- geometry.getAttribute("position").applyMatrix4(invTransform);
-
- const posAttribute = geometry.getAttribute("position");
- const uvs = [];
- const totalDistance = distance(start[0], start[1], end[0], end[1]);
- function vertexToUv(vertex) {
- var x = distance(start[0], start[1], vertex.x, vertex.z) / totalDistance;
- var y = vertex.y / height;
- return [x, y];
- }
- for (let i = 0, l = posAttribute.count; i < l; i++) {
- const v = new THREE.Vector3();
- v.fromBufferAttribute(posAttribute, i);
- uvs.push(...vertexToUv(v));
- }
- geometry.setAttribute("uv", new THREE.Float32BufferAttribute(uvs, 2));
- geometry.setAttribute("uv1", new THREE.Float32BufferAttribute(uvs, 2));
-
- geometry.computeVertexNormals();
- geometry.normalizeNormals();
-
- return new THREE.Mesh(geometry, material);
-}
-
-function createPlaneMesh(points, height, material) {
- const vectors = points.map(p => new THREE.Vector3(p[0], height, p[1]));
- const geometry = new THREE.BufferGeometry();
- geometry.setFromPoints(vectors);
- const index = Earcut.triangulate(points.flat(), []);
- if (isClockWise(points)) {
- index.reverse();
- }
- geometry.setIndex(index);
- const uvs = generateUvByVectors(vectors);
- geometry.setAttribute("uv", new THREE.Float32BufferAttribute(uvs, 2));
- geometry.computeVertexNormals();
- return new THREE.Mesh(geometry, material);
-}
-
-
-function getAngle(x1, y1, x2, y2) {
- const tDot = x1 * x2 + y1 * y2;
- const tDet = x1 * y2 - y1 * x2;
- let tAngle = -Math.atan2(tDet, tDot); // (-pi to pi)
-
- if (tAngle < 0) { // to 0 ~ pi
- tAngle += 2 * Math.PI;
- }
- return tAngle;
-}
-
-function distance(x1, y1, x2, y2) {
- return Math.sqrt(
- Math.pow(x2 - x1, 2) +
- Math.pow(y2 - y1, 2));
-}
-
-function getHalfAngleVector(edge1, edge2, offset) {
- let v1Start, v1End, v2Start, v2End;
- if (edge1) {
- v1Start = edge1.current[0];
- v1End = edge1.current[1];
- } else {
- const s = edge2.current[0];
- const e = edge2.current[1];
-
- v1Start = [s[0] - (e[0] - s[0]), s[1] - (e[1] - s[1])];
- v1End = edge2.current[0];
- }
- if (edge2) {
- v2Start = edge2.current[0];
- v2End = edge2.current[1];
- } else {
- const s = edge1.current[0];
- const e = edge1.current[1];
-
- v2Start = edge1.current[1];
- v2End = [e[0] + (e[0] - s[0]), e[1] + (e[1] - s[1])];
- }
-
- const theta = getAngle(v1Start[0] - v1End[0], v1Start[1] - v1End[1], v2End[0] - v1End[0], v2End[1] - v1End[1]);
-
- // cosine and sine of half angle
- var cs = Math.cos(theta / 2.0);
- var sn = Math.sin(theta / 2.0);
-
- // rotate v2
- var v2dx = v2End[0] - v2Start[0];
- var v2dy = v2End[1] - v2Start[1];
-
- var vx = v2dx * cs - v2dy * sn;
- var vy = v2dx * sn + v2dy * cs;
-
- // normalize
- var mag = distance(0, 0, vx, vy);
- var desiredMag = offset / sn;
- var scalar = desiredMag / mag;
-
- return [vx * scalar, vy * scalar];
-}
-
-function isClockWise(points) {
- const n = points.length;
- let a = 0.0;
- for (let p = n - 1, q = 0; q < n; p = q++) {
- a += points[p][0] * points[q][1] - points[q][0] * points[p][1];
- }
- return a * 0.5 < 0;
-}
-
-function pointOnLine(point, start, end) {
- const v1 = (point[0] - start[0]) * (end[1] - start[1]);
- const v2 = (end[0] - start[0]) * (point[1] - start[1]);
- if (v1 == v2 //叉乘
- //保证Q点坐标在pi,pj之间
- && Math.min(start[0], end[0]) <= point[0] && point[0] <= Math.max(start[0], end[0])
- && Math.min(start[1], end[1]) <= point[1] && point[1] <= Math.max(start[1], end[1]))
- return true;
- else
- return false;
-}
-
-function generateUvByVectors(vectors) {
- const box = new THREE.Box3().setFromPoints(vectors);
- const lenX = box.max.x - box.min.x;
- const lenZ = box.max.z - box.min.z;
- const uvs = [];
- for (let i = 0; i < vectors.length; i++) {
- const vertex = vectors[i];
- uvs.push(vertex.x / lenX, vertex.z / lenZ);
- }
- return uvs;
-}
\ No newline at end of file
diff --git a/src/style.css b/src/style.css
deleted file mode 100644
index 06ee45a..0000000
--- a/src/style.css
+++ /dev/null
@@ -1,13 +0,0 @@
-html,
-body {
- margin: 0;
- padding: 0;
- width: 100%;
- height: 100%;
-}
-
-#app {
- width: 100%;
- height: 100%;
- overflow: hidden;
-}
\ No newline at end of file
diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts
deleted file mode 100644
index df5ee88..0000000
--- a/src/vite-env.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-///
-
-
-declare module "./model/*.js"
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
deleted file mode 100644
index 8847c9a..0000000
--- a/tsconfig.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "compilerOptions": {
- "target": "ES2020",
- "useDefineForClassFields": true,
- "module": "ESNext",
- "lib": ["ES2020", "DOM", "DOM.Iterable"],
- "skipLibCheck": true,
-
- /* Bundler mode */
- "moduleResolution": "Bundler",
- "allowImportingTsExtensions": true,
- "isolatedModules": true,
- "moduleDetection": "force",
- "noEmit": true,
-
- /* Linting */
- "strict": true,
- "noUnusedLocals": true,
- "noUnusedParameters": true,
- "noFallthroughCasesInSwitch": true,
- "noUncheckedSideEffectImports": true
- },
- "include": ["src"]
-}
diff --git a/vite.config.ts b/vite.config.ts
deleted file mode 100644
index 732b0c1..0000000
--- a/vite.config.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { defineConfig } from "vite";
-import vue from "@vitejs/plugin-vue";
-
-// https://vite.dev/config/
-export default defineConfig({
- base: "/",
- plugins: [vue()],
-});