mxcad 1.0.82 → 1.0.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mxcad.d.ts +43 -5
- package/dist/mxcad.es.js +828 -699
- package/dist/mxcad.umd.js +42 -42
- package/dist/wasm/2d/mxdrawassembly_min.js +770 -758
- package/dist/wasm/2d/mxdrawassembly_min.wasm +0 -0
- package/dist/wasm/2d-st/mxdrawassembly_min.js +770 -757
- package/dist/wasm/2d-st/mxdrawassembly_minst.wasm +0 -0
- package/package.json +2 -2
package/dist/mxcad.es.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { MxFun as h, MrxDbgUiPrPoint as O, MxCursorType as
|
|
2
|
-
function
|
|
1
|
+
import { MxFun as h, MrxDbgUiPrPoint as O, MxCursorType as gD, MrxDbgUtils as lD, DynamicInputType as CD, DetailedResult as $, MrxDbgUiPrDist as tC, MrxDbgUiPrAngle as eC, MrxDbgUiPrInt as iC, MrxDbgUiPrKeyWord as rC, MrxDbgUiPrString as sC, store as LD, loadCoreCode as nC, MxPaintBrush as j, MrxDbgUiPrBaseReturn as T, MxDbCircleShape as RD, MxDbLine as FD, MxDbPolyline as oC, MxDbCircleArc as ED, Mx3PointArc as aC, MxDbEllipseShape as uC, McEdGetPointWorldDrawObject as lC, MxDbEllipse as cC } from "mxdraw";
|
|
2
|
+
function OD(E) {
|
|
3
3
|
return btoa(unescape(encodeURIComponent(E)));
|
|
4
4
|
}
|
|
5
|
-
function
|
|
5
|
+
function SD(E) {
|
|
6
6
|
return decodeURIComponent(escape(atob(E)));
|
|
7
7
|
}
|
|
8
|
-
async function
|
|
8
|
+
async function vD({
|
|
9
9
|
blob: E,
|
|
10
10
|
filename: D = "",
|
|
11
11
|
types: C = [
|
|
@@ -45,24 +45,24 @@ async function OD({
|
|
|
45
45
|
console.error(B.name, B.message);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
function
|
|
48
|
+
function ID(E, D) {
|
|
49
49
|
const C = document.createElement("a");
|
|
50
50
|
C.href = window.URL.createObjectURL(E), C.download = D, C.click();
|
|
51
51
|
}
|
|
52
|
-
function
|
|
52
|
+
function jD(E, D) {
|
|
53
53
|
fetch(E).then((C) => C.blob()).then((C) => {
|
|
54
54
|
const B = document.createElement("a");
|
|
55
55
|
B.href = window.URL.createObjectURL(C), B.download = D, B.click();
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
const Q = {
|
|
59
|
-
b64Encode:
|
|
60
|
-
b64Decode:
|
|
61
|
-
saveAsFileDialog:
|
|
62
|
-
downloadFile:
|
|
63
|
-
downloadFileFromUrl:
|
|
59
|
+
b64Encode: OD,
|
|
60
|
+
b64Decode: SD,
|
|
61
|
+
saveAsFileDialog: vD,
|
|
62
|
+
downloadFile: ID,
|
|
63
|
+
downloadFileFromUrl: jD
|
|
64
64
|
};
|
|
65
|
-
class
|
|
65
|
+
class mC {
|
|
66
66
|
z = "D2BBB6A18140C6DF814181428143CDF2D5C9C8FDC9CFCFC2D8A2B2BBD3EB8144D8A4B3F38145D7A8C7D2D8A7CAC08146C7F0B1FBD2B5B4D4B6ABCBBFD8A9814781488149B6AA814AC1BDD1CF814BC9A5D8AD814CB8F6D1BEE3DCD6D0814D814EB7E1814FB4AE8150C1D98151D8BC8152CDE8B5A4CEAAD6F78153C0F6BED9D8AF815481558156C4CB8157BEC38158D8B1C3B4D2E58159D6AECEDAD5A7BAF5B7A6C0D6815AC6B9C5D2C7C7815BB9D4815CB3CBD2D2815D815ED8BFBEC5C6F2D2B2CFB0CFE7815F816081618162CAE981638164D8C081658166816781688169816AC2F2C2D2816BC8E9816C816D816E816F817081718172817381748175C7AC8176817781788179817A817B817CC1CB817DD3E8D5F9817ECAC2B6FED8A1D3DABFF78180D4C6BBA5D8C1CEE5BEAE81818182D8A88183D1C7D0A9818481858186D8BDD9EFCDF6BFBA8187BDBBBAA5D2E0B2FABAE0C4B68188CFEDBEA9CDA4C1C18189818A818BC7D7D9F1818CD9F4818D818E818F8190C8CBD8E9819181928193D2DACAB2C8CAD8ECD8EAD8C6BDF6C6CDB3F08194D8EBBDF1BDE98195C8D4B4D381968197C2D88198B2D6D7D0CACBCBFBD5CCB8B6CFC98199819A819BD9DAD8F0C7AA819CD8EE819DB4FAC1EED2D4819E819FD8ED81A0D2C7D8EFC3C781A181A281A3D1F681A4D6D9D8F281A5D8F5BCFEBCDB81A681A781A8C8CE81A9B7DD81AAB7C281ABC6F381AC81AD81AE81AF81B081B181B2D8F8D2C181B381B4CEE9BCBFB7FCB7A5D0DD81B581B681B781B881B9D6DAD3C5BBEFBBE1D8F181BA81BBC9A1CEB0B4AB81BCD8F381BDC9CBD8F6C2D7D8F781BE81BFCEB1D8F981C081C181C2B2AEB9C081C3D9A381C4B0E981C5C1E681C6C9EC81C7CBC581C8CBC6D9A481C981CA81CB81CC81CDB5E881CE81CFB5AB81D081D181D281D381D481D5CEBBB5CDD7A1D7F4D3D381D6CCE581D7BACE81D8D9A2D9DCD3E0D8FDB7F0D7F7D8FED8FAD9A1C4E381D981DAD3B6D8F4D9DD81DBD8FB81DCC5E581DD81DEC0D081DF81E0D1F0B0DB81E181E2BCD1D9A681E3D9A581E481E581E681E7D9ACD9AE81E8D9ABCAB981E981EA81EBD9A9D6B681EC81ED81EEB3DED9A881EFC0FD81F0CACC81F1D9AA81F2D9A781F381F4D9B081F581F6B6B181F781F881F9B9A981FAD2C081FB81FCCFC081FD81FEC2C28240BDC4D5ECB2E0C7C8BFEBD9AD8241D9AF8242CEEABAEE82438244824582468247C7D682488249824A824B824C824D824E824F8250B1E3825182528253B4D9B6EDD9B48254825582568257BFA182588259825AD9DEC7CEC0FED9B8825B825C825D825E825FCBD7B7FD8260D9B58261D9B7B1A3D3E1D9B98262D0C58263D9B682648265D9B18266D9B2C1A9D9B382678268BCF3D0DEB8A98269BEE3826AD9BD826B826C826D826ED9BA826FB0B3827082718272D9C28273827482758276827782788279827A827B827C827D827E8280D9C4B1B68281D9BF82828283B5B98284BEF3828582868287CCC8BAF2D2D08288D9C38289828ABDE8828BB3AB828C828D828ED9C5BEEB828FD9C6D9BBC4DF8290D9BED9C1D9C0829182928293829482958296829782988299829A829BD5AE829CD6B5829DC7E3829E829F82A082A1D9C882A282A382A4BCD9D9CA82A582A682A7D9BC82A8D9CBC6AB82A982AA82AB82AC82ADD9C982AE82AF82B082B1D7F682B2CDA382B382B482B582B682B782B882B982BABDA182BB82BC82BD82BE82BF82C0D9CC82C182C282C382C482C582C682C782C882C9C5BCCDB582CA82CB82CCD9CD82CD82CED9C7B3A5BFFE82CF82D082D182D2B8B582D382D4C0FC82D582D682D782D8B0F882D982DA82DB82DC82DD82DE82DF82E082E182E282E382E482E582E682E782E882E982EA82EB82EC82EDB4F682EED9CE82EFD9CFB4A2D9D082F082F1B4DF82F282F382F482F582F6B0C182F782F882F982FA82FB82FC82FDD9D1C9B582FE8340834183428343834483458346834783488349834A834B834C834D834E834F83508351CFF1835283538354835583568357D9D283588359835AC1C5835B835C835D835E835F836083618362836383648365D9D6C9AE8366836783688369D9D5D9D4D9D7836A836B836C836DCBDB836EBDA9836F8370837183728373C6A7837483758376837783788379837A837B837C837DD9D3D9D8837E83808381D9D9838283838384838583868387C8E583888389838A838B838C838D838E838F839083918392839383948395C0DC8396839783988399839A839B839C839D839E839F83A083A183A283A383A483A583A683A783A883A983AA83AB83AC83AD83AE83AF83B083B183B2B6F9D8A3D4CA83B3D4AAD0D6B3E4D5D783B4CFC8B9E283B5BFCB83B6C3E283B783B883B9B6D283BA83BBCDC3D9EED9F083BC83BD83BEB5B383BFB6B583C083C183C283C383C4BEA483C583C6C8EB83C783C8C8AB83C983CAB0CBB9ABC1F9D9E283CBC0BCB9B283CCB9D8D0CBB1F8C6E4BEDFB5E4D7C883CDD1F8BCE6CADE83CE83CFBCBDD9E6D8E783D083D1C4DA83D283D3B8D4C8BD83D483D5B2E1D4D983D683D783D883D9C3B083DA83DBC3E1DAA2C8DF83DCD0B483DDBEFCC5A983DE83DF83E0B9DA83E1DAA383E2D4A9DAA483E383E483E583E683E7D9FBB6AC83E883E9B7EBB1F9D9FCB3E5BEF683EABFF6D2B1C0E483EB83EC83EDB6B3D9FED9FD83EE83EFBEBB83F083F183F2C6E083F3D7BCDAA183F4C1B983F5B5F2C1E883F683F7BCF583F8B4D583F983FA83FB83FC83FD83FE844084418442C1DD8443C4FD84448445BCB8B7B284468447B7EF84488449844A844B844C844DD9EC844EC6BE844FBFADBBCB84508451B5CA8452DBC9D0D78453CDB9B0BCB3F6BBF7DBCABAAF8454D4E4B5B6B5F3D8D6C8D084558456B7D6C7D0D8D78457BFAF84588459DBBBD8D8845A845BD0CCBBAE845C845D845EEBBEC1D0C1F5D4F2B8D5B4B4845FB3F584608461C9BE846284638464C5D0846584668467C5D9C0FB8468B1F08469D8D9B9CE846AB5BD846B846CD8DA846D846ED6C6CBA2C8AFC9B2B4CCBFCC846FB9F48470D8DBD8DCB6E7BCC1CCEA847184728473847484758476CFF78477D8DDC7B084788479B9D0BDA3847A847BCCDE847CC6CA847D847E848084818482D8E08483D8DE84848485D8DF848684878488B0FE8489BEE7848ACAA3BCF4848B848C848D848EB8B1848F8490B8EE849184928493849484958496849784988499849AD8E2849BBDCB849CD8E4D8E3849D849E849F84A084A1C5FC84A284A384A484A584A684A784A8D8E584A984AAD8E684AB84AC84AD84AE84AF84B084B1C1A684B2C8B0B0ECB9A6BCD3CEF1DBBDC1D384B384B484B584B6B6AFD6FAC5ACBDD9DBBEDBBF84B784B884B9C0F8BEA2C0CD84BA84BB84BC84BD84BE84BF84C084C184C284C3DBC0CAC684C484C584C6B2AA84C784C884C9D3C284CAC3E384CBD1AB84CC84CD84CE84CFDBC284D0C0D584D184D284D3DBC384D4BFB184D584D684D784D884D984DAC4BC84DB84DC84DD84DEC7DA84DF84E084E184E284E384E484E584E684E784E884E9DBC484EA84EB84EC84ED84EE84EF84F084F1D9E8C9D784F284F384F4B9B4CEF0D4C884F584F684F784F8B0FCB4D284F9D0D984FA84FB84FC84FDD9E984FEDECBD9EB8540854185428543D8B0BBAFB1B18544B3D7D8CE85458546D4D185478548BDB3BFEF8549CFBB854A854BD8D0854C854D854EB7CB854F85508551D8D185528553855485558556855785588559855A855BC6A5C7F8D2BD855C855DD8D2C4E4855ECAAE855FC7A78560D8A68561C9FDCEE7BBDCB0EB856285638564BBAAD0AD8565B1B0D7E4D7BF8566B5A5C2F4C4CF85678568B2A98569B2B7856AB1E5DFB2D5BCBFA8C2ACD8D5C2B1856BD8D4CED4856CDAE0856DCEC0856E856FD8B4C3AED3A1CEA38570BCB4C8B4C2D18571BEEDD0B68572DAE18573857485758576C7E485778578B3A78579B6F2CCFCC0FA857A857BC0F7857CD1B9D1E1D8C7857D857E85808581858285838584B2DE85858586C0E58587BAF185888589D8C8858AD4AD858B858CCFE1D8C9858DD8CACFC3858EB3F8BEC7858F859085918592D8CB8593859485958596859785988599DBCC859A859B859C859DC8A5859E859F85A0CFD885A1C8FEB2CE85A285A385A485A585A6D3D6B2E6BCB0D3D1CBABB7B485A785A885A9B7A285AA85ABCAE585ACC8A1CADCB1E4D0F085ADC5D185AE85AF85B0DBC5B5FE85B185B2BFDAB9C5BEE4C1ED85B3DFB6DFB5D6BBBDD0D5D9B0C8B6A3BFC9CCA8DFB3CAB7D3D285B4D8CFD2B6BAC5CBBECCBE85B5DFB7B5F0DFB485B685B785B8D3F585B9B3D4B8F785BADFBA85BBBACFBCAAB5F585BCCDACC3FBBAF3C0F4CDC2CFF2DFB8CFC585BDC2C0DFB9C2F085BE85BF85C0BEFD85C1C1DFCDCCD2F7B7CDDFC185C2DFC485C385C4B7F1B0C9B6D6B7D485C5BAACCCFDBFD4CBB1C6F485C6D6A8DFC585C7CEE2B3B385C885C9CEFCB4B585CACEC7BAF085CBCEE185CCD1BD85CD85CEDFC085CF85D0B4F485D1B3CA85D2B8E6DFBB85D385D485D585D6C4C585D7DFBCDFBDDFBEC5BBDFBFDFC2D4B1DFC385D8C7BACED885D985DA85DB85DC85DDC4D885DEDFCA85DFDFCF85E0D6DC85E185E285E385E485E585E685E785E8DFC9DFDACEB685E9BAC7DFCEDFC8C5DE85EA85EBC9EBBAF4C3FC85EC85EDBED785EEDFC685EFDFCD85F0C5D885F185F285F385F4D5A6BACD85F5BECCD3BDB8C085F6D6E485F7DFC7B9BEBFA785F885F9C1FCDFCBDFCC85FADFD085FB85FC85FD85FE8640DFDBDFE58641DFD7DFD6D7C9DFE3DFE4E5EBD2A7DFD28642BFA98643D4DB8644BFC8DFD4864586468647CFCC86488649DFDD864AD1CA864BDFDEB0A7C6B7DFD3864CBAE5864DB6DFCDDBB9FED4D5864E864FDFDFCFECB0A5DFE7DFD1D1C6DFD5DFD8DFD9DFDC8650BBA98651DFE0DFE18652DFE2DFE6DFE8D3B486538654865586568657B8E7C5B6DFEAC9DAC1A8C4C486588659BFDECFF8865A865B865CD5DCDFEE865D865E865F866086618662B2B88663BADFDFEC8664DBC18665D1E48666866786688669CBF4B4BD866AB0A6866B866C866D866E866FDFF1CCC6DFF286708671DFED867286738674867586768677DFE986788679867A867BDFEB867CDFEFDFF0BBBD867D867EDFF386808681DFF48682BBA38683CADBCEA8E0A7B3AA8684E0A6868586868687E0A186888689868A868BDFFE868CCDD9DFFC868DDFFA868EBFD0D7C4868FC9CC86908691DFF8B0A186928693869486958696DFFD869786988699869ADFFBE0A2869B869C869D869E869FE0A886A086A186A286A3B7C886A486A5C6A1C9B6C0B2DFF586A686A7C5BE86A8D8C4DFF9C4F686A986AA86AB86AC86AD86AEE0A3E0A4E0A5D0A586AF86B0E0B4CCE486B1E0B186B2BFA6E0AFCEB9E0ABC9C686B386B4C0AEE0AEBAEDBAB0E0A986B586B686B7DFF686B8E0B386B986BAE0B886BB86BC86BDB4ADE0B986BE86BFCFB2BAC886C0E0B086C186C286C386C486C586C686C7D0FA86C886C986CA86CB86CC86CD86CE86CF86D0E0AC86D1D4FB86D2DFF786D3C5E786D4E0AD86D5D3F786D6E0B6E0B786D786D886D986DA86DBE0C4D0E186DC86DD86DEE0BC86DF86E0E0C9E0CA86E186E286E3E0BEE0AAC9A4E0C186E4E0B286E586E686E786E886E9CAC8E0C386EAE0B586EBCECB86ECCBC3E0CDE0C6E0C286EDE0CB86EEE0BAE0BFE0C086EF86F0E0C586F186F2E0C7E0C886F3E0CC86F4E0BB86F586F686F786F886F9CBD4E0D586FAE0D6E0D286FB86FC86FD86FE87408741E0D0BCCE87428743E0D18744B8C2D8C587458746874787488749874A874B874CD0EA874D874EC2EF874F8750E0CFE0BD875187528753E0D4E0D387548755E0D78756875787588759E0DCE0D8875A875B875CD6F6B3B0875DD7EC875ECBBB875F8760E0DA8761CEFB876287638764BAD987658766876787688769876A876B876C876D876E876F8770E0E1E0DDD2AD87718772877387748775E0E287768777E0DBE0D9E0DF87788779E0E0877A877B877C877D877EE0DE8780E0E4878187828783C6F7D8ACD4EBE0E6CAC98784878587868787E0E587888789878A878BB8C1878C878D878E878FE0E7E0E887908791879287938794879587968797E0E9E0E387988799879A879B879C879D879EBABFCCE7879F87A087A1E0EA87A287A387A487A587A687A787A887A987AA87AB87AC87AD87AE87AF87B0CFF987B187B287B387B487B587B687B787B887B987BA87BBE0EB87BC87BD87BE87BF87C087C187C2C8C287C387C487C587C6BDC087C787C887C987CA87CB87CC87CD87CE87CF87D087D187D287D3C4D287D487D587D687D787D887D987DA87DB87DCE0EC87DD87DEE0ED87DF87E0C7F4CBC487E1E0EEBBD8D8B6D2F2E0EFCDC587E2B6DA87E387E487E587E687E787E8E0F187E9D4B087EA87EBC0A7B4D187EC87EDCEA7E0F087EE87EF87F0E0F2B9CC87F187F2B9FACDBCE0F387F387F487F5C6D4E0F487F6D4B287F7C8A6E0F6E0F587F887F987FA87FB87FC87FD87FE8840884188428843884488458846884788488849E0F7884A884BCDC1884C884D884ECAA5884F885088518852D4DADBD7DBD98853DBD8B9E7DBDCDBDDB5D888548855DBDA8856885788588859885ADBDBB3A1DBDF885B885CBBF8885DD6B7885EDBE0885F886088618862BEF988638864B7BB8865DBD0CCAEBFB2BBB5D7F8BFD38866886788688869886ABFE9886B886CBCE1CCB3DBDEB0D3CEEBB7D8D7B9C6C2886D886EC0A4886FCCB98870DBE7DBE1C6BADBE38871DBE88872C5F7887388748875DBEA88768877DBE9BFC088788879887ADBE6DBE5887B887C887D887E8880B4B9C0ACC2A2DBE2DBE48881888288838884D0CDDBED88858886888788888889C0DDDBF2888A888B888C888D888E888F8890B6E28891889288938894DBF3DBD2B9B8D4ABDBEC8895BFD1DBF08896DBD18897B5E68898DBEBBFE58899889A889BDBEE889CDBF1889D889E889FDBF988A088A188A288A388A488A588A688A788A8B9A1B0A388A988AA88AB88AC88AD88AE88AFC2F188B088B1B3C7DBEF88B288B3DBF888B4C6D2DBF488B588B6DBF5DBF7DBF688B788B8DBFE88B9D3F2B2BA88BA88BB88BCDBFD88BD88BE88BF88C088C188C288C388C4DCA488C5DBFB88C688C788C888C9DBFA88CA88CB88CCDBFCC5E0BBF988CD88CEDCA388CF88D0DCA588D1CCC388D288D388D4B6D1DDC088D588D688D7DCA188D8DCA288D988DA88DBC7B588DC88DD88DEB6E988DF88E088E1DCA788E288E388E488E5DCA688E6DCA9B1A488E788E8B5CC88E988EA88EB88EC88EDBFB088EE88EF88F088F188F2D1DF88F388F488F588F6B6C288F788F888F988FA88FB88FC88FD88FE894089418942894389448945DCA88946894789488949894A894B894CCBFAEBF3894D894E894FCBDC89508951CBFE895289538954CCC189558956895789588959C8FB895A895B895C895D895E895FDCAA89608961896289638964CCEEDCAB89658966896789688969896A896B896C896D896E896F897089718972897389748975DBD38976DCAFDCAC8977BEB38978CAFB8979897A897BDCAD897C897D897E89808981898289838984C9CAC4B989858986898789888989C7BDDCAE898A898B898CD4F6D0E6898D898E898F89908991899289938994C4ABB6D589958996899789988999899A899B899C899D899E899F89A089A189A289A389A489A589A6DBD489A789A889A989AAB1DA89AB89AC89ADDBD589AE89AF89B089B189B289B389B489B589B689B789B8DBD689B989BA89BBBABE89BC89BD89BE89BF89C089C189C289C389C489C589C689C789C889C9C8C089CA89CB89CC89CD89CE89CFCABFC8C989D0D7B389D1C9F989D289D3BFC789D489D5BAF889D689D7D2BC89D889D989DA89DB89DC89DD89DE89DFE2BA89E0B4A689E189E2B1B889E389E489E589E689E7B8B489E8CFC489E989EA89EB89ECD9E7CFA6CDE289ED89EED9EDB6E089EFD2B989F089F1B9BB89F289F389F489F5E2B9E2B789F6B4F389F7CCECCCABB7F289F8D8B2D1EBBABB89F9CAA789FA89FBCDB789FC89FDD2C4BFE4BCD0B6E189FEDEC58A408A418A428A43DEC6DBBC8A44D1D98A458A46C6E6C4CEB7EE8A47B7DC8A488A49BFFCD7E08A4AC6F58A4B8A4CB1BCDEC8BDB1CCD7DECA8A4DDEC98A4E8A4F8A508A518A52B5EC8A53C9DD8A548A55B0C28A568A578A588A598A5A8A5B8A5C8A5D8A5E8A5F8A608A618A62C5AEC5AB8A63C4CC8A64BCE9CBFD8A658A668A67BAC38A688A698A6AE5F9C8E7E5FACDFD8A6BD7B1B8BEC2E88A6CC8D18A6D8A6EE5FB8A6F8A708A718A72B6CABCCB8A738A74D1FDE6A18A75C3EE8A768A778A788A79E6A48A7A8A7B8A7C8A7DE5FEE6A5CDD78A7E8A80B7C1E5FCE5FDE6A38A818A82C4DDE6A88A838A84E6A78A858A868A878A888A898A8AC3C38A8BC6DE8A8C8A8DE6AA8A8E8A8F8A908A918A928A938A94C4B78A958A968A97E6A2CABC8A988A998A9A8A9BBDE3B9C3E6A6D0D5CEAF8A9C8A9DE6A9E6B08A9ED2A68A9FBDAAE6AD8AA08AA18AA28AA38AA4E6AF8AA5C0D18AA68AA7D2CC8AA88AA98AAABCA78AAB8AAC8AAD8AAE8AAF8AB08AB18AB28AB38AB48AB58AB6E6B18AB7D2F68AB88AB98ABAD7CB8ABBCDFE8ABCCDDEC2A6E6ABE6ACBDBFE6AEE6B38ABD8ABEE6B28ABF8AC08AC18AC2E6B68AC3E6B88AC48AC58AC68AC7C4EF8AC88AC98ACAC4C88ACB8ACCBEEAC9EF8ACD8ACEE6B78ACFB6F08AD08AD18AD2C3E48AD38AD48AD58AD68AD78AD88AD9D3E9E6B48ADAE6B58ADBC8A28ADC8ADD8ADE8ADF8AE0E6BD8AE18AE28AE3E6B98AE48AE58AE68AE78AE8C6C58AE98AEACDF1E6BB8AEB8AEC8AED8AEE8AEF8AF08AF18AF28AF38AF4E6BC8AF58AF68AF78AF8BBE98AF98AFA8AFB8AFC8AFD8AFE8B40E6BE8B418B428B438B44E6BA8B458B46C0B78B478B488B498B4A8B4B8B4C8B4D8B4E8B4FD3A4E6BFC9F4E6C38B508B51E6C48B528B538B548B55D0F68B568B578B588B598B5A8B5B8B5C8B5D8B5E8B5F8B608B618B628B638B648B658B668B67C3BD8B688B698B6A8B6B8B6C8B6D8B6EC3C4E6C28B6F8B708B718B728B738B748B758B768B778B788B798B7A8B7B8B7CE6C18B7D8B7E8B808B818B828B838B84E6C7CFB18B85EBF48B868B87E6CA8B888B898B8A8B8B8B8CE6C58B8D8B8EBCDEC9A98B8F8B908B918B928B938B94BCB58B958B96CFD38B978B988B998B9A8B9BE6C88B9CE6C98B9DE6CE8B9EE6D08B9F8BA08BA1E6D18BA28BA38BA4E6CBB5D58BA5E6CC8BA68BA7E6CF8BA88BA9C4DB8BAAE6C68BAB8BAC8BAD8BAE8BAFE6CD8BB08BB18BB28BB38BB48BB58BB68BB78BB88BB98BBA8BBB8BBC8BBD8BBE8BBF8BC08BC18BC28BC38BC48BC58BC6E6D28BC78BC88BC98BCA8BCB8BCC8BCD8BCE8BCF8BD08BD18BD2E6D4E6D38BD38BD48BD58BD68BD78BD88BD98BDA8BDB8BDC8BDD8BDE8BDF8BE08BE18BE28BE38BE48BE58BE68BE78BE88BE98BEA8BEB8BECE6D58BEDD9F88BEE8BEFE6D68BF08BF18BF28BF38BF48BF58BF68BF7E6D78BF88BF98BFA8BFB8BFC8BFD8BFE8C408C418C428C438C448C458C468C47D7D3E6DD8C48E6DEBFD7D4D08C49D7D6B4E6CBEFE6DAD8C3D7CED0A28C4AC3CF8C4B8C4CE6DFBCBEB9C2E6DBD1A78C4D8C4EBAA2C2CF8C4FD8AB8C508C518C52CAEBE5EE8C53E6DC8C54B7F58C558C568C578C58C8E68C598C5AC4F58C5B8C5CE5B2C4FE8C5DCBFCE5B3D5AC8C5ED3EECAD8B0B28C5FCBCECDEA8C608C61BAEA8C628C638C64E5B58C65E5B48C66D7DAB9D9D6E6B6A8CDF0D2CBB1A6CAB58C67B3E8C9F3BFCDD0FBCAD2E5B6BBC28C688C698C6ACFDCB9AC8C6B8C6C8C6D8C6ED4D78C6F8C70BAA6D1E7CFFCBCD28C71E5B7C8DD8C728C738C74BFEDB1F6CBDE8C758C76BCC58C77BCC4D2FAC3DCBFDC8C788C798C7A8C7BB8BB8C7C8C7D8C7EC3C28C80BAAED4A28C818C828C838C848C858C868C878C888C89C7DEC4AFB2EC8C8AB9D18C8B8C8CE5BBC1C88C8D8C8ED5AF8C8F8C908C918C928C93E5BC8C94E5BE8C958C968C978C988C998C9A8C9BB4E7B6D4CBC2D1B0B5BC8C9C8C9DCAD98C9EB7E28C9F8CA0C9E48CA1BDAB8CA28CA3CEBED7F08CA48CA58CA68CA7D0A18CA8C9D98CA98CAAB6FBE6D8BCE28CABB3BE8CACC9D08CADE6D9B3A28CAE8CAF8CB08CB1DECC8CB2D3C8DECD8CB3D2A28CB48CB58CB68CB7DECE8CB88CB98CBA8CBBBECD8CBC8CBDDECF8CBE8CBF8CC0CAACD2FCB3DFE5EAC4E1BEA1CEB2C4F2BED6C6A8B2E38CC18CC2BED38CC38CC4C7FCCCEBBDECCEDD8CC58CC6CABAC6C1E5ECD0BC8CC78CC88CC9D5B98CCA8CCB8CCCE5ED8CCD8CCE8CCF8CD0CAF48CD1CDC0C2C58CD2E5EF8CD3C2C4E5F08CD48CD58CD68CD78CD88CD98CDAE5F8CDCD8CDBC9BD8CDC8CDD8CDE8CDF8CE08CE18CE2D2D9E1A88CE38CE48CE58CE6D3EC8CE7CBEAC6F18CE88CE98CEA8CEB8CECE1AC8CED8CEE8CEFE1A7E1A98CF08CF1E1AAE1AF8CF28CF3B2ED8CF4E1ABB8DAE1ADE1AEE1B0B5BAE1B18CF58CF68CF78CF88CF9E1B3E1B88CFA8CFB8CFC8CFD8CFED1D28D40E1B6E1B5C1EB8D418D428D43E1B78D44D4C08D45E1B28D46E1BAB0B68D478D488D498D4AE1B48D4BBFF98D4CE1B98D4D8D4EE1BB8D4F8D508D518D528D538D54E1BE8D558D568D578D588D598D5AE1BC8D5B8D5C8D5D8D5E8D5F8D60D6C58D618D628D638D648D658D668D67CFBF8D688D69E1BDE1BFC2CD8D6AB6EB8D6BD3F88D6C8D6DC7CD8D6E8D6FB7E58D708D718D728D738D748D758D768D778D788D79BEFE8D7A8D7B8D7C8D7D8D7E8D80E1C0E1C18D818D82E1C7B3E78D838D848D858D868D878D88C6E98D898D8A8D8B8D8C8D8DB4DE8D8ED1C28D8F8D908D918D92E1C88D938D94E1C68D958D968D978D988D99E1C58D9AE1C3E1C28D9BB1C08D9C8D9D8D9ED5B8E1C48D9F8DA08DA18DA28DA3E1CB8DA48DA58DA68DA78DA88DA98DAA8DABE1CCE1CA8DAC8DAD8DAE8DAF8DB08DB18DB28DB3EFFA8DB48DB5E1D3E1D2C7B68DB68DB78DB88DB98DBA8DBB8DBC8DBD8DBE8DBF8DC0E1C98DC18DC2E1CE8DC3E1D08DC48DC58DC68DC78DC88DC98DCA8DCB8DCC8DCD8DCEE1D48DCFE1D1E1CD8DD08DD1E1CF8DD28DD38DD48DD5E1D58DD68DD78DD88DD98DDA8DDB8DDC8DDD8DDE8DDF8DE08DE18DE2E1D68DE38DE48DE58DE68DE78DE88DE98DEA8DEB8DEC8DED8DEE8DEF8DF08DF18DF28DF38DF48DF58DF68DF78DF8E1D78DF98DFA8DFBE1D88DFC8DFD8DFE8E408E418E428E438E448E458E468E478E488E498E4A8E4B8E4C8E4D8E4E8E4F8E508E518E528E538E548E55E1DA8E568E578E588E598E5A8E5B8E5C8E5D8E5E8E5F8E608E618E62E1DB8E638E648E658E668E678E688E69CEA18E6A8E6B8E6C8E6D8E6E8E6F8E708E718E728E738E748E758E76E7DD8E77B4A8D6DD8E788E79D1B2B3B28E7A8E7BB9A4D7F3C7C9BEDEB9AE8E7CCED78E7D8E7EB2EEDBCF8E80BCBAD2D1CBC8B0CD8E818E82CFEF8E838E848E858E868E87D9E3BDED8E888E89B1D2CAD0B2BC8E8ACBA7B7AB8E8BCAA68E8C8E8D8E8ECFA38E8F8E90E0F8D5CAE0FB8E918E92E0FAC5C1CCFB8E93C1B1E0F9D6E3B2AFD6C4B5DB8E948E958E968E978E988E998E9A8E9BB4F8D6A18E9C8E9D8E9E8E9F8EA0CFAFB0EF8EA18EA2E0FC8EA38EA48EA58EA68EA7E1A1B3A38EA88EA9E0FDE0FEC3B18EAA8EAB8EAC8EADC3DD8EAEE1A2B7F98EAF8EB08EB18EB28EB38EB4BBCF8EB58EB68EB78EB88EB98EBA8EBBE1A3C4BB8EBC8EBD8EBE8EBF8EC0E1A48EC18EC2E1A58EC38EC4E1A6B4B18EC58EC68EC78EC88EC98ECA8ECB8ECC8ECD8ECE8ECF8ED08ED18ED28ED3B8C9C6BDC4EA8ED4B2A28ED5D0D28ED6E7DBBBC3D3D7D3C48ED7B9E3E2CF8ED88ED98EDAD7AF8EDBC7ECB1D38EDC8EDDB4B2E2D18EDE8EDF8EE0D0F2C2AEE2D08EE1BFE2D3A6B5D7E2D2B5EA8EE2C3EDB8FD8EE3B8AE8EE4C5D3B7CFE2D48EE58EE68EE78EE8E2D3B6C8D7F98EE98EEA8EEB8EEC8EEDCDA58EEE8EEF8EF08EF18EF2E2D88EF3E2D6CAFCBFB5D3B9E2D58EF48EF58EF68EF7E2D78EF88EF98EFA8EFB8EFC8EFD8EFE8F408F418F42C1AEC0C88F438F448F458F468F478F48E2DBE2DAC0AA8F498F4AC1CE8F4B8F4C8F4D8F4EE2DC8F4F8F508F518F528F538F548F558F568F578F588F598F5AE2DD8F5BE2DE8F5C8F5D8F5E8F5F8F608F618F628F638F64DBC88F65D1D3CDA28F668F67BDA88F688F698F6ADEC3D8A5BFAADBCDD2ECC6FAC5AA8F6B8F6C8F6DDEC48F6EB1D7DFAE8F6F8F708F71CABD8F72DFB18F73B9AD8F74D2FD8F75B8A5BAEB8F768F77B3DA8F788F798F7AB5DCD5C58F7B8F7C8F7D8F7EC3D6CFD2BBA18F80E5F3E5F28F818F82E5F48F83CDE48F84C8F58F858F868F878F888F898F8A8F8BB5AFC7BF8F8CE5F68F8D8F8E8F8FECB08F908F918F928F938F948F958F968F978F988F998F9A8F9B8F9C8F9D8F9EE5E68F9FB9E9B5B18FA0C2BCE5E8E5E7E5E98FA18FA28FA38FA4D2CD8FA58FA68FA7E1EAD0CE8FA8CDAE8FA9D1E58FAA8FABB2CAB1EB8FACB1F2C5ED8FAD8FAED5C3D3B08FAFE1DC8FB08FB18FB2E1DD8FB3D2DB8FB4B3B9B1CB8FB58FB68FB7CDF9D5F7E1DE8FB8BEB6B4FD8FB9E1DFBADCE1E0BBB2C2C9E1E18FBA8FBB8FBCD0EC8FBDCDBD8FBE8FBFE1E28FC0B5C3C5C7E1E38FC18FC2E1E48FC38FC48FC58FC6D3F98FC78FC88FC98FCA8FCB8FCCE1E58FCDD1AD8FCE8FCFE1E6CEA28FD08FD18FD28FD38FD48FD5E1E78FD6B5C28FD78FD88FD98FDAE1E8BBD58FDB8FDC8FDD8FDE8FDFD0C4E2E0B1D8D2E48FE08FE1E2E18FE28FE3BCC9C8CC8FE4E2E3ECFEECFDDFAF8FE58FE68FE7E2E2D6BECDFCC3A68FE88FE98FEAE3C38FEB8FECD6D2E2E78FED8FEEE2E88FEF8FF0D3C78FF18FF2E2ECBFEC8FF3E2EDE2E58FF48FF5B3C08FF68FF78FF8C4EE8FF98FFAE2EE8FFB8FFCD0C38FFDBAF6E2E9B7DEBBB3CCACCBCBE2E4E2E6E2EAE2EB8FFE90409041E2F790429043E2F4D4F5E2F390449045C5AD9046D5FAC5C2B2C090479048E2EF9049E2F2C1AFCBBC904A904BB5A1E2F9904C904D904EBCB1E2F1D0D4D4B9E2F5B9D6E2F6904F90509051C7D390529053905490559056E2F0905790589059905A905BD7DCEDA1905C905DE2F8905EEDA5E2FECAD1905F906090619062906390649065C1B59066BBD090679068BFD69069BAE3906A906BCBA1906C906D906EEDA6EDA3906F9070EDA29071907290739074BBD6EDA7D0F490759076EDA4BADEB6F7E3A1B6B2CCF1B9A79077CFA2C7A190789079BFD2907A907BB6F1907CE2FAE2FBE2FDE2FCC4D5E3A2907DD3C1907E90809081E3A7C7C49082908390849085CFA490869087E3A9BAB790889089908A908BE3A8908CBBDA908DE3A3908E908F9090E3A4E3AA9091E3A69092CEF2D3C690939094BBBC90959096D4C39097C4FA90989099EDA8D0FCE3A5909AC3F5909BE3ADB1AF909CE3B2909D909E909FBCC290A090A1E3ACB5BF90A290A390A490A590A690A790A890A9C7E9E3B090AA90AB90ACBEAACDEF90AD90AE90AF90B090B1BBF390B290B390B4CCE890B590B6E3AF90B7E3B190B8CFA7E3AE90B9CEA9BBDD90BA90BB90BC90BD90BEB5EBBEE5B2D2B3CD90BFB1B9E3ABB2D1B5ACB9DFB6E890C090C1CFEBE3B790C2BBCC90C390C4C8C7D0CA90C590C690C790C890C9E3B8B3EE90CA90CB90CC90CDEDA990CED3FAD3E490CF90D090D1EDAAE3B9D2E290D290D390D490D590D6E3B590D790D890D990DAD3DE90DB90DC90DD90DEB8D0E3B390DF90E0E3B6B7DF90E1E3B4C0A290E290E390E4E3BA90E590E690E790E890E990EA90EB90EC90ED90EE90EF90F090F190F290F390F490F590F690F7D4B890F890F990FA90FB90FC90FD90FE9140B4C89141E3BB9142BBC59143C9F791449145C9E5914691479148C4BD9149914A914B914C914D914E914FEDAB9150915191529153C2FD9154915591569157BBDBBFAE91589159915A915B915C915D915ECEBF915F916091619162E3BC9163BFB6916491659166916791689169916A916B916C916D916E916F9170917191729173917491759176B1EF91779178D4F79179917A917B917C917DE3BE917E9180918191829183918491859186EDAD918791889189918A918B918C918D918E918FE3BFBAA9EDAC91909191E3BD91929193919491959196919791989199919A919BE3C0919C919D919E919F91A091A1BAB691A291A391A4B6AE91A591A691A791A891A9D0B891AAB0C3EDAE91AB91AC91AD91AE91AFEDAFC0C191B0E3C191B191B291B391B491B591B691B791B891B991BA91BB91BC91BD91BE91BF91C091C1C5B391C291C391C491C591C691C791C891C991CA91CB91CC91CD91CE91CFE3C291D091D191D291D391D491D591D691D791D8DCB291D991DA91DB91DC91DD91DEEDB091DFB8EA91E0CEECEAA7D0E7CAF9C8D6CFB7B3C9CED2BDE491E191E2E3DEBBF2EAA8D5BD91E3C6DDEAA991E491E591E6EAAA91E7EAACEAAB91E8EAAEEAAD91E991EA91EB91ECBDD891EDEAAF91EEC2BE91EF91F091F191F2B4C1B4F791F391F4BBA791F591F691F791F891F9ECE6ECE5B7BFCBF9B1E291FAECE791FB91FC91FDC9C8ECE8ECE991FECAD6DED0B2C5D4FA92409241C6CBB0C7B4F2C8D3924292439244CDD092459246BFB8924792489249924A924B924C924DBFDB924E924FC7A4D6B49250C0A9DED1C9A8D1EFC5A4B0E7B3B6C8C592519252B0E292539254B7F692559256C5FA92579258B6F39259D5D2B3D0BCBC925A925B925CB3AD925D925E925F9260BEF1B0D1926192629263926492659266D2D6CAE3D7A59267CDB6B6B6BFB9D5DB9268B8A7C5D79269926A926BDED2BFD9C2D5C7C0926CBBA4B1A8926D926EC5EA926F9270C5FBCCA79271927292739274B1A7927592769277B5D692789279927AC4A8927BDED3D1BAB3E9927CC3F2927D927EB7F79280D6F4B5A3B2F0C4B4C4E9C0ADDED49281B0E8C5C4C1E09282B9D59283BEDCCDD8B0CE9284CDCFDED6BED0D7BEDED5D5D0B0DD92859286C4E292879288C2A3BCF09289D3B5C0B9C5A1B2A6D4F1928A928BC0A8CAC3DED7D5FC928CB9B0928DC8ADCBA9928EDED9BFBD928F929092919292C6B4D7A7CAB0C4C39293B3D6B9D29294929592969297D6B8EAFCB0B492989299929A929BBFE6929C929DCCF4929E929F92A092A1CDDA92A292A392A4D6BFC2CE92A5CECECCA2D0AEC4D3B5B2DED8D5F5BCB7BBD392A692A7B0A492A8C5B2B4EC92A992AA92ABD5F192AC92ADEAFD92AE92AF92B092B192B292B3DEDACDA692B492B5CDEC92B692B792B892B9CEE6DEDC92BACDB1C0A692BB92BCD7BD92BDDEDBB0C6BAB4C9D3C4F3BEE892BE92BF92C092C1B2B692C292C392C492C592C692C792C892C9C0CCCBF092CABCF1BBBBB5B792CB92CC92CDC5F592CEDEE692CF92D092D1DEE3BEDD92D292D3DEDF92D492D592D692D7B4B7BDDD92D892D9DEE0C4ED92DA92DB92DC92DDCFC692DEB5E092DF92E092E192E2B6DECADAB5F4DEE592E3D5C692E4DEE1CCCDC6FE92E5C5C592E692E792E8D2B492E9BEF292EA92EB92EC92ED92EE92EF92F0C2D392F1CCBDB3B892F2BDD392F3BFD8CDC6D1DAB4EB92F4DEE4DEDDDEE792F5EAFE92F692F7C2B0DEE292F892F9D6C0B5A792FAB2F492FBDEE892FCDEF292FD92FE934093419342DEED9343DEF193449345C8E0934693479348D7E1DEEFC3E8CCE19349B2E5934A934B934CD2BE934D934E934F9350935193529353DEEE9354DEEBCED59355B4A79356935793589359935ABFABBEBE935B935CBDD2935D935E935F9360DEE99361D4AE9362DEDE9363DEEA9364936593669367C0BF9368DEECB2F3B8E9C2A79369936ABDC1936B936C936D936E936FDEF5DEF893709371B2ABB4A493729373B4EAC9A6937493759376937793789379DEF6CBD1937AB8E3937BDEF7DEFA937C937D937E9380DEF9938193829383CCC29384B0E1B4EE93859386938793889389938AE5BA938B938C938D938E938FD0AF93909391B2EB9392EBA19393DEF493949395C9E3DEF3B0DAD2A1B1F79396CCAF939793989399939A939B939C939DDEF0939ECBA4939F93A093A1D5AA93A293A393A493A593A6DEFB93A793A893A993AA93AB93AC93AD93AEB4DD93AFC4A693B093B193B2DEFD93B393B493B593B693B793B893B993BA93BB93BCC3FEC4A1DFA193BD93BE93BF93C093C193C293C3C1CC93C4DEFCBEEF93C5C6B293C693C793C893C993CA93CB93CC93CD93CEB3C5C8F693CF93D0CBBADEFE93D193D2DFA493D393D493D593D6D7B293D793D893D993DA93DBB3B793DC93DD93DE93DFC1C393E093E1C7CBB2A5B4E993E2D7AB93E393E493E593E6C4EC93E7DFA2DFA393E8DFA593E9BAB393EA93EB93ECDFA693EDC0DE93EE93EFC9C393F093F193F293F393F493F593F6B2D9C7E693F7DFA793F8C7DC93F993FA93FB93FCDFA8EBA293FD93FE944094419442CBD3944394449445DFAA9446DFA99447B2C194489449944A944B944C944D944E944F9450945194529453945494559456945794589459945A945B945C945D945E945F9460C5CA94619462946394649465946694679468DFAB9469946A946B946C946D946E946F9470D4DC94719472947394749475C8C19476947794789479947A947B947C947D947E948094819482DFAC94839484948594869487BEF094889489DFADD6A7948A948B948C948DEAB7EBB6CAD5948ED8FCB8C4948FB9A594909491B7C5D5FE94929493949494959496B9CA94979498D0A7F4CD9499949AB5D0949B949CC3F4949DBEC8949E949F94A0EBB7B0BD94A194A2BDCC94A3C1B294A4B1D6B3A894A594A694A7B8D2C9A294A894A9B6D894AA94AB94AC94ADEBB8BEB494AE94AF94B0CAFD94B1C7C394B2D5FB94B394B4B7F394B594B694B794B894B994BA94BB94BC94BD94BE94BF94C094C194C294C3CEC494C494C594C6D5ABB1F394C794C894C9ECB3B0DF94CAECB594CB94CC94CDB6B794CEC1CF94CFF5FAD0B194D094D1D5E594D2CED394D394D4BDEFB3E294D5B8AB94D6D5B694D7EDBD94D8B6CF94D9CBB9D0C294DA94DB94DC94DD94DE94DF94E094E1B7BD94E294E3ECB6CAA994E494E594E6C5D494E7ECB9ECB8C2C3ECB794E894E994EA94EBD0FDECBA94ECECBBD7E594ED94EEECBC94EF94F094F1ECBDC6EC94F294F394F494F594F694F794F894F9CEDE94FABCC894FB94FCC8D5B5A9BEC9D6BCD4E794FD94FED1AED0F1EAB8EAB9EABABAB59540954195429543CAB1BFF595449545CDFA9546954795489549954AEAC0954BB0BAEABE954C954DC0A5954E954F9550EABB9551B2FD9552C3F7BBE8955395549555D2D7CEF4EABF955695579558EABC9559955A955BEAC3955CD0C7D3B3955D955E955F9560B4BA9561C3C1D7F29562956395649565D5D19566CAC79567EAC595689569EAC4EAC7EAC6956A956B956C956D956ED6E7956FCFD495709571EACB9572BBCE9573957495759576957795789579BDFAC9CE957A957BEACC957C957DC9B9CFFEEACAD4CEEACDEACF957E9580CDED9581958295839584EAC99585EACE95869587CEEE9588BBDE9589B3BF958A958B958C958D958EC6D5BEB0CEFA958F95909591C7E79592BEA7EAD095939594D6C7959595969597C1C095989599959AD4DD959BEAD1959C959DCFBE959E959F95A095A1EAD295A295A395A495A5CAEE95A695A795A895A9C5AFB0B595AA95AB95AC95AD95AEEAD495AF95B095B195B295B395B495B595B695B7EAD3F4DF95B895B995BA95BB95BCC4BA95BD95BE95BF95C095C1B1A995C295C395C495C5E5DF95C695C795C895C9EAD595CA95CB95CC95CD95CE95CF95D095D195D295D395D495D595D695D795D895D995DA95DB95DC95DD95DE95DF95E095E195E295E3CAEF95E4EAD6EAD7C6D895E595E695E795E895E995EA95EB95ECEAD895ED95EEEAD995EF95F095F195F295F395F4D4BB95F5C7FAD2B7B8FC95F695F7EAC295F8B2DC95F995FAC2FC95FBD4F8CCE6D7EE95FC95FD95FE9640964196429643D4C2D3D0EBC3C5F39644B7FE96459646EBD4964796489649CBB7EBDE964AC0CA964B964C964DCDFB964EB3AF964FC6DA965096519652965396549655EBFC9656C4BE9657CEB4C4A9B1BED4FD9658CAF59659D6EC965A965BC6D3B6E4965C965D965E965FBBFA96609661D0E096629663C9B19664D4D3C8A896659666B8CB9667E8BEC9BC96689669E8BB966AC0EED0D3B2C4B4E5966BE8BC966C966DD5C8966E966F967096719672B6C59673E8BDCAF8B8DCCCF5967496759676C0B496779678D1EEE8BFE8C29679967ABABC967BB1ADBDDC967CEABDE8C3967DE8C6967EE8CB9680968196829683E8CC9684CBC9B0E59685BCAB96869687B9B996889689E8C1968ACDF7968BE8CA968C968D968E968FCEF69690969196929693D5ED9694C1D6E8C49695C3B69696B9FBD6A6E8C8969796989699CAE0D4E6969AE8C0969BE8C5E8C7969CC7B9B7E3969DE8C9969EBFDDE8D2969F96A0E8D796A1E8D5BCDCBCCFE8DB96A296A396A496A596A696A796A896A9E8DE96AAE8DAB1FA96AB96AC96AD96AE96AF96B096B196B296B396B4B0D8C4B3B8CCC6E2C8BEC8E196B596B696B7E8CFE8D4E8D696B8B9F1E8D8D7F596B9C4FB96BAE8DC96BB96BCB2E996BD96BE96BFE8D196C096C1BCED96C296C3BFC2E8CDD6F996C4C1F8B2F196C596C696C796C896C996CA96CB96CCE8DF96CDCAC1E8D996CE96CF96D096D1D5A496D2B1EAD5BBE8CEE8D0B6B0E8D396D3E8DDC0B896D4CAF796D5CBA896D696D7C6DCC0F596D896D996DA96DB96DCE8E996DD96DE96DFD0A396E096E196E296E396E496E596E6E8F2D6EA96E796E896E996EA96EB96EC96EDE8E0E8E196EE96EF96F0D1F9BACBB8F996F196F2B8F1D4D4E8EF96F3E8EEE8ECB9F0CCD2E8E6CEA6BFF296F4B0B8E8F1E8F096F5D7C096F6E8E496F7CDA9C9A396F8BBB8BDDBE8EA96F996FA96FB96FC96FD96FE9740974197429743E8E2E8E3E8E5B5B5E8E7C7C5E8EBE8EDBDB0D7AE9744E8F897459746974797489749974A974B974CE8F5974DCDB0E8F6974E974F9750975197529753975497559756C1BA9757E8E89758C3B7B0F09759975A975B975C975D975E975F9760E8F4976197629763E8F7976497659766B9A3976797689769976A976B976C976D976E976F9770C9D2977197729773C3CECEE0C0E69774977597769777CBF39778CCDDD0B59779977ACAE1977BE8F3977C977D977E9780978197829783978497859786BCEC9787E8F997889789978A978B978C978DC3DE978EC6E5978FB9F79790979197929793B0F497949795D7D897969797BCAC9798C5EF9799979A979B979C979DCCC4979E979FE9A697A097A197A297A397A497A597A697A797A897A9C9AD97AAE9A2C0E297AB97AC97ADBFC397AE97AF97B0E8FEB9D797B1E8FB97B297B397B497B5E9A497B697B797B8D2CE97B997BA97BB97BC97BDE9A397BED6B2D7B597BFE9A797C0BDB797C197C297C397C497C597C697C797C897C997CA97CB97CCE8FCE8FD97CD97CE97CFE9A197D097D197D297D397D497D597D697D7CDD697D897D9D2AC97DA97DB97DCE9B297DD97DE97DF97E0E9A997E197E297E3B4AA97E4B4BB97E597E6E9AB97E797E897E997EA97EB97EC97ED97EE97EF97F097F197F297F397F497F597F697F7D0A897F897F9E9A597FA97FBB3FE97FC97FDE9ACC0E397FEE9AA98409841E9B998429843E9B89844984598469847E9AE98489849E8FA984A984BE9A8984C984D984E984F9850BFACE9B1E9BA98519852C2A5985398549855E9AF9856B8C59857E9AD9858D3DCE9B4E9B5E9B79859985A985BE9C7985C985D985E985F98609861C0C6E9C598629863E9B098649865E9BBB0F19866986798689869986A986B986C986D986E986FE9BCD5A598709871E9BE9872E9BF987398749875E9C198769877C1F198789879C8B6987A987B987CE9BD987D987E988098819882E9C29883988498859886988798889889988AE9C3988BE9B3988CE9B6988DBBB1988E988F9890E9C0989198929893989498959896BCF7989798989899E9C4E9C6989A989B989C989D989E989F98A098A198A298A398A498A5E9CA98A698A798A898A9E9CE98AA98AB98AC98AD98AE98AF98B098B198B298B3B2DB98B4E9C898B598B698B798B898B998BA98BB98BC98BD98BEB7AE98BF98C098C198C298C398C498C598C698C798C898C998CAE9CBE9CC98CB98CC98CD98CE98CF98D0D5C198D1C4A398D298D398D498D598D698D7E9D898D8BAE198D998DA98DB98DCE9C998DDD3A398DE98DF98E0E9D498E198E298E398E498E598E698E7E9D7E9D098E898E998EA98EB98ECE9CF98ED98EEC7C198EF98F098F198F298F398F498F598F6E9D298F798F898F998FA98FB98FC98FDE9D9B3C898FEE9D399409941994299439944CFF0994599469947E9CD99489949994A994B994C994D994E994F995099519952B3F79953995499559956995799589959E9D6995A995BE9DA995C995D995ECCB4995F99609961CFAD99629963996499659966996799689969996AE9D5996BE9DCE9DB996C996D996E996F9970E9DE99719972997399749975997699779978E9D19979997A997B997C997D997E99809981E9DD9982E9DFC3CA9983998499859986998799889989998A998B998C998D998E998F9990999199929993999499959996999799989999999A999B999C999D999E999F99A099A199A299A399A499A599A699A799A899A999AA99AB99AC99AD99AE99AF99B099B199B299B399B499B599B699B799B899B999BA99BB99BC99BD99BE99BF99C099C199C299C399C499C599C699C799C899C999CA99CB99CC99CD99CE99CF99D099D199D299D399D499D599D699D799D899D999DA99DB99DC99DD99DE99DF99E099E199E299E399E499E599E699E799E899E999EA99EB99EC99ED99EE99EF99F099F199F299F399F499F5C7B7B4CEBBB6D0C0ECA399F699F7C5B799F899F999FA99FB99FC99FD99FE9A409A419A42D3FB9A439A449A459A46ECA49A47ECA5C6DB9A489A499A4ABFEE9A4B9A4C9A4D9A4EECA69A4F9A50ECA7D0AA9A51C7B89A529A53B8E89A549A559A569A579A589A599A5A9A5B9A5C9A5D9A5E9A5FECA89A609A619A629A639A649A659A669A67D6B9D5FDB4CBB2BDCEE4C6E79A689A69CDE19A6A9A6B9A6C9A6D9A6E9A6F9A709A719A729A739A749A759A769A77B4F59A78CBC0BCDF9A799A7A9A7B9A7CE9E2E9E3D1EAE9E59A7DB4F9E9E49A7ED1B3CAE2B2D09A80E9E89A819A829A839A84E9E6E9E79A859A86D6B39A879A889A89E9E9E9EA9A8A9A8B9A8C9A8D9A8EE9EB9A8F9A909A919A929A939A949A959A96E9EC9A979A989A999A9A9A9B9A9C9A9D9A9EECAFC5B9B6CE9A9FD2F39AA09AA19AA29AA39AA49AA59AA6B5EE9AA7BBD9ECB19AA89AA9D2E39AAA9AAB9AAC9AAD9AAECEE39AAFC4B89AB0C3BF9AB19AB2B6BED8B9B1C8B1CFB1D1C5FE9AB3B1D09AB4C3AB9AB59AB69AB79AB89AB9D5B19ABA9ABB9ABC9ABD9ABE9ABF9AC09AC1EBA4BAC19AC29AC39AC4CCBA9AC59AC69AC7EBA59AC8EBA79AC99ACA9ACBEBA89ACC9ACD9ACEEBA69ACF9AD09AD19AD29AD39AD49AD5EBA9EBABEBAA9AD69AD79AD89AD99ADAEBAC9ADBCACFD8B5C3F19ADCC3A5C6F8EBADC4CA9ADDEBAEEBAFEBB0B7D59ADE9ADF9AE0B7FA9AE1EBB1C7E29AE2EBB39AE3BAA4D1F5B0B1EBB2EBB49AE49AE59AE6B5AAC2C8C7E89AE7EBB59AE8CBAEE3DF9AE99AEAD3C09AEB9AEC9AED9AEED9DB9AEF9AF0CDA1D6ADC7F39AF19AF29AF3D9E0BBE39AF4BABAE3E29AF59AF69AF79AF89AF9CFAB9AFA9AFB9AFCE3E0C9C79AFDBAB99AFE9B409B41D1B4E3E1C8EAB9AFBDADB3D8CEDB9B429B43CCC09B449B459B46E3E8E3E9CDF49B479B489B499B4A9B4BCCAD9B4CBCB39B4DE3EA9B4EE3EB9B4F9B50D0DA9B519B529B53C6FBB7DA9B549B55C7DFD2CACED69B56E3E4E3EC9B57C9F2B3C19B589B59E3E79B5A9B5BC6E3E3E59B5C9B5DEDB3E3E69B5E9B5F9B609B61C9B39B62C5E69B639B649B65B9B59B66C3BB9B67E3E3C5BDC1A4C2D9B2D79B68E3EDBBA6C4AD9B69E3F0BEDA9B6A9B6BE3FBE3F5BAD39B6C9B6D9B6E9B6FB7D0D3CD9B70D6CED5D3B9C1D5B4D1D89B719B729B739B74D0B9C7F69B759B769B77C8AAB2B49B78C3DA9B799B7A9B7BE3EE9B7C9B7DE3FCE3EFB7A8E3F7E3F49B7E9B809B81B7BA9B829B83C5A29B84E3F6C5DDB2A8C6FC9B85C4E09B869B87D7A29B88C0E1E3F99B899B8AE3FAE3FDCCA9E3F39B8BD3BE9B8CB1C3EDB4E3F1E3F29B8DE3F8D0BAC6C3D4F3E3FE9B8E9B8FBDE09B909B91E4A79B929B93E4A69B949B959B96D1F3E4A39B97E4A99B989B999B9AC8F79B9B9B9C9B9D9B9ECFB49B9FE4A8E4AEC2E59BA09BA1B6B49BA29BA39BA49BA59BA69BA7BDF29BA8E4A29BA99BAABAE9E4AA9BAB9BACE4AC9BAD9BAEB6FDD6DEE4B29BAFE4AD9BB09BB19BB2E4A19BB3BBEECDDDC7A2C5C99BB49BB5C1F79BB6E4A49BB7C7B3BDACBDBDE4A59BB8D7C7B2E29BB9E4ABBCC3E4AF9BBABBEBE4B0C5A8E4B19BBB9BBC9BBD9BBED5E3BFA39BBFE4BA9BC0E4B79BC1E4BB9BC29BC3E4BD9BC49BC5C6D69BC69BC7BAC6C0CB9BC89BC99BCAB8A1E4B49BCB9BCC9BCD9BCED4A19BCF9BD0BAA3BDFE9BD19BD29BD3E4BC9BD49BD59BD69BD79BD8CDBF9BD99BDAC4F99BDB9BDCCFFBC9E69BDD9BDED3BF9BDFCFD19BE09BE1E4B39BE2E4B8E4B9CCE99BE39BE49BE59BE69BE7CCCE9BE8C0D4E4B5C1B0E4B6CED09BE9BBC1B5D39BEAC8F3BDA7D5C7C9ACB8A2E4CA9BEB9BECE4CCD1C49BED9BEED2BA9BEF9BF0BAAD9BF19BF2BAD49BF39BF49BF59BF69BF79BF8E4C3B5ED9BF99BFA9BFBD7CDE4C0CFFDE4BF9BFC9BFD9BFEC1DCCCCA9C409C419C429C43CAE79C449C459C469C47C4D79C48CCD4E4C89C499C4A9C4BE4C7E4C19C4CE4C4B5AD9C4D9C4ED3D99C4FE4C69C509C519C529C53D2F9B4E39C54BBB49C559C56C9EE9C57B4BE9C589C599C5ABBEC9C5BD1CD9C5CCCEDEDB59C5D9C5E9C5F9C609C619C629C639C64C7E59C659C669C679C68D4A89C69E4CBD7D5E4C29C6ABDA5E4C59C6B9C6CD3E69C6DE4C9C9F89C6E9C6FE4BE9C709C71D3E59C729C73C7FEB6C99C74D4FCB2B3E4D79C759C769C77CEC29C78E4CD9C79CEBC9C7AB8DB9C7B9C7CE4D69C7DBFCA9C7E9C809C81D3CE9C82C3EC9C839C849C859C869C879C889C899C8AC5C8E4D89C8B9C8C9C8D9C8E9C8F9C909C919C92CDC4E4CF9C939C949C959C96E4D4E4D59C97BAFE9C98CFE69C999C9AD5BF9C9B9C9C9C9DE4D29C9E9C9F9CA09CA19CA29CA39CA49CA59CA69CA79CA8E4D09CA99CAAE4CE9CAB9CAC9CAD9CAE9CAF9CB09CB19CB29CB39CB49CB59CB69CB79CB89CB9CDE5CAAA9CBA9CBB9CBCC0A39CBDBDA6E4D39CBE9CBFB8C89CC09CC19CC29CC39CC4E4E7D4B49CC59CC69CC79CC89CC99CCA9CCBE4DB9CCC9CCD9CCEC1EF9CCF9CD0E4E99CD19CD2D2E79CD39CD4E4DF9CD5E4E09CD69CD7CFAA9CD89CD99CDA9CDBCBDD9CDCE4DAE4D19CDDE4E59CDEC8DCE4E39CDF9CE0C4E7E4E29CE1E4E19CE29CE39CE4B3FCE4E89CE59CE69CE79CE8B5E19CE99CEA9CEBD7CC9CEC9CED9CEEE4E69CEFBBAC9CF0D7D2CCCFEBF89CF1E4E49CF29CF3B9F69CF49CF59CF6D6CDE4D9E4DCC2FAE4DE9CF7C2CBC0C4C2D09CF8B1F5CCB29CF99CFA9CFB9CFC9CFD9CFE9D409D419D429D43B5CE9D449D459D469D47E4EF9D489D499D4A9D4B9D4C9D4D9D4E9D4FC6AF9D509D519D52C6E19D539D54E4F59D559D569D579D589D59C2A99D5A9D5B9D5CC0ECD1DDE4EE9D5D9D5E9D5F9D609D619D629D639D649D659D66C4AE9D679D689D69E4ED9D6A9D6B9D6C9D6DE4F6E4F4C2FE9D6EE4DD9D6FE4F09D70CAFE9D71D5C49D729D73E4F19D749D759D769D779D789D799D7AD1FA9D7B9D7C9D7D9D7E9D809D819D82E4EBE4EC9D839D849D85E4F29D86CEAB9D879D889D899D8A9D8B9D8C9D8D9D8E9D8F9D90C5CB9D919D929D93C7B19D94C2BA9D959D969D97E4EA9D989D999D9AC1CA9D9B9D9C9D9D9D9E9D9F9DA0CCB6B3B19DA19DA29DA3E4FB9DA4E4F39DA59DA69DA7E4FA9DA8E4FD9DA9E4FC9DAA9DAB9DAC9DAD9DAE9DAF9DB0B3CE9DB19DB29DB3B3BAE4F79DB49DB5E4F9E4F8C5EC9DB69DB79DB89DB99DBA9DBB9DBC9DBD9DBE9DBF9DC09DC19DC2C0BD9DC39DC49DC59DC6D4E89DC79DC89DC99DCA9DCBE5A29DCC9DCD9DCE9DCF9DD09DD19DD29DD39DD49DD59DD6B0C49DD79DD8E5A49DD99DDAE5A39DDB9DDC9DDD9DDE9DDF9DE0BCA49DE1E5A59DE29DE39DE49DE59DE69DE7E5A19DE89DE99DEA9DEB9DEC9DED9DEEE4FEB1F49DEF9DF09DF19DF29DF39DF49DF59DF69DF79DF89DF9E5A89DFAE5A9E5A69DFB9DFC9DFD9DFE9E409E419E429E439E449E459E469E47E5A7E5AA9E489E499E4A9E4B9E4C9E4D9E4E9E4F9E509E519E529E539E549E559E569E579E589E599E5A9E5B9E5C9E5D9E5E9E5F9E609E619E629E639E649E659E669E679E68C6D99E699E6A9E6B9E6C9E6D9E6E9E6F9E70E5ABE5AD9E719E729E739E749E759E769E77E5AC9E789E799E7A9E7B9E7C9E7D9E7E9E809E819E829E839E849E859E869E879E889E89E5AF9E8A9E8B9E8CE5AE9E8D9E8E9E8F9E909E919E929E939E949E959E969E979E989E999E9A9E9B9E9C9E9D9E9EB9E09E9F9EA0E5B09EA19EA29EA39EA49EA59EA69EA79EA89EA99EAA9EAB9EAC9EAD9EAEE5B19EAF9EB09EB19EB29EB39EB49EB59EB69EB79EB89EB99EBABBF0ECE1C3F09EBBB5C6BBD29EBC9EBD9EBE9EBFC1E9D4EE9EC0BEC49EC19EC29EC3D7C69EC4D4D6B2D3ECBE9EC59EC69EC79EC8EAC19EC99ECA9ECBC2AFB4B69ECC9ECD9ECED1D79ECF9ED09ED1B3B49ED2C8B2BFBBECC09ED39ED4D6CB9ED59ED6ECBFECC19ED79ED89ED99EDA9EDB9EDC9EDD9EDE9EDF9EE09EE19EE29EE3ECC5BEE6CCBFC5DABEBC9EE4ECC69EE5B1FE9EE69EE79EE8ECC4D5A8B5E39EE9ECC2C1B6B3E39EEA9EEBECC3CBB8C0C3CCFE9EEC9EED9EEE9EEFC1D29EF0ECC89EF19EF29EF39EF49EF59EF69EF79EF89EF99EFA9EFB9EFC9EFDBAE6C0D39EFED6F29F409F419F42D1CC9F439F449F459F46BFBE9F47B7B3C9D5ECC7BBE29F48CCCCBDFDC8C89F49CFA99F4A9F4B9F4C9F4D9F4E9F4F9F50CDE99F51C5EB9F529F539F54B7E99F559F569F579F589F599F5A9F5B9F5C9F5D9F5E9F5FD1C9BAB89F609F619F629F639F64ECC99F659F66ECCA9F67BBC0ECCB9F68ECE2B1BAB7D99F699F6A9F6B9F6C9F6D9F6E9F6F9F709F719F729F73BDB99F749F759F769F779F789F799F7A9F7BECCCD1E6ECCD9F7C9F7D9F7E9F80C8BB9F819F829F839F849F859F869F879F889F899F8A9F8B9F8C9F8D9F8EECD19F8F9F909F919F92ECD39F93BBCD9F94BCE59F959F969F979F989F999F9A9F9B9F9C9F9D9F9E9F9F9FA09FA1ECCF9FA2C9B79FA39FA49FA59FA69FA7C3BA9FA8ECE3D5D5ECD09FA99FAA9FAB9FAC9FADD6F39FAE9FAF9FB0ECD2ECCE9FB19FB29FB39FB4ECD49FB5ECD59FB69FB7C9BF9FB89FB99FBA9FBB9FBC9FBDCFA89FBE9FBF9FC09FC19FC2D0DC9FC39FC49FC59FC6D1AC9FC79FC89FC99FCAC8DB9FCB9FCC9FCDECD6CEF59FCE9FCF9FD09FD19FD2CAECECDA9FD39FD49FD59FD69FD79FD89FD9ECD99FDA9FDB9FDCB0BE9FDD9FDE9FDF9FE09FE19FE2ECD79FE3ECD89FE49FE59FE6ECE49FE79FE89FE99FEA9FEB9FEC9FED9FEE9FEFC8BC9FF09FF19FF29FF39FF49FF59FF69FF79FF89FF9C1C79FFA9FFB9FFC9FFD9FFEECDCD1E0A040A041A042A043A044A045A046A047A048A049ECDBA04AA04BA04CA04DD4EFA04EECDDA04FA050A051A052A053A054DBC6A055A056A057A058A059A05AA05BA05CA05DA05EECDEA05FA060A061A062A063A064A065A066A067A068A069A06AB1ACA06BA06CA06DA06EA06FA070A071A072A073A074A075A076A077A078A079A07AA07BA07CA07DA07EA080A081ECDFA082A083A084A085A086A087A088A089A08AA08BECE0A08CD7A6A08DC5C0A08EA08FA090EBBCB0AEA091A092A093BEF4B8B8D2AFB0D6B5F9A094D8B3A095CBACA096E3DDA097A098A099A09AA09BA09CA09DC6ACB0E6A09EA09FA0A0C5C6EBB9A0A1A0A2A0A3A0A4EBBAA0A5A0A6A0A7EBBBA0A8A0A9D1C0A0AAC5A3A0ABEAF2A0ACC4B2A0ADC4B5C0CEA0AEA0AFA0B0EAF3C4C1A0B1CEEFA0B2A0B3A0B4A0B5EAF0EAF4A0B6A0B7C9FCA0B8A0B9C7A3A0BAA0BBA0BCCCD8CEFEA0BDA0BEA0BFEAF5EAF6CFACC0E7A0C0A0C1EAF7A0C2A0C3A0C4A0C5A0C6B6BFEAF8A0C7EAF9A0C8EAFAA0C9A0CAEAFBA0CBA0CCA0CDA0CEA0CFA0D0A0D1A0D2A0D3A0D4A0D5A0D6EAF1A0D7A0D8A0D9A0DAA0DBA0DCA0DDA0DEA0DFA0E0A0E1A0E2C8AEE1EBA0E3B7B8E1ECA0E4A0E5A0E6E1EDA0E7D7B4E1EEE1EFD3CCA0E8A0E9A0EAA0EBA0ECA0EDA0EEE1F1BFF1E1F0B5D2A0EFA0F0A0F1B1B7A0F2A0F3A0F4A0F5E1F3E1F2A0F6BAFCA0F7E1F4A0F8A0F9A0FAA0FBB9B7A0FCBED1A0FDA0FEAA40AA41C4FCAA42BADDBDC6AA43AA44AA45AA46AA47AA48E1F5E1F7AA49AA4AB6C0CFC1CAA8E1F6D5F8D3FCE1F8E1FCE1F9AA4BAA4CE1FAC0EAAA4DE1FEE2A1C0C7AA4EAA4FAA50AA51E1FBAA52E1FDAA53AA54AA55AA56AA57AA58E2A5AA59AA5AAA5BC1D4AA5CAA5DAA5EAA5FE2A3AA60E2A8B2FEE2A2AA61AA62AA63C3CDB2C2E2A7E2A6AA64AA65E2A4E2A9AA66AA67E2ABAA68AA69AA6AD0C9D6EDC3A8E2ACAA6BCFD7AA6CAA6DE2AEAA6EAA6FBAEFAA70AA71E9E0E2ADE2AAAA72AA73AA74AA75BBABD4B3AA76AA77AA78AA79AA7AAA7BAA7CAA7DAA7EAA80AA81AA82AA83E2B0AA84AA85E2AFAA86E9E1AA87AA88AA89AA8AE2B1AA8BAA8CAA8DAA8EAA8FAA90AA91AA92E2B2AA93AA94AA95AA96AA97AA98AA99AA9AAA9BAA9CAA9DE2B3CCA1AA9EE2B4AA9FAAA0AB40AB41AB42AB43AB44AB45AB46AB47AB48AB49AB4AAB4BE2B5AB4CAB4DAB4EAB4FAB50D0FEAB51AB52C2CAAB53D3F1AB54CDF5AB55AB56E7E0AB57AB58E7E1AB59AB5AAB5BAB5CBEC1AB5DAB5EAB5FAB60C2EAAB61AB62AB63E7E4AB64AB65E7E3AB66AB67AB68AB69AB6AAB6BCDE6AB6CC3B5AB6DAB6EE7E2BBB7CFD6AB6FC1E1E7E9AB70AB71AB72E7E8AB73AB74E7F4B2A3AB75AB76AB77AB78E7EAAB79E7E6AB7AAB7BAB7CAB7DAB7EE7ECE7EBC9BAAB80AB81D5E4AB82E7E5B7A9E7E7AB83AB84AB85AB86AB87AB88AB89E7EEAB8AAB8BAB8CAB8DE7F3AB8ED6E9AB8FAB90AB91AB92E7EDAB93E7F2AB94E7F1AB95AB96AB97B0E0AB98AB99AB9AAB9BE7F5AB9CAB9DAB9EAB9FABA0AC40AC41AC42AC43AC44AC45AC46AC47AC48AC49AC4AC7F2AC4BC0C5C0EDAC4CAC4DC1F0E7F0AC4EAC4FAC50AC51E7F6CBF6AC52AC53AC54AC55AC56AC57AC58AC59AC5AE8A2E8A1AC5BAC5CAC5DAC5EAC5FAC60D7C1AC61AC62E7FAE7F9AC63E7FBAC64E7F7AC65E7FEAC66E7FDAC67E7FCAC68AC69C1D5C7D9C5FDC5C3AC6AAC6BAC6CAC6DAC6EC7EDAC6FAC70AC71AC72E8A3AC73AC74AC75AC76AC77AC78AC79AC7AAC7BAC7CAC7DAC7EAC80AC81AC82AC83AC84AC85AC86E8A6AC87E8A5AC88E8A7BAF7E7F8E8A4AC89C8F0C9AAAC8AAC8BAC8CAC8DAC8EAC8FAC90AC91AC92AC93AC94AC95AC96E8A9AC97AC98B9E5AC99AC9AAC9BAC9CAC9DD1FEE8A8AC9EAC9FACA0AD40AD41AD42E8AAAD43E8ADE8AEAD44C1A7AD45AD46AD47E8AFAD48AD49AD4AE8B0AD4BAD4CE8ACAD4DE8B4AD4EAD4FAD50AD51AD52AD53AD54AD55AD56AD57AD58E8ABAD59E8B1AD5AAD5BAD5CAD5DAD5EAD5FAD60AD61E8B5E8B2E8B3AD62AD63AD64AD65AD66AD67AD68AD69AD6AAD6BAD6CAD6DAD6EAD6FAD70AD71E8B7AD72AD73AD74AD75AD76AD77AD78AD79AD7AAD7BAD7CAD7DAD7EAD80AD81AD82AD83AD84AD85AD86AD87AD88AD89E8B6AD8AAD8BAD8CAD8DAD8EAD8FAD90AD91AD92B9CFAD93F0ACAD94F0ADAD95C6B0B0EAC8BFAD96CDDFAD97AD98AD99AD9AAD9BAD9CAD9DCECDEAB1AD9EAD9FADA0AE40EAB2AE41C6BFB4C9AE42AE43AE44AE45AE46AE47AE48EAB3AE49AE4AAE4BAE4CD5E7AE4DAE4EAE4FAE50AE51AE52AE53AE54DDF9AE55EAB4AE56EAB5AE57EAB6AE58AE59AE5AAE5BB8CADFB0C9F5AE5CCCF0AE5DAE5EC9FAAE5FAE60AE61AE62AE63C9FBAE64AE65D3C3CBA6AE66B8A6F0AEB1C2AE67E5B8CCEFD3C9BCD7C9EAAE68B5E7AE69C4D0B5E9AE6AEEAEBBADAE6BAE6CE7DEAE6DEEAFAE6EAE6FAE70AE71B3A9AE72AE73EEB2AE74AE75EEB1BDE7AE76EEB0CEB7AE77AE78AE79AE7AC5CFAE7BAE7CAE7DAE7EC1F4DBCEEEB3D0F3AE80AE81AE82AE83AE84AE85AE86AE87C2D4C6E8AE88AE89AE8AB7ACAE8BAE8CAE8DAE8EAE8FAE90AE91EEB4AE92B3EBAE93AE94AE95BBFBEEB5AE96AE97AE98AE99AE9AE7DCAE9BAE9CAE9DEEB6AE9EAE9FBDAEAEA0AF40AF41AF42F1E2AF43AF44AF45CAE8AF46D2C9F0DAAF47F0DBAF48F0DCC1C6AF49B8EDBECEAF4AAF4BF0DEAF4CC5B1F0DDD1F1AF4DF0E0B0CCBDEAAF4EAF4FAF50AF51AF52D2DFF0DFAF53B4AFB7E8F0E6F0E5C6A3F0E1F0E2B4C3AF54AF55F0E3D5EEAF56AF57CCDBBED2BCB2AF58AF59AF5AF0E8F0E7F0E4B2A1AF5BD6A2D3B8BEB7C8ACAF5CAF5DF0EAAF5EAF5FAF60AF61D1F7AF62D6CCBADBF0E9AF63B6BBAF64AF65CDB4AF66AF67C6A6AF68AF69AF6AC1A1F0EBF0EEAF6BF0EDF0F0F0ECAF6CBBBEF0EFAF6DAF6EAF6FAF70CCB5F0F2AF71AF72B3D5AF73AF74AF75AF76B1D4AF77AF78F0F3AF79AF7AF0F4F0F6B4E1AF7BF0F1AF7CF0F7AF7DAF7EAF80AF81F0FAAF82F0F8AF83AF84AF85F0F5AF86AF87AF88AF89F0FDAF8AF0F9F0FCF0FEAF8BF1A1AF8CAF8DAF8ECEC1F1A4AF8FF1A3AF90C1F6F0FBCADDAF91AF92B4F1B1F1CCB1AF93F1A6AF94AF95F1A7AF96AF97F1ACD5CEF1A9AF98AF99C8B3AF9AAF9BAF9CF1A2AF9DF1ABF1A8F1A5AF9EAF9FF1AAAFA0B040B041B042B043B044B045B046B0A9F1ADB047B048B049B04AB04BB04CF1AFB04DF1B1B04EB04FB050B051B052F1B0B053F1AEB054B055B056B057D1A2B058B059B05AB05BB05CB05DB05EF1B2B05FB060B061F1B3B062B063B064B065B066B067B068B069B9EFB06AB06BB5C7B06CB0D7B0D9B06DB06EB06FD4EDB070B5C4B071BDD4BBCAF0A7B072B073B8DEB074B075F0A8B076B077B0A8B078F0A9B079B07ACDEEB07BB07CF0AAB07DB07EB080B081B082B083B084B085B086B087F0ABB088B089B08AB08BB08CB08DB08EB08FB090C6A4B091B092D6E5F1E4B093F1E5B094B095B096B097B098B099B09AB09BB09CB09DC3F3B09EB09FD3DBB0A0B140D6D1C5E8B141D3AFB142D2E6B143B144EEC1B0BBD5B5D1CEBCE0BAD0B145BFF8B146B8C7B5C1C5CCB147B148CAA2B149B14AB14BC3CBB14CB14DB14EB14FB150EEC2B151B152B153B154B155B156B157B158C4BFB6A2B159EDECC3A4B15AD6B1B15BB15CB15DCFE0EDEFB15EB15FC5CEB160B6DCB161B162CAA1B163B164EDEDB165B166EDF0EDF1C3BCB167BFB4B168EDEEB169B16AB16BB16CB16DB16EB16FB170B171B172B173EDF4EDF2B174B175B176B177D5E6C3DFB178EDF3B179B17AB17BEDF6B17CD5A3D1A3B17DB17EB180EDF5B181C3D0B182B183B184B185B186EDF7BFF4BEECEDF8B187CCF7B188D1DBB189B18AB18BD7C5D5F6B18CEDFCB18DB18EB18FEDFBB190B191B192B193B194B195B196B197EDF9EDFAB198B199B19AB19BB19CB19DB19EB19FEDFDBEA6B1A0B240B241B242B243CBAFEEA1B6BDB244EEA2C4C0B245EDFEB246B247BDDEB2C7B248B249B24AB24BB24CB24DB24EB24FB250B251B252B253B6C3B254B255B256EEA5D8BAEEA3EEA6B257B258B259C3E9B3F2B25AB25BB25CB25DB25EB25FEEA7EEA4CFB9B260B261EEA8C2F7B262B263B264B265B266B267B268B269B26AB26BB26CB26DEEA9EEAAB26EDEABB26FB270C6B3B271C7C6B272D6F5B5C9B273CBB2B274B275B276EEABB277B278CDABB279EEACB27AB27BB27CB27DB27ED5B0B280EEADB281F6C4B282B283B284B285B286B287B288B289B28AB28BB28CB28DB28EDBC7B28FB290B291B292B293B294B295B296B297B4A3B298B299B29AC3ACF1E6B29BB29CB29DB29EB29FCAB8D2D3B2A0D6AAB340EFF2B341BED8B342BDC3EFF3B6CCB0ABB343B344B345B346CAAFB347B348EDB6B349EDB7B34AB34BB34CB34DCEF9B7AFBFF3EDB8C2EBC9B0B34EB34FB350B351B352B353EDB9B354B355C6F6BFB3B356B357B358EDBCC5F8B359D1D0B35AD7A9EDBAEDBBB35BD1E2B35CEDBFEDC0B35DEDC4B35EB35FB360EDC8B361EDC6EDCED5E8B362EDC9B363B364EDC7EDBEB365B366C5E9B367B368B369C6C6B36AB36BC9E9D4D2EDC1EDC2EDC3EDC5B36CC0F9B36DB4A1B36EB36FB370B371B9E8B372EDD0B373B374B375B376EDD1B377EDCAB378EDCFB379CEF8B37AB37BCBB6EDCCEDCDB37CB37DB37EB380B381CFF5B382B383B384B385B386B387B388B389B38AB38BB38CB38DEDD2C1F2D3B2EDCBC8B7B38EB38FB390B391B392B393B394B395BCEFB396B397B398B399C5F0B39AB39BB39CB39DB39EB39FB3A0B440B441B442EDD6B443B5EFB444B445C2B5B0ADCBE9B446B447B1AEB448EDD4B449B44AB44BCDEBB5E2B44CEDD5EDD3EDD7B44DB44EB5FAB44FEDD8B450EDD9B451EDDCB452B1CCB453B454B455B456B457B458B459B45AC5F6BCEEEDDACCBCB2EAB45BB45CB45DB45EEDDBB45FB460B461B462C4EBB463B464B4C5B465B466B467B0F5B468B469B46AEDDFC0DAB4E8B46BB46CB46DB46EC5CDB46FB470B471EDDDBFC4B472B473B474EDDEB475B476B477B478B479B47AB47BB47CB47DB47EB480B481B482B483C4A5B484B485B486EDE0B487B488B489B48AB48BEDE1B48CEDE3B48DB48EC1D7B48FB490BBC7B491B492B493B494B495B496BDB8B497B498B499EDE2B49AB49BB49CB49DB49EB49FB4A0B540B541B542B543B544B545EDE4B546B547B548B549B54AB54BB54CB54DB54EB54FEDE6B550B551B552B553B554EDE5B555B556B557B558B559B55AB55BB55CB55DB55EB55FB560B561B562B563EDE7B564B565B566B567B568CABEECEAC0F1B569C9E7B56AECEBC6EEB56BB56CB56DB56EECECB56FC6EDECEDB570B571B572B573B574B575B576B577B578ECF0B579B57AD7E6ECF3B57BB57CECF1ECEEECEFD7A3C9F1CBEEECF4B57DECF2B57EB580CFE9B581ECF6C6B1B582B583B584B585BCC0B586ECF5B587B588B589B58AB58BB58CB58DB5BBBBF6B58EECF7B58FB590B591B592B593D9F7BDFBB594B595C2BBECF8B596B597B598B599ECF9B59AB59BB59CB59DB8A3B59EB59FB5A0B640B641B642B643B644B645B646ECFAB647B648B649B64AB64BB64CB64DB64EB64FB650B651B652ECFBB653B654B655B656B657B658B659B65AB65BB65CB65DECFCB65EB65FB660B661B662D3EDD8AEC0EBB663C7DDBACCB664D0E3CBBDB665CDBAB666B667B8D1B668B669B1FCB66AC7EFB66BD6D6B66CB66DB66EBFC6C3EBB66FB670EFF5B671B672C3D8B673B674B675B676B677B678D7E2B679B67AB67BEFF7B3D3B67CC7D8D1EDB67DD6C8B67EEFF8B680EFF6B681BBFDB3C6B682B683B684B685B686B687B688BDD5B689B68AD2C6B68BBBE0B68CB68DCFA1B68EEFFCEFFBB68FB690EFF9B691B692B693B694B3CCB695C9D4CBB0B696B697B698B699B69AEFFEB69BB69CB0DEB69DB69ED6C9B69FB6A0B740EFFDB741B3EDB742B743F6D5B744B745B746B747B748B749B74AB74BB74CB74DB74EB74FB750B751B752CEC8B753B754B755F0A2B756F0A1B757B5BEBCDABBFCB758B8E5B759B75AB75BB75CB75DB75EC4C2B75FB760B761B762B763B764B765B766B767B768F0A3B769B76AB76BB76CB76DCBEBB76EB76FB770B771B772B773B774B775B776B777B778B779B77AB77BB77CB77DB77EB780B781B782B783B784B785B786F0A6B787B788B789D1A8B78ABEBFC7EEF1B6F1B7BFD5B78BB78CB78DB78EB4A9F1B8CDBBB78FC7D4D5ADB790F1B9B791F1BAB792B793B794B795C7CFB796B797B798D2A4D6CFB799B79AF1BBBDD1B4B0BEBDB79BB79CB79DB4DCCED1B79EBFDFF1BDB79FB7A0B840B841BFFAF1BCB842F1BFB843B844B845F1BEF1C0B846B847B848B849B84AF1C1B84BB84CB84DB84EB84FB850B851B852B853B854B855C1FEB856B857B858B859B85AB85BB85CB85DB85EB85FB860C1A2B861B862B863B864B865B866B867B868B869B86ACAFAB86BB86CD5BEB86DB86EB86FB870BEBABEB9D5C2B871B872BFA2B873CDAFF1B5B874B875B876B877B878B879BDDFB87AB6CBB87BB87CB87DB87EB880B881B882B883B884D6F1F3C3B885B886F3C4B887B8CDB888B889B88AF3C6F3C7B88BB0CAB88CF3C5B88DF3C9CBF1B88EB88FB890F3CBB891D0A6B892B893B1CAF3C8B894B895B896F3CFB897B5D1B898B899F3D7B89AF3D2B89BB89CB89DF3D4F3D3B7FBB89EB1BFB89FF3CEF3CAB5DAB8A0F3D0B940B941F3D1B942F3D5B943B944B945B946F3CDB947BCE3B948C1FDB949F3D6B94AB94BB94CB94DB94EB94FF3DAB950F3CCB951B5C8B952BDEEF3DCB953B954B7A4BFF0D6FECDB2B955B4F0B956B2DFB957F3D8B958F3D9C9B8B959F3DDB95AB95BF3DEB95CF3E1B95DB95EB95FB960B961B962B963B964B965B966B967F3DFB968B969F3E3F3E2B96AB96BF3DBB96CBFEAB96DB3EFB96EF3E0B96FB970C7A9B971BCF2B972B973B974B975F3EBB976B977B978B979B97AB97BB97CB9BFB97DB97EF3E4B980B981B982B2ADBBFEB983CBE3B984B985B986B987F3EDF3E9B988B989B98AB9DCF3EEB98BB98CB98DF3E5F3E6F3EAC2E1F3ECF3EFF3E8BCFDB98EB98FB990CFE4B991B992F3F0B993B994B995F3E7B996B997B998B999B99AB99BB99CB99DF3F2B99EB99FB9A0BA40D7ADC6AABA41BA42BA43BA44F3F3BA45BA46BA47BA48F3F1BA49C2A8BA4ABA4BBA4CBA4DBA4EB8DDF3F5BA4FBA50F3F4BA51BA52BA53B4DBBA54BA55BA56F3F6F3F7BA57BA58BA59F3F8BA5ABA5BBA5CC0BABA5DBA5EC0E9BA5FBA60BA61BA62BA63C5F1BA64BA65BA66BA67F3FBBA68F3FABA69BA6ABA6BBA6CBA6DBA6EBA6FBA70B4D8BA71BA72BA73F3FEF3F9BA74BA75F3FCBA76BA77BA78BA79BA7ABA7BF3FDBA7CBA7DBA7EBA80BA81BA82BA83BA84F4A1BA85BA86BA87BA88BA89BA8AF4A3BBC9BA8BBA8CF4A2BA8DBA8EBA8FBA90BA91BA92BA93BA94BA95BA96BA97BA98BA99F4A4BA9ABA9BBA9CBA9DBA9EBA9FB2BEF4A6F4A5BAA0BB40BB41BB42BB43BB44BB45BB46BB47BB48BB49BCAEBB4ABB4BBB4CBB4DBB4EBB4FBB50BB51BB52BB53BB54BB55BB56BB57BB58BB59BB5ABB5BBB5CBB5DBB5EBB5FBB60BB61BB62BB63BB64BB65BB66BB67BB68BB69BB6ABB6BBB6CBB6DBB6EC3D7D9E1BB6FBB70BB71BB72BB73BB74C0E0F4CCD7D1BB75BB76BB77BB78BB79BB7ABB7BBB7CBB7DBB7EBB80B7DBBB81BB82BB83BB84BB85BB86BB87F4CEC1A3BB88BB89C6C9BB8AB4D6D5B3BB8BBB8CBB8DF4D0F4CFF4D1CBDABB8EBB8FF4D2BB90D4C1D6E0BB91BB92BB93BB94B7E0BB95BB96BB97C1B8BB98BB99C1BBF4D3BEACBB9ABB9BBB9CBB9DBB9EB4E2BB9FBBA0F4D4F4D5BEABBC40BC41F4D6BC42BC43BC44F4DBBC45F4D7F4DABC46BAFDBC47F4D8F4D9BC48BC49BC4ABC4BBC4CBC4DBC4EB8E2CCC7F4DCBC4FB2DABC50BC51C3D3BC52BC53D4E3BFB7BC54BC55BC56BC57BC58BC59BC5AF4DDBC5BBC5CBC5DBC5EBC5FBC60C5B4BC61BC62BC63BC64BC65BC66BC67BC68F4E9BC69BC6ACFB5BC6BBC6CBC6DBC6EBC6FBC70BC71BC72BC73BC74BC75BC76BC77BC78CEC9BC79BC7ABC7BBC7CBC7DBC7EBC80BC81BC82BC83BC84BC85BC86BC87BC88BC89BC8ABC8BBC8CBC8DBC8ECBD8BC8FCBF7BC90BC91BC92BC93BDF4BC94BC95BC96D7CFBC97BC98BC99C0DBBC9ABC9BBC9CBC9DBC9EBC9FBCA0BD40BD41BD42BD43BD44BD45BD46BD47BD48BD49BD4ABD4BBD4CBD4DBD4EBD4FBD50BD51BD52BD53BD54BD55BD56BD57BD58BD59BD5ABD5BBD5CBD5DBD5EBD5FBD60BD61BD62BD63BD64BD65BD66BD67BD68BD69BD6ABD6BBD6CBD6DBD6EBD6FBD70BD71BD72BD73BD74BD75BD76D0F5BD77BD78BD79BD7ABD7BBD7CBD7DBD7EF4EABD80BD81BD82BD83BD84BD85BD86BD87BD88BD89BD8ABD8BBD8CBD8DBD8EBD8FBD90BD91BD92BD93BD94BD95BD96BD97BD98BD99BD9ABD9BBD9CBD9DBD9EBD9FBDA0BE40BE41BE42BE43BE44BE45BE46BE47BE48BE49BE4ABE4BBE4CF4EBBE4DBE4EBE4FBE50BE51BE52BE53F4ECBE54BE55BE56BE57BE58BE59BE5ABE5BBE5CBE5DBE5EBE5FBE60BE61BE62BE63BE64BE65BE66BE67BE68BE69BE6ABE6BBE6CBE6DBE6EBE6FBE70BE71BE72BE73BE74BE75BE76BE77BE78BE79BE7ABE7BBE7CBE7DBE7EBE80BE81BE82BE83BE84BE85BE86BE87BE88BE89BE8ABE8BBE8CBE8DBE8EBE8FBE90BE91BE92BE93BE94BE95BE96BE97BE98BE99BE9ABE9BBE9CBE9DBE9EBE9FBEA0BF40BF41BF42BF43BF44BF45BF46BF47BF48BF49BF4ABF4BBF4CBF4DBF4EBF4FBF50BF51BF52BF53BF54BF55BF56BF57BF58BF59BF5ABF5BBF5CBF5DBF5EBF5FBF60BF61BF62BF63BF64BF65BF66BF67BF68BF69BF6ABF6BBF6CBF6DBF6EBF6FBF70BF71BF72BF73BF74BF75BF76BF77BF78BF79BF7ABF7BBF7CBF7DBF7EBF80F7E3BF81BF82BF83BF84BF85B7B1BF86BF87BF88BF89BF8AF4EDBF8BBF8CBF8DBF8EBF8FBF90BF91BF92BF93BF94BF95BF96BF97BF98BF99BF9ABF9BBF9CBF9DBF9EBF9FBFA0C040C041C042C043C044C045C046C047C048C049C04AC04BC04CC04DC04EC04FC050C051C052C053C054C055C056C057C058C059C05AC05BC05CC05DC05EC05FC060C061C062C063D7EBC064C065C066C067C068C069C06AC06BC06CC06DC06EC06FC070C071C072C073C074C075C076C077C078C079C07AC07BF4EEC07CC07DC07EE6F9BEC0E6FABAECE6FBCFCBE6FCD4BCBCB6E6FDE6FEBCCDC8D2CEB3E7A1C080B4BFE7A2C9B4B8D9C4C9C081D7DDC2DAB7D7D6BDCEC6B7C4C082C083C5A6E7A3CFDFE7A4E7A5E7A6C1B7D7E9C9F0CFB8D6AFD6D5E7A7B0EDE7A8E7A9C9DCD2EFBEADE7AAB0F3C8DEBDE1E7ABC8C6C084E7ACBBE6B8F8D1A4E7ADC2E7BEF8BDCACDB3E7AEE7AFBEEED0E5C085CBE7CCD0BCCCE7B0BCA8D0F7E7B1C086D0F8E7B2E7B3B4C2E7B4E7B5C9FECEACC3E0E7B7B1C1B3F1C087E7B8E7B9D7DBD5C0E7BAC2CCD7BAE7BBE7BCE7BDBCEAC3E5C0C2E7BEE7BFBCA9C088E7C0E7C1E7B6B6D0E7C2C089E7C3E7C4BBBAB5DEC2C6B1E0E7C5D4B5E7C6B8BFE7C8E7C7B7ECC08AE7C9B2F8E7CAE7CBE7CCE7CDE7CEE7CFE7D0D3A7CBF5E7D1E7D2E7D3E7D4C9C9E7D5E7D6E7D7E7D8E7D9BDC9E7DAF3BEC08BB8D7C08CC8B1C08DC08EC08FC090C091C092C093F3BFC094F3C0F3C1C095C096C097C098C099C09AC09BC09CC09DC09EB9DECDF8C09FC0A0D8E8BAB1C140C2DEEEB7C141B7A3C142C143C144C145EEB9C146EEB8B0D5C147C148C149C14AC14BEEBBD5D6D7EFC14CC14DC14ED6C3C14FC150EEBDCAF0C151EEBCC152C153C154C155EEBEC156C157C158C159EEC0C15AC15BEEBFC15CC15DC15EC15FC160C161C162C163D1F2C164C7BCC165C3C0C166C167C168C169C16AB8E1C16BC16CC16DC16EC16FC1E7C170C171F4C6D0DFF4C7C172CFDBC173C174C8BAC175C176F4C8C177C178C179C17AC17BC17CC17DF4C9F4CAC17EF4CBC180C181C182C183C184D9FAB8FEC185C186E5F1D3F0C187F4E0C188CECCC189C18AC18BB3E1C18CC18DC18EC18FF1B4C190D2EEC191F4E1C192C193C194C195C196CFE8F4E2C197C198C7CCC199C19AC19BC19CC19DC19EB5D4B4E4F4E4C19FC1A0C240F4E3F4E5C241C242F4E6C243C244C245C246F4E7C247BAB2B0BFC248F4E8C249C24AC24BC24CC24DC24EC24FB7ADD2EDC250C251C252D2ABC0CFC253BFBCEBA3D5DFEAC8C254C255C256C257F1F3B6F8CBA3C258C259C4CDC25AF1E7C25BF1E8B8FBF1E9BAC4D4C5B0D2C25CC25DF1EAC25EC25FC260F1EBC261F1ECC262C263F1EDF1EEF1EFF1F1F1F0C5D5C264C265C266C267C268C269F1F2C26AB6FAC26BF1F4D2AEDEC7CBCAC26CC26DB3DCC26EB5A2C26FB9A2C270C271C4F4F1F5C272C273F1F6C274C275C276C1C4C1FBD6B0F1F7C277C278C279C27AF1F8C27BC1AAC27CC27DC27EC6B8C280BEDBC281C282C283C284C285C286C287C288C289C28AC28BC28CC28DC28EF1F9B4CFC28FC290C291C292C293C294F1FAC295C296C297C298C299C29AC29BC29CC29DC29EC29FC2A0C340EDB2EDB1C341C342CBE0D2DEC343CBC1D5D8C344C8E2C345C0DFBCA1C346C347C348C349C34AC34BEBC1C34CC34DD0A4C34ED6E2C34FB6C7B8D8EBC0B8CEC350EBBFB3A6B9C9D6ABC351B7F4B7CAC352C353C354BCE7B7BEEBC6C355EBC7B0B9BFCFC356EBC5D3FDC357EBC8C358C359EBC9C35AC35BB7CEC35CEBC2EBC4C9F6D6D7D5CDD0B2EBCFCEB8EBD0C35DB5A8C35EC35FC360C361C362B1B3EBD2CCA5C363C364C365C366C367C368C369C5D6EBD3C36AEBD1C5DFEBCECAA4EBD5B0FBC36BC36CBAFAC36DC36ED8B7F1E3C36FEBCAEBCBEBCCEBCDEBD6E6C0EBD9C370BFE8D2C8EBD7EBDCB8ECEBD8C371BDBAC372D0D8C373B0B7C374EBDDC4DCC375C376C377C378D6ACC379C37AC37BB4E0C37CC37DC2F6BCB9C37EC380EBDAEBDBD4E0C6EAC4D4EBDFC5A7D9F5C381B2B1C382EBE4C383BDC5C384C385C386EBE2C387C388C389C38AC38BC38CC38DC38EC38FC390C391C392C393EBE3C394C395B8ACC396CDD1EBE5C397C398C399EBE1C39AC1B3C39BC39CC39DC39EC39FC6A2C3A0C440C441C442C443C444C445CCF3C446EBE6C447C0B0D2B8EBE7C448C449C44AB8AFB8ADC44BEBE8C7BBCDF3C44CC44DC44EEBEAEBEBC44FC450C451C452C453EBEDC454C455C456C457D0C8C458EBF2C459EBEEC45AC45BC45CEBF1C8F9C45DD1FCEBECC45EC45FEBE9C460C461C462C463B8B9CFD9C4E5EBEFEBF0CCDACDC8B0F2C464EBF6C465C466C467C468C469EBF5C46AB2B2C46BC46CC46DC46EB8E0C46FEBF7C470C471C472C473C474C475B1ECC476C477CCC5C4A4CFA5C478C479C47AC47BC47CEBF9C47DC47EECA2C480C5F2C481EBFAC482C483C484C485C486C487C488C489C9C5C48AC48BC48CC48DC48EC48FE2DFEBFEC490C491C492C493CDCEECA1B1DBD3B7C494C495D2DCC496C497C498EBFDC499EBFBC49AC49BC49CC49DC49EC49FC4A0C540C541C542C543C544C545C546C547C548C549C54AC54BC54CC54DC54EB3BCC54FC550C551EAB0C552C553D7D4C554F4ABB3F4C555C556C557C558C559D6C1D6C2C55AC55BC55CC55DC55EC55FD5E9BECAC560F4A7C561D2A8F4A8F4A9C562F4AABECBD3DFC563C564C565C566C567C9E0C9E1C568C569F3C2C56ACAE6C56BCCF2C56CC56DC56EC56FC570C571E2B6CBB4C572CEE8D6DBC573F4ADF4AEF4AFC574C575C576C577F4B2C578BABDF4B3B0E3F4B0C579F4B1BDA2B2D5C57AF4B6F4B7B6E6B2B0CFCFF4B4B4ACC57BF4B5C57CC57DF4B8C57EC580C581C582C583F4B9C584C585CDA7C586F4BAC587F4BBC588C589C58AF4BCC58BC58CC58DC58EC58FC590C591C592CBD2C593F4BDC594C595C596C597F4BEC598C599C59AC59BC59CC59DC59EC59FF4BFC5A0C640C641C642C643F4DEC1BCBCE8C644C9ABD1DEE5F5C645C646C647C648DCB3D2D5C649C64ADCB4B0ACDCB5C64BC64CBDDAC64DDCB9C64EC64FC650D8C2C651DCB7D3F3C652C9D6DCBADCB6C653DCBBC3A2C654C655C656C657DCBCDCC5DCBDC658C659CEDFD6A5C65ADCCFC65BDCCDC65CC65DDCD2BDE6C2ABC65EDCB8DCCBDCCEDCBEB7D2B0C5DCC7D0BEDCC1BBA8C65FB7BCDCCCC660C661DCC6DCBFC7DBC662C663C664D1BFDCC0C665C666DCCAC667C668DCD0C669C66ACEADDCC2C66BDCC3DCC8DCC9B2D4DCD1CBD5C66CD4B7DCDBDCDFCCA6DCE6C66DC3E7DCDCC66EC66FBFC1DCD9C670B0FAB9B6DCE5DCD3C671DCC4DCD6C8F4BFE0C672C673C674C675C9BBC676C677C678B1BDC679D3A2C67AC67BDCDAC67CC67DDCD5C67EC6BBC680DCDEC681C682C683C684C685D7C2C3AFB7B6C7D1C3A9DCE2DCD8DCEBDCD4C686C687DCDDC688BEA5DCD7C689DCE0C68AC68BDCE3DCE4C68CDCF8C68DC68EDCE1DDA2DCE7C68FC690C691C692C693C694C695C696C697C698BCEBB4C4C699C69AC3A3B2E7DCFAC69BDCF2C69CDCEFC69DDCFCDCEED2F0B2E8C69EC8D7C8E3DCFBC69FDCEDC6A0C740C741DCF7C742C743DCF5C744C745BEA3DCF4C746B2DDC747C748C749C74AC74BDCF3BCF6DCE8BBC4C74CC0F3C74DC74EC74FC750C751BCD4DCE9DCEAC752DCF1DCF6DCF9B5B4C753C8D9BBE7DCFEDCFDD3ABDDA1DDA3DDA5D2F1DDA4DDA6DDA7D2A9C754C755C756C757C758C759C75ABAC9DDA9C75BC75CDDB6DDB1DDB4C75DC75EC75FC760C761C762C763DDB0C6CEC764C765C0F2C766C767C768C769C9AFC76AC76BC76CDCECDDAEC76DC76EC76FC770DDB7C771C772DCF0DDAFC773DDB8C774DDACC775C776C777C778C779C77AC77BDDB9DDB3DDADC4AAC77CC77DC77EC780DDA8C0B3C1ABDDAADDABC781DDB2BBF1DDB5D3A8DDBAC782DDBBC3A7C783C784DDD2DDBCC785C786C787DDD1C788B9BDC789C78ABED5C78BBEFAC78CC78DBACAC78EC78FC790C791DDCAC792DDC5C793DDBFC794C795C796B2CBDDC3C797DDCBB2A4DDD5C798C799C79ADDBEC79BC79CC79DC6D0DDD0C79EC79FC7A0C840C841DDD4C1E2B7C6C842C843C844C845C846DDCEDDCFC847C848C849DDC4C84AC84BC84CDDBDC84DDDCDCCD1C84EDDC9C84FC850C851C852DDC2C3C8C6BCCEAEDDCCC853DDC8C854C855C856C857C858C859DDC1C85AC85BC85CDDC6C2DCC85DC85EC85FC860C861C862D3A9D3AADDD3CFF4C8F8C863C864C865C866C867C868C869C86ADDE6C86BC86CC86DC86EC86FC870DDC7C871C872C873DDE0C2E4C874C875C876C877C878C879C87AC87BDDE1C87CC87DC87EC880C881C882C883C884C885C886DDD7C887C888C889C88AC88BD6F8C88CDDD9DDD8B8F0DDD6C88DC88EC88FC890C6CFC891B6ADC892C893C894C895C896DDE2C897BAF9D4E1DDE7C898C899C89AB4D0C89BDDDAC89CBFFBDDE3C89DDDDFC89EDDDDC89FC8A0C940C941C942C943C944B5D9C945C946C947C948DDDBDDDCDDDEC949BDAFDDE4C94ADDE5C94BC94CC94DC94EC94FC950C951C952DDF5C953C3C9C954C955CBE2C956C957C958C959DDF2C95AC95BC95CC95DC95EC95FC960C961C962C963C964C965C966D8E1C967C968C6D1C969DDF4C96AC96BC96CD5F4DDF3DDF0C96DC96EDDECC96FDDEFC970DDE8C971C972D0EEC973C974C975C976C8D8DDEEC977C978DDE9C979C97ADDEACBF2C97BDDEDC97CC97DB1CDC97EC980C981C982C983C984C0B6C985BCBBDDF1C986C987DDF7C988DDF6DDEBC989C98AC98BC98CC98DC5EEC98EC98FC990DDFBC991C992C993C994C995C996C997C998C999C99AC99BDEA4C99CC99DDEA3C99EC99FC9A0CA40CA41CA42CA43CA44CA45CA46CA47CA48DDF8CA49CA4ACA4BCA4CC3EFCA4DC2FBCA4ECA4FCA50D5E1CA51CA52CEB5CA53CA54CA55CA56DDFDCA57B2CCCA58CA59CA5ACA5BCA5CCA5DCA5ECA5FCA60C4E8CADFCA61CA62CA63CA64CA65CA66CA67CA68CA69CA6AC7BEDDFADDFCDDFEDEA2B0AAB1CECA6BCA6CCA6DCA6ECA6FDEACCA70CA71CA72CA73DEA6BDB6C8EFCA74CA75CA76CA77CA78CA79CA7ACA7BCA7CCA7DCA7EDEA1CA80CA81DEA5CA82CA83CA84CA85DEA9CA86CA87CA88CA89CA8ADEA8CA8BCA8CCA8DDEA7CA8ECA8FCA90CA91CA92CA93CA94CA95CA96DEADCA97D4CCCA98CA99CA9ACA9BDEB3DEAADEAECA9CCA9DC0D9CA9ECA9FCAA0CB40CB41B1A1DEB6CB42DEB1CB43CB44CB45CB46CB47CB48CB49DEB2CB4ACB4BCB4CCB4DCB4ECB4FCB50CB51CB52CB53CB54D1A6DEB5CB55CB56CB57CB58CB59CB5ACB5BDEAFCB5CCB5DCB5EDEB0CB5FD0BDCB60CB61CB62DEB4CAEDDEB9CB63CB64CB65CB66CB67CB68DEB8CB69DEB7CB6ACB6BCB6CCB6DCB6ECB6FCB70DEBBCB71CB72CB73CB74CB75CB76CB77BDE5CB78CB79CB7ACB7BCB7CB2D8C3EACB7DCB7EDEBACB80C5BACB81CB82CB83CB84CB85CB86DEBCCB87CB88CB89CB8ACB8BCB8CCB8DCCD9CB8ECB8FCB90CB91B7AACB92CB93CB94CB95CB96CB97CB98CB99CB9ACB9BCB9CCB9DCB9ECB9FCBA0CC40CC41D4E5CC42CC43CC44DEBDCC45CC46CC47CC48CC49DEBFCC4ACC4BCC4CCC4DCC4ECC4FCC50CC51CC52CC53CC54C4A2CC55CC56CC57CC58DEC1CC59CC5ACC5BCC5CCC5DCC5ECC5FCC60CC61CC62CC63CC64CC65CC66CC67CC68DEBECC69DEC0CC6ACC6BCC6CCC6DCC6ECC6FCC70CC71CC72CC73CC74CC75CC76CC77D5BACC78CC79CC7ADEC2CC7BCC7CCC7DCC7ECC80CC81CC82CC83CC84CC85CC86CC87CC88CC89CC8ACC8BF2AEBBA2C2B2C5B0C2C7CC8CCC8DF2AFCC8ECC8FCC90CC91CC92D0E9CC93CC94CC95D3DDCC96CC97CC98EBBDCC99CC9ACC9BCC9CCC9DCC9ECC9FCCA0B3E6F2B0CD40F2B1CD41CD42CAADCD43CD44CD45CD46CD47CD48CD49BAE7F2B3F2B5F2B4CBE4CFBAF2B2CAB4D2CFC2ECCD4ACD4BCD4CCD4DCD4ECD4FCD50CEC3F2B8B0F6F2B7CD51CD52CD53CD54CD55F2BECD56B2CFCD57CD58CD59CD5ACD5BCD5CD1C1F2BACD5DCD5ECD5FCD60CD61F2BCD4E9CD62CD63F2BBF2B6F2BFF2BDCD64F2B9CD65CD66F2C7F2C4F2C6CD67CD68F2CAF2C2F2C0CD69CD6ACD6BF2C5CD6CCD6DCD6ECD6FCD70D6FBCD71CD72CD73F2C1CD74C7F9C9DFCD75F2C8B9C6B5B0CD76CD77F2C3F2C9F2D0F2D6CD78CD79BBD7CD7ACD7BCD7CF2D5CDDCCD7DD6EBCD7ECD80F2D2F2D4CD81CD82CD83CD84B8F2CD85CD86CD87CD88F2CBCD89CD8ACD8BF2CEC2F9CD8CD5DDF2CCF2CDF2CFF2D3CD8DCD8ECD8FF2D9D3BCCD90CD91CD92CD93B6EACD94CAF1CD95B7E4F2D7CD96CD97CD98F2D8F2DAF2DDF2DBCD99CD9AF2DCCD9BCD9CCD9DCD9ED1D1F2D1CD9FCDC9CDA0CECFD6A9CE40F2E3CE41C3DBCE42F2E0CE43CE44C0AFF2ECF2DECE45F2E1CE46CE47CE48F2E8CE49CE4ACE4BCE4CF2E2CE4DCE4EF2E7CE4FCE50F2E6CE51CE52F2E9CE53CE54CE55F2DFCE56CE57F2E4F2EACE58CE59CE5ACE5BCE5CCE5DCE5ED3ACF2E5B2F5CE5FCE60F2F2CE61D0ABCE62CE63CE64CE65F2F5CE66CE67CE68BBC8CE69F2F9CE6ACE6BCE6CCE6DCE6ECE6FF2F0CE70CE71F2F6F2F8F2FACE72CE73CE74CE75CE76CE77CE78CE79F2F3CE7AF2F1CE7BCE7CCE7DBAFBCE7EB5FBCE80CE81CE82CE83F2EFF2F7F2EDF2EECE84CE85CE86F2EBF3A6CE87F3A3CE88CE89F3A2CE8ACE8BF2F4CE8CC8DACE8DCE8ECE8FCE90CE91F2FBCE92CE93CE94F3A5CE95CE96CE97CE98CE99CE9ACE9BC3F8CE9CCE9DCE9ECE9FCEA0CF40CF41CF42F2FDCF43CF44F3A7F3A9F3A4CF45F2FCCF46CF47CF48F3ABCF49F3AACF4ACF4BCF4CCF4DC2DDCF4ECF4FF3AECF50CF51F3B0CF52CF53CF54CF55CF56F3A1CF57CF58CF59F3B1F3ACCF5ACF5BCF5CCF5DCF5EF3AFF2FEF3ADCF5FCF60CF61CF62CF63CF64CF65F3B2CF66CF67CF68CF69F3B4CF6ACF6BCF6CCF6DF3A8CF6ECF6FCF70CF71F3B3CF72CF73CF74F3B5CF75CF76CF77CF78CF79CF7ACF7BCF7CCF7DCF7ED0B7CF80CF81CF82CF83F3B8CF84CF85CF86CF87D9F9CF88CF89CF8ACF8BCF8CCF8DF3B9CF8ECF8FCF90CF91CF92CF93CF94CF95F3B7CF96C8E4F3B6CF97CF98CF99CF9AF3BACF9BCF9CCF9DCF9ECF9FF3BBB4C0CFA0D040D041D042D043D044D045D046D047D048D049D04AD04BD04CD04DEEC3D04ED04FD050D051D052D053F3BCD054D055F3BDD056D057D058D1AAD059D05AD05BF4ACD0C6D05CD05DD05ED05FD060D061D0D0D1DCD062D063D064D065D066D067CFCED068D069BDD6D06AD1C3D06BD06CD06DD06ED06FD070D071BAE2E1E9D2C2F1C2B2B9D072D073B1EDF1C3D074C9C0B3C4D075D9F2D076CBA5D077F1C4D078D079D07AD07BD6D4D07CD07DD07ED080D081F1C5F4C0F1C6D082D4ACF1C7D083B0C0F4C1D084D085F4C2D086D087B4FCD088C5DBD089D08AD08BD08CCCBBD08DD08ED08FD0E4D090D091D092D093D094CDE0D095D096D097D098D099F1C8D09AD9F3D09BD09CD09DD09ED09FD0A0B1BBD140CFAED141D142D143B8A4D144D145D146D147D148F1CAD149D14AD14BD14CF1CBD14DD14ED14FD150B2C3C1D1D151D152D7B0F1C9D153D154F1CCD155D156D157D158F1CED159D15AD15BD9F6D15CD2E1D4A3D15DD15EF4C3C8B9D15FD160D161D162D163F4C4D164D165F1CDF1CFBFE3F1D0D166D167F1D4D168D169D16AD16BD16CD16DD16EF1D6F1D1D16FC9D1C5E1D170D171D172C2E3B9FCD173D174F1D3D175F1D5D176D177D178B9D3D179D17AD17BD17CD17DD17ED180F1DBD181D182D183D184D185BAD6D186B0FDF1D9D187D188D189D18AD18BF1D8F1D2F1DAD18CD18DD18ED18FD190F1D7D191D192D193C8ECD194D195D196D197CDCAF1DDD198D199D19AD19BE5BDD19CD19DD19EF1DCD19FF1DED1A0D240D241D242D243D244D245D246D247D248F1DFD249D24ACFE5D24BD24CD24DD24ED24FD250D251D252D253D254D255D256D257D258D259D25AD25BD25CD25DD25ED25FD260D261D262D263F4C5BDF3D264D265D266D267D268D269F1E0D26AD26BD26CD26DD26ED26FD270D271D272D273D274D275D276D277D278D279D27AD27BD27CD27DF1E1D27ED280D281CEF7D282D2AAD283F1FBD284D285B8B2D286D287D288D289D28AD28BD28CD28DD28ED28FD290D291D292D293D294D295D296D297D298D299D29AD29BD29CD29DD29ED29FD2A0D340D341D342D343D344D345D346D347D348D349D34AD34BD34CD34DD34ED34FD350D351D352D353D354D355D356D357D358D359D35AD35BD35CD35DD35EBCFBB9DBD35FB9E6C3D9CAD3EAE8C0C0BEF5EAE9EAEAEAEBD360EAECEAEDEAEEEAEFBDC7D361D362D363F5FBD364D365D366F5FDD367F5FED368F5FCD369D36AD36BD36CBDE2D36DF6A1B4A5D36ED36FD370D371F6A2D372D373D374F6A3D375D376D377ECB2D378D379D37AD37BD37CD37DD37ED380D381D382D383D384D1D4D385D386D387D388D389D38AD9EAD38BD38CD38DD38ED38FD390D391D392D393D394D395D396D397D398D399D39AD39BD39CD39DD39ED39FD3A0D440D441D442D443D444D445D446D447D448D449D44AD44BD44CD44DD44ED44FD450D451D452D453D454D455D456D457D458D459D45AD45BD45CD45DD45ED45FF6A4D460D461D462D463D464D465D466D467D468EEBAD469D46AD46BD46CD46DD46ED46FD470D471D472D473D474D475D476D477D478D479D47AD47BD47CD47DD47ED480D481D482D483D484D485D486D487D488D489D48AD48BD48CD48DD48ED48FD490D491D492D493D494D495D496D497D498D499D5B2D49AD49BD49CD49DD49ED49FD4A0D540D541D542D543D544D545D546D547D3FECCDCD548D549D54AD54BD54CD54DD54ED54FCAC4D550D551D552D553D554D555D556D557D558D559D55AD55BD55CD55DD55ED55FD560D561D562D563D564D565D566D567D568D569D56AD56BD56CD56DD56ED56FD570D571D572D573D574D575D576D577D578D579D57AD57BD57CD57DD57ED580D581D582D583D584D585D586D587D588D589D58AD58BD58CD58DD58ED58FD590D591D592D593D594D595D596D597D598D599D59AD59BD59CD59DD59ED59FD5A0D640D641D642D643D644D645D646D647D648D649D64AD64BD64CD64DD64ED64FD650D651D652D653D654D655D656D657D658D659D65AD65BD65CD65DD65ED65FD660D661D662E5C0D663D664D665D666D667D668D669D66AD66BD66CD66DD66ED66FD670D671D672D673D674D675D676D677D678D679D67AD67BD67CD67DD67ED680D681F6A5D682D683D684D685D686D687D688D689D68AD68BD68CD68DD68ED68FD690D691D692D693D694D695D696D697D698D699D69AD69BD69CD69DD69ED69FD6A0D740D741D742D743D744D745D746D747D748D749D74AD74BD74CD74DD74ED74FD750D751D752D753D754D755D756D757D758D759D75AD75BD75CD75DD75ED75FBEAFD760D761D762D763D764C6A9D765D766D767D768D769D76AD76BD76CD76DD76ED76FD770D771D772D773D774D775D776D777D778D779D77AD77BD77CD77DD77ED780D781D782D783D784D785D786D787D788D789D78AD78BD78CD78DD78ED78FD790D791D792D793D794D795D796D797D798DAA5BCC6B6A9B8BCC8CFBCA5DAA6DAA7CCD6C8C3DAA8C6FDD799D1B5D2E9D1B6BCC7D79ABDB2BBE4DAA9DAAAD1C8DAABD0EDB6EFC2DBD79BCBCFB7EDC9E8B7C3BEF7D6A4DAACDAADC6C0D7E7CAB6D79CD5A9CBDFD5EFDAAED6DFB4CADAB0DAAFD79DD2EBDAB1DAB2DAB3CAD4DAB4CAABDAB5DAB6B3CFD6EFDAB7BBB0B5AEDAB8DAB9B9EED1AFD2E8DABAB8C3CFEAB2EFDABBDABCD79EBDEBCEDCD3EFDABDCEF3DABED3D5BBE5DABFCBB5CBD0DAC0C7EBD6EEDAC1C5B5B6C1DAC2B7CCBFCEDAC3DAC4CBADDAC5B5F7DAC6C1C2D7BBDAC7CCB8D79FD2EAC4B1DAC8B5FDBBD1DAC9D0B3DACADACBCEBDDACCDACDDACEB2F7DAD1DACFD1E8DAD0C3D5DAD2D7A0DAD3DAD4DAD5D0BBD2A5B0F9DAD6C7ABDAD7BDF7C3A1DAD8DAD9C3FDCCB7DADADADBC0BEC6D7DADCDADDC7B4DADEDADFB9C8D840D841D842D843D844D845D846D847D848BBEDD849D84AD84BD84CB6B9F4F8D84DF4F9D84ED84FCDE3D850D851D852D853D854D855D856D857F5B9D858D859D85AD85BEBE0D85CD85DD85ED85FD860D861CFF3BBBFD862D863D864D865D866D867D868BAC0D4A5D869D86AD86BD86CD86DD86ED86FE1D9D870D871D872D873F5F4B1AAB2F2D874D875D876D877D878D879D87AF5F5D87BD87CF5F7D87DD87ED880BAD1F5F6D881C3B2D882D883D884D885D886D887D888F5F9D889D88AD88BF5F8D88CD88DD88ED88FD890D891D892D893D894D895D896D897D898D899D89AD89BD89CD89DD89ED89FD8A0D940D941D942D943D944D945D946D947D948D949D94AD94BD94CD94DD94ED94FD950D951D952D953D954D955D956D957D958D959D95AD95BD95CD95DD95ED95FD960D961D962D963D964D965D966D967D968D969D96AD96BD96CD96DD96ED96FD970D971D972D973D974D975D976D977D978D979D97AD97BD97CD97DD97ED980D981D982D983D984D985D986D987D988D989D98AD98BD98CD98DD98ED98FD990D991D992D993D994D995D996D997D998D999D99AD99BD99CD99DD99ED99FD9A0DA40DA41DA42DA43DA44DA45DA46DA47DA48DA49DA4ADA4BDA4CDA4DDA4EB1B4D5EAB8BADA4FB9B1B2C6D4F0CFCDB0DCD5CBBBF5D6CAB7B7CCB0C6B6B1E1B9BAD6FCB9E1B7A1BCFAEADAEADBCCF9B9F3EADCB4FBC3B3B7D1BAD8EADDD4F4EADEBCD6BBDFEADFC1DEC2B8D4DFD7CAEAE0EAE1EAE4EAE2EAE3C9DEB8B3B6C4EAE5CAEAC9CDB4CDDA50DA51E2D9C5E2EAE6C0B5DA52D7B8EAE7D7ACC8FCD8D3D8CDD4DEDA53D4F9C9C4D3AEB8D3B3E0DA54C9E2F4F6DA55DA56DA57BAD5DA58F4F7DA59DA5AD7DFDA5BDA5CF4F1B8B0D5D4B8CFC6F0DA5DDA5EDA5FDA60DA61DA62DA63DA64DA65B3C3DA66DA67F4F2B3ACDA68DA69DA6ADA6BD4BDC7F7DA6CDA6DDA6EDA6FDA70F4F4DA71DA72F4F3DA73DA74DA75DA76DA77DA78DA79DA7ADA7BDA7CCCCBDA7DDA7EDA80C8A4DA81DA82DA83DA84DA85DA86DA87DA88DA89DA8ADA8BDA8CDA8DF4F5DA8ED7E3C5BFF5C0DA8FDA90F5BBDA91F5C3DA92F5C2DA93D6BAF5C1DA94DA95DA96D4BEF5C4DA97F5CCDA98DA99DA9ADA9BB0CFB5F8DA9CF5C9F5CADA9DC5DCDA9EDA9FDAA0DB40F5C5F5C6DB41DB42F5C7F5CBDB43BEE0F5C8B8FADB44DB45DB46F5D0F5D3DB47DB48DB49BFE7DB4AB9F2F5BCF5CDDB4BDB4CC2B7DB4DDB4EDB4FCCF8DB50BCF9DB51F5CEF5CFF5D1B6E5F5D2DB52F5D5DB53DB54DB55DB56DB57DB58DB59F5BDDB5ADB5BDB5CF5D4D3BBDB5DB3ECDB5EDB5FCCA4DB60DB61DB62DB63F5D6DB64DB65DB66DB67DB68DB69DB6ADB6BF5D7BEE1F5D8DB6CDB6DCCDFF5DBDB6EDB6FDB70DB71DB72B2C8D7D9DB73F5D9DB74F5DAF5DCDB75F5E2DB76DB77DB78F5E0DB79DB7ADB7BF5DFF5DDDB7CDB7DF5E1DB7EDB80F5DEF5E4F5E5DB81CCE3DB82DB83E5BFB5B8F5E3F5E8CCA3DB84DB85DB86DB87DB88F5E6F5E7DB89DB8ADB8BDB8CDB8DDB8EF5BEDB8FDB90DB91DB92DB93DB94DB95DB96DB97DB98DB99DB9AB1C4DB9BDB9CF5BFDB9DDB9EB5C5B2E4DB9FF5ECF5E9DBA0B6D7DC40F5EDDC41F5EADC42DC43DC44DC45DC46F5EBDC47DC48B4DADC49D4EADC4ADC4BDC4CF5EEDC4DB3F9DC4EDC4FDC50DC51DC52DC53DC54F5EFF5F1DC55DC56DC57F5F0DC58DC59DC5ADC5BDC5CDC5DDC5EF5F2DC5FF5F3DC60DC61DC62DC63DC64DC65DC66DC67DC68DC69DC6ADC6BC9EDB9AADC6CDC6DC7FBDC6EDC6FB6E3DC70DC71DC72DC73DC74DC75DC76CCC9DC77DC78DC79DC7ADC7BDC7CDC7DDC7EDC80DC81DC82DC83DC84DC85DC86DC87DC88DC89DC8AEAA6DC8BDC8CDC8DDC8EDC8FDC90DC91DC92DC93DC94DC95DC96DC97DC98DC99DC9ADC9BDC9CDC9DDC9EDC9FDCA0DD40DD41DD42DD43DD44DD45DD46DD47DD48DD49DD4ADD4BDD4CDD4DDD4EDD4FDD50DD51DD52DD53DD54DD55DD56DD57DD58DD59DD5ADD5BDD5CDD5DDD5EDD5FDD60DD61DD62DD63DD64DD65DD66DD67DD68DD69DD6ADD6BDD6CDD6DDD6EDD6FDD70DD71DD72DD73DD74DD75DD76DD77DD78DD79DD7ADD7BDD7CDD7DDD7EDD80DD81DD82DD83DD84DD85DD86DD87DD88DD89DD8ADD8BDD8CDD8DDD8EDD8FDD90DD91DD92DD93DD94DD95DD96DD97DD98DD99DD9ADD9BDD9CDD9DDD9EDD9FDDA0DE40DE41DE42DE43DE44DE45DE46DE47DE48DE49DE4ADE4BDE4CDE4DDE4EDE4FDE50DE51DE52DE53DE54DE55DE56DE57DE58DE59DE5ADE5BDE5CDE5DDE5EDE5FDE60B3B5D4FEB9ECD0F9DE61E9EDD7AAE9EEC2D6C8EDBAE4E9EFE9F0E9F1D6E1E9F2E9F3E9F5E9F4E9F6E9F7C7E1E9F8D4D8E9F9BDCEDE62E9FAE9FBBDCFE9FCB8A8C1BEE9FDB1B2BBD4B9F5E9FEDE63EAA1EAA2EAA3B7F8BCADDE64CAE4E0CED4AFCFBDD5B7EAA4D5DEEAA5D0C1B9BCDE65B4C7B1D9DE66DE67DE68C0B1DE69DE6ADE6BDE6CB1E6B1E7DE6DB1E8DE6EDE6FDE70DE71B3BDC8E8DE72DE73DE74DE75E5C1DE76DE77B1DFDE78DE79DE7AC1C9B4EFDE7BDE7CC7A8D3D8DE7DC6F9D1B8DE7EB9FDC2F5DE80DE81DE82DE83DE84D3ADDE85D4CBBDFCDE86E5C2B7B5E5C3DE87DE88BBB9D5E2DE89BDF8D4B6CEA5C1ACB3D9DE8ADE8BCCF6DE8CE5C6E5C4E5C8DE8DE5CAE5C7B5CFC6C8DE8EB5FCE5C5DE8FCAF6DE90DE91E5C9DE92DE93DE94C3D4B1C5BCA3DE95DE96DE97D7B7DE98DE99CDCBCBCDCACACCD3E5CCE5CBC4E6DE9ADE9BD1A1D1B7E5CDDE9CE5D0DE9DCDB8D6F0E5CFB5DDDE9ECDBEDE9FE5D1B6BADEA0DF40CDA8B9E4DF41CAC5B3D1CBD9D4ECE5D2B7EADF42DF43DF44E5CEDF45DF46DF47DF48DF49DF4AE5D5B4FEE5D6DF4BDF4CDF4DDF4EDF4FE5D3E5D4DF50D2DDDF51DF52C2DFB1C6DF53D3E2DF54DF55B6DDCBECDF56E5D7DF57DF58D3F6DF59DF5ADF5BDF5CDF5DB1E9DF5EB6F4E5DAE5D8E5D9B5C0DF5FDF60DF61D2C5E5DCDF62DF63E5DEDF64DF65DF66DF67DF68DF69E5DDC7B2DF6AD2A3DF6BDF6CE5DBDF6DDF6EDF6FDF70D4E2D5DADF71DF72DF73DF74DF75E5E0D7F1DF76DF77DF78DF79DF7ADF7BDF7CE5E1DF7DB1DCD1FBDF7EE5E2E5E4DF80DF81DF82DF83E5E3DF84DF85E5E5DF86DF87DF88DF89DF8AD2D8DF8BB5CBDF8CE7DFDF8DDAF5DF8EDAF8DF8FDAF6DF90DAF7DF91DF92DF93DAFAD0CFC4C7DF94DF95B0EEDF96DF97DF98D0B0DF99DAF9DF9AD3CABAAADBA2C7F1DF9BDAFCDAFBC9DBDAFDDF9CDBA1D7DEDAFEC1DADF9DDF9EDBA5DF9FDFA0D3F4E040E041DBA7DBA4E042DBA8E043E044BDBCE045E046E047C0C9DBA3DBA6D6A3E048DBA9E049E04AE04BDBADE04CE04DE04EDBAEDBACBAC2E04FE050E051BFA4DBABE052E053E054DBAAD4C7B2BFE055E056DBAFE057B9F9E058DBB0E059E05AE05BE05CB3BBE05DE05EE05FB5A6E060E061E062E063B6BCDBB1E064E065E066B6F5E067DBB2E068E069E06AE06BE06CE06DE06EE06FE070E071E072E073E074E075E076E077E078E079E07AE07BB1C9E07CE07DE07EE080DBB4E081E082E083DBB3DBB5E084E085E086E087E088E089E08AE08BE08CE08DE08EDBB7E08FDBB6E090E091E092E093E094E095E096DBB8E097E098E099E09AE09BE09CE09DE09EE09FDBB9E0A0E140DBBAE141E142D3CFF4FAC7F5D7C3C5E4F4FCF4FDF4FBE143BEC6E144E145E146E147D0EFE148E149B7D3E14AE14BD4CDCCAAE14CE14DF5A2F5A1BAA8F4FECBD6E14EE14FE150F5A4C0D2E151B3EAE152CDAAF5A5F5A3BDB4F5A8E153F5A9BDCDC3B8BFE1CBE1F5AAE154E155E156F5A6F5A7C4F0E157E158E159E15AE15BF5ACE15CB4BCE15DD7EDE15EB4D7F5ABF5AEE15FE160F5ADF5AFD0D1E161E162E163E164E165E166E167C3D1C8A9E168E169E16AE16BE16CE16DF5B0F5B1E16EE16FE170E171E172E173F5B2E174E175F5B3F5B4F5B5E176E177E178E179F5B7F5B6E17AE17BE17CE17DF5B8E17EE180E181E182E183E184E185E186E187E188E189E18AB2C9E18BD3D4CACDE18CC0EFD6D8D2B0C1BFE18DBDF0E18EE18FE190E191E192E193E194E195E196E197B8AAE198E199E19AE19BE19CE19DE19EE19FE1A0E240E241E242E243E244E245E246E247E248E249E24AE24BE24CE24DE24EE24FE250E251E252E253E254E255E256E257E258E259E25AE25BE25CE25DE25EE25FE260E261E262E263E264E265E266E267E268E269E26AE26BE26CE26DE26EE26FE270E271E272E273E274E275E276E277E278E279E27AE27BE27CE27DE27EE280E281E282E283E284E285E286E287E288E289E28AE28BE28CE28DE28EE28FE290E291E292E293E294E295E296E297E298E299E29AE29BE29CE29DE29EE29FE2A0E340E341E342E343E344E345E346E347E348E349E34AE34BE34CE34DE34EE34FE350E351E352E353E354E355E356E357E358E359E35AE35BE35CE35DE35EE35FE360E361E362E363E364E365E366E367E368E369E36AE36BE36CE36DBCF8E36EE36FE370E371E372E373E374E375E376E377E378E379E37AE37BE37CE37DE37EE380E381E382E383E384E385E386E387F6C6E388E389E38AE38BE38CE38DE38EE38FE390E391E392E393E394E395E396E397E398E399E39AE39BE39CE39DE39EE39FE3A0E440E441E442E443E444E445F6C7E446E447E448E449E44AE44BE44CE44DE44EE44FE450E451E452E453E454E455E456E457E458E459E45AE45BE45CE45DE45EF6C8E45FE460E461E462E463E464E465E466E467E468E469E46AE46BE46CE46DE46EE46FE470E471E472E473E474E475E476E477E478E479E47AE47BE47CE47DE47EE480E481E482E483E484E485E486E487E488E489E48AE48BE48CE48DE48EE48FE490E491E492E493E494E495E496E497E498E499E49AE49BE49CE49DE49EE49FE4A0E540E541E542E543E544E545E546E547E548E549E54AE54BE54CE54DE54EE54FE550E551E552E553E554E555E556E557E558E559E55AE55BE55CE55DE55EE55FE560E561E562E563E564E565E566E567E568E569E56AE56BE56CE56DE56EE56FE570E571E572E573F6C9E574E575E576E577E578E579E57AE57BE57CE57DE57EE580E581E582E583E584E585E586E587E588E589E58AE58BE58CE58DE58EE58FE590E591E592E593E594E595E596E597E598E599E59AE59BE59CE59DE59EE59FF6CAE5A0E640E641E642E643E644E645E646E647E648E649E64AE64BE64CE64DE64EE64FE650E651E652E653E654E655E656E657E658E659E65AE65BE65CE65DE65EE65FE660E661E662F6CCE663E664E665E666E667E668E669E66AE66BE66CE66DE66EE66FE670E671E672E673E674E675E676E677E678E679E67AE67BE67CE67DE67EE680E681E682E683E684E685E686E687E688E689E68AE68BE68CE68DE68EE68FE690E691E692E693E694E695E696E697E698E699E69AE69BE69CE69DF6CBE69EE69FE6A0E740E741E742E743E744E745E746E747F7E9E748E749E74AE74BE74CE74DE74EE74FE750E751E752E753E754E755E756E757E758E759E75AE75BE75CE75DE75EE75FE760E761E762E763E764E765E766E767E768E769E76AE76BE76CE76DE76EE76FE770E771E772E773E774E775E776E777E778E779E77AE77BE77CE77DE77EE780E781E782E783E784E785E786E787E788E789E78AE78BE78CE78DE78EE78FE790E791E792E793E794E795E796E797E798E799E79AE79BE79CE79DE79EE79FE7A0E840E841E842E843E844E845E846E847E848E849E84AE84BE84CE84DE84EF6CDE84FE850E851E852E853E854E855E856E857E858E859E85AE85BE85CE85DE85EE85FE860E861E862E863E864E865E866E867E868E869E86AE86BE86CE86DE86EE86FE870E871E872E873E874E875E876E877E878E879E87AF6CEE87BE87CE87DE87EE880E881E882E883E884E885E886E887E888E889E88AE88BE88CE88DE88EE88FE890E891E892E893E894EEC4EEC5EEC6D5EBB6A4EEC8EEC7EEC9EECAC7A5EECBEECCE895B7B0B5F6EECDEECFE896EECEE897B8C6EED0EED1EED2B6DBB3AED6D3C4C6B1B5B8D6EED3EED4D4BFC7D5BEFBCED9B9B3EED6EED5EED8EED7C5A5EED9EEDAC7AEEEDBC7AFEEDCB2A7EEDDEEDEEEDFEEE0EEE1D7EAEEE2EEE3BCD8EEE4D3CBCCFAB2ACC1E5EEE5C7A6C3ADE898EEE6EEE7EEE8EEE9EEEAEEEBEEECE899EEEDEEEEEEEFE89AE89BEEF0EEF1EEF2EEF4EEF3E89CEEF5CDADC2C1EEF6EEF7EEF8D5A1EEF9CFB3EEFAEEFBE89DEEFCEEFDEFA1EEFEEFA2B8F5C3FAEFA3EFA4BDC2D2BFB2F9EFA5EFA6EFA7D2F8EFA8D6FDEFA9C6CCE89EEFAAEFABC1B4EFACCFFACBF8EFAEEFADB3FAB9F8EFAFEFB0D0E2EFB1EFB2B7E6D0BFEFB3EFB4EFB5C8F1CCE0EFB6EFB7EFB8EFB9EFBAD5E0EFBBB4EDC3AAEFBCE89FEFBDEFBEEFBFE8A0CEFDEFC0C2E0B4B8D7B6BDF5E940CFC7EFC3EFC1EFC2EFC4B6A7BCFCBEE2C3CCEFC5EFC6E941EFC7EFCFEFC8EFC9EFCAC7C2EFF1B6CDEFCBE942EFCCEFCDB6C6C3BEEFCEE943EFD0EFD1EFD2D5F2E944EFD3C4F7E945EFD4C4F8EFD5EFD6B8E4B0F7EFD7EFD8EFD9E946EFDAEFDBEFDCEFDDE947EFDEBEB5EFE1EFDFEFE0E948EFE2EFE3C1CDEFE4EFE5EFE6EFE7EFE8EFE9EFEAEFEBEFECC0D8E949EFEDC1ADEFEEEFEFEFF0E94AE94BCFE2E94CE94DE94EE94FE950E951E952E953B3A4E954E955E956E957E958E959E95AE95BE95CE95DE95EE95FE960E961E962E963E964E965E966E967E968E969E96AE96BE96CE96DE96EE96FE970E971E972E973E974E975E976E977E978E979E97AE97BE97CE97DE97EE980E981E982E983E984E985E986E987E988E989E98AE98BE98CE98DE98EE98FE990E991E992E993E994E995E996E997E998E999E99AE99BE99CE99DE99EE99FE9A0EA40EA41EA42EA43EA44EA45EA46EA47EA48EA49EA4AEA4BEA4CEA4DEA4EEA4FEA50EA51EA52EA53EA54EA55EA56EA57EA58EA59EA5AEA5BC3C5E3C5C9C1E3C6EA5CB1D5CECAB4B3C8F2E3C7CFD0E3C8BCE4E3C9E3CAC3C6D5A2C4D6B9EBCEC5E3CBC3F6E3CCEA5DB7A7B8F3BAD2E3CDE3CED4C4E3CFEA5EE3D0D1CBE3D1E3D2E3D3E3D4D1D6E3D5B2FBC0BBE3D6EA5FC0ABE3D7E3D8E3D9EA60E3DAE3DBEA61B8B7DAE2EA62B6D3EA63DAE4DAE3EA64EA65EA66EA67EA68EA69EA6ADAE6EA6BEA6CEA6DC8EEEA6EEA6FDAE5B7C0D1F4D2F5D5F3BDD7EA70EA71EA72EA73D7E8DAE8DAE7EA74B0A2CDD3EA75DAE9EA76B8BDBCCAC2BDC2A4B3C2DAEAEA77C2AAC4B0BDB5EA78EA79CFDEEA7AEA7BEA7CDAEBC9C2EA7DEA7EEA80EA81EA82B1DDEA83EA84EA85DAECEA86B6B8D4BAEA87B3FDEA88EA89DAEDD4C9CFD5C5E3EA8ADAEEEA8BEA8CEA8DEA8EEA8FDAEFEA90DAF0C1EACCD5CFDDEA91EA92EA93EA94EA95EA96EA97EA98EA99EA9AEA9BEA9CEA9DD3E7C2A1EA9EDAF1EA9FEAA0CBE5EB40DAF2EB41CBE6D2FEEB42EB43EB44B8F4EB45EB46DAF3B0AFCFB6EB47EB48D5CFEB49EB4AEB4BEB4CEB4DEB4EEB4FEB50EB51EB52CBEDEB53EB54EB55EB56EB57EB58EB59EB5ADAF4EB5BEB5CE3C4EB5DEB5EC1A5EB5FEB60F6BFEB61EB62F6C0F6C1C4D1EB63C8B8D1E3EB64EB65D0DBD1C5BCAFB9CDEB66EFF4EB67EB68B4C6D3BAF6C2B3FBEB69EB6AF6C3EB6BEB6CB5F1EB6DEB6EEB6FEB70EB71EB72EB73EB74EB75EB76F6C5EB77EB78EB79EB7AEB7BEB7CEB7DD3EAF6A7D1A9EB7EEB80EB81EB82F6A9EB83EB84EB85F6A8EB86EB87C1E3C0D7EB88B1A2EB89EB8AEB8BEB8CCEEDEB8DD0E8F6ABEB8EEB8FCFF6EB90F6AAD5F0F6ACC3B9EB91EB92EB93BBF4F6AEF6ADEB94EB95EB96C4DEEB97EB98C1D8EB99EB9AEB9BEB9CEB9DCBAAEB9ECFBCEB9FEBA0EC40EC41EC42EC43EC44EC45EC46EC47EC48F6AFEC49EC4AF6B0EC4BEC4CF6B1EC4DC2B6EC4EEC4FEC50EC51EC52B0D4C5F9EC53EC54EC55EC56F6B2EC57EC58EC59EC5AEC5BEC5CEC5DEC5EEC5FEC60EC61EC62EC63EC64EC65EC66EC67EC68EC69C7E0F6A6EC6AEC6BBEB8EC6CEC6DBEB2EC6EB5E5EC6FEC70B7C7EC71BFBFC3D2C3E6EC72EC73D8CCEC74EC75EC76B8EFEC77EC78EC79EC7AEC7BEC7CEC7DEC7EEC80BDF9D1A5EC81B0D0EC82EC83EC84EC85EC86F7B0EC87EC88EC89EC8AEC8BEC8CEC8DEC8EF7B1EC8FEC90EC91EC92EC93D0ACEC94B0B0EC95EC96EC97F7B2F7B3EC98F7B4EC99EC9AEC9BC7CAEC9CEC9DEC9EEC9FECA0ED40ED41BECFED42ED43F7B7ED44ED45ED46ED47ED48ED49ED4AF7B6ED4BB1DEED4CF7B5ED4DED4EF7B8ED4FF7B9ED50ED51ED52ED53ED54ED55ED56ED57ED58ED59ED5AED5BED5CED5DED5EED5FED60ED61ED62ED63ED64ED65ED66ED67ED68ED69ED6AED6BED6CED6DED6EED6FED70ED71ED72ED73ED74ED75ED76ED77ED78ED79ED7AED7BED7CED7DED7EED80ED81CEA4C8CDED82BAABE8B8E8B9E8BABEC2ED83ED84ED85ED86ED87D2F4ED88D4CFC9D8ED89ED8AED8BED8CED8DED8EED8FED90ED91ED92ED93ED94ED95ED96ED97ED98ED99ED9AED9BED9CED9DED9EED9FEDA0EE40EE41EE42EE43EE44EE45EE46EE47EE48EE49EE4AEE4BEE4CEE4DEE4EEE4FEE50EE51EE52EE53EE54EE55EE56EE57EE58EE59EE5AEE5BEE5CEE5DEE5EEE5FEE60EE61EE62EE63EE64EE65EE66EE67EE68EE69EE6AEE6BEE6CEE6DEE6EEE6FEE70EE71EE72EE73EE74EE75EE76EE77EE78EE79EE7AEE7BEE7CEE7DEE7EEE80EE81EE82EE83EE84EE85EE86EE87EE88EE89EE8AEE8BEE8CEE8DEE8EEE8FEE90EE91EE92EE93EE94EE95EE96EE97EE98EE99EE9AEE9BEE9CEE9DEE9EEE9FEEA0EF40EF41EF42EF43EF44EF45D2B3B6A5C7EAF1FCCFEECBB3D0EBE7EFCDE7B9CBB6D9F1FDB0E4CBCCF1FED4A4C2ADC1ECC6C4BEB1F2A1BCD5EF46F2A2F2A3EF47F2A4D2C3C6B5EF48CDC7F2A5EF49D3B1BFC5CCE2EF4AF2A6F2A7D1D5B6EEF2A8F2A9B5DFF2AAF2ABEF4BB2FCF2ACF2ADC8A7EF4CEF4DEF4EEF4FEF50EF51EF52EF53EF54EF55EF56EF57EF58EF59EF5AEF5BEF5CEF5DEF5EEF5FEF60EF61EF62EF63EF64EF65EF66EF67EF68EF69EF6AEF6BEF6CEF6DEF6EEF6FEF70EF71B7E7EF72EF73ECA9ECAAECABEF74ECACEF75EF76C6AEECADECAEEF77EF78EF79B7C9CAB3EF7AEF7BEF7CEF7DEF7EEF80EF81E2B8F7CFEF82EF83EF84EF85EF86EF87EF88EF89EF8AEF8BEF8CEF8DEF8EEF8FEF90EF91EF92EF93EF94EF95EF96EF97EF98EF99EF9AEF9BEF9CEF9DEF9EEF9FEFA0F040F041F042F043F044F7D0F045F046B2CDF047F048F049F04AF04BF04CF04DF04EF04FF050F051F052F053F054F055F056F057F058F059F05AF05BF05CF05DF05EF05FF060F061F062F063F7D1F064F065F066F067F068F069F06AF06BF06CF06DF06EF06FF070F071F072F073F074F075F076F077F078F079F07AF07BF07CF07DF07EF080F081F082F083F084F085F086F087F088F089F7D3F7D2F08AF08BF08CF08DF08EF08FF090F091F092F093F094F095F096E2BBF097BCA2F098E2BCE2BDE2BEE2BFE2C0E2C1B7B9D2FBBDA4CACEB1A5CBC7F099E2C2B6FCC8C4E2C3F09AF09BBDC8F09CB1FDE2C4F09DB6F6E2C5C4D9F09EF09FE2C6CFDAB9DDE2C7C0A1F0A0E2C8B2F6F140E2C9F141C1F3E2CAE2CBC2F8E2CCE2CDE2CECAD7D8B8D9E5CFE3F142F143F144F145F146F147F148F149F14AF14BF14CF0A5F14DF14EDCB0F14FF150F151F152F153F154F155F156F157F158F159F15AF15BF15CF15DF15EF15FF160F161F162F163F164F165F166F167F168F169F16AF16BF16CF16DF16EF16FF170F171F172F173F174F175F176F177F178F179F17AF17BF17CF17DF17EF180F181F182F183F184F185F186F187F188F189F18AF18BF18CF18DF18EF18FF190F191F192F193F194F195F196F197F198F199F19AF19BF19CF19DF19EF19FF1A0F240F241F242F243F244F245F246F247F248F249F24AF24BF24CF24DF24EF24FF250F251F252F253F254F255F256F257F258F259F25AF25BF25CF25DF25EF25FF260F261F262F263F264F265F266F267F268F269F26AF26BF26CF26DF26EF26FF270F271F272F273F274F275F276F277F278F279F27AF27BF27CF27DF27EF280F281F282F283F284F285F286F287F288F289F28AF28BF28CF28DF28EF28FF290F291F292F293F294F295F296F297F298F299F29AF29BF29CF29DF29EF29FF2A0F340F341F342F343F344F345F346F347F348F349F34AF34BF34CF34DF34EF34FF350F351C2EDD4A6CDD4D1B1B3DBC7FDF352B2B5C2BFE6E0CABBE6E1E6E2BED4E6E3D7A4CDD5E6E5BCDDE6E4E6E6E6E7C2EEF353BDBEE6E8C2E6BAA7E6E9F354E6EAB3D2D1E9F355F356BFA5E6EBC6EFE6ECE6EDF357F358E6EEC6ADE6EFF359C9A7E6F0E6F1E6F2E5B9E6F3E6F4C2E2E6F5E6F6D6E8E6F7F35AE6F8B9C7F35BF35CF35DF35EF35FF360F361F7BBF7BAF362F363F364F365F7BEF7BCBAA1F366F7BFF367F7C0F368F369F36AF7C2F7C1F7C4F36BF36CF7C3F36DF36EF36FF370F371F7C5F7C6F372F373F374F375F7C7F376CBE8F377F378F379F37AB8DFF37BF37CF37DF37EF380F381F7D4F382F7D5F383F384F385F386F7D6F387F388F389F38AF7D8F38BF7DAF38CF7D7F38DF38EF38FF390F391F392F393F394F395F7DBF396F7D9F397F398F399F39AF39BF39CF39DD7D7F39EF39FF3A0F440F7DCF441F442F443F444F445F446F7DDF447F448F449F7DEF44AF44BF44CF44DF44EF44FF450F451F452F453F454F7DFF455F456F457F7E0F458F459F45AF45BF45CF45DF45EF45FF460F461F462DBCBF463F464D8AAF465F466F467F468F469F46AF46BF46CE5F7B9EDF46DF46EF46FF470BFFDBBEAF7C9C6C7F7C8F471F7CAF7CCF7CBF472F473F474F7CDF475CEBAF476F7CEF477F478C4A7F479F47AF47BF47CF47DF47EF480F481F482F483F484F485F486F487F488F489F48AF48BF48CF48DF48EF48FF490F491F492F493F494F495F496F497F498F499F49AF49BF49CF49DF49EF49FF4A0F540F541F542F543F544F545F546F547F548F549F54AF54BF54CF54DF54EF54FF550F551F552F553F554F555F556F557F558F559F55AF55BF55CF55DF55EF55FF560F561F562F563F564F565F566F567F568F569F56AF56BF56CF56DF56EF56FF570F571F572F573F574F575F576F577F578F579F57AF57BF57CF57DF57EF580F581F582F583F584F585F586F587F588F589F58AF58BF58CF58DF58EF58FF590F591F592F593F594F595F596F597F598F599F59AF59BF59CF59DF59EF59FF5A0F640F641F642F643F644F645F646F647F648F649F64AF64BF64CF64DF64EF64FF650F651F652F653F654F655F656F657F658F659F65AF65BF65CF65DF65EF65FF660F661F662F663F664F665F666F667F668F669F66AF66BF66CF66DF66EF66FF670F671F672F673F674F675F676F677F678F679F67AF67BF67CF67DF67EF680F681F682F683F684F685F686F687F688F689F68AF68BF68CF68DF68EF68FF690F691F692F693F694F695F696F697F698F699F69AF69BF69CF69DF69EF69FF6A0F740F741F742F743F744F745F746F747F748F749F74AF74BF74CF74DF74EF74FF750F751F752F753F754F755F756F757F758F759F75AF75BF75CF75DF75EF75FF760F761F762F763F764F765F766F767F768F769F76AF76BF76CF76DF76EF76FF770F771F772F773F774F775F776F777F778F779F77AF77BF77CF77DF77EF780D3E3F781F782F6CFF783C2B3F6D0F784F785F6D1F6D2F6D3F6D4F786F787F6D6F788B1ABF6D7F789F6D8F6D9F6DAF78AF6DBF6DCF78BF78CF78DF78EF6DDF6DECFCAF78FF6DFF6E0F6E1F6E2F6E3F6E4C0F0F6E5F6E6F6E7F6E8F6E9F790F6EAF791F6EBF6ECF792F6EDF6EEF6EFF6F0F6F1F6F2F6F3F6F4BEA8F793F6F5F6F6F6F7F6F8F794F795F796F797F798C8FAF6F9F6FAF6FBF6FCF799F79AF6FDF6FEF7A1F7A2F7A3F7A4F7A5F79BF79CF7A6F7A7F7A8B1EEF7A9F7AAF7ABF79DF79EF7ACF7ADC1DBF7AEF79FF7A0F7AFF840F841F842F843F844F845F846F847F848F849F84AF84BF84CF84DF84EF84FF850F851F852F853F854F855F856F857F858F859F85AF85BF85CF85DF85EF85FF860F861F862F863F864F865F866F867F868F869F86AF86BF86CF86DF86EF86FF870F871F872F873F874F875F876F877F878F879F87AF87BF87CF87DF87EF880F881F882F883F884F885F886F887F888F889F88AF88BF88CF88DF88EF88FF890F891F892F893F894F895F896F897F898F899F89AF89BF89CF89DF89EF89FF8A0F940F941F942F943F944F945F946F947F948F949F94AF94BF94CF94DF94EF94FF950F951F952F953F954F955F956F957F958F959F95AF95BF95CF95DF95EF95FF960F961F962F963F964F965F966F967F968F969F96AF96BF96CF96DF96EF96FF970F971F972F973F974F975F976F977F978F979F97AF97BF97CF97DF97EF980F981F982F983F984F985F986F987F988F989F98AF98BF98CF98DF98EF98FF990F991F992F993F994F995F996F997F998F999F99AF99BF99CF99DF99EF99FF9A0FA40FA41FA42FA43FA44FA45FA46FA47FA48FA49FA4AFA4BFA4CFA4DFA4EFA4FFA50FA51FA52FA53FA54FA55FA56FA57FA58FA59FA5AFA5BFA5CFA5DFA5EFA5FFA60FA61FA62FA63FA64FA65FA66FA67FA68FA69FA6AFA6BFA6CFA6DFA6EFA6FFA70FA71FA72FA73FA74FA75FA76FA77FA78FA79FA7AFA7BFA7CFA7DFA7EFA80FA81FA82FA83FA84FA85FA86FA87FA88FA89FA8AFA8BFA8CFA8DFA8EFA8FFA90FA91FA92FA93FA94FA95FA96FA97FA98FA99FA9AFA9BFA9CFA9DFA9EFA9FFAA0FB40FB41FB42FB43FB44FB45FB46FB47FB48FB49FB4AFB4BFB4CFB4DFB4EFB4FFB50FB51FB52FB53FB54FB55FB56FB57FB58FB59FB5AFB5BC4F1F0AFBCA6F0B0C3F9FB5CC5B8D1BBFB5DF0B1F0B2F0B3F0B4F0B5D1BCFB5ED1ECFB5FF0B7F0B6D4A7FB60CDD2F0B8F0BAF0B9F0BBF0BCFB61FB62B8EBF0BDBAE8FB63F0BEF0BFBEE9F0C0B6ECF0C1F0C2F0C3F0C4C8B5F0C5F0C6FB64F0C7C5F4FB65F0C8FB66FB67FB68F0C9FB69F0CAF7BDFB6AF0CBF0CCF0CDFB6BF0CEFB6CFB6DFB6EFB6FF0CFBAD7FB70F0D0F0D1F0D2F0D3F0D4F0D5F0D6F0D8FB71FB72D3A5F0D7FB73F0D9FB74FB75FB76FB77FB78FB79FB7AFB7BFB7CFB7DF5BAC2B9FB7EFB80F7E4FB81FB82FB83FB84F7E5F7E6FB85FB86F7E7FB87FB88FB89FB8AFB8BFB8CF7E8C2B4FB8DFB8EFB8FFB90FB91FB92FB93FB94FB95F7EAFB96F7EBFB97FB98FB99FB9AFB9BFB9CC2F3FB9DFB9EFB9FFBA0FC40FC41FC42FC43FC44FC45FC46FC47FC48F4F0FC49FC4AFC4BF4EFFC4CFC4DC2E9FC4EF7E1F7E2FC4FFC50FC51FC52FC53BBC6FC54FC55FC56FC57D9E4FC58FC59FC5ACAF2C0E8F0A4FC5BBADAFC5CFC5DC7ADFC5EFC5FFC60C4ACFC61FC62F7ECF7EDF7EEFC63F7F0F7EFFC64F7F1FC65FC66F7F4FC67F7F3FC68F7F2F7F5FC69FC6AFC6BFC6CF7F6FC6DFC6EFC6FFC70FC71FC72FC73FC74FC75EDE9FC76EDEAEDEBFC77F6BCFC78FC79FC7AFC7BFC7CFC7DFC7EFC80FC81FC82FC83FC84F6BDFC85F6BEB6A6FC86D8BEFC87FC88B9C4FC89FC8AFC8BD8BBFC8CDCB1FC8DFC8EFC8FFC90FC91FC92CAF3FC93F7F7FC94FC95FC96FC97FC98FC99FC9AFC9BFC9CF7F8FC9DFC9EF7F9FC9FFCA0FD40FD41FD42FD43FD44F7FBFD45F7FAFD46B1C7FD47F7FCF7FDFD48FD49FD4AFD4BFD4CF7FEFD4DFD4EFD4FFD50FD51FD52FD53FD54FD55FD56FD57C6EBECB4FD58FD59FD5AFD5BFD5CFD5DFD5EFD5FFD60FD61FD62FD63FD64FD65FD66FD67FD68FD69FD6AFD6BFD6CFD6DFD6EFD6FFD70FD71FD72FD73FD74FD75FD76FD77FD78FD79FD7AFD7BFD7CFD7DFD7EFD80FD81FD82FD83FD84FD85B3DDF6B3FD86FD87F6B4C1E4F6B5F6B6F6B7F6B8F6B9F6BAC8A3F6BBFD88FD89FD8AFD8BFD8CFD8DFD8EFD8FFD90FD91FD92FD93C1FAB9A8EDE8FD94FD95FD96B9EAD9DFFD97FD98FD99FD9AFD9";
|
|
67
67
|
encodeToGb2312(D) {
|
|
68
68
|
for (var C = "", B = 0; B < D.length; B++) {
|
|
@@ -70,8 +70,8 @@ class cC {
|
|
|
70
70
|
if (F == " ")
|
|
71
71
|
C += "+";
|
|
72
72
|
else if (A >= 19968 && A <= 40869) {
|
|
73
|
-
let
|
|
74
|
-
C += "%" + this.z.substr(
|
|
73
|
+
let t = A - 19968;
|
|
74
|
+
C += "%" + this.z.substr(t * 4, 2) + "%" + this.z.substr(t * 4 + 2, 2);
|
|
75
75
|
} else
|
|
76
76
|
C += "%" + D.charCodeAt(B).toString(16);
|
|
77
77
|
}
|
|
@@ -89,11 +89,11 @@ class cC {
|
|
|
89
89
|
var A = D.charAt(B);
|
|
90
90
|
if (isNaN(parseInt(A)))
|
|
91
91
|
try {
|
|
92
|
-
var
|
|
92
|
+
var t = D.substr(B, 2) + D.substr(B + 3, 2);
|
|
93
93
|
B = B + 4;
|
|
94
|
-
for (var
|
|
95
|
-
if (
|
|
96
|
-
C += String.fromCharCode(
|
|
94
|
+
for (var e = -1; (e = this.z.indexOf(t, e + 1)) != -1; )
|
|
95
|
+
if (e % 4 == 0) {
|
|
96
|
+
C += String.fromCharCode(e / 4 + 19968);
|
|
97
97
|
break;
|
|
98
98
|
}
|
|
99
99
|
} catch {
|
|
@@ -111,16 +111,19 @@ class cC {
|
|
|
111
111
|
return C;
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
|
-
let P = new
|
|
114
|
+
let P = new mC();
|
|
115
115
|
class o {
|
|
116
116
|
static kOrigin;
|
|
117
117
|
imp;
|
|
118
118
|
constructor(D, C, B) {
|
|
119
|
-
this.imp = new
|
|
119
|
+
this.imp = new s.mxcadassemblyimp.MdGePoint3d(), D instanceof Object ? (this.imp.x = D.x, this.imp.y = D.y, this.imp.z = D.z) : (this.imp.x = D || 0, this.imp.y = C || 0, this.imp.z = B || 0);
|
|
120
120
|
}
|
|
121
121
|
toVector3() {
|
|
122
122
|
return new THREE.Vector3(this.imp.x, this.imp.y, this.imp.z);
|
|
123
123
|
}
|
|
124
|
+
setFromVector3(D) {
|
|
125
|
+
return this.imp.x = D.x, this.imp.y = D.y, this.imp.z = D.z, this;
|
|
126
|
+
}
|
|
124
127
|
copy(D) {
|
|
125
128
|
return this.imp.x = D.x, this.imp.y = D.y, this.imp.z = D.z, this;
|
|
126
129
|
}
|
|
@@ -171,7 +174,7 @@ class y {
|
|
|
171
174
|
static kNegateZAxis;
|
|
172
175
|
imp;
|
|
173
176
|
constructor(D, C, B) {
|
|
174
|
-
this.imp = new
|
|
177
|
+
this.imp = new s.mxcadassemblyimp.MdGeVector3d(), D instanceof Object ? (this.imp.x = D.x, this.imp.y = D.y, this.imp.z = D.z) : (this.imp.x = D || 0, this.imp.y = C || 0, this.imp.z = B || 0);
|
|
175
178
|
}
|
|
176
179
|
copy(D) {
|
|
177
180
|
return this.imp.x = D.imp.x, this.imp.y = D.imp.y, this.imp.z = D.imp.z, this;
|
|
@@ -239,7 +242,7 @@ class v {
|
|
|
239
242
|
static kIdentity;
|
|
240
243
|
imp;
|
|
241
244
|
constructor(D) {
|
|
242
|
-
this.imp = new
|
|
245
|
+
this.imp = new s.mxcadassemblyimp.MdGeMatrix3d(), D instanceof Object && this.imp.copy(D);
|
|
243
246
|
}
|
|
244
247
|
copy(D) {
|
|
245
248
|
return this.imp.copy(D.imp), this;
|
|
@@ -296,13 +299,18 @@ class v {
|
|
|
296
299
|
return this.imp.getData(D, C);
|
|
297
300
|
}
|
|
298
301
|
}
|
|
299
|
-
class
|
|
302
|
+
class wD {
|
|
300
303
|
imp;
|
|
301
304
|
constructor(D) {
|
|
302
|
-
this.imp = new
|
|
305
|
+
this.imp = new s.mxcadassemblyimp.MdGeLongArray(), D instanceof Object && this.imp.copy(D);
|
|
303
306
|
}
|
|
304
307
|
copy(D) {
|
|
305
|
-
return this.imp.copy(D.imp), this;
|
|
308
|
+
return this.imp.clear(), this.imp.copy(D.imp), this;
|
|
309
|
+
}
|
|
310
|
+
copyFormAryId(D) {
|
|
311
|
+
return this.imp.clear(), D.forEach((C) => {
|
|
312
|
+
this.imp.append(C.id);
|
|
313
|
+
}), this;
|
|
306
314
|
}
|
|
307
315
|
append(D) {
|
|
308
316
|
this.imp.append(D);
|
|
@@ -316,11 +324,14 @@ class SD {
|
|
|
316
324
|
setAt(D, C) {
|
|
317
325
|
this.imp.setAt(D, C);
|
|
318
326
|
}
|
|
327
|
+
clear() {
|
|
328
|
+
this.imp.clear();
|
|
329
|
+
}
|
|
319
330
|
}
|
|
320
|
-
class
|
|
331
|
+
class GD {
|
|
321
332
|
imp;
|
|
322
333
|
constructor(D) {
|
|
323
|
-
this.imp = new
|
|
334
|
+
this.imp = new s.mxcadassemblyimp.MdGeStringArray(), D instanceof Object && this.imp.copy(D);
|
|
324
335
|
}
|
|
325
336
|
copy(D) {
|
|
326
337
|
return this.imp.copy(D.imp), this;
|
|
@@ -342,11 +353,14 @@ class ID {
|
|
|
342
353
|
for (let F = 0; F < B; F++)
|
|
343
354
|
D(C ? P.decodeFromGb2312(this.imp.at(F)) : this.imp.at(F), F);
|
|
344
355
|
}
|
|
356
|
+
clear() {
|
|
357
|
+
this.imp.clear();
|
|
358
|
+
}
|
|
345
359
|
}
|
|
346
|
-
class
|
|
360
|
+
class pC {
|
|
347
361
|
imp;
|
|
348
362
|
constructor(D) {
|
|
349
|
-
this.imp = new
|
|
363
|
+
this.imp = new s.mxcadassemblyimp.MdGePoint3dArray(), D instanceof Object && this.imp.copy(D);
|
|
350
364
|
}
|
|
351
365
|
copy(D) {
|
|
352
366
|
return this.imp.copy(D.imp), this;
|
|
@@ -363,14 +377,17 @@ class mC {
|
|
|
363
377
|
setAt(D, C) {
|
|
364
378
|
this.imp.setAt(D, C.imp);
|
|
365
379
|
}
|
|
380
|
+
clear() {
|
|
381
|
+
this.imp.clear();
|
|
382
|
+
}
|
|
366
383
|
}
|
|
367
|
-
const
|
|
368
|
-
|
|
369
|
-
}),
|
|
370
|
-
class
|
|
384
|
+
const dC = new FinalizationRegistry((E) => {
|
|
385
|
+
s.App.DestroyObject(E);
|
|
386
|
+
}), hC = {};
|
|
387
|
+
class _ {
|
|
371
388
|
imp = 0;
|
|
372
389
|
constructor(D) {
|
|
373
|
-
this.imp = D, this.imp &&
|
|
390
|
+
this.imp = D, this.imp && dC.register(this, D, hC);
|
|
374
391
|
}
|
|
375
392
|
getImp() {
|
|
376
393
|
return this.imp;
|
|
@@ -396,41 +413,41 @@ class H {
|
|
|
396
413
|
return this.imp.isKindOf(D);
|
|
397
414
|
}
|
|
398
415
|
}
|
|
399
|
-
var
|
|
400
|
-
class
|
|
416
|
+
var L = /* @__PURE__ */ ((E) => (E[E.kMxCAD = 0] = "kMxCAD", E[E.kMxDraw = 1] = "kMxDraw", E[E.kInvalid = 2] = "kInvalid", E))(L || {});
|
|
417
|
+
class k {
|
|
401
418
|
id;
|
|
402
419
|
type;
|
|
403
|
-
constructor(D, C) {
|
|
420
|
+
constructor(D = 0, C = 2) {
|
|
404
421
|
this.id = D, D ? this.type = C : this.type = 2;
|
|
405
422
|
}
|
|
406
423
|
isValid() {
|
|
407
424
|
return this.type != 2 && this.id != 0;
|
|
408
425
|
}
|
|
409
426
|
erase() {
|
|
410
|
-
this.type == 1 ? h.getCurrentDraw().eraseMxEntity(this.id) : this.type == 0 &&
|
|
427
|
+
this.type == 1 ? h.getCurrentDraw().eraseMxEntity(this.id) : this.type == 0 && R.eraseEntity(this.id);
|
|
411
428
|
}
|
|
412
429
|
getMcDbObject() {
|
|
413
|
-
return this.type == 0 ?
|
|
430
|
+
return this.type == 0 ? s.App.ObjectIdToObject(this.id) : null;
|
|
414
431
|
}
|
|
415
432
|
getMcDbEntity() {
|
|
416
|
-
return this.type == 0 &&
|
|
433
|
+
return this.type == 0 && s.App.ObjectIdIsKindOf(this.id, "McDbEntity") ? s.App.ObjectIdToObject(this.id) : null;
|
|
417
434
|
}
|
|
418
435
|
getMcDbCurve() {
|
|
419
|
-
return this.type == 0 &&
|
|
436
|
+
return this.type == 0 && s.App.ObjectIdIsKindOf(this.id, "McDbCurve") ? s.App.ObjectIdToObject(this.id) : null;
|
|
420
437
|
}
|
|
421
438
|
clone() {
|
|
422
439
|
if (this.type == 0) {
|
|
423
|
-
let D =
|
|
440
|
+
let D = s.App.getImp().ObjectIdToMdObject(this.id);
|
|
424
441
|
if (!D)
|
|
425
442
|
return null;
|
|
426
443
|
let C = D.Clone();
|
|
427
|
-
return
|
|
444
|
+
return s.App.DestroyObject(D), s.App.CreateCloneObject(C);
|
|
428
445
|
}
|
|
429
446
|
return null;
|
|
430
447
|
}
|
|
431
448
|
getObjectName() {
|
|
432
449
|
if (this.type == 0)
|
|
433
|
-
return
|
|
450
|
+
return s.App.getImp().ObjectIdToObjectName(this.id);
|
|
434
451
|
if (this.type == 1) {
|
|
435
452
|
let D = h.getCurrentDraw().getMxEntity(this.id);
|
|
436
453
|
if (D)
|
|
@@ -442,7 +459,7 @@ class R {
|
|
|
442
459
|
return this.type == 1 ? h.getCurrentDraw().getMxEntity(this.id) : null;
|
|
443
460
|
}
|
|
444
461
|
}
|
|
445
|
-
class
|
|
462
|
+
class G extends _ {
|
|
446
463
|
constructor(D) {
|
|
447
464
|
super(D);
|
|
448
465
|
}
|
|
@@ -454,28 +471,28 @@ class j extends H {
|
|
|
454
471
|
}
|
|
455
472
|
Clone() {
|
|
456
473
|
let D = this.imp.Clone();
|
|
457
|
-
return
|
|
474
|
+
return s.App.CreateCloneObject(D);
|
|
458
475
|
}
|
|
459
476
|
GetHandle() {
|
|
460
477
|
return this.imp.GetHandle();
|
|
461
478
|
}
|
|
462
479
|
GetDatabase() {
|
|
463
|
-
return new
|
|
480
|
+
return new fD(this.imp.GetDatabase());
|
|
464
481
|
}
|
|
465
482
|
GetOwnerID() {
|
|
466
483
|
return this.imp.GetOwnerID();
|
|
467
484
|
}
|
|
468
485
|
}
|
|
469
|
-
class
|
|
486
|
+
class cD {
|
|
470
487
|
aryVal = [];
|
|
471
488
|
constructor(D) {
|
|
472
489
|
if (D) {
|
|
473
490
|
let C = 0, B = D.length();
|
|
474
491
|
for (; C < B; C++) {
|
|
475
|
-
let F = D.release(C), A =
|
|
492
|
+
let F = D.release(C), A = s.App.CreateCloneObject(F);
|
|
476
493
|
A != null && this.aryVal.push(A);
|
|
477
494
|
}
|
|
478
|
-
|
|
495
|
+
s.App.DestroyObject(D);
|
|
479
496
|
}
|
|
480
497
|
}
|
|
481
498
|
forEach(D) {
|
|
@@ -490,7 +507,7 @@ class aD {
|
|
|
490
507
|
return this.aryVal.length == 0;
|
|
491
508
|
}
|
|
492
509
|
}
|
|
493
|
-
var
|
|
510
|
+
var mD;
|
|
494
511
|
((E) => {
|
|
495
512
|
((D) => {
|
|
496
513
|
D[D.kTextLeft = 0] = "kTextLeft", D[D.kTextCenter = 1] = "kTextCenter", D[D.kTextRight = 2] = "kTextRight", D[D.kTextAlign = 3] = "kTextAlign", D[D.kTextMid = 4] = "kTextMid", D[D.kTextFit = 5] = "kTextFit";
|
|
@@ -501,11 +518,11 @@ var uD;
|
|
|
501
518
|
})(E.AttachmentPoint || (E.AttachmentPoint = {})), ((D) => {
|
|
502
519
|
D[D.kLnWt000 = 0] = "kLnWt000", D[D.kLnWt005 = 5] = "kLnWt005", D[D.kLnWt009 = 9] = "kLnWt009", D[D.kLnWt013 = 13] = "kLnWt013", D[D.kLnWt015 = 15] = "kLnWt015", D[D.kLnWt018 = 18] = "kLnWt018", D[D.kLnWt020 = 20] = "kLnWt020", D[D.kLnWt025 = 25] = "kLnWt025", D[D.kLnWt030 = 30] = "kLnWt030", D[D.kLnWt035 = 35] = "kLnWt035", D[D.kLnWt040 = 40] = "kLnWt040", D[D.kLnWt050 = 50] = "kLnWt050", D[D.kLnWt053 = 53] = "kLnWt053", D[D.kLnWt060 = 60] = "kLnWt060", D[D.kLnWt070 = 70] = "kLnWt070", D[D.kLnWt080 = 80] = "kLnWt080", D[D.kLnWt090 = 90] = "kLnWt090", D[D.kLnWt100 = 100] = "kLnWt100", D[D.kLnWt106 = 106] = "kLnWt106", D[D.kLnWt120 = 120] = "kLnWt120", D[D.kLnWt140 = 140] = "kLnWt140", D[D.kLnWt158 = 158] = "kLnWt158", D[D.kLnWt200 = 200] = "kLnWt200", D[D.kLnWt211 = 211] = "kLnWt211", D[D.kLnWtByLayer = -1] = "kLnWtByLayer", D[D.kLnWtByBlock = -2] = "kLnWtByBlock", D[D.kLnWtByLwDefault = -3] = "kLnWtByLwDefault";
|
|
503
520
|
})(E.LineWeight || (E.LineWeight = {}));
|
|
504
|
-
})(
|
|
505
|
-
class
|
|
521
|
+
})(mD || (mD = {}));
|
|
522
|
+
class q {
|
|
506
523
|
imp;
|
|
507
524
|
constructor(D, C, B) {
|
|
508
|
-
this.imp = new
|
|
525
|
+
this.imp = new s.mxcadassemblyimp.MdCmColor(), D instanceof Object ? (this.imp.red = D.red, this.imp.green = D.green, this.imp.blue = D.blue, this.imp.method = D.method, this.imp.n = D.n, this.imp.colorIndex = D.colorIndex) : typeof D == "number" && typeof C == "number" && typeof B == "number" && this.imp.setRGB(D, C, B);
|
|
509
526
|
}
|
|
510
527
|
getImp() {
|
|
511
528
|
return this.imp;
|
|
@@ -514,7 +531,7 @@ class N {
|
|
|
514
531
|
return this.imp.red = D.imp.red, this.imp.green = D.imp.green, this.imp.blue = D.imp.blue, this.imp.method = D.imp.method, this.imp.n = D.imp.n, this.imp.colorIndex = D.imp.colorIndex, this;
|
|
515
532
|
}
|
|
516
533
|
clone() {
|
|
517
|
-
return new
|
|
534
|
+
return new q(this.imp);
|
|
518
535
|
}
|
|
519
536
|
setColorIndex(D) {
|
|
520
537
|
this.imp.setColorIndex(D);
|
|
@@ -559,9 +576,9 @@ class N {
|
|
|
559
576
|
this.imp.colorIndex = D;
|
|
560
577
|
}
|
|
561
578
|
}
|
|
562
|
-
class
|
|
579
|
+
class yC extends G {
|
|
563
580
|
constructor(D) {
|
|
564
|
-
super(D), D || this.initTempObject(new
|
|
581
|
+
super(D), D || this.initTempObject(new s.mxcadassemblyimp.MdDbLayerTableRecord());
|
|
565
582
|
}
|
|
566
583
|
get name() {
|
|
567
584
|
return this.imp.getName();
|
|
@@ -588,13 +605,13 @@ class hC extends j {
|
|
|
588
605
|
this.imp.setIsLocked(D);
|
|
589
606
|
}
|
|
590
607
|
get color() {
|
|
591
|
-
return new
|
|
608
|
+
return new q(this.imp.color());
|
|
592
609
|
}
|
|
593
610
|
set color(D) {
|
|
594
611
|
this.imp.setColor(D.getImp());
|
|
595
612
|
}
|
|
596
613
|
get linetypeObjectId() {
|
|
597
|
-
return new
|
|
614
|
+
return new k(this.imp.linetypeObjectId(), L.kMxCAD);
|
|
598
615
|
}
|
|
599
616
|
set linetypeObjectId(D) {
|
|
600
617
|
this.imp.setLinetypeObjectId(D.id);
|
|
@@ -606,39 +623,39 @@ class hC extends j {
|
|
|
606
623
|
this.imp.setLineWeight(D);
|
|
607
624
|
}
|
|
608
625
|
}
|
|
609
|
-
class
|
|
626
|
+
class VD extends G {
|
|
610
627
|
constructor(D) {
|
|
611
628
|
super(D);
|
|
612
629
|
}
|
|
613
630
|
}
|
|
614
|
-
class
|
|
631
|
+
class WD extends G {
|
|
615
632
|
constructor(D) {
|
|
616
633
|
super(D);
|
|
617
634
|
}
|
|
618
635
|
}
|
|
619
|
-
class
|
|
636
|
+
class UD extends G {
|
|
620
637
|
constructor(D) {
|
|
621
638
|
super(D);
|
|
622
639
|
}
|
|
623
640
|
}
|
|
624
|
-
class
|
|
641
|
+
class fD extends _ {
|
|
625
642
|
constructor(D) {
|
|
626
643
|
super(D);
|
|
627
644
|
}
|
|
628
645
|
GetLayerTable() {
|
|
629
|
-
return new
|
|
646
|
+
return new VD(this.imp.GetLayerTable());
|
|
630
647
|
}
|
|
631
648
|
GetLinetypeTable() {
|
|
632
|
-
return new
|
|
649
|
+
return new WD(this.imp.GetLinetypeTable());
|
|
633
650
|
}
|
|
634
651
|
GetTextStyleTable() {
|
|
635
|
-
return new
|
|
652
|
+
return new UD(this.imp.GetTextStyleTable());
|
|
636
653
|
}
|
|
637
654
|
GetBlockTable() {
|
|
638
|
-
return new
|
|
655
|
+
return new KD(this.imp.GetBlockTable());
|
|
639
656
|
}
|
|
640
657
|
CurrentSpace() {
|
|
641
|
-
return new
|
|
658
|
+
return new rD(this.imp.CurrentSpace());
|
|
642
659
|
}
|
|
643
660
|
GetCurrentlyLineTypeScale() {
|
|
644
661
|
return this.imp.GetCurrentlyLineTypeScale();
|
|
@@ -663,7 +680,7 @@ class hD extends H {
|
|
|
663
680
|
this.imp.SetCurrentlyLayerName(C);
|
|
664
681
|
}
|
|
665
682
|
GetCurrentlyTrueColor() {
|
|
666
|
-
return new
|
|
683
|
+
return new q(this.imp.GetCurrentlyTrueColor());
|
|
667
684
|
}
|
|
668
685
|
GetCurrentlyDrawColor() {
|
|
669
686
|
let D = this.imp.GetCurrentlyDrawColor(), C = new THREE.Color();
|
|
@@ -688,7 +705,7 @@ class hD extends H {
|
|
|
688
705
|
}
|
|
689
706
|
HandleToIdIndex(D) {
|
|
690
707
|
let C = this.imp.HandleToIdIndex(D);
|
|
691
|
-
return new
|
|
708
|
+
return new k(C, L.kMxCAD);
|
|
692
709
|
}
|
|
693
710
|
IsModifyed() {
|
|
694
711
|
return this.imp.IsModifyed();
|
|
@@ -697,7 +714,7 @@ class hD extends H {
|
|
|
697
714
|
return this.imp.SetModifyed(!1);
|
|
698
715
|
}
|
|
699
716
|
}
|
|
700
|
-
class
|
|
717
|
+
class zD extends _ {
|
|
701
718
|
constructor(D) {
|
|
702
719
|
super(D);
|
|
703
720
|
}
|
|
@@ -708,25 +725,25 @@ class UD extends H {
|
|
|
708
725
|
return this.imp.done();
|
|
709
726
|
}
|
|
710
727
|
getEntityId() {
|
|
711
|
-
return new
|
|
728
|
+
return new k(this.imp.getEntityId(), L.kMxCAD);
|
|
712
729
|
}
|
|
713
730
|
step(D = !0, C = !0) {
|
|
714
731
|
return this.imp.step(D, C);
|
|
715
732
|
}
|
|
716
733
|
}
|
|
717
|
-
class
|
|
734
|
+
class rD extends G {
|
|
718
735
|
constructor(D) {
|
|
719
|
-
super(D), D || this.initTempObject(new
|
|
736
|
+
super(D), D || this.initTempObject(new s.mxcadassemblyimp.MdDbBlockTableRecord());
|
|
720
737
|
}
|
|
721
738
|
appendAcDbEntity(D) {
|
|
722
|
-
return new
|
|
739
|
+
return new k(
|
|
723
740
|
this.imp.appendAcDbEntity(D.getImp()),
|
|
724
|
-
|
|
741
|
+
L.kMxCAD
|
|
725
742
|
);
|
|
726
743
|
}
|
|
727
744
|
newIterator(D = !0, C = !0) {
|
|
728
745
|
let B = this.imp.newIterator(D, C);
|
|
729
|
-
return new
|
|
746
|
+
return new zD(B);
|
|
730
747
|
}
|
|
731
748
|
get origin() {
|
|
732
749
|
return new o(this.imp.origin());
|
|
@@ -746,7 +763,7 @@ class eD extends j {
|
|
|
746
763
|
this.imp.invalidBoundingBoxBuffer();
|
|
747
764
|
}
|
|
748
765
|
}
|
|
749
|
-
class
|
|
766
|
+
class HD extends _ {
|
|
750
767
|
constructor(D) {
|
|
751
768
|
super(D);
|
|
752
769
|
}
|
|
@@ -758,41 +775,41 @@ class WD extends H {
|
|
|
758
775
|
}
|
|
759
776
|
getRecord() {
|
|
760
777
|
let D = this.imp.getRecord();
|
|
761
|
-
return new
|
|
778
|
+
return new rD(D);
|
|
762
779
|
}
|
|
763
780
|
step(D = !0, C = !0) {
|
|
764
781
|
this.imp.start(D, C);
|
|
765
782
|
}
|
|
766
783
|
}
|
|
767
|
-
class
|
|
784
|
+
class KD extends G {
|
|
768
785
|
constructor(D) {
|
|
769
|
-
super(D), D || this.initTempObject(new
|
|
786
|
+
super(D), D || this.initTempObject(new s.mxcadassemblyimp.MdDbBlockTable());
|
|
770
787
|
}
|
|
771
788
|
getAt(D) {
|
|
772
789
|
let C = this.getAt(D);
|
|
773
|
-
return C && new
|
|
790
|
+
return C && new rD(C);
|
|
774
791
|
}
|
|
775
792
|
has(D) {
|
|
776
793
|
return this.imp.has(D);
|
|
777
794
|
}
|
|
778
795
|
newIterator(D = !0, C = !0) {
|
|
779
796
|
let B = this.imp.newIterator(D, C);
|
|
780
|
-
return new
|
|
797
|
+
return new HD(B);
|
|
781
798
|
}
|
|
782
799
|
add(D) {
|
|
783
800
|
return this.imp.add(D.getImp());
|
|
784
801
|
}
|
|
785
802
|
}
|
|
786
|
-
class
|
|
803
|
+
class W extends G {
|
|
787
804
|
constructor(D) {
|
|
788
805
|
super(D);
|
|
789
806
|
}
|
|
790
807
|
explode() {
|
|
791
808
|
let D = this.imp.explode();
|
|
792
|
-
return new
|
|
809
|
+
return new Z(D);
|
|
793
810
|
}
|
|
794
811
|
get trueColor() {
|
|
795
|
-
return new
|
|
812
|
+
return new q(this.imp.TrueColor());
|
|
796
813
|
}
|
|
797
814
|
set trueColor(D) {
|
|
798
815
|
this.imp.SetTrueColor(D.getImp());
|
|
@@ -859,100 +876,100 @@ class V extends j {
|
|
|
859
876
|
maxPt: new o(D.AtPoint(1)),
|
|
860
877
|
ret: !0
|
|
861
878
|
};
|
|
862
|
-
return
|
|
879
|
+
return s.App.DestroyObject(D), C;
|
|
863
880
|
} else
|
|
864
881
|
return { minPt: new o(), maxPt: new o(), ret: !1 };
|
|
865
882
|
}
|
|
866
883
|
}
|
|
867
|
-
class z extends
|
|
884
|
+
class z extends W {
|
|
868
885
|
constructor(D) {
|
|
869
886
|
super(D);
|
|
870
887
|
}
|
|
871
888
|
getStartParam() {
|
|
872
|
-
return { val: this.imp.getStartParam(), ret:
|
|
889
|
+
return { val: this.imp.getStartParam(), ret: s.getCallResult() };
|
|
873
890
|
}
|
|
874
891
|
getEndParam() {
|
|
875
|
-
return { val: this.imp.getEndParam(), ret:
|
|
892
|
+
return { val: this.imp.getEndParam(), ret: s.getCallResult() };
|
|
876
893
|
}
|
|
877
894
|
getDistAtParam(D) {
|
|
878
|
-
return { val: this.imp.getDistAtParam(D), ret:
|
|
895
|
+
return { val: this.imp.getDistAtParam(D), ret: s.getCallResult() };
|
|
879
896
|
}
|
|
880
897
|
getParamAtDist(D) {
|
|
881
|
-
return { val: this.imp.getParamAtDist(D), ret:
|
|
898
|
+
return { val: this.imp.getParamAtDist(D), ret: s.getCallResult() };
|
|
882
899
|
}
|
|
883
900
|
getDistAtPoint(D) {
|
|
884
|
-
return { val: this.imp.getDistAtPoint(D.imp), ret:
|
|
901
|
+
return { val: this.imp.getDistAtPoint(D.imp), ret: s.getCallResult() };
|
|
885
902
|
}
|
|
886
903
|
getPointAtDist(D) {
|
|
887
904
|
return {
|
|
888
905
|
val: new o(this.imp.getPointAtDist(D)),
|
|
889
|
-
ret:
|
|
906
|
+
ret: s.getCallResult()
|
|
890
907
|
};
|
|
891
908
|
}
|
|
892
909
|
getStartPoint() {
|
|
893
910
|
return {
|
|
894
911
|
val: new o(this.imp.getStartPoint()),
|
|
895
|
-
ret:
|
|
912
|
+
ret: s.getCallResult()
|
|
896
913
|
};
|
|
897
914
|
}
|
|
898
915
|
getEndPoint() {
|
|
899
916
|
return {
|
|
900
917
|
val: new o(this.imp.getStartPoint()),
|
|
901
|
-
ret:
|
|
918
|
+
ret: s.getCallResult()
|
|
902
919
|
};
|
|
903
920
|
}
|
|
904
921
|
getPointAtParam(D) {
|
|
905
922
|
return {
|
|
906
923
|
val: new o(this.imp.getPointAtParam(D)),
|
|
907
|
-
ret:
|
|
924
|
+
ret: s.getCallResult()
|
|
908
925
|
};
|
|
909
926
|
}
|
|
910
927
|
getParamAtPoint(D) {
|
|
911
928
|
return {
|
|
912
929
|
val: this.imp.getParamAtPoint(D.imp),
|
|
913
|
-
ret:
|
|
930
|
+
ret: s.getCallResult()
|
|
914
931
|
};
|
|
915
932
|
}
|
|
916
933
|
getFirstDeriv(D) {
|
|
917
934
|
return {
|
|
918
935
|
val: new y(this.imp.getFirstDeriv(D)),
|
|
919
|
-
ret:
|
|
936
|
+
ret: s.getCallResult()
|
|
920
937
|
};
|
|
921
938
|
}
|
|
922
939
|
getFirstDerivEx(D) {
|
|
923
940
|
return {
|
|
924
941
|
val: new y(this.imp.getFirstDerivEx(D.imp)),
|
|
925
|
-
ret:
|
|
942
|
+
ret: s.getCallResult()
|
|
926
943
|
};
|
|
927
944
|
}
|
|
928
945
|
getClosestPointTo(D, C) {
|
|
929
946
|
return {
|
|
930
947
|
val: new o(this.imp.getClosestPointTo(D.imp, C)),
|
|
931
|
-
ret:
|
|
948
|
+
ret: s.getCallResult()
|
|
932
949
|
};
|
|
933
950
|
}
|
|
934
951
|
offsetCurves(D, C) {
|
|
935
952
|
let B = this.imp.offsetCurves(D, C.imp);
|
|
936
|
-
return new
|
|
953
|
+
return new cD(B);
|
|
937
954
|
}
|
|
938
955
|
splitCurves(D) {
|
|
939
956
|
let C = this.imp.splitCurves(D);
|
|
940
|
-
return new
|
|
957
|
+
return new cD(C);
|
|
941
958
|
}
|
|
942
959
|
getArea() {
|
|
943
|
-
return { val: this.imp.getArea(), ret:
|
|
960
|
+
return { val: this.imp.getArea(), ret: s.getCallResult() };
|
|
944
961
|
}
|
|
945
962
|
getSamplePoints(D) {
|
|
946
963
|
let C = this.imp.getSamplePoints(D);
|
|
947
|
-
return new
|
|
964
|
+
return new Z(C);
|
|
948
965
|
}
|
|
949
966
|
getLength() {
|
|
950
|
-
return { val: this.imp.getLength(), ret:
|
|
967
|
+
return { val: this.imp.getLength(), ret: s.getCallResult() };
|
|
951
968
|
}
|
|
952
969
|
}
|
|
953
|
-
class
|
|
954
|
-
constructor(D, C, B, F, A,
|
|
955
|
-
D instanceof Object ? D instanceof o ? (super(), this.initTempObject(new
|
|
970
|
+
class AD extends z {
|
|
971
|
+
constructor(D, C, B, F, A, t) {
|
|
972
|
+
D instanceof Object ? D instanceof o ? (super(), this.initTempObject(new s.mxcadassemblyimp.MdDbLine()), C instanceof o && (this.startPoint = D, this.endPoint = C)) : super(D) : (super(), this.initTempObject(new s.mxcadassemblyimp.MdDbLine()), this.startPoint = new o(D, C, B), this.endPoint = new o(F, A, t));
|
|
956
973
|
}
|
|
957
974
|
get startPoint() {
|
|
958
975
|
return new o(this.imp.startPoint());
|
|
@@ -967,9 +984,9 @@ class BD extends z {
|
|
|
967
984
|
this.imp.setEndPoint(D.imp);
|
|
968
985
|
}
|
|
969
986
|
}
|
|
970
|
-
class
|
|
987
|
+
class pD extends W {
|
|
971
988
|
constructor(D) {
|
|
972
|
-
super(D), D || this.initTempObject(new
|
|
989
|
+
super(D), D || this.initTempObject(new s.mxcadassemblyimp.MdDbText());
|
|
973
990
|
}
|
|
974
991
|
get position() {
|
|
975
992
|
return new o(this.imp.position());
|
|
@@ -1026,9 +1043,9 @@ class lD extends V {
|
|
|
1026
1043
|
this.imp.setVerticalMode(D);
|
|
1027
1044
|
}
|
|
1028
1045
|
}
|
|
1029
|
-
class
|
|
1046
|
+
class tD extends W {
|
|
1030
1047
|
constructor(D) {
|
|
1031
|
-
super(D), D || this.initTempObject(new
|
|
1048
|
+
super(D), D || this.initTempObject(new s.mxcadassemblyimp.MdDbMText());
|
|
1032
1049
|
}
|
|
1033
1050
|
get location() {
|
|
1034
1051
|
return new o(this.imp.location());
|
|
@@ -1067,9 +1084,9 @@ class ED extends V {
|
|
|
1067
1084
|
this.imp.setContents(P.encodeToGb2312(D));
|
|
1068
1085
|
}
|
|
1069
1086
|
}
|
|
1070
|
-
class
|
|
1087
|
+
class U extends z {
|
|
1071
1088
|
constructor(D, C, B, F) {
|
|
1072
|
-
D instanceof Object ? super(D) : (super(), this.initTempObject(new
|
|
1089
|
+
D instanceof Object ? super(D) : (super(), this.initTempObject(new s.mxcadassemblyimp.MdDbCircle()), typeof D == "number" && (this.imp.setCenter(new o(D, C, B).imp), this.imp.setRadius(F)));
|
|
1073
1090
|
}
|
|
1074
1091
|
setCenter(D, C, B) {
|
|
1075
1092
|
this.imp.setCenter(new o(D, C, B).imp);
|
|
@@ -1087,9 +1104,9 @@ class W extends z {
|
|
|
1087
1104
|
this.imp.setRadius(D);
|
|
1088
1105
|
}
|
|
1089
1106
|
}
|
|
1090
|
-
class
|
|
1107
|
+
class eD extends z {
|
|
1091
1108
|
constructor(D) {
|
|
1092
|
-
super(D), D || this.initTempObject(new
|
|
1109
|
+
super(D), D || this.initTempObject(new s.mxcadassemblyimp.MdDbPolyline());
|
|
1093
1110
|
}
|
|
1094
1111
|
get isClosed() {
|
|
1095
1112
|
return this.imp.isClosed();
|
|
@@ -1105,8 +1122,8 @@ class FD extends z {
|
|
|
1105
1122
|
}
|
|
1106
1123
|
addVertexAt(D, C = 0, B = 0, F = 0, A = 0) {
|
|
1107
1124
|
if (D instanceof THREE.Vector3) {
|
|
1108
|
-
let
|
|
1109
|
-
return
|
|
1125
|
+
let t = new s.mxcadassemblyimp.MdGePoint3d();
|
|
1126
|
+
return t.x = D.x, t.y = D.y, t.z = D.z, this.imp.addVertexAt(A, t, C, B, F);
|
|
1110
1127
|
} else
|
|
1111
1128
|
return this.imp.addVertexAt(A, D.imp, C, B, F);
|
|
1112
1129
|
}
|
|
@@ -1117,7 +1134,7 @@ class FD extends z {
|
|
|
1117
1134
|
return this.imp.numVerts();
|
|
1118
1135
|
}
|
|
1119
1136
|
getPointAt(D) {
|
|
1120
|
-
return { val: this.imp.getPointAt(D), ret:
|
|
1137
|
+
return { val: this.imp.getPointAt(D), ret: s.getCallResult() };
|
|
1121
1138
|
}
|
|
1122
1139
|
getBulgeAt(D) {
|
|
1123
1140
|
return this.imp.getBulgeAt(D);
|
|
@@ -1126,7 +1143,7 @@ class FD extends z {
|
|
|
1126
1143
|
return {
|
|
1127
1144
|
val1: this.imp.getStartWidthsAt(D),
|
|
1128
1145
|
val2: this.imp.getEndWidthsAt(D),
|
|
1129
|
-
ret:
|
|
1146
|
+
ret: s.getCallResult()
|
|
1130
1147
|
};
|
|
1131
1148
|
}
|
|
1132
1149
|
setPointAt(D, C) {
|
|
@@ -1136,12 +1153,12 @@ class FD extends z {
|
|
|
1136
1153
|
return this.imp.setBulgeAt(D, C);
|
|
1137
1154
|
}
|
|
1138
1155
|
}
|
|
1139
|
-
class
|
|
1156
|
+
class dD extends W {
|
|
1140
1157
|
constructor(D) {
|
|
1141
|
-
super(D), D || this.initTempObject(new
|
|
1158
|
+
super(D), D || this.initTempObject(new s.mxcadassemblyimp.MdDbBlockReference());
|
|
1142
1159
|
}
|
|
1143
1160
|
get blockTableRecordId() {
|
|
1144
|
-
return new
|
|
1161
|
+
return new k(this.imp.blockTableRecord(), L.kMxCAD);
|
|
1145
1162
|
}
|
|
1146
1163
|
set blockTableRecordId(D) {
|
|
1147
1164
|
this.imp.setBlockTableRecordId(D.id);
|
|
@@ -1171,7 +1188,7 @@ class cD extends V {
|
|
|
1171
1188
|
this.imp.setBlockTransform(D.imp);
|
|
1172
1189
|
}
|
|
1173
1190
|
}
|
|
1174
|
-
class
|
|
1191
|
+
class xD extends W {
|
|
1175
1192
|
constructor(D) {
|
|
1176
1193
|
super(D);
|
|
1177
1194
|
}
|
|
@@ -1209,7 +1226,7 @@ class yD extends V {
|
|
|
1209
1226
|
this.imp.setTextRotation(D);
|
|
1210
1227
|
}
|
|
1211
1228
|
get dimensionStyle() {
|
|
1212
|
-
return new
|
|
1229
|
+
return new k(this.imp.dimensionStyle(), L.kMxCAD);
|
|
1213
1230
|
}
|
|
1214
1231
|
set dimensionStyle(D) {
|
|
1215
1232
|
this.imp.setDimensionStyle(D.id);
|
|
@@ -1248,18 +1265,18 @@ class yD extends V {
|
|
|
1248
1265
|
this.imp.SetDimVarString(D, C);
|
|
1249
1266
|
}
|
|
1250
1267
|
getDimVarObjectId(D) {
|
|
1251
|
-
return new
|
|
1268
|
+
return new k(
|
|
1252
1269
|
this.imp.GetDimVarObjectId(D),
|
|
1253
|
-
|
|
1270
|
+
L.kMxCAD
|
|
1254
1271
|
);
|
|
1255
1272
|
}
|
|
1256
1273
|
setDimVarObjectId(D, C) {
|
|
1257
1274
|
this.imp.SetDimVarObjectId(D, C.id);
|
|
1258
1275
|
}
|
|
1259
1276
|
}
|
|
1260
|
-
class
|
|
1277
|
+
class hD extends xD {
|
|
1261
1278
|
constructor(D) {
|
|
1262
|
-
super(D), D || this.initTempObject(new
|
|
1279
|
+
super(D), D || this.initTempObject(new s.mxcadassemblyimp.MdDbAlignedDimension());
|
|
1263
1280
|
}
|
|
1264
1281
|
get xLine1Point() {
|
|
1265
1282
|
return new o(this.imp.xLine1Point());
|
|
@@ -1286,9 +1303,9 @@ class mD extends yD {
|
|
|
1286
1303
|
this.imp.setOblique(D);
|
|
1287
1304
|
}
|
|
1288
1305
|
}
|
|
1289
|
-
class
|
|
1306
|
+
class yD extends xD {
|
|
1290
1307
|
constructor(D) {
|
|
1291
|
-
super(D), D || this.initTempObject(new
|
|
1308
|
+
super(D), D || this.initTempObject(new s.mxcadassemblyimp.MdDbRotatedDimension());
|
|
1292
1309
|
}
|
|
1293
1310
|
get xLine1Point() {
|
|
1294
1311
|
return new o(this.imp.xLine1Point());
|
|
@@ -1321,9 +1338,9 @@ class pD extends yD {
|
|
|
1321
1338
|
this.imp.setRotation(D);
|
|
1322
1339
|
}
|
|
1323
1340
|
}
|
|
1324
|
-
class
|
|
1341
|
+
class iD extends z {
|
|
1325
1342
|
constructor(D) {
|
|
1326
|
-
super(D), D || this.initTempObject(new
|
|
1343
|
+
super(D), D || this.initTempObject(new s.mxcadassemblyimp.MdDbArc());
|
|
1327
1344
|
}
|
|
1328
1345
|
setCenter(D, C, B) {
|
|
1329
1346
|
this.imp.setCenter(new o(D, C, B).imp);
|
|
@@ -1352,20 +1369,20 @@ class AD extends z {
|
|
|
1352
1369
|
set endAngle(D) {
|
|
1353
1370
|
this.imp.setEndAngle(D);
|
|
1354
1371
|
}
|
|
1355
|
-
computeArc(D, C, B, F, A,
|
|
1372
|
+
computeArc(D, C, B, F, A, t) {
|
|
1356
1373
|
return this.imp.computeArc(
|
|
1357
1374
|
D,
|
|
1358
1375
|
C,
|
|
1359
1376
|
B,
|
|
1360
1377
|
F,
|
|
1361
1378
|
A,
|
|
1362
|
-
|
|
1379
|
+
t
|
|
1363
1380
|
);
|
|
1364
1381
|
}
|
|
1365
1382
|
}
|
|
1366
|
-
class
|
|
1367
|
-
constructor(D, C, B, F, A,
|
|
1368
|
-
D instanceof Object ? super(D) : (super(), this.initTempObject(new
|
|
1383
|
+
class sD extends z {
|
|
1384
|
+
constructor(D, C, B, F, A, t, e, i, r) {
|
|
1385
|
+
D instanceof Object ? super(D) : (super(), this.initTempObject(new s.mxcadassemblyimp.MdDbEllipse()), typeof D == "number" && (e || (e = 1), typeof i != "number" && (i = 0), typeof r != "number" && (r = 6.283185307179586), this.imp.InitData(new o(D, C, B).imp, new y(F, A, t).imp, e, i, r)));
|
|
1369
1386
|
}
|
|
1370
1387
|
setCenter(D, C, B) {
|
|
1371
1388
|
this.imp.setCenter(new o(D, C, B).imp);
|
|
@@ -1413,9 +1430,9 @@ class tD extends z {
|
|
|
1413
1430
|
this.imp.setEndAngle(D);
|
|
1414
1431
|
}
|
|
1415
1432
|
}
|
|
1416
|
-
class
|
|
1433
|
+
class bD extends W {
|
|
1417
1434
|
constructor(D, C, B) {
|
|
1418
|
-
D instanceof Object ? D instanceof o ? (super(), this.initTempObject(new
|
|
1435
|
+
D instanceof Object ? D instanceof o ? (super(), this.initTempObject(new s.mxcadassemblyimp.MdDbPoint()), this.imp.setPosition(D.imp)) : super(D) : (super(), this.initTempObject(new s.mxcadassemblyimp.MdDbPoint()), typeof D == "number" && this.imp.setPosition(new o(D, C, B).imp));
|
|
1419
1436
|
}
|
|
1420
1437
|
setPosition(D, C, B) {
|
|
1421
1438
|
this.imp.setPosition(new o(D, C, B).imp);
|
|
@@ -1427,13 +1444,13 @@ class wD extends V {
|
|
|
1427
1444
|
this.imp.setPosition(D.imp);
|
|
1428
1445
|
}
|
|
1429
1446
|
}
|
|
1430
|
-
function
|
|
1447
|
+
function N(E = null) {
|
|
1431
1448
|
let D;
|
|
1432
|
-
return E
|
|
1449
|
+
return E ? D = E.getImp() : D = new s.mxcadassemblyimp.McDrawResbuf(), D;
|
|
1433
1450
|
}
|
|
1434
|
-
class
|
|
1451
|
+
class Z extends _ {
|
|
1435
1452
|
constructor(D) {
|
|
1436
|
-
super(D), D || this.initTempObject(new
|
|
1453
|
+
super(D), D || this.initTempObject(new s.mxcadassemblyimp.McDrawResbuf());
|
|
1437
1454
|
}
|
|
1438
1455
|
Clear() {
|
|
1439
1456
|
this.imp.Clear();
|
|
@@ -1442,16 +1459,16 @@ class iD extends H {
|
|
|
1442
1459
|
return this.imp.GetCount();
|
|
1443
1460
|
}
|
|
1444
1461
|
AtDouble(D) {
|
|
1445
|
-
return { val: this.imp.AtDouble(D), ret:
|
|
1462
|
+
return { val: this.imp.AtDouble(D), ret: s.getCallResult() };
|
|
1446
1463
|
}
|
|
1447
1464
|
Atlong(D) {
|
|
1448
|
-
return { val: this.imp.Atlong(D), ret:
|
|
1465
|
+
return { val: this.imp.Atlong(D), ret: s.getCallResult() };
|
|
1449
1466
|
}
|
|
1450
1467
|
AtObject(D) {
|
|
1451
1468
|
if (this.imp.AtObjectName(D) == "McDbMText") {
|
|
1452
1469
|
let B = this.imp.AtObjectMdDbMText(D);
|
|
1453
1470
|
if (B)
|
|
1454
|
-
return { val: new
|
|
1471
|
+
return { val: new tD(B), ret: s.getCallResult() };
|
|
1455
1472
|
}
|
|
1456
1473
|
return { val: void 0, ret: -1 };
|
|
1457
1474
|
}
|
|
@@ -1459,13 +1476,13 @@ class iD extends H {
|
|
|
1459
1476
|
this.imp.AddObject(D.getImp());
|
|
1460
1477
|
}
|
|
1461
1478
|
AtObjectId(D) {
|
|
1462
|
-
return { val: new
|
|
1479
|
+
return { val: new k(this.imp.AtObjectId(D), L.kMxCAD), ret: s.getCallResult() };
|
|
1463
1480
|
}
|
|
1464
1481
|
AtString(D, C = !0) {
|
|
1465
|
-
return C ? { val: P.decodeFromGb2312(this.imp.AtString(D)), ret:
|
|
1482
|
+
return C ? { val: P.decodeFromGb2312(this.imp.AtString(D)), ret: s.getCallResult() } : { val: this.imp.AtString(D), ret: s.getCallResult() };
|
|
1466
1483
|
}
|
|
1467
1484
|
AtPoint(D) {
|
|
1468
|
-
return { val: new o(this.imp.AtPoint(D)), ret:
|
|
1485
|
+
return { val: new o(this.imp.AtPoint(D)), ret: s.getCallResult() };
|
|
1469
1486
|
}
|
|
1470
1487
|
ItemDataType() {
|
|
1471
1488
|
return this.imp.ItemDataType();
|
|
@@ -1495,8 +1512,9 @@ class iD extends H {
|
|
|
1495
1512
|
this.imp.Remove(D);
|
|
1496
1513
|
}
|
|
1497
1514
|
}
|
|
1498
|
-
class
|
|
1515
|
+
class ND {
|
|
1499
1516
|
imp;
|
|
1517
|
+
MxCADAssist;
|
|
1500
1518
|
constructor() {
|
|
1501
1519
|
}
|
|
1502
1520
|
eraseEntity(D) {
|
|
@@ -1507,60 +1525,60 @@ class KD {
|
|
|
1507
1525
|
}
|
|
1508
1526
|
findEntAtPoint(D, C, B, F = -1, A = null) {
|
|
1509
1527
|
this.init();
|
|
1510
|
-
let
|
|
1511
|
-
return new
|
|
1528
|
+
let t = this.imp.findEntAtPoint(D, C, B, F, N(A));
|
|
1529
|
+
return new k(t, L.kMxCAD);
|
|
1512
1530
|
}
|
|
1513
1531
|
selectEnt(D, C = null, B = !0) {
|
|
1514
1532
|
return this.init(), new Promise(async (F) => {
|
|
1515
1533
|
const A = new O();
|
|
1516
|
-
D && A.setMessage(D), A.setCursorType(
|
|
1517
|
-
let
|
|
1518
|
-
if (!
|
|
1534
|
+
D && A.setMessage(D), A.setCursorType(gD.kRect), A.setDisableOsnap(!0);
|
|
1535
|
+
let t = await A.go();
|
|
1536
|
+
if (!t) {
|
|
1519
1537
|
F([]);
|
|
1520
1538
|
return;
|
|
1521
1539
|
}
|
|
1522
1540
|
if (B)
|
|
1523
|
-
|
|
1541
|
+
lD.findEntAtPoint(t).then((e) => {
|
|
1524
1542
|
let i = [];
|
|
1525
|
-
|
|
1526
|
-
i.push(new
|
|
1543
|
+
e.forEach((n) => {
|
|
1544
|
+
i.push(new k(n, L.kMxDraw));
|
|
1527
1545
|
});
|
|
1528
|
-
let r = this.findEntAtPoint(
|
|
1546
|
+
let r = this.findEntAtPoint(t.x, t.y, t.z, -1, C);
|
|
1529
1547
|
r.isValid() && i.push(r), F(i);
|
|
1530
1548
|
});
|
|
1531
1549
|
else {
|
|
1532
|
-
let
|
|
1533
|
-
i.isValid() &&
|
|
1550
|
+
let e = [], i = this.findEntAtPoint(t.x, t.y, t.z, -1, C);
|
|
1551
|
+
i.isValid() && e.push(i), F(e);
|
|
1534
1552
|
}
|
|
1535
1553
|
});
|
|
1536
1554
|
}
|
|
1537
1555
|
getCurrentSelect(D = null) {
|
|
1538
1556
|
let C = [];
|
|
1539
1557
|
h.getCurrentDraw().getMxCurrentSelect().forEach((A) => {
|
|
1540
|
-
C.push(new
|
|
1558
|
+
C.push(new k(A, L.kMxDraw));
|
|
1541
1559
|
});
|
|
1542
1560
|
let F = h.getCurrentDraw().getMxCADCurrentSelect();
|
|
1543
1561
|
if (F.length <= 0)
|
|
1544
1562
|
return C;
|
|
1545
1563
|
if (D) {
|
|
1546
|
-
let A = new
|
|
1564
|
+
let A = new wD();
|
|
1547
1565
|
F.forEach((r) => {
|
|
1548
1566
|
A.append(r);
|
|
1549
1567
|
});
|
|
1550
|
-
let
|
|
1551
|
-
|
|
1552
|
-
let i =
|
|
1568
|
+
let t = new s.mxcadassemblyimp.McDrawSelSet(), e = t.getFilterEntity(A.imp, N(D));
|
|
1569
|
+
s.App.DestroyObject(t), F = [];
|
|
1570
|
+
let i = e.length();
|
|
1553
1571
|
for (let r = 0; r < i; r++)
|
|
1554
|
-
F.push(
|
|
1572
|
+
F.push(e.at(r));
|
|
1555
1573
|
}
|
|
1556
1574
|
return F.forEach((A) => {
|
|
1557
|
-
C.push(new
|
|
1575
|
+
C.push(new k(A, L.kMxCAD));
|
|
1558
1576
|
}), C;
|
|
1559
1577
|
}
|
|
1560
1578
|
async userSelect(D, C = null) {
|
|
1561
1579
|
let B = this.getCurrentSelect(C);
|
|
1562
1580
|
if (B.length == 0) {
|
|
1563
|
-
let F = new
|
|
1581
|
+
let F = new H();
|
|
1564
1582
|
await F.userSelect(D, C) && F.forEach((A) => {
|
|
1565
1583
|
B.push(A);
|
|
1566
1584
|
});
|
|
@@ -1570,25 +1588,25 @@ class KD {
|
|
|
1570
1588
|
});
|
|
1571
1589
|
}
|
|
1572
1590
|
init() {
|
|
1573
|
-
this.imp || (this.imp = new
|
|
1591
|
+
this.imp || (this.imp = new s.mxcadassemblyimp.McDrawUtility());
|
|
1574
1592
|
}
|
|
1575
1593
|
async getCorner(D, C, B, F = !1) {
|
|
1576
|
-
let A = 0,
|
|
1594
|
+
let A = 0, t;
|
|
1577
1595
|
for (; ; ) {
|
|
1578
1596
|
if (!C) {
|
|
1579
|
-
let i = new
|
|
1580
|
-
D && i.setMessage(D), i.setDynamicInputType(
|
|
1597
|
+
let i = new V();
|
|
1598
|
+
D && i.setMessage(D), i.setDynamicInputType(CD.kDynTip), C = await i.go(), A = i.getDetailedResult();
|
|
1581
1599
|
}
|
|
1582
1600
|
if (!C)
|
|
1583
1601
|
break;
|
|
1584
|
-
let
|
|
1602
|
+
let e = await lD.getCorner(C.toVector3(), D, F, (i) => {
|
|
1585
1603
|
A = i.detailedResult;
|
|
1586
1604
|
});
|
|
1587
|
-
|
|
1605
|
+
e && (t = new o(e));
|
|
1588
1606
|
break;
|
|
1589
1607
|
}
|
|
1590
|
-
return B && B(A), new Promise((
|
|
1591
|
-
A ==
|
|
1608
|
+
return B && B(A), new Promise((e) => {
|
|
1609
|
+
A == $.kEcsIn || A == $.kNewCommadIn || A == $.kUnknown ? e(null) : e(C && t ? { pt1: C, pt2: t } : null);
|
|
1592
1610
|
});
|
|
1593
1611
|
}
|
|
1594
1612
|
getMcDbEntitysBoundingBox(D) {
|
|
@@ -1597,32 +1615,39 @@ class KD {
|
|
|
1597
1615
|
let A = F.getMcDbEntity();
|
|
1598
1616
|
if (A == null)
|
|
1599
1617
|
return;
|
|
1600
|
-
let
|
|
1601
|
-
!
|
|
1618
|
+
let t = A.GetBoundingBox();
|
|
1619
|
+
!t.ret || (!C || !B ? (C = new THREE.Vector3(t.minPt.x, t.minPt.y, 0), B = new THREE.Vector3(t.maxPt.x, t.maxPt.y, 0)) : (C.x > t.minPt.x && (C.x = t.minPt.x), C.y > t.minPt.y && (C.y = t.minPt.y), B.x < t.maxPt.x && (B.x = t.maxPt.x), B.y < t.maxPt.y && (B.y = t.maxPt.y)));
|
|
1602
1620
|
}), C && B)
|
|
1603
1621
|
return { minPt: new o(C), maxPt: new o(B) };
|
|
1604
1622
|
}
|
|
1605
1623
|
}
|
|
1606
|
-
let
|
|
1607
|
-
var
|
|
1608
|
-
class
|
|
1624
|
+
let R = new ND();
|
|
1625
|
+
var _D = /* @__PURE__ */ ((E) => (E[E.kSelected = 0] = "kSelected", E[E.kNone = 1] = "kNone", E[E.kCanceled = 2] = "kCanceled", E[E.kRejected = 3] = "kRejected", E[E.kKeyword = 4] = "kKeyword", E))(_D || {});
|
|
1626
|
+
class H extends _ {
|
|
1627
|
+
isWhileSelect = !0;
|
|
1628
|
+
isSelectHighlight = !0;
|
|
1629
|
+
selectPt1 = new o();
|
|
1630
|
+
selectPt2 = new o();
|
|
1609
1631
|
constructor() {
|
|
1610
|
-
super(), this.initTempObject(new
|
|
1632
|
+
super(), this.initTempObject(new s.mxcadassemblyimp.McDrawSelSet());
|
|
1633
|
+
}
|
|
1634
|
+
getSelectPoint() {
|
|
1635
|
+
return { pt1: this.selectPt1, pt2: this.selectPt2 };
|
|
1611
1636
|
}
|
|
1612
1637
|
allSelect(D = null) {
|
|
1613
|
-
return this.imp.allSelect(
|
|
1638
|
+
return this.imp.allSelect(N(D));
|
|
1614
1639
|
}
|
|
1615
1640
|
pointSelect(D, C, B = null, F = -1) {
|
|
1616
|
-
return this.imp.pointSelect(D, C,
|
|
1641
|
+
return this.imp.pointSelect(D, C, N(B), F);
|
|
1617
1642
|
}
|
|
1618
1643
|
crossingSelect(D, C, B, F, A = null) {
|
|
1619
|
-
return this.imp.crossingSelect(D, C, B, F,
|
|
1644
|
+
return this.imp.crossingSelect(D, C, B, F, N(A));
|
|
1620
1645
|
}
|
|
1621
1646
|
count() {
|
|
1622
1647
|
return this.imp.count();
|
|
1623
1648
|
}
|
|
1624
1649
|
item(D) {
|
|
1625
|
-
return new
|
|
1650
|
+
return new k(this.imp.item(D), L.kMxCAD);
|
|
1626
1651
|
}
|
|
1627
1652
|
forEach(D) {
|
|
1628
1653
|
let C = this.imp.count();
|
|
@@ -1636,30 +1661,33 @@ class _ extends H {
|
|
|
1636
1661
|
return D;
|
|
1637
1662
|
}
|
|
1638
1663
|
async userSelect(D, C = null) {
|
|
1664
|
+
this.selectPt1 = new o(), this.selectPt2 = new o();
|
|
1639
1665
|
let B = new O();
|
|
1640
|
-
D && B.setMessage(D), B.setCursorType(
|
|
1641
|
-
let F = 0, A =
|
|
1666
|
+
D && B.setMessage(D), B.setCursorType(gD.kRect), B.setDynamicInputType(CD.kDynTip), B.setDisableOsnap(!0);
|
|
1667
|
+
let F = 0, A = N(C);
|
|
1642
1668
|
for (; ; ) {
|
|
1643
|
-
let
|
|
1644
|
-
if (F = B.getDetailedResult(), !
|
|
1669
|
+
let t = await B.go();
|
|
1670
|
+
if (F = B.getDetailedResult(), !t)
|
|
1645
1671
|
break;
|
|
1646
|
-
if (this.imp.userPointSelect(
|
|
1647
|
-
|
|
1648
|
-
|
|
1672
|
+
if (this.imp.userPointSelect(t.x, t.y, A, this.isSelectHighlight) == 0) {
|
|
1673
|
+
if (this.selectPt1.setFromVector3(t), this.selectPt2.setFromVector3(t), this.isWhileSelect)
|
|
1674
|
+
continue;
|
|
1675
|
+
break;
|
|
1676
|
+
}
|
|
1677
|
+
let e = await lD.getCorner(t, D, !0, (i) => {
|
|
1649
1678
|
F = i.detailedResult;
|
|
1650
1679
|
});
|
|
1651
|
-
if (!t)
|
|
1680
|
+
if (!e || (this.imp.userSelect(t.x, t.y, e.x, e.y, A, this.isSelectHighlight), this.selectPt1.setFromVector3(t), this.selectPt2.setFromVector3(e), !this.isWhileSelect))
|
|
1652
1681
|
break;
|
|
1653
|
-
this.imp.userSelect(e.x, e.y, t.x, t.y, A);
|
|
1654
1682
|
}
|
|
1655
|
-
return this.imp.highlightEntity(!1), F ==
|
|
1656
|
-
|
|
1657
|
-
}) : new Promise((
|
|
1658
|
-
|
|
1683
|
+
return this.isSelectHighlight && this.imp.highlightEntity(!1), F == $.kEcsIn || F == $.kNewCommadIn || F == $.kUnknown ? new Promise((t) => {
|
|
1684
|
+
t(!1);
|
|
1685
|
+
}) : new Promise((t) => {
|
|
1686
|
+
t(!0);
|
|
1659
1687
|
});
|
|
1660
1688
|
}
|
|
1661
1689
|
}
|
|
1662
|
-
class
|
|
1690
|
+
class K {
|
|
1663
1691
|
imp;
|
|
1664
1692
|
constructor(D) {
|
|
1665
1693
|
this.imp = D;
|
|
@@ -1733,7 +1761,7 @@ class q {
|
|
|
1733
1761
|
this.imp.setUserInputControls(D);
|
|
1734
1762
|
}
|
|
1735
1763
|
}
|
|
1736
|
-
class
|
|
1764
|
+
class V extends K {
|
|
1737
1765
|
constructor() {
|
|
1738
1766
|
super(new O());
|
|
1739
1767
|
}
|
|
@@ -1748,7 +1776,7 @@ class G extends q {
|
|
|
1748
1776
|
return new o(this.imp.value());
|
|
1749
1777
|
}
|
|
1750
1778
|
getCADValue() {
|
|
1751
|
-
return this.imp.getCADValue();
|
|
1779
|
+
return new o(this.imp.getCADValue());
|
|
1752
1780
|
}
|
|
1753
1781
|
basePt() {
|
|
1754
1782
|
return new o(this.imp.basePt());
|
|
@@ -1760,9 +1788,9 @@ class G extends q {
|
|
|
1760
1788
|
this.imp.setUseBasePt(D);
|
|
1761
1789
|
}
|
|
1762
1790
|
}
|
|
1763
|
-
class
|
|
1791
|
+
class nD extends K {
|
|
1764
1792
|
constructor() {
|
|
1765
|
-
super(new
|
|
1793
|
+
super(new tC());
|
|
1766
1794
|
}
|
|
1767
1795
|
value() {
|
|
1768
1796
|
return this.imp.value();
|
|
@@ -1780,7 +1808,7 @@ class ND extends q {
|
|
|
1780
1808
|
return this.imp.go();
|
|
1781
1809
|
}
|
|
1782
1810
|
}
|
|
1783
|
-
class
|
|
1811
|
+
class gC extends K {
|
|
1784
1812
|
constructor() {
|
|
1785
1813
|
super(new eC());
|
|
1786
1814
|
}
|
|
@@ -1800,9 +1828,9 @@ class yC extends q {
|
|
|
1800
1828
|
return this.imp.go();
|
|
1801
1829
|
}
|
|
1802
1830
|
}
|
|
1803
|
-
class wC extends
|
|
1831
|
+
class wC extends K {
|
|
1804
1832
|
constructor() {
|
|
1805
|
-
super(new
|
|
1833
|
+
super(new iC());
|
|
1806
1834
|
}
|
|
1807
1835
|
value() {
|
|
1808
1836
|
return this.imp.value();
|
|
@@ -1811,17 +1839,17 @@ class wC extends q {
|
|
|
1811
1839
|
return this.imp.go();
|
|
1812
1840
|
}
|
|
1813
1841
|
}
|
|
1814
|
-
class
|
|
1842
|
+
class fC extends K {
|
|
1815
1843
|
constructor() {
|
|
1816
|
-
super(new
|
|
1844
|
+
super(new rC());
|
|
1817
1845
|
}
|
|
1818
1846
|
go() {
|
|
1819
1847
|
return this.imp.go();
|
|
1820
1848
|
}
|
|
1821
1849
|
}
|
|
1822
|
-
class
|
|
1850
|
+
class xC extends K {
|
|
1823
1851
|
constructor() {
|
|
1824
|
-
super(new
|
|
1852
|
+
super(new sC()), this.setDynamicInputType(CD.kNoInput), this.setDisableOsnap(!0);
|
|
1825
1853
|
}
|
|
1826
1854
|
value() {
|
|
1827
1855
|
return this.imp.value();
|
|
@@ -1830,7 +1858,42 @@ class fC extends q {
|
|
|
1830
1858
|
return this.imp.go();
|
|
1831
1859
|
}
|
|
1832
1860
|
}
|
|
1833
|
-
class
|
|
1861
|
+
class DD extends K {
|
|
1862
|
+
filter;
|
|
1863
|
+
id = new k();
|
|
1864
|
+
constructor() {
|
|
1865
|
+
super(new O()), this.setCursorType(gD.kRect), this.setDynamicInputType(CD.kDynTip), this.setDisableOsnap(!0);
|
|
1866
|
+
}
|
|
1867
|
+
setFilter(D) {
|
|
1868
|
+
this.filter = D;
|
|
1869
|
+
}
|
|
1870
|
+
getFilter() {
|
|
1871
|
+
return this.filter;
|
|
1872
|
+
}
|
|
1873
|
+
go() {
|
|
1874
|
+
return new Promise((D) => {
|
|
1875
|
+
let C = this;
|
|
1876
|
+
this.imp.go((B) => {
|
|
1877
|
+
if (B != 0)
|
|
1878
|
+
D(new k());
|
|
1879
|
+
else {
|
|
1880
|
+
let F = this.imp.value();
|
|
1881
|
+
C.id = R.findEntAtPoint(F.x, F.y, F.z, -1, C.filter), D(C.id);
|
|
1882
|
+
}
|
|
1883
|
+
});
|
|
1884
|
+
});
|
|
1885
|
+
}
|
|
1886
|
+
pickPoint() {
|
|
1887
|
+
return new o(this.imp.value());
|
|
1888
|
+
}
|
|
1889
|
+
value() {
|
|
1890
|
+
return this.id;
|
|
1891
|
+
}
|
|
1892
|
+
getCADPickPoint() {
|
|
1893
|
+
return new o(this.imp.getCADValue());
|
|
1894
|
+
}
|
|
1895
|
+
}
|
|
1896
|
+
class J {
|
|
1834
1897
|
imp;
|
|
1835
1898
|
static currentFileName;
|
|
1836
1899
|
constructor(D) {
|
|
@@ -1846,19 +1909,19 @@ class $ {
|
|
|
1846
1909
|
return this.imp;
|
|
1847
1910
|
}
|
|
1848
1911
|
openWebFile(D, C, B = !0, F) {
|
|
1849
|
-
let A = this.imp.mxdrawObject,
|
|
1912
|
+
let A = this.imp.mxdrawObject, t = Math.round(Math.random() * 1e7);
|
|
1850
1913
|
if (C) {
|
|
1851
|
-
let i = (r,
|
|
1852
|
-
A.removeEventFuction("openFileComplete", i),
|
|
1914
|
+
let i = (r, n) => {
|
|
1915
|
+
A.removeEventFuction("openFileComplete", i), t == n && C(r);
|
|
1853
1916
|
};
|
|
1854
1917
|
A.addEvent("openFileComplete", i);
|
|
1855
1918
|
}
|
|
1856
|
-
|
|
1857
|
-
let
|
|
1858
|
-
return F && (
|
|
1919
|
+
J.currentFileName = D.split("/").pop();
|
|
1920
|
+
let e = "";
|
|
1921
|
+
return F && (e = JSON.stringify(F)), this.imp.openWebFile(D, B, t, e);
|
|
1859
1922
|
}
|
|
1860
1923
|
getCurrentFileName() {
|
|
1861
|
-
return
|
|
1924
|
+
return J.currentFileName;
|
|
1862
1925
|
}
|
|
1863
1926
|
saveFileToUrl(D, C) {
|
|
1864
1927
|
const B = window;
|
|
@@ -1868,8 +1931,8 @@ class $ {
|
|
|
1868
1931
|
}
|
|
1869
1932
|
saveFile(D, C, B = !0, F = !0, A) {
|
|
1870
1933
|
D || (D = this.getCurrentFileName()), D.indexOf(".") == -1 && (D += ".mxweb");
|
|
1871
|
-
const
|
|
1872
|
-
|
|
1934
|
+
const t = window;
|
|
1935
|
+
t.mx_saveFile_call = (i) => {
|
|
1873
1936
|
if (C && C(i), !!i) {
|
|
1874
1937
|
if (B) {
|
|
1875
1938
|
let r;
|
|
@@ -1884,14 +1947,14 @@ class $ {
|
|
|
1884
1947
|
}]
|
|
1885
1948
|
}) : Q.downloadFile(r, D);
|
|
1886
1949
|
}
|
|
1887
|
-
|
|
1950
|
+
t.mx_saveFile_call = null;
|
|
1888
1951
|
}
|
|
1889
1952
|
};
|
|
1890
|
-
let
|
|
1891
|
-
return A && (
|
|
1953
|
+
let e = "";
|
|
1954
|
+
return A && (e = JSON.stringify(A)), this.imp.saveFile(D, e);
|
|
1892
1955
|
}
|
|
1893
1956
|
GetDatabase() {
|
|
1894
|
-
return this.imp.McDbDatabase || (this.imp.McDbDatabase = new
|
|
1957
|
+
return this.imp.McDbDatabase || (this.imp.McDbDatabase = new fD(this.imp.GetDatabase())), this.imp.McDbDatabase;
|
|
1895
1958
|
}
|
|
1896
1959
|
GetSysVarString(D) {
|
|
1897
1960
|
return this.imp.GetSysVarString(D);
|
|
@@ -1912,7 +1975,7 @@ class $ {
|
|
|
1912
1975
|
return this.imp.SetSysVarLong(D, C);
|
|
1913
1976
|
}
|
|
1914
1977
|
get DrawColor() {
|
|
1915
|
-
return new
|
|
1978
|
+
return new q(this.imp.GetDrawColor());
|
|
1916
1979
|
}
|
|
1917
1980
|
set DrawColor(D) {
|
|
1918
1981
|
this.imp.SetDrawColor(D.getImp());
|
|
@@ -1959,8 +2022,8 @@ class $ {
|
|
|
1959
2022
|
AddLinetypeEx(D, C, B) {
|
|
1960
2023
|
this.imp.AddLinetypeEx(D, C, B);
|
|
1961
2024
|
}
|
|
1962
|
-
DrawLine(D, C, B, F, A,
|
|
1963
|
-
return this.imp.DrawLine(D, C, B, F, A,
|
|
2025
|
+
DrawLine(D, C, B, F, A, t) {
|
|
2026
|
+
return this.imp.DrawLine(D, C, B, F, A, t);
|
|
1964
2027
|
}
|
|
1965
2028
|
AddDimStyle(D, C, B, F, A) {
|
|
1966
2029
|
return this.imp.AddDimStyle(D, C, B, F, A);
|
|
@@ -1986,8 +2049,8 @@ class $ {
|
|
|
1986
2049
|
DrawArc(D, C, B, F, A) {
|
|
1987
2050
|
return this.imp.DrawArc(D, C, B, F, A);
|
|
1988
2051
|
}
|
|
1989
|
-
DrawArc2(D, C, B, F, A,
|
|
1990
|
-
return this.imp.DrawArc2(D, C, B, F, A,
|
|
2052
|
+
DrawArc2(D, C, B, F, A, t) {
|
|
2053
|
+
return this.imp.DrawArc2(D, C, B, F, A, t);
|
|
1991
2054
|
}
|
|
1992
2055
|
DrawCircle(D, C, B) {
|
|
1993
2056
|
return this.imp.DrawCircle(D, C, B);
|
|
@@ -1995,35 +2058,35 @@ class $ {
|
|
|
1995
2058
|
DrawEllipse(D, C, B, F, A) {
|
|
1996
2059
|
return this.imp.DrawEllipse(D, C, B, F, A);
|
|
1997
2060
|
}
|
|
1998
|
-
DrawEllipseArc(D, C, B, F, A,
|
|
1999
|
-
return this.imp.DrawEllipseArc(D, C, B, F, A,
|
|
2061
|
+
DrawEllipseArc(D, C, B, F, A, t, e) {
|
|
2062
|
+
return this.imp.DrawEllipseArc(D, C, B, F, A, t, e);
|
|
2000
2063
|
}
|
|
2001
2064
|
DrawPoint(D, C) {
|
|
2002
2065
|
return this.imp.DrawPoint(D, C);
|
|
2003
2066
|
}
|
|
2004
|
-
DrawSolid(D, C, B, F, A,
|
|
2005
|
-
return this.imp.DrawSolid(D, C, B, F, A,
|
|
2067
|
+
DrawSolid(D, C, B, F, A, t, e, i) {
|
|
2068
|
+
return this.imp.DrawSolid(D, C, B, F, A, t, e, i);
|
|
2006
2069
|
}
|
|
2007
|
-
DrawMText(D, C, B, F, A,
|
|
2008
|
-
return this.imp.DrawMText(D, C, B, F, A,
|
|
2070
|
+
DrawMText(D, C, B, F, A, t, e) {
|
|
2071
|
+
return this.imp.DrawMText(D, C, B, F, A, t, e);
|
|
2009
2072
|
}
|
|
2010
|
-
DrawText(D, C, B, F, A,
|
|
2011
|
-
return this.imp.DrawTextDrawText(D, C, B, F, A,
|
|
2073
|
+
DrawText(D, C, B, F, A, t, e) {
|
|
2074
|
+
return this.imp.DrawTextDrawText(D, C, B, F, A, t, e);
|
|
2012
2075
|
}
|
|
2013
2076
|
DrawBlockReference(D, C, B, F, A) {
|
|
2014
2077
|
return this.imp.DrawBlockReference(D, C, B, F, A);
|
|
2015
2078
|
}
|
|
2016
|
-
DrawDimAligned(D, C, B, F, A,
|
|
2017
|
-
return this.imp.DrawDimAligned(D, C, B, F, A,
|
|
2079
|
+
DrawDimAligned(D, C, B, F, A, t) {
|
|
2080
|
+
return this.imp.DrawDimAligned(D, C, B, F, A, t);
|
|
2018
2081
|
}
|
|
2019
|
-
DrawDimAngular(D, C, B, F, A,
|
|
2020
|
-
return this.imp.DrawDimAngular(D, C, B, F, A,
|
|
2082
|
+
DrawDimAngular(D, C, B, F, A, t, e, i) {
|
|
2083
|
+
return this.imp.DrawDimAngular(D, C, B, F, A, t, e, i);
|
|
2021
2084
|
}
|
|
2022
2085
|
DrawDimDiametric(D, C, B, F, A) {
|
|
2023
2086
|
return this.imp.DrawDimDiametric(D, C, B, F, A);
|
|
2024
2087
|
}
|
|
2025
|
-
DrawDimRotated(D, C, B, F, A,
|
|
2026
|
-
return this.imp.DrawDimRotated(D, C, B, F, A,
|
|
2088
|
+
DrawDimRotated(D, C, B, F, A, t, e) {
|
|
2089
|
+
return this.imp.DrawDimRotated(D, C, B, F, A, t, e);
|
|
2027
2090
|
}
|
|
2028
2091
|
DrawDimOrdinate(D, C, B, F, A) {
|
|
2029
2092
|
return this.imp.DrawDimOrdinate(D, C, B, F, A);
|
|
@@ -2059,28 +2122,31 @@ class $ {
|
|
|
2059
2122
|
return this.imp.DrawEntity(D.getImp());
|
|
2060
2123
|
}
|
|
2061
2124
|
ObjectIdToObject(D) {
|
|
2062
|
-
return
|
|
2125
|
+
return s.App.ObjectIdToObject(D);
|
|
2063
2126
|
}
|
|
2064
2127
|
DestroyObject(D) {
|
|
2065
|
-
!D ||
|
|
2128
|
+
!D || s.App.getImp().DestroyObject(D);
|
|
2066
2129
|
}
|
|
2067
2130
|
GetAllLayoutName() {
|
|
2068
|
-
return new
|
|
2131
|
+
return new GD(this.imp.GetAllLayoutName());
|
|
2069
2132
|
}
|
|
2070
2133
|
SetCurrentLayout(D) {
|
|
2071
2134
|
this.imp.SetCurrentLayout(P.encodeToGb2312(D));
|
|
2072
2135
|
}
|
|
2073
2136
|
GetMxCpp() {
|
|
2074
|
-
return
|
|
2137
|
+
return s;
|
|
2075
2138
|
}
|
|
2076
|
-
|
|
2139
|
+
DocCoord2Cad(D) {
|
|
2077
2140
|
return new o(this.imp.mxdrawObject.docCoord2Cad(D.x, D.y, D.z));
|
|
2078
2141
|
}
|
|
2142
|
+
CadCoord2Doc(D) {
|
|
2143
|
+
return new o(this.imp.mxdrawObject.cadCoord2Doc(D.x, D.y, D.z));
|
|
2144
|
+
}
|
|
2079
2145
|
}
|
|
2080
|
-
class
|
|
2146
|
+
class qD {
|
|
2081
2147
|
imp;
|
|
2082
2148
|
init(D) {
|
|
2083
|
-
this.imp = D, y.kZAxis = new y(0, 0, 1), y.kNegateZAxis = new y(0, 0, -1), y.kXAxis = new y(1, 0, 0), y.kYAxis = new y(0, 1, 0), o.kOrigin = new o(0, 0, 0), v.kIdentity = new v();
|
|
2149
|
+
this.imp = D, y.kZAxis = new y(0, 0, 1), y.kNegateZAxis = new y(0, 0, -1), y.kXAxis = new y(1, 0, 0), y.kYAxis = new y(0, 1, 0), o.kOrigin = new o(0, 0, 0), v.kIdentity = new v(), R.MxCADAssist = new s.mxcadassemblyimp.MxDrawAssist();
|
|
2084
2150
|
}
|
|
2085
2151
|
getImp() {
|
|
2086
2152
|
return this.imp;
|
|
@@ -2089,15 +2155,15 @@ class _D {
|
|
|
2089
2155
|
return this.imp.getLastCallResult();
|
|
2090
2156
|
}
|
|
2091
2157
|
CreateMxCAD(D, C, B, F, A) {
|
|
2092
|
-
let
|
|
2093
|
-
return new
|
|
2158
|
+
let t = this.imp.CreateMxDraw(D, C, B, F, A);
|
|
2159
|
+
return new J(t);
|
|
2094
2160
|
}
|
|
2095
2161
|
DestroyObject(D) {
|
|
2096
2162
|
this.imp.DestroyObject(D);
|
|
2097
2163
|
}
|
|
2098
2164
|
GetCurrentMxCAD() {
|
|
2099
2165
|
let D = this.imp.GetCurrentMxDraw();
|
|
2100
|
-
return D.McObject || (D.McObject = new
|
|
2166
|
+
return D.McObject || (D.McObject = new J(this.imp.GetCurrentMxDraw())), D.McObject;
|
|
2101
2167
|
}
|
|
2102
2168
|
mcedRGB2Index(D, C, B, F = !0) {
|
|
2103
2169
|
return this.imp.mcedRGB2Index(D, C, B, F);
|
|
@@ -2111,53 +2177,53 @@ class _D {
|
|
|
2111
2177
|
let C = this.imp.ObjectIdToObjectName(D);
|
|
2112
2178
|
if (C == "McDbLine") {
|
|
2113
2179
|
let B = this.imp.ObjectIdToMdDbLine(D);
|
|
2114
|
-
return new
|
|
2180
|
+
return new AD(B);
|
|
2115
2181
|
} else if (C == "McDbText") {
|
|
2116
2182
|
let B = this.imp.ObjectIdToMdDbText(D);
|
|
2117
|
-
return new
|
|
2183
|
+
return new pD(B);
|
|
2118
2184
|
} else if (C == "McDbPolyline") {
|
|
2119
2185
|
let B = this.imp.ObjectIdToMdDbPolyline(D);
|
|
2120
|
-
return new
|
|
2186
|
+
return new eD(B);
|
|
2121
2187
|
} else if (C == "McDbCircle") {
|
|
2122
2188
|
let B = this.imp.ObjectIdToMdDbCircle(D);
|
|
2123
|
-
return new
|
|
2189
|
+
return new U(B);
|
|
2124
2190
|
} else if (C == "McDbArc") {
|
|
2125
2191
|
let B = this.imp.ObjectIdToMdDbArc(D);
|
|
2126
|
-
return new
|
|
2192
|
+
return new iD(B);
|
|
2127
2193
|
} else if (C == "McDbBlockReference") {
|
|
2128
2194
|
let B = this.imp.ObjectIdToMdDbBlockReference(D);
|
|
2129
|
-
return new
|
|
2195
|
+
return new dD(B);
|
|
2130
2196
|
} else if (C == "McDbAlignedDimension") {
|
|
2131
2197
|
let B = this.imp.ObjectIdToMdDbAlignedDimension(D);
|
|
2132
|
-
return new
|
|
2198
|
+
return new hD(B);
|
|
2133
2199
|
} else if (C == "McDbRotatedDimension") {
|
|
2134
2200
|
let B = this.imp.ObjectIdToMdDbRotatedDimension(D);
|
|
2135
|
-
return new
|
|
2201
|
+
return new yD(B);
|
|
2136
2202
|
} else if (C == "McDbMText") {
|
|
2137
2203
|
let B = this.imp.ObjectIdToMdDbMText(D);
|
|
2138
|
-
return new
|
|
2204
|
+
return new tD(B);
|
|
2139
2205
|
} else if (C == "McDbEllipse") {
|
|
2140
2206
|
let B = this.imp.ObjectIdToMdDbEllipse(D);
|
|
2141
|
-
return new
|
|
2207
|
+
return new sD(B);
|
|
2142
2208
|
} else if (C == "McDbPoint") {
|
|
2143
2209
|
let B = this.imp.ObjectIdToMdDbPoint(D);
|
|
2144
|
-
return new
|
|
2210
|
+
return new bD(B);
|
|
2145
2211
|
} else if (this.imp.ObjectIdIsKindOf(D, "McDbCurve")) {
|
|
2146
2212
|
let B = this.imp.ObjectIdToMdDbCurve(D);
|
|
2147
2213
|
return new z(B);
|
|
2148
2214
|
} else if (this.imp.ObjectIdIsKindOf(D, "McDbEntity")) {
|
|
2149
2215
|
let B = this.imp.ObjectIdToMdDbEntity(D);
|
|
2150
|
-
return new
|
|
2216
|
+
return new W(B);
|
|
2151
2217
|
} else {
|
|
2152
2218
|
let B = this.imp.ObjectIdToMdObject(D);
|
|
2153
|
-
return new
|
|
2219
|
+
return new G(B);
|
|
2154
2220
|
}
|
|
2155
2221
|
}
|
|
2156
2222
|
CreateCloneObject(D) {
|
|
2157
2223
|
if (!D)
|
|
2158
2224
|
return null;
|
|
2159
2225
|
let C = D.getObjectName(), B = null;
|
|
2160
|
-
return C == "McDbLine" ? B = new
|
|
2226
|
+
return C == "McDbLine" ? B = new AD() : C == "McDbText" ? B = new pD() : C == "McDbPolyline" ? B = new eD() : C == "McDbCircle" ? B = new U() : C == "McDbArc" ? B = new iD() : C == "McDbBlockReference" ? B = new dD() : C == "McDbAlignedDimension" ? B = new hD() : C == "McDbRotatedDimension" ? B = new yD() : C == "McDbMText" ? B = new tD() : D.isKindOf("McDbCurve") ? (B = new z(), B.initTempObject(new s.mxcadassemblyimp.MdDbCurve())) : D.isKindOf("McDbEntity") && (B = new W(), B.initTempObject(new s.mxcadassemblyimp.MdDbEntity())), B ? (B.getImp().ConnectionTempObject(D), s.App.DestroyObject(D), B) : new G(D);
|
|
2161
2227
|
}
|
|
2162
2228
|
setFontFilePath(D) {
|
|
2163
2229
|
this.imp.setFontFilePath(D);
|
|
@@ -2168,19 +2234,15 @@ class _D {
|
|
|
2168
2234
|
});
|
|
2169
2235
|
}
|
|
2170
2236
|
}
|
|
2171
|
-
class
|
|
2237
|
+
class ZD {
|
|
2172
2238
|
mxcadassemblyimp;
|
|
2173
|
-
App = new
|
|
2239
|
+
App = new qD();
|
|
2174
2240
|
getCallResult() {
|
|
2175
2241
|
return this.App.getLastCallResult();
|
|
2176
2242
|
}
|
|
2177
|
-
NewMcGePoint3d(D
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
D = h.getCurrentDraw().docCoord2Cad(D.x, D.y, F);
|
|
2181
|
-
}
|
|
2182
|
-
let B = new o();
|
|
2183
|
-
return D && D.x && D.y && (B.x = D.x, B.y = D.y, D.z && (B.y = D.z)), B;
|
|
2243
|
+
NewMcGePoint3d(D) {
|
|
2244
|
+
let C = new o();
|
|
2245
|
+
return D && D.x && D.y && (C.x = D.x, C.y = D.y, D.z && (C.y = D.z)), C;
|
|
2184
2246
|
}
|
|
2185
2247
|
GetCurrentMxCAD() {
|
|
2186
2248
|
return this.App.GetCurrentMxCAD();
|
|
@@ -2189,43 +2251,43 @@ class qD {
|
|
|
2189
2251
|
return this.App.GetCurrentMxCAD().GetDatabase();
|
|
2190
2252
|
}
|
|
2191
2253
|
}
|
|
2192
|
-
const
|
|
2254
|
+
const MD = "1.0.84", bC = "SharedArrayBuffer" in window, oD = document.currentScript && /unpkg\.com\/mxcad/.test(document.currentScript.src), MC = (E, D = self.location.href) => oD ? `https://unpkg.com/mxcad@${MD}/dist/wasm/2d-st/${E}` : D + E, PC = (E, D = self.location.href) => oD ? `https://unpkg.com/mxcad@${MD}/dist/wasm/2d/${E}` : D + E, TC = (E, D = self.location.href) => oD ? `https://unpkg.com/mxcad@${MD}/dist/wasm/3d/${E}` : D + E, $D = (E) => new Promise((D, C) => {
|
|
2193
2255
|
const B = document.createElement("script");
|
|
2194
2256
|
B.src = E, B.type = "text/javascript", B.crossOrigin = "anonymous", document.body.appendChild(B), B.onload = () => {
|
|
2195
2257
|
D();
|
|
2196
2258
|
}, B.onerror = (F) => {
|
|
2197
2259
|
C(F);
|
|
2198
2260
|
};
|
|
2199
|
-
}),
|
|
2261
|
+
}), kC = async (E, D, C) => {
|
|
2200
2262
|
const { locateFile: B } = C, F = B(E + ".js");
|
|
2201
|
-
return await
|
|
2263
|
+
return await $D(F), await globalThis[D](C);
|
|
2202
2264
|
};
|
|
2203
|
-
let
|
|
2204
|
-
async function
|
|
2205
|
-
return new Promise(async (A,
|
|
2265
|
+
let s;
|
|
2266
|
+
async function JD(E, D = bC || !oD ? MC : PC, C, B, F) {
|
|
2267
|
+
return new Promise(async (A, t) => {
|
|
2206
2268
|
try {
|
|
2207
|
-
if (
|
|
2208
|
-
return E && E(
|
|
2209
|
-
const i = await
|
|
2269
|
+
if (s || (s = new ZD()), s.mxcadassemblyimp)
|
|
2270
|
+
return E && E(s), A(s);
|
|
2271
|
+
const i = await kC("mxdrawassembly_min", "mxdrawassembly", {
|
|
2210
2272
|
locateFile: D,
|
|
2211
2273
|
wasmBinary: C
|
|
2212
2274
|
});
|
|
2213
|
-
|
|
2275
|
+
s.mxcadassemblyimp = i;
|
|
2214
2276
|
let r = new i.McApp();
|
|
2215
|
-
B && r.setFontFilePath(B), r.Init(),
|
|
2216
|
-
} catch (
|
|
2217
|
-
e
|
|
2277
|
+
B && r.setFontFilePath(B), r.Init(), s.App.init(r), F && s.App.addNetworkLoadingFont(F), E && E(s), A(s);
|
|
2278
|
+
} catch (e) {
|
|
2279
|
+
t(e);
|
|
2218
2280
|
}
|
|
2219
2281
|
});
|
|
2220
2282
|
}
|
|
2221
|
-
const
|
|
2283
|
+
const LC = (E) => {
|
|
2222
2284
|
let D = null;
|
|
2223
2285
|
if (typeof E == "string" ? D = document.querySelector(E) : E instanceof HTMLCanvasElement && (D = E), !!D)
|
|
2224
2286
|
return D.id || (D.id = Math.random().toString(16).slice(2)), D.id;
|
|
2225
2287
|
}, RC = (E, D) => new Promise((C, B) => {
|
|
2226
2288
|
try {
|
|
2227
2289
|
h.createMxObject({
|
|
2228
|
-
canvasId:
|
|
2290
|
+
canvasId: LC(E),
|
|
2229
2291
|
isCPPMxCAD: !0,
|
|
2230
2292
|
userIdentitySign: D,
|
|
2231
2293
|
callback(F) {
|
|
@@ -2238,26 +2300,26 @@ const kC = (E) => {
|
|
|
2238
2300
|
B(F);
|
|
2239
2301
|
}
|
|
2240
2302
|
}), OC = async (E) => {
|
|
2241
|
-
|
|
2242
|
-
const { multipleSelect: D, openParameter: C, networkFonts: B, fontspath: F, locateFile: A, wasmBinary:
|
|
2303
|
+
LD.state.MxFun || await nC();
|
|
2304
|
+
const { multipleSelect: D, openParameter: C, networkFonts: B, fontspath: F, locateFile: A, wasmBinary: t, canvas: e, userIdentitySign: i, onOpenFileComplete: r, fileUrl: n, onInit: u = () => {
|
|
2243
2305
|
h.setIniset({
|
|
2244
2306
|
EnableIntelliSelect: !0,
|
|
2245
2307
|
IntelliSelectType: 1,
|
|
2246
2308
|
multipleSelect: !!D
|
|
2247
2309
|
});
|
|
2248
2310
|
} } = E || {};
|
|
2249
|
-
await
|
|
2250
|
-
}, A,
|
|
2251
|
-
let l = await RC(
|
|
2311
|
+
await JD(() => {
|
|
2312
|
+
}, A, t, F, B), h.initMxCpp(s), u();
|
|
2313
|
+
let l = await RC(e, i);
|
|
2252
2314
|
const c = h.getMxFunTHREE();
|
|
2253
2315
|
let a = new c.Vector2();
|
|
2254
2316
|
l.getRenderer().getSize(a);
|
|
2255
|
-
const m =
|
|
2317
|
+
const m = s.App.CreateMxCAD(a.width, a.height, l.getCanvas().id, l.isWebgl2(), l.getId());
|
|
2256
2318
|
return l.initMxCpp(m), l.addEvent("openFileComplete", () => {
|
|
2257
2319
|
r && r();
|
|
2258
|
-
}),
|
|
2320
|
+
}), n && m.openWebFile(n, void 0, !0, C), m;
|
|
2259
2321
|
};
|
|
2260
|
-
async function
|
|
2322
|
+
async function SC() {
|
|
2261
2323
|
const E = new O();
|
|
2262
2324
|
E.setMessage(`
|
|
2263
2325
|
\u6307\u5B9A\u63D2\u5165\u4F4D\u7F6E:`);
|
|
@@ -2277,43 +2339,43 @@ async function LC() {
|
|
|
2277
2339
|
};
|
|
2278
2340
|
h.call("Mx_Text", F);
|
|
2279
2341
|
}
|
|
2280
|
-
class vC extends
|
|
2342
|
+
class vC extends RD {
|
|
2281
2343
|
getGripPoints() {
|
|
2282
2344
|
const { x: D, y: C, z: B } = this.center;
|
|
2283
|
-
let F = new THREE.Vector3(D, C + this.radius, B), A = new THREE.Vector3(D, C - this.radius, B),
|
|
2284
|
-
return [this.center, F, A,
|
|
2345
|
+
let F = new THREE.Vector3(D, C + this.radius, B), A = new THREE.Vector3(D, C - this.radius, B), t = new THREE.Vector3(D - this.radius, C, B), e = new THREE.Vector3(D + this.radius, C, B);
|
|
2346
|
+
return [this.center, F, A, t, e];
|
|
2285
2347
|
}
|
|
2286
2348
|
moveGripPointsAt(D, C) {
|
|
2287
|
-
const [B, F, A,
|
|
2288
|
-
return D === 0 && (this.center = B.add(C)), D === 1 && (this.radius = F.add(C).distanceTo(this.center)), D === 2 && (this.radius = A.add(C).distanceTo(this.center)), D === 3 && (this.radius =
|
|
2349
|
+
const [B, F, A, t, e] = this.getGripPoints();
|
|
2350
|
+
return D === 0 && (this.center = B.add(C)), D === 1 && (this.radius = F.add(C).distanceTo(this.center)), D === 2 && (this.radius = A.add(C).distanceTo(this.center)), D === 3 && (this.radius = t.add(C).distanceTo(this.center)), D === 4 && (this.radius = e.add(C).distanceTo(this.center)), !0;
|
|
2289
2351
|
}
|
|
2290
2352
|
}
|
|
2291
|
-
const
|
|
2292
|
-
const [D, C, B] = E, { x: F, y: A, z:
|
|
2293
|
-
return new THREE.Vector3(
|
|
2353
|
+
const TD = (E) => {
|
|
2354
|
+
const [D, C, B] = E, { x: F, y: A, z: t } = D, { x: e, y: i, z: r } = C, { x: n, y: u, z: l } = B, c = A * r - i * t - A * l + u * t + i * l - u * r, a = -(F * r - e * t - F * l + n * t + e * l - n * r), m = F * i - e * A - F * u + n * A + e * u - n * i, g = -(F * i * l - F * u * r - e * A * l + e * u * t + n * A * r - n * i * t), f = 2 * (e - F), p = 2 * (i - A), d = 2 * (r - t), b = F * F + A * A + t * t - e * e - i * i - r * r, x = 2 * (n - F), w = 2 * (u - A), M = 2 * (l - t), I = F * F + A * A + t * t - n * n - u * u - l * l, X = -(a * d * I - a * M * b - p * m * I + p * M * g + w * m * b - w * d * g) / (c * p * M - c * w * d - f * a * M + f * w * m + x * a * d - x * p * m), FC = (c * d * I - c * M * b - f * m * I + f * M * g + x * m * b - x * d * g) / (c * p * M - c * w * d - f * a * M + f * w * m + x * a * d - x * p * m), AC = -(c * p * I - c * w * b - f * a * I + f * w * g + x * a * b - x * p * g) / (c * p * M - c * w * d - f * a * M + f * w * m + x * a * d - x * p * m);
|
|
2355
|
+
return new THREE.Vector3(X, FC, AC);
|
|
2294
2356
|
};
|
|
2295
|
-
function
|
|
2357
|
+
function YD() {
|
|
2296
2358
|
const E = new O();
|
|
2297
|
-
let D = new vC(), C =
|
|
2298
|
-
|
|
2359
|
+
let D = new vC(), C = s.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2360
|
+
j.use(D), D.closed = !1, D.setColor(C);
|
|
2299
2361
|
let B = 0, F = "default", A = !0;
|
|
2300
|
-
const
|
|
2362
|
+
const t = () => {
|
|
2301
2363
|
E.setUserDraw(
|
|
2302
2364
|
(a, m) => {
|
|
2303
2365
|
D.radius = A ? D.center.distanceTo(a) : D.center.distanceTo(a) / 2, m.drawCustomEntity(D), m.drawLine(D.center, a);
|
|
2304
2366
|
}
|
|
2305
2367
|
);
|
|
2306
|
-
},
|
|
2368
|
+
}, e = (a) => {
|
|
2307
2369
|
if (F === "default") {
|
|
2308
2370
|
if (a === T.kOk) {
|
|
2309
2371
|
if (B === 0)
|
|
2310
2372
|
E.setMessage(`
|
|
2311
|
-
\u6307\u5B9A\u5706\u7684\u534A\u5F84:`), E.setKeyWords("[\u76F4\u5F84(D)]"), D.center = E.value(),
|
|
2373
|
+
\u6307\u5B9A\u5706\u7684\u534A\u5F84:`), E.setKeyWords("[\u76F4\u5F84(D)]"), D.center = E.value(), t();
|
|
2312
2374
|
else if (B === 1)
|
|
2313
|
-
return
|
|
2375
|
+
return s.GetCurrentMxCAD().DrawEntity(new U(D.center.x, D.center.y, 0, D.radius)), !0;
|
|
2314
2376
|
B++;
|
|
2315
2377
|
}
|
|
2316
|
-
a === T.kKeyWord && E.isKeyWordPicked("D") && (A = !1,
|
|
2378
|
+
a === T.kKeyWord && E.isKeyWordPicked("D") && (A = !1, t(), E.setMessage(`
|
|
2317
2379
|
\u6307\u5B9A\u5706\u7684\u76F4\u5F84:`), E.setKeyWords(""));
|
|
2318
2380
|
}
|
|
2319
2381
|
};
|
|
@@ -2321,33 +2383,33 @@ function JD() {
|
|
|
2321
2383
|
const r = (a) => {
|
|
2322
2384
|
if (F === "3P" && (E.setMessage(`
|
|
2323
2385
|
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E00\u4E2A\u70B9:`), a === T.kOk)) {
|
|
2324
|
-
if (B === 0 && (i.push(E.value()), E.setUserDraw((m,
|
|
2325
|
-
|
|
2386
|
+
if (B === 0 && (i.push(E.value()), E.setUserDraw((m, g) => {
|
|
2387
|
+
g.drawLine(i[0], m);
|
|
2326
2388
|
}), E.setMessage(`
|
|
2327
|
-
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E8C\u4E2A\u70B9:`)), B === 1 && (i.push(E.value()), E.setUserDraw((m,
|
|
2389
|
+
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E8C\u4E2A\u70B9:`)), B === 1 && (i.push(E.value()), E.setUserDraw((m, g) => {
|
|
2328
2390
|
const [f, p] = i, d = m;
|
|
2329
|
-
D.center =
|
|
2391
|
+
D.center = TD([
|
|
2330
2392
|
f,
|
|
2331
2393
|
p,
|
|
2332
2394
|
d
|
|
2333
|
-
]), D.radius = D.center.distanceTo(f),
|
|
2395
|
+
]), D.radius = D.center.distanceTo(f), g.drawCustomEntity(D);
|
|
2334
2396
|
}), E.setMessage(`
|
|
2335
2397
|
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E09\u4E2A\u70B9:`)), B === 2)
|
|
2336
|
-
return i.push(E.value()), D.center =
|
|
2398
|
+
return i.push(E.value()), D.center = TD(i), D.radius = D.center.distanceTo(i[0]), s.GetCurrentMxCAD().DrawEntity(new U(D.center.x, D.center.y, 0, D.radius)), !0;
|
|
2337
2399
|
B++;
|
|
2338
2400
|
}
|
|
2339
2401
|
};
|
|
2340
|
-
let
|
|
2402
|
+
let n;
|
|
2341
2403
|
const u = (a, m) => {
|
|
2342
2404
|
new THREE.Line3(a, m).getCenter(D.center), D.radius = m.distanceTo(a) / 2;
|
|
2343
2405
|
}, l = (a) => {
|
|
2344
2406
|
if (F === "2P" && (E.setMessage(`
|
|
2345
2407
|
\u6307\u5B9A\u5706\u76F4\u5F84\u7684\u7B2C\u4E00\u4E2A\u7AEF\u70B9:`), a === T.kOk)) {
|
|
2346
|
-
if (B === 0 && (
|
|
2347
|
-
u(
|
|
2408
|
+
if (B === 0 && (n = E.value(), E.setUserDraw((m, g) => {
|
|
2409
|
+
u(n, m), g.drawCustomEntity(D), g.drawLine(n, m);
|
|
2348
2410
|
}), E.setMessage(`
|
|
2349
2411
|
\u6307\u5B9A\u5706\u76F4\u5F84\u7684\u7B2C\u4E8C\u4E2A\u7AEF\u70B9:`)), B === 1)
|
|
2350
|
-
return u(
|
|
2412
|
+
return u(n, E.value()), s.GetCurrentMxCAD().DrawEntity(new U(D.center.x, D.center.y, 0, D.radius)), !0;
|
|
2351
2413
|
B++;
|
|
2352
2414
|
}
|
|
2353
2415
|
}, c = (a) => {
|
|
@@ -2368,7 +2430,7 @@ function JD() {
|
|
|
2368
2430
|
\u6307\u5B9A\u5706\u7684\u5706\u5FC3\u6216[\u4E09\u70B9(3P)/\u4E24\u70B9(2P)/\u5207\u70B9\u3001\u5207\u70B9\u3001\u534A\u5F84(T)]:`
|
|
2369
2431
|
), E.setKeyWords("3P 2P T"), E.goWhile(
|
|
2370
2432
|
(a) => {
|
|
2371
|
-
if (a === T.kKeyWord && (E.isKeyWordPicked("3P") ? F = "3P" : E.isKeyWordPicked("2P") ? F = "2P" : E.isKeyWordPicked("T") && (F = "T")),
|
|
2433
|
+
if (a === T.kKeyWord && (E.isKeyWordPicked("3P") ? F = "3P" : E.isKeyWordPicked("2P") ? F = "2P" : E.isKeyWordPicked("T") && (F = "T")), e(a))
|
|
2372
2434
|
return { exit: !0 };
|
|
2373
2435
|
if (r(a))
|
|
2374
2436
|
return { exit: !0 };
|
|
@@ -2378,20 +2440,20 @@ function JD() {
|
|
|
2378
2440
|
return { exit: !0 };
|
|
2379
2441
|
},
|
|
2380
2442
|
(a) => {
|
|
2381
|
-
a === T.kCancel &&
|
|
2443
|
+
a === T.kCancel && s.GetCurrentMxCAD().DrawEntity(new U(D.center.x, D.center.y, 0, D.radius));
|
|
2382
2444
|
}
|
|
2383
2445
|
);
|
|
2384
2446
|
}
|
|
2385
2447
|
h.on("init", () => {
|
|
2386
|
-
h.addCommand("Mx_Circle",
|
|
2448
|
+
h.addCommand("Mx_Circle", YD);
|
|
2387
2449
|
});
|
|
2388
|
-
const
|
|
2389
|
-
function
|
|
2450
|
+
const kD = () => LD.state.MxFun.stopRunCommand();
|
|
2451
|
+
function aD(E, D, C, B) {
|
|
2390
2452
|
const F = E - C, A = D - B;
|
|
2391
|
-
let
|
|
2392
|
-
return F == 0 ?
|
|
2453
|
+
let t = 0;
|
|
2454
|
+
return F == 0 ? t = Math.PI / 2 : t = Math.atan(Math.abs(A / F)), F < 0 && A >= 0 ? t = Math.PI - t : F < 0 && A < 0 ? t = Math.PI + t : F >= 0 && A < 0 && (t = Math.PI * 2 - t), t;
|
|
2393
2455
|
}
|
|
2394
|
-
const
|
|
2456
|
+
const S = (E, D, C) => {
|
|
2395
2457
|
const B = () => {
|
|
2396
2458
|
E.go((F) => {
|
|
2397
2459
|
if (F === T.kKeyWord && C() && B(), F === T.kOk && D() && B(), F === T.kNone && B(), F === T.kCancel)
|
|
@@ -2400,55 +2462,55 @@ const L = (E, D, C) => {
|
|
|
2400
2462
|
};
|
|
2401
2463
|
return B;
|
|
2402
2464
|
};
|
|
2403
|
-
async function
|
|
2465
|
+
async function XD() {
|
|
2404
2466
|
const E = new O();
|
|
2405
|
-
let D = new
|
|
2467
|
+
let D = new FD(), C = s.GetCurrentDatabase().GetCurrentlyDrawColor(), B = [];
|
|
2406
2468
|
E.setMessage(`
|
|
2407
2469
|
\u6307\u5B9A\u7B2C\u4E00\u70B9:`);
|
|
2408
2470
|
let F = await E.go();
|
|
2409
2471
|
if (!F)
|
|
2410
2472
|
return;
|
|
2411
|
-
E.setUserDraw((
|
|
2412
|
-
|
|
2413
|
-
i.color = C,
|
|
2414
|
-
}),
|
|
2473
|
+
E.setUserDraw((t, e) => {
|
|
2474
|
+
e.setColor(C), B.forEach((i) => {
|
|
2475
|
+
i.color = C, e.drawCustomEntity(i);
|
|
2476
|
+
}), e.drawLine(F, t);
|
|
2415
2477
|
});
|
|
2416
2478
|
const A = () => {
|
|
2417
2479
|
E.setMessage(`
|
|
2418
2480
|
\u6307\u5B9A\u4E0B\u4E00\u4E2A\u70B9:`), B.length > 1 ? E.setKeyWords("[\u9000\u51FA(E)/\u95ED\u5408(C)/\u653E\u5F03(U)]") : E.setKeyWords("[\u9000\u51FA(E)/\u653E\u5F03(U)]");
|
|
2419
2481
|
};
|
|
2420
2482
|
A(), E.goWhile(
|
|
2421
|
-
(
|
|
2422
|
-
if (
|
|
2483
|
+
(t) => {
|
|
2484
|
+
if (t === T.kOk && (D = new FD(), j.use(D), D.pt1 = F, D.pt2 = E.value(), F = D.pt2.clone(), B.push(D), A()), t === T.kKeyWord) {
|
|
2423
2485
|
if (E.isKeyWordPicked("E"))
|
|
2424
|
-
|
|
2486
|
+
kD();
|
|
2425
2487
|
else if (E.isKeyWordPicked("C")) {
|
|
2426
|
-
const
|
|
2427
|
-
return
|
|
2488
|
+
const e = new FD();
|
|
2489
|
+
return e.pt1 = F.clone(), e.pt2 = B[0].pt1.clone(), j.use(e), B.push(e), F = e.pt2.clone(), kD(), { exit: !0 };
|
|
2428
2490
|
} else if (E.isKeyWordPicked("U")) {
|
|
2429
|
-
const
|
|
2430
|
-
|
|
2491
|
+
const e = B.pop();
|
|
2492
|
+
e && (F = e.pt1);
|
|
2431
2493
|
}
|
|
2432
2494
|
}
|
|
2433
2495
|
},
|
|
2434
|
-
(
|
|
2435
|
-
|
|
2496
|
+
(t) => (t != T.kCancel && B.forEach((e) => {
|
|
2497
|
+
s.GetCurrentMxCAD().DrawEntity(new AD(e.pt1.x, e.pt1.y, 0, e.pt2.x, e.pt2.y, 0));
|
|
2436
2498
|
}), { exit: !0 })
|
|
2437
2499
|
);
|
|
2438
2500
|
}
|
|
2439
|
-
async function
|
|
2440
|
-
let E = new
|
|
2501
|
+
async function IC() {
|
|
2502
|
+
let E = new V();
|
|
2441
2503
|
for (E.setMessage("\u6307\u5B9A\u70B9"); ; ) {
|
|
2442
2504
|
let D = await E.go();
|
|
2443
2505
|
if (D == null)
|
|
2444
2506
|
break;
|
|
2445
|
-
|
|
2507
|
+
s.GetCurrentMxCAD().DrawEntity(new bD(D));
|
|
2446
2508
|
}
|
|
2447
2509
|
}
|
|
2448
2510
|
h.on("init", () => {
|
|
2449
|
-
h.addCommand("Mx_Line",
|
|
2511
|
+
h.addCommand("Mx_Line", XD), h.addCommand("Mx_Point", IC);
|
|
2450
2512
|
});
|
|
2451
|
-
async function
|
|
2513
|
+
async function jC() {
|
|
2452
2514
|
const E = new O();
|
|
2453
2515
|
E.setMessage(`
|
|
2454
2516
|
\u6307\u5B9A\u63D2\u5165\u4F4D\u7F6E:`);
|
|
@@ -2471,9 +2533,9 @@ async function IC() {
|
|
|
2471
2533
|
}
|
|
2472
2534
|
async function QD() {
|
|
2473
2535
|
const E = new O();
|
|
2474
|
-
let D =
|
|
2475
|
-
const C = new
|
|
2476
|
-
|
|
2536
|
+
let D = s.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2537
|
+
const C = new oC();
|
|
2538
|
+
j.use(C), C.color = D, E.setMessage(`
|
|
2477
2539
|
\u6307\u5B9A\u8D77\u70B9:`);
|
|
2478
2540
|
let B;
|
|
2479
2541
|
E.setUserDraw((F, A) => {
|
|
@@ -2489,10 +2551,10 @@ async function QD() {
|
|
|
2489
2551
|
},
|
|
2490
2552
|
(F) => {
|
|
2491
2553
|
if (F != T.kCancel) {
|
|
2492
|
-
let A =
|
|
2493
|
-
for (let
|
|
2494
|
-
|
|
2495
|
-
A.DrawEntity(
|
|
2554
|
+
let A = s.GetCurrentMxCAD(), t = new eD();
|
|
2555
|
+
for (let e = 0; e < C.points.length; e++)
|
|
2556
|
+
t.addVertexAt(C.points[e]);
|
|
2557
|
+
A.DrawEntity(t);
|
|
2496
2558
|
}
|
|
2497
2559
|
}
|
|
2498
2560
|
);
|
|
@@ -2500,48 +2562,48 @@ async function QD() {
|
|
|
2500
2562
|
h.on("init", () => {
|
|
2501
2563
|
h.addCommand("Mx_Pline", QD);
|
|
2502
2564
|
});
|
|
2503
|
-
async function
|
|
2565
|
+
async function DC() {
|
|
2504
2566
|
const E = new O();
|
|
2505
2567
|
E.setMessage(`
|
|
2506
2568
|
\u6307\u5B9A\u4E00\u70B9:`);
|
|
2507
|
-
let D = await E.go(), C = new
|
|
2569
|
+
let D = await E.go(), C = new U();
|
|
2508
2570
|
C.setCenter(D.x, D.y, D.z);
|
|
2509
|
-
let B = 5, F =
|
|
2510
|
-
E.setUserDraw((A,
|
|
2511
|
-
|
|
2512
|
-
let
|
|
2571
|
+
let B = 5, F = s.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2572
|
+
E.setUserDraw((A, t) => {
|
|
2573
|
+
t.setColor(F), C.radius = D.distanceTo(A);
|
|
2574
|
+
let e = C.getEndParam().val, r = C.getDistAtParam(e).val / B, n = 0, u = new THREE.Vector3(), l = new THREE.Vector3();
|
|
2513
2575
|
for (let c = 0; c < B; c++) {
|
|
2514
|
-
let a = C.getPointAtDist(
|
|
2515
|
-
|
|
2576
|
+
let a = C.getPointAtDist(n).val;
|
|
2577
|
+
n += r, c > 0 ? t.drawMcDbLine(a.x, a.y, a.z, u.x, u.y, u.z) : l = new THREE.Vector3(a.x, a.y, a.z), c == B - 1 && t.drawMcDbLine(a.x, a.y, a.z, l.x, l.y, l.z), u = new THREE.Vector3(a.x, a.y, a.z);
|
|
2516
2578
|
}
|
|
2517
2579
|
}), E.setMessage(`
|
|
2518
2580
|
\u6307\u5B9A\u4E8C\u70B9:`), await E.go(), E.drawReserve();
|
|
2519
2581
|
}
|
|
2520
|
-
h.addCommand("Mx_Polygon",
|
|
2521
|
-
function
|
|
2522
|
-
const B = E.x, F = D.x, A = C.x,
|
|
2523
|
-
return new THREE.Vector3(
|
|
2582
|
+
h.addCommand("Mx_Polygon", DC);
|
|
2583
|
+
function GC(E, D, C) {
|
|
2584
|
+
const B = E.x, F = D.x, A = C.x, t = E.y, e = D.y, i = C.y, r = B - F, n = t - e, u = B - A, l = t - i, c = (B * B - F * F + (t * t - e * e)) / 2, a = (B * B - A * A + (t * t - i * i)) / 2, m = n * u - r * l, g = -(l * c - n * a) / m, f = -(r * a - u * c) / m;
|
|
2585
|
+
return new THREE.Vector3(g, f, 0);
|
|
2524
2586
|
}
|
|
2525
|
-
function
|
|
2587
|
+
function VC(E, D) {
|
|
2526
2588
|
const C = E.x, B = E.y, F = D.x, A = D.y;
|
|
2527
2589
|
return Math.sqrt((C - F) * (C - F) + (B - A) * (B - A));
|
|
2528
2590
|
}
|
|
2529
|
-
function
|
|
2591
|
+
function WC(E, D, C) {
|
|
2530
2592
|
let B;
|
|
2531
2593
|
E < C ? B = C - E : B = C - E + 360;
|
|
2532
2594
|
let F;
|
|
2533
2595
|
return E < D ? F = D - E : F = D - E + 360, F > B;
|
|
2534
2596
|
}
|
|
2535
|
-
function
|
|
2536
|
-
const B = E.x, F = D.x, A = E.y,
|
|
2537
|
-
let
|
|
2538
|
-
return
|
|
2539
|
-
sin:
|
|
2597
|
+
function uD(E, D, C) {
|
|
2598
|
+
const B = E.x, F = D.x, A = E.y, t = D.y;
|
|
2599
|
+
let e, i, r;
|
|
2600
|
+
return e = (A - t) / C, i = (B - F) / C, i >= 0.99999 && (i = 0.99999), i <= -0.99999 && (i = -0.99999), r = Math.acos(i), r = r / Math.PI * 180, e < -0.05 && (r = 360 - r), {
|
|
2601
|
+
sin: e,
|
|
2540
2602
|
cos: i,
|
|
2541
2603
|
angle: r
|
|
2542
2604
|
};
|
|
2543
2605
|
}
|
|
2544
|
-
class
|
|
2606
|
+
class PD extends RD {
|
|
2545
2607
|
constructor() {
|
|
2546
2608
|
super(), this._propertyDbKeys = [...this._propertyDbKeys, "bulge"];
|
|
2547
2609
|
}
|
|
@@ -2549,24 +2611,24 @@ class fD extends TD {
|
|
|
2549
2611
|
return "MxDbCircle";
|
|
2550
2612
|
}
|
|
2551
2613
|
create() {
|
|
2552
|
-
return new
|
|
2614
|
+
return new PD();
|
|
2553
2615
|
}
|
|
2554
2616
|
getArcBulge(D, C, B) {
|
|
2555
2617
|
const F = D.distanceTo(C);
|
|
2556
|
-
let
|
|
2618
|
+
let e = 2 * new THREE.Line3(D, C).getCenter(
|
|
2557
2619
|
new THREE.Vector3()
|
|
2558
2620
|
).distanceTo(B) / F;
|
|
2559
|
-
return
|
|
2621
|
+
return e > 0.9999 && e < 1.0001 ? e = 1 : e < -0.9999 && e > -1.0001 ? e = -1 : Math.abs(e) < 1e-10 && (e = 0), e;
|
|
2560
2622
|
}
|
|
2561
2623
|
getArcMidPoint(D, C, B, F, A) {
|
|
2562
|
-
const
|
|
2624
|
+
const t = D, e = B * Math.PI / 180;
|
|
2563
2625
|
let i = F * Math.PI / 180;
|
|
2564
|
-
const r = new THREE.Vector3(),
|
|
2565
|
-
r.x =
|
|
2626
|
+
const r = new THREE.Vector3(), n = new THREE.Vector3();
|
|
2627
|
+
r.x = t.x + C * Math.cos(e), r.y = t.y + C * Math.sin(e), n.x = t.x + C * Math.cos(i), n.y = t.y + C * Math.sin(i);
|
|
2566
2628
|
const u = C;
|
|
2567
2629
|
(A ? B < F : B > F) && (i += Math.PI * 2);
|
|
2568
2630
|
const l = new THREE.Vector3();
|
|
2569
|
-
return l.x =
|
|
2631
|
+
return l.x = t.x + u * Math.cos((e + i) / 2), l.y = t.y + u * Math.sin((e + i) / 2), [r, l, n, this.center];
|
|
2570
2632
|
}
|
|
2571
2633
|
getGripPoints() {
|
|
2572
2634
|
return this.getArcMidPoint(
|
|
@@ -2585,25 +2647,25 @@ class fD extends TD {
|
|
|
2585
2647
|
}
|
|
2586
2648
|
upDatePoints(D, C, B) {
|
|
2587
2649
|
D[C].add(B);
|
|
2588
|
-
const [F, A,
|
|
2589
|
-
this.center =
|
|
2590
|
-
const
|
|
2591
|
-
this.clockwise =
|
|
2650
|
+
const [F, A, t] = D;
|
|
2651
|
+
this.center = GC(F, t, A), this.radius = VC(A, this.center);
|
|
2652
|
+
const e = uD(F, this.center, this.radius), i = uD(t, this.center, this.radius), r = uD(A, this.center, this.radius);
|
|
2653
|
+
this.clockwise = WC(
|
|
2592
2654
|
i.angle,
|
|
2593
|
-
|
|
2655
|
+
e.angle,
|
|
2594
2656
|
r.angle
|
|
2595
|
-
), this.startAngle = THREE.MathUtils.degToRad(
|
|
2657
|
+
), this.startAngle = THREE.MathUtils.degToRad(e.angle), this.endAngle = THREE.MathUtils.degToRad(i.angle);
|
|
2596
2658
|
}
|
|
2597
2659
|
}
|
|
2598
|
-
async function
|
|
2599
|
-
let E =
|
|
2660
|
+
async function CC() {
|
|
2661
|
+
let E = s.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2600
2662
|
const D = new O();
|
|
2601
2663
|
D.setMessage(`
|
|
2602
2664
|
\u6307\u5B9A\u5706\u5F27\u7684\u8D77\u70B9:`), D.setKeyWords("[\u5706\u5FC3(C)]");
|
|
2603
|
-
let C = new
|
|
2604
|
-
C.closed = !1,
|
|
2665
|
+
let C = new PD();
|
|
2666
|
+
C.closed = !1, j.use(C);
|
|
2605
2667
|
let B, F, A;
|
|
2606
|
-
const
|
|
2668
|
+
const t = S(
|
|
2607
2669
|
D,
|
|
2608
2670
|
() => {
|
|
2609
2671
|
B = D.value(), D.setMessage(`
|
|
@@ -2613,44 +2675,44 @@ async function DC() {
|
|
|
2613
2675
|
},
|
|
2614
2676
|
() => {
|
|
2615
2677
|
if (D.isKeyWordPicked("C")) {
|
|
2616
|
-
const p = new
|
|
2678
|
+
const p = new ED();
|
|
2617
2679
|
p.color = E, C.center = D.value(), p.center = D.value(), D.setMessage(`
|
|
2618
2680
|
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3:`), D.setKeyWords(""), i();
|
|
2619
2681
|
} else
|
|
2620
2682
|
return !0;
|
|
2621
2683
|
}
|
|
2622
2684
|
);
|
|
2623
|
-
let
|
|
2624
|
-
const i =
|
|
2685
|
+
let e;
|
|
2686
|
+
const i = S(
|
|
2625
2687
|
D,
|
|
2626
2688
|
() => {
|
|
2627
|
-
|
|
2689
|
+
e = D.value(), A = new ED(), A.closed = !1, j.use(A), A.color = E, A.center = e, C.center = e, D.setMessage(`
|
|
2628
2690
|
\u6307\u5B9A\u5706\u5F27\u7684\u8D77\u70B9:`), D.setUserDraw((p, d) => {
|
|
2629
|
-
d.drawCustomEntity(A), d.setColor(E), d.drawLine(
|
|
2691
|
+
d.drawCustomEntity(A), d.setColor(E), d.drawLine(e, p);
|
|
2630
2692
|
}), u();
|
|
2631
2693
|
},
|
|
2632
2694
|
() => {
|
|
2633
2695
|
}
|
|
2634
2696
|
);
|
|
2635
|
-
let r,
|
|
2636
|
-
const u =
|
|
2697
|
+
let r, n;
|
|
2698
|
+
const u = S(
|
|
2637
2699
|
D,
|
|
2638
2700
|
() => {
|
|
2639
2701
|
r = D.value(), A.endPoint = r, D.setMessage(
|
|
2640
2702
|
`
|
|
2641
2703
|
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u89D2\u5EA6(A)/\u5F26\u957F(L)/\u4FEE\u6539\u534A\u5F84(R)]:`
|
|
2642
|
-
), D.setKeyWords("A L R"),
|
|
2643
|
-
A.startPoint = p,
|
|
2704
|
+
), D.setKeyWords("A L R"), n = new FD(), n.setDashLineDisplay(!0), n.setDashArray(0.05), n.setLineWidth(2), n.setColor("#ffd30d"), n.pt1 = A.center, D.setUserDraw((p, d) => {
|
|
2705
|
+
A.startPoint = p, n.pt2 = p, d.drawCustomEntity(A), d.drawCustomEntity(n);
|
|
2644
2706
|
}), c();
|
|
2645
2707
|
},
|
|
2646
2708
|
() => {
|
|
2647
2709
|
}
|
|
2648
2710
|
);
|
|
2649
2711
|
let l;
|
|
2650
|
-
const c =
|
|
2712
|
+
const c = S(
|
|
2651
2713
|
D,
|
|
2652
2714
|
() => {
|
|
2653
|
-
l = D.value(), A.startPoint = l, A.endPoint = r,
|
|
2715
|
+
l = D.value(), A.startPoint = l, A.endPoint = r, g.DrawArc(A.center.x, A.center.y, A.radius, A.startAngle, A.endAngle);
|
|
2654
2716
|
},
|
|
2655
2717
|
() => {
|
|
2656
2718
|
if (D.isKeyWordPicked("A"))
|
|
@@ -2658,14 +2720,14 @@ async function DC() {
|
|
|
2658
2720
|
`
|
|
2659
2721
|
\u6307\u5B9A\u5706\u5F27\u7684\u5939\u89D2(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u4FEE\u6539\u534A\u5F84(R)]:`
|
|
2660
2722
|
), D.setKeyWords("R"), D.setUserDraw((p, d) => {
|
|
2661
|
-
A.startPoint = p, d.drawCustomEntity(A), d.drawCustomEntity(
|
|
2723
|
+
A.startPoint = p, d.drawCustomEntity(A), d.drawCustomEntity(n);
|
|
2662
2724
|
}), !0;
|
|
2663
2725
|
if (D.isKeyWordPicked("L"))
|
|
2664
2726
|
return D.setMessage(
|
|
2665
2727
|
`
|
|
2666
2728
|
\u6307\u5B9A\u5706\u5F27\u7684\u5939\u89D2(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u4FEE\u6539\u534A\u5F84(R)]:`
|
|
2667
2729
|
), D.setKeyWords("R"), D.setUserDraw((p, d) => {
|
|
2668
|
-
A.startPoint = p, d.drawCustomEntity(A), d.drawCustomEntity(
|
|
2730
|
+
A.startPoint = p, d.drawCustomEntity(A), d.drawCustomEntity(n);
|
|
2669
2731
|
}), !0;
|
|
2670
2732
|
if (D.isKeyWordPicked("R"))
|
|
2671
2733
|
D.setMessage(
|
|
@@ -2679,22 +2741,22 @@ async function DC() {
|
|
|
2679
2741
|
}
|
|
2680
2742
|
);
|
|
2681
2743
|
let a;
|
|
2682
|
-
const m =
|
|
2744
|
+
const m = S(
|
|
2683
2745
|
D,
|
|
2684
2746
|
() => {
|
|
2685
2747
|
a = D.value(), D.setMessage(`
|
|
2686
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9:`), F = new
|
|
2748
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9:`), F = new aC(), F.color = E, F.autoClockwise = !0, F.closed = !1, j.use(F), D.setUserDraw((p, d) => {
|
|
2687
2749
|
F.point1 = B, F.point3 = a, F.point2 = p, d.drawCustomEntity(F);
|
|
2688
2750
|
}), f();
|
|
2689
2751
|
},
|
|
2690
2752
|
() => {
|
|
2691
2753
|
if (D.isKeyWordPicked("C"))
|
|
2692
|
-
A = new
|
|
2754
|
+
A = new ED(), A.closed = !1, j.use(A), A.color = E, D.setMessage(`
|
|
2693
2755
|
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3`), D.setKeyWords(""), D.setUserDraw((p, d) => {
|
|
2694
2756
|
A.startPoint = B, d.drawLine(p, A.startPoint);
|
|
2695
2757
|
}), i();
|
|
2696
2758
|
else if (D.isKeyWordPicked("E"))
|
|
2697
|
-
A = new
|
|
2759
|
+
A = new ED(), A.closed = !1, j.use(A), A.color = E, D.setMessage(`
|
|
2698
2760
|
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3`), D.setKeyWords(""), D.setUserDraw((p, d) => {
|
|
2699
2761
|
A.startPoint = B, d.drawLine(p, A.startPoint);
|
|
2700
2762
|
}), i();
|
|
@@ -2702,13 +2764,13 @@ async function DC() {
|
|
|
2702
2764
|
return !0;
|
|
2703
2765
|
}
|
|
2704
2766
|
);
|
|
2705
|
-
let
|
|
2706
|
-
const f =
|
|
2767
|
+
let g = s.GetCurrentMxCAD();
|
|
2768
|
+
const f = S(
|
|
2707
2769
|
D,
|
|
2708
2770
|
() => {
|
|
2709
2771
|
F.point1 = B, F.point2 = D.value(), F.point3 = a;
|
|
2710
|
-
let p = new
|
|
2711
|
-
p.computeArc(F.point1.x, F.point1.y, F.point3.x, F.point3.y, F.point2.x, F.point2.y),
|
|
2772
|
+
let p = new iD();
|
|
2773
|
+
p.computeArc(F.point1.x, F.point1.y, F.point3.x, F.point3.y, F.point2.x, F.point2.y), g.DrawEntity(p);
|
|
2712
2774
|
},
|
|
2713
2775
|
() => {
|
|
2714
2776
|
if (D.isKeyWordPicked("C"))
|
|
@@ -2719,99 +2781,99 @@ async function DC() {
|
|
|
2719
2781
|
return !0;
|
|
2720
2782
|
}
|
|
2721
2783
|
);
|
|
2722
|
-
|
|
2784
|
+
t();
|
|
2723
2785
|
}
|
|
2724
2786
|
h.on("init", () => {
|
|
2725
|
-
h.addCommand("Mx_Arc",
|
|
2787
|
+
h.addCommand("Mx_Arc", CC);
|
|
2726
2788
|
});
|
|
2727
|
-
function
|
|
2728
|
-
const E = new O(), D = new
|
|
2729
|
-
D.closed = !1,
|
|
2789
|
+
function BC() {
|
|
2790
|
+
const E = new O(), D = new uC();
|
|
2791
|
+
D.closed = !1, j.use(D), E.setMessage(`
|
|
2730
2792
|
\u6307\u5B9A\u692D\u5706\u7684\u8F74\u7AEF\u70B9`), E.setKeyWords("[\u4E2D\u5FC3\u70B9(C)]");
|
|
2731
2793
|
let C, B = new THREE.Vector3();
|
|
2732
|
-
|
|
2794
|
+
S(
|
|
2733
2795
|
E,
|
|
2734
2796
|
() => {
|
|
2735
|
-
C = E.value(), E.setUserDraw((r,
|
|
2797
|
+
C = E.value(), E.setUserDraw((r, n) => {
|
|
2736
2798
|
const u = new THREE.Line3(C, r);
|
|
2737
|
-
u.getCenter(B), D.center = B, D.xRadius = u.distance() / 2, D.yRadius = D.xRadius, D.rotation =
|
|
2799
|
+
u.getCenter(B), D.center = B, D.xRadius = u.distance() / 2, D.yRadius = D.xRadius, D.rotation = aD(r.x, r.y, B.x, B.y), n.drawLine(r, C);
|
|
2738
2800
|
}), E.setMessage(`
|
|
2739
2801
|
\u6307\u5B9A\u692D\u5706\u5F27\u8F74\u7684\u53E6\u4E00\u4E2A\u7AEF\u70B9:`), E.setKeyWords(""), A();
|
|
2740
2802
|
},
|
|
2741
2803
|
() => {
|
|
2742
2804
|
}
|
|
2743
2805
|
)();
|
|
2744
|
-
const A =
|
|
2806
|
+
const A = S(
|
|
2745
2807
|
E,
|
|
2746
2808
|
() => {
|
|
2747
|
-
E.setUserDraw((r,
|
|
2748
|
-
D.yRadius = B.distanceTo(r),
|
|
2809
|
+
E.setUserDraw((r, n) => {
|
|
2810
|
+
D.yRadius = B.distanceTo(r), n.drawLine(B, r), n.drawCustomEntity(D);
|
|
2749
2811
|
}), E.setMessage(`
|
|
2750
|
-
\u6307\u5B9A\u53E6\u4E00\u6761\u534A\u8F74\u957F\u5EA6`), E.setKeyWords(""),
|
|
2812
|
+
\u6307\u5B9A\u53E6\u4E00\u6761\u534A\u8F74\u957F\u5EA6`), E.setKeyWords(""), t();
|
|
2751
2813
|
},
|
|
2752
2814
|
() => {
|
|
2753
2815
|
}
|
|
2754
|
-
),
|
|
2816
|
+
), t = S(
|
|
2755
2817
|
E,
|
|
2756
2818
|
() => {
|
|
2757
2819
|
E.setMessage(`
|
|
2758
|
-
\u6307\u5B9A\u8D77\u59CB\u89D2\u5EA6`), E.setKeyWords(""), E.setUserDraw((r,
|
|
2759
|
-
D.startAngle =
|
|
2760
|
-
}),
|
|
2820
|
+
\u6307\u5B9A\u8D77\u59CB\u89D2\u5EA6`), E.setKeyWords(""), E.setUserDraw((r, n) => {
|
|
2821
|
+
D.startAngle = aD(r.x, r.y, B.x, B.y) - D.rotation, n.drawLine(B, r), n.drawCustomEntity(D);
|
|
2822
|
+
}), e();
|
|
2761
2823
|
},
|
|
2762
2824
|
() => {
|
|
2763
2825
|
}
|
|
2764
|
-
),
|
|
2826
|
+
), e = S(
|
|
2765
2827
|
E,
|
|
2766
2828
|
() => {
|
|
2767
|
-
E.setUserDraw((r,
|
|
2768
|
-
D.endAngle =
|
|
2829
|
+
E.setUserDraw((r, n) => {
|
|
2830
|
+
D.endAngle = aD(r.x, r.y, B.x, B.y) - D.rotation, n.drawLine(B, r), n.drawCustomEntity(D);
|
|
2769
2831
|
}), E.setMessage(`
|
|
2770
2832
|
\u6307\u5B9A\u7EC8\u6B62\u89D2\u5EA6`), E.setKeyWords(""), i();
|
|
2771
2833
|
},
|
|
2772
2834
|
() => {
|
|
2773
2835
|
}
|
|
2774
|
-
), i =
|
|
2836
|
+
), i = S(
|
|
2775
2837
|
E,
|
|
2776
2838
|
() => {
|
|
2777
2839
|
let r = new y(D.xRadius, 0, 0);
|
|
2778
|
-
r.rotateBy(D.rotation, y.kZAxis),
|
|
2840
|
+
r.rotateBy(D.rotation, y.kZAxis), s.GetCurrentMxCAD().DrawEntity(new sD(D.center.x, D.center.y, 0, r.x, r.y, 0, D.yRadius / D.xRadius, D.startAngle, D.endAngle));
|
|
2779
2841
|
},
|
|
2780
2842
|
() => {
|
|
2781
2843
|
}
|
|
2782
2844
|
);
|
|
2783
2845
|
}
|
|
2784
2846
|
function UC() {
|
|
2785
|
-
const E = new O(), D = new
|
|
2786
|
-
let B =
|
|
2847
|
+
const E = new O(), D = new lC(), C = new cC();
|
|
2848
|
+
let B = s.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2787
2849
|
C.setColor(B), E.setMessage(`
|
|
2788
2850
|
\u70B9\u51FB\u5F00\u59CB\u7ED8\u5236\u692D\u5706:`), E.go(() => {
|
|
2789
2851
|
C.point1 = E.value(), D.setDraw((F) => {
|
|
2790
2852
|
C.point2 = F, D.drawCustomEntity(C);
|
|
2791
2853
|
}), E.setUserDraw(D), E.setMessage(`
|
|
2792
2854
|
\u518D\u6B21\u70B9\u51FB\u7ED3\u675F\u7ED8\u5236\u692D\u5706:`), E.go(() => {
|
|
2793
|
-
|
|
2855
|
+
s.GetCurrentMxCAD().DrawEntity(new sD(C.center.x, C.center.y, 0, C.xRadius, 0, 0, C.yRadius / C.xRadius));
|
|
2794
2856
|
});
|
|
2795
2857
|
});
|
|
2796
2858
|
}
|
|
2797
2859
|
h.on("init", () => {
|
|
2798
|
-
h.addCommand("Mx_EllipseArc",
|
|
2860
|
+
h.addCommand("Mx_EllipseArc", BC), h.addCommand("Mx_Ellipse", UC);
|
|
2799
2861
|
});
|
|
2800
|
-
async function
|
|
2801
|
-
let E =
|
|
2862
|
+
async function EC() {
|
|
2863
|
+
let E = R.getCurrentSelect();
|
|
2802
2864
|
if (E.length > 0) {
|
|
2803
2865
|
E.forEach((C) => {
|
|
2804
2866
|
C.erase();
|
|
2805
2867
|
});
|
|
2806
2868
|
return;
|
|
2807
2869
|
}
|
|
2808
|
-
let D = new
|
|
2870
|
+
let D = new H();
|
|
2809
2871
|
!await D.userSelect(`
|
|
2810
2872
|
\u9009\u62E9\u5220\u9664\u5BF9\u8C61`) || D.forEach((C) => {
|
|
2811
2873
|
C.erase();
|
|
2812
2874
|
});
|
|
2813
2875
|
}
|
|
2814
|
-
function
|
|
2876
|
+
function BD(E) {
|
|
2815
2877
|
let D, C;
|
|
2816
2878
|
if (E.forEach((B) => {
|
|
2817
2879
|
let F = B.getMcDbEntity();
|
|
@@ -2822,90 +2884,90 @@ function X(E) {
|
|
|
2822
2884
|
}), D && C)
|
|
2823
2885
|
return { minPt: D, maxPt: C };
|
|
2824
2886
|
}
|
|
2825
|
-
async function
|
|
2887
|
+
async function zC() {
|
|
2826
2888
|
let E;
|
|
2827
|
-
for (; E =
|
|
2828
|
-
let
|
|
2829
|
-
if (!await
|
|
2830
|
-
\u9009\u62E9\u590D\u5236\u5BF9\u8C61`) || (E =
|
|
2889
|
+
for (; E = R.getCurrentSelect(), !(E.length > 0); ) {
|
|
2890
|
+
let t = new H();
|
|
2891
|
+
if (!await t.userSelect(`
|
|
2892
|
+
\u9009\u62E9\u590D\u5236\u5BF9\u8C61`) || (E = t.getIds(), E.length == 0))
|
|
2831
2893
|
return;
|
|
2832
2894
|
break;
|
|
2833
2895
|
}
|
|
2834
2896
|
let D, C;
|
|
2835
2897
|
if (E.length >= 10) {
|
|
2836
|
-
let
|
|
2837
|
-
|
|
2898
|
+
let t = BD(E);
|
|
2899
|
+
t && (D = t.minPt, C = t.maxPt);
|
|
2838
2900
|
}
|
|
2839
|
-
let B = new
|
|
2901
|
+
let B = new V();
|
|
2840
2902
|
B.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
2841
2903
|
let F = await B.go();
|
|
2842
2904
|
if (!F)
|
|
2843
2905
|
return;
|
|
2844
|
-
B.setMessage("\u6307\u5B9A\u79FB\u52A8\u5230\u70B9"), B.setBasePt(F), B.setUseBasePt(!0), B.setUserDraw((
|
|
2906
|
+
B.setMessage("\u6307\u5B9A\u79FB\u52A8\u5230\u70B9"), B.setBasePt(F), B.setUseBasePt(!0), B.setUserDraw((t, e) => {
|
|
2845
2907
|
if (D && C) {
|
|
2846
|
-
let i =
|
|
2847
|
-
|
|
2908
|
+
let i = t.x - F.x, r = t.y - F.y, n = new THREE.Vector3(D.x + i, C.y + r, 0), u = new THREE.Vector3(C.x + i, D.y + r, 0), l = new THREE.Vector3(n.x, u.y, 0), c = new THREE.Vector3(u.x, n.y, 0);
|
|
2909
|
+
e.drawLine(c, n), e.drawLine(n, l), e.drawLine(l, u), e.drawLine(u, c);
|
|
2848
2910
|
}
|
|
2849
2911
|
for (let i = 0; i < E.length && i < 10; i++) {
|
|
2850
2912
|
let r = E[i].clone();
|
|
2851
|
-
!r || (r.Move(F,
|
|
2913
|
+
!r || (r.Move(F, t), e.drawMcDbEntity(r));
|
|
2852
2914
|
}
|
|
2853
2915
|
});
|
|
2854
2916
|
let A = await B.go();
|
|
2855
2917
|
if (!!A)
|
|
2856
|
-
for (let
|
|
2857
|
-
let
|
|
2858
|
-
!
|
|
2918
|
+
for (let t = 0; t < E.length; t++) {
|
|
2919
|
+
let e = E[t].clone();
|
|
2920
|
+
!e || (e.Move(F, A), s.GetCurrentMxCAD().DrawEntity(e));
|
|
2859
2921
|
}
|
|
2860
2922
|
}
|
|
2861
|
-
async function
|
|
2923
|
+
async function HC() {
|
|
2862
2924
|
let E;
|
|
2863
|
-
for (; E =
|
|
2864
|
-
let
|
|
2865
|
-
if (!await
|
|
2866
|
-
\u9009\u62E9\u79FB\u52A8\u5BF9\u8C61`) || (E =
|
|
2925
|
+
for (; E = R.getCurrentSelect(), !(E.length > 0); ) {
|
|
2926
|
+
let t = new H();
|
|
2927
|
+
if (!await t.userSelect(`
|
|
2928
|
+
\u9009\u62E9\u79FB\u52A8\u5BF9\u8C61`) || (E = t.getIds(), E.length == 0))
|
|
2867
2929
|
return;
|
|
2868
2930
|
break;
|
|
2869
2931
|
}
|
|
2870
2932
|
let D, C;
|
|
2871
2933
|
if (E.length >= 10) {
|
|
2872
|
-
let
|
|
2873
|
-
|
|
2934
|
+
let t = BD(E);
|
|
2935
|
+
t && (D = t.minPt, C = t.maxPt);
|
|
2874
2936
|
}
|
|
2875
|
-
let B = new
|
|
2937
|
+
let B = new V();
|
|
2876
2938
|
B.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
2877
2939
|
let F = await B.go();
|
|
2878
2940
|
if (!F)
|
|
2879
2941
|
return;
|
|
2880
|
-
B.setMessage("\u6307\u5B9A\u79FB\u52A8\u5230\u70B9"), B.setBasePt(F), B.setUseBasePt(!0), B.setUserDraw((
|
|
2942
|
+
B.setMessage("\u6307\u5B9A\u79FB\u52A8\u5230\u70B9"), B.setBasePt(F), B.setUseBasePt(!0), B.setUserDraw((t, e) => {
|
|
2881
2943
|
if (D && C) {
|
|
2882
|
-
let i =
|
|
2883
|
-
|
|
2944
|
+
let i = t.x - F.x, r = t.y - F.y, n = new THREE.Vector3(D.x + i, C.y + r, 0), u = new THREE.Vector3(C.x + i, D.y + r, 0), l = new THREE.Vector3(n.x, u.y, 0), c = new THREE.Vector3(u.x, n.y, 0);
|
|
2945
|
+
e.drawLine(c, n), e.drawLine(n, l), e.drawLine(l, u), e.drawLine(u, c);
|
|
2884
2946
|
}
|
|
2885
2947
|
for (let i = 0; i < E.length && i < 10; i++) {
|
|
2886
2948
|
let r = E[i].clone();
|
|
2887
|
-
!r || (r.Move(F,
|
|
2949
|
+
!r || (r.Move(F, t), e.drawMcDbEntity(r));
|
|
2888
2950
|
}
|
|
2889
2951
|
});
|
|
2890
2952
|
let A = await B.go();
|
|
2891
2953
|
if (!!A)
|
|
2892
|
-
for (let
|
|
2893
|
-
let
|
|
2894
|
-
!
|
|
2954
|
+
for (let t = 0; t < E.length; t++) {
|
|
2955
|
+
let e = E[t].getMcDbObject();
|
|
2956
|
+
!e || e.Move(F, A);
|
|
2895
2957
|
}
|
|
2896
2958
|
}
|
|
2897
2959
|
async function KC() {
|
|
2898
2960
|
let E;
|
|
2899
|
-
for (; E =
|
|
2900
|
-
let l = new
|
|
2961
|
+
for (; E = R.getCurrentSelect(), !(E.length > 0); ) {
|
|
2962
|
+
let l = new H();
|
|
2901
2963
|
if (!await l.userSelect(`
|
|
2902
2964
|
\u9009\u62E9\u65CB\u8F6C\u5BF9\u8C61`) || (E = l.getIds(), E.length == 0))
|
|
2903
2965
|
return;
|
|
2904
2966
|
break;
|
|
2905
2967
|
}
|
|
2906
|
-
let D, C, B =
|
|
2968
|
+
let D, C, B = BD(E);
|
|
2907
2969
|
B && (D = B.minPt, C = B.maxPt);
|
|
2908
|
-
let F = new
|
|
2970
|
+
let F = new V();
|
|
2909
2971
|
F.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
2910
2972
|
let A = await F.go();
|
|
2911
2973
|
if (A == null)
|
|
@@ -2913,80 +2975,80 @@ async function KC() {
|
|
|
2913
2975
|
F.setMessage("\u6307\u5B9A\u65CB\u8F6C\u89D2\u5EA6"), F.setBasePt(A), F.setUseBasePt(!0), F.setUserDraw((l, c) => {
|
|
2914
2976
|
let a = l, m = A, f = a.sub(m).angleTo2(y.kXAxis, y.kNegateZAxis), p = new v();
|
|
2915
2977
|
if (p.setToRotation(f, y.kZAxis, m), D && C) {
|
|
2916
|
-
let d = new o(D.x, C.y, 0), b = new o(C.x, D.y, 0), x = new o(d.x, b.y, 0),
|
|
2917
|
-
d.transformBy(p), b.transformBy(p), x.transformBy(p),
|
|
2978
|
+
let d = new o(D.x, C.y, 0), b = new o(C.x, D.y, 0), x = new o(d.x, b.y, 0), w = new o(b.x, d.y, 0);
|
|
2979
|
+
d.transformBy(p), b.transformBy(p), x.transformBy(p), w.transformBy(p), c.drawLine(w.toVector3(), d.toVector3()), c.drawLine(d.toVector3(), x.toVector3()), c.drawLine(x.toVector3(), b.toVector3()), c.drawLine(b.toVector3(), w.toVector3());
|
|
2918
2980
|
}
|
|
2919
|
-
m =
|
|
2981
|
+
m = s.GetCurrentMxCAD().DocCoord2Cad(m), p.setToRotation(f, y.kZAxis, m);
|
|
2920
2982
|
for (let d = 0; d < E.length && d < 10; d++) {
|
|
2921
2983
|
let b = E[d].clone();
|
|
2922
2984
|
!b || (b.TransformBy(p), c.drawMcDbEntity(b));
|
|
2923
2985
|
}
|
|
2924
2986
|
});
|
|
2925
|
-
let
|
|
2926
|
-
if (!
|
|
2987
|
+
let t = await F.go();
|
|
2988
|
+
if (!t)
|
|
2927
2989
|
return;
|
|
2928
|
-
let
|
|
2929
|
-
i =
|
|
2990
|
+
let e = t, i = A, n = e.sub(i).angleTo2(y.kXAxis, y.kNegateZAxis), u = new v();
|
|
2991
|
+
i = s.GetCurrentMxCAD().DocCoord2Cad(i), u.setToRotation(n, y.kZAxis, i);
|
|
2930
2992
|
for (let l = 0; l < E.length; l++) {
|
|
2931
2993
|
let c = E[l].getMcDbObject();
|
|
2932
2994
|
!c || c.TransformBy(u);
|
|
2933
2995
|
}
|
|
2934
2996
|
}
|
|
2935
|
-
async function
|
|
2997
|
+
async function NC() {
|
|
2936
2998
|
let E;
|
|
2937
|
-
for (; E =
|
|
2938
|
-
let m = new
|
|
2999
|
+
for (; E = R.getCurrentSelect(), !(E.length > 0); ) {
|
|
3000
|
+
let m = new H();
|
|
2939
3001
|
if (!await m.userSelect(`
|
|
2940
3002
|
\u9009\u62E9\u7F29\u653E\u5BF9\u8C61`) || (E = m.getIds(), E.length == 0))
|
|
2941
3003
|
return;
|
|
2942
3004
|
break;
|
|
2943
3005
|
}
|
|
2944
|
-
let D, C, B =
|
|
3006
|
+
let D, C, B = BD(E);
|
|
2945
3007
|
if (!B)
|
|
2946
3008
|
return;
|
|
2947
3009
|
D = B.minPt, C = B.maxPt;
|
|
2948
|
-
let F = C.x - D.x, A = C.y - D.y,
|
|
2949
|
-
|
|
2950
|
-
let
|
|
2951
|
-
|
|
2952
|
-
let i = await
|
|
3010
|
+
let F = C.x - D.x, A = C.y - D.y, t = (F + A) / 3;
|
|
3011
|
+
t < 1e-5 && (t = 1);
|
|
3012
|
+
let e = new V();
|
|
3013
|
+
e.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
3014
|
+
let i = await e.go();
|
|
2953
3015
|
if (i == null)
|
|
2954
3016
|
return;
|
|
2955
|
-
|
|
3017
|
+
e.setMessage("\u6307\u5B9A\u6BD4\u4F8B\u56E0\u5B50"), e.setBasePt(i), e.setUseBasePt(!0), e.setUserDraw((m, g) => {
|
|
2956
3018
|
let f = new o(m), p = new o(i), d = f.distanceTo(p);
|
|
2957
3019
|
if (d < 1e-5)
|
|
2958
3020
|
return;
|
|
2959
|
-
let b = d /
|
|
3021
|
+
let b = d / t;
|
|
2960
3022
|
b > 1e5 && (b = 1e5);
|
|
2961
3023
|
let x = new v();
|
|
2962
3024
|
if (x.setToScaling(b, p), D && C) {
|
|
2963
|
-
let
|
|
2964
|
-
|
|
3025
|
+
let w = new o(D.x, C.y, 0), M = new o(C.x, D.y, 0), I = new o(w.x, M.y, 0), X = new o(M.x, w.y, 0);
|
|
3026
|
+
w.transformBy(x), M.transformBy(x), I.transformBy(x), X.transformBy(x), g.drawLine(X.toVector3(), w.toVector3()), g.drawLine(w.toVector3(), I.toVector3()), g.drawLine(I.toVector3(), M.toVector3()), g.drawLine(M.toVector3(), X.toVector3());
|
|
2965
3027
|
}
|
|
2966
|
-
p =
|
|
2967
|
-
for (let
|
|
2968
|
-
let M = E[
|
|
2969
|
-
!M || (M.TransformBy(x),
|
|
3028
|
+
p = s.GetCurrentMxCAD().DocCoord2Cad(p), x.setToScaling(b, p);
|
|
3029
|
+
for (let w = 0; w < E.length && w < 10; w++) {
|
|
3030
|
+
let M = E[w].clone();
|
|
3031
|
+
!M || (M.TransformBy(x), g.drawMcDbEntity(M));
|
|
2970
3032
|
}
|
|
2971
3033
|
});
|
|
2972
|
-
let r = await
|
|
3034
|
+
let r = await e.go();
|
|
2973
3035
|
if (!r)
|
|
2974
3036
|
return;
|
|
2975
|
-
let
|
|
3037
|
+
let n = r, u = i, l = n.distanceTo(u);
|
|
2976
3038
|
if (l < 1e-5)
|
|
2977
3039
|
return;
|
|
2978
|
-
let c = l /
|
|
3040
|
+
let c = l / t;
|
|
2979
3041
|
c > 1e5 && (c = 1e5);
|
|
2980
3042
|
let a = new v();
|
|
2981
|
-
u =
|
|
3043
|
+
u = s.GetCurrentMxCAD().DocCoord2Cad(u), a.setToScaling(c, u);
|
|
2982
3044
|
for (let m = 0; m < E.length; m++) {
|
|
2983
|
-
let
|
|
2984
|
-
!
|
|
3045
|
+
let g = E[m].getMcDbObject();
|
|
3046
|
+
!g || g.TransformBy(a);
|
|
2985
3047
|
}
|
|
2986
3048
|
}
|
|
2987
|
-
async function
|
|
2988
|
-
let E = new
|
|
2989
|
-
E.setDisableOsnap(!0), E.setMessage("\u70B9\u53D6\u7F29\u653E\u533A\u57DF"), E.setDynamicInputType(
|
|
3049
|
+
async function _C() {
|
|
3050
|
+
let E = new V();
|
|
3051
|
+
E.setDisableOsnap(!0), E.setMessage("\u70B9\u53D6\u7F29\u653E\u533A\u57DF"), E.setDynamicInputType(CD.kDynTip);
|
|
2990
3052
|
let D = await E.go();
|
|
2991
3053
|
if (D == null)
|
|
2992
3054
|
return;
|
|
@@ -2996,86 +3058,151 @@ async function NC() {
|
|
|
2996
3058
|
let C = await E.go();
|
|
2997
3059
|
C != null && h.getCurrentDraw().zoomW(D.toVector3(), C.toVector3());
|
|
2998
3060
|
}
|
|
2999
|
-
async function
|
|
3000
|
-
let E =
|
|
3061
|
+
async function qC() {
|
|
3062
|
+
let E = s.GetCurrentDatabase().CurrentSpace().getBoundingBox();
|
|
3001
3063
|
!E.ret || h.getCurrentDraw().zoomW(E.minPt.toVector3(), E.maxPt.toVector3());
|
|
3002
3064
|
}
|
|
3003
|
-
async function
|
|
3004
|
-
const E = new
|
|
3065
|
+
async function ZC() {
|
|
3066
|
+
const E = new nD();
|
|
3005
3067
|
E.setMessage(`
|
|
3006
3068
|
\u6307\u5B9A\u504F\u79FB\u8DDD\u79BB\u6216:`);
|
|
3007
3069
|
let D = await E.go();
|
|
3008
3070
|
if (D == null)
|
|
3009
3071
|
return;
|
|
3010
|
-
let C = new
|
|
3072
|
+
let C = new Z();
|
|
3011
3073
|
C.AddMcDbEntityTypes("LINE,CIRCLE,LWPOLYLINE,ARC");
|
|
3012
|
-
let B = await
|
|
3074
|
+
let B = await R.selectEnt(`
|
|
3013
3075
|
\u9009\u62E9\u504F\u79FB\u5BF9\u8C61`, C, !1);
|
|
3014
3076
|
if (B.length == 0)
|
|
3015
3077
|
return;
|
|
3016
|
-
const F = new
|
|
3078
|
+
const F = new V();
|
|
3017
3079
|
F.setMessage(`
|
|
3018
3080
|
\u6307\u5B9A\u8981\u504F\u79FB\u90A3\u4E00\u4FA7\u4E0A\u7684\u70B9:`), F.setDisableOsnap(!0);
|
|
3019
3081
|
let A = await F.go();
|
|
3020
3082
|
if (A == null)
|
|
3021
3083
|
return;
|
|
3022
|
-
let
|
|
3023
|
-
if (!
|
|
3084
|
+
let t = B[0].getMcDbCurve();
|
|
3085
|
+
if (!t)
|
|
3024
3086
|
return;
|
|
3025
|
-
let
|
|
3026
|
-
|
|
3027
|
-
|
|
3087
|
+
let e = t.offsetCurves(D, A);
|
|
3088
|
+
e.empty() || e.forEach((i) => {
|
|
3089
|
+
s.GetCurrentMxCAD().DrawEntity(i);
|
|
3028
3090
|
});
|
|
3029
3091
|
}
|
|
3030
|
-
function
|
|
3031
|
-
|
|
3092
|
+
function $C() {
|
|
3093
|
+
s.GetCurrentMxCAD().getImp().regen();
|
|
3032
3094
|
}
|
|
3033
|
-
async function
|
|
3034
|
-
let E = await
|
|
3095
|
+
async function JC() {
|
|
3096
|
+
let E = await R.userSelect("\u9009\u62E9\u955C\u50CF\u5BF9\u8C61");
|
|
3035
3097
|
if (E.length == 0) {
|
|
3036
3098
|
h.acutPrintf(`
|
|
3037
3099
|
\u6CA1\u6709\u80FD\u955C\u50CF\u7684\u5BF9\u8C61`);
|
|
3038
3100
|
return;
|
|
3039
3101
|
}
|
|
3040
|
-
let D, C, B =
|
|
3102
|
+
let D, C, B = BD(E);
|
|
3041
3103
|
B && (D = B.minPt, C = B.maxPt);
|
|
3042
|
-
let F = new
|
|
3104
|
+
let F = new V();
|
|
3043
3105
|
F.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
3044
3106
|
let A = await F.go();
|
|
3045
3107
|
if (A == null)
|
|
3046
3108
|
return;
|
|
3047
|
-
F.setMessage("\u6307\u5B9A\u955C\u5411\u70B9"), F.setBasePt(A), F.setUseBasePt(!0), F.setUserDraw((
|
|
3109
|
+
F.setMessage("\u6307\u5B9A\u955C\u5411\u70B9"), F.setBasePt(A), F.setUseBasePt(!0), F.setUserDraw((e, i) => {
|
|
3048
3110
|
if (D && C) {
|
|
3049
3111
|
let r = new v();
|
|
3050
|
-
r.setMirror(A,
|
|
3051
|
-
let
|
|
3052
|
-
|
|
3112
|
+
r.setMirror(A, e);
|
|
3113
|
+
let n = new o(D.x, C.y, 0), u = new o(C.x, D.y, 0), l = new o(n.x, u.y, 0), c = new o(u.x, n.y, 0);
|
|
3114
|
+
n.transformBy(r), u.transformBy(r), l.transformBy(r), c.transformBy(r), i.drawLine(c.toVector3(), n.toVector3()), i.drawLine(n.toVector3(), l.toVector3()), i.drawLine(l.toVector3(), u.toVector3()), i.drawLine(u.toVector3(), c.toVector3());
|
|
3053
3115
|
}
|
|
3054
3116
|
for (let r = 0; r < E.length && r < 10; r++) {
|
|
3055
|
-
let
|
|
3056
|
-
!
|
|
3117
|
+
let n = E[r].clone();
|
|
3118
|
+
!n || (n.Mirror(A, e), i.drawMcDbEntity(n));
|
|
3057
3119
|
}
|
|
3058
3120
|
});
|
|
3059
|
-
let
|
|
3060
|
-
if (!!
|
|
3061
|
-
for (let
|
|
3062
|
-
let i = E[
|
|
3063
|
-
!i || (i.Mirror(A,
|
|
3121
|
+
let t = await F.go();
|
|
3122
|
+
if (!!t)
|
|
3123
|
+
for (let e = 0; e < E.length; e++) {
|
|
3124
|
+
let i = E[e].clone();
|
|
3125
|
+
!i || (i.Mirror(A, t), s.GetCurrentMxCAD().DrawEntity(i));
|
|
3064
3126
|
}
|
|
3065
3127
|
}
|
|
3128
|
+
async function YC() {
|
|
3129
|
+
let E = new nD();
|
|
3130
|
+
E.setMessage("\u6307\u5B9A\u7B2C\u4E00\u4E2A\u5012\u89D2\u8DDD\u79BB");
|
|
3131
|
+
let D = await E.go();
|
|
3132
|
+
if (!D)
|
|
3133
|
+
return;
|
|
3134
|
+
E.setMessage("\u6307\u5B9A\u7B2C\u4E8C\u4E2A\u5012\u89D2\u8DDD\u79BB");
|
|
3135
|
+
let C = await E.go();
|
|
3136
|
+
if (!C)
|
|
3137
|
+
return;
|
|
3138
|
+
let B = new Z();
|
|
3139
|
+
B.AddMcDbEntityTypes("LINE,LWPOLYLINE");
|
|
3140
|
+
let F = new DD();
|
|
3141
|
+
F.setFilter(B), F.setMessage("\u9009\u62E9\u7B2C\u4E00\u6761\u76F4\u7EBF");
|
|
3142
|
+
let A = await F.go(), t = F.pickPoint();
|
|
3143
|
+
if (!A.isValid())
|
|
3144
|
+
return;
|
|
3145
|
+
A.getMcDbEntity()?.highlight(!0);
|
|
3146
|
+
let e = new DD();
|
|
3147
|
+
e.setFilter(B), e.setMessage("\u9009\u62E9\u7B2C\u4E8C\u6761\u76F4\u7EBF");
|
|
3148
|
+
let i = await e.go(), r = e.pickPoint();
|
|
3149
|
+
!i.isValid() || (A.getMcDbEntity()?.highlight(!1), R.MxCADAssist.MxChamfer(A.id, i.id, t.x, t.y, r.x, r.y, D, C, !0));
|
|
3150
|
+
}
|
|
3151
|
+
async function XC() {
|
|
3152
|
+
let E = new nD();
|
|
3153
|
+
E.setMessage("\u6307\u5B9A\u5012\u5706\u89D2\u534A\u5F84");
|
|
3154
|
+
let D = await E.go();
|
|
3155
|
+
if (!D)
|
|
3156
|
+
return;
|
|
3157
|
+
let C = new Z();
|
|
3158
|
+
C.AddMcDbEntityTypes("LINE,LWPOLYLINE");
|
|
3159
|
+
let B = new DD();
|
|
3160
|
+
B.setFilter(C), B.setMessage("\u9009\u62E9\u7B2C\u4E00\u6761\u76F4\u7EBF");
|
|
3161
|
+
let F = await B.go(), A = B.pickPoint();
|
|
3162
|
+
if (!F.isValid())
|
|
3163
|
+
return;
|
|
3164
|
+
F.getMcDbEntity()?.highlight(!0);
|
|
3165
|
+
let t = new DD();
|
|
3166
|
+
t.setFilter(C), t.setMessage("\u9009\u62E9\u7B2C\u4E8C\u6761\u76F4\u7EBF");
|
|
3167
|
+
let e = await t.go(), i = t.pickPoint();
|
|
3168
|
+
!e.isValid() || (F.getMcDbEntity()?.highlight(!1), R.MxCADAssist.MxFillet(F.id, e.id, A.x, A.y, i.x, i.y, D, !0));
|
|
3169
|
+
}
|
|
3170
|
+
async function QC() {
|
|
3171
|
+
let E = new Z();
|
|
3172
|
+
E.AddMcDbEntityTypes("LINE,LWPOLYLINE,ELLIPSE,ARC,CIRCLE,SPLINE,XLINE");
|
|
3173
|
+
let D = await R.userSelect("\u9009\u62E9\u5BF9\u8C61", E);
|
|
3174
|
+
if (D.length == 0)
|
|
3175
|
+
return;
|
|
3176
|
+
let C = new wD();
|
|
3177
|
+
C.copyFormAryId(D);
|
|
3178
|
+
let B = new s.mxcadassemblyimp.MxDrawTrimAssist();
|
|
3179
|
+
if (!!B.Init(C.imp)) {
|
|
3180
|
+
for (; ; ) {
|
|
3181
|
+
let F = new H();
|
|
3182
|
+
if (F.isWhileSelect = !1, F.isSelectHighlight = !1, !await F.userSelect("\u9009\u62E9\u526A\u5207\u5BF9\u8C61", E))
|
|
3183
|
+
break;
|
|
3184
|
+
let A = F.getIds();
|
|
3185
|
+
if (A.length == 0)
|
|
3186
|
+
continue;
|
|
3187
|
+
let t = F.getSelectPoint();
|
|
3188
|
+
C.copyFormAryId(A), B.DoTrim(C.imp, t.pt1.x, t.pt1.y, t.pt2.x, t.pt2.y);
|
|
3189
|
+
}
|
|
3190
|
+
B.UnInit();
|
|
3191
|
+
}
|
|
3192
|
+
}
|
|
3066
3193
|
h.on("init", () => {
|
|
3067
|
-
h.addCommand("Mx_Erase",
|
|
3194
|
+
h.addCommand("Mx_Erase", EC), h.addCommand("Mx_Copy", zC), h.addCommand("Mx_Move", HC), h.addCommand("Mx_Rotate", KC), h.addCommand("Mx_Scale", NC), h.addCommand("Mx_WindowZoom", _C), h.addCommand("Mx_ZoomE", qC), h.addCommand("Mx_Offset", ZC), h.addCommand("Mx_Regen", $C), h.addCommand("Mx_Mirror", JC), h.addCommand("Mx_Chamfer", YC), h.addCommand("Mx_Fillet", XC), h.addCommand("Mx_Trim", QC);
|
|
3068
3195
|
});
|
|
3069
|
-
const
|
|
3196
|
+
const D9 = async (E, D, C) => {
|
|
3070
3197
|
const { locateFile: B } = C, F = B(E + ".js");
|
|
3071
|
-
return await
|
|
3198
|
+
return await $D(F), await globalThis[D](C);
|
|
3072
3199
|
};
|
|
3073
|
-
function
|
|
3200
|
+
function C9(E) {
|
|
3074
3201
|
return typeof ResizeObserver == "function" ? new ResizeObserver(E) : null;
|
|
3075
3202
|
}
|
|
3076
|
-
function
|
|
3203
|
+
function B9(E, D) {
|
|
3077
3204
|
const C = () => requestAnimationFrame(D);
|
|
3078
|
-
let B =
|
|
3205
|
+
let B = C9(C);
|
|
3079
3206
|
if (B) {
|
|
3080
3207
|
B.observe(E);
|
|
3081
3208
|
return;
|
|
@@ -3085,7 +3212,7 @@ function QC(E, D) {
|
|
|
3085
3212
|
return;
|
|
3086
3213
|
}
|
|
3087
3214
|
}
|
|
3088
|
-
function
|
|
3215
|
+
function E9(E, D) {
|
|
3089
3216
|
let C = null;
|
|
3090
3217
|
return function(...B) {
|
|
3091
3218
|
C || (C = setTimeout(() => {
|
|
@@ -3093,34 +3220,34 @@ function XC(E, D) {
|
|
|
3093
3220
|
}, D));
|
|
3094
3221
|
};
|
|
3095
3222
|
}
|
|
3096
|
-
class
|
|
3223
|
+
class Y {
|
|
3097
3224
|
static onloadWasmMxDraw3dModel;
|
|
3098
3225
|
canvas;
|
|
3099
3226
|
constructor(D) {
|
|
3100
3227
|
const C = () => {
|
|
3101
3228
|
const u = this.canvas.parentElement?.clientWidth || window.innerWidth, l = this.canvas.parentElement?.clientHeight || window.innerHeight;
|
|
3102
3229
|
let c = Math.min(u, window.screen.availWidth), a = Math.min(l, window.screen.availHeight);
|
|
3103
|
-
c = Math.max(A, c), a = Math.max(
|
|
3230
|
+
c = Math.max(A, c), a = Math.max(t, a), this.canvas.style.width = c + 1 + "px", this.canvas.style.height = a + "px";
|
|
3104
3231
|
const m = window.devicePixelRatio || 1;
|
|
3105
3232
|
this.canvas.width = c * m, this.canvas.height = a * m;
|
|
3106
|
-
}, B =
|
|
3233
|
+
}, B = E9(C, 50), {
|
|
3107
3234
|
canvas: F,
|
|
3108
3235
|
minWidth: A = 300,
|
|
3109
|
-
minHeight:
|
|
3110
|
-
updateCanvasSize:
|
|
3236
|
+
minHeight: t = 300,
|
|
3237
|
+
updateCanvasSize: e = B,
|
|
3111
3238
|
...i
|
|
3112
3239
|
} = D;
|
|
3113
|
-
let r = typeof F == "string" ? document.querySelectorAll(F)[0] : F,
|
|
3114
|
-
|
|
3240
|
+
let r = typeof F == "string" ? document.querySelectorAll(F)[0] : F, n = r.getContext("webgl2", { alpha: !1, depth: !0, antialias: !1, preserveDrawingBuffer: !0 });
|
|
3241
|
+
n == null && (n = r.getContext("webgl", { alpha: !1, depth: !0, antialias: !1, preserveDrawingBuffer: !0 })), this.canvas = r, this.ctx = n, i.canvas = this.canvas;
|
|
3115
3242
|
for (let u in i)
|
|
3116
3243
|
this[u] = i[u];
|
|
3117
3244
|
if (this.canvas instanceof HTMLCanvasElement) {
|
|
3118
3245
|
const u = this.canvas.parentElement || document.body;
|
|
3119
|
-
|
|
3246
|
+
B9(u, e);
|
|
3120
3247
|
} else
|
|
3121
3248
|
console.error("createMxDraw3d canvas \u53C2\u6570\u4E0D\u6B63\u786E \u65E0\u6CD5\u83B7\u53D6\u5230canvas\u5143\u7D20");
|
|
3122
|
-
window.onresize = C, C(),
|
|
3123
|
-
|
|
3249
|
+
window.onresize = C, C(), D9("mxdraw3d_min", "mxdraw3d", this).then(() => {
|
|
3250
|
+
Y.onloadWasmMxDraw3dModel && Y.onloadWasmMxDraw3dModel(this), this.updateCanvasSize = e, this.open3DFile = (u) => {
|
|
3124
3251
|
const l = new FileReader();
|
|
3125
3252
|
l.onload = () => {
|
|
3126
3253
|
if (!!l.result && l.result instanceof ArrayBuffer) {
|
|
@@ -3133,12 +3260,12 @@ class J {
|
|
|
3133
3260
|
});
|
|
3134
3261
|
}
|
|
3135
3262
|
}
|
|
3136
|
-
function
|
|
3263
|
+
function F9(E, D) {
|
|
3137
3264
|
return new Promise(async (C, B) => {
|
|
3138
3265
|
try {
|
|
3139
|
-
E.locateFile || (E.locateFile =
|
|
3140
|
-
const F = new
|
|
3141
|
-
|
|
3266
|
+
E.locateFile || (E.locateFile = TC);
|
|
3267
|
+
const F = new Y(E);
|
|
3268
|
+
Y.onloadWasmMxDraw3dModel = () => {
|
|
3142
3269
|
C(F), D && D(F);
|
|
3143
3270
|
};
|
|
3144
3271
|
} catch (F) {
|
|
@@ -3146,157 +3273,159 @@ function D9(E, D) {
|
|
|
3146
3273
|
}
|
|
3147
3274
|
});
|
|
3148
3275
|
}
|
|
3149
|
-
const
|
|
3276
|
+
const t9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
3150
3277
|
__proto__: null,
|
|
3151
|
-
b64Encode:
|
|
3152
|
-
b64Decode:
|
|
3153
|
-
saveAsFileDialog:
|
|
3154
|
-
downloadFile:
|
|
3155
|
-
downloadFileFromUrl:
|
|
3278
|
+
b64Encode: OD,
|
|
3279
|
+
b64Decode: SD,
|
|
3280
|
+
saveAsFileDialog: vD,
|
|
3281
|
+
downloadFile: ID,
|
|
3282
|
+
downloadFileFromUrl: jD,
|
|
3156
3283
|
MxTools: Q,
|
|
3157
3284
|
McGePoint3d: o,
|
|
3158
3285
|
McGeVector3d: y,
|
|
3159
3286
|
McGeMatrix3d: v,
|
|
3160
|
-
McGeLongArray:
|
|
3161
|
-
McGeStringArray:
|
|
3162
|
-
McGePoint3dArray:
|
|
3163
|
-
getFilterImp:
|
|
3164
|
-
MxCADResbuf:
|
|
3165
|
-
MxCADUtilityClass:
|
|
3166
|
-
MxCADUtility:
|
|
3167
|
-
MxCADSelectionSetStatus:
|
|
3168
|
-
MxCADSelectionSet:
|
|
3169
|
-
MxCADUiPrBase:
|
|
3170
|
-
MxCADUiPrPoint:
|
|
3171
|
-
MxCADUiPrDist:
|
|
3172
|
-
MxCADUiPrAngle:
|
|
3287
|
+
McGeLongArray: wD,
|
|
3288
|
+
McGeStringArray: GD,
|
|
3289
|
+
McGePoint3dArray: pC,
|
|
3290
|
+
getFilterImp: N,
|
|
3291
|
+
MxCADResbuf: Z,
|
|
3292
|
+
MxCADUtilityClass: ND,
|
|
3293
|
+
MxCADUtility: R,
|
|
3294
|
+
MxCADSelectionSetStatus: _D,
|
|
3295
|
+
MxCADSelectionSet: H,
|
|
3296
|
+
MxCADUiPrBase: K,
|
|
3297
|
+
MxCADUiPrPoint: V,
|
|
3298
|
+
MxCADUiPrDist: nD,
|
|
3299
|
+
MxCADUiPrAngle: gC,
|
|
3173
3300
|
MxCADUiPrInt: wC,
|
|
3174
|
-
MxCADUiPrKeyWord:
|
|
3175
|
-
MxCADUiPrString:
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3301
|
+
MxCADUiPrKeyWord: fC,
|
|
3302
|
+
MxCADUiPrString: xC,
|
|
3303
|
+
MxCADUiPrEntity: DD,
|
|
3304
|
+
McRxObject: _,
|
|
3305
|
+
McObjectIdType: L,
|
|
3306
|
+
McObjectId: k,
|
|
3307
|
+
McDbObject: G,
|
|
3308
|
+
McDbObjectArray: cD,
|
|
3181
3309
|
get McDb() {
|
|
3182
|
-
return
|
|
3310
|
+
return mD;
|
|
3183
3311
|
},
|
|
3184
|
-
McCmColor:
|
|
3185
|
-
McDbLayerTableRecord:
|
|
3186
|
-
McDbLayerTable:
|
|
3187
|
-
McDbLinetypeTable:
|
|
3188
|
-
McDbTextStyleTable:
|
|
3189
|
-
McDbDatabase:
|
|
3190
|
-
McDbBlockTableRecordIterator:
|
|
3191
|
-
McDbBlockTableRecord:
|
|
3192
|
-
McDbBlockTableIterator:
|
|
3193
|
-
McDbBlockTable:
|
|
3194
|
-
McDbEntity:
|
|
3312
|
+
McCmColor: q,
|
|
3313
|
+
McDbLayerTableRecord: yC,
|
|
3314
|
+
McDbLayerTable: VD,
|
|
3315
|
+
McDbLinetypeTable: WD,
|
|
3316
|
+
McDbTextStyleTable: UD,
|
|
3317
|
+
McDbDatabase: fD,
|
|
3318
|
+
McDbBlockTableRecordIterator: zD,
|
|
3319
|
+
McDbBlockTableRecord: rD,
|
|
3320
|
+
McDbBlockTableIterator: HD,
|
|
3321
|
+
McDbBlockTable: KD,
|
|
3322
|
+
McDbEntity: W,
|
|
3195
3323
|
McDbCurve: z,
|
|
3196
|
-
McDbLine:
|
|
3197
|
-
McDbText:
|
|
3198
|
-
McDbMText:
|
|
3199
|
-
McDbCircle:
|
|
3200
|
-
McDbPolyline:
|
|
3201
|
-
McDbBlockReference:
|
|
3202
|
-
McDbDimension:
|
|
3203
|
-
McDbAlignedDimension:
|
|
3204
|
-
McDbRotatedDimension:
|
|
3205
|
-
McDbArc:
|
|
3206
|
-
McDbEllipse:
|
|
3207
|
-
McDbPoint:
|
|
3208
|
-
McObject:
|
|
3209
|
-
McAppType:
|
|
3210
|
-
MxCppType:
|
|
3324
|
+
McDbLine: AD,
|
|
3325
|
+
McDbText: pD,
|
|
3326
|
+
McDbMText: tD,
|
|
3327
|
+
McDbCircle: U,
|
|
3328
|
+
McDbPolyline: eD,
|
|
3329
|
+
McDbBlockReference: dD,
|
|
3330
|
+
McDbDimension: xD,
|
|
3331
|
+
McDbAlignedDimension: hD,
|
|
3332
|
+
McDbRotatedDimension: yD,
|
|
3333
|
+
McDbArc: iD,
|
|
3334
|
+
McDbEllipse: sD,
|
|
3335
|
+
McDbPoint: bD,
|
|
3336
|
+
McObject: J,
|
|
3337
|
+
McAppType: qD,
|
|
3338
|
+
MxCppType: ZD,
|
|
3211
3339
|
get MxCpp() {
|
|
3212
|
-
return
|
|
3340
|
+
return s;
|
|
3213
3341
|
},
|
|
3214
|
-
loadMxCADassembly:
|
|
3342
|
+
loadMxCADassembly: JD,
|
|
3215
3343
|
createMxCad: OC,
|
|
3216
|
-
drawText:
|
|
3217
|
-
drawCircle:
|
|
3218
|
-
drawLine:
|
|
3219
|
-
drawMText:
|
|
3344
|
+
drawText: SC,
|
|
3345
|
+
drawCircle: YD,
|
|
3346
|
+
drawLine: XD,
|
|
3347
|
+
drawMText: jC,
|
|
3220
3348
|
drawPolyLine: QD,
|
|
3221
|
-
drawPolygon:
|
|
3222
|
-
drawArc:
|
|
3223
|
-
drawEllipticalArc:
|
|
3224
|
-
Mx_Erase:
|
|
3225
|
-
MxDraw3d:
|
|
3226
|
-
loadMxCADassembly3d:
|
|
3349
|
+
drawPolygon: DC,
|
|
3350
|
+
drawArc: CC,
|
|
3351
|
+
drawEllipticalArc: BC,
|
|
3352
|
+
Mx_Erase: EC,
|
|
3353
|
+
MxDraw3d: Y,
|
|
3354
|
+
loadMxCADassembly3d: F9
|
|
3227
3355
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
3228
3356
|
export {
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3357
|
+
qD as McAppType,
|
|
3358
|
+
q as McCmColor,
|
|
3359
|
+
mD as McDb,
|
|
3360
|
+
hD as McDbAlignedDimension,
|
|
3361
|
+
iD as McDbArc,
|
|
3362
|
+
dD as McDbBlockReference,
|
|
3363
|
+
KD as McDbBlockTable,
|
|
3364
|
+
HD as McDbBlockTableIterator,
|
|
3365
|
+
rD as McDbBlockTableRecord,
|
|
3366
|
+
zD as McDbBlockTableRecordIterator,
|
|
3367
|
+
U as McDbCircle,
|
|
3240
3368
|
z as McDbCurve,
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3369
|
+
fD as McDbDatabase,
|
|
3370
|
+
xD as McDbDimension,
|
|
3371
|
+
sD as McDbEllipse,
|
|
3372
|
+
W as McDbEntity,
|
|
3373
|
+
VD as McDbLayerTable,
|
|
3374
|
+
yC as McDbLayerTableRecord,
|
|
3375
|
+
AD as McDbLine,
|
|
3376
|
+
WD as McDbLinetypeTable,
|
|
3377
|
+
tD as McDbMText,
|
|
3378
|
+
G as McDbObject,
|
|
3379
|
+
cD as McDbObjectArray,
|
|
3380
|
+
bD as McDbPoint,
|
|
3381
|
+
eD as McDbPolyline,
|
|
3382
|
+
yD as McDbRotatedDimension,
|
|
3383
|
+
pD as McDbText,
|
|
3384
|
+
UD as McDbTextStyleTable,
|
|
3385
|
+
wD as McGeLongArray,
|
|
3258
3386
|
v as McGeMatrix3d,
|
|
3259
3387
|
o as McGePoint3d,
|
|
3260
|
-
|
|
3261
|
-
|
|
3388
|
+
pC as McGePoint3dArray,
|
|
3389
|
+
GD as McGeStringArray,
|
|
3262
3390
|
y as McGeVector3d,
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3391
|
+
J as McObject,
|
|
3392
|
+
k as McObjectId,
|
|
3393
|
+
L as McObjectIdType,
|
|
3394
|
+
_ as McRxObject,
|
|
3395
|
+
Z as MxCADResbuf,
|
|
3396
|
+
H as MxCADSelectionSet,
|
|
3397
|
+
_D as MxCADSelectionSetStatus,
|
|
3398
|
+
gC as MxCADUiPrAngle,
|
|
3399
|
+
K as MxCADUiPrBase,
|
|
3400
|
+
nD as MxCADUiPrDist,
|
|
3401
|
+
DD as MxCADUiPrEntity,
|
|
3273
3402
|
wC as MxCADUiPrInt,
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3403
|
+
fC as MxCADUiPrKeyWord,
|
|
3404
|
+
V as MxCADUiPrPoint,
|
|
3405
|
+
xC as MxCADUiPrString,
|
|
3406
|
+
R as MxCADUtility,
|
|
3407
|
+
ND as MxCADUtilityClass,
|
|
3408
|
+
s as MxCpp,
|
|
3409
|
+
ZD as MxCppType,
|
|
3410
|
+
Y as MxDraw3d,
|
|
3282
3411
|
Q as MxTools,
|
|
3283
|
-
|
|
3284
|
-
|
|
3285
|
-
|
|
3412
|
+
EC as Mx_Erase,
|
|
3413
|
+
SD as b64Decode,
|
|
3414
|
+
OD as b64Encode,
|
|
3286
3415
|
OC as createMxCad,
|
|
3287
|
-
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3416
|
+
t9 as default,
|
|
3417
|
+
ID as downloadFile,
|
|
3418
|
+
jD as downloadFileFromUrl,
|
|
3419
|
+
CC as drawArc,
|
|
3420
|
+
YD as drawCircle,
|
|
3421
|
+
BC as drawEllipticalArc,
|
|
3422
|
+
XD as drawLine,
|
|
3423
|
+
jC as drawMText,
|
|
3295
3424
|
QD as drawPolyLine,
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
|
|
3425
|
+
DC as drawPolygon,
|
|
3426
|
+
SC as drawText,
|
|
3427
|
+
N as getFilterImp,
|
|
3428
|
+
JD as loadMxCADassembly,
|
|
3429
|
+
F9 as loadMxCADassembly3d,
|
|
3430
|
+
vD as saveAsFileDialog
|
|
3302
3431
|
};
|