Browse Source

Added 19200 baudrate

Toby Chui 1 day ago
parent
commit
4b2ab742b0
68 changed files with 2344 additions and 71 deletions
  1. BIN
      3D models/usb-kvm case/OldVersions/case.0001.ipt
  2. BIN
      3D models/usb-kvm case/OldVersions/flag.0006.ipt
  3. BIN
      3D models/usb-kvm case/case.ipt
  4. 1583 0
      3D models/usb-kvm case/case.stp
  5. BIN
      3D models/usb-kvm case/flag.ipt
  6. 539 0
      3D models/usb-kvm case/flag.stp
  7. BIN
      3D models/usb-kvm case/lockfile.lck
  8. BIN
      3D models/usb-kvm case/test_fit.iam
  9. 11 0
      usbkvm/usbkvm_fw3/README.txt
  10. 87 0
      usbkvm/usbkvm_fw3/usbkvm_fw3.ino
  11. 0 0
      usbkvm/v1/remdeskd_cursor_only/.vscode/c_cpp_properties.json
  12. 0 0
      usbkvm/v1/remdeskd_cursor_only/.vscode/launch.json
  13. 0 0
      usbkvm/v1/remdeskd_cursor_only/.vscode/settings.json
  14. 0 0
      usbkvm/v1/remdeskd_cursor_only/go.mod
  15. 0 0
      usbkvm/v1/remdeskd_cursor_only/go.sum
  16. 0 0
      usbkvm/v1/remdeskd_cursor_only/main.go
  17. 0 0
      usbkvm/v1/remdeskd_cursor_only/mod/remdeshid/handler.go
  18. 0 0
      usbkvm/v1/remdeskd_cursor_only/mod/remdeshid/hidcomm.go
  19. 0 0
      usbkvm/v1/remdeskd_cursor_only/mod/remdeshid/hidconv.go
  20. 0 0
      usbkvm/v1/remdeskd_cursor_only/mod/remdeshid/remdeshid.go
  21. 0 0
      usbkvm/v1/remdeskd_cursor_only/mod/usbcapture/usbcapture.go
  22. 0 0
      usbkvm/v1/remdeskd_cursor_only/mod/usbcapture/video_device.go
  23. 0 0
      usbkvm/v1/remdeskd_cursor_only/www/index.html
  24. 0 0
      usbkvm/v1/testcase/go.mod
  25. 0 0
      usbkvm/v1/testcase/go.sum
  26. 0 0
      usbkvm/v1/testcase/keyboard_ctrl_alt_del.bat
  27. 0 0
      usbkvm/v1/testcase/keyboard_delete.bat
  28. 0 0
      usbkvm/v1/testcase/keyboard_funckey.bat
  29. 0 0
      usbkvm/v1/testcase/keyboard_modkey.bat
  30. 0 0
      usbkvm/v1/testcase/keyboard_press.bat
  31. 0 0
      usbkvm/v1/testcase/keyboard_write.bat
  32. 0 0
      usbkvm/v1/testcase/main.go
  33. 0 0
      usbkvm/v1/testcase/mouse_click.bat
  34. 0 0
      usbkvm/v1/testcase/mouse_home.bat
  35. 0 0
      usbkvm/v1/testcase/mouse_move.bat
  36. 0 0
      usbkvm/v1/testcase/mouse_scroll.bat
  37. 0 0
      usbkvm/v1/usbkvm_fw/keyboard_emu.ino
  38. 0 0
      usbkvm/v1/usbkvm_fw/mouse_emu.ino
  39. 0 0
      usbkvm/v1/usbkvm_fw/src/remdesHid/HIDClassCommon.h
  40. 0 0
      usbkvm/v1/usbkvm_fw/src/remdesHid/README.txt
  41. 0 0
      usbkvm/v1/usbkvm_fw/src/remdesHid/StdDescriptors.h
  42. 0 0
      usbkvm/v1/usbkvm_fw/src/remdesHid/USBHIDKeyboardMouse.c
  43. 0 0
      usbkvm/v1/usbkvm_fw/src/remdesHid/USBHIDKeyboardMouse.h
  44. 0 0
      usbkvm/v1/usbkvm_fw/src/remdesHid/USBconstant.c
  45. 0 0
      usbkvm/v1/usbkvm_fw/src/remdesHid/USBconstant.h
  46. 0 0
      usbkvm/v1/usbkvm_fw/src/remdesHid/USBhandler.c
  47. 0 0
      usbkvm/v1/usbkvm_fw/src/remdesHid/USBhandler.h
  48. 0 0
      usbkvm/v1/usbkvm_fw/usb_switch.ino
  49. 0 0
      usbkvm/v1/usbkvm_fw/usbkvm_fw.h
  50. 0 0
      usbkvm/v1/usbkvm_fw/usbkvm_fw.ino
  51. 0 0
      usbkvm/v4/testcase_fw2/go.mod
  52. 0 0
      usbkvm/v4/testcase_fw2/go.sum
  53. 4 0
      usbkvm/v4/testcase_fw2/info_get_keyboard_leds.bat
  54. 0 0
      usbkvm/v4/testcase_fw2/keyboard_ctrl_alt_del.bat
  55. 0 0
      usbkvm/v4/testcase_fw2/keyboard_funckey.bat
  56. 0 0
      usbkvm/v4/testcase_fw2/keyboard_modkey.bat
  57. 0 0
      usbkvm/v4/testcase_fw2/keyboard_multi_press.bat
  58. 0 0
      usbkvm/v4/testcase_fw2/keyboard_single_press.bat
  59. 0 0
      usbkvm/v4/testcase_fw2/main.go
  60. 0 0
      usbkvm/v4/testcase_fw2/mouse_click.bat
  61. 0 0
      usbkvm/v4/testcase_fw2/mouse_move_abs.bat
  62. 38 0
      usbkvm/v4/testcase_fw2/mouse_move_fast.bat
  63. 0 0
      usbkvm/v4/testcase_fw2/mouse_move_rel.bat
  64. 0 0
      usbkvm/v4/testcase_fw2/mouse_scroll.bat
  65. 1 0
      usbkvm/v4/usbkvm_fw2/ch9329_utils.ino
  66. 22 22
      usbkvm/v4/usbkvm_fw2/keyboard_emu.ino
  67. 0 0
      usbkvm/v4/usbkvm_fw2/mouse_emu.ino
  68. 59 49
      usbkvm/v4/usbkvm_fw2/usbkvm_fw2.ino

BIN
3D models/usb-kvm case/OldVersions/case.0001.ipt


BIN
3D models/usb-kvm case/OldVersions/flag.0006.ipt


BIN
3D models/usb-kvm case/case.ipt


+ 1583 - 0
3D models/usb-kvm case/case.stp

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

BIN
3D models/usb-kvm case/flag.ipt


+ 539 - 0
3D models/usb-kvm case/flag.stp

@@ -0,0 +1,539 @@
+ISO-10303-21;
+HEADER;
+/* Generated by software containing ST-Developer
+ * from STEP Tools, Inc. (www.steptools.com) 
+ */
+
+FILE_DESCRIPTION(
+/* description */ (''),
+/* implementation_level */ '2;1');
+
+FILE_NAME(
+/* name */ 
+'D:\\Invention\\RedesKVM\\RemdesKVM\\3D models\\usb-kvm case\\flag.stp',
+
+/* time_stamp */ '2025-06-24T19:11:33+08:00',
+/* author */ ('Toby'),
+/* organization */ (''),
+/* preprocessor_version */ 'ST-DEVELOPER v18.1',
+/* originating_system */ 'Autodesk Inventor 2021',
+/* authorisation */ '');
+
+FILE_SCHEMA (('AUTOMOTIVE_DESIGN { 1 0 10303 214 3 1 1 }'));
+ENDSEC;
+
+DATA;
+#10=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#13),#457);
+#11=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#464,#12);
+#12=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#14),#456);
+#13=STYLED_ITEM('',(#473),#14);
+#14=MANIFOLD_SOLID_BREP('Solid1',#271);
+#15=PLANE('',#294);
+#16=PLANE('',#295);
+#17=PLANE('',#299);
+#18=PLANE('',#300);
+#19=PLANE('',#301);
+#20=PLANE('',#302);
+#21=PLANE('',#303);
+#22=PLANE('',#304);
+#23=PLANE('',#305);
+#24=PLANE('',#306);
+#25=PLANE('',#307);
+#26=PLANE('',#308);
+#27=FACE_OUTER_BOUND('',#41,.T.);
+#28=FACE_OUTER_BOUND('',#42,.T.);
+#29=FACE_OUTER_BOUND('',#43,.T.);
+#30=FACE_OUTER_BOUND('',#44,.T.);
+#31=FACE_OUTER_BOUND('',#45,.T.);
+#32=FACE_OUTER_BOUND('',#46,.T.);
+#33=FACE_OUTER_BOUND('',#47,.T.);
+#34=FACE_OUTER_BOUND('',#48,.T.);
+#35=FACE_OUTER_BOUND('',#49,.T.);
+#36=FACE_OUTER_BOUND('',#50,.T.);
+#37=FACE_OUTER_BOUND('',#51,.T.);
+#38=FACE_OUTER_BOUND('',#52,.T.);
+#39=FACE_OUTER_BOUND('',#53,.T.);
+#40=FACE_OUTER_BOUND('',#54,.T.);
+#41=EDGE_LOOP('',(#183,#184,#185,#186));
+#42=EDGE_LOOP('',(#187,#188,#189,#190,#191,#192,#193,#194,#195,#196));
+#43=EDGE_LOOP('',(#197,#198,#199,#200,#201,#202));
+#44=EDGE_LOOP('',(#203,#204,#205,#206));
+#45=EDGE_LOOP('',(#207,#208,#209,#210,#211,#212,#213,#214,#215,#216));
+#46=EDGE_LOOP('',(#217,#218,#219,#220));
+#47=EDGE_LOOP('',(#221,#222,#223,#224));
+#48=EDGE_LOOP('',(#225,#226,#227,#228));
+#49=EDGE_LOOP('',(#229,#230,#231,#232));
+#50=EDGE_LOOP('',(#233,#234,#235,#236,#237,#238));
+#51=EDGE_LOOP('',(#239,#240,#241,#242));
+#52=EDGE_LOOP('',(#243,#244,#245,#246));
+#53=EDGE_LOOP('',(#247,#248,#249,#250));
+#54=EDGE_LOOP('',(#251,#252,#253,#254));
+#55=LINE('',#385,#87);
+#56=LINE('',#388,#88);
+#57=LINE('',#391,#89);
+#58=LINE('',#393,#90);
+#59=LINE('',#395,#91);
+#60=LINE('',#397,#92);
+#61=LINE('',#399,#93);
+#62=LINE('',#401,#94);
+#63=LINE('',#403,#95);
+#64=LINE('',#405,#96);
+#65=LINE('',#406,#97);
+#66=LINE('',#409,#98);
+#67=LINE('',#413,#99);
+#68=LINE('',#414,#100);
+#69=LINE('',#417,#101);
+#70=LINE('',#420,#102);
+#71=LINE('',#423,#103);
+#72=LINE('',#425,#104);
+#73=LINE('',#427,#105);
+#74=LINE('',#429,#106);
+#75=LINE('',#431,#107);
+#76=LINE('',#433,#108);
+#77=LINE('',#435,#109);
+#78=LINE('',#436,#110);
+#79=LINE('',#438,#111);
+#80=LINE('',#439,#112);
+#81=LINE('',#441,#113);
+#82=LINE('',#443,#114);
+#83=LINE('',#444,#115);
+#84=LINE('',#446,#116);
+#85=LINE('',#448,#117);
+#86=LINE('',#449,#118);
+#87=VECTOR('',#315,10.);
+#88=VECTOR('',#318,10.);
+#89=VECTOR('',#321,10.);
+#90=VECTOR('',#322,10.);
+#91=VECTOR('',#323,10.);
+#92=VECTOR('',#324,10.);
+#93=VECTOR('',#325,10.);
+#94=VECTOR('',#326,10.);
+#95=VECTOR('',#327,10.);
+#96=VECTOR('',#328,10.);
+#97=VECTOR('',#329,10.);
+#98=VECTOR('',#332,10.);
+#99=VECTOR('',#335,10.);
+#100=VECTOR('',#336,10.);
+#101=VECTOR('',#339,10.);
+#102=VECTOR('',#342,10.);
+#103=VECTOR('',#345,10.);
+#104=VECTOR('',#346,10.);
+#105=VECTOR('',#347,10.);
+#106=VECTOR('',#348,10.);
+#107=VECTOR('',#349,10.);
+#108=VECTOR('',#350,10.);
+#109=VECTOR('',#351,10.);
+#110=VECTOR('',#352,10.);
+#111=VECTOR('',#355,10.);
+#112=VECTOR('',#356,10.);
+#113=VECTOR('',#359,10.);
+#114=VECTOR('',#362,10.);
+#115=VECTOR('',#363,10.);
+#116=VECTOR('',#366,10.);
+#117=VECTOR('',#369,10.);
+#118=VECTOR('',#370,10.);
+#119=CIRCLE('',#292,1.);
+#120=CIRCLE('',#293,1.);
+#121=CIRCLE('',#296,1.);
+#122=CIRCLE('',#298,1.);
+#123=VERTEX_POINT('',#381);
+#124=VERTEX_POINT('',#382);
+#125=VERTEX_POINT('',#384);
+#126=VERTEX_POINT('',#386);
+#127=VERTEX_POINT('',#390);
+#128=VERTEX_POINT('',#392);
+#129=VERTEX_POINT('',#394);
+#130=VERTEX_POINT('',#396);
+#131=VERTEX_POINT('',#398);
+#132=VERTEX_POINT('',#400);
+#133=VERTEX_POINT('',#402);
+#134=VERTEX_POINT('',#404);
+#135=VERTEX_POINT('',#408);
+#136=VERTEX_POINT('',#410);
+#137=VERTEX_POINT('',#412);
+#138=VERTEX_POINT('',#416);
+#139=VERTEX_POINT('',#418);
+#140=VERTEX_POINT('',#422);
+#141=VERTEX_POINT('',#424);
+#142=VERTEX_POINT('',#426);
+#143=VERTEX_POINT('',#428);
+#144=VERTEX_POINT('',#430);
+#145=VERTEX_POINT('',#432);
+#146=VERTEX_POINT('',#434);
+#147=EDGE_CURVE('',#123,#124,#119,.T.);
+#148=EDGE_CURVE('',#124,#125,#55,.T.);
+#149=EDGE_CURVE('',#125,#126,#120,.T.);
+#150=EDGE_CURVE('',#126,#123,#56,.T.);
+#151=EDGE_CURVE('',#127,#126,#57,.T.);
+#152=EDGE_CURVE('',#128,#127,#58,.T.);
+#153=EDGE_CURVE('',#129,#128,#59,.T.);
+#154=EDGE_CURVE('',#130,#129,#60,.T.);
+#155=EDGE_CURVE('',#130,#131,#61,.T.);
+#156=EDGE_CURVE('',#132,#131,#62,.T.);
+#157=EDGE_CURVE('',#132,#133,#63,.T.);
+#158=EDGE_CURVE('',#134,#133,#64,.T.);
+#159=EDGE_CURVE('',#134,#123,#65,.T.);
+#160=EDGE_CURVE('',#135,#125,#66,.T.);
+#161=EDGE_CURVE('',#136,#135,#121,.T.);
+#162=EDGE_CURVE('',#137,#136,#67,.T.);
+#163=EDGE_CURVE('',#127,#137,#68,.T.);
+#164=EDGE_CURVE('',#135,#138,#69,.T.);
+#165=EDGE_CURVE('',#138,#139,#122,.T.);
+#166=EDGE_CURVE('',#139,#136,#70,.T.);
+#167=EDGE_CURVE('',#140,#139,#71,.T.);
+#168=EDGE_CURVE('',#141,#140,#72,.T.);
+#169=EDGE_CURVE('',#142,#141,#73,.T.);
+#170=EDGE_CURVE('',#143,#142,#74,.T.);
+#171=EDGE_CURVE('',#143,#144,#75,.T.);
+#172=EDGE_CURVE('',#145,#144,#76,.T.);
+#173=EDGE_CURVE('',#145,#146,#77,.T.);
+#174=EDGE_CURVE('',#137,#146,#78,.T.);
+#175=EDGE_CURVE('',#129,#145,#79,.T.);
+#176=EDGE_CURVE('',#144,#130,#80,.T.);
+#177=EDGE_CURVE('',#146,#128,#81,.T.);
+#178=EDGE_CURVE('',#142,#132,#82,.T.);
+#179=EDGE_CURVE('',#131,#143,#83,.T.);
+#180=EDGE_CURVE('',#133,#141,#84,.T.);
+#181=EDGE_CURVE('',#140,#134,#85,.T.);
+#182=EDGE_CURVE('',#124,#138,#86,.T.);
+#183=ORIENTED_EDGE('',*,*,#147,.T.);
+#184=ORIENTED_EDGE('',*,*,#148,.T.);
+#185=ORIENTED_EDGE('',*,*,#149,.T.);
+#186=ORIENTED_EDGE('',*,*,#150,.T.);
+#187=ORIENTED_EDGE('',*,*,#150,.F.);
+#188=ORIENTED_EDGE('',*,*,#151,.F.);
+#189=ORIENTED_EDGE('',*,*,#152,.F.);
+#190=ORIENTED_EDGE('',*,*,#153,.F.);
+#191=ORIENTED_EDGE('',*,*,#154,.F.);
+#192=ORIENTED_EDGE('',*,*,#155,.T.);
+#193=ORIENTED_EDGE('',*,*,#156,.F.);
+#194=ORIENTED_EDGE('',*,*,#157,.T.);
+#195=ORIENTED_EDGE('',*,*,#158,.F.);
+#196=ORIENTED_EDGE('',*,*,#159,.T.);
+#197=ORIENTED_EDGE('',*,*,#149,.F.);
+#198=ORIENTED_EDGE('',*,*,#160,.F.);
+#199=ORIENTED_EDGE('',*,*,#161,.F.);
+#200=ORIENTED_EDGE('',*,*,#162,.F.);
+#201=ORIENTED_EDGE('',*,*,#163,.F.);
+#202=ORIENTED_EDGE('',*,*,#151,.T.);
+#203=ORIENTED_EDGE('',*,*,#161,.T.);
+#204=ORIENTED_EDGE('',*,*,#164,.T.);
+#205=ORIENTED_EDGE('',*,*,#165,.T.);
+#206=ORIENTED_EDGE('',*,*,#166,.T.);
+#207=ORIENTED_EDGE('',*,*,#166,.F.);
+#208=ORIENTED_EDGE('',*,*,#167,.F.);
+#209=ORIENTED_EDGE('',*,*,#168,.F.);
+#210=ORIENTED_EDGE('',*,*,#169,.F.);
+#211=ORIENTED_EDGE('',*,*,#170,.F.);
+#212=ORIENTED_EDGE('',*,*,#171,.T.);
+#213=ORIENTED_EDGE('',*,*,#172,.F.);
+#214=ORIENTED_EDGE('',*,*,#173,.T.);
+#215=ORIENTED_EDGE('',*,*,#174,.F.);
+#216=ORIENTED_EDGE('',*,*,#162,.T.);
+#217=ORIENTED_EDGE('',*,*,#154,.T.);
+#218=ORIENTED_EDGE('',*,*,#175,.T.);
+#219=ORIENTED_EDGE('',*,*,#172,.T.);
+#220=ORIENTED_EDGE('',*,*,#176,.T.);
+#221=ORIENTED_EDGE('',*,*,#175,.F.);
+#222=ORIENTED_EDGE('',*,*,#153,.T.);
+#223=ORIENTED_EDGE('',*,*,#177,.F.);
+#224=ORIENTED_EDGE('',*,*,#173,.F.);
+#225=ORIENTED_EDGE('',*,*,#170,.T.);
+#226=ORIENTED_EDGE('',*,*,#178,.T.);
+#227=ORIENTED_EDGE('',*,*,#156,.T.);
+#228=ORIENTED_EDGE('',*,*,#179,.T.);
+#229=ORIENTED_EDGE('',*,*,#178,.F.);
+#230=ORIENTED_EDGE('',*,*,#169,.T.);
+#231=ORIENTED_EDGE('',*,*,#180,.F.);
+#232=ORIENTED_EDGE('',*,*,#157,.F.);
+#233=ORIENTED_EDGE('',*,*,#147,.F.);
+#234=ORIENTED_EDGE('',*,*,#159,.F.);
+#235=ORIENTED_EDGE('',*,*,#181,.F.);
+#236=ORIENTED_EDGE('',*,*,#167,.T.);
+#237=ORIENTED_EDGE('',*,*,#165,.F.);
+#238=ORIENTED_EDGE('',*,*,#182,.F.);
+#239=ORIENTED_EDGE('',*,*,#148,.F.);
+#240=ORIENTED_EDGE('',*,*,#182,.T.);
+#241=ORIENTED_EDGE('',*,*,#164,.F.);
+#242=ORIENTED_EDGE('',*,*,#160,.T.);
+#243=ORIENTED_EDGE('',*,*,#163,.T.);
+#244=ORIENTED_EDGE('',*,*,#174,.T.);
+#245=ORIENTED_EDGE('',*,*,#177,.T.);
+#246=ORIENTED_EDGE('',*,*,#152,.T.);
+#247=ORIENTED_EDGE('',*,*,#181,.T.);
+#248=ORIENTED_EDGE('',*,*,#158,.T.);
+#249=ORIENTED_EDGE('',*,*,#180,.T.);
+#250=ORIENTED_EDGE('',*,*,#168,.T.);
+#251=ORIENTED_EDGE('',*,*,#176,.F.);
+#252=ORIENTED_EDGE('',*,*,#171,.F.);
+#253=ORIENTED_EDGE('',*,*,#179,.F.);
+#254=ORIENTED_EDGE('',*,*,#155,.F.);
+#255=CYLINDRICAL_SURFACE('',#291,1.);
+#256=CYLINDRICAL_SURFACE('',#297,1.);
+#257=ADVANCED_FACE('',(#27),#255,.T.);
+#258=ADVANCED_FACE('',(#28),#15,.T.);
+#259=ADVANCED_FACE('',(#29),#16,.T.);
+#260=ADVANCED_FACE('',(#30),#256,.T.);
+#261=ADVANCED_FACE('',(#31),#17,.T.);
+#262=ADVANCED_FACE('',(#32),#18,.T.);
+#263=ADVANCED_FACE('',(#33),#19,.T.);
+#264=ADVANCED_FACE('',(#34),#20,.T.);
+#265=ADVANCED_FACE('',(#35),#21,.T.);
+#266=ADVANCED_FACE('',(#36),#22,.T.);
+#267=ADVANCED_FACE('',(#37),#23,.T.);
+#268=ADVANCED_FACE('',(#38),#24,.T.);
+#269=ADVANCED_FACE('',(#39),#25,.T.);
+#270=ADVANCED_FACE('',(#40),#26,.F.);
+#271=CLOSED_SHELL('',(#257,#258,#259,#260,#261,#262,#263,#264,#265,#266,
+#267,#268,#269,#270));
+#272=DERIVED_UNIT_ELEMENT(#274,1.);
+#273=DERIVED_UNIT_ELEMENT(#459,3.);
+#274=(
+MASS_UNIT()
+NAMED_UNIT(*)
+SI_UNIT($,.GRAM.)
+);
+#275=DERIVED_UNIT((#272,#273));
+#276=MEASURE_REPRESENTATION_ITEM('density measure',
+POSITIVE_RATIO_MEASURE(1.),#275);
+#277=PROPERTY_DEFINITION_REPRESENTATION(#282,#279);
+#278=PROPERTY_DEFINITION_REPRESENTATION(#283,#280);
+#279=REPRESENTATION('material name',(#281),#456);
+#280=REPRESENTATION('density',(#276),#456);
+#281=DESCRIPTIVE_REPRESENTATION_ITEM('Generic','Generic');
+#282=PROPERTY_DEFINITION('material property','material name',#466);
+#283=PROPERTY_DEFINITION('material property','density of part',#466);
+#284=DATE_TIME_ROLE('creation_date');
+#285=APPLIED_DATE_AND_TIME_ASSIGNMENT(#286,#284,(#466));
+#286=DATE_AND_TIME(#287,#288);
+#287=CALENDAR_DATE(2025,24,6);
+#288=LOCAL_TIME(0,0,0.,#289);
+#289=COORDINATED_UNIVERSAL_TIME_OFFSET(0,0,.BEHIND.);
+#290=AXIS2_PLACEMENT_3D('placement',#379,#309,#310);
+#291=AXIS2_PLACEMENT_3D('',#380,#311,#312);
+#292=AXIS2_PLACEMENT_3D('',#383,#313,#314);
+#293=AXIS2_PLACEMENT_3D('',#387,#316,#317);
+#294=AXIS2_PLACEMENT_3D('',#389,#319,#320);
+#295=AXIS2_PLACEMENT_3D('',#407,#330,#331);
+#296=AXIS2_PLACEMENT_3D('',#411,#333,#334);
+#297=AXIS2_PLACEMENT_3D('',#415,#337,#338);
+#298=AXIS2_PLACEMENT_3D('',#419,#340,#341);
+#299=AXIS2_PLACEMENT_3D('',#421,#343,#344);
+#300=AXIS2_PLACEMENT_3D('',#437,#353,#354);
+#301=AXIS2_PLACEMENT_3D('',#440,#357,#358);
+#302=AXIS2_PLACEMENT_3D('',#442,#360,#361);
+#303=AXIS2_PLACEMENT_3D('',#445,#364,#365);
+#304=AXIS2_PLACEMENT_3D('',#447,#367,#368);
+#305=AXIS2_PLACEMENT_3D('',#450,#371,#372);
+#306=AXIS2_PLACEMENT_3D('',#451,#373,#374);
+#307=AXIS2_PLACEMENT_3D('',#452,#375,#376);
+#308=AXIS2_PLACEMENT_3D('',#453,#377,#378);
+#309=DIRECTION('axis',(0.,0.,1.));
+#310=DIRECTION('refdir',(1.,0.,0.));
+#311=DIRECTION('center_axis',(0.,1.,0.));
+#312=DIRECTION('ref_axis',(0.707106781186548,0.,0.707106781186548));
+#313=DIRECTION('center_axis',(0.,-1.,0.));
+#314=DIRECTION('ref_axis',(0.707106781186548,0.,0.707106781186548));
+#315=DIRECTION('',(0.,-1.,0.));
+#316=DIRECTION('center_axis',(-1.33761810195802E-16,1.,0.));
+#317=DIRECTION('ref_axis',(0.707106781186548,0.,0.707106781186548));
+#318=DIRECTION('',(0.,1.,0.));
+#319=DIRECTION('center_axis',(1.,0.,0.));
+#320=DIRECTION('ref_axis',(0.,1.,0.));
+#321=DIRECTION('',(0.,0.,1.));
+#322=DIRECTION('',(0.,1.,0.));
+#323=DIRECTION('',(0.,0.,1.));
+#324=DIRECTION('',(0.,-0.707106781186548,0.707106781186547));
+#325=DIRECTION('',(0.,1.,0.));
+#326=DIRECTION('',(0.,-0.707106781186548,-0.707106781186548));
+#327=DIRECTION('',(0.,0.,1.));
+#328=DIRECTION('',(0.,1.,0.));
+#329=DIRECTION('',(0.,0.,1.));
+#330=DIRECTION('center_axis',(1.33761810195802E-16,-1.,0.));
+#331=DIRECTION('ref_axis',(1.,1.33761810195802E-16,0.));
+#332=DIRECTION('',(1.,1.33761810195802E-16,0.));
+#333=DIRECTION('center_axis',(-1.33761810195802E-16,1.,0.));
+#334=DIRECTION('ref_axis',(-0.707106781186548,-3.92523114670943E-16,0.707106781186548));
+#335=DIRECTION('',(0.,0.,1.));
+#336=DIRECTION('',(-1.,-1.33761810195802E-16,0.));
+#337=DIRECTION('center_axis',(4.44089209850063E-16,-1.,0.));
+#338=DIRECTION('ref_axis',(-0.707106781186548,-3.92523114670943E-16,0.707106781186548));
+#339=DIRECTION('',(-4.44089209850063E-16,1.,0.));
+#340=DIRECTION('center_axis',(0.,-1.,0.));
+#341=DIRECTION('ref_axis',(-0.707106781186548,-3.92523114670943E-16,0.707106781186548));
+#342=DIRECTION('',(4.44089209850063E-16,-1.,0.));
+#343=DIRECTION('center_axis',(-1.,-4.44089209850063E-16,0.));
+#344=DIRECTION('ref_axis',(4.44089209850063E-16,-1.,0.));
+#345=DIRECTION('',(0.,0.,1.));
+#346=DIRECTION('',(4.44089209850063E-16,-1.,0.));
+#347=DIRECTION('',(0.,0.,1.));
+#348=DIRECTION('',(-3.14018491736755E-16,0.707106781186548,0.707106781186548));
+#349=DIRECTION('',(4.44089209850063E-16,-1.,0.));
+#350=DIRECTION('',(-3.14018491736755E-16,0.707106781186548,-0.707106781186547));
+#351=DIRECTION('',(0.,0.,1.));
+#352=DIRECTION('',(4.44089209850063E-16,-1.,0.));
+#353=DIRECTION('center_axis',(8.67018927988028E-17,-0.707106781186547,-0.707106781186548));
+#354=DIRECTION('ref_axis',(-1.,0.,-1.22614992679485E-16));
+#355=DIRECTION('',(-1.,-1.22614992679485E-16,0.));
+#356=DIRECTION('',(1.,1.22614992679485E-16,0.));
+#357=DIRECTION('center_axis',(1.22614992679485E-16,-1.,0.));
+#358=DIRECTION('ref_axis',(1.,1.22614992679485E-16,0.));
+#359=DIRECTION('',(1.,1.22614992679485E-16,0.));
+#360=DIRECTION('center_axis',(0.,0.707106781186548,-0.707106781186548));
+#361=DIRECTION('ref_axis',(-1.,0.,0.));
+#362=DIRECTION('',(1.,0.,0.));
+#363=DIRECTION('',(-1.,0.,0.));
+#364=DIRECTION('center_axis',(0.,1.,0.));
+#365=DIRECTION('ref_axis',(-1.,0.,0.));
+#366=DIRECTION('',(-1.,0.,0.));
+#367=DIRECTION('center_axis',(0.,1.,0.));
+#368=DIRECTION('ref_axis',(-1.,0.,0.));
+#369=DIRECTION('',(1.,0.,0.));
+#370=DIRECTION('',(-1.,0.,0.));
+#371=DIRECTION('center_axis',(0.,0.,1.));
+#372=DIRECTION('ref_axis',(1.,0.,0.));
+#373=DIRECTION('center_axis',(0.,0.,1.));
+#374=DIRECTION('ref_axis',(1.,0.,0.));
+#375=DIRECTION('center_axis',(0.,0.,1.));
+#376=DIRECTION('ref_axis',(1.,0.,0.));
+#377=DIRECTION('center_axis',(0.,0.,1.));
+#378=DIRECTION('ref_axis',(1.,0.,0.));
+#379=CARTESIAN_POINT('',(0.,0.,0.));
+#380=CARTESIAN_POINT('Origin',(14.6630522088353,-0.87851396690741,10.2));
+#381=CARTESIAN_POINT('',(15.6630522088353,1.37148603309259,10.2));
+#382=CARTESIAN_POINT('',(14.6630522088353,1.37148603309259,11.2));
+#383=CARTESIAN_POINT('Origin',(14.6630522088353,1.37148603309259,10.2));
+#384=CARTESIAN_POINT('',(14.6630522088353,-0.62851396690741,11.2));
+#385=CARTESIAN_POINT('',(14.6630522088353,-0.87851396690741,11.2));
+#386=CARTESIAN_POINT('',(15.6630522088353,-0.628513966907409,10.2));
+#387=CARTESIAN_POINT('Origin',(14.6630522088353,-0.628513966907413,10.2));
+#388=CARTESIAN_POINT('',(15.6630522088353,-0.87851396690741,10.2));
+#389=CARTESIAN_POINT('Origin',(15.6630522088353,-2.12851396690741,0.));
+#390=CARTESIAN_POINT('',(15.6630522088353,-0.628513966907409,1.2));
+#391=CARTESIAN_POINT('',(15.6630522088353,-0.628513966907409,1.2));
+#392=CARTESIAN_POINT('',(15.6630522088353,-2.12851396690741,1.2));
+#393=CARTESIAN_POINT('',(15.6630522088353,-2.12851396690741,1.2));
+#394=CARTESIAN_POINT('',(15.6630522088353,-2.12851396690741,1.));
+#395=CARTESIAN_POINT('',(15.6630522088353,-2.12851396690741,0.));
+#396=CARTESIAN_POINT('',(15.6630522088353,-1.12851396690741,0.));
+#397=CARTESIAN_POINT('',(15.6630522088353,-1.62851396690741,0.500000000000001));
+#398=CARTESIAN_POINT('',(15.6630522088353,1.87148603309259,0.));
+#399=CARTESIAN_POINT('',(15.6630522088353,-2.12851396690741,0.));
+#400=CARTESIAN_POINT('',(15.6630522088353,2.87148603309259,1.));
+#401=CARTESIAN_POINT('',(15.6630522088353,1.12148603309259,-0.749999999999999));
+#402=CARTESIAN_POINT('',(15.6630522088353,2.87148603309259,1.2));
+#403=CARTESIAN_POINT('',(15.6630522088353,2.87148603309259,0.));
+#404=CARTESIAN_POINT('',(15.6630522088353,1.37148603309259,1.2));
+#405=CARTESIAN_POINT('',(15.6630522088353,-2.12851396690741,1.2));
+#406=CARTESIAN_POINT('',(15.6630522088353,1.37148603309259,1.2));
+#407=CARTESIAN_POINT('Origin',(-9.23694779116466,-0.628513966907413,1.2));
+#408=CARTESIAN_POINT('',(-8.23694779116466,-0.628513966907413,11.2));
+#409=CARTESIAN_POINT('',(-9.23694779116466,-0.628513966907413,11.2));
+#410=CARTESIAN_POINT('',(-9.23694779116466,-0.628513966907413,10.2));
+#411=CARTESIAN_POINT('Origin',(-8.23694779116466,-0.628513966907412,10.2));
+#412=CARTESIAN_POINT('',(-9.23694779116466,-0.628513966907413,1.2));
+#413=CARTESIAN_POINT('',(-9.23694779116466,-0.628513966907413,1.2));
+#414=CARTESIAN_POINT('',(-3.01194779116466,-0.628513966907412,1.2));
+#415=CARTESIAN_POINT('Origin',(-8.23694779116466,1.62148603309259,10.2));
+#416=CARTESIAN_POINT('',(-8.23694779116466,1.37148603309259,11.2));
+#417=CARTESIAN_POINT('',(-8.23694779116466,1.62148603309259,11.2));
+#418=CARTESIAN_POINT('',(-9.23694779116466,1.37148603309259,10.2));
+#419=CARTESIAN_POINT('Origin',(-8.23694779116466,1.37148603309258,10.2));
+#420=CARTESIAN_POINT('',(-9.23694779116466,1.62148603309259,10.2));
+#421=CARTESIAN_POINT('Origin',(-9.23694779116466,2.87148603309259,0.));
+#422=CARTESIAN_POINT('',(-9.23694779116466,1.37148603309259,1.2));
+#423=CARTESIAN_POINT('',(-9.23694779116466,1.37148603309259,1.2));
+#424=CARTESIAN_POINT('',(-9.23694779116466,2.87148603309259,1.2));
+#425=CARTESIAN_POINT('',(-9.23694779116466,2.87148603309259,1.2));
+#426=CARTESIAN_POINT('',(-9.23694779116466,2.87148603309259,1.));
+#427=CARTESIAN_POINT('',(-9.23694779116466,2.87148603309259,0.));
+#428=CARTESIAN_POINT('',(-9.23694779116466,1.87148603309259,0.));
+#429=CARTESIAN_POINT('',(-9.23694779116466,2.37148603309259,0.499999999999998));
+#430=CARTESIAN_POINT('',(-9.23694779116466,-1.12851396690741,0.));
+#431=CARTESIAN_POINT('',(-9.23694779116466,2.87148603309259,0.));
+#432=CARTESIAN_POINT('',(-9.23694779116466,-2.12851396690741,1.));
+#433=CARTESIAN_POINT('',(-9.23694779116466,-0.378513966907411,-0.75));
+#434=CARTESIAN_POINT('',(-9.23694779116466,-2.12851396690741,1.2));
+#435=CARTESIAN_POINT('',(-9.23694779116466,-2.12851396690741,0.));
+#436=CARTESIAN_POINT('',(-9.23694779116466,2.87148603309259,1.2));
+#437=CARTESIAN_POINT('Origin',(-3.01194779116466,-1.62851396690741,0.5));
+#438=CARTESIAN_POINT('',(-3.01194779116466,-2.12851396690741,1.));
+#439=CARTESIAN_POINT('',(-3.01194779116466,-1.12851396690741,0.));
+#440=CARTESIAN_POINT('Origin',(-9.23694779116466,-2.12851396690741,0.));
+#441=CARTESIAN_POINT('',(-9.23694779116466,-2.12851396690741,1.2));
+#442=CARTESIAN_POINT('Origin',(9.43805220883534,2.37148603309259,0.5));
+#443=CARTESIAN_POINT('',(9.43805220883534,2.87148603309259,1.));
+#444=CARTESIAN_POINT('',(9.43805220883534,1.87148603309259,0.));
+#445=CARTESIAN_POINT('Origin',(15.6630522088353,2.87148603309259,0.));
+#446=CARTESIAN_POINT('',(15.6630522088353,2.87148603309259,1.2));
+#447=CARTESIAN_POINT('Origin',(15.6630522088353,1.37148603309259,1.2));
+#448=CARTESIAN_POINT('',(9.43805220883534,1.37148603309259,1.2));
+#449=CARTESIAN_POINT('',(15.6630522088353,1.37148603309259,11.2));
+#450=CARTESIAN_POINT('Origin',(3.21305220883535,0.371486033092588,11.2));
+#451=CARTESIAN_POINT('Origin',(3.21305220883534,0.371486033092589,1.2));
+#452=CARTESIAN_POINT('Origin',(3.21305220883534,0.371486033092589,1.2));
+#453=CARTESIAN_POINT('Origin',(3.21305220883534,0.371486033092589,0.));
+#454=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#458,
+'DISTANCE_ACCURACY_VALUE',
+'Maximum model space distance between geometric entities at asserted c
+onnectivities');
+#455=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#458,
+'DISTANCE_ACCURACY_VALUE',
+'Maximum model space distance between geometric entities at asserted c
+onnectivities');
+#456=(
+GEOMETRIC_REPRESENTATION_CONTEXT(3)
+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#454))
+GLOBAL_UNIT_ASSIGNED_CONTEXT((#458,#460,#461))
+REPRESENTATION_CONTEXT('','3D')
+);
+#457=(
+GEOMETRIC_REPRESENTATION_CONTEXT(3)
+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#455))
+GLOBAL_UNIT_ASSIGNED_CONTEXT((#458,#460,#461))
+REPRESENTATION_CONTEXT('','3D')
+);
+#458=(
+LENGTH_UNIT()
+NAMED_UNIT(*)
+SI_UNIT(.MILLI.,.METRE.)
+);
+#459=(
+LENGTH_UNIT()
+NAMED_UNIT(*)
+SI_UNIT(.CENTI.,.METRE.)
+);
+#460=(
+NAMED_UNIT(*)
+PLANE_ANGLE_UNIT()
+SI_UNIT($,.RADIAN.)
+);
+#461=(
+NAMED_UNIT(*)
+SI_UNIT($,.STERADIAN.)
+SOLID_ANGLE_UNIT()
+);
+#462=SHAPE_DEFINITION_REPRESENTATION(#463,#464);
+#463=PRODUCT_DEFINITION_SHAPE('',$,#466);
+#464=SHAPE_REPRESENTATION('',(#290),#456);
+#465=PRODUCT_DEFINITION_CONTEXT('part definition',#470,'design');
+#466=PRODUCT_DEFINITION('flag','flag',#467,#465);
+#467=PRODUCT_DEFINITION_FORMATION('',$,#472);
+#468=PRODUCT_RELATED_PRODUCT_CATEGORY('flag','flag',(#472));
+#469=APPLICATION_PROTOCOL_DEFINITION('international standard',
+'automotive_design',2009,#470);
+#470=APPLICATION_CONTEXT(
+'Core Data for Automotive Mechanical Design Process');
+#471=PRODUCT_CONTEXT('part definition',#470,'mechanical');
+#472=PRODUCT('flag','flag',$,(#471));
+#473=PRESENTATION_STYLE_ASSIGNMENT((#474));
+#474=SURFACE_STYLE_USAGE(.BOTH.,#477);
+#475=SURFACE_STYLE_RENDERING_WITH_PROPERTIES($,#481,(#476));
+#476=SURFACE_STYLE_TRANSPARENT(0.);
+#477=SURFACE_SIDE_STYLE('',(#478,#475));
+#478=SURFACE_STYLE_FILL_AREA(#479);
+#479=FILL_AREA_STYLE('',(#480));
+#480=FILL_AREA_STYLE_COLOUR('',#481);
+#481=COLOUR_RGB('',0.749019607843137,0.749019607843137,0.749019607843137);
+ENDSEC;
+END-ISO-10303-21;

BIN
3D models/usb-kvm case/lockfile.lck


BIN
3D models/usb-kvm case/test_fit.iam


+ 11 - 0
usbkvm/usbkvm_fw3/README.txt

@@ -0,0 +1,11 @@
+By default the CH9329 uses 9600 baudrate to communicate with MCU
+However, this might significantly reduce the fps of the cursor
+If you want a smoother cursor experience, follow the steps below to configure
+the CH9329 to use a higher baudrate to communicate with CH552G
+
+1. Flash the CH552G with Serial0 9600 baudrate to act as a USB to UART converter
+2. Plug in the CH9239 port to your slave computer so it get power
+3. Use the remdeskvmd -mode=cfgchip command to set the baudrate to 19200
+4. Disconnect the CH9329 KVM port that also power down the CH9329
+5. Flash the CH552G with Serial0 updated to 19200 baudrate
+6. Repower the CH9329, now CH552G shd be able to communicate with it using 19200 baudrate

+ 87 - 0
usbkvm/usbkvm_fw3/usbkvm_fw3.ino

@@ -0,0 +1,87 @@
+/*
+  RemdesKVM USB-KVM
+  Firmware for PCB design v4 or above
+
+  Author: tobychui
+
+  Upload Settings
+  CH552G  
+  24Mhz (Internal)
+*/
+#include <Serial.h>
+
+uint8_t c = 0x00;
+
+// Send a CH9329 cmd via UART0
+void send_cmd(uint8_t cmd, uint8_t* data, uint8_t length) {
+  uint8_t sum = 0;
+  Serial0_write(0x57);
+  sum += 0x57;
+  Serial0_write(0xAB);
+  sum += 0xAB;
+  Serial0_write(0x00);
+
+  Serial0_write(cmd);
+  sum += cmd;
+  Serial0_write(length);
+  sum += length;
+  for (int i = 0; i < length; i++) {
+    Serial0_write(data[i]);
+    sum += data[i];
+  }
+  Serial0_write(sum);
+}
+
+// flush the serial RX (blocking)
+void flush_cmd_resp() {
+  delay(100);
+  while (Serial0_available()) {
+    uint8_t b = Serial0_read();
+    USBSerial_print("0x");
+    if (b < 0x10) USBSerial_print("0");
+    USBSerial_print(b, HEX);
+    USBSerial_print(" ");
+  }
+  USBSerial_println("");
+}
+
+// Set the USB descriptor exposed to the slave device
+void setup_keyboard_chip_cfg() {
+  //Set manufacturer string
+  uint8_t manufacturer_string[9] = { 0x00, 0x07, 'i', 'm', 'u', 's', 'l', 'a', 'b' };
+  send_cmd(0x0B, manufacturer_string, 9);
+  flush_cmd_resp();
+  //Set product string
+  uint8_t product_string[11] = { 0x01, 0x09, 'R', 'e', 'm', 'd', 'e', 's', 'K', 'V', 'M' };
+  send_cmd(0x0B, product_string, 11);
+  flush_cmd_resp();
+}
+
+//This function handles the incoming data from CH9329
+void handle_cmd_processing() {
+}
+
+//This function will handle the incoming cmd from RemdesKVM control software
+//return 0x00 if success and 0x01 if error
+void handle_ctrl_cmd() {
+}
+
+void setup() {
+  //Serial0_begin(9600);  // CH9329 UART default baudrate (uncomment this before running -cfgchip)
+  Serial0_begin(19200);
+  delay(100);
+  setup_keyboard_chip_cfg();
+}
+
+void loop() {
+  // Read characters into buffer
+  if (USBSerial_available()) {
+    c = USBSerial_read();
+    Serial0_write(c);
+  }
+
+  if (Serial0_available()) {
+    c = Serial0_read();
+    USBSerial_write(c);
+  }
+}

+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/.vscode/c_cpp_properties.json → usbkvm/v1/remdeskd_cursor_only/.vscode/c_cpp_properties.json


+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/.vscode/launch.json → usbkvm/v1/remdeskd_cursor_only/.vscode/launch.json


+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/.vscode/settings.json → usbkvm/v1/remdeskd_cursor_only/.vscode/settings.json


+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/go.mod → usbkvm/v1/remdeskd_cursor_only/go.mod


+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/go.sum → usbkvm/v1/remdeskd_cursor_only/go.sum


+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/main.go → usbkvm/v1/remdeskd_cursor_only/main.go


+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/mod/remdeshid/handler.go → usbkvm/v1/remdeskd_cursor_only/mod/remdeshid/handler.go


+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/mod/remdeshid/hidcomm.go → usbkvm/v1/remdeskd_cursor_only/mod/remdeshid/hidcomm.go


+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/mod/remdeshid/hidconv.go → usbkvm/v1/remdeskd_cursor_only/mod/remdeshid/hidconv.go


+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/mod/remdeshid/remdeshid.go → usbkvm/v1/remdeskd_cursor_only/mod/remdeshid/remdeshid.go


+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/mod/usbcapture/usbcapture.go → usbkvm/v1/remdeskd_cursor_only/mod/usbcapture/usbcapture.go


+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/mod/usbcapture/video_device.go → usbkvm/v1/remdeskd_cursor_only/mod/usbcapture/video_device.go


+ 0 - 0
usbkvm/legacy/remdeskd_cursor_only/www/index.html → usbkvm/v1/remdeskd_cursor_only/www/index.html


+ 0 - 0
usbkvm/legacy/testcase/go.mod → usbkvm/v1/testcase/go.mod


+ 0 - 0
usbkvm/legacy/testcase/go.sum → usbkvm/v1/testcase/go.sum


+ 0 - 0
usbkvm/legacy/testcase/keyboard_ctrl_alt_del.bat → usbkvm/v1/testcase/keyboard_ctrl_alt_del.bat


+ 0 - 0
usbkvm/legacy/testcase/keyboard_delete.bat → usbkvm/v1/testcase/keyboard_delete.bat


+ 0 - 0
usbkvm/legacy/testcase/keyboard_funckey.bat → usbkvm/v1/testcase/keyboard_funckey.bat


+ 0 - 0
usbkvm/legacy/testcase/keyboard_modkey.bat → usbkvm/v1/testcase/keyboard_modkey.bat


+ 0 - 0
usbkvm/legacy/testcase/keyboard_press.bat → usbkvm/v1/testcase/keyboard_press.bat


+ 0 - 0
usbkvm/legacy/testcase/keyboard_write.bat → usbkvm/v1/testcase/keyboard_write.bat


+ 0 - 0
usbkvm/legacy/testcase/main.go → usbkvm/v1/testcase/main.go


+ 0 - 0
usbkvm/legacy/testcase/mouse_click.bat → usbkvm/v1/testcase/mouse_click.bat


+ 0 - 0
usbkvm/legacy/testcase/mouse_home.bat → usbkvm/v1/testcase/mouse_home.bat


+ 0 - 0
usbkvm/legacy/testcase/mouse_move.bat → usbkvm/v1/testcase/mouse_move.bat


+ 0 - 0
usbkvm/legacy/testcase/mouse_scroll.bat → usbkvm/v1/testcase/mouse_scroll.bat


+ 0 - 0
usbkvm/legacy/usbkvm_fw/keyboard_emu.ino → usbkvm/v1/usbkvm_fw/keyboard_emu.ino


+ 0 - 0
usbkvm/legacy/usbkvm_fw/mouse_emu.ino → usbkvm/v1/usbkvm_fw/mouse_emu.ino


+ 0 - 0
usbkvm/legacy/usbkvm_fw/src/remdesHid/HIDClassCommon.h → usbkvm/v1/usbkvm_fw/src/remdesHid/HIDClassCommon.h


+ 0 - 0
usbkvm/legacy/usbkvm_fw/src/remdesHid/README.txt → usbkvm/v1/usbkvm_fw/src/remdesHid/README.txt


+ 0 - 0
usbkvm/legacy/usbkvm_fw/src/remdesHid/StdDescriptors.h → usbkvm/v1/usbkvm_fw/src/remdesHid/StdDescriptors.h


+ 0 - 0
usbkvm/legacy/usbkvm_fw/src/remdesHid/USBHIDKeyboardMouse.c → usbkvm/v1/usbkvm_fw/src/remdesHid/USBHIDKeyboardMouse.c


+ 0 - 0
usbkvm/legacy/usbkvm_fw/src/remdesHid/USBHIDKeyboardMouse.h → usbkvm/v1/usbkvm_fw/src/remdesHid/USBHIDKeyboardMouse.h


+ 0 - 0
usbkvm/legacy/usbkvm_fw/src/remdesHid/USBconstant.c → usbkvm/v1/usbkvm_fw/src/remdesHid/USBconstant.c


+ 0 - 0
usbkvm/legacy/usbkvm_fw/src/remdesHid/USBconstant.h → usbkvm/v1/usbkvm_fw/src/remdesHid/USBconstant.h


+ 0 - 0
usbkvm/legacy/usbkvm_fw/src/remdesHid/USBhandler.c → usbkvm/v1/usbkvm_fw/src/remdesHid/USBhandler.c


+ 0 - 0
usbkvm/legacy/usbkvm_fw/src/remdesHid/USBhandler.h → usbkvm/v1/usbkvm_fw/src/remdesHid/USBhandler.h


+ 0 - 0
usbkvm/legacy/usbkvm_fw/usb_switch.ino → usbkvm/v1/usbkvm_fw/usb_switch.ino


+ 0 - 0
usbkvm/legacy/usbkvm_fw/usbkvm_fw.h → usbkvm/v1/usbkvm_fw/usbkvm_fw.h


+ 0 - 0
usbkvm/legacy/usbkvm_fw/usbkvm_fw.ino → usbkvm/v1/usbkvm_fw/usbkvm_fw.ino


+ 0 - 0
usbkvm/testcase_fw2/go.mod → usbkvm/v4/testcase_fw2/go.mod


+ 0 - 0
usbkvm/testcase_fw2/go.sum → usbkvm/v4/testcase_fw2/go.sum


+ 4 - 0
usbkvm/v4/testcase_fw2/info_get_keyboard_leds.bat

@@ -0,0 +1,4 @@
+@echo off
+.\send.exe COM3 115200 0xFF 
+timeout /t 1 /nobreak >nul
+.\send.exe COM3 115200 0x01 0x0B

+ 0 - 0
usbkvm/testcase_fw2/keyboard_ctrl_alt_del.bat → usbkvm/v4/testcase_fw2/keyboard_ctrl_alt_del.bat


+ 0 - 0
usbkvm/testcase_fw2/keyboard_funckey.bat → usbkvm/v4/testcase_fw2/keyboard_funckey.bat


+ 0 - 0
usbkvm/testcase_fw2/keyboard_modkey.bat → usbkvm/v4/testcase_fw2/keyboard_modkey.bat


+ 0 - 0
usbkvm/testcase_fw2/keyboard_multi_press.bat → usbkvm/v4/testcase_fw2/keyboard_multi_press.bat


+ 0 - 0
usbkvm/testcase_fw2/keyboard_single_press.bat → usbkvm/v4/testcase_fw2/keyboard_single_press.bat


+ 0 - 0
usbkvm/testcase_fw2/main.go → usbkvm/v4/testcase_fw2/main.go


+ 0 - 0
usbkvm/testcase_fw2/mouse_click.bat → usbkvm/v4/testcase_fw2/mouse_click.bat


+ 0 - 0
usbkvm/testcase_fw2/mouse_move_abs.bat → usbkvm/v4/testcase_fw2/mouse_move_abs.bat


+ 38 - 0
usbkvm/v4/testcase_fw2/mouse_move_fast.bat

@@ -0,0 +1,38 @@
+@echo off
+.\send.exe COM3 115200 0xFF
+
+:: Move down
+.\send.exe COM3 115200 0x03 0x0A 0x00 0x7F 
+
+:: Move up
+.\send.exe COM3 115200 0x03 0x0A 0x00 0x80
+
+:: Move right
+.\send.exe COM3 115200 0x03 0x0A 0x7F 0x00 
+
+:: Move left
+.\send.exe COM3 115200 0x03 0x0A 0x80 0x00 
+
+:: Move down
+.\send.exe COM3 115200 0x03 0x0A 0x00 0x7F 
+
+:: Move up
+.\send.exe COM3 115200 0x03 0x0A 0x00 0x80
+
+:: Move right
+.\send.exe COM3 115200 0x03 0x0A 0x7F 0x00 
+
+:: Move left
+.\send.exe COM3 115200 0x03 0x0A 0x80 0x00 
+
+:: Move down
+.\send.exe COM3 115200 0x03 0x0A 0x00 0x7F 
+
+:: Move up
+.\send.exe COM3 115200 0x03 0x0A 0x00 0x80
+
+:: Move right
+.\send.exe COM3 115200 0x03 0x0A 0x7F 0x00 
+
+:: Move left
+.\send.exe COM3 115200 0x03 0x0A 0x80 0x00 

+ 0 - 0
usbkvm/testcase_fw2/mouse_move_rel.bat → usbkvm/v4/testcase_fw2/mouse_move_rel.bat


+ 0 - 0
usbkvm/testcase_fw2/mouse_scroll.bat → usbkvm/v4/testcase_fw2/mouse_scroll.bat


+ 1 - 0
usbkvm/usbkvm_fw2/ch9329_utils.ino → usbkvm/v4/usbkvm_fw2/ch9329_utils.ino

@@ -31,6 +31,7 @@ void flush_cmd_resp() {
   USBSerial_println("");
 }
 
+
 // Send a CH9329 cmd via UART0
 void send_cmd(uint8_t cmd, uint8_t* data, uint8_t length) {
   uint8_t sum = 0;

+ 22 - 22
usbkvm/usbkvm_fw2/keyboard_emu.ino → usbkvm/v4/usbkvm_fw2/keyboard_emu.ino

@@ -4,7 +4,6 @@
   This file handle keyboard emulation and key writes
 */
 #define KEYBOARD_HID_KEYCODE_LENGTH 6
-//#define ENABLE_KEYBOARD_DEBUG_PRINTOUT
 
 /* Modifier keycode for CH9329 */
 #define MOD_LCTRL 0x01
@@ -15,6 +14,7 @@
 #define MOD_RSHIFT 0x20
 #define MOD_RALT 0x40
 #define MOD_RGUI 0x80
+#define MOD_RENTER 0x58
 
 /* Runtime variables */
 uint8_t keyboard_state[KEYBOARD_HID_KEYCODE_LENGTH] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
@@ -44,20 +44,9 @@ void handle_keyboard_get_info_reply() {
   keyboard_leds[0] = kbCmdBuf[6];
   keyboard_leds[1] = kbCmdBuf[7];
 
-#ifdef ENABLE_KEYBOARD_DEBUG_PRINTOUT
-  for (int i = 0; i < kbCmdIndex; i++) {
-    uint8_t b = kbCmdBuf[i];
-    USBSerial_print("0x");
-    if (b < 0x10) USBSerial_print("0");
-    USBSerial_print(b, HEX);
-    USBSerial_print(" ");
-  }
-
-  USBSerial_println(keyboard_leds[0] ? "Connected" : "Not Connected");
-  USBSerial_println((keyboard_leds[1] & 0x01) ? "NUMLOCK ON" : "NUMLOCK OFF");
-  USBSerial_println((keyboard_leds[1] & 0x02) ? "CAPSLOCK ON" : "CAPSLOCK OFF");
-  USBSerial_println((keyboard_leds[1] & 0x04) ? "SCROLLLOCK ON" : "SCROLLLOCK OFF");
-#endif
+  //Print the result to USBSerial
+  USBSerial_print(keyboard_leds[0], HEX);  //USB connected
+  USBSerial_print(keyboard_leds[1], HEX);  //LED state bits
 }
 
 
@@ -100,7 +89,7 @@ uint8_t javascript_keycode_to_hid_opcode(uint8_t keycode) {
 
   // Numbers 1-9 (top row, not numpad)
   if (keycode >= 49 && keycode <= 57) {
-    return (keycode - 48) + 0x1E;  // '1' is 0x1E
+    return (keycode - 49) + 0x1E;  // '1' is 0x1E
   }
 
   //Numpad 1-9
@@ -126,6 +115,8 @@ uint8_t javascript_keycode_to_hid_opcode(uint8_t keycode) {
       return 0xE0;  //Left Ctrl
     case 18:
       return 0xE6;  //Left Alt
+    case 19:
+      return 0x48;  //Pause
     case 20:
       return 0x39;  // Caps Lock
     case 27:
@@ -195,7 +186,16 @@ uint8_t javascript_keycode_to_hid_opcode(uint8_t keycode) {
     case 145:
       return 0x47;  // Scroll Lock
 
-    // 146 - 185 not supported or not exists
+    /* 
+      SPECIAL CASES 
+      We are using a specific range of the JavaScript unused keycode
+      for special keys that cannot be mapped normally
+    */
+    case 146:
+      return 0x58; //Numpad enter
+    case 173:
+      return 0x2D; // -
+    //End of special cases
     case 186:
       return 0x33;  // ;
     case 187:
@@ -312,14 +312,14 @@ uint8_t keyboard_get_modifier_bit_from_opcode(uint8_t opcode) {
 
 //Set the modifier key bit
 int keyboard_press_modkey(uint8_t opcode) {
-  if (opcode == 0x00){
+  if (opcode == 0x00) {
     //Reset the modkeys
     keyboard_modifiers = 0;
     keyboard_send_key_combinations();
     return 0;
   }
   uint8_t mask = keyboard_get_modifier_bit_from_opcode(opcode);
-  if (mask == 0x00){
+  if (mask == 0x00) {
     return -1;
   }
   keyboard_modifiers |= mask;
@@ -329,14 +329,14 @@ int keyboard_press_modkey(uint8_t opcode) {
 
 //Unset modifier key bit
 int keyboard_release_modkey(uint8_t opcode) {
-  if (opcode == 0x00){
+  if (opcode == 0x00) {
     //Reset the modkeys
     keyboard_modifiers = 0;
     keyboard_send_key_combinations();
     return 0;
   }
   uint8_t mask = keyboard_get_modifier_bit_from_opcode(opcode);
-  if (mask == 0x00){
+  if (mask == 0x00) {
     return -1;
   }
   keyboard_modifiers &= ~mask;
@@ -345,7 +345,7 @@ int keyboard_release_modkey(uint8_t opcode) {
 }
 
 //Reset all keypress on keyboard
-void keyboard_reset(){
+void keyboard_reset() {
   memset(keyboard_state, 0x00, sizeof(keyboard_state));
   keyboard_modifiers = 0x00;
   keyboard_send_key_combinations();

+ 0 - 0
usbkvm/usbkvm_fw2/mouse_emu.ino → usbkvm/v4/usbkvm_fw2/mouse_emu.ino


+ 59 - 49
usbkvm/usbkvm_fw2/usbkvm_fw2.ino → usbkvm/v4/usbkvm_fw2/usbkvm_fw2.ino

@@ -14,6 +14,7 @@
 
 //Recv buffer from control software
 uint8_t cmdBuf[MAX_CMD_LEN];
+uint8_t c;
 uint8_t cmdIndex = 0;
 uint8_t cmdMaxLen = 0;  //Expected length of the LTV command
 //Recv buffer from CH9329
@@ -57,16 +58,22 @@ void setup_keyboard_chip_cfg() {
   flush_cmd_resp();
 }
 
-//This function will trigger the target handler to handle the buffer data recv from CH9329
-void handle_cmd_processing(uint8_t cmd) {
+//This function handles the incoming data from CH9329
+void handle_cmd_processing() {
+  uint8_t cmd = kbCmdBuf[3];
+  uint8_t value = kbCmdBuf[5];  //The value of 1 byte length reply
   switch (cmd) {
     case 0x81:
+      //CMD_GET_INFO
       handle_keyboard_get_info_reply();
       break;
-    default:
-      //Unknown reply
-      USBSerial_print("Unknown cmd recv: 0x");
-      USBSerial_println(cmd, HEX);
+    case 0x82:
+      //CMD_SEND_KB_GENERAL_DATA
+    case 0x84:
+      //CMD_SEND_MS_ABS_DATA
+    case 0x85:
+      //CMD_SEND_MS_REL_DATA
+      break;
   }
 }
 
@@ -75,64 +82,58 @@ void handle_cmd_processing(uint8_t cmd) {
 void handle_ctrl_cmd() {
   uint8_t cmd = cmdBuf[1];    //Type of operation
   uint8_t value = cmdBuf[2];  //values for 2 bytes cmd
-  int ret = 0;
   switch (cmd) {
     case 0x01:
       //keyboard press
-      ret = keyboard_press_key(value);
+      keyboard_press_key(value);
       break;
     case 0x02:
       //keyboard release
-      ret = keyboard_release_key(value);
+      keyboard_release_key(value);
       break;
     case 0x03:
       //keyboard modifier key press
-      ret = keyboard_press_modkey(value);
+      keyboard_press_modkey(value);
       break;
     case 0x04:
       //keyboard modifier key release
-      ret = keyboard_release_modkey(value);
+      keyboard_release_modkey(value);
       break;
     case 0x05:
       //mouse button press
-      ret = mouse_button_press(value);
+      mouse_button_press(value);
       break;
     case 0x06:
       //mouse button release
-      ret = mouse_button_release(value);
+      mouse_button_release(value);
       break;
     case 0x07:
       //Mouse scroll up
-      ret = mouse_scroll_up(value);
+      mouse_scroll_up(value);
       break;
     case 0x08:
       //Mouse scroll down
-      ret = mouse_scroll_down(value);
+      mouse_scroll_down(value);
       break;
     case 0x09:
       //Mouse move absolute
-      ret = mouse_move_absolute(cmdBuf[2], cmdBuf[3], cmdBuf[4], cmdBuf[5]);
+      mouse_move_absolute(cmdBuf[2], cmdBuf[3], cmdBuf[4], cmdBuf[5]);
       break;
     case 0x0A:
       //Mouse move relative
-      ret = mouse_move_relative(cmdBuf[2], cmdBuf[3], 0);
+      mouse_move_relative(cmdBuf[2], cmdBuf[3], 0);
+      break;
+    case 0x0B:
+      //Get keyboard LED state
+      keyboard_get_info();
       break;
     default:
       //unknown operation, do nothing
-      ret = -1;
       break;
   }
-
-  if (ret < 0) {
-    //Error
-    USBSerial_print(0x01);
-  } else {
-    USBSerial_print(0x00);
-  }
 }
 
 void setup() {
-  USBSerial_println("Ready");
   Serial0_begin(9600);  // CH9329 UART default baudd
   delay(100);
   setup_keyboard_chip_cfg();
@@ -140,36 +141,43 @@ void setup() {
 
 void loop() {
   // Read characters into buffer
-  while (USBSerial_available()) {
-    uint8_t c = USBSerial_read();
+  if (USBSerial_available()) {
+    c = USBSerial_read();
     if (c == 0xFF) {
-      //Reset
+      //Reset keyboard state
       keyboard_reset();
       mouse_reset();
-      memset(cmdBuf, 0, sizeof(cmdBuf));
-      cmdIndex = 0;
-      cmdMaxLen = 0;
-      continue;
-    }
 
-    if (cmdIndex == 0) {
-      //This is the length value
-      cmdMaxLen = c + 1;
-    }
-    cmdBuf[cmdIndex] = c;
-    cmdIndex++;
-    cmdMaxLen--;
-    if (cmdMaxLen == 0) {
-      //End of ctrl cmd, handle it
-      handle_ctrl_cmd();
-
-      //Clear ctrl cmd buf
+      //Reset incoming cmd buff
       memset(cmdBuf, 0, sizeof(cmdBuf));
       cmdIndex = 0;
-      cmdMaxLen = 0;
+      cmdMaxLen = MAX_CMD_LEN;
+
+      //Reset ch9329 read buf
+      memset(kbCmdBuf, 0, sizeof(kbCmdBuf));
+      kbCmdIndex = 0;
+      kbCmdCounter = MAX_CMD_LEN;
+    } else {
+      //Normal cmd
+      if (cmdIndex == 0) {
+        //This is the length value
+        cmdMaxLen = c + 1;
+      }
+      cmdBuf[cmdIndex] = c;
+      cmdIndex++;
+      cmdMaxLen--;
+      if (cmdMaxLen == 0) {
+        //End of ctrl cmd, handle it
+        handle_ctrl_cmd();
+        //Clear ctrl cmd buf
+        memset(cmdBuf, 0, sizeof(cmdBuf));
+        cmdIndex = 0;
+        cmdMaxLen = MAX_CMD_LEN;
+      }
     }
   }
 
+  /*
   while (Serial0_available()) {
     uint8_t b = Serial0_read();
     if (b == 0x57) {
@@ -194,14 +202,16 @@ void loop() {
       }
       if (expected_sum == 0) {
         //Correct, process the command
-        handle_cmd_processing(kbCmdBuf[3]);
+        handle_cmd_processing();
       } else {
-        USBSerial_println("Invalid checksum or cmd too long, skipping");
+        //Invalid checksum, skip
       }
       //Clear the buffer
       memset(kbCmdBuf, 0, sizeof(kbCmdBuf));
       kbCmdIndex = 0;
       kbCmdCounter = MAX_CMD_LEN;
+      break; //One resp processed. Let write loop take over
     }
   }
+  */
 }