@mlightcad/data-model 1.15.6 → 1.15.7
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/data-model.cjs +1 -2
- package/lib/entity/AcDbMLeader.d.ts +16 -4
- package/lib/entity/AcDbMLeader.d.ts.map +1 -1
- package/lib/entity/AcDbMLeader.js +25 -16
- package/lib/entity/AcDbMLeader.js.map +1 -1
- package/lib/entity/AcDbSpline.d.ts.map +1 -1
- package/lib/entity/AcDbSpline.js +9 -2
- package/lib/entity/AcDbSpline.js.map +1 -1
- package/package.json +5 -5
package/dist/data-model.cjs
CHANGED
|
@@ -11,8 +11,7 @@
|
|
|
11
11
|
`)continue;const v=y+S/2,k=this._startAngle+v/h,L=new x(this._center.x+h*Math.cos(k),this._center.y+h*Math.sin(k),this._center.z);let O=k+Math.PI/2;this._textDirection===1&&(O+=Math.PI),_.push({text:P,position:L.applyMatrix4(b),rotation:this.rotationInWcs(O,b)}),y+=S+p}return _}get geometricExtents(){const t=new j,e=this.glyphPlacements();if(e.length===0)return t.expandByPoint(this._center),t;const i=this._textSize>0?this._textSize:1;for(const r of e){const s=Ve(r.text,i,this._xScale>0?this._xScale:1),o=Math.max(s,i)/2;t.expandByPoint(new x(r.position.x-o,r.position.y-o,r.position.z)),t.expandByPoint(new x(r.position.x+o,r.position.y+o,r.position.z))}return t}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.textString,set:t=>{this.textString=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.textSize,set:t=>{this.textSize=t}}}]}]}}subWorldDraw(t,e){const i=this.glyphPlacements();if(i.length===0)return;const r=this.getTextStyle(),s=this._textSize>0?this._textSize:1,o=[];for(const a of i){const l={text:this._isUnderlined?`\\L${a.text}`:a.text,height:s,width:1/0,widthFactor:this._xScale>0?this._xScale:1,position:a.position,rotation:a.rotation,drawingDirection:exports.AcGiMTextFlowDirection.BOTTOM_TO_TOP,attachmentPoint:exports.AcGiMTextAttachmentPoint.BaselineCenter};o.push(t.mtext(l,r,e))}return o.length===1?o[0]:t.group(o)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbArcAlignedText"),t.writeString(1,this._textString),t.writeString(2,this._fontName),t.writeString(3,this._bigFontName),t.writeString(7,this._styleName),t.writePoint3d(10,this._center),t.writeDouble(40,this._radius),t.writeDouble(41,this._xScale),t.writeDouble(42,this._textSize),t.writeDouble(43,this._characterSpacing),t.writeDouble(44,this._offsetFromArc),t.writeDouble(45,this._rightOffset),t.writeDouble(46,this._leftOffset),t.writeAngle(50,this._startAngle),t.writeAngle(51,this._endAngle),t.writeInt16(70,this._isReverse?1:0),t.writeInt16(71,this._textDirection),t.writeInt16(72,this._alignment),t.writeInt16(73,this._textPosition),t.writeInt16(74,this._isBold?1:0),t.writeInt16(75,this._isItalic?1:0),t.writeInt16(76,this._isUnderlined?1:0),t.writeInt16(77,this._characterSet),t.writeInt16(78,this._pitchAndFamily),t.writeInt16(79,this._isShx?1:0),t.writeInt32(90,this.rawTextColor()),t.writeVector3d(210,this._normal),t.writeInt16(280,this._wizardFlag),this._arcId&&t.writeHandle(330,this._arcId),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbArcAlignedText");let e=this._center.x,i=this._center.y,r=this._center.z,s=this._normal.x,o=this._normal.y,a=this._normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value),u=c.value==null?"":String(c.value);switch(l){case 1:this._textString=u;break;case 2:this._fontName=u;break;case 3:this._bigFontName=u;break;case 7:this._styleName=u;break;case 10:e=h;break;case 20:i=h;break;case 30:r=h;break;case 40:this._radius=h;break;case 41:this._xScale=h;break;case 42:this._textSize=h;break;case 43:this._characterSpacing=h;break;case 44:this._offsetFromArc=h;break;case 45:this._rightOffset=h;break;case 46:this._leftOffset=h;break;case 50:this._startAngle=h;break;case 51:this._endAngle=h;break;case 70:this._isReverse=h!==0;break;case 71:this._textDirection=h;break;case 72:this._alignment=h;break;case 73:this._textPosition=h;break;case 74:this._isBold=h!==0;break;case 75:this._isItalic=h!==0;break;case 76:this._isUnderlined=h!==0;break;case 77:this._characterSet=h;break;case 78:this._pitchAndFamily=h;break;case 79:this._isShx=h!==0;break;case 90:this.applyRawTextColor(h);break;case 210:s=h;break;case 220:o=h;break;case 230:a=h;break;case 280:this._wizardFlag=h;break;case 330:this._arcId=u;break}}return this._center.set(e,i,r),this._normal.set(s,o,a),this}getTextStyle(){var r,s;const t=(s=(r=this.database)==null?void 0:r.tables)==null?void 0:s.textStyleTable,e=(t==null?void 0:t.resolveAt(this._styleName))??(t==null?void 0:t.resolveAt(ht)),i=e?{...e.textStyle}:{name:this._styleName||ht,standardFlag:0,fixedTextHeight:0,widthFactor:this._xScale>0?this._xScale:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:this._textSize,font:this._fontName||"txt",bigFont:this._bigFontName};return this._fontName&&(i.font=this._fontName),this._bigFontName&&(i.bigFont=this._bigFontName),this._xScale>0&&(i.widthFactor=this._xScale),i}isPlanarInWcs(){return Math.abs(this._normal.x)<1e-10&&Math.abs(this._normal.y)<1e-10&&this._normal.z>0}extrusionMatrix(){return this.isPlanarInWcs()?new F:new F().setFromExtrusionDirection(this._normal)}rotationInWcs(t,e){if(this.isPlanarInWcs())return t;const i=new A(Math.cos(t),Math.sin(t),0);return i.transformDirection(e),Math.atan2(i.y,i.x)}};al.typeName="ArcAlignedText";let cs=al;function H1(n,t=0){return G1(n,t)}var Cg=(n=>(n[n.LEFT=0]="LEFT",n[n.CENTER=1]="CENTER",n[n.RIGHT=2]="RIGHT",n[n.ALIGNED=3]="ALIGNED",n[n.MIDDLE=4]="MIDDLE",n[n.FIT=5]="FIT",n))(Cg||{}),Og=(n=>(n[n.BASELINE=0]="BASELINE",n[n.BOTTOM=1]="BOTTOM",n[n.MIDDLE=2]="MIDDLE",n[n.TOP=3]="TOP",n))(Og||{});const cl=class cl extends nt{constructor(){super(),this._hasAlignmentPoint=!1,this._generationFlag=0,this._normal=new A(0,0,1),this._textString="",this._height=0,this._thickness=1,this._position=new x,this._alignmentPoint=new x,this._rotation=0,this._oblique=0,this._horizontalMode=0,this._verticalModel=2,this._styleName="",this._widthFactor=1}get dxfTypeName(){return"TEXT"}get textString(){return this._textString}set textString(t){this._textString=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get height(){return this._height}set height(t){this._height=t}get position(){return this._position}set position(t){this._position.copy(t)}get alignmentPoint(){return this._alignmentPoint}set alignmentPoint(t){this._alignmentPoint.copy(t),this._hasAlignmentPoint=!0}get hasAlignmentPoint(){return this._hasAlignmentPoint}set hasAlignmentPoint(t){this._hasAlignmentPoint=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}get horizontalMode(){return this._horizontalMode}set horizontalMode(t){this._horizontalMode=t}get verticalMode(){return this._verticalModel}set verticalMode(t){this._verticalModel=t}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get widthFactor(){return this._widthFactor}set widthFactor(t){this._widthFactor=t}get generationFlag(){return this._generationFlag}set generationFlag(t){this._generationFlag=t}get isBackward(){return(this._generationFlag&2)!==0}set isBackward(t){this._generationFlag=t?this._generationFlag|2:this._generationFlag&-3}get isUpsideDown(){return(this._generationFlag&4)!==0}set isUpsideDown(t){this._generationFlag=t?this._generationFlag|4:this._generationFlag&-5}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get geometricExtents(){const t=new j,{anchor:e,attachmentPoint:i}=this.resolveTextAnchor(),r=this.extrusionDrawingAdjust(),s=Ve(this.textString,this.height,Math.abs(r.widthFactor));return Eg(t,e,s,this.height,i,r.rotation)}subGetGripPoints(){return[this.pointToWcs(this._position)]}subMoveGripPointsAt(t,e){const i=jt(e,this._normal);return Ee(t,i,this._position),this._alignmentPoint.add(i),this}subGetOsnapPoints(t,e,i,r){I.Insertion===t&&r.push(this.pointToWcs(this._position))}transformBy(t){const e=this._position.clone(),i=this._position.clone().add(new A(Math.cos(this._rotation),Math.sin(this._rotation),0)),r=this._position.clone().add(new A(-Math.sin(this._rotation),Math.cos(this._rotation),0)),s=this._position.clone().add(new A(0,0,1));e.applyMatrix4(t),i.applyMatrix4(t),r.applyMatrix4(t),s.applyMatrix4(t);const o=new A(i).sub(e),a=new A(r).sub(e),c=new A(s).sub(e),l=a.length(),h=o.length(),u=c.length();this._position.copy(e),h>0&&(this._rotation=Math.atan2(o.y,o.x)),l>0&&(this._height*=l,h>0&&(this._widthFactor*=h/l)),u>0&&(this._thickness*=u);const d=this._alignmentPoint.clone();return d.applyMatrix4(t),this._alignmentPoint.copy(d),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.textString,set:t=>{this.textString=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"widthFactor",type:"float",editable:!0,accessor:{get:()=>this.widthFactor,set:t=>{this.widthFactor=t}}},{name:"oblique",type:"float",editable:!0,accessor:{get:()=>this.oblique,set:t=>{this.oblique=t}}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.styleName);if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}subWorldDraw(t,e){const{anchor:i,attachmentPoint:r}=this.resolveTextAnchor(),s=this.extrusionDrawingAdjust(),o={text:this.textString,height:this.height,width:1/0,widthFactor:s.widthFactor,position:i,rotation:s.rotation,drawingDirection:exports.AcGiMTextFlowDirection.BOTTOM_TO_TOP,attachmentPoint:r};return t.mtext(o,this.getTextStyle(),e)}pointToWcs(t){return te(t,this._normal)}extrusionDrawingAdjust(){if(this._normal.x===0&&this._normal.y===0&&this._normal.z===1)return{rotation:this._rotation,widthFactor:this._widthFactor};if(this._normal.x===0&&this._normal.y===0&&this._normal.z<0)return{rotation:-this._rotation,widthFactor:-this._widthFactor};const t=new A(Math.cos(this._rotation),Math.sin(this._rotation),0);return t.transformDirection(new F().setFromExtrusionDirection(this._normal)),{rotation:Math.atan2(t.y,t.x),widthFactor:this._widthFactor}}resolveTextAnchor(){const t=this.resolveAttachmentPoint();if(t===exports.AcGiMTextAttachmentPoint.BaselineLeft)return{anchor:this.pointToWcs(this._position),attachmentPoint:t};const e=this._alignmentPoint;return!this._hasAlignmentPoint||e.x===0&&e.y===0&&e.z===0?{anchor:this.pointToWcs(this._position),attachmentPoint:exports.AcGiMTextAttachmentPoint.BaselineLeft}:{anchor:this.pointToWcs(e),attachmentPoint:t}}resolveAttachmentPoint(){const t=this._horizontalMode,e=this._verticalModel;if(t===4)return exports.AcGiMTextAttachmentPoint.MiddleCenter;if(t===3||t===5)return exports.AcGiMTextAttachmentPoint.BaselineLeft;switch(e){case 3:return t===1?exports.AcGiMTextAttachmentPoint.TopCenter:t===2?exports.AcGiMTextAttachmentPoint.TopRight:exports.AcGiMTextAttachmentPoint.TopLeft;case 2:return t===1?exports.AcGiMTextAttachmentPoint.MiddleCenter:t===2?exports.AcGiMTextAttachmentPoint.MiddleRight:exports.AcGiMTextAttachmentPoint.MiddleLeft;case 1:return t===1?exports.AcGiMTextAttachmentPoint.BottomCenter:t===2?exports.AcGiMTextAttachmentPoint.BottomRight:exports.AcGiMTextAttachmentPoint.BottomLeft;case 0:default:return t===1?exports.AcGiMTextAttachmentPoint.BaselineCenter:t===2?exports.AcGiMTextAttachmentPoint.BaselineRight:exports.AcGiMTextAttachmentPoint.BaselineLeft}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbText"),t.writePoint3d(10,this.position),t.writeDouble(39,this.thickness),t.writeDouble(40,this.height),t.writeString(1,this.textString),t.writeAngle(50,this.rotation),t.writeDouble(41,this.widthFactor),t.writeAngle(51,this.oblique),t.writeString(7,this.styleName),this.generationFlag!==0&&t.writeInt16(71,this.generationFlag),t.writeInt16(72,this.horizontalMode),t.writeInt16(73,this.verticalMode),t.writePoint3d(11,this.alignmentPoint),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbText");let e=this.position.x,i=this.position.y,r=this.position.z,s=this.alignmentPoint.x,o=this.alignmentPoint.y,a=this.alignmentPoint.z,c=!1,l=this.normal.x,h=this.normal.y,u=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const d=t.readItem();if(!d)break;const g=Number(d.code),f=Number(d.value);switch(g){case 10:e=f;break;case 20:i=f;break;case 30:r=f;break;case 11:s=f,c=!0;break;case 21:o=f,c=!0;break;case 31:a=f,c=!0;break;case 1:this.textString=String(d.value);break;case 7:this.styleName=String(d.value);break;case 39:this.thickness=f;break;case 40:this.height=f;break;case 41:this.widthFactor=f;break;case 50:this.rotation=C.degToRad(f);break;case 51:this.oblique=C.degToRad(f);break;case 71:this.generationFlag=f;break;case 72:this.horizontalMode=f;break;case 73:this.verticalMode=f;break;case 210:l=f;break;case 220:h=f;break;case 230:u=f;break;case 100:{if(String(d.value)==="AcDbText")break;return t.pushBackItem(d),this.finishTextDxfIn(e,i,r,s,o,a,c,l,h,u),this}}}return this.finishTextDxfIn(e,i,r,s,o,a,c,l,h,u),this}finishTextDxfIn(t,e,i,r,s,o,a,c,l,h){this.position=new x(t,e,i),a&&!(r===0&&s===0&&o===0)?(this.alignmentPoint=new x(r,s,o),this._hasAlignmentPoint=!0):(this.alignmentPoint=new x(t,e,i),this._hasAlignmentPoint=!1);const u=new A(c,l,h);u.lengthSq()>0&&this.normal.copy(u.normalize())}};cl.typeName="Text";let ri=cl;var St=(n=>(n[n.Invisible=1]="Invisible",n[n.Const=2]="Const",n[n.Verifiable=4]="Verifiable",n[n.Preset=8]="Preset",n))(St||{}),fe=(n=>(n[n.MultiLine=2]="MultiLine",n[n.ConstMultiLine=4]="ConstMultiLine",n))(fe||{});const ll=class ll extends ri{get dxfTypeName(){return"ATTDEF"}constructor(){super(),this._flags=0,this._prompt="",this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&1)!==0}set isInvisible(t){t?this._flags|=1:this._flags&=-2}get prompt(){return this._prompt}set prompt(t){this._prompt=t}get isConst(){return(this._flags&2)!==0}set isConst(t){t?this._flags|=2:this._flags&=-3}get isVerifiable(){return(this._flags&4)!==0}set isVerifiable(t){t?this._flags|=4:this._flags&=-5}get isPreset(){return(this._flags&8)!==0}set isPreset(t){t?this._flags|=8:this._flags&=-9}get isMTextAttribute(){return(this._mtextFlag&2)!==0}set isMTextAttribute(t){t?this._mtextFlag|=2:this._mtextFlag&=-3}get isConstMTextAttribute(){return(this._mtextFlag&4)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=4:this._mtextFlag&=-5}get tag(){return this._tag}set tag(t){this._tag=t}get fieldLength(){return this._fieldLength}set fieldLength(t){this._fieldLength=t}get lockPositionInBlock(){return this._lockPositionInBlock}set lockPositionInBlock(t){this._lockPositionInBlock=t}get isReallyLocked(){return this._isReallyLocked}set isReallyLocked(t){this._isReallyLocked=t}get mtext(){return this._mtext}set mtext(t){this._mtext=t,this.isMTextAttribute=t!=null}isLooseInDrawingSpace(){const t=this.database;if(!t)return!1;const e=this.getAttrWithoutException("ownerId");if(!e)return!1;const i=t.tables.blockTable.getIdAt(e);return i?i.isModelSapce||i.isPaperSapce:!1}resolveDisplayText(){if(!this.isInvisible){if(this.isLooseInDrawingSpace())return this.tag||this.textString;if(this.isConst||this.isConstMTextAttribute)return this.textString}}subWorldDraw(t,e){const i=this.resolveDisplayText();if(i===void 0)return;if(i===this.textString)return super.subWorldDraw(t,e);const r=this.textString;this.textString=i;try{return super.subWorldDraw(t,e)}finally{this.textString=r}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAttributeDefinition"),t.writeString(3,this.prompt),t.writeString(2,this.tag),t.writeInt16(70,this._flags),t.writeInt16(73,this.fieldLength),t.writeInt16(74,this.lockPositionInBlock?1:0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbAttributeDefinition");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const i=Number(e.code);if(i===100){if(String(e.value)==="AcDbAttributeDefinition")continue;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData&&t.readItem(););break}const r=Number(e.value);switch(i){case 2:this.tag=String(e.value);break;case 3:this.prompt=String(e.value);break;case 70:this.isInvisible=(r&1)!==0,this.isConst=(r&2)!==0,this.isVerifiable=(r&4)!==0,this.isPreset=(r&8)!==0;break;case 71:this.isMTextAttribute=(r&2)!==0,this.isConstMTextAttribute=(r&4)!==0;break;case 73:this.fieldLength=r;break;case 74:this.verticalMode=r;break;case 280:this.lockPositionInBlock=r!==0;break}}return this}};ll.typeName="AttDef";let ls=ll;function W1(n){return n!=null&&typeof n=="object"&&"blockTableRecord"in n}const hl=class hl extends ri{get dxfTypeName(){return"ATTRIB"}get resolvedColor(){var t;if(this.color.isByBlock){const e=(t=this.database)==null?void 0:t.tables.blockTable.getEntityById(this.ownerId);if(W1(e))return e.resolvedColor}return this.resolveStandardColor()}constructor(){super(),this._flags=0,this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&St.Invisible)!==0}set isInvisible(t){t?this._flags|=St.Invisible:this._flags&=~St.Invisible}get isConst(){return(this._flags&St.Const)!==0}set isConst(t){t?this._flags|=St.Const:this._flags&=~St.Const}get isVerifiable(){return(this._flags&St.Verifiable)!==0}set isVerifiable(t){t?this._flags|=St.Verifiable:this._flags&=~St.Verifiable}get isPreset(){return(this._flags&St.Preset)!==0}set isPreset(t){t?this._flags|=St.Preset:this._flags&=~St.Preset}get isMTextAttribute(){return(this._mtextFlag&fe.MultiLine)!==0}set isMTextAttribute(t){t?this._mtextFlag|=fe.MultiLine:this._mtextFlag&=~fe.MultiLine}get isConstMTextAttribute(){return(this._mtextFlag&fe.ConstMultiLine)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=fe.ConstMultiLine:this._mtextFlag&=~fe.ConstMultiLine}get tag(){return this._tag}set tag(t){this._tag=t}get fieldLength(){return this._fieldLength}set fieldLength(t){this._fieldLength=t}get lockPositionInBlock(){return this._lockPositionInBlock}set lockPositionInBlock(t){this._lockPositionInBlock=t}get isReallyLocked(){return this._isReallyLocked}set isReallyLocked(t){this._isReallyLocked=t}get mtext(){return this._mtext}set mtext(t){this._mtext=t,this.isMTextAttribute=t!=null}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAttribute"),t.writeInt16(70,this.isInvisible?1:0),t.writeInt16(73,this.fieldLength),t.writeString(2,this.tag),t.writeInt16(74,this.isReallyLocked?1:0),this.mtext&&t.writeInt16(71,this.isMTextAttribute?1:0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbAttribute");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const i=Number(e.code);if(i===100){if(String(e.value)==="AcDbAttribute")continue;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData&&t.readItem(););break}const r=Number(e.value);switch(i){case 2:this.tag=String(e.value);break;case 70:this.isInvisible=(r&St.Invisible)!==0,this.isConst=(r&St.Const)!==0,this.isVerifiable=(r&St.Verifiable)!==0,this.isPreset=(r&St.Preset)!==0;break;case 71:this.isMTextAttribute=(r&fe.MultiLine)!==0,this.isConstMTextAttribute=(r&fe.ConstMultiLine)!==0;break;case 73:this.fieldLength=r;break;case 74:this.verticalMode=r;break;case 280:this.lockPositionInBlock=r!==0;break}}return this}};hl.typeName="Attrib";let Gi=hl;const $1=()=>({hits:0,misses:0,hitMs:0,missBuildMs:0,missCompactMs:0,cloneMs:0,setCloneMs:0,applyMs:0}),Eh=()=>({hits:0,misses:0,hitMs:0,missBuildMs:0,missCompactMs:0,cloneMs:0,setCloneMs:0,applyMs:0,topLevel:$1(),blockMisses:[]}),at=class at{constructor(){this._lruTotalBytes=0,this._retiredCompactedTemplates=[],this._blocks=new Map,this._lruBytes=new Map}static get profileStats(){return this._profileStats}static resetProfile(){this._profileStats=Eh(),this._drawDepth=0}static get instance(){return this._instance||(this._instance=new at),this._instance}createKey(t,e){let i=e.toString();return!i&&e.isByColor&&(i=`RGB:${e.red},${e.green},${e.blue}`),`${t}_${i}`}createCacheKey(t,e,i){return i?this.createKey(t,e):t}set(t,e){if(this._blocks.set(t,e),at.lruEnabled){const i=this._lruBytes.get(t)??0,r=this.estimateTemplateBytes(e);this._lruBytes.set(t,r),this._lruTotalBytes+=r-i,this.enforceLruBudget()}return e}enforceLruBudget(){const t=at.lruMaxEntries;for(;t>0&&this._blocks.size>t;)this.evictOldest();const e=at.lruMaxEstimatedBytes;for(;e>0&&this._lruTotalBytes>e&&this._blocks.size>1;)this.evictOldest()}evictOldest(){var r;const t=this._blocks.keys().next();if(t.done||t.value===void 0)return;const e=t.value,i=this._blocks.get(e);this._blocks.delete(e),this._lruTotalBytes-=this._lruBytes.get(e)??0,this._lruBytes.delete(e),i&&(Th(i)?this._retiredCompactedTemplates.push(i):(r=i.dispose)==null||r.call(i))}estimateTemplateBytes(t){var r,s;let e=0;const i=[t];for(;i.length>0;){const o=i.pop();if(o==null)continue;if(o.geometry){const c=o.geometry.attributes;if(c)for(const h in c){const u=(r=c[h])==null?void 0:r.array;u&&(e+=u.byteLength)}const l=(s=o.geometry.index)==null?void 0:s.array;l&&(e+=l.byteLength)}const a=o.children;if(a)for(let c=0;c<a.length;c++)i.push(a[c])}return e}peek(t){return this._blocks.get(t)}get(t){const e=this._blocks.get(t);if(!e)return;if(at.lruEnabled&&(this._blocks.delete(t),this._blocks.set(t,e)),at.profiling){const r=performance.now();if(this.maybeCompactTemplate(e,!0)){const l=performance.now()-r;at._profileStats.missCompactMs+=l,at._drawDepth===1&&(at._profileStats.topLevel.missCompactMs+=l)}const o=performance.now(),a=e.fastDeepClone(),c=performance.now()-o;return at._profileStats.cloneMs+=c,at._drawDepth===1&&(at._profileStats.topLevel.cloneMs+=c),Wo(a,t),a}this.maybeCompactTemplate(e,!0);const i=e.fastDeepClone();return Wo(i,t),i}has(t){return this._blocks.has(t)}clear(){var t;this._blocks.forEach(e=>{var i;(i=e.dispose)==null||i.call(e)}),this._blocks.clear(),this._lruBytes.clear(),this._lruTotalBytes=0,this._retiredCompactedTemplates.forEach(e=>{var i;(i=e.dispose)==null||i.call(e)}),this._retiredCompactedTemplates.length=0,(t=at.onCleared)==null||t.call(at)}async prebuildAll(t,e,i){const r=[];for(const l of e)!l||!l.name||this.shouldSkipPrebuild(l)||r.push(l);const s=r.length;let o=0;const a=new G().setForeground(),c=new ro;for(const l of r){const h=this.createCacheKey(l.name,a,!1);this.has(h)||this.draw(t,l,a,[],!0),o++,i&&await i(o,s,l.name),await c.maybeYield(ui)}}draw(t,e,i,r=[],s=!0,o,a){const c=at.profiling;c&&at._drawDepth++;const l=c&&at._drawDepth===1,h=at._profileStats,u=[];try{if(e!=null){const d=i.RGB??0,g=e.name;let f;if(g&&this.has(g))f=g;else if(g){const y=this.createKey(g,i);this.has(y)&&(f=y)}let p;if(f!==void 0){const y=c?performance.now():0;if(p=this.get(f),c){const b=performance.now()-y;h.hits++,h.hitMs+=b,l&&(h.topLevel.hits++,h.topLevel.hitMs+=b)}}else{const y=c?performance.now():0;let b=!1;const _=e.newIterator();for(const k of _)if(k.visibility)if(k.color.isByBlock){b=!0;const L=e_(k.color);try{i.isForeground?k.color.setForeground():k.color.setRGBValue(d),this.addEntity(k,u,t)}finally{k.color.copy(L),n_(L)}}else this.addEntity(k,u,t);p=t.group(u);let w=0;c&&(w=performance.now()-y,h.missBuildMs+=w,l&&(h.topLevel.missBuildMs+=w));let S=0;const P=!!s&&!!g&&!g.startsWith("*U");if(p&&P){const k=c?performance.now():0,L=this.maybeCompactTemplate(p,!1);c&&L&&(S=performance.now()-k,h.missCompactMs+=S,l&&(h.topLevel.missCompactMs+=S))}f=this.createCacheKey(g,i,b);const v=c?h.setCloneMs:0;if(p&&P){if(t_(p),this.set(f,p),c){const k=performance.now();p=p.fastDeepClone();const L=performance.now()-k;h.setCloneMs+=L,l&&(h.topLevel.setCloneMs+=L)}else p=p.fastDeepClone();Wo(p,f)}c&&(h.misses++,l&&h.topLevel.misses++,h.blockMisses.push({blockName:g||"(unnamed)",buildMs:w,compactMs:S,setCloneMs:h.setCloneMs-v}))}const m=c?performance.now():0;if(p&&o&&(Ar.copy(o),p.applyMatrix(Ar),a&&(a.x!=0||a.y!=0||a.z!=1)&&(Ho.setFromExtrusionDirection(a),p.applyMatrix(Ho),Ar.premultiply(Ho))),p&&r&&r.length>0){const y=o!=null?q1.copy(Ar).invert():void 0;r.forEach(b=>{y&&b.applyMatrix(y),p.addChild(b)})}if(c){const y=performance.now()-m;h.applyMs+=y,l&&(h.topLevel.applyMs+=y)}return p}else return t.group(u)}finally{c&&at._drawDepth--}}shouldSkipPrebuild(t){const e=t.name;if(ut.isModelSapceName(e)||ut.isPaperSapceName(e)||e.startsWith("*U")||this.blockHasByBlockColor(t))return!0;for(const i of t.newIterator())if(i.visibility)return!1;return!0}blockHasByBlockColor(t){for(const e of t.newIterator())if(e.visibility&&e.color.isByBlock)return!0;return!1}addEntity(t,e,i){if(!t.visibility)return;const r=t.worldDraw(i);r&&(this.attachEntityInfo(r,t),e.push(r))}attachEntityInfo(t,e){t.objectId=e.objectId,t.ownerId=e.ownerId,t.layerName=e.layer,t.visible=e.visibility}maybeCompactTemplate(t,e){return!t.compactForInstancing||Th(t)||!J1(t,e)?!1:(t.compactForInstancing(),!0)}};at.profiling=!1,at.lruEnabled=!0,at.lruMaxEntries=512,at.lruMaxEstimatedBytes=64*1024*1024,at._profileStats=Eh(),at._drawDepth=0;let xn=at;const Ar=new F,Ho=new F,q1=new F,K1=8,Z1=32,Rg=[];function Q1(n){const t=n.childCount;return typeof t=="number"?t:Number.POSITIVE_INFINITY}function Th(n){return n.isCompacted===!0}function J1(n,t){const e=Q1(n);return e<K1?!1:e>=Z1?!0:t}function t_(n){const t=n.prepareCacheTemplate;typeof t=="function"&&t.call(n)}function Wo(n,t){const e=n.userData;e.blockCacheKey=t}function e_(n){const t=Rg.pop()??new G;return t.copy(n),t}function n_(n){Rg.push(n)}const Li="AcDbBlockRepresentation",Dc="AcDbRepData",si="ACAD_ENHANCEDBLOCK",Fc="AcDbBlockRepBTag",i_="AcDbBlockRepETag",r_="AcDbDynamicBlockTrueName",s_="AcDbDynamicBlockGUID";function hs(n){return n?n.trim().toUpperCase().startsWith("*U"):!1}class Ma extends At{constructor(){super(...arguments),this._blockId=""}get blockId(){return this._blockId}set blockId(t){this._blockId=t??""}dxfOutFields(t){return super.dxfOutFields(t),t.writeObjectId(340,this._blockId),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbBlockRepresentationData");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const i=Number(e.code);if(i===100){t.pushBackItem(e);break}i===340&&(this._blockId=String(e.value??""))}return this}}class dt extends At{constructor(t){super(),this.database=t,this.objectId=t.generateHandle(),this._recordsByName=new Map}get numEntries(){return this._recordsByName.size}setAt(t,e){const i=this.database.transactionManager;if(i.strictMode&&!i.isRecording()&&!i.isApplyingUndoRedo())throw new Error("Cannot modify dictionary entries outside an active transaction.");const r=this.getAt(t);r&&(i.isRecording()&&i.recordRemove({type:"dictionary",dictionaryId:this.objectId,key:t},r),this.database.releaseObjectHandle(r)),e.database=this.database,this.database.commitObjectHandle(e,s=>this.hasId(s)),e.ownerId=this.objectId,this._recordsByName.set(t,e),i.isRecording()&&i.recordAppend({type:"dictionary",dictionaryId:this.objectId,key:t},e),!i.isRecording()&&!i.isApplyingUndoRedo()&&this.database.notifyDictObjectSet(e,t)}remove(t){const e=this.getAt(t);return e?(this.removeStoredObject(e,t),!0):!1}removeId(t){const e=this.getIdAt(t);if(e){let i="";return this._recordsByName.forEach((r,s)=>{r===e&&(i=s)}),this.removeStoredObject(e,i),!0}return!1}removeStoredObject(t,e){const i=this.database.transactionManager;if(i.strictMode&&!i.isRecording()&&!i.isApplyingUndoRedo())throw new Error("Cannot remove dictionary entries outside an active transaction.");i.isRecording()&&i.recordRemove({type:"dictionary",dictionaryId:this.objectId,key:e},t),this._recordsByName.forEach((r,s)=>{r===t&&this._recordsByName.delete(s)}),this.database.releaseObjectHandle(t),e&&!i.isRecording()&&!i.isApplyingUndoRedo()&&this.database.notifyDictObjectErased(t,e)}removeAll(){this._recordsByName.forEach((t,e)=>{this.database.releaseObjectHandle(t),this.database.events.dictObjectErased.dispatch({database:this.database,object:t,key:e})}),this._recordsByName.clear()}has(t){return this._recordsByName.has(t.toUpperCase())}hasId(t){return this.getIdAt(t)!==void 0}getAt(t){return this._recordsByName.get(t)}getIdAt(t){const e=this.database.getObjectById(t);if(!(!e||e.getAttrWithoutException("ownerId")!==this.objectId))return e}newIterator(){return new ni(this._recordsByName)}entries(){return this._recordsByName.entries()}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbDictionary"),t.writeInt16(280,1),t.writeInt16(281,1);for(const[e,i]of this._recordsByName)t.writeString(3,e),t.writeObjectId(350,i.objectId);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbDictionary");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;if(Number(e.code)===100){t.pushBackItem(e);break}}return this}}class oi{constructor(t){typeof t=="string"?(this._blockRefId=t,this._blockRef=void 0):(this._blockRef=t,this._blockRefId=t.objectId)}static isDynamicBlock(t,e){return new oi(t).isDynamicBlock(e)}static drawableBlockTableRecord(t){const e=new oi(t);if(e.isDynamicBlock()){const i=e.anonymousBlockTableRecord();if(i&&t.database){const r=t.database.tables.blockTable.getIdAt(i);if(r)return r;const s=t.database.getObjectById(i);if(s instanceof ut)return s}}return t.blockTableRecord}blockId(){return this._blockRefId}isDynamicBlock(t){const e=this.resolveBlockRef(t);if(!e)return!1;if(this.getRepresentationData(e)||this.hasRepresentationDictionary(e))return!0;const i=e.blockTableRecord;return i?!!(this.getDynamicDefinitionIdFromBTag(i)||this.blockTableRecordIsEnhanced(i)):!1}anonymousBlockTableRecord(t){const e=this.resolveBlockRef(t);if(!e||!this.isDynamicBlock(t))return;const i=e.blockTableRecord;if(i&&(hs(i.name)||this.getDynamicDefinitionIdFromBTag(i)!=null))return i.objectId}dynamicBlockTableRecord(t){var o;const e=this.resolveBlockRef(t);if(!e)return;const i=(o=this.getRepresentationData(e))==null?void 0:o.blockId;if(i)return i;const r=e.blockTableRecord;if(!r)return;const s=this.getDynamicDefinitionIdFromBTag(r);if(s)return s;if(this.blockTableRecordIsEnhanced(r))return r.objectId}resolveBlockRef(t){if(this._blockRef)return this._blockRef;const e=t??this.guessDatabase();if(!e)return;const i=e.getObjectById(this._blockRefId);return i instanceof ne?i:void 0}guessDatabase(){var t;return(t=this._blockRef)==null?void 0:t.database}getExtensionDictionary(t){const e=t.extensionDictionary;if(!e||!t.database)return;const i=t.database.getObjectById(e);return i instanceof dt?i:void 0}hasRepresentationDictionary(t){const e=this.getExtensionDictionary(t);return e?e.getAt(Li)!=null||e.has(Li):!1}getRepresentationData(t){const e=this.getExtensionDictionary(t);if(!e)return;const i=e.getAt(Li),r=i instanceof dt?i:this.asDictionary(i);if(!r)return;const s=r.getAt(Dc);if(s instanceof Ma)return s}asDictionary(t){if(!t)return;if(t instanceof dt)return t;if(!t.database)return;const e=t.database.getObjectById(t.objectId);return e instanceof dt?e:void 0}getDynamicDefinitionIdFromBTag(t){const e=t.getXData(Fc);if(e){for(const i of e)if(Number(i.code)===Me.ExtendedDataHandle){const r=String(i.value??"").trim();if(r)return r.toUpperCase()}}}blockTableRecordIsEnhanced(t){const e=this.getExtensionDictionary(t);return e?e.getAt(si)!=null||e.has(si):!1}}const o_=1e-10;function Wt(n,t,e){const i=t?n.length:n.length-1;if(i<1||n.length<2)return[];const r=[];for(let s=0;s<i;s++){const o=n[s],a=n[(s+1)%n.length];if(xo(o,a))continue;const c=!t&&(s===0||s===i-1);r.push({kind:"line",line:new Ct(o,a),extent:"bounded",extendable:e??c})}return r}function Xc(n,t,e,i){const r=t?n.length:n.length-1;if(r<1||n.length<2)return[];const s=[];for(let o=0;o<r;o++){const a=n[o],c=n[(o+1)%n.length],h=!t&&(o===0||o===r-1),u=a.bulge??0;if(Math.abs(u)>o_){const f=Bg(new Z(a,c,u),e,i,h);f&&s.push(f);continue}const d=Xe(a.x,a.y,e,i),g=Xe(c.x,c.y,e,i);xo(d,g)||s.push({kind:"line",line:new Ct(d,g),extent:"bounded",extendable:h})}return s}function a_(n,t,e){const i=[];for(const r of n){if(r instanceof rt){i.push(...Xc(r.vertices,r.closed,t,e));continue}if(r instanceof Un)for(const s of r.curves){const o=c_(s,t,e);o&&i.push(...o)}}return i}function Ng(n,t){return n.map(e=>Py(e,t))}function c_(n,t,e){if(n instanceof Vt){const i=Xe(n.startPoint.x,n.startPoint.y,t,e),r=Xe(n.endPoint.x,n.endPoint.y,t,e);return xo(i,r)?[]:[{kind:"line",line:new Ct(i,r),extent:"bounded",extendable:!1}]}if(n instanceof Z){const i=Bg(n,t,e,!1);return i?[i]:[]}if(n instanceof Ce){const i=l_(n,t,e,!1);return i?[i]:[]}if(n instanceof Nt){const i=n.clone(),r=h_(t,e);return r&&i.transform(r),[{kind:"spline",spline:i,extendable:!1}]}return[]}function Bg(n,t,e,i){if(n.closed||Math.abs(n.deltaAngle-X)<1e-10){const c=Xe(n.center.x,n.center.y,t,e);return{kind:"circArc",arc:new pt(c,n.radius,0,X,e,Kn(e)),extendable:!1}}const r=Xe(n.startPoint.x,n.startPoint.y,t,e),s=Xe(n.endPoint.x,n.endPoint.y,t,e),o=Xe(n.midPoint.x,n.midPoint.y,t,e),a=pt.tryCreateByThreePoints(r,s,o);return a?{kind:"circArc",arc:a,extendable:i&&!a.closed}:xo(r,s)?null:{kind:"line",line:new Ct(r,s),extent:"bounded",extendable:i}}function l_(n,t,e,i){const r=Xe(n.center.x,n.center.y,t,e),s=new F().setFromExtrusionDirection(new A(e.x,e.y,e.z)),o=new A(Math.cos(n.rotation),Math.sin(n.rotation),0).transformDirection(s);if(o.lengthSq()===0)return null;const a=n.clockwise?n.endAngle:n.startAngle,c=n.clockwise?n.startAngle:n.endAngle,l=new le(r,e,o,n.majorAxisRadius,n.minorAxisRadius,a,c);return{kind:"ellipseArc",arc:l,extendable:i&&!l.closed&&Math.abs(l.deltaAngle-X)>1e-10}}function Xe(n,t,e,i){return te({x:n,y:t,z:e},i)}function h_(n,t){if(Math.abs(t.x)<1e-10&&Math.abs(t.y)<1e-10&&Math.abs(t.z-1)<1e-10&&Math.abs(n)<1e-10)return null;const i=new F().setFromExtrusionDirection(new A(t.x,t.y,t.z));return Math.abs(n)<1e-10?i:i.multiply(new F().makeTranslation(0,0,n))}function xo(n,t){const e=n.x-t.x,i=n.y-t.y,r=(n.z??0)-(t.z??0);return e*e+i*i+r*r<1e-20}const Xn=class Xn extends nt{constructor(t){super(),this._columnCount=1,this._rowCount=1,this._columnSpacing=0,this._rowSpacing=0,this._blockName=t??"",this._position=new x,this._rotation=0,this._normal=new A(0,0,1),this._scaleFactors=new x(1,1,1),this._attribs=new Map}get dxfTypeName(){return"INSERT"}get position(){return this._position}set position(t){this._position.copy(t)}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get scaleFactors(){return this._scaleFactors}set scaleFactors(t){this._scaleFactors.copy(t)}get normal(){return this._normal}set normal(t){this._normal.copy(t).normalize()}get blockName(){return this._blockName}set blockName(t){this._blockName=t}get columnCount(){return this._columnCount}set columnCount(t){this._columnCount=Math.max(1,Math.floor(t)||1)}get rowCount(){return this._rowCount}set rowCount(t){this._rowCount=Math.max(1,Math.floor(t)||1)}get columnSpacing(){return this._columnSpacing}set columnSpacing(t){this._columnSpacing=t}get rowSpacing(){return this._rowSpacing}set rowSpacing(t){this._rowSpacing=t}get blockTableRecord(){if(this._blockName)return this.database.tables.blockTable.getAt(this._blockName)}get drawableBlockTableRecord(){return oi.drawableBlockTableRecord(this)}appendAttributes(t){this._attribs.set(t.objectId,t),t.ownerId=this.objectId,this.syncAttributeDatabases()}syncAttributeDatabases(){try{const t=this.database,e=new Map;this._attribs.forEach(i=>{i.database=t,t.commitObjectHandle(i),i.ownerId=this.objectId,e.set(i.objectId,i)}),this._attribs=e}catch{}}attributeIterator(){return new ni(this._attribs)}get blockTransform(){const t=this.drawableBlockTableRecord,e=(t==null?void 0:t.origin)??x.ORIGIN,i=new F().makeTranslation(-e.x,-e.y,-e.z),r=new F().makeScale(this._scaleFactors.x,this._scaleFactors.y,this._scaleFactors.z),s=new qn().setFromAxisAngle(A.Z_AXIS,this._rotation),o=new F().makeRotationFromQuaternion(s),a=new F().makeTranslation(this._position.x,this._position.y,0);return new F().multiplyMatrices(a,o).multiply(r).multiply(i)}subGetGripPoints(){return[this._position]}subMoveGripPointsAt(t,e){return Ee(t,e,this._position),this}subGetOsnapPoints(t,e,i,r,s,o){const a=o??new F;I.Insertion===t?r.push(this.getInsertionPoint(a)):s?this.subEntityGetOsnapPoints(t,e,i,r,s,a):this.collectBlockOsnapPoints(t,e,i,r,a)}transformBy(t){const e=new F().setFromExtrusionDirection(this._normal),i=new F().makeRotationZ(this._rotation),r=new F().multiplyMatrices(e,i),s=this._position.clone(),o=new x(this._scaleFactors.x,0,0).applyMatrix4(r).add(s),a=new x(0,this._scaleFactors.y,0).applyMatrix4(r).add(s),c=new x(0,0,this._scaleFactors.z).applyMatrix4(r).add(s);s.applyMatrix4(t),o.applyMatrix4(t),a.applyMatrix4(t),c.applyMatrix4(t);const l=new A(o).sub(s),h=new A(a).sub(s),u=new A(c).sub(s);let d=new A().crossVectors(l,h);d.lengthSq()===0?d=this._normal.clone().transformDirection(t):d.normalize();const f=new F().setFromExtrusionDirection(d).clone().invert(),p=l.clone().applyMatrix4(f);return this._position.copy(s),this._normal.copy(d),this._rotation=Math.atan2(p.y,p.x),this._scaleFactors.set(l.length(),h.length(),u.length()),this._attribs.forEach(m=>m.transformBy(t)),this}get properties(){const t={type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"blockName",type:"float",editable:!1,accessor:{get:()=>this._blockName}},{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:e=>{this.position.x=e}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:e=>{this.position.y=e}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:e=>{this.position.z=e}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:e=>{this.rotation=e}}},{name:"scaleFactorsX",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.x,set:e=>{this.scaleFactors.x=e}}},{name:"scaleFactorsY",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.y,set:e=>{this.scaleFactors.y=e}}},{name:"scaleFactorsZ",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.z,set:e=>{this.scaleFactors.z=e}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:e=>{this.normal.x=e}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:e=>{this.normal.y=e}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:e=>{this.normal.z=e}}}]}]};if(this._attribs.size>0){const e={groupName:"attribute",properties:[]};t.groups.push(e),this._attribs.forEach(i=>{e.properties.push({name:i.tag,type:"string",editable:!i.isConst,skipTranslation:!0,accessor:{get:()=>i.textString,set:r=>{i.textString=r}}})})}return t}get geometricExtents(){const t=new j,e=this.drawableBlockTableRecord;if(e!=null){const r=e.newIterator();for(const s of r)t.union(s.geometricExtents)}const i=this.getFullInsertionTransform();return t.applyMatrix4(i),t}subGetIntersectCurves(){const t=this.drawableBlockTableRecord;if(t==null)return[];const e=[],i=Math.max(1,this.columnCount),r=Math.max(1,this.rowCount);for(let s=0;s<r;s++)for(let o=0;o<i;o++){const a=new F().makeTranslation(o*this.columnSpacing,s*this.rowSpacing,0),c=new F().multiplyMatrices(this.getFullInsertionTransform(),a);for(const l of t.newIterator())e.push(...Ng(l.subGetIntersectCurves(),c))}return e}subWorldDraw(t){const e=this.drawableBlockTableRecord;if(e!=null){const i=[];this._attribs.forEach(a=>{if(!a.isInvisible){const c=a.worldDraw(t);c&&i.push(c)}});const r=Math.max(1,this.columnCount),s=Math.max(1,this.rowCount);if(r===1&&s===1)return xn.instance.draw(t,e,this.resolvedColor,i,!0,this.blockTransform,this._normal);const o=[];for(let a=0;a<s;a++)for(let c=0;c<r;c++){const l=new F().makeTranslation(c*this.columnSpacing,a*this.rowSpacing,0),h=new F().multiplyMatrices(this.blockTransform,l),u=xn.instance.draw(t,e,this.resolvedColor,c===0&&a===0?i:[],!0,h,this._normal);u&&o.push(u)}return t.group(o)}else return t.group([])}dxfOut(t,e=!1){super.dxfOut(t,e);let i=!1;for(const r of this.attributeIterator())i=!0,t.writeStart("ATTRIB"),r.dxfOut(t,e);return i&&(t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity")),this}collectBlockOsnapPoints(t,e,i,r,s){const o=this.drawableBlockTableRecord;if(!o)return;const a=new F().multiplyMatrices(s,this.getFullInsertionTransform()),c=a.clone().invert(),l=new x(e).applyMatrix4(c),h=new x(i).applyMatrix4(c),u=[];for(const d of o.newIterator()){const g=[];if(d instanceof Xn){d.subGetOsnapPoints(t,e,i,g,void 0,a),u.push(...g);continue}d.subGetOsnapPoints(t,l,h,g,void 0,a),g.forEach(f=>u.push(new x(f).applyMatrix4(a)))}if(u.length!==0)if(t===I.Nearest||t===I.Perpendicular||t===I.Tangent){const d=oe(e,u);d&&r.push(d)}else r.push(...u)}subEntityGetOsnapPoints(t,e,i,r,s,o,a=new Set){if(s===this.objectId||a.has(this.objectId))return!1;a.add(this.objectId);try{const c=this.drawableBlockTableRecord;if(c==null)return!1;const l=new F().multiplyMatrices(o,this.getFullInsertionTransform());for(const h of c.newIterator()){if(h.objectId===s){const u=new x(e).applyMatrix4(l.clone().invert()),d=new x(i).applyMatrix4(l.clone().invert()),g=[];return h.subGetOsnapPoints(t,u,d,g,s,l),h instanceof Xn?g.forEach(f=>{r.push(f.clone())}):g.forEach(f=>{r.push(new x(f).applyMatrix4(l))}),!0}if(h instanceof Xn&&h.subEntityGetOsnapPoints(t,e,i,r,s,l,a))return!0}return!1}finally{a.delete(this.objectId)}}getInsertionPoint(t){var r;const e=((r=this.drawableBlockTableRecord)==null?void 0:r.origin)??x.ORIGIN,i=new F().multiplyMatrices(t,this.getFullInsertionTransform());return new x(e).applyMatrix4(i)}getFullInsertionTransform(){const t=new F().setFromExtrusionDirection(this._normal);return new F().multiplyMatrices(t,this.blockTransform)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbBlockReference"),t.writePoint3d(10,this.position),t.writeString(2,this.blockName),t.writeDouble(41,this.scaleFactors.x),t.writeDouble(42,this.scaleFactors.y),t.writeDouble(43,this.scaleFactors.z),t.writeAngle(50,this.rotation),this.columnCount>1&&t.writeInt16(70,this.columnCount),this.rowCount>1&&t.writeInt16(71,this.rowCount),this.columnSpacing!==0&&t.writeDouble(44,this.columnSpacing),this.rowSpacing!==0&&t.writeDouble(45,this.rowSpacing),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbBlockReference");let e=this.position.x,i=this.position.y,r=this.position.z,s=this.scaleFactors.x,o=this.scaleFactors.y,a=this.scaleFactors.z,c=C.radToDeg(this.rotation),l=this.normal.x,h=this.normal.y,u=this.normal.z,d=this.columnCount,g=this.rowCount,f=this.columnSpacing,p=this.rowSpacing;const m=()=>{this.position=new x(e,i,r),this.scaleFactors=new x(s,o,a),this.rotation=C.degToRad(c),this.normal.copy(new A(l,h,u)),this.columnCount=d>0?d:1,this.rowCount=g>0?g:1,this.columnSpacing=f,this.rowSpacing=p};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const y=t.readItem();if(!y)break;const b=Number(y.code),_=Number(y.value);switch(b){case 10:e=_;break;case 20:i=_;break;case 30:r=_;break;case 2:this.blockName=String(y.value);break;case 41:s=_;break;case 42:o=_;break;case 43:a=_;break;case 44:f=_;break;case 45:p=_;break;case 50:c=_;break;case 66:break;case 70:d=_;break;case 71:g=_;break;case 210:l=_;break;case 220:h=_;break;case 230:u=_;break;case 100:return t.pushBackItem(y),m(),this}}return m(),this}};Xn.typeName="BlockReference";let ne=Xn;const kn=new A,Lh=new A,Mh=new x,Ch=[0,Math.PI/2,Math.PI,Math.PI/2*3],Ks=class Ks extends Et{constructor(t,e,i=A.Z_AXIS){if(super(),this._geoData=null,this._thickness=0,t!==void 0&&e!==void 0){const r=Kn(i);this._geo=new pt(t,e,0,X,i,r)}}get dxfTypeName(){return"CIRCLE"}get _geo(){return this._geoData==null&&(this._geoData=new pt(new x,1,0,X,A.Z_AXIS,A.X_AXIS)),this._geoData}set _geo(t){this._geoData=t}get center(){return this._geo.center}set center(t){this._geo.center=t}get radius(){return this._geo.radius}set radius(t){this._geo.radius=t}get normal(){return this._geo.normal}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"circArc",arc:this._geo.clone(),extendable:!1}]}get closed(){return this._geo.closed}get area(){return this._geo.area}subGetOsnapPoints(t,e,i,r){switch(t){case I.Center:case I.Centroid:r.push(this._geo.center);break;case I.Quadrant:r.push(this._geo.getPointAtAngle(0)),r.push(this._geo.getPointAtAngle(Math.PI/2)),r.push(this._geo.getPointAtAngle(Math.PI)),r.push(this._geo.getPointAtAngle(Math.PI/2*3));break;case I.Nearest:{const s=this._geo.nearestPoint(e);r.push(s)}break;case I.Tangent:{const s=this._geo.tangentPoints(e);r.push(...s);break}case I.Perpendicular:{const s=this._geo.perpendicularPoints(e),o=oe(e,s);o&&r.push(o);break}}}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"radius",type:"float",editable:!0,accessor:{get:()=>this.radius,set:t=>{this.radius=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"diameter",type:"float",editable:!1,accessor:{get:()=>this._geo.radius*2}},{name:"perimeter",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}subGetGripPoints(){const t=new Array;t.push(this.center);for(const e of Ch)t.push(this._geo.getPointAtAngle(e));return t}subMoveGripPointsAt(t,e){return Pt(t,i=>{this.moveGripAt(i,e)}),this}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.circularArc(this._geo)}dxfOutFields(t){super.dxfOutFields(t);const e=jt(this.center,this.normal);return t.writeSubclassMarker("AcDbCircle"),t.writePoint3d(10,e),t.writeDouble(40,this.radius),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbCircle");let e=0,i=0,r=0,s=this.radius,o=this.normal.x,a=this.normal.y,c=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const l=t.readItem();if(!l)break;const h=Number(l.code),u=Number(l.value);switch(h){case 10:e=u;break;case 20:i=u;break;case 30:r=u;break;case 40:s=u;break;case 39:this.thickness=u;break;case 210:o=u;break;case 220:a=u;break;case 230:c=u;break}}return this.applyDxfInGeometry(e,i,r,s,o,a,c),this}applyDxfInGeometry(t,e,i,r,s,o,a){kn.set(s,o,a),kn.lengthSq()>0&&kn.normalize(),Ur(Lh,kn),yc(Mh,{x:t,y:e,z:i},kn),this._geo=new pt(Mh,r,0,X,kn,Lh)}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.center,i=this.radius;return Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2)>=i?1:-1}createOffsetCurve(t){const e=this._geo.offset(t);return e?new Ks(e.center,e.radius,e.normal):null}moveGripAt(t,e){switch(t){case 0:this.transformBy(F.makeTranslation(e));break;case 1:case 2:case 3:case 4:{const i=Ch[t-1],r=this._geo.getPointAtAngle(i),o=new x(r.x+e.x,r.y+e.y,(r.z??0)+(e.z??0)).distanceTo(this.center);o>0&&(this.radius=o);break}}}};Ks.typeName="Circle";let us=Ks;const _i=[0,Math.PI/2,Math.PI,Math.PI/2*3],Zs=class Zs extends Et{constructor(t,e,i,r,s,o,a){super(),this._geoData=null,t!==void 0&&e!==void 0&&i!==void 0&&r!==void 0&&s!==void 0&&o!==void 0&&a!==void 0&&(this._geo=new le(t,e,i,r,s,o,a))}get dxfTypeName(){return"ELLIPSE"}get _geo(){return this._geoData==null&&(this._geoData=new le(new x,A.Z_AXIS,A.X_AXIS,1,1,0,Math.PI*2)),this._geoData}set _geo(t){this._geoData=t}get center(){return this._geo.center}set center(t){this._geo.center=t}get majorAxis(){return this._geo.majorAxis}get majorAxisRadius(){return this._geo.majorAxisRadius}set majorAxisRadius(t){this._geo.majorAxisRadius=t}get minorAxisRadius(){return this._geo.minorAxisRadius}set minorAxisRadius(t){this._geo.minorAxisRadius=t}get startAngle(){return this._geo.startAngle}set startAngle(t){this._geo.startAngle=t}get endAngle(){return this._geo.endAngle}set endAngle(t){this._geo.endAngle=t}get normal(){return this._geo.normal}set normal(t){this._geo.normal=t}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"ellipseArc",arc:this._geo.clone(),extendable:!this.closed}]}get closed(){return this._geo.closed||Math.abs(this._geo.deltaAngle-X)<1e-10}get area(){return this._geo.area}subGetGripPoints(){const t=new Array;if(t.push(this._geo.center),this.closed)for(const e of _i)t.push(this._geo.getPointAtAngle(e));else t.push(this._geo.startPoint),t.push(this._geo.endPoint);return t}subMoveGripPointsAt(t,e){return Pt(t,i=>{this.moveGripAt(i,e)}),this}subGetOsnapPoints(t,e,i,r){switch(t){case I.EndPoint:this.closed||(r.push(this._geo.startPoint),r.push(this._geo.endPoint));break;case I.MidPoint:this.closed||r.push(this._geo.midPoint);break;case I.Center:case I.Centroid:r.push(this._geo.center);break;case I.Quadrant:if(this.closed)for(const s of _i)r.push(this._geo.getPointAtAngle(s));break;case I.Nearest:r.push(this._geo.nearestPoint(e));break;case I.Tangent:r.push(...this._geo.tangentPoints(e));break;case I.Perpendicular:{const s=this._geo.perpendicularPoints(e),o=oe(e,s);o&&r.push(o);break}}}transformBy(t){return this._geo.transform(t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"majorAxisRadius",type:"float",editable:!0,accessor:{get:()=>this.majorAxisRadius,set:t=>{this.center.x=t}}},{name:"minorAxisRadius",type:"float",editable:!0,accessor:{get:()=>this.minorAxisRadius,set:t=>{this.minorAxisRadius=t}}},{name:"startAngle",type:"float",editable:!0,accessor:{get:()=>this.startAngle,set:t=>{this.startAngle=t}}},{name:"endAngle",type:"float",editable:!0,accessor:{get:()=>this.endAngle,set:t=>{this.endAngle=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.ellipticalArc(this._geo)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbEllipse"),t.writePoint3d(10,this.center);const e=this._geo.majorAxis,i=this.majorAxisRadius;return t.writePoint3d(11,{x:e.x*i,y:e.y*i,z:e.z*i}),t.writeVector3d(210,this.normal),t.writeDouble(40,this.minorAxisRadius/this.majorAxisRadius),t.writeDouble(41,this.startAngle),t.writeDouble(42,this.endAngle),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbEllipse");let e=this.center.x,i=this.center.y,r=this.center.z,s=this.majorAxis.x*this.majorAxisRadius,o=this.majorAxis.y*this.majorAxisRadius,a=this.majorAxis.z*this.majorAxisRadius,c=this.normal.x,l=this.normal.y,h=this.normal.z,u=this.majorAxisRadius>0?this.minorAxisRadius/this.majorAxisRadius:1,d=this.startAngle,g=this.endAngle;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const f=t.readItem();if(!f)break;const p=Number(f.code),m=Number(f.value);switch(p){case 10:e=m;break;case 20:i=m;break;case 30:r=m;break;case 11:s=m;break;case 21:o=m;break;case 31:a=m;break;case 210:c=m;break;case 220:l=m;break;case 230:h=m;break;case 40:u=m;break;case 41:d=m;break;case 42:g=m;break}}return this.applyDxfInGeometry(e,i,r,s,o,a,c,l,h,u,d,g),this}applyDxfInGeometry(t,e,i,r,s,o,a,c,l,h,u,d){const g=Math.hypot(r,s,o)||1;this._geo=new le({x:t,y:e,z:i},{x:a,y:c,z:l},{x:r,y:s,z:o},g,g*h,u,d)}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.center,i=t.x-e.x,r=t.y-e.y,s=this.majorAxis,o=Math.hypot(s.x,s.y)||1,a=this.minorAxisRadius/this.majorAxisRadius*o||1,c=s.x/o,l=s.y/o,h=-l,u=c,d=i*c+r*l,g=i*h+r*u;return(d/o)**2+(g/a)**2>=1?1:-1}moveGripAt(t,e){switch(t){case 0:this.transformBy(F.makeTranslation(e));break;case 1:if(this.closed)this.moveQuadrantGripAt(_i[0],e);else{const i=this._geo.startPoint;this._geo.startAngle=Re(this._geo.center,{x:i.x+e.x,y:i.y+e.y,z:(i.z??0)+(e.z??0)},this._geo.normal)}break;case 2:if(this.closed)this.moveQuadrantGripAt(_i[1],e);else{const i=this._geo.endPoint;this._geo.endAngle=Re(this._geo.center,{x:i.x+e.x,y:i.y+e.y,z:(i.z??0)+(e.z??0)},this._geo.normal)}break;case 3:case 4:this.closed&&this.moveQuadrantGripAt(_i[t-1],e);break}}moveQuadrantGripAt(t,e){const i=this._geo.getPointAtAngle(t),r=new x(i.x+e.x,i.y+e.y,(i.z??0)+(e.z??0)),s=this._geo.center,o=r.x-s.x,a=r.y-s.y,c=(r.z??0)-(s.z??0),l=t===0||t===Math.PI?this._geo.majorAxis:this._geo.minorAxis,h=o*l.x+a*l.y+c*l.z,u=Math.abs(h);u<=0||(t===0||t===Math.PI?this.majorAxisRadius=u:this.minorAxisRadius=u)}createOffsetCurve(t){const e=this._geo.offset(t);return e?new Zs(e.center,e.normal,e.majorAxis,e.majorAxisRadius,e.minorAxisRadius,e.startAngle,e.endAngle):null}};Zs.typeName="Ellipse";let ds=Zs;const ul=class ul extends nt{get dxfTypeName(){return"3DFACE"}constructor(){super(),this._vertices=[new x,new x,new x],this._edgeInvisibilities=0}getVertexAt(t){return t<0?this._vertices[0]:t>=this._vertices.length?this._vertices[this._vertices.length-1]:this._vertices[t]}setVertexAt(t,e){if(t<0&&this._vertices[0].copy(e),t>=3)return this._vertices.length===3&&this._vertices.push(new x),this._vertices[3].copy(e);this._vertices[t].copy(e)}setEdgeInvisibilities(t){this._edgeInvisibilities=t}isEdgeVisibleAt(t){if(t<0||t>3)throw new Error("Index out of range");return(this._edgeInvisibilities&1<<t)===0}makeEdgeInvisibleAt(t){if(t<0||t>3)throw new Error("Index out of range");this._edgeInvisibilities=this._edgeInvisibilities|1<<t}get geometricExtents(){return new j().setFromPoints(this._vertices)}subGetIntersectCurves(){return Wt(this._vertices,!0)}get area(){const t=[this.getVertexAt(0),this.getVertexAt(1),this.getVertexAt(2)],e=this.getVertexAt(3);return(e.x!==t[2].x||e.y!==t[2].y||e.z!==t[2].z)&&t.push(e),Qu(t)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subMoveGripPointsAt(t,e){return pi(t,e,this._vertices),this}subGetOsnapPoints(t,e,i,r){_o(this._vertices,!0,t,e,r)}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this}get directBatchPrimitive(){return"lineSegments"}subWorldDraw(t){const e=this._vertices.length,i=new Float32Array(e*3),r=new Uint16Array(e*2);for(let s=0;s<e;s++)i[s*3]=this._vertices[s].x,i[s*3+1]=this._vertices[s].y,i[s*3+2]=this._vertices[s].z,this.isEdgeVisibleAt(s)&&(r[s*2]=s,r[s*2+1]=(s+1)%4);return t.lineSegments(i,3,r)}dxfOutFields(t){super.dxfOutFields(t);const e=this.getVertexAt(0),i=this.getVertexAt(1),r=this.getVertexAt(2),s=this.getVertexAt(3);t.writeSubclassMarker("AcDbFace"),t.writePoint3d(10,e),t.writePoint3d(11,i),t.writePoint3d(12,r),t.writePoint3d(13,s);let o=0;for(let a=0;a<4;++a)this.isEdgeVisibleAt(a)||(o|=1<<a);return t.writeInt16(70,o),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFace");const e=[0,1,2,3].map(r=>{const s=this._vertices[r];return s?{x:s.x,y:s.y,z:s.z}:{x:0,y:0,z:0}});let i=this._edgeInvisibilities;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code),o=Number(r.value);switch(s){case 10:case 11:case 12:case 13:e[s-10].x=o;break;case 20:case 21:case 22:case 23:e[s-20].y=o;break;case 30:case 31:case 32:case 33:e[s-30].z=o;break;case 70:i=o;break}}return e.forEach((r,s)=>this.setVertexAt(s,r)),this._edgeInvisibilities=i,this}};ul.typeName="Face";let gs=ul;var Xt=(n=>(n[n.DecimalDegrees=0]="DecimalDegrees",n[n.DegreesMinutesSeconds=1]="DegreesMinutesSeconds",n[n.Gradians=2]="Gradians",n[n.Radians=3]="Radians",n[n.SurveyorsUnits=4]="SurveyorsUnits",n))(Xt||{}),mt=(n=>(n[n.Scientific=1]="Scientific",n[n.Decimal=2]="Decimal",n[n.Engineering=3]="Engineering",n[n.Architectural=4]="Architectural",n[n.Fractional=5]="Fractional",n[n.WindowsDesktop=6]="WindowsDesktop",n))(mt||{}),gt=(n=>(n[n.Undefined=0]="Undefined",n[n.Inches=1]="Inches",n[n.Feet=2]="Feet",n[n.Miles=3]="Miles",n[n.Millimeters=4]="Millimeters",n[n.Centimeters=5]="Centimeters",n[n.Meters=6]="Meters",n[n.Kilometers=7]="Kilometers",n[n.Microinches=8]="Microinches",n[n.Mils=9]="Mils",n[n.Yards=10]="Yards",n[n.Angstroms=11]="Angstroms",n[n.Nanometers=12]="Nanometers",n[n.Microns=13]="Microns",n[n.Decimeters=14]="Decimeters",n[n.Dekameters=15]="Dekameters",n[n.Hectometers=16]="Hectometers",n[n.Gigameters=17]="Gigameters",n[n.Astronomical=18]="Astronomical",n[n.LightYears=19]="LightYears",n[n.Parsecs=20]="Parsecs",n[n.USSurveyFeet=21]="USSurveyFeet",n[n.USSurveyInch=22]="USSurveyInch",n[n.USSurveyYard=23]="USSurveyYard",n[n.USSurveyMile=24]="USSurveyMile",n[n.Max=24]="Max",n))(gt||{});function u_(n){return n==4||n==5||n==6||n==7||n==12||n==13||n==14||n==15||n==16||n==17}function d_(n){return n==1||n==2||n==3||n==8||n==9||n==10||n==21}const T={ACADVER:"ACADVER",ANGBASE:"ANGBASE",ANGDIR:"ANGDIR",AUNITS:"AUNITS",AUPREC:"AUPREC",CECOLOR:"CECOLOR",CELTSCALE:"CELTSCALE",CELTYPE:"CELTYPE",CELWEIGHT:"CELWEIGHT",CETRANSPARENCY:"CETRANSPARENCY",CLAYER:"CLAYER",CMLEADERSTYLE:"CMLEADERSTYLE",CMLSCALE:"CMLSCALE",CMLSTYLE:"CMLSTYLE",COLORTHEME:"COLORTHEME",COMPAREHATCH:"COMPAREHATCH",COMPAREPROPS:"COMPAREPROPS",COMPARERCMARGIN:"COMPARERCMARGIN",COMPARETEXT:"COMPARETEXT",COMPARETOLERANCE:"COMPARETOLERANCE",DYNMODE:"DYNMODE",DYNPROMPT:"DYNPROMPT",DWGNAME:"DWGNAME",EXTMAX:"EXTMAX",EXTMIN:"EXTMIN",GRIPCOLOR:"GRIPCOLOR",GRIPHOT:"GRIPHOT",GRIPOBJLIMIT:"GRIPOBJLIMIT",GRIPS:"GRIPS",GRIPSIZE:"GRIPSIZE",HPANG:"HPANG",HPASSOC:"HPASSOC",HPBACKGROUNDCOLOR:"HPBACKGROUNDCOLOR",HPCOLOR:"HPCOLOR",HPDOUBLE:"HPDOUBLE",HPISLANDDETECTION:"HPISLANDDETECTION",HPLAYER:"HPLAYER",HPNAME:"HPNAME",HPSCALE:"HPSCALE",HPSEPARATE:"HPSEPARATE",HPTRANSPARENCY:"HPTRANSPARENCY",INSUNITS:"INSUNITS",LOGINNAME:"LOGINNAME",LTSCALE:"LTSCALE",LUNITS:"LUNITS",LUPREC:"LUPREC",LWDISPLAY:"LWDISPLAY",MEASUREMENT:"MEASUREMENT",MEASUREMENTCOLOR:"MEASUREMENTCOLOR",MODELBKCOLOR:"MODELBKCOLOR",OSMODE:"OSMODE",ORTHOMODE:"ORTHOMODE",OPENPROF:"OPENPROF",PAPERBKCOLOR:"PAPERBKCOLOR",PDMODE:"PDMODE",PDSIZE:"PDSIZE",PICKBOX:"PICKBOX",POLARADDANG:"POLARADDANG",POLARMODE:"POLARMODE",POLARANG:"POLARANG",SHORTCUTMENU:"SHORTCUTMENU",TEXTSTYLE:"TEXTSTYLE",DIMSTYLE:"DIMSTYLE",UNITMODE:"UNITMODE"},g_=Object.freeze(Object.values(T));function f_(){try{const n=typeof process<"u"&&process.env?process.env:void 0;if(!n)return"";const t=n.USERNAME||n.USER||n.LOGNAME||"";return typeof t=="string"?t.trim():""}catch{return""}}const Qs=class Qs{constructor(){this.registry=new Map,this.cache=new Map,this.events={sysVarChanged:new bt},this.registerVar({name:T.ANGBASE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:T.ANGDIR,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:T.AUNITS,type:"number",isDbVar:!0,defaultValue:Xt.DecimalDegrees}),this.registerVar({name:T.AUPREC,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:T.CECOLOR,type:"color",isDbVar:!0,defaultValue:new G(exports.AcCmColorMethod.ByLayer)}),this.registerVar({name:T.CELTSCALE,type:"number",isDbVar:!0,defaultValue:-1}),this.registerVar({name:T.CELTYPE,type:"string",isDbVar:!0,defaultValue:wt}),this.registerVar({name:T.CELWEIGHT,type:"number",isDbVar:!0,defaultValue:exports.AcGiLineWeight.ByLayer}),this.registerVar({name:T.CETRANSPARENCY,type:"transparency",isDbVar:!0,defaultValue:new xt}),this.registerVar({name:T.CLAYER,type:"string",isDbVar:!0,defaultValue:"0"}),this.registerVar({name:T.CMLEADERSTYLE,type:"string",isDbVar:!0,defaultValue:Fe}),this.registerVar({name:T.CMLSCALE,type:"number",isDbVar:!0,defaultValue:1}),this.registerVar({name:T.CMLSTYLE,type:"string",isDbVar:!0,defaultValue:De}),this.registerVar({name:T.COLORTHEME,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:T.COMPAREHATCH,type:"number",isDbVar:!0,defaultValue:ts}),this.registerVar({name:T.COMPAREPROPS,type:"number",isDbVar:!1,defaultValue:ng}),this.registerVar({name:T.COMPARERCMARGIN,type:"number",isDbVar:!0,defaultValue:es}),this.registerVar({name:T.COMPARETEXT,type:"number",isDbVar:!0,defaultValue:ns}),this.registerVar({name:T.COMPARETOLERANCE,type:"number",isDbVar:!0,defaultValue:is}),this.registerVar({name:T.DYNMODE,type:"number",isDbVar:!1,defaultValue:3}),this.registerVar({name:T.DYNPROMPT,type:"boolean",isDbVar:!1,defaultValue:!0}),this.registerVar({name:T.DWGNAME,type:"string",isDbVar:!0,readOnly:!0,defaultValue:"Drawing1.dwg"}),this.registerVar({name:T.GRIPCOLOR,type:"number",isDbVar:!1,defaultValue:Hd}),this.registerVar({name:T.GRIPHOT,type:"number",isDbVar:!1,defaultValue:Wd}),this.registerVar({name:T.GRIPOBJLIMIT,type:"number",isDbVar:!1,defaultValue:100}),this.registerVar({name:T.GRIPS,type:"number",isDbVar:!1,defaultValue:2}),this.registerVar({name:T.GRIPSIZE,type:"number",isDbVar:!1,defaultValue:$d}),this.registerVar({name:T.HPANG,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:T.HPASSOC,type:"number",isDbVar:!1,defaultValue:1}),this.registerVar({name:T.HPBACKGROUNDCOLOR,type:"color",isDbVar:!0,defaultValue:new G(exports.AcCmColorMethod.None)}),this.registerVar({name:T.HPCOLOR,type:"color",isDbVar:!0,defaultValue:new G(exports.AcCmColorMethod.ByLayer)}),this.registerVar({name:T.HPDOUBLE,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:T.HPISLANDDETECTION,type:"number",isDbVar:!1,defaultValue:1}),this.registerVar({name:T.HPLAYER,type:"string",isDbVar:!0,defaultValue:"."}),this.registerVar({name:T.HPNAME,type:"string",isDbVar:!1,defaultValue:jd}),this.registerVar({name:T.HPSCALE,type:"number",isDbVar:!1,defaultValue:1}),this.registerVar({name:T.HPSEPARATE,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:T.HPTRANSPARENCY,type:"transparency",isDbVar:!0,defaultValue:new xt}),this.registerVar({name:T.INSUNITS,type:"number",isDbVar:!0,defaultValue:gt.Millimeters}),this.registerVar({name:T.LOGINNAME,type:"string",isDbVar:!1,readOnly:!0,defaultValue:f_()}),this.registerVar({name:T.LUNITS,type:"number",isDbVar:!0,defaultValue:mt.Decimal}),this.registerVar({name:T.LUPREC,type:"number",isDbVar:!0,defaultValue:4}),this.registerVar({name:T.LWDISPLAY,type:"boolean",isDbVar:!0,defaultValue:!1}),this.registerVar({name:T.MEASUREMENT,type:"number",isDbVar:!0,defaultValue:1}),this.registerVar({name:T.MEASUREMENTCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new G(exports.AcCmColorMethod.ByColor);return t.setRGB(96,165,250),t})()}),this.registerVar({name:T.MODELBKCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new G(exports.AcCmColorMethod.ByColor);return t.setRGB(0,0,0),t})()}),this.registerVar({name:T.OSMODE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:T.ORTHOMODE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:T.OPENPROF,type:"boolean",isDbVar:!1,defaultValue:!1}),this.registerVar({name:T.PAPERBKCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new G(exports.AcCmColorMethod.ByColor);return t.setRGB(255,255,255),t})()}),this.registerVar({name:T.PICKBOX,type:"number",isDbVar:!1,defaultValue:10}),this.registerVar({name:T.POLARADDANG,type:"string",isDbVar:!1,defaultValue:""}),this.registerVar({name:T.POLARMODE,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:T.POLARANG,type:"number",isDbVar:!1,defaultValue:90}),this.registerVar({name:T.SHORTCUTMENU,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:T.TEXTSTYLE,type:"string",isDbVar:!0,defaultValue:ht}),this.registerVar({name:T.UNITMODE,type:"number",isDbVar:!0,defaultValue:0})}static instance(){return this._instance||(this._instance=new Qs),this._instance}registerVar(t){const e=this.normalizeName(t.name);this.registry.set(e,{...t,name:e}),t.isDbVar||this.cache.set(e,t.defaultValue)}registerMany(t){t.forEach(e=>this.registerVar(e))}setLoginName(t){const e=this.normalizeName(T.LOGINNAME);this.cache.set(e,t.trim())}getVar(t,e){t=this.normalizeName(t);const i=this.getDescriptor(t);if(!i)throw new Error(`System variable ${t} not found!`);if(i.isDbVar)return e[t.toLowerCase()];if(this.cache.has(t))return this.cache.get(t)}getDefaultValue(t){t=this.normalizeName(t);const e=this.getDescriptor(t);if(!e)throw new Error(`System variable ${t} not found!`);return e.defaultValue}applyVarMutation(t,e,i,r,s){const o=this.normalizeName(t);if(this.hasValueChanged(e,i)){if(r.transactionManager.isRecording())r.transactionManager.recordSysvar(o,e);else if(r.transactionManager.strictMode&&!r.transactionManager.isApplyingUndoRedo())throw new Error(`Cannot change system variable ${o} outside an active transaction.`);s(),!r.transactionManager.isApplyingUndoRedo()&&!r.transactionManager.isRecording()&&this.events.sysVarChanged.dispatch({database:r,name:o,newVal:i,oldVal:e})}}setVar(t,e,i){t=this.normalizeName(t);const r=this.getDescriptor(t);if(r){if(r.readOnly)throw new Error(`System variable ${t} is read-only!`);const s=this.getVar(t,i);if(r.type==="transparency"){const o=this.parseTransparency(e);if(o==null||o.isInvalid)throw new Error("Invalid transparency value!");e=o}else if(r.type!=="string"&&(typeof e=="string"||e instanceof String)){if(r.type==="number"){const o=Number(e);if(Number.isNaN(o))throw new Error("Invalid number input!");e=o}else if(r.type==="boolean")e=this.parseBoolean(e);else if(r.type==="color"){const o=this.parseColorSysVar(t,e,i);if(o==null)throw new Error("Invalid color value!");e=o}}if(t===T.GRIPCOLOR.toLowerCase()){const o=Math.trunc(e);if(!Number.isFinite(o)||o<Sa||o>ka)throw new Error(`Invalid GRIPCOLOR value! Valid range is ${Sa} to ${ka}.`);e=o}if(t===T.GRIPHOT.toLowerCase()){const o=Math.trunc(e);if(!Number.isFinite(o)||o<Ia||o>Ea)throw new Error(`Invalid GRIPHOT value! Valid range is ${Ia} to ${Ea}.`);e=o}if(t===T.GRIPOBJLIMIT.toLowerCase()){const o=Math.trunc(e);if(!Number.isFinite(o)||o<0||o>32767)throw new Error("Invalid GRIPOBJLIMIT value! Valid range is 0 to 32767.");e=o}if(t===T.GRIPS.toLowerCase()){const o=Math.trunc(e);if(!Number.isFinite(o)||o<0||o>2)throw new Error("Invalid GRIPS value! Valid range is 0 to 2.");e=o}if(t===T.GRIPSIZE.toLowerCase()){const o=Math.trunc(e);if(!Number.isFinite(o)||o<Ta||o>La)throw new Error(`Invalid GRIPSIZE value! Valid range is ${Ta} to ${La}.`);e=o}t===T.COMPAREHATCH.toLowerCase()&&(e=xe("COMPAREHATCH",e,lo,ho)),t===T.COMPAREPROPS.toLowerCase()&&(e=xe("COMPAREPROPS",e,ig,rg)),t===T.COMPARERCMARGIN.toLowerCase()&&(e=xe("COMPARERCMARGIN",e,uo,go)),t===T.COMPARETEXT.toLowerCase()&&(e=xe("COMPARETEXT",e,fo,po)),t===T.COMPARETOLERANCE.toLowerCase()&&(e=xe("COMPARETOLERANCE",e,mo,yo)),r.isDbVar?this.applyVarMutation(t,s,e,i,()=>{i[t.toLowerCase()]=e}):this.applyVarMutation(t,s,e,i,()=>{this.cache.set(t,e)})}else throw new Error(`System variable ${t} not found!`)}getDescriptor(t){return this.registry.get(this.normalizeName(t))}getAllDescriptors(){return[...this.registry.values()]}parseBoolean(t){if(t==null)return!1;const e=String(t).trim().toLowerCase(),i=new Set(["true","t","1","yes","y"]),r=new Set(["false","f","0","no","n"]);return i.has(e)?!0:(r.has(e),!1)}parseColorSysVar(t,e,i){const r=e.trim().toLowerCase();return t===T.HPCOLOR.toLowerCase()&&(r==="."||r==="use current")?i.cecolor.clone():t===T.HPBACKGROUNDCOLOR.toLowerCase()&&(r===""||r==="."||r==="none")?new G(exports.AcCmColorMethod.None):G.fromString(e)}parseTransparency(t){if(t instanceof xt)return t;if(typeof t=="number")return xt.deserialize(t);if(!(typeof t!="string"&&!(t instanceof String)))return xt.fromString(String(t))}hasValueChanged(t,e){return t instanceof G&&e instanceof G||t instanceof xt&&e instanceof xt?!t.equals(e):!Object.is(t,e)}normalizeName(t){return t.toLowerCase()}};Qs._instance=null;let yt=Qs;const Dg="Load Database",Oh=3e4,p_=12e4,m_=1024*1024;class zt extends Au{constructor(t,e){super(t.stage),this.data=t,this.progress=e}async run(t){const e=lc.getInstance().getEntry(Dg),i=Date.now();this.progress&&await this.progress(this.data.progress.value,this.data.stage,"START");const r=await this.data.task(t);return this.progress&&(await this.progress(this.data.progress.value,this.data.stage,"END",r?r.data:null),this.data.progress.value+=this.data.step,this.data.progress.value>100&&(this.data.progress.value=100)),e&&(e.data[this.name]=Date.now()-i),r}}class Yc{constructor(t={}){this.config={useWorker:t.useWorker??!0,...t}}async read(t,e,i={}){const{minimumChunkSize:r=10,progress:s,timeout:o,sysVars:a}=i,c={name:Dg,data:{total:0},format(){let d="";return Object.keys(this.data).forEach(g=>{g!=="total"&&(d+=`- ${g}: ${this.data[g]} ms
|
|
12
12
|
`)}),d+=`- total: ${this.data.total} ms`,d}};lc.getInstance().collect(c),this.progress=s;const l={value:0},h=new Pu;h.setCompleteCallback(()=>this.onFinished()),h.setErrorCallback(d=>this.onError(d)),h.addTask(new zt({stage:"START",step:1,progress:l,task:async d=>d},s)),h.addTask(new zt({stage:"PARSE",step:5,progress:l,task:async d=>await this.parse(d,o)},s)),h.addTask(new zt({stage:"LTYPE",step:1,progress:l,task:async d=>(this.processLineTypes(d.model,e),d)},s)),h.addTask(new zt({stage:"STYLE",step:1,progress:l,task:async d=>(this.processTextStyles(d.model,e),d)},s)),h.addTask(new zt({stage:"DIMSTYLE",step:1,progress:l,task:async d=>(this.processDimStyles(d.model,e),d)},s)),h.addTask(new zt({stage:"LAYER",step:1,progress:l,task:async d=>(this.processLayers(d.model,e),e.tables.layerTable.numEntries===0&&e.createDefaultData({layer:!0}),d)},s)),h.addTask(new zt({stage:"VPORT",step:1,progress:l,task:async d=>(this.processViewports(d.model,e),d)},s)),h.addTask(new zt({stage:"HEADER",step:1,progress:l,task:async d=>{if(this.processClasses(d.model,e),this.processHeader(d.model,e),a){const g=yt.instance();for(const[f,p]of Object.entries(a))g.setVar(f,p,e)}return d}},s)),h.addTask(new zt({stage:"BLOCK_RECORD",step:5,progress:l,task:async d=>(this.processBlockTables(d.model,e),d)},s)),h.addTask(new zt({stage:"OBJECT",step:5,progress:l,task:async d=>(this.processObjects(d.model,e),e.objects.layout.numEntries===0&&e.createDefaultData({layout:!0}),d)},s)),h.addTask(new zt({stage:"BLOCK",step:5,progress:l,task:async d=>(await this.processBlocks(d.model,e),d)},s)),h.addTask(new zt({stage:"ENTITY",step:100,progress:l,task:async d=>(await this.processEntities(d.model,e,r,l,s),d)},s)),h.addTask(new zt({stage:"END",step:0,progress:l,task:async d=>d},s));const u=Date.now();await h.run(t),c.data.total=Date.now()-u}onError(t){if(this.progress){const e=t.task;this.progress(e.data.progress.value,e.data.stage,"ERROR",void 0,t)}return t.task.name==="ENTITY"?!1:(this.onFinished(),!0)}onFinished(){this.progress&&this.progress(100,"END","END")}getParserWorkerTimeout(t,e){const i=e??this.config.timeout;if(i!=null)return i;const r=Math.ceil(t.byteLength/m_),s=Oh+r*1e3;return Math.min(p_,Math.max(Oh,s))}async parse(t,e){throw new Error("Not impelemented yet!")}processLineTypes(t,e){throw new Error("Not impelemented yet!")}processTextStyles(t,e){throw new Error("Not impelemented yet!")}processDimStyles(t,e){throw new Error("Not impelemented yet!")}processLayers(t,e){throw new Error("Not impelemented yet!")}processViewports(t,e){throw new Error("Not impelemented yet!")}processHeader(t,e){throw new Error("Not impelemented yet!")}processClasses(t,e){}processBlockTables(t,e){throw new Error("Not impelemented yet!")}processObjects(t,e){throw new Error("Not impelemented yet!")}processBlocks(t,e){throw new Error("Not impelemented yet!")}processEntities(t,e,i,r,s){throw new Error("Not impelemented yet!")}}class Fg{constructor(t,e,i){this._chunkSize=-1,this._minimumChunkSize=50,this._count=t,this._numerOfChunk=e<1?1:e,this._minimumChunkSize=i,this.calculateChunkSize()}get count(){return this._count}get numerOfChunk(){return this._numerOfChunk}get minimumChunkSize(){return this._minimumChunkSize}set minimumChunkSize(t){this._minimumChunkSize=t,this.calculateChunkSize()}get chunkSize(){return this._chunkSize}calculateChunkSize(){let t=this._count/this._numerOfChunk;t<this._minimumChunkSize&&(t=Math.min(this._minimumChunkSize,this._count)),this._chunkSize=t<1?this._count:Math.floor(t)}async scheduleTask(t){await ui(),await t()}async processChunk(t,e){if(this._count<=0){await(e==null?void 0:e());return}let i=0;const r=async()=>{const s=i,o=Math.min(i+this._chunkSize,this._count);await t(s,o),i=o,i<this._count&&await this.scheduleTask(r)};await r(),await(e==null?void 0:e())}}class Xg extends Yc{constructor(t){super({}),this._database=t}async parse(){return{model:this._database,data:{unknownEntityCount:0}}}async processEntities(t,e,i,r,s){let o=t.tables.blockTable.modelSpace.newIterator().toArray();const a=o.length,c=new Fg(a,100-r.value,i);this.config.convertByEntityType&&(o=this.groupAndFlattenByType(o));const l=e.tables.blockTable.modelSpace;await c.processChunk(async(h,u)=>{let d=[],g=h<u?o[h].type:"";for(let f=h;f<u;f++){const p=o[f];this.config.convertByEntityType&&p.type!==g&&(this.triggerEvents(l,d),d=[],g=p.type),d.push(p)}if(this.triggerEvents(l,d),s){let f=r.value+u/a*(100-r.value);f>100&&(f=100),await s(f,"ENTITY","IN-PROGRESS")}})}processBlocks(){const t=this._database.tables.blockTable.newIterator();for(const e of t){const i=e.newIterator().toArray();this.triggerEvents(e,i)}}processHeader(){}processClasses(){}processBlockTables(){}processObjects(){const t=this._database.objects.layout.newIterator();for(const o of t)this._database.events.dictObjetSet.dispatch({database:this._database,object:o,key:o.layoutName});const e=this._database.objects.imageDefinition.newIterator();for(const o of e)this._database.events.dictObjetSet.dispatch({database:this._database,object:o,key:o.objectId});const i=this._database.objects.mleaderStyle.newIterator();for(const o of i)this._database.events.dictObjetSet.dispatch({database:this._database,object:o,key:o.objectId});const r=this._database.objects.layerFilter.newIterator();for(const o of r)this._database.events.dictObjetSet.dispatch({database:this._database,object:o,key:o.objectId});const s=this._database.objects.layerIndex.newIterator();for(const o of s)this._database.events.dictObjetSet.dispatch({database:this._database,object:o,key:o.objectId})}processViewports(){}processLayers(){this._database.tables.layerTable.newIterator().toArray().forEach(e=>{this._database.events.layerAppended.dispatch({database:this._database,layer:e})})}processLineTypes(){}processTextStyles(){}processDimStyles(){}groupAndFlattenByType(t){const e={},i=[];for(const r of t)e[r.type]||(e[r.type]=[],i.push(r.type)),e[r.type].push(r);return i.flatMap(r=>e[r])}triggerEvents(t,e){(t.isModelSapce||t.isPaperSapce)&&t.database.events.entityAppended.dispatch({database:t.database,entity:e})}}var Yg=(n=>(n[n.Center=0]="Center",n[n.Left=1]="Left",n[n.Right=2]="Right",n[n.OverFirst=3]="OverFirst",n[n.OverSecond=4]="OverSecond",n))(Yg||{}),zc=(n=>(n[n.Center=0]="Center",n[n.Above=1]="Above",n[n.Outside=2]="Outside",n[n.JIS=3]="JIS",n[n.Below=4]="Below",n))(zc||{}),zg=(n=>(n[n.Feet=0]="Feet",n[n.None=1]="None",n[n.Inch=2]="Inch",n[n.FeetAndInch=3]="FeetAndInch",n[n.Leading=4]="Leading",n[n.Trailing=8]="Trailing",n[n.LeadingAndTrailing=12]="LeadingAndTrailing",n))(zg||{}),Vg=(n=>(n[n.None=0]="None",n[n.Leading=1]="Leading",n[n.Trailing=2]="Trailing",n[n.LeadingAndTrailing=3]="LeadingAndTrailing",n))(Vg||{}),jg=(n=>(n[n.Bottom=0]="Bottom",n[n.Middle=1]="Middle",n[n.Top=2]="Top",n))(jg||{});const Js=class Js extends Ue{constructor(t,e){t=t||{},se(t,Js.DEFAULT_DIM_VALUES),super(t,e)}get dimpost(){return this.getAttr("dimpost")}set dimpost(t){this.setAttr("dimpost",t)}get dimapost(){return this.getAttr("dimapost")}set dimapost(t){this.setAttr("dimapost",t)}get dimscale(){return this.getAttr("dimscale")}set dimscale(t){this.setAttr("dimscale",t)}get dimasz(){return this.getAttr("dimasz")}set dimasz(t){this.setAttr("dimasz",t)}get dimexo(){return this.getAttr("dimexo")}set dimexo(t){this.setAttr("dimexo",t)}get dimdli(){return this.getAttr("dimdli")}set dimdli(t){this.setAttr("dimdli",t)}get dimexe(){return this.getAttr("dimexe")}set dimexe(t){this.setAttr("dimexe",t)}get dimrnd(){return this.getAttr("dimrnd")}set dimrnd(t){this.setAttr("dimrnd",t)}get dimdle(){return this.getAttr("dimdle")}set dimdle(t){this.setAttr("dimdle",t)}get dimtp(){return this.getAttr("dimtp")}set dimtp(t){this.setAttr("dimtp",t)}get dimtm(){return this.getAttr("dimtm")}set dimtm(t){this.setAttr("dimtm",t)}get dimtxt(){return this.getAttr("dimtxt")}set dimtxt(t){this.setAttr("dimtxt",t)}get dimcen(){return this.getAttr("dimcen")}set dimcen(t){this.setAttr("dimcen",t)}get dimtsz(){return this.getAttr("dimtsz")}set dimtsz(t){this.setAttr("dimtsz",t)}get dimaltf(){return this.getAttr("dimaltf")}set dimaltf(t){this.setAttr("dimaltf",t)}get dimlfac(){return this.getAttr("dimlfac")}set dimlfac(t){this.setAttr("dimlfac",t)}get dimtvp(){return this.getAttr("dimtvp")}set dimtvp(t){this.setAttr("dimtvp",t)}get dimtfac(){return this.getAttr("dimtfac")}set dimtfac(t){this.setAttr("dimtfac",t)}get dimgap(){return this.getAttr("dimgap")}set dimgap(t){this.setAttr("dimgap",t)}get dimaltrnd(){return this.getAttr("dimaltrnd")}set dimaltrnd(t){this.setAttr("dimaltrnd",t)}get dimtol(){return this.getAttr("dimtol")}set dimtol(t){this.setAttr("dimtol",t)}get dimlim(){return this.getAttr("dimlim")}set dimlim(t){this.setAttr("dimlim",t)}get dimtih(){return this.getAttr("dimtih")}set dimtih(t){this.setAttr("dimtih",t)}get dimtoh(){return this.getAttr("dimtoh")}set dimtoh(t){this.setAttr("dimtoh",t)}get dimse1(){return this.getAttr("dimse1")}set dimse1(t){this.setAttr("dimse1",t)}get dimse2(){return this.getAttr("dimse2")}set dimse2(t){this.setAttr("dimse2",t)}get dimtad(){return this.getAttr("dimtad")}set dimtad(t){this.setAttr("dimtad",t)}get dimzin(){return this.getAttr("dimzin")}set dimzin(t){this.setAttr("dimzin",t)}get dimazin(){return this.getAttr("dimazin")}set dimazin(t){this.setAttr("dimazin",t)}get dimalt(){return this.getAttr("dimalt")}set dimalt(t){this.setAttr("dimalt",t)}get dimaltd(){return this.getAttr("dimaltd")}set dimaltd(t){this.setAttr("dimaltd",t)}get dimtofl(){return this.getAttr("dimtofl")}set dimtofl(t){this.setAttr("dimtofl",t)}get dimsah(){return this.getAttr("dimsah")}set dimsah(t){this.setAttr("dimsah",t)}get dimtix(){return this.getAttr("dimtix")}set dimtix(t){this.setAttr("dimtix",t)}get dimsoxd(){return this.getAttr("dimsoxd")}set dimsoxd(t){this.setAttr("dimsoxd",t)}get dimclrd(){return this.getAttr("dimclrd")}set dimclrd(t){this.setAttr("dimclrd",t)}get dimclre(){return this.getAttr("dimclre")}set dimclre(t){this.setAttr("dimclre",t)}get dimclrt(){return this.getAttr("dimclrt")}set dimclrt(t){this.setAttr("dimclrt",t)}get dimadec(){return this.getAttr("dimadec")}set dimadec(t){this.setAttr("dimadec",t)}get dimunit(){return this.getAttr("dimunit")}set dimunit(t){this.setAttr("dimunit",t)}get dimdec(){return this.getAttr("dimdec")}set dimdec(t){this.setAttr("dimdec",t)}get dimtdec(){return this.getAttr("dimtdec")}set dimtdec(t){this.setAttr("dimtdec",t)}get dimaltu(){return this.getAttr("dimaltu")}set dimaltu(t){this.setAttr("dimaltu",t)}get dimalttd(){return this.getAttr("dimalttd")}set dimalttd(t){this.setAttr("dimalttd",t)}get dimaunit(){return this.getAttr("dimaunit")}set dimaunit(t){this.setAttr("dimaunit",t)}get dimfrac(){return this.getAttr("dimfrac")}set dimfrac(t){this.setAttr("dimfrac",t)}get dimlunit(){return this.getAttr("dimlunit")}set dimlunit(t){this.setAttr("dimlunit",t)}get dimdsep(){return this.getAttr("dimdsep")}set dimdsep(t){this.setAttr("dimdsep",t)}get dimtmove(){return this.getAttr("dimtmove")}set dimtmove(t){this.setAttr("dimtmove",t)}get dimjust(){return this.getAttr("dimjust")}set dimjust(t){this.setAttr("dimjust",t)}get dimsd1(){return this.getAttr("dimsd1")}set dimsd1(t){this.setAttr("dimsd1",t)}get dimsd2(){return this.getAttr("dimsd2")}set dimsd2(t){this.setAttr("dimsd2",t)}get dimtolj(){return this.getAttr("dimtolj")}set dimtolj(t){this.setAttr("dimtolj",t)}get dimtzin(){return this.getAttr("dimtzin")}set dimtzin(t){this.setAttr("dimtzin",t)}get dimaltz(){return this.getAttr("dimaltz")}set dimaltz(t){this.setAttr("dimaltz",t)}get dimalttz(){return this.getAttr("dimalttz")}set dimalttz(t){this.setAttr("dimalttz",t)}get dimfit(){return this.getAttr("dimfit")}set dimfit(t){this.setAttr("dimfit",t)}get dimupt(){return this.getAttr("dimupt")}set dimupt(t){this.setAttr("dimupt",t)}get dimatfit(){return this.getAttr("dimatfit")}set dimatfit(t){this.setAttr("dimatfit",t)}get dimtxsty(){return this.getAttr("dimtxsty")}set dimtxsty(t){this.setAttr("dimtxsty",t)}get dimldrblk(){return this.getAttr("dimldrblk")}set dimldrblk(t){this.setAttr("dimldrblk",t)}get dimblk(){return this.getAttr("dimblk")}set dimblk(t){this.setAttr("dimblk",t)}get dimblk1(){return this.getAttr("dimblk1")}set dimblk1(t){this.setAttr("dimblk1",t)}get dimblk2(){return this.getAttr("dimblk2")}set dimblk2(t){this.setAttr("dimblk2",t)}get dimlwd(){return this.getAttr("dimlwd")}set dimlwd(t){this.setAttr("dimlwd",t)}get dimlwe(){return this.getAttr("dimlwe")}set dimlwe(t){this.setAttr("dimlwe",t)}dxfOut(...t){const[e,i=!1]=t;return e.writeHandle(105,this.objectId),e.writeObjectId(330,this.ownerId),e.writeObjectId(360,this.extensionDictionary),this.dxfOutFields(e),i&&this.dxfOutXData(e),this}dxfOutFields(t){super.dxfOutFields(t);const e=this.database.tables.textStyleTable.getAt(this.dimtxsty),i=this.database.tables.blockTable.getAt(this.dimldrblk),r=this.database.tables.blockTable.getAt(this.dimblk),s=this.database.tables.blockTable.getAt(this.dimblk1),o=this.database.tables.blockTable.getAt(this.dimblk2);return t.writeSubclassMarker("AcDbDimStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),t.writeString(3,this.dimpost),t.writeString(4,this.dimapost),t.writeDouble(40,this.dimscale),t.writeDouble(41,this.dimasz),t.writeDouble(42,this.dimexo),t.writeDouble(43,this.dimdli),t.writeDouble(44,this.dimexe),t.writeDouble(140,this.dimtxt),t.writeDouble(147,this.dimgap),t.writeInt16(170,this.dimalt),t.writeInt16(171,this.dimtol),t.writeInt16(172,this.dimlim),t.writeInt16(173,this.dimtih),t.writeInt16(174,this.dimtoh),t.writeObjectId(340,e==null?void 0:e.objectId),t.writeObjectId(341,i==null?void 0:i.objectId),t.writeObjectId(342,r==null?void 0:r.objectId),t.writeObjectId(343,s==null?void 0:s.objectId),t.writeObjectId(344,o==null?void 0:o.objectId),t.writeInt16(371,this.dimlwd),t.writeInt16(372,this.dimlwe),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbDimStyleTableRecord");const e=i=>i===0?0:1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const i=t.readItem();if(!i)break;const r=Number(i.code);if(r===100){t.pushBackItem(i);break}const s=Number(i.value);switch(r){case 2:this.name=String(i.value);break;case 70:break;case 3:this.dimpost=String(i.value);break;case 4:this.dimapost=String(i.value);break;case 5:this.dimblk=String(i.value);break;case 6:this.dimblk1=String(i.value);break;case 7:this.dimblk2=String(i.value);break;case 40:this.dimscale=s;break;case 41:this.dimasz=s;break;case 42:this.dimexo=s;break;case 43:this.dimdli=s;break;case 44:this.dimexe=s;break;case 45:this.dimrnd=s;break;case 46:this.dimdle=s;break;case 47:this.dimtp=s;break;case 48:this.dimtm=s;break;case 140:this.dimtxt=s;break;case 141:this.dimcen=s;break;case 142:this.dimtsz=s;break;case 143:this.dimaltf=s;break;case 144:this.dimlfac=s;break;case 145:this.dimtvp=s;break;case 146:this.dimtfac=s;break;case 147:this.dimgap=s;break;case 148:this.dimaltrnd=s;break;case 71:this.dimtol=e(s);break;case 72:this.dimlim=e(s);break;case 73:this.dimtih=e(s);break;case 74:this.dimtoh=e(s);break;case 75:this.dimse1=e(s);break;case 76:this.dimse2=e(s);break;case 77:this.dimtad=s;break;case 78:this.dimzin=s;break;case 79:this.dimazin=s;break;case 170:this.dimalt=e(s);break;case 171:this.dimaltd=s;break;case 172:this.dimtofl=e(s);break;case 173:this.dimsah=e(s);break;case 174:this.dimtix=e(s);break;case 175:this.dimsoxd=e(s);break;case 176:this.dimclrd=s;break;case 177:this.dimclre=s;break;case 178:this.dimclrt=s;break;case 179:this.dimadec=s;break;case 270:this.dimunit=s;break;case 271:this.dimdec=s;break;case 272:this.dimtdec=s;break;case 273:this.dimaltu=s;break;case 274:this.dimalttd=s;break;case 275:this.dimaunit=s;break;case 276:this.dimfrac=s;break;case 277:this.dimlunit=s;break;case 278:this.dimdsep=typeof i.value=="string"?i.value:String.fromCharCode(s||46);break;case 279:this.dimtmove=s;break;case 280:this.dimjust=s;break;case 281:this.dimsd1=e(s);break;case 282:this.dimsd2=e(s);break;case 283:this.dimtolj=s;break;case 284:this.dimtzin=s;break;case 285:this.dimaltz=s;break;case 286:this.dimalttz=s;break;case 287:this.dimfit=s;break;case 288:this.dimupt=e(s);break;case 289:this.dimatfit=s;break;case 340:this.dimtxsty=String(i.value);break;case 341:this.dimldrblk=String(i.value);break;case 342:this.dimblk=String(i.value);break;case 343:this.dimblk1=String(i.value);break;case 344:this.dimblk2=String(i.value);break;case 371:this.dimlwd=s;break;case 372:this.dimlwe=s;break}}return this}};Js.DEFAULT_DIM_VALUES={name:"",dimpost:"",dimapost:"",dimscale:1,dimasz:2.5,dimexo:.625,dimdli:.38,dimexe:.18,dimrnd:0,dimdle:0,dimtp:0,dimtm:0,dimtxt:2.5,dimcen:2.5,dimtsz:0,dimaltf:0,dimlfac:1,dimtvp:0,dimtfac:1,dimgap:1,dimaltrnd:0,dimtol:0,dimlim:0,dimtih:0,dimtoh:0,dimse1:0,dimse2:0,dimtad:0,dimzin:0,dimazin:0,dimalt:0,dimaltd:2,dimtofl:0,dimsah:0,dimtix:0,dimsoxd:0,dimclrd:0,dimclre:0,dimclrt:0,dimadec:0,dimunit:2,dimdec:4,dimtdec:4,dimaltu:2,dimalttd:2,dimaunit:0,dimfrac:0,dimlunit:2,dimdsep:".",dimtmove:0,dimjust:0,dimsd1:0,dimsd2:0,dimtolj:0,dimtzin:0,dimaltz:0,dimalttz:0,dimfit:0,dimupt:0,dimatfit:3,dimtxsty:ht,dimldrblk:"",dimblk:"",dimblk1:"",dimblk2:"",dimlwd:-2,dimlwe:-2};let Gt=Js;function Ug(){return{color:new G,description:"",standardFlags:0,isHidden:!1,isInUse:!0,isOff:!1,isPlottable:!0,transparency:new xt,linetype:"",lineWeight:1,materialId:-1}}const y_=["name",...Object.keys(Ug())];class lr extends Ue{constructor(t,e){t=t||{},se(t,Ug()),super(t,e)}get color(){return this.getAttr("color")}set color(t){this.setAttr("color",t.clone())}get description(){return this.getAttr("description")}set description(t){this.setAttr("description",t)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get isFrozen(){return(this.standardFlags&1)==1}set isFrozen(t){const e=t?1:0;this.standardFlags=this.standardFlags|e}get isHidden(){return this.getAttr("isHidden")}set isHidden(t){this.setAttr("isHidden",t)}get isInUse(){return this.getAttr("isInUse")}set isInUse(t){this.setAttr("isInUse",t)}get isLocked(){return(this.standardFlags&4)==4}set isLocked(t){const e=t?4:0;this.standardFlags=this.standardFlags|e}get isOff(){return this.getAttr("isOff")}set isOff(t){this.setAttr("isOff",t)}get isPlottable(){return this.getAttr("isPlottable")}set isPlottable(t){this.setAttr("isPlottable",t)}get transparency(){return this.getAttr("transparency")}set transparency(t){this.setAttr("transparency",t.clone())}get linetype(){return this.getAttr("linetype")}set linetype(t){this.setAttr("linetype",t)}get lineStyle(){var e;const t=(e=this.database)==null?void 0:e.tables.linetypeTable.getAt(this.linetype);if(t)return{type:"UserSpecified",...t.linetype}}get lineWeight(){return this.getAttr("lineWeight")}set lineWeight(t){this.setAttr("lineWeight",t)}get materialId(){return this.getAttr("materialId")}set materialId(t){this.setAttr("materialId",t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeCmColor(this.color),t.writeString(6,this.linetype),t.writeInt16(290,this.isPlottable?1:0),t.writeLineWeight(370,this.lineWeight),t.writeTransparency(this.transparency),this.description&&t.writeString(4,this.description),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbLayerTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const i=Number(e.code);if(i===100){t.pushBackItem(e);break}switch(i){case 2:this.name=String(e.value);break;case 70:this.standardFlags=Number(e.value);break;case 62:{const r=Number(e.value);this.isOff=r<0,this.color.colorIndex=Math.abs(r);break}case 420:this.color.setRGBValue(Number(e.value));break;case 6:this.linetype=String(e.value);break;case 290:this.isPlottable=Number(e.value)!==0;break;case 370:this.lineWeight=Number(e.value);break;case 440:this.transparency=xt.deserialize(Number(e.value));break;case 4:this.description=String(e.value);break}}return this}}class sn extends Ue{constructor(t,e){t=t||{},se(t,{standardFlag:0,description:"",totalPatternLength:0}),super(t,e)}get numDashes(){const t=this.getAttrWithoutException("pattern");return t?t.length:0}get patternLength(){return this.getAttr("totalPatternLength")}get comments(){return this.getAttr("description")}get linetype(){return{name:this.name,standardFlag:this.getAttr("standardFlag"),description:this.getAttr("description"),totalPatternLength:this.getAttr("totalPatternLength"),pattern:this.getAttrWithoutException("pattern")}}dashLengthAt(t){if(t<0||t>=this.numDashes)throw new Error('Index must be greater than or equal to zero, but less than the value of property "numDashes".');return this.getAttr("pattern")[t].elementLength}toPreviewSvgString(t){const e=Math.max((t==null?void 0:t.width)??220,1),i=Math.max((t==null?void 0:t.height)??36,1),r=Math.min(Math.max((t==null?void 0:t.padding)??8,0),Math.floor(e/2)),s=Math.max((t==null?void 0:t.strokeWidth)??2,.5),o=this.escapeSvgAttribute((t==null?void 0:t.stroke)??"currentColor"),a=Math.max((t==null?void 0:t.repeats)??4,1),c=i/2,l=r,h=Math.max(e-r,l+1),u=h-l,d=this.getAttrWithoutException("pattern")??[];if(d.length===0||this.patternLength<=0||!d.some(_=>_.elementLength!==0))return this.buildSvgString({width:e,height:i,stroke:o,strokeWidth:s,lineSegments:[[l,h]],dots:[],y:c});const g=[],f=[],p=u/(this.patternLength*a),m=.5,y=Math.max(s*2,2);let b=l;for(;b<h;)for(const _ of d){if(b>=h)break;const w=_.elementLength;if(w===0){f.push(b),b=Math.min(b+y,h);continue}const S=Math.max(Math.abs(w)*p,m),P=Math.min(b+S,h);w>0&&P>b&&g.push([b,P]),b=P}return this.buildSvgString({width:e,height:i,stroke:o,strokeWidth:s,lineSegments:g,dots:f,y:c})}buildSvgString(t){const{width:e,height:i,stroke:r,strokeWidth:s,lineSegments:o,dots:a,y:c}=t,l=o.map(([u,d])=>`<line x1="${u.toFixed(2)}" y1="${c.toFixed(2)}" x2="${d.toFixed(2)}" y2="${c.toFixed(2)}" stroke="${r}" stroke-width="${s.toFixed(2)}" stroke-linecap="round" />`).join(""),h=a.map(u=>`<circle cx="${u.toFixed(2)}" cy="${c.toFixed(2)}" r="${(s/2).toFixed(2)}" fill="${r}" />`).join("");return`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${i}" viewBox="0 0 ${e} ${i}" role="img" aria-label="${this.escapeSvgAttribute(this.name)} linetype preview">${l}${h}</svg>`}escapeSvgAttribute(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'")}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLinetypeTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.getAttr("standardFlag")),t.writeString(3,this.comments),t.writeInt16(72,65),t.writeInt16(73,this.numDashes),t.writeDouble(40,this.patternLength);for(const e of this.getAttrWithoutException("pattern")??[])t.writeDouble(49,e.elementLength),t.writeInt16(74,e.elementTypeFlag),e.elementTypeFlag!==0&&(e.shapeNumber!=null&&t.writeInt16(75,e.shapeNumber),e.styleObjectId&&t.writeObjectId(340,e.styleObjectId),e.scale!=null&&t.writeDouble(46,e.scale),e.rotation!=null&&t.writeDouble(50,e.rotation),e.offsetX!=null&&t.writeDouble(44,e.offsetX),e.offsetY!=null&&t.writeDouble(45,e.offsetY),e.text&&t.writeString(9,e.text));return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbLinetypeTableRecord");const e=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const i=t.readItem();if(!i)break;const r=Number(i.code);if(r===100){t.pushBackItem(i);break}switch(r){case 2:this.name=String(i.value);break;case 70:this.setAttr("standardFlag",Number(i.value));break;case 3:this.setAttr("description",String(i.value));break;case 72:break;case 73:break;case 40:this.setAttr("totalPatternLength",Number(i.value));break;case 49:e.push({elementLength:Number(i.value),elementTypeFlag:0});break;case 74:e.length>0&&(e[e.length-1].elementTypeFlag=Number(i.value));break;case 75:e.length>0&&(e[e.length-1].shapeNumber=Number(i.value));break;case 340:e.length>0&&(e[e.length-1].styleObjectId=String(i.value));break;case 46:e.length>0&&(e[e.length-1].scale=Number(i.value));break;case 50:e.length>0&&(e[e.length-1].rotation=Number(i.value));break;case 44:e.length>0&&(e[e.length-1].offsetX=Number(i.value));break;case 45:e.length>0&&(e[e.length-1].offsetY=Number(i.value));break;case 9:e.length>0&&(e[e.length-1].text=String(i.value));break}}return this.setAttr("pattern",e),this}}class fs extends Ue{constructor(t){typeof t=="string"&&(t={name:t}),super(t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRegAppTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbRegAppTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const i=Number(e.code);if(i===100){t.pushBackItem(e);break}switch(i){case 2:this.name=String(e.value);break}}return this}}class wo extends Ue{constructor(t,e){t=t||{},se(t,{standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:0,font:"",bigFont:""}),super(t,e),this.setAttr("font",this.getFileNameWithoutExtension(this.getAttr("font")||this.getAttrWithoutException("extendedFont")||this.name))}get obliquingAngle(){return this.getAttr("obliqueAngle")}set obliquingAngle(t){this.setAttr("obliqueAngle",t)}get priorSize(){return this.getAttr("lastHeight")}set priorSize(t){this.setAttr("lastHeight",t)}get textSize(){return this.getAttr("fixedTextHeight")}set textSize(t){this.setAttr("fixedTextHeight",t)}get xScale(){return this.getAttr("widthFactor")}set xScale(t){this.setAttr("widthFactor",t)}get isVertical(){return(this.getAttr("standardFlag")&4)===4}set isVertical(t){const e=this.getAttr("standardFlag");this.setAttr("standardFlag",t?e|4:e&-5)}get isShapeFile(){return(this.getAttr("standardFlag")&1)===1}set isShapeFile(t){const e=this.getAttr("standardFlag");this.setAttr("standardFlag",t?e|1:e&-2)}get fileName(){return this.getAttr("font")}set fileName(t){this.setAttr("font",t)}get bigFontFileName(){return this.getAttr("bigFont")}set bigFontFileName(t){this.setAttr("bigFont",t)}get textStyle(){return{name:this.name,standardFlag:this.getAttr("standardFlag"),fixedTextHeight:this.getAttr("fixedTextHeight"),widthFactor:this.getAttr("widthFactor"),obliqueAngle:this.getAttr("obliqueAngle"),textGenerationFlag:this.getAttr("textGenerationFlag"),lastHeight:this.getAttr("lastHeight"),font:this.getAttr("font"),bigFont:this.getAttr("bigFont"),extendedFont:this.getAttrWithoutException("extendedFont")}}getFileNameWithoutExtension(t){const e=t.split("/").pop();if(e){const i=e.lastIndexOf(".");return i===-1?e:e.substring(0,i)}return t}get dxfFontFileName(){var e;const t=((e=this.fileName)==null?void 0:e.trim())??"";return!t||!this.isShapeFile||/\.[^./\\]+$/i.test(t)?t:`${t}.shx`}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTextStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.getAttr("standardFlag")),t.writeDouble(40,this.textSize),t.writeDouble(41,this.xScale),t.writeAngle(50,this.obliquingAngle),t.writeInt16(71,this.getAttr("textGenerationFlag")),t.writeDouble(42,this.priorSize),t.writeString(3,this.dxfFontFileName),t.writeString(4,this.bigFontFileName),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbTextStyleTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const i=Number(e.code);if(i===100){t.pushBackItem(e);break}switch(i){case 2:this.name=String(e.value);break;case 70:this.setAttr("standardFlag",Number(e.value));break;case 40:this.textSize=Number(e.value);break;case 41:this.xScale=Number(e.value);break;case 50:this.obliquingAngle=Number(e.value);break;case 71:this.setAttr("textGenerationFlag",Number(e.value));break;case 42:this.priorSize=Number(e.value);break;case 3:this.fileName=this.getFileNameWithoutExtension(String(e.value));break;case 4:this.bigFontFileName=String(e.value);break}}return this}dxfInXData(t){super.dxfInXData(t),this.applyExtendedFontFromXData()}applyExtendedFontFromXData(){const t=this.getXData("ACAD");if(t){for(const i of t)if(Number(i.code)===1e3&&i.value!=null){const r=String(i.value).trim();if(r){this.setAttr("extendedFont",r);break}}}if(!(this.getAttr("font")??"").trim()){const i=this.getAttrWithoutException("extendedFont")||this.name||"";i&&(this.fileName=this.getFileNameWithoutExtension(i))}}}class Gg extends Ue{constructor(t,e){t=t||{},se(t,{standardFlags:0,origin:new x(0,0,0),xAxis:new x(1,0,0),yAxis:new x(0,1,0),isOrthographic:!1,elevation:0}),super(t,e)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get origin(){return this.getAttr("origin")}set origin(t){this.setAttr("origin",t.clone())}get xAxis(){return this.getAttr("xAxis")}set xAxis(t){this.setAttr("xAxis",t.clone())}get yAxis(){return this.getAttr("yAxis")}set yAxis(t){this.setAttr("yAxis",t.clone())}get isOrthographic(){return this.getAttr("isOrthographic")}set isOrthographic(t){this.setAttr("isOrthographic",t)}get elevation(){return this.getAttr("elevation")}set elevation(t){this.setAttr("elevation",t)}get baseUcsId(){return this.getAttrWithoutException("baseUcsId")}set baseUcsId(t){this.setAttr("baseUcsId",t)}get orthographicType(){return this.getAttrWithoutException("orthographicType")}set orthographicType(t){this.setAttr("orthographicType",t)}get orthographicOrigin(){return this.getAttrWithoutException("orthographicOrigin")}set orthographicOrigin(t){this.setAttr("orthographicOrigin",t==null?void 0:t.clone())}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbUCSTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writePoint3d(10,this.origin),t.writePoint3d(11,this.xAxis),t.writePoint3d(12,this.yAxis),t.writeDouble(146,this.elevation),t.writeInt16(79,this.isOrthographic?1:0),this.isOrthographic&&t.writeObjectId(346,this.baseUcsId),this.orthographicType!=null&&this.orthographicOrigin&&(t.writeInt16(71,this.orthographicType),t.writePoint3d(13,this.orthographicOrigin)),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbUCSTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const i=Number(e.code);if(i===100){t.pushBackItem(e);break}const r=Number(e.value);switch(i){case 2:this.name=String(e.value);break;case 70:this.standardFlags=r;break;case 10:this.origin.x=r;break;case 20:this.origin.y=r;break;case 30:this.origin.z=r;break;case 11:this.xAxis.x=r;break;case 21:this.xAxis.y=r;break;case 31:this.xAxis.z=r;break;case 12:this.yAxis.x=r;break;case 22:this.yAxis.y=r;break;case 32:this.yAxis.z=r;break;case 79:this.isOrthographic=r!==0;break;case 146:this.elevation=r;break;case 346:this.baseUcsId=String(e.value);break;case 71:this.orthographicType=r;break;case 13:this.orthographicOrigin=this.orthographicOrigin??new x,this.orthographicOrigin.x=r;break;case 23:this.orthographicOrigin&&(this.orthographicOrigin.y=r);break;case 33:this.orthographicOrigin&&(this.orthographicOrigin.z=r);break}}return this}}const b_=()=>({center:new M,viewDirectionFromTarget:new x(0,0,1),viewTarget:new x(0,0,0),lensLength:500,frontClippingPlane:0,backClippingPlane:0,viewHeight:1e3,viewTwistAngle:0,frozenLayers:[],styleSheet:"",renderMode:exports.AcGiRenderMode.OPTIMIZED_2D,viewMode:0,ucsIconSetting:0,ucsOrigin:new x(0,0,0),ucsXAxis:new x(1,0,0),ucsYAxis:new x(0,1,0),orthographicType:exports.AcGiOrthographicType.TOP,shadePlotSetting:0,shadePlotObjectId:void 0,visualStyleObjectId:void 0,isDefaultLightingOn:!1,defaultLightingType:exports.AcGiDefaultLightingType.ONE_DISTANT_LIGHT,brightness:0,contrast:0,ambientColor:void 0,aspectRatio:void 0});class Vc extends Ue{constructor(t,e){t=t||{},se(t,{gsView:b_()}),super(t,e)}get gsView(){return this.getAttr("gsView")}get centerPoint(){return this.gsView.center}set centerPoint(t){this.gsView.center.copy(t)}get viewDirectionFromTarget(){return this.gsView.viewDirectionFromTarget}set viewDirectionFromTarget(t){this.gsView.viewDirectionFromTarget.copy(t)}get viewTarget(){return this.gsView.viewTarget}set viewTarget(t){this.gsView.viewTarget.copy(t)}get viewHeight(){return this.gsView.viewHeight}set viewHeight(t){this.gsView.viewHeight=t}get viewTwistAngle(){return this.gsView.viewTwistAngle}set viewTwistAngle(t){this.gsView.viewTwistAngle=t}get lensLength(){return this.gsView.lensLength}set lensLength(t){this.gsView.lensLength=t}get frontClippingPlane(){return this.gsView.frontClippingPlane}set frontClippingPlane(t){this.gsView.frontClippingPlane=t}get backClippingPlane(){return this.gsView.backClippingPlane}set backClippingPlane(t){this.gsView.backClippingPlane=t}get renderMode(){return this.gsView.renderMode}set renderMode(t){this.gsView.renderMode=t}get viewMode(){return this.gsView.viewMode}set viewMode(t){this.gsView.viewMode=t}get ucsIconSetting(){return this.gsView.ucsIconSetting}set ucsIconSetting(t){this.gsView.ucsIconSetting=t}get ucsOrigin(){return this.gsView.ucsOrigin}set ucsOrigin(t){this.gsView.ucsOrigin.copy(t)}get ucsXAxis(){return this.gsView.ucsXAxis}set ucsXAxis(t){this.gsView.ucsXAxis.copy(t)}get ucsYAxis(){return this.gsView.ucsYAxis}set ucsYAxis(t){this.gsView.ucsYAxis.copy(t)}get orthographicType(){return this.gsView.orthographicType}set orthographicType(t){this.gsView.orthographicType=t}get shadePlotSetting(){return this.gsView.shadePlotSetting}set shadePlotSetting(t){this.gsView.shadePlotSetting=t}get shadePlotObjectId(){return this.gsView.shadePlotObjectId}set shadePlotObjectId(t){this.gsView.shadePlotObjectId=t}get visualStyleObjectId(){return this.gsView.visualStyleObjectId}set visualStyleObjectId(t){this.gsView.visualStyleObjectId=t}get isDefaultLightingOn(){return this.gsView.isDefaultLightingOn}set isDefaultLightingOn(t){this.gsView.isDefaultLightingOn=t}get defaultLightingType(){return this.gsView.defaultLightingType}set defaultLightingType(t){this.gsView.defaultLightingType=t}get brightness(){return this.gsView.brightness}set brightness(t){this.gsView.brightness=t}get contrast(){return this.gsView.contrast}set contrast(t){this.gsView.contrast=t}get ambientColor(){return this.gsView.ambientColor}set ambientColor(t){this.gsView.ambientColor=t}get aspectRatio(){return this.gsView.aspectRatio}set aspectRatio(t){this.gsView.aspectRatio=t}}const Rh=2,__=.45,x_=1e5;function w_(n){var i;const t=n,e=t.aspectRatio??((i=t.gsView)==null?void 0:i.aspectRatio);return Number.isFinite(e)?e:void 0}function v_(n,t){if(Number.isFinite(t)&&t>0)return t;const e=w_(n);return e!=null&&e>0?e:1}function A_(n,t){const e=Math.max(n.min.x,t.min.x),i=Math.max(n.min.y,t.min.y),r=Math.min(n.max.x,t.max.x),s=Math.min(n.max.y,t.max.y);return e>=r||i>=s?0:(r-e)*(s-i)}function Nh(n){return{x:(n.min.x+n.max.x)/2,y:(n.min.y+n.max.y)/2}}function P_(n){if(!n||n.isEmpty())return!1;const t=n.max.x-n.min.x,e=n.max.y-n.min.y;return t>0&&e>0}class on extends Vc{static isActiveVportName(t){return t.toLowerCase()===ei.toLowerCase()}constructor(t,e){t=t||{},se(t,{circleSides:100,lowerLeftCorner:new M(0,0),upperRightCorner:new M(1,1),snapBase:new M(0,0),snapAngle:0,snapSpacing:new M(0,0),standardFlag:0,gridSpacing:new M,gridMajor:10,ucsElevation:0}),super(t,e)}get circleSides(){return this.getAttr("circleSides")}set circleSides(t){this.setAttr("circleSides",t)}get center(){return this.centerPoint}set center(t){this.centerPoint=t}get lowerLeftCorner(){return this.getAttr("lowerLeftCorner")}set lowerLeftCorner(t){this.getAttr("lowerLeftCorner").copy(t)}get upperRightCorner(){return this.getAttr("upperRightCorner")}set upperRightCorner(t){this.getAttr("upperRightCorner").copy(t)}get snapBase(){return this.getAttr("snapBase")}set snapBase(t){this.getAttr("snapBase").copy(t)}get snapAngle(){return this.getAttr("snapAngle")}set snapAngle(t){this.setAttr("snapAngle",t)}get snapIncrements(){return this.getAttr("snapSpacing")}set snapIncrements(t){this.getAttr("snapSpacing").copy(t)}get gridMajor(){return this.getAttr("gridMajor")}set gridMajor(t){this.setAttr("gridMajor",t)}get gridIncrements(){return this.getAttr("gridSpacing")}set gridIncrements(t){this.getAttr("gridSpacing").copy(t)}get standardFlag(){return this.getAttr("standardFlag")}set standardFlag(t){this.setAttr("standardFlag",t)}get snapEnabled(){return!!(this.standardFlag&256)}get backgroundObjectId(){return this.getAttrWithoutException("backgroundObjectId")}set backgroundObjectId(t){this.setAttr("backgroundObjectId",t)}get ucsElevation(){return this.getAttr("ucsElevation")}set ucsElevation(t){this.setAttr("ucsElevation",t)}modelViewBox(t){const e=this.centerPoint,i=this.viewHeight;if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(i)||i<=0)return;const r=this.viewTwistAngle;let s=e.x,o=e.y;if(Number.isFinite(r)&&r!==0){const d=Math.cos(r),g=Math.sin(r);s=e.x*d-e.y*g,o=e.x*g+e.y*d}const a=this.viewTarget;a&&Number.isFinite(a.x)&&Number.isFinite(a.y)&&(s+=a.x,o+=a.y);const c=v_(this,t),l=i*c,h=i/2,u=l/2;return new It().expandByPoint({x:s-u,y:o-h}).expandByPoint({x:s+u,y:o+h})}static isModelViewBoxUsable(t,e){if(t.isEmpty()||e.isEmpty())return!1;const i=t.max.x-t.min.x,r=t.max.y-t.min.y,s=e.max.x-e.min.x,o=e.max.y-e.min.y;if(i<=0||r<=0||s<=0||o<=0||i>s*Rh||r>o*Rh)return!1;const a=Math.max(s,o)*__,c=Nh(t),l=Nh(e);if(Math.hypot(c.x-l.x,c.y-l.y)>a)return!1;const u=i*r,d=A_(t,e);return!(d<=0||d/u<.25)}resolveModelViewBox(t,e){const i=this.modelViewBox(t);if(!(!i||!on.isModelViewBoxStructurallyValid(i))){if(P_(e)){if(!on.isModelViewBoxUsable(i,e))return}else if(!on.isModelViewBoxPlausibleWithoutExtents(i))return;return i}}static isModelViewBoxStructurallyValid(t){if(t.isEmpty())return!1;const e=t.max.x-t.min.x,i=t.max.y-t.min.y;return Number.isFinite(e)&&Number.isFinite(i)&&e>0&&i>0}static isModelViewBoxPlausibleWithoutExtents(t){const e=t.max.x-t.min.x,i=t.max.y-t.min.y;return Math.max(e,i)<=x_}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewportTableRecord"),t.writeString(2,this.name),t.writeDouble(40,this.gsView.viewHeight),this.gsView.aspectRatio!=null&&Number.isFinite(this.gsView.aspectRatio)&&t.writeDouble(41,this.gsView.aspectRatio),t.writeDouble(45,this.gsView.viewHeight),t.writePoint2d(10,this.lowerLeftCorner),t.writePoint2d(11,this.upperRightCorner),t.writePoint2d(12,this.center),t.writePoint2d(13,this.snapBase),t.writePoint2d(14,this.snapIncrements),t.writePoint2d(15,this.gridIncrements),t.writeInt16(70,this.standardFlag),t.writeInt16(71,this.circleSides),t.writeDouble(42,this.gsView.lensLength),t.writePoint3d(16,this.gsView.viewDirectionFromTarget),t.writePoint3d(17,this.gsView.viewTarget),t.writeAngle(50,this.snapAngle),t.writeAngle(51,this.gsView.viewTwistAngle),t.writeInt16(61,this.gridMajor),t.writeDouble(146,this.ucsElevation),t.writeInt16(170,this.shadePlotSetting),t.writeInt16(282,this.defaultLightingType),t.writeInt16(292,this.isDefaultLightingOn?1:0),t.writeInt16(281,this.backgroundObjectId?1:0),t.writeObjectId(332,this.backgroundObjectId),t.writeObjectId(333,this.shadePlotObjectId),t.writeObjectId(348,this.gsView.visualStyleObjectId),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbAbstractViewTableRecord"),t.atSubclassData("AcDbViewportTableRecord");const e=[...this.gsView.frozenLayers??[]];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const i=t.readItem();if(!i)break;const r=Number(i.code);if(r===100){t.pushBackItem(i);break}const s=Number(i.value);switch(r){case 2:this.name=String(i.value);break;case 1:this.gsView.styleSheet=String(i.value);break;case 10:this.lowerLeftCorner.x=s;break;case 20:this.lowerLeftCorner.y=s;break;case 11:this.upperRightCorner.x=s;break;case 21:this.upperRightCorner.y=s;break;case 12:this.center.x=s,this.gsView.center.x=s;break;case 22:this.center.y=s,this.gsView.center.y=s;break;case 13:this.snapBase.x=s;break;case 23:this.snapBase.y=s;break;case 14:this.snapIncrements.x=s;break;case 24:this.snapIncrements.y=s;break;case 15:this.gridIncrements.x=s;break;case 25:this.gridIncrements.y=s;break;case 16:this.gsView.viewDirectionFromTarget.x=s;break;case 26:this.gsView.viewDirectionFromTarget.y=s;break;case 36:this.gsView.viewDirectionFromTarget.z=s;break;case 17:this.gsView.viewTarget.x=s;break;case 27:this.gsView.viewTarget.y=s;break;case 37:this.gsView.viewTarget.z=s;break;case 40:case 45:this.gsView.viewHeight=s;break;case 41:Number.isFinite(s)&&s>0&&(this.gsView.aspectRatio=s);break;case 42:this.gsView.lensLength=s;break;case 43:this.gsView.frontClippingPlane=s;break;case 44:this.gsView.backClippingPlane=s;break;case 50:this.snapAngle=s;break;case 51:this.gsView.viewTwistAngle=s;break;case 61:this.gridMajor=s;break;case 70:this.standardFlag=s;break;case 71:s>=1&&s<=2e4&&(this.circleSides=s),this.gsView.viewMode=s;break;case 72:this.circleSides=s;break;case 74:this.gsView.ucsIconSetting=s;break;case 110:this.gsView.ucsOrigin.x=s;break;case 120:this.gsView.ucsOrigin.y=s;break;case 130:this.gsView.ucsOrigin.z=s;break;case 111:this.gsView.ucsXAxis.x=s;break;case 121:this.gsView.ucsXAxis.y=s;break;case 131:this.gsView.ucsXAxis.z=s;break;case 112:this.gsView.ucsYAxis.x=s;break;case 122:this.gsView.ucsYAxis.y=s;break;case 132:this.gsView.ucsYAxis.z=s;break;case 79:this.gsView.orthographicType=s;break;case 281:this.gsView.renderMode=s;break;case 331:case 441:e.push(String(i.value));break;case 332:this.backgroundObjectId=String(i.value);break;case 146:this.ucsElevation=s;break;case 170:this.shadePlotSetting=s;break;case 282:this.defaultLightingType=s;break;case 292:this.isDefaultLightingOn=s!==0;break;case 333:this.shadePlotObjectId=String(i.value);break;case 348:this.gsView.visualStyleObjectId=String(i.value);break}}return this.gsView.frozenLayers=e,this}}class Hg extends Vc{constructor(t,e){t=t||{};const i=t.viewWidth!==void 0;se(t,{standardFlags:0,ucsAssociated:!1,cameraPlottable:!1,ucsElevation:0}),super(t,e),i||(this.viewWidth=this.viewHeight)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get viewWidth(){return this.getAttr("viewWidth")}set viewWidth(t){this.setAttr("viewWidth",t)}get ucsAssociated(){return this.getAttr("ucsAssociated")}set ucsAssociated(t){this.setAttr("ucsAssociated",t)}get cameraPlottable(){return this.getAttr("cameraPlottable")}set cameraPlottable(t){this.setAttr("cameraPlottable",t)}get ucsElevation(){return this.getAttr("ucsElevation")}set ucsElevation(t){this.setAttr("ucsElevation",t)}get ucsObjectId(){return this.getAttrWithoutException("ucsObjectId")}set ucsObjectId(t){this.setAttr("ucsObjectId",t)}get ucsBaseObjectId(){return this.getAttrWithoutException("ucsBaseObjectId")}set ucsBaseObjectId(t){this.setAttr("ucsBaseObjectId",t)}get backgroundObjectId(){return this.getAttrWithoutException("backgroundObjectId")}set backgroundObjectId(t){this.setAttr("backgroundObjectId",t)}get liveSectionObjectId(){return this.getAttrWithoutException("liveSectionObjectId")}set liveSectionObjectId(t){this.setAttr("liveSectionObjectId",t)}get sunObjectId(){return this.getAttrWithoutException("sunObjectId")}set sunObjectId(t){this.setAttr("sunObjectId",t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeDouble(40,this.gsView.viewHeight),t.writePoint2d(10,this.centerPoint),t.writeDouble(41,this.viewWidth),t.writePoint3d(11,this.gsView.viewDirectionFromTarget),t.writePoint3d(12,this.gsView.viewTarget),t.writeDouble(42,this.gsView.lensLength),t.writeDouble(43,this.gsView.frontClippingPlane),t.writeDouble(44,this.gsView.backClippingPlane),t.writeAngle(50,this.gsView.viewTwistAngle),t.writeInt16(71,this.gsView.viewMode),t.writeInt16(281,this.gsView.renderMode),t.writeInt16(72,this.ucsAssociated?1:0),t.writeInt16(73,this.cameraPlottable?1:0),t.writeObjectId(332,this.backgroundObjectId),t.writeObjectId(334,this.liveSectionObjectId),t.writeObjectId(348,this.gsView.visualStyleObjectId),t.writeObjectId(361,this.sunObjectId),this.ucsAssociated&&(t.writePoint3d(110,this.gsView.ucsOrigin),t.writePoint3d(111,this.gsView.ucsXAxis),t.writePoint3d(112,this.gsView.ucsYAxis),t.writeInt16(79,this.gsView.orthographicType),t.writeDouble(146,this.ucsElevation),t.writeObjectId(345,this.ucsObjectId),t.writeObjectId(346,this.ucsBaseObjectId)),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbAbstractViewTableRecord"),t.atSubclassData("AcDbViewTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const i=Number(e.code);if(i===100){t.pushBackItem(e);break}const r=Number(e.value);switch(i){case 2:this.name=String(e.value);break;case 70:this.standardFlags=r;break;case 40:this.gsView.viewHeight=r;break;case 10:this.centerPoint.x=r;break;case 20:this.centerPoint.y=r;break;case 41:this.viewWidth=r;break;case 11:this.gsView.viewDirectionFromTarget.x=r;break;case 21:this.gsView.viewDirectionFromTarget.y=r;break;case 31:this.gsView.viewDirectionFromTarget.z=r;break;case 12:this.gsView.viewTarget.x=r;break;case 22:this.gsView.viewTarget.y=r;break;case 32:this.gsView.viewTarget.z=r;break;case 42:this.gsView.lensLength=r;break;case 43:this.gsView.frontClippingPlane=r;break;case 44:this.gsView.backClippingPlane=r;break;case 50:this.gsView.viewTwistAngle=r*Math.PI/180;break;case 71:this.gsView.viewMode=r;break;case 281:this.gsView.renderMode=r;break;case 72:this.ucsAssociated=r!==0;break;case 73:this.cameraPlottable=r!==0;break;case 332:this.backgroundObjectId=String(e.value);break;case 334:this.liveSectionObjectId=String(e.value);break;case 348:this.gsView.visualStyleObjectId=String(e.value);break;case 361:this.sunObjectId=String(e.value);break;case 110:this.gsView.ucsOrigin.x=r;break;case 120:this.gsView.ucsOrigin.y=r;break;case 130:this.gsView.ucsOrigin.z=r;break;case 111:this.gsView.ucsXAxis.x=r;break;case 121:this.gsView.ucsXAxis.y=r;break;case 131:this.gsView.ucsXAxis.z=r;break;case 112:this.gsView.ucsYAxis.x=r;break;case 122:this.gsView.ucsYAxis.y=r;break;case 132:this.gsView.ucsYAxis.z=r;break;case 79:this.gsView.orthographicType=r;break;case 146:this.ucsElevation=r;break;case 345:this.ucsObjectId=String(e.value);break;case 346:this.ucsBaseObjectId=String(e.value);break}}return this}}const vo=192,Hi=193,Ao=194,Po=195,Wg=200;function $o(n){if(n.isByBlock)return Hi<<24>>0;if(n.isByLayer)return vo<<24>>0;const t=n.colorIndex;if(t!=null&&t>0&&t<256)return(Po<<24|t&255)>>0;const e=n.RGB;return e!=null?(Ao<<24|e&16777215)>>0:Hi<<24>>0}function _e(n){const t=new G(exports.AcCmColorMethod.ByBlock);switch(n>>>24&255){case vo:t.setByLayer();break;case Hi:case Wg:t.setByBlock();break;case Po:t.colorIndex=n&255;break;case Ao:t.setRGBValue(n&16777215);break;default:n===256?t.setByLayer():n===0?t.setByBlock():n>0&&n<256&&(t.colorIndex=n);break}return t}const S_=127;var $g=(n=>(n[n.Extents=1]="Extents",n[n.Circle=2]="Circle",n[n.Circle3P=3]="Circle3P",n[n.CircularArc=4]="CircularArc",n[n.CircularArc3P=5]="CircularArc3P",n[n.Polyline=6]="Polyline",n[n.Polygon=7]="Polygon",n[n.Mesh=8]="Mesh",n[n.Shell=9]="Shell",n[n.Text=10]="Text",n[n.Text2=11]="Text2",n[n.Xline=12]="Xline",n[n.Ray=13]="Ray",n[n.AttributeColor=14]="AttributeColor",n[n.AttributeLayer=16]="AttributeLayer",n[n.AttributeLinetype=18]="AttributeLinetype",n[n.AttributeMarker=19]="AttributeMarker",n[n.AttributeFill=20]="AttributeFill",n[n.AttributeTrueColor=22]="AttributeTrueColor",n[n.AttributeLineweight=23]="AttributeLineweight",n[n.AttributeLtscale=24]="AttributeLtscale",n[n.AttributeThickness=25]="AttributeThickness",n[n.PushMatrix=29]="PushMatrix",n[n.PopMatrix=31]="PopMatrix",n[n.PolylineWithNormals=32]="PolylineWithNormals",n[n.LwPolyline=33]="LwPolyline",n[n.UnicodeText=36]="UnicodeText",n[n.UnicodeText2=38]="UnicodeText2",n[n.EllipticArc=44]="EllipticArc",n))($g||{});const ln=A.Z_AXIS,k_=529;function I_(n){const t=n>>24&255;return t===Ao?{rgb:n&16777215}:t===vo?{colorIndex:256}:t===Hi?{colorIndex:0}:t===Po?{colorIndex:n&255}:{colorIndex:n&255}}function qo(n){return new A(n.x,n.y,n.z??0)}function Ko(n){return new x(n.x,n.y,n.z??0)}function Bh(n){return{x:n[0],y:n[1],z:n[2]}}class Ca{constructor(t,e={}){this._index=8,this._colorIndex=256,this._layer="0",this._linetype=wt,this._lineweight=exports.AcGiLineWeight.ByLineWeightDefault,this._ltscale=1,this._thickness=0,this._fill=!1,this._layers=[],this._linetypes=[],this._matrices=[],this._buffer=t,this._database=e.database,this._dxfversion=e.dxfversion??"AC1015",this._encoding=e.encoding??(this._dxfversion<"AC1024"?"windows-1252":"utf-8"),this._layer=e.defaultLayer??"0",this._database&&(this._database.tables.layerTable.newIterator().toArray().forEach(i=>this._layers.push(i.name)),this._database.tables.linetypeTable.newIterator().toArray().forEach(i=>this._linetypes.push(i.name)))}get extents(){return this._extents}scanExtents(){var i;const t=this._buffer;let e=this._index;for(;e<t.length;){const r=new DataView(t.buffer,t.byteOffset+e,8),s=r.getUint32(0,!0),o=r.getUint32(4,!0);if(s<8)break;if(o===1){const a=t.subarray(e+8,e+s);return this.readExtents(a),((i=this._extents)==null?void 0:i.length)===2?[this._extents[0],this._extents[1]]:void 0}e+=s}}worldDraw(t){const e=[],i=t.subEntityTraits,r={color:i.color.clone(),lineType:i.lineType,lineTypeScale:i.lineTypeScale,lineWeight:i.lineWeight,layer:i.layer,thickness:i.thickness},s=this._buffer;let o=this._index;for(;o<s.length;){const a=new DataView(s.buffer,s.byteOffset+o,8),c=a.getUint32(0,!0),l=a.getUint32(4,!0);if(c<8)break;const h=s.subarray(o+8,o+c);this.dispatchChunk(t,e,l,h),l!==20&&(this._fill=!1),o+=c}if(i.color=r.color,i.lineType=r.lineType,i.lineTypeScale=r.lineTypeScale,i.lineWeight=r.lineWeight,i.layer=r.layer,i.thickness=r.thickness,e.length!==0)return t.group(e)}dispatchChunk(t,e,i,r){switch(i){case 1:this.readExtents(r);break;case 2:this.drawCircle(t,e,r);break;case 3:this.drawCircle3P(t,e,r);break;case 4:this.drawCircularArc(t,e,r);break;case 5:this.drawCircularArc3P(t,e,r);break;case 44:this.drawEllipticArc(t,e,r);break;case 6:this.drawPolyline(t,e,r,!1);break;case 32:this.drawPolyline(t,e,r,!0);break;case 7:this.drawPolygon(t,e,r);break;case 33:this.drawLwPolyline(t,e,r);break;case 9:this.drawShell(t,e,r);break;case 10:this.drawText(t,e,r,!1);break;case 36:this.drawText(t,e,r,!0);break;case 11:this.drawText2(t,e,r,!1);break;case 38:this.drawText2(t,e,r,!0);break;case 12:this.drawXline(t,e,r,!1);break;case 13:this.drawXline(t,e,r,!0);break;case 14:this.readAttributeColor(r);break;case 16:this.readAttributeLayer(r);break;case 18:this.readAttributeLinetype(r);break;case 20:this.readAttributeFill(r);break;case 22:this.readAttributeTrueColor(r);break;case 23:this.readAttributeLineweight(r);break;case 24:this.readAttributeLtscale(r);break;case 25:this.readAttributeThickness(r);break;case 29:this.pushMatrix(r);break;case 31:this.popMatrix();break}}applyTraits(t){const e=t.subEntityTraits;e.layer=this._layer,e.lineTypeScale=this._ltscale,e.thickness=this._thickness,e.lineWeight=this._lineweight,this._rgbColor!=null?e.color=new G(exports.AcCmColorMethod.ByColor,this._rgbColor):this._colorIndex===256?e.color=new G(exports.AcCmColorMethod.ByLayer):this._colorIndex===0?e.color=new G(exports.AcCmColorMethod.ByBlock):this._colorIndex===7?e.color=new G(exports.AcCmColorMethod.ByACI,7):e.color=new G(exports.AcCmColorMethod.ByACI,this._colorIndex),e.lineType={name:this._linetype,type:this.resolveLineStyleType(),standardFlag:0,description:"",totalPatternLength:0}}resolveLineStyleType(){return this._linetype===wt?"ByLayer":this._linetype===ve?"ByBlock":"UserSpecified"}transformPoint(t){const e=Array.isArray(t)?Bh(t):t,i=Ko(e);return this._matrices.length>0&&i.applyMatrix4(this._matrices[this._matrices.length-1]),i}transformVector(t){const e=Array.isArray(t)?Bh(t):t,i=qo(e);return this._matrices.length>0&&i.transformDirection(this._matrices[this._matrices.length-1]),!Number.isFinite(i.lengthSq())||i.lengthSq()<1e-24?ln.clone():i.normalize()}pushEntity(t,e){e&&t.push(e)}readExtents(t){const e=new Kt(t),i=e.readVertex(),r=e.readVertex();this._extents=[new x(i[0],i[1],i[2]),new x(r[0],r[1],r[2])]}readAttributeColor(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);this._rgbColor=void 0,this._colorIndex=e>256||e<0?256:e}readAttributeLayer(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e<this._layers.length&&(this._layer=this._layers[e])}readAttributeLinetype(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e+2<this._linetypes.length?this._linetype=this._linetypes[e+2]:e===32766?this._linetype=ve:this._linetype=wt}readAttributeFill(t){this._fill=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0)!==0}readAttributeTrueColor(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0),i=I_(e);this._rgbColor=i.rgb,i.colorIndex!=null&&(this._colorIndex=i.colorIndex)}readAttributeLineweight(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e>k_?this._lineweight=e-4294967296:this._lineweight=e}readAttributeLtscale(t){this._ltscale=new DataView(t.buffer,t.byteOffset,8).getFloat64(0,!0)}readAttributeThickness(t){this._thickness=new DataView(t.buffer,t.byteOffset,8).getFloat64(0,!0)}pushMatrix(t){const e=new Float64Array(t.buffer,t.byteOffset,16),i=new F().fromArray(Array.from(e));i.transpose(),this._matrices.push(i)}popMatrix(){this._matrices.length>0&&this._matrices.pop()}loadVertices(t,e){const i=new Kt(t);let r=i.readLong();e&&(r+=1);const s=[];for(;r>0;){const[a,c,l]=i.readVertex();s.push(this.transformPoint({x:a,y:c,z:l})),r-=1}let o=ln;return e&&s.length>0&&(o=qo(s.pop())),{vertices:s,normal:o}}drawCircle(t,e,i){const r=new Kt(i),s=r.readVertex(),o=r.readFloat(),a=this.transformVector(r.readVertex());let c=Ko({x:s[0],y:s[1],z:s[2]});a.equals(ln)||(c=jt(c,a)),c=this.transformPoint(c);const l=Kn(a),h=new pt(te(c,a),o,0,X,a,l);this.applyTraits(t),this.pushEntity(e,t.circularArc(h))}drawCircle3P(t,e,i){const r=new Kt(i),s=this.transformPoint(r.readVertex()),o=this.transformPoint(r.readVertex()),a=this.transformPoint(r.readVertex()),c=pt.computeCenterPoint(s,o,a);if(!c)return;const l=c.distanceTo(s),h=new pt(c,l,0,X,ln);this.applyTraits(t),this.pushEntity(e,t.circularArc(h))}drawCircularArc(t,e,i){const r=new Kt(i),s=r.readVertex(),o=r.readFloat(),a=r.readVertex(),c=r.readVertex(),l=r.readFloat(),h=this.transformVector(a),u=Ko({x:s[0],y:s[1],z:s[2]}),d=qo({x:c[0],y:c[1],z:c[2]});this._matrices.length>0&&d.transformDirection(this._matrices[this._matrices.length-1]);const g=Number.isFinite(d.lengthSq())&&d.lengthSq()>=1e-24?d.normalize():Kn(h),f=0,p=l,m=new pt(this.transformPoint(u),o,f,p,h,g);this.applyTraits(t),this.pushEntity(e,t.circularArc(m))}drawCircularArc3P(t,e,i){const r=new Kt(i),s=this.transformPoint(r.readVertex()),o=this.transformPoint(r.readVertex()),a=this.transformPoint(r.readVertex()),c=pt.computeCenterPoint(s,a,o);if(!c)return;const l=c.distanceTo(s),h=Re(c,s,ln),u=Re(c,a,ln),d=new pt(c,l,h,u,ln);this.applyTraits(t),this.pushEntity(e,t.circularArc(d))}drawEllipticArc(t,e,i){const r=new Kt(i),s=this.transformPoint(r.readVertex()),o=this.transformVector(r.readVertex()),a=r.readFloat(),c=r.readFloat(),l=r.readFloat(),h=r.readFloat(),u=r.readFloat(),d=te({x:Math.cos(u)*a,y:Math.sin(u)*a,z:0},o),g=new le(s,o,d,a,c,l,h);this.applyTraits(t),this.pushEntity(e,t.ellipticalArc(g))}drawPolyline(t,e,i,r){var o,a;const{vertices:s}=this.loadVertices(i,r);if(s.length!==0){if(s.length===1){this.applyTraits(t);const c=((o=this._database)==null?void 0:o.pdmode)??0,l=((a=this._database)==null?void 0:a.pdsize)??0;this.pushEntity(e,t.point(s[0],{displayMode:c,displaySize:l}));return}this.applyTraits(t),this.pushEntity(e,t.lines(s))}}drawPolygon(t,e,i){const{vertices:r}=this.loadVertices(i,!1);if(r.length<2)return;if(this._fill){const o=new rt(r.map(l=>({x:l.x,y:l.y})),!0),a=new he;a.add(o);const c=t.subEntityTraits;c.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},c.drawOrder=-1,this.applyTraits(t),this.pushEntity(e,t.area(a));return}const s=[...r,r[0]];this.applyTraits(t),this.pushEntity(e,t.lines(s))}drawLwPolyline(t,e,i){const r=new og(i,this._dxfversion,this._encoding);let s=0,o=!1;r.readUnsignedLong();const a=r.readBitShort();a&8&&(s=r.readBitDouble()),a&512&&(o=!0);const c=r.readBitLong();if(c<=0)return;const l=a&16?r.readBitLong():0;this._dxfversion>="AC1024"&&(a&1024&&r.readBitLong(),a&32&&r.readBitLong());const h=r.readRawDouble(2),u=[this.transformPoint({x:h[0],y:h[1],z:s})];let d=h;for(let g=1;g<c;g++){const f=r.readBitDoubleDefault(1,d[0]),p=r.readBitDoubleDefault(1,d[1]);d=[f,p],u.push(this.transformPoint({x:f,y:p,z:s}))}for(let g=0;g<l;g++)r.readBitDouble();o&&u.length>1&&u.push(u[0].clone()),this.applyTraits(t),this.pushEntity(e,t.lines(u))}drawShell(t,e,i){const r=new Kt(i),s=r.readLong(),o=[];for(let h=0;h<s;h++){const[u,d,g]=r.readVertex();o.push(this.transformPoint({x:u,y:d,z:g}))}const a=r.readLong(),c=[];let l=0;for(;l<a;){const h=Math.abs(r.readSignedLong());l+=1+h;const u=[];for(let g=0;g<h;g++)u.push(r.readLong());const d=u.map(g=>o[g]).filter(Boolean);if(d.length>=3)for(let g=0;g<d.length;g++)c.push(d[g]),c.push(d[(g+1)%d.length])}c.length!==0&&(this.applyTraits(t),this.pushEntity(e,t.lines(c)))}drawText(t,e,i,r){const s=new Kt(i),o=this.transformPoint(s.readVertex()),a=this.transformVector(s.readVertex()),c=this.transformVector(s.readVertex()),[l,h,u]=s.readStruct([8,8,8]),d=r?s.readPaddedUnicodeString():s.readPaddedString(this._encoding);this.drawTextPrimitive(t,e,{insert:o,normal:a,textDirection:c,text:d,height:l,widthFactor:h,obliqueAngle:u})}drawText2(t,e,i,r){const s=new Kt(i),o=this.transformPoint(s.readVertex()),a=this.transformVector(s.readVertex()),c=this.transformVector(s.readVertex()),l=r?s.readPaddedUnicodeString():s.readPaddedString(this._encoding);s.readSignedLong(),s.readSignedLong();const[h,u,d]=s.readStruct([8,8,8]);s.readFloat(),this.drawTextPrimitive(t,e,{insert:o,normal:a,textDirection:c,text:l,height:h,widthFactor:u,obliqueAngle:d})}drawTextPrimitive(t,e,i){const r=Math.atan2(i.textDirection.y,i.textDirection.x),s={text:i.text,height:i.height,width:1/0,widthFactor:i.widthFactor,position:i.insert,rotation:r*180/Math.PI,drawingDirection:exports.AcGiMTextFlowDirection.BOTTOM_TO_TOP,attachmentPoint:exports.AcGiMTextAttachmentPoint.BaselineLeft},o={name:ht,standardFlag:0,fixedTextHeight:0,widthFactor:i.widthFactor,obliqueAngle:i.obliqueAngle*180/Math.PI,textGenerationFlag:0,lastHeight:i.height,font:"txt",bigFont:""};this.applyTraits(t),this.pushEntity(e,t.mtext(s,o))}drawXline(t,e,i,r){const s=new Kt(i),o=this.transformPoint(s.readVertex()),a=this.transformPoint(s.readVertex()),c=new A().subVectors(a,o);if(c.lengthSq()===0)return;const l=1e6,h=r?o.clone().add(c.normalize().multiplyScalar(l)):o.clone().sub(c.normalize().multiplyScalar(l)),u=a.clone().add(c.normalize().multiplyScalar(l));this.applyTraits(t),this.pushEntity(e,t.lines([h,u]))}}function E_(n,t){if(!(t!=null&&t.length))return;const e=ar(t);return n!=null&&n>0&&e.length>=n?e.subarray(0,n):e}const T_="ASM_Data";function Oa(n){return String(n).trim().toUpperCase()}function L_(n){let t,e;const i={};for(;!n.atEndOfObject&&!n.atEof;){const r=n.readItem();if(!r)break;switch(Number(r.code)){case 320:t=Oa(String(r.value));break;case 2:e=String(r.value),i[e]??(i[e]=[]);break;case 310:e&&(r.value instanceof Uint8Array?i[e].push(r.value):i[e].push(String(r.value)));break}}return{ownerHandle:t,hexChunks:i[T_]??[]}}function M_(n){const t={};for(;!n.atEof;){const e=n.peekItem();if(!e)break;if(Number(e.code)!==0){n.readItem();continue}const i=String(e.value).toUpperCase();if(i==="ENDSEC"||i==="EOF"){n.readItem();break}if(n.readItem(),i==="ACDSRECORD"){const r=L_(n);if(r.ownerHandle&&r.hexChunks.length>0){const s=ar(r.hexChunks);s.length>0&&(t[r.ownerHandle]=s)}}else n.skipToEndOfObject()}return{byOwnerHandle:t}}function qg(n,t){for(;!n.atEof;){const e=n.peekItem();if(!e)break;if(Number(e.code)===0){if(String(e.value).toUpperCase()==="ENDSEC"){n.readItem();break}break}if(n.readItem(),Number(e.code)!==9)continue;const i=String(e.value).toUpperCase();C_(n,t,i)}}function C_(n,t,e){switch(e){case"$ACADVER":{const i=de(n);i&&(t.version=i);break}case"$DWGCODEPAGE":{const i=de(n);i&&(t.dwgCodePage=i);break}case"$CECOLOR":{const i=lt(n);t.cecolor.colorIndex=i??256;break}case"$ANGBASE":t.angbase=lt(n)??0;break;case"$ANGDIR":t.angdir=lt(n)??0;break;case"$AUNITS":{const i=lt(n);i!=null&&(t.aunits=i);break}case"$AUPREC":{const i=lt(n);i!=null&&(t.auprec=i);break}case"$LUNITS":{const i=lt(n);i!=null&&(t.lunits=i);break}case"$LUPREC":{const i=lt(n);i!=null&&(t.luprec=i);break}case"$UNITMODE":{const i=lt(n);i!=null&&(t.unitmode=i);break}case"$MEASUREMENT":{const i=lt(n);i!=null&&(t.measurement=i);break}case"$CELTYPE":t.celtype=de(n)||wt;break;case"$CETRANSPARENCY":{Dh(n,t,T.CETRANSPARENCY);break}case"$CELTSCALE":t.celtscale=lt(n)??1;break;case"$CELWEIGHT":{const i=lt(n);i!=null&&(t.celweight=i);break}case"$LWDISPLAY":t.lwdisplay=(lt(n)??0)!==0;break;case"$TILEMODE":t.tilemode=(lt(n)??1)!==0;break;case"$PSLTSCALE":t.psltscale=(lt(n)??1)!==0;break;case"$CMLSTYLE":case"CMLSTYLE":t.cmlstyle=de(n)||De;break;case"$CMLSCALE":case"CMLSCALE":{const i=lt(n);i!=null&&Number.isFinite(i)&&(t.cmlscale=i);break}case"$CMLEADERSTYLE":case"CMLEADERSTYLE":t.cmleaderstyle=de(n)||Fe;break;case"$HPLAYER":case"HPLAYER":t.hplayer=de(n)||".";break;case"$HPTRANSPARENCY":{Dh(n,t,T.HPTRANSPARENCY);break}case"$LTSCALE":t.ltscale=lt(n)??1;break;case"$EXTMAX":{const i=Fh(n);i&&(t.extmax=i);break}case"$EXTMIN":{const i=Fh(n);i&&(t.extmin=i);break}case"$INSUNITS":{const i=lt(n);i!=null&&(t.insunits=i);break}case"$OSMODE":t.osmode=lt(n)??0;break;case"$ORTHOMODE":t.orthomode=lt(n)??0;break;case"$COMPAREHATCH":{const i=Ai(lt(n),lo,ho);i!=null&&(t.comparehatch=i);break}case"$COMPARERCMARGIN":{const i=Ai(lt(n),uo,go);i!=null&&(t.comparercmargin=i);break}case"$COMPARETEXT":{const i=Ai(lt(n),fo,po);i!=null&&(t.comparetext=i);break}case"$COMPARETOLERANCE":{const i=Ai(lt(n),mo,yo);i!=null&&(t.comparetolerance=i);break}case"$PDMODE":t.pdmode=lt(n)??0;break;case"$PDSIZE":t.pdsize=lt(n)??0;break;case"$TEXTSTYLE":t.textstyle=de(n)||ht;break;case"$DIMSTYLE":t.dimstyle=de(n)||ht;break;case"$CLAYER":t.clayer=de(n)||"0";break;case"$HANDSEED":{const i=de(n);i&&t.initializeHandleSeed(i);break}default:O_(n);break}}function de(n){const t=n.readItem();if(t){if(Number(t.code)===9||Number(t.code)===0){n.pushBackItem(t);return}return String(t.value)}}function lt(n){const t=n.readItem();if(!t)return;if(Number(t.code)===9||Number(t.code)===0){n.pushBackItem(t);return}const e=Number(t.value);return Number.isFinite(e)?e:void 0}function Dh(n,t,e){const i=n.readItem();if(!i||Number(i.code)===9||Number(i.code)===0){i&&n.pushBackItem(i),yt.instance().setVar(e,"ByLayer",t);return}const r=Number(i.code),s=String(i.value).trim();if(s===""){yt.instance().setVar(e,"ByLayer",t);return}if(r===440){const o=Number(s);yt.instance().setVar(e,Number.isFinite(o)?o:"ByLayer",t);return}yt.instance().setVar(e,s,t)}function Fh(n){let t=0,e=0,i=0,r=!1;for(;!n.atEof;){const s=n.peekItem();if(!s)break;const o=Number(s.code);if(o===9||o===0)break;n.readItem();const a=Number(s.value);o===10?(t=a,r=!0):o===20?(e=a,r=!0):o===30&&(i=a,r=!0)}return r?new x(t,e,i):void 0}function O_(n){for(;!n.atEof;){const t=n.peekItem();if(!t)break;const e=Number(t.code);if(e===9||e===0)break;n.readItem()}}class Kg{constructor(t){this._expression=t}get expression(){return this._expression}}var Zg=(n=>(n[n.Cancel=0]="Cancel",n[n.Ok=1]="Ok",n))(Zg||{});class So{constructor(){this._name="",this._filterExpression="",this._nestedFilters=[],this._parent=null,this._allowDelete=!0,this._allowRename=!0,this._dynamicallyGenerated=!1,this._isProxy=!1}get name(){return this._name}setName(t){return!this.allowRename()&&this._name.length>0?!1:(this._name=t,!0)}set name(t){this.setName(t)}get filterExpression(){return this._filterExpression}setFilterExpression(t){return this.isIdFilter()?!1:(this._filterExpression=t??"",!0)}set filterExpression(t){this.setFilterExpression(t)}filterExpressionTree(){return this.isIdFilter()||!this._filterExpression?null:new Kg(this._filterExpression)}getNestedFilters(){return this._nestedFilters}get nestedFilters(){return this._nestedFilters}parent(){return this._parent}isIdFilter(){return!1}allowNested(){return!0}allowDelete(){return this._allowDelete}setAllowDelete(t){this._allowDelete=t}allowRename(){return this._allowRename}setAllowRename(t){this._allowRename=t}dynamicallyGenerated(){return this._dynamicallyGenerated}setDynamicallyGenerated(t){this._dynamicallyGenerated=t}isProxy(){return this._isProxy}setIsProxy(t){this._isProxy=t}addNested(t){return!t||t===this||!this.allowNested()||!(this._parent==null)&&!this.isIdFilter()&&t.isIdFilter()||this._nestedFilters.includes(t)?!1:(t._parent&&t._parent.removeNested(t),t._parent=this,this._nestedFilters.push(t),!0)}removeNested(t){const e=this._nestedFilters.indexOf(t);return e<0?!1:(this._nestedFilters.splice(e,1),t._parent===this&&(t._parent=null),!0)}generateNested(){return!1}compareTo(t){return t?this.isIdFilter()===t.isIdFilter()&&this._name===t._name&&this._filterExpression===t._filterExpression:!1}filter(t){return t?this._filterExpression?R_(this._filterExpression,t):!0:!1}showEditor(){return 0}}function R_(n,t){const e=n.trim();return e?Xh(e,"OR").some(r=>Xh(r,"AND").every(o=>N_(o,t))):!0}function Xh(n,t){const e=new RegExp(`\\s+${t}\\s+`,"i");return n.split(e).map(i=>i.trim()).filter(i=>i.length>0)}function N_(n,t){var o;const e=n.trim().match(/^([A-Za-z_]+)\s*(==|=)\s*"?(.*?)"?\s*$/);if(!e)return!1;const i=e[1].toUpperCase(),r=e[3],s=D_(r);switch(i){case"NAME":return B_(t.name,r);case"LOCKED":return s!=null?t.isLocked===s:!1;case"FROZEN":return s!=null?t.isFrozen===s:!1;case"OFF":return s!=null?t.isOff===s:!1;case"PLOT":return s!=null?t.isPlottable===s:!1;case"COLOR":{const a=(o=t.color)==null?void 0:o.colorIndex;return a!=null&&String(a)===r}case"LINETYPE":return t.linetype.localeCompare(r,void 0,{sensitivity:"accent"})===0;default:return!1}}function B_(n,t){return/[*?]/.test(t)?new RegExp(`^${t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".")}$`,"i").test(n):n.localeCompare(t,void 0,{sensitivity:"accent"})===0}function D_(n){const t=n.trim().toLowerCase();return t==="true"||t==="1"?!0:t==="false"||t==="0"?!1:null}class ze{constructor(t,e){this._root=t??ze.createDefaultRoot(),this._current=e===void 0?this._root:e}static createDefaultRoot(){const t=new So;return t.setName("All"),t.setAllowDelete(!1),t.setAllowRename(!1),t.setFilterExpression(""),t}get root(){return this._root}get current(){return this._current}set current(t){this._current=t}clone(){return new ze(this._root,this._current)}}class Qg extends So{constructor(){super(),this._layerIds=[]}isIdFilter(){return!0}layerIds(){return this._layerIds}get layerIdList(){return this._layerIds}addLayerId(t){return!t||this._layerIds.includes(t)?!1:(this._layerIds.push(t),!0)}removeLayerId(t){const e=this._layerIds.indexOf(t);return e<0?!1:(this._layerIds.splice(e,1),!0)}filter(t){return t?this._layerIds.includes(t.objectId):!1}setFilterExpression(t){return!1}}const ko="ACAD_LAYERFILTERS",ai="ACLYDICTIONARY";function Jg(n){const t=ze.createDefaultRoot(),e=new ze(t,t),i=Yh(n,ai),r=Yh(n,ko);if(i){for(const[s,o]of Object.entries(i.entries)){const a=Ra(n,o,s);a&&t.addNested(a)}return e}if(r)for(const[s,o]of Object.entries(r.entries)){const a=Ra(n,o,s);a&&t.addNested(a)}return e}function tf(n){const t=[];for(const e of n.root.getNestedFilters())t.push(rf(e));return{nodes:t}}function ef(n){const t=new nn;for(const e of n)t.add({code:e.code,value:e.value});return t}function F_(n){return n?n.toArray().map(t=>({code:Number(t.code),value:t.value})):[]}function Yh(n,t){let e;for(const i of n.dictionaries.values()){const r=i.entries[t];if(!r)continue;const s=n.dictionaries.get(Oe(r));if(!s)continue;if(!(i.ownerObjectId?n.xrecords.has(Oe(i.ownerObjectId)):!1))return s;e=s}return e}function Ra(n,t,e){const i=n.xrecords.get(Oe(t));if(!i)return;const r=nf(i.data,e),s=r.isIdFilter?new Qg:new So;if(s.setAllowRename(!0),s.setName(r.name||e),!r.isIdFilter)s.setFilterExpression(r.filterExpression);else{const o=s;for(const a of r.layerIds)o.addLayerId(a)}for(const o of X_(n,i)){const a=Ra(n,o.handle,o.key);a&&s.addNested(a)}return s}function X_(n,t){const e=[],i=new Set,r=Oe(t.handle),s=t.extensionDictionaryId?Oe(t.extensionDictionaryId):void 0,o=(a,c)=>{const l=Oe(c);i.has(l)||(i.add(l),e.push({key:a,handle:c}))};for(const a of n.dictionaries.values()){const c=a.ownerObjectId?Oe(a.ownerObjectId):void 0;if(!c||!(c===r||c===s))continue;const h=a.entries[ai];if(h){const u=n.dictionaries.get(Oe(h));if(u){for(const[d,g]of Object.entries(u.entries))o(d,g);continue}}for(const[u,d]of Object.entries(a.entries))u===ai||u===ko||o(u,d)}return e}function nf(n,t=""){const e=[],i=[];let r=0,s,o,a;for(const f of n){const p=Number(f.code),m=f.value;p===1&&typeof m=="string"?e.push(m):p===300&&typeof m=="string"?o=m:p===301&&typeof m=="string"?a=m:p===70||p===90?r=Number(m)||0:p===290||p===280?s=Number(m)===1:(p===330||p===340||p===350||p===360)&&m!=null&&String(m).length>0&&i.push(Oe(String(m)))}const c=e[0],h=o||(c==="AcLyLayerFilter"||c==="AcLyLayerGroup"?void 0:c)||t,u=e[1]??"";let d=a??u;!a&&d&&d!=="*"&&!/==/.test(d)&&(d=`NAME=="${d}"`);const g=a!=null&&a.length>0?!1:s===!0&&i.length>0?!0:i.length>0&&(d.length===0||d==="*");return{name:h,filterExpression:g?"":d,flags:r,layerIds:i,isIdFilter:g}}function rf(n){const t=n.isIdFilter(),e=sf(n),i=n.getNestedFilters().map(s=>rf(s));return{key:n.name||(t?"Group":"Filter"),isIdFilter:t,data:e,children:i}}function sf(n){const t=[];if(t.push({code:1,value:n.name}),n.isIdFilter()){t.push({code:1,value:""}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:70,value:0}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:290,value:1});const e=n;for(const i of e.layerIds())t.push({code:330,value:i})}else t.push({code:1,value:n.filterExpression||"*"}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:70,value:0}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:290,value:0});return t}function Oe(n){return n.trim().toUpperCase()}class of extends At{constructor(){super(...arguments),this._name="",this._unnamed=!1,this._selectable=!0,this._entityIds=[]}get name(){return this._name}set name(t){this._name=t}get unnamed(){return this._unnamed}set unnamed(t){this._unnamed=t}get selectable(){return this._selectable}set selectable(t){this._selectable=t}get entityIds(){return this._entityIds}set entityIds(t){this._entityIds=[...t]}addEntityId(t){this._entityIds.push(t)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbGroup"),this.name&&t.writeString(300,this.name),t.writeInt16(70,this.unnamed?1:0),t.writeInt16(71,this.selectable?1:0);for(const e of this._entityIds)t.writeObjectId(340,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbGroup"),this._entityIds=[];!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const i=Number(e.code);if(i===100){t.pushBackItem(e);break}switch(i){case 300:this._name=String(e.value);break;case 70:this._unnamed=Number(e.value)!==0;break;case 71:this._selectable=Number(e.value)!==0;break;case 340:this._entityIds.push(String(e.value));break}}return this}}class af extends At{constructor(){super(),this._boundaryVertices=[],this._clipBoundaryDisplayEnabled=!1,this._frontClippingEnabled=!1,this._backClippingEnabled=!1}get boundaryVertices(){return this._boundaryVertices}set boundaryVertices(t){this._boundaryVertices=t.map(e=>e.clone())}get clipBoundaryNormal(){return this._clipBoundaryNormal}set clipBoundaryNormal(t){this._clipBoundaryNormal=t==null?void 0:t.clone()}get clipBoundaryOrigin(){return this._clipBoundaryOrigin}set clipBoundaryOrigin(t){this._clipBoundaryOrigin=t==null?void 0:t.clone()}get clipBoundaryDisplayEnabled(){return this._clipBoundaryDisplayEnabled}set clipBoundaryDisplayEnabled(t){this._clipBoundaryDisplayEnabled=t}get frontClippingEnabled(){return this._frontClippingEnabled}set frontClippingEnabled(t){this._frontClippingEnabled=t}get frontClippingDistance(){return this._frontClippingDistance}set frontClippingDistance(t){this._frontClippingDistance=t}get backClippingEnabled(){return this._backClippingEnabled}set backClippingEnabled(t){this._backClippingEnabled=t}get backClippingDistance(){return this._backClippingDistance}set backClippingDistance(t){this._backClippingDistance=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbFilter"),this._boundaryVertices.length>0&&(t.writeInt16(70,this._boundaryVertices.length),this._boundaryVertices.forEach(e=>t.writePoint2d(10,e)),t.writeVector3d(210,this._clipBoundaryNormal),t.writePoint3d(11,this._clipBoundaryOrigin),t.writeInt16(71,this._clipBoundaryDisplayEnabled?1:0),t.writeInt16(72,this._frontClippingEnabled?1:0),this._frontClippingEnabled&&this._frontClippingDistance!=null&&t.writeDouble(40,this._frontClippingDistance),t.writeInt16(73,this._backClippingEnabled?1:0),this._backClippingEnabled&&this._backClippingDistance!=null&&t.writeDouble(41,this._backClippingDistance)),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFilter");let e=null,i=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code);if(s===100){t.pushBackItem(r);break}const o=Number(r.value);switch(s){case 70:break;case 10:e&&this._boundaryVertices.push(new M(e.x,e.y)),e={x:o,y:0};break;case 20:e&&(e.y=o);break;case 210:this._clipBoundaryNormal=this._clipBoundaryNormal??new x,this._clipBoundaryNormal.x=o;break;case 220:this._clipBoundaryNormal&&(this._clipBoundaryNormal.y=o);break;case 230:this._clipBoundaryNormal&&(this._clipBoundaryNormal.z=o);break;case 11:this._clipBoundaryOrigin=this._clipBoundaryOrigin??new x,this._clipBoundaryOrigin.x=o;break;case 21:this._clipBoundaryOrigin&&(this._clipBoundaryOrigin.y=o);break;case 31:this._clipBoundaryOrigin&&(this._clipBoundaryOrigin.z=o);break;case 71:this._clipBoundaryDisplayEnabled=o!==0;break;case 72:this._frontClippingEnabled=o!==0;break;case 73:this._backClippingEnabled=o!==0;break;case 40:i||(this._frontClippingDistance=o,i=!0);break;case 41:this._backClippingDistance=o;break}}return e&&this._boundaryVertices.push(new M(e.x,e.y)),this}}class cf extends af{constructor(){super(),this._layerNames=[]}get layerNames(){return this._layerNames}set layerNames(t){this._layerNames=[...t]}add(t){const e=t==null?void 0:t.trim();return!e||this._layerNames.includes(e)?!1:(this._layerNames.push(e),!0)}getAt(t){if(t<0||t>=this._layerNames.length)throw new Error("The layer index is out of range!");return this._layerNames[t]}remove(t){const e=this._layerNames.indexOf(t);return e<0?!1:(this._layerNames.splice(e,1),!0)}layerCount(){return this._layerNames.length}indexClass(){return"AcDbLayerIndex"}isValid(){return this._layerNames.some(t=>t.length>0)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerFilter");for(const e of this._layerNames)t.writeString(8,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbLayerFilter");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;switch(Number(e.code)){case 8:this.add(String(e.value));break;case 100:return t.pushBackItem(e),this}}return this}}class lf extends At{constructor(){super(),this._lastUpdatedAt=0,this._lastUpdatedAtU=0,this._isUptoDate=!1,this._objectBeingIndexedId=""}get lastUpdatedAt(){return this._lastUpdatedAt}set lastUpdatedAt(t){this._lastUpdatedAt=t}get lastUpdatedAtU(){return this._lastUpdatedAtU}set lastUpdatedAtU(t){this._lastUpdatedAtU=t}get isUptoDate(){return this._isUptoDate}set isUptoDate(t){this._isUptoDate=t}objectBeingIndexedId(){return this._objectBeingIndexedId}setObjectBeingIndexedId(t){this._objectBeingIndexedId=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbIndex"),t.writeDouble(40,this.lastUpdatedAt),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbIndex");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;switch(Number(e.code)){case 40:this.lastUpdatedAt=Number(e.value),this.lastUpdatedAtU=this.lastUpdatedAt;break;case 100:return t.pushBackItem(e),this}}return this}}class hf extends lf{constructor(){super(),this._layerNames=[],this._idBufferIds=[],this._idBufferEntryCounts=[]}get layerNames(){return this._layerNames}set layerNames(t){this._layerNames=[...t]}get idBufferIds(){return this._idBufferIds}set idBufferIds(t){this._idBufferIds=[...t]}get idBufferEntryCounts(){return this._idBufferEntryCounts}set idBufferEntryCounts(t){this._idBufferEntryCounts=[...t]}get entries(){const t=Math.max(this._layerNames.length,this._idBufferIds.length,this._idBufferEntryCounts.length),e=[];for(let i=0;i<t;i++)e.push({layerName:this._layerNames[i]??"",idBufferId:this._idBufferIds[i]??"",idBufferEntryCount:this._idBufferEntryCounts[i]??0});return e}set entries(t){this._layerNames=t.map(e=>e.layerName),this._idBufferIds=t.map(e=>e.idBufferId),this._idBufferEntryCounts=t.map(e=>e.idBufferEntryCount)}compute(t,e){if(e&&this.setObjectBeingIndexedId(e.objectId),t){this._layerNames=[];for(const i of t.newIterator())this._layerNames.push(i.name)}return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}newIterator(t){return null}rebuildFull(t){return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}rebuildModified(t){return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerIndex");const e=Math.max(this._layerNames.length,this._idBufferIds.length,this._idBufferEntryCounts.length);for(let i=0;i<e;i++)this._layerNames[i]!=null&&t.writeString(8,this._layerNames[i]),this._idBufferIds[i]&&t.writeHandle(360,this._idBufferIds[i]),this._idBufferEntryCounts[i]!=null&&t.writeInt32(90,this._idBufferEntryCounts[i]);return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLayerIndex");const e=[],i=[],r=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;switch(Number(s.code)){case 8:e.push(String(s.value));break;case 360:i.push(String(s.value));break;case 90:r.push(Number(s.value));break;case 100:return t.pushBackItem(s),this.layerNames=e,this.idBufferIds=i,this.idBufferEntryCounts=r,this.isUptoDate=!0,this}}return this.layerNames=e,this.idBufferIds=i,this.idBufferEntryCounts=r,this.isUptoDate=!0,this}}class Io extends At{constructor(){super(),this._contentType=2,this._drawMLeaderOrderType=1,this._drawLeaderOrderType=0,this._bitFlags=0,this._maxLeaderSegmentsPoints=-1,this._firstSegmentAngleConstraint=0,this._secondSegmentAngleConstraint=0,this._leaderLineType=1,this._leaderLineColor=new G(exports.AcCmColorMethod.ByLayer),this._leaderLineWeight=-2,this._enableLanding=!0,this._landingGap=2,this._enableDogleg=!0,this._doglegLength=8,this._description="",this._arrowSize=4,this._defaultMTextContents="",this._textLeftAttachmentType=1,this._textAngleType=1,this._textAlignmentType=0,this._textRightAttachmentType=1,this._textColor=new G(exports.AcCmColorMethod.ByLayer),this._textHeight=4,this._enableFrameText=!1,this._textAlignAlwaysLeft=!1,this._alignSpace=0,this._blockColor=new G(exports.AcCmColorMethod.ByBlock),this._blockScale=new A(1,1,1),this._enableBlockScale=!0,this._blockRotation=0,this._enableBlockRotation=!1,this._blockConnectionType=0,this._scale=1,this._overwritePropChanged=!1,this._annotative=!1,this._breakSize=0,this._textAttachmentDirection=0,this._bottomTextAttachmentType=9,this._topTextAttachmentType=9,this._extendLeaderToText=!1}get unknown1(){return this._unknown1}set unknown1(t){this._unknown1=t}get contentType(){return this._contentType}set contentType(t){this._contentType=t}get drawMLeaderOrderType(){return this._drawMLeaderOrderType}set drawMLeaderOrderType(t){this._drawMLeaderOrderType=t}get drawLeaderOrderType(){return this._drawLeaderOrderType}set drawLeaderOrderType(t){this._drawLeaderOrderType=t}get bitFlags(){return this._bitFlags}set bitFlags(t){this._bitFlags=t}get maxLeaderSegmentsPoints(){return this._maxLeaderSegmentsPoints}set maxLeaderSegmentsPoints(t){this._maxLeaderSegmentsPoints=t}get maxLeaderSegmentPoints(){return this.maxLeaderSegmentsPoints}set maxLeaderSegmentPoints(t){this.maxLeaderSegmentsPoints=t}get firstSegmentAngleConstraint(){return this._firstSegmentAngleConstraint}set firstSegmentAngleConstraint(t){this._firstSegmentAngleConstraint=t}get secondSegmentAngleConstraint(){return this._secondSegmentAngleConstraint}set secondSegmentAngleConstraint(t){this._secondSegmentAngleConstraint=t}get leaderLineType(){return this._leaderLineType}set leaderLineType(t){this._leaderLineType=t}get leaderLineColor(){return this._leaderLineColor}set leaderLineColor(t){this._leaderLineColor.copy(t)}get leaderLineTypeId(){return this._leaderLineTypeId}set leaderLineTypeId(t){this._leaderLineTypeId=t}get leaderLineWeight(){return this._leaderLineWeight}set leaderLineWeight(t){this._leaderLineWeight=t}get enableLanding(){return this._enableLanding}set enableLanding(t){this._enableLanding=t}get landingEnabled(){return this.enableLanding}set landingEnabled(t){this.enableLanding=t}get landingGap(){return this._landingGap}set landingGap(t){this._landingGap=t}get enableDogleg(){return this._enableDogleg}set enableDogleg(t){this._enableDogleg=t}get doglegEnabled(){return this.enableDogleg}set doglegEnabled(t){this.enableDogleg=t}get doglegLength(){return this._doglegLength}set doglegLength(t){this._doglegLength=t}get description(){return this._description}set description(t){this._description=t}get arrowSymbolId(){return this._arrowSymbolId}set arrowSymbolId(t){this._arrowSymbolId=t}get arrowheadId(){return this.arrowSymbolId}set arrowheadId(t){this.arrowSymbolId=t}get arrowSize(){return this._arrowSize}set arrowSize(t){this._arrowSize=t}get arrowheadSize(){return this.arrowSize}set arrowheadSize(t){this.arrowSize=t}get defaultMTextContents(){return this._defaultMTextContents}set defaultMTextContents(t){this._defaultMTextContents=t}get defaultMText(){return this.defaultMTextContents}set defaultMText(t){this.defaultMTextContents=t}get textString(){return this.defaultMTextContents}set textString(t){this.defaultMTextContents=t}get textStyleId(){return this._textStyleId}set textStyleId(t){this._textStyleId=t}get textStyle(){return this.textStyleId}set textStyle(t){this.textStyleId=t}get textLeftAttachmentType(){return this._textLeftAttachmentType}set textLeftAttachmentType(t){this._textLeftAttachmentType=t}get textAngleType(){return this._textAngleType}set textAngleType(t){this._textAngleType=t}get textAlignmentType(){return this._textAlignmentType}set textAlignmentType(t){this._textAlignmentType=t}get textRightAttachmentType(){return this._textRightAttachmentType}set textRightAttachmentType(t){this._textRightAttachmentType=t}get textColor(){return this._textColor}set textColor(t){this._textColor.copy(t)}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get enableFrameText(){return this._enableFrameText}set enableFrameText(t){this._enableFrameText=t}get textFrameEnabled(){return this.enableFrameText}set textFrameEnabled(t){this.enableFrameText=t}get textAlignAlwaysLeft(){return this._textAlignAlwaysLeft}set textAlignAlwaysLeft(t){this._textAlignAlwaysLeft=t}get alignSpace(){return this._alignSpace}set alignSpace(t){this._alignSpace=t}get blockId(){return this._blockId}set blockId(t){this._blockId=t}get blockContentId(){return this.blockId}set blockContentId(t){this.blockId=t}get blockColor(){return this._blockColor}set blockColor(t){this._blockColor.copy(t)}get blockContentColor(){return this.blockColor}set blockContentColor(t){this.blockColor=t}get blockScale(){return this._blockScale.clone()}set blockScale(t){this._blockScale.copy(t)}get blockContentScale(){return this.blockScale}set blockContentScale(t){this.blockScale=t}get enableBlockScale(){return this._enableBlockScale}set enableBlockScale(t){this._enableBlockScale=t}get blockContentScaleEnabled(){return this.enableBlockScale}set blockContentScaleEnabled(t){this.enableBlockScale=t}get blockRotation(){return this._blockRotation}set blockRotation(t){this._blockRotation=t}get blockContentRotation(){return this.blockRotation}set blockContentRotation(t){this.blockRotation=t}get enableBlockRotation(){return this._enableBlockRotation}set enableBlockRotation(t){this._enableBlockRotation=t}get blockContentRotationEnabled(){return this.enableBlockRotation}set blockContentRotationEnabled(t){this.enableBlockRotation=t}get blockConnectionType(){return this._blockConnectionType}set blockConnectionType(t){this._blockConnectionType=t}get blockContentConnectionType(){return this.blockConnectionType}set blockContentConnectionType(t){this.blockConnectionType=t}get scale(){return this._scale}set scale(t){this._scale=t}get scaleFactor(){return this.scale}set scaleFactor(t){this.scale=t}get overwritePropChanged(){return this._overwritePropChanged}set overwritePropChanged(t){this._overwritePropChanged=t}get overwritePropertyValue(){return this.overwritePropChanged}set overwritePropertyValue(t){this.overwritePropChanged=t}get annotative(){return this._annotative}set annotative(t){this._annotative=t}get breakSize(){return this._breakSize}set breakSize(t){this._breakSize=t}get breakGapSize(){return this.breakSize}set breakGapSize(t){this.breakSize=t}get textAttachmentDirection(){return this._textAttachmentDirection}set textAttachmentDirection(t){this._textAttachmentDirection=t}get bottomTextAttachmentType(){return this._bottomTextAttachmentType}set bottomTextAttachmentType(t){this._bottomTextAttachmentType=t}get bottomTextAttachmentDirection(){return this.bottomTextAttachmentType}set bottomTextAttachmentDirection(t){this.bottomTextAttachmentType=t}get topTextAttachmentType(){return this._topTextAttachmentType}set topTextAttachmentType(t){this._topTextAttachmentType=t}get topTextAttachmentDirection(){return this.topTextAttachmentType}set topTextAttachmentDirection(t){this.topTextAttachmentType=t}get extendLeaderToText(){return this._extendLeaderToText}set extendLeaderToText(t){this._extendLeaderToText=t}get unknown2(){return this._unknown2}set unknown2(t){this._unknown2=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMLeaderStyle"),t.writeInt16(179,this.unknown1),t.writeInt16(170,this.contentType),t.writeInt16(171,this.drawMLeaderOrderType),t.writeInt16(172,this.drawLeaderOrderType),t.writeInt32(90,this.maxLeaderSegmentsPoints),t.writeDouble(40,this.firstSegmentAngleConstraint),t.writeDouble(41,this.secondSegmentAngleConstraint),t.writeInt16(173,this.leaderLineType),t.writeInt32(91,$o(this.leaderLineColor)),t.writeHandle(340,this.leaderLineTypeId),t.writeInt32(92,this.leaderLineWeight),t.writeBoolean(290,this.enableLanding),t.writeDouble(42,this.landingGap),t.writeBoolean(291,this.enableDogleg),t.writeDouble(43,this.doglegLength),t.writeString(3,this.description),t.writeHandle(341,this.arrowSymbolId),t.writeDouble(44,this.arrowSize),t.writeString(300,this.defaultMTextContents),t.writeHandle(342,this.textStyleId),t.writeInt16(174,this.textLeftAttachmentType),t.writeInt16(175,this.textAngleType),t.writeInt16(176,this.textAlignmentType),t.writeInt16(178,this.textRightAttachmentType),t.writeInt32(93,$o(this.textColor)),t.writeDouble(45,this.textHeight),t.writeBoolean(292,this.enableFrameText),t.writeBoolean(297,this.textAlignAlwaysLeft),t.writeDouble(46,this.alignSpace),t.writeHandle(343,this.blockId),t.writeInt32(94,$o(this.blockColor)),t.writeDouble(47,this._blockScale.x),t.writeDouble(49,this._blockScale.y),t.writeDouble(140,this._blockScale.z),t.writeBoolean(293,this.enableBlockScale),t.writeDouble(141,this.blockRotation),t.writeBoolean(294,this.enableBlockRotation),t.writeInt16(177,this.blockConnectionType),t.writeDouble(142,this.scale),t.writeBoolean(295,this.overwritePropChanged),t.writeBoolean(296,this.annotative),t.writeDouble(143,this.breakSize),t.writeInt16(271,this.textAttachmentDirection),t.writeInt16(272,this.bottomTextAttachmentType),t.writeInt16(273,this.topTextAttachmentType),t.writeBoolean(298,this.unknown2),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbMLeaderStyle");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const i=Number(e.code),r=Number(e.value);switch(i){case 179:this.unknown1=r;break;case 170:this.contentType=r;break;case 171:this.drawMLeaderOrderType=r;break;case 172:this.drawLeaderOrderType=r;break;case 90:this.maxLeaderSegmentsPoints=r;break;case 40:this.firstSegmentAngleConstraint=r;break;case 41:this.secondSegmentAngleConstraint=r;break;case 173:this.leaderLineType=r;break;case 91:this.leaderLineColor=_e(r);break;case 340:this.leaderLineTypeId=String(e.value);break;case 92:this.leaderLineWeight=r;break;case 290:this.enableLanding=r!==0;break;case 42:this.landingGap=r;break;case 291:this.enableDogleg=r!==0;break;case 43:this.doglegLength=r;break;case 3:this.description=String(e.value);break;case 341:this.arrowSymbolId=String(e.value);break;case 44:this.arrowSize=r;break;case 300:this.defaultMTextContents=String(e.value);break;case 342:this.textStyleId=String(e.value);break;case 174:this.textLeftAttachmentType=r;break;case 175:this.textAngleType=r;break;case 176:this.textAlignmentType=r;break;case 178:this.textRightAttachmentType=r;break;case 93:this.textColor=_e(r);break;case 45:this.textHeight=r;break;case 292:this.enableFrameText=r!==0;break;case 297:this.textAlignAlwaysLeft=r!==0;break;case 46:this.alignSpace=r;break;case 343:this.blockId=String(e.value);break;case 94:this.blockColor=_e(r);break;case 47:this._blockScale.x=r;break;case 49:this._blockScale.y=r;break;case 140:this._blockScale.z=r;break;case 293:this.enableBlockScale=r!==0;break;case 141:this.blockRotation=r;break;case 294:this.enableBlockRotation=r!==0;break;case 177:this.blockConnectionType=r;break;case 142:this.scale=r;break;case 295:this.overwritePropChanged=r!==0;break;case 296:this.annotative=r!==0;break;case 143:this.breakSize=r;break;case 271:this.textAttachmentDirection=r;break;case 272:this.bottomTextAttachmentType=r;break;case 273:this.topTextAttachmentType=r;break;case 298:this.unknown2=r!==0;break;case 100:return t.pushBackItem(e),this}}return this}}class jc extends At{constructor(){super(),this._styleName="STANDARD",this._flags=0,this._description="",this._fillColor=new G,this._startAngle=90,this._endAngle=90,this._elements=[]}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get flags(){return this._flags}set flags(t){this._flags=t}get description(){return this._description}set description(t){this._description=t}get fillColor(){return this._fillColor}set fillColor(t){this._fillColor.copy(t)}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=t}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=t}get elementCount(){return this._elements.length}get elements(){return this._elements.map(t=>({offset:t.offset,color:t.color.clone(),lineType:t.lineType}))}set elements(t){this._elements=t.map(e=>({offset:e.offset,color:e.color.clone(),lineType:e.lineType}))}addElement(t){this._elements.push({offset:t.offset,color:t.color.clone(),lineType:t.lineType})}removeElementAt(t){if(t<0||t>=this._elements.length)throw new Error("The element index is out of range!");this._elements.splice(t,1)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMlineStyle"),t.writeString(2,this.styleName),t.writeInt16(70,this.flags),t.writeString(3,this.description),t.writeCmColor(this.fillColor),t.writeDouble(51,this.startAngle),t.writeDouble(52,this.endAngle),t.writeInt16(71,this.elementCount),this._elements.forEach(e=>{t.writeDouble(49,e.offset),t.writeCmColor(e.color),t.writeString(6,e.lineType)}),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMlineStyle");const e=[];let i,r=0;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;const o=Number(s.code),a=Number(s.value);switch(o){case 2:this.styleName=String(s.value);break;case 70:this.flags=a;break;case 3:this.description=String(s.value);break;case 51:this.startAngle=a;break;case 52:this.endAngle=a;break;case 71:r=a;break;case 49:{i={offset:a,color:new G,lineType:"BYLAYER"},i.color.colorIndex=256,e.push(i);break}case 62:i?i.color.colorIndex=a:this.fillColor.colorIndex=a;break;case 420:i?i.color.setRGBValue(a):this.fillColor.setRGBValue(a);break;case 6:i&&(i.lineType=String(s.value));break;case 100:return t.pushBackItem(s),this.finishMlineElements(e,r),this}}return this.finishMlineElements(e,r),this}finishMlineElements(t,e){const i=Math.max(e,t.length);if(i<=0){this.elements=[];return}this.elements=Array.from({length:i},(r,s)=>{const o=t[s];if(o)return o;const a=new G;return a.colorIndex=256,{offset:0,color:a,lineType:"BYLAYER"}})}}class uf extends At{constructor(){super(),this._isLoaded=!0,this._resolutionUnits=0,this._sourceFileName="",this._classVersion=0,this._imageSize=new M,this._pixelSize=new M(1,1)}get sourceFileName(){return this._sourceFileName}set sourceFileName(t){this._sourceFileName=t}get classVersion(){return this._classVersion}set classVersion(t){this._classVersion=t}get imageSize(){return this._imageSize}set imageSize(t){this._imageSize.copy(t)}get pixelSize(){return this._pixelSize}set pixelSize(t){this._pixelSize.copy(t)}get isLoaded(){return this._isLoaded}set isLoaded(t){this._isLoaded=t}get resolutionUnits(){return this._resolutionUnits}set resolutionUnits(t){this._resolutionUnits=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImageDef"),t.writeInt32(90,this.classVersion),t.writeString(1,this.sourceFileName),t.writePoint2d(10,this.imageSize),t.writeDouble(11,this.pixelSize.x),t.writeDouble(12,this.pixelSize.y),t.writeInt16(280,this.isLoaded?1:0),t.writeInt16(281,this.resolutionUnits),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbRasterImageDef");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const i=Number(e.code),r=Number(e.value);switch(i){case 1:this.sourceFileName=String(e.value);break;case 90:this.classVersion=r;break;case 10:this.imageSize.x=r;break;case 20:this.imageSize.y=r;break;case 11:this.pixelSize.x=r;break;case 12:this.pixelSize.y=r;break;case 280:this.isLoaded=r!==0;break;case 281:this.resolutionUnits=r;break;case 100:return t.pushBackItem(e),this}}return this}}class df extends At{constructor(){super(...arguments),this._entityIds=[]}get entityIds(){return this._entityIds}set entityIds(t){this._entityIds=[...t]}addEntityId(t){this._entityIds.push(t)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbSortentsTable");for(const e of this._entityIds)t.writeObjectId(331,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSortentsTable"),this._entityIds=[];!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const i=Number(e.code);if(i===100){t.pushBackItem(e);break}switch(i){case 331:this._entityIds.push(String(e.value));break}}return this}}var gf=(n=>(n[n.NotApplicable=0]="NotApplicable",n[n.Ignore=1]="Ignore",n[n.Replace=2]="Replace",n[n.XrefMangleName=3]="XrefMangleName",n[n.MangleName=4]="MangleName",n))(gf||{});class Uc extends At{constructor(){super(...arguments),this._data=null}get data(){return this._data}set data(t){this._data=t}clear(){var t;(t=this._data)==null||t.clear()}clone(){return super.clone()}getDuplicateRecordCloning(){return this._cloningFlag??0}setDuplicateRecordCloning(t){this._cloningFlag=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbXrecord"),t.writeInt16(280,this._cloningFlag??1),t.writeResultBuffer(this.data),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbXrecord");const e=new nn;for(;!t.atEndOfObject&&!t.atEof;){const i=t.readItem();if(!i)break;const r=Number(i.code);if(r===1001||r>=1e3&&r<=1071){t.pushBackItem(i);break}if(r===100){t.pushBackItem(i);break}switch(r){case 280:this._cloningFlag=Number(i.value);break;default:e.add({code:i.code,value:i.value});break}}return this._data=e.length>0?e:null,this}}const Rt=n=>n?n.trim().toUpperCase():"";class ff{constructor(t){this._db=t,this._dictionaries=new Map,this._xrecords=new Map,this._unknownObjectCount=0}get unknownObjectCount(){return this._unknownObjectCount}read(t){for(this._unknownObjectCount=0;!t.atEof;){const e=t.peekItem();if(!e)break;if(Number(e.code)!==0){t.readItem();continue}const i=String(e.value).toUpperCase();if(i==="ENDSEC"){t.readItem();break}t.readItem(),this.readObject(t,i)}this.finishNamedObjectDictionaries(),this.finishLayerFilterTree(),this.linkLayoutsToBlockTableRecords(),this._db.objects.layout.numEntries===0&&this._db.createDefaultData({layout:!0})}readObject(t,e){switch(e){case"LAYOUT":{const i=new cr;i.dxfIn(t),i.layoutName&&this._db.objects.layout.setAt(i.layoutName,i);break}case"IMAGEDEF":{const i=new uf;i.dxfIn(t),this._db.objects.imageDefinition.setAt(i.objectId,i);break}case"LAYER_FILTER":{const i=new cf;i.dxfIn(t),this._db.objects.layerFilter.setAt(i.objectId,i);break}case"LAYER_INDEX":{const i=new hf;i.dxfIn(t),this._db.objects.layerIndex.setAt(i.objectId,i);break}case"MLEADERSTYLE":{const i=new Io;i.dxfIn(t),this._db.objects.mleaderStyle.setAt(i.objectId,i);break}case"MLINESTYLE":{const i=new jc;i.dxfIn(t),this._db.objects.mlineStyle.setAt(i.styleName||i.objectId,i);break}case"GROUP":{const i=new of;i.dxfIn(t);const r=i.name||i.objectId;this._db.objects.group.setAt(r,i);break}case"SORTENTSTABLE":{const i=new df;i.dxfIn(t),this._db.objects.sortentsTable.setAt(i.objectId,i);break}case"DICTIONARY":{const i=this.readPersistDictionary(t);i.handle&&this._dictionaries.set(Rt(i.handle),i);break}case"XRECORD":{const i=new Uc;i.dxfIn(t);const r=Rt(i.objectId);if(r){this._db.objects.xrecord.setAt(r,i);const s={handle:r,ownerObjectId:Rt(i.ownerId),data:i.data?i.data.toArray().map(o=>({code:Number(o.code),value:o.value})):[]};i.extensionDictionary&&(s.extensionDictionaryId=Rt(i.extensionDictionary)),this._xrecords.set(r,s)}break}default:this._unknownObjectCount+=1,t.skipToEndOfObject();break}}finishNamedObjectDictionaries(){if(this._dictionaries.size===0)return;let t;for(const s of this._dictionaries.values())if(!s.ownerObjectId||s.ownerObjectId==="0"){t=s;break}if(!(t!=null&&t.handle))return;const e=this._db.objects.dictionary;e.objectId=t.handle,e.ownerId="0";const i={ACAD_LAYOUT:this._db.objects.layout,ACAD_GROUP:this._db.objects.group,ACAD_SORTENTS:this._db.objects.sortentsTable,ACAD_MLEADERSTYLE:this._db.objects.mleaderStyle,ACAD_MLINESTYLE:this._db.objects.mlineStyle,ISM_RASTER_IMAGE_DICT:this._db.objects.imageDefinition,MLIGHT_XRECORD:this._db.objects.xrecord},r=this.collectLoadedObjectsByHandle();for(const[s,o]of Object.entries(t.entries)){const a=i[s.toUpperCase()];if(!a)continue;a.objectId=o,a.ownerId=t.handle,e.setAt(s,a);const c=this._dictionaries.get(Rt(o));if(c)for(const[l,h]of Object.entries(c.entries)){const u=r.get(Rt(h));if(!u)continue;const d=Rt(u.objectId);let g=!1;for(const[,f]of a.entries())if(Rt(f.objectId)===d){g=!0;break}!a.getAt(l)&&!g&&a.setAt(l,u)}}}collectLoadedObjectsByHandle(){const t=new Map,e=i=>{const r=Rt(i.objectId);r&&t.set(r,i)};for(const[,i]of this._db.objects.layout.entries())e(i);for(const[,i]of this._db.objects.group.entries())e(i);for(const[,i]of this._db.objects.sortentsTable.entries())e(i);for(const[,i]of this._db.objects.imageDefinition.entries())e(i);for(const[,i]of this._db.objects.mleaderStyle.entries())e(i);for(const[,i]of this._db.objects.mlineStyle.entries())e(i);for(const[,i]of this._db.objects.layerFilter.entries())e(i);for(const[,i]of this._db.objects.layerIndex.entries())e(i);for(const[,i]of this._db.objects.xrecord.entries())e(i);return t}readPersistDictionary(t){const e={handle:"",ownerObjectId:"",entries:{}};let i;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code);switch(s){case 5:e.handle=String(r.value);break;case 330:e.ownerObjectId=String(r.value);break;case 100:case 280:case 281:break;case 3:i=String(r.value);break;case 350:case 340:case 360:{const o=Rt(String(r.value));i?(e.entries[i]=o,i=void 0):s===360&&!e.extensionDictionaryId&&(e.extensionDictionaryId=o);break}}}return e.handle=Rt(e.handle),e.ownerObjectId=Rt(e.ownerObjectId),e.extensionDictionaryId&&(e.extensionDictionaryId=Rt(e.extensionDictionaryId)),e}finishLayerFilterTree(){if(this._dictionaries.size===0&&this._xrecords.size===0)return;const t=Jg({dictionaries:this._dictionaries,xrecords:this._xrecords});t.root.getNestedFilters().length>0&&(this._db.layerFilters=t),this._dictionaries.clear(),this._xrecords.clear()}linkLayoutsToBlockTableRecords(){const t=this._db.tables.blockTable,e=ut.MODEL_SPACE_NAME.toUpperCase();for(const[,i]of this._db.objects.layout.entries()){if(i.layoutName==="Model"){const o=t.modelSpace;i.blockTableRecordId=o.objectId,o.layoutId=i.objectId;continue}const r=Rt(i.objectId);let s=!1;for(const o of t.newIterator())if(Rt(o.layoutId)===r){i.blockTableRecordId=o.objectId,s=!0;break}if(!s&&i.blockTableRecordId){const o=t.getIdAt(i.blockTableRecordId);o&&(o.layoutId=i.objectId)}else if(!s){for(const o of t.newIterator())if(o.isPaperSapce&&o.name.toUpperCase()!==e&&!o.layoutId){i.blockTableRecordId=o.objectId,o.layoutId=i.objectId;break}}}}}class pf{constructor(t,e={}){this._db=t,this._options=e,this._unknownEntityCount=0,this._unknownObjectCount=0,this._attributeMap=new Map,this._yieldGate=new ro(this._options.yieldBudgetMs??Fi)}get unknownEntityCount(){return this._unknownEntityCount}get unknownObjectCount(){return this._unknownObjectCount}async read(t){for(this._unknownEntityCount=0,this._unknownObjectCount=0,this._attributeMap.clear(),t.database=this._db;!t.atEof;){const e=t.readItem();if(!e)break;if(Number(e.code)!==0)continue;const i=String(e.value).toUpperCase();if(i==="EOF")break;if(i==="SECTION"){const r=this.readSectionName(t);await this.readSection(t,r);continue}}return this.flushRemainingAttributes(),{unknownEntityCount:this._unknownEntityCount,unknownObjectCount:this._unknownObjectCount}}readSectionName(t){const e=t.readItem();return e&&Number(e.code)===2?String(e.value).toUpperCase():(e&&t.pushBackItem(e),"")}async readSection(t,e){switch(e){case"HEADER":qg(t,this._db),await this.reportParseProgress(t);break;case"CLASSES":this.readClassesSection(t),await this.reportParseProgress(t);break;case"TABLES":this.readTablesSection(t),await this.reportParseProgress(t);break;case"BLOCKS":await this.readBlocksSection(t),await this.reportParseProgress(t);break;case"ENTITIES":await this.readEntitiesSection(t),await this.reportParseProgress(t);break;case"OBJECTS":{const i=new ff(this._db);i.read(t),this._unknownObjectCount+=i.unknownObjectCount}await this.reportParseProgress(t);break;case"ACDSDATA":this.applyAcdsDataToSolids(M_(t)),await this.reportParseProgress(t);break;case"THUMBNAILIMAGE":this.readThumbnailImageSection(t),await this.reportParseProgress(t);break;default:this.skipUntilEndSec(t),await this.reportParseProgress(t);break}}applyAcdsDataToSolids(t){const e=Object.keys(t.byOwnerHandle);if(e.length===0)return;const i=new Map;for(const r of this._db.tables.blockTable.newIterator())for(const s of r.newIterator())s instanceof ji&&i.set(Oa(s.objectId),s);for(const r of e){const s=t.byOwnerHandle[r];if(!s)continue;const o=i.get(Oa(r));o&&o.setSabBytes(s)}}readThumbnailImageSection(t){let e=0;const i=[];for(;!t.atEof;){const s=t.readItem();if(!s)break;if(Number(s.code)===0){if(String(s.value).toUpperCase()==="ENDSEC")break;t.pushBackItem(s);break}Number(s.code)===90?e=Number(s.value)||0:Number(s.code)===310&&(s.value instanceof Uint8Array?i.push(s.value):i.push(String(s.value)))}if(i.length===0)return;const r=ar(i);!r||r.length===0||(this._db.thumbnailImage=e>0&&r.length>e?r.subarray(0,e):r)}readClassesSection(t){const e=[];for(;!t.atEof;){const i=t.peekItem();if(!i)break;if(Number(i.code)!==0){t.readItem();continue}const r=String(i.value).toUpperCase();if(r==="ENDSEC"){t.readItem();break}if(r==="CLASS"){t.readItem();const s=this.readClassRecord(t);(s.name||s.cppClassName)&&e.push(s);continue}t.readItem(),t.skipToEndOfObject()}e.length>0&&(this._db.classes=e)}readClassRecord(t){const e={name:"",cppClassName:"",appName:"",proxyFlag:0,instanceCount:0,wasProxy:!1,isEntity:!1};for(;!t.atEndOfObject&&!t.atEof;){const i=t.readItem();if(!i)break;switch(Number(i.code)){case 1:e.name=String(i.value);break;case 2:e.cppClassName=String(i.value);break;case 3:e.appName=String(i.value);break;case 90:e.proxyFlag=Number(i.value);break;case 91:e.instanceCount=Number(i.value);break;case 280:e.wasProxy=Number(i.value)!==0;break;case 281:e.isEntity=Number(i.value)!==0;break}}return e}readTablesSection(t){for(;!t.atEof;){const e=t.peekItem();if(!e)break;if(Number(e.code)!==0){t.readItem();continue}const i=String(e.value).toUpperCase();if(i==="ENDSEC"){t.readItem();break}if(i==="TABLE"){t.readItem();const r=this.readTableName(t);this.readTable(t,r);continue}t.readItem(),t.skipToEndOfObject()}this._db.ensureTextStyleDefaults()}readTableName(t){for(;!t.atEof;){const e=t.peekItem();if(!e)return"";const i=Number(e.code);if(i===0)return"";if(t.readItem(),i===2)return String(e.value).toUpperCase()}return""}readTable(t,e){switch(e){case"LAYER":this.readNamedTable(t,"LAYER",()=>new lr,i=>{i.name&&this._db.tables.layerTable.add(i)});break;case"LTYPE":this.readNamedTable(t,"LTYPE",()=>new sn,i=>{i.name&&this._db.tables.linetypeTable.add(i)});break;case"STYLE":this.readNamedTable(t,"STYLE",()=>new wo,i=>{this._db.tables.textStyleTable.add(i)});break;case"DIMSTYLE":this.readNamedTable(t,"DIMSTYLE",()=>new Gt,i=>{i.name&&this._db.tables.dimStyleTable.add(i)});break;case"VPORT":this.readNamedTable(t,"VPORT",()=>new on,i=>{i.name&&this._db.tables.viewportTable.add(i)});break;case"APPID":this.readNamedTable(t,"APPID",()=>new fs,i=>{i.name&&this._db.tables.appIdTable.add(i)});break;case"VIEW":this.readNamedTable(t,"VIEW",()=>new Hg,i=>{i.name&&this._db.tables.viewTable.add(i)});break;case"UCS":this.readNamedTable(t,"UCS",()=>new Gg,i=>{i.name&&this._db.tables.ucsTable.add(i)});break;case"BLOCK_RECORD":this.readBlockRecordTable(t);break;default:this.skipUntilEndTab(t);break}}readNamedTable(t,e,i,r){for(;!t.atEof;){const s=t.peekItem();if(!s)break;if(Number(s.code)!==0){t.readItem();continue}const o=String(s.value).toUpperCase();if(o==="ENDTAB"){t.readItem();break}if(o==="ENDSEC")break;if(o===e){t.readItem();const a=i();a.dxfIn(t),r(a);continue}t.readItem(),t.skipToEndOfObject()}}readBlockRecordTable(t){let e=!1;for(;!t.atEof;){const i=t.peekItem();if(!i)break;if(Number(i.code)!==0){t.readItem();continue}const r=String(i.value).toUpperCase();if(r==="ENDTAB"){t.readItem();break}if(r==="ENDSEC")break;if(r==="BLOCK_RECORD"){t.readItem(),e||(this._db.tables.blockTable.removeAll(),e=!0);const s=new ut;s.dxfIn(t),s.name&&this._db.tables.blockTable.add(s);continue}t.readItem(),t.skipToEndOfObject()}}skipUntilEndTab(t){for(;!t.atEof;){const e=t.readItem();if(!e||Number(e.code)===0&&String(e.value).toUpperCase()==="ENDTAB")break}}async readBlocksSection(t){const e=Math.max(1,this._options.entityBatchSize??200);let i=0;for(;!t.atEof;){const r=t.peekItem();if(!r)break;if(Number(r.code)!==0){t.readItem();continue}const s=String(r.value).toUpperCase();if(s==="ENDSEC"){t.readItem();break}if(s==="BLOCK"){t.readItem(),i=await this.readBlockDefinition(t,e,i);continue}t.readItem(),t.skipToEndOfObject()}}async readBlockDefinition(t,e,i){const r=this.readBlockBeginFields(t),s=this.ensureBlockTableRecord(r);for(;!t.atEof;){const o=t.peekItem();if(!o)break;if(Number(o.code)!==0){t.readItem();continue}const a=String(o.value).toUpperCase();if(a==="ENDBLK"){t.readItem(),t.skipToEndOfObject();break}if(a==="ENDSEC")break;if(t.readItem(),this.consumeSeqend(t,a)){i+=1,i>=e&&(i=0,await this.yieldAndReportProgress(t));continue}const c=oc(t,a);c?this.shouldAcceptBlockEntity(s)&&this.acceptEntity(c,s):(this._unknownEntityCount+=1,t.skipToEndOfObject()),i+=1,i>=e&&(i=0,await this.yieldAndReportProgress(t))}return i}shouldAcceptBlockEntity(t){return!t.isModelSapce&&!t.isPaperSapce}consumeSeqend(t,e){return e!=="SEQEND"?!1:(t.skipToEndOfObject(),!0)}readBlockBeginFields(t){const e=new x;let i="",r=0,s="",o,a;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code);if(l===100)continue;const h=Number(c.value);switch(l){case 5:o=String(c.value);break;case 330:a=String(c.value);break;case 2:case 3:i||(i=String(c.value));break;case 70:r=h;break;case 10:e.x=h;break;case 20:e.y=h;break;case 30:e.z=h;break;case 1:s=String(c.value);break}}return{name:i,flags:r,origin:e,pathName:s,objectId:o,ownerId:a}}ensureBlockTableRecord(t){let e=t.name?this._db.tables.blockTable.getAt(t.name):void 0;e||(e=new ut,e.name=t.name||"*UNKNOWN",t.objectId&&(e.objectId=t.objectId),this._db.tables.blockTable.add(e)),e.origin.copy(t.origin);let i=ut.sanitizeImportedFlags(t.flags);return t.pathName&&(e.pathName=t.pathName,(i&(Ii.Xref|Ii.XrefOverlay))===0&&(i=i|Ii.Xref)),e.flags=i,e}async readEntitiesSection(t){const e=Math.max(1,this._options.entityBatchSize??200);let i=0;const r=this._db.tables.blockTable.modelSpace;for(;!t.atEof;){const s=t.peekItem();if(!s)break;if(Number(s.code)!==0){t.readItem();continue}const o=String(s.value).toUpperCase();if(o==="ENDSEC"){t.readItem();break}if(t.readItem(),this.consumeSeqend(t,o)){i+=1,i>=e&&(i=0,await this.yieldAndReportProgress(t));continue}const a=oc(t,o);a?this.acceptEntity(a,this.resolveEntityOwner(a,r)):(this._unknownEntityCount+=1,t.skipToEndOfObject()),i+=1,i>=e&&(i=0,await this.yieldAndReportProgress(t))}}resolveEntityOwner(t,e){const i=t.getAttrWithoutException("ownerId");if(i){const r=this._db.tables.blockTable.getIdAt(i);if(r&&(r.isModelSapce||r.isPaperSapce))return r}if(t.dxfPaperSpace){const r=this._db.tables.blockTable.getAt(ut.PAPER_SPACE_NAME_PREFIX);if(r)return r}return e}acceptEntity(t,e){if(t instanceof Gi){this.linkOrDeferAttribute(t,e);return}if(e.appendEntity(t),t instanceof ne){const i=this._attributeMap.get(t.objectId);if(i&&i.length>0){for(const r of i)t.appendAttributes(r);this._attributeMap.delete(t.objectId)}}}linkOrDeferAttribute(t,e){const i=t.getAttrWithoutException("ownerId");if(!i||i==="0")return;const r=e.getIdAt(i)??this._db.tables.blockTable.getEntityById(i);if(r instanceof ne){r.appendAttributes(t);return}let s=this._attributeMap.get(i);s||(s=[],this._attributeMap.set(i,s)),s.push(t)}flushRemainingAttributes(){for(const[t,e]of this._attributeMap){const i=this._db.tables.blockTable.getEntityById(t);if(i instanceof ne)for(const r of e)i.appendAttributes(r)}this._attributeMap.clear()}skipUntilEndSec(t){for(;!t.atEof;){const e=t.readItem();if(!e||Number(e.code)===0&&String(e.value).toUpperCase()==="ENDSEC")break}}async reportParseProgress(t){const{onProgress:e,totalBytes:i}=this._options;if(!e||!i||i<=0)return;const r=Math.min(1,Math.max(0,t.position().byteOffset/i));await e(r)}async yieldAndReportProgress(t){await this.reportParseProgress(t),await this._yieldGate.maybeYield(ui)}}const Pr=1,Zo=18,Sr=20,kr=98;class mf extends Yc{constructor(t={}){super({useWorker:!1,...t})}async read(t,e,i={}){const{minimumChunkSize:r=10,progress:s,encoding:o}=i;this.progress=s;const a=async(l,h,u,d)=>{s&&await s(l,h,u,d)};await a(0,"START","START"),await a(Pr,"PARSE","START"),await vu(),e.beginEventBatch();let c=!0;try{const l=Ye.fromBuffer(t,{database:e,encoding:o}),h=t.byteLength;let u=Pr;const g=await new pf(e,{entityBatchSize:Math.max(1,r||200),yieldBudgetMs:Fi,totalBytes:h,onProgress:async y=>{const b=Math.min(Zo-1,Pr+Math.floor(y*(Zo-Pr)));b<=u||(u=b,await a(b,"PARSE","IN-PROGRESS"))}}).read(l);await a(Zo,"PARSE","END",{unknownEntityCount:g.unknownEntityCount}),await a(Sr,"ENTITY","START");const f=Math.max(1,r||200);let p=Sr;const m=new ro(Fi);await e.endEventBatchChunked(f,async(y,b)=>{const _=b<=0?kr:Math.min(kr,Sr+Math.floor(y/b*(kr-Sr)));_>p&&(p=_,await a(_,"ENTITY","IN-PROGRESS")),await m.maybeYield()}),c=!1,await a(kr,"ENTITY","END"),await a(100,"END","END")}catch(l){throw c&&e.endEventBatch(),l}}async parse(t){return{model:null,data:{unknownEntityCount:0}}}}var Mi=(n=>(n.DXF="dxf",n.DWG="dwg",n))(Mi||{});class be{constructor(){this.events={registered:new bt,unregistered:new bt},this._converters=new Map,this.register("dxf",new mf)}static createInstance(){return be._instance==null&&(be._instance=new be),this._instance}static get instance(){return be._instance||(be._instance=new be),be._instance}get fileTypes(){return this._converters.keys()}register(t,e){this._converters.set(t,e),this.events.registered.dispatch({fileType:t,converter:e})}get(t){return this._converters.get(t)}unregister(t){const e=this._converters.get(t);e&&(this._converters.delete(t),this.events.unregistered.dispatch({fileType:t,converter:e}))}}const Na=50,Y_=Z.DEFAULT_CIRCLE_SIDES,z_=1e3;function hr(n){var e;const t=yf((e=n==null?void 0:n.context)==null?void 0:e.database);return{circleSides:t,maxSegments:t}}function yf(n){if(n!=null&&typeof n=="object"){const t=n.drawCircleSides;if(typeof t=="number"&&Number.isFinite(t))return Z.resolveCircleSides(t)}return Z.DEFAULT_CIRCLE_SIDES}function V_(n){var i,r,s;if(n==null||typeof n!="object")return Z.DEFAULT_CIRCLE_SIDES;const t=n.tables,e=(s=(r=(i=t==null?void 0:t.viewportTable)==null?void 0:i.getActiveVport)==null?void 0:r.call(i))==null?void 0:s.circleSides;return typeof e!="number"||!Number.isFinite(e)?Z.DEFAULT_CIRCLE_SIDES:Z.resolveCircleSides(e)}const Qo=new M,Yn=class Yn extends Et{constructor(){super(),this._thickness=0,this._normal=new A(0,0,1),this._elevation=0,this._geo=new rt}get dxfTypeName(){return"LWPOLYLINE"}get numberOfVertices(){return this._geo.numberOfVertices}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get closed(){return this._geo.closed}get area(){return this._geo.area}set closed(t){this._geo.closed=t}addVertexAt(t,e,i=0,r=-1,s=-1){const o=r<0?void 0:r,a=s<0?void 0:s,c={x:e.x,y:e.y,bulge:i,startWidth:o,endWidth:a};this._geo.addVertexAt(t,c)}removeVertexAt(t){this._geo.removeVertexAt(t)}reset(t,e){this._geo.reset(t,e)}getPoint2dAt(t){return this._geo.getPointAt(t)}getPoint3dAt(t){const e=this.getPoint2dAt(t);return this.ocsPointToWcs(e.x,e.y)}get geometricExtents(){const t=this._geo.box;return t.isEmpty()?new j:new j().setFromPoints([this.ocsPointToWcs(t.min.x,t.min.y),this.ocsPointToWcs(t.max.x,t.min.y),this.ocsPointToWcs(t.max.x,t.max.y),this.ocsPointToWcs(t.min.x,t.max.y)])}ocsPointToWcs(t,e){return te({x:t,y:e,z:this._elevation},this._normal)}subGetIntersectCurves(){return Xc(this._geo.vertices,this.closed,this._elevation,this._normal)}subGetGripPoints(){const t=new Array;for(let e=0;e<this.numberOfVertices;++e)t.push(this.getPoint3dAt(e));return this.shouldIncludeSegmentMidpointGrips()&&this.appendSegmentMidpointGrips(t),t}subMoveGripPointsAt(t,e){const i=this.numberOfVertices,r=this.shouldIncludeSegmentMidpointGrips(),s=r?this.getSegmentCount():0,o=jt(e,this._normal);return Pt(t,a=>{if(a<i){Ti(this._geo.vertices,a,o);return}if(!r||a>=i+s)return;const c=a-i;Ti(this._geo.vertices,c,o),Ti(this._geo.vertices,(c+1)%i,o)}),this}shouldIncludeSegmentMidpointGrips(){return this.getGripsMode()>=2}getGripsMode(){try{const t=yt.instance().getVar(T.GRIPS,this.database);return typeof t=="number"?t:2}catch{return 2}}getSegmentCount(){const t=this.numberOfVertices;return t<2?0:this.closed?t:t-1}appendSegmentMidpointGrips(t){var o;const e=this._geo,i=this._elevation,r=this.getSegmentCount(),s=e.numberOfVertices;for(let a=0;a<r;a++){const c=[];Ui(e.getPointAt(a),e.getPointAt((a+1)%s),(o=e.vertices[a])==null?void 0:o.bulge,i,I.MidPoint,{x:0,y:0,z:0},c);for(const l of c)t.push(this.ocsPointToWcs(l.x,l.y))}}subGetOsnapPoints(t,e,i,r){var c;const s=this._geo,o=this._elevation,a=s.numberOfVertices;if(a!==0)switch(t){case I.EndPoint:for(let l=0;l<a;l++)r.push(this.getPoint3dAt(l));break;case I.MidPoint:case I.Nearest:case I.Perpendicular:case I.Tangent:{const l=this.closed?a:a-1,h=[];for(let u=0;u<l;u++){const d=[];Ui(s.getPointAt(u),s.getPointAt((u+1)%a),(c=s.vertices[u])==null?void 0:c.bulge,o,t,e,d);for(const g of d)h.push(this.ocsPointToWcs(g.x,g.y))}if(t===I.MidPoint)r.push(...h);else{const u=oe(e,h);u&&r.push(u)}break}}}transformBy(t){const e=t.determinant()<0;let i=this._elevation;return this._geo.vertices.forEach(r=>{const s=new x(r.x,r.y,this._elevation).applyMatrix4(t);r.x=s.x,r.y=s.y,i=s.z,e&&r.bulge!=null&&(r.bulge=-r.bulge)}),this._elevation=i,this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}get directBatchPrimitive(){return this.hasRenderableWidth()?this.closed?null:"area":"lineStrip"}subWorldDraw(t){const e=hr(t),i=this._geo.tessellate(e),r=this.createWidthProfile(e);if(r!=null){if(this.closed||bf(Hc(r,!1))){const c=j_(r);if(c!=null){const l=t.subEntityTraits;return l.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.offsetRing(c.outer.map(h=>this.ocsPointToWcs(h.x,h.y)),c.inner.map(h=>this.ocsPointToWcs(h.x,h.y)))}}const a=U_(r,this.closed);if(a!=null){const c=t.subEntityTraits;return c.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},this.mapAreaLoopsToWcs(a),t.area(a)}}const s=[];return i.forEach(o=>s.push(this.ocsPointToWcs(o.x,o.y))),t.lines(s)}mapAreaLoopsToWcs(t){if(!(this._normal.x===0&&this._normal.y===0&&this._normal.z===1)){for(const e of t.loops)if("vertices"in e)for(const i of e.vertices){const r=this.ocsPointToWcs(i.x,i.y);i.x=r.x,i.y=r.y}}}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolyline"),t.writeInt32(90,this.numberOfVertices),t.writeInt16(70,this.closed?1:0);const e=this.resolveConstantWidth();e!=null&&t.writeDouble(43,e),t.writeDouble(38,this.elevation),this.thickness!==0&&t.writeDouble(39,this.thickness);const i=this._geo.vertices;for(let r=0;r<i.length;++r){const s=i[r];t.writePoint2d(10,this.getPoint2dAt(r)),e==null&&(s.startWidth!=null&&t.writeDouble(40,s.startWidth),s.endWidth!=null&&t.writeDouble(41,s.endWidth));const o=s.bulge??0;o!==0&&t.writeDouble(42,o),s.identifier!=null&&t.writeInt32(91,s.identifier)}return t.writeVector3d(210,this.normal),this}dxfOutAs2dPolyline(t,e=!1){var r,s,o;t.writeHandle(5,this.objectId),t.writeObjectId(330,this.ownerId),t.writeObjectId(360,this.extensionDictionary),t.writeSubclassMarker("AcDbEntity"),t.writeString(8,this.layer),t.writeString(6,this.lineType),t.writeDouble(48,this.linetypeScale),t.writeInt16(60,this.visibility?0:1),t.writeCmColor(this.color),t.writeLineWeight(370,this.lineWeight),t.writeTransparency(this.transparency);const i=(r=this.database)==null?void 0:r.tables.blockTable.getIdAt(this.ownerId);i!=null&&i.isPaperSapce&&t.writeInt16(67,1),t.writeSubclassMarker("AcDb2dPolyline"),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,this.closed?1:0),t.writeDouble(10,0),t.writeDouble(20,0),t.writeDouble(30,this.elevation),e&&this.dxfOutXData(t);for(let a=0;a<this.numberOfVertices;++a){const c=this._geo.vertices[a];t.writeStart("VERTEX"),t.writeHandle(5,(s=this.database)==null?void 0:s.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint3d(10,{x:this.getPoint2dAt(a).x,y:this.getPoint2dAt(a).y,z:this.elevation});const l=(c==null?void 0:c.bulge)??0;l!==0&&t.writeDouble(42,l),t.writeInt16(70,0)}return t.writeStart("SEQEND"),t.writeHandle(5,(o=this.database)==null?void 0:o.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbPolyline"),this.reset(!1);let e=!1,i=this.elevation,r=this.thickness,s=this.normal.x,o=this.normal.y,a=this.normal.z,c=-1,l=0,h=0,u=!1,d=0,g=-1,f=-1,p,m=0;const y=()=>{if(!u)return;const b=g<0?c:g,_=f<0?c:f;if(Qo.x=l,Qo.y=h,this.addVertexAt(m++,Qo,d,b,_),p!=null){const w=this._geo.vertices[m-1];w&&(w.identifier=p)}u=!1,d=0,g=-1,f=-1,p=void 0};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const b=t.readItem();if(!b)break;const _=Number(b.code),w=Number(b.value);switch(_){case 90:break;case 70:e=(w&1)!==0;break;case 43:c=w;break;case 38:i=w;break;case 39:r=w;break;case 10:y(),l=w,h=0,u=!0;break;case 20:h=w;break;case 40:g=w;break;case 41:f=w;break;case 42:d=w;break;case 91:p=w;break;case 210:s=w;break;case 220:o=w;break;case 230:a=w;break}}return y(),this.closed=e,this.elevation=i,this.thickness=r,s*s+o*o+a*a>0&&this.normal.set(s,o,a).normalize(),this}resolveConstantWidth(){const t=this._geo.vertices;if(t.length===0)return;let e;for(const i of t){const r=i.startWidth,s=i.endWidth;if(r==null&&s==null){if(e!=null&&e!==0)return;e=e??0;continue}const o=r??0;if(o!==(s??0))return;if(e==null)e=o;else if(e!==o)return}return e!=null&&e!==0?e:void 0}hasRenderableWidth(){const t=this._geo.vertices;for(let e=0;e<t.length;e++){const i=Math.max(0,t[e].startWidth??0),r=Math.max(0,t[e].endWidth??0);if(i>vt||r>vt)return!0}return!1}createWidthProfile(t){const e=this._geo.vertices,i=e.length;if(i<2)return null;const r=this.closed?i:i-1,s=[];let o=!1;for(let a=0;a<r;a++){const c=e[a],l=e[(a+1)%i],h=Math.max(0,c.startWidth??0),u=Math.max(0,c.endWidth??0);(h>vt||u>vt)&&(o=!0);const d=this.sampleSegment(c,l,t),g=d.length-1;for(let f=0;f<=g;f++){if(f===0&&s.length>0||this.closed&&a===r-1&&f===g)continue;const p=g>0?f/g:0;s.push({x:d[f].x,y:d[f].y,width:Z_(h,u,p)})}}return o&&s.length>=2?s:null}sampleSegment(t,e,i){if(t.bulge&&Math.abs(t.bulge)>vt){const s=new Z(t,e,t.bulge).tessellate(i);if(s.length>1)return s.map(o=>new M(o.x,o.y))}return[new M(t.x,t.y),new M(e.x,e.y)]}static from2dPoints(t,e){const i=new Yn;return t.forEach((r,s)=>i.addVertexAt(s,r)),i.closed=e,i}static fromGePolyline(t){const e=new Yn;return t.vertices.forEach((i,r)=>{e.addVertexAt(r,new M(i.x,i.y),i.bulge??0)}),e.closed=t.closed,e}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.numberOfVertices;let i=1/0,r=1;const s=this.closed?e:e-1;for(let o=0;o<s;o++){const a=this.getPoint2dAt(o),c=this.getPoint2dAt((o+1)%e),l=c.x-a.x,h=c.y-a.y,u=l*l+h*h;if(u===0)continue;const d=Math.max(0,Math.min(1,((t.x-a.x)*l+(t.y-a.y)*h)/u)),g=(t.x-a.x-d*l)**2+(t.y-a.y-d*h)**2;g<i&&(i=g,r=l*(t.y-a.y)-h*(t.x-a.x)>=0?1:-1)}return r}createOffsetCurve(t){const e=this._geo.offset(t);return e.length===0?null:Yn.fromGePolyline(e[0])}};Yn.typeName="Polyline";let Dt=Yn;function Eo(n,t,e){const i=Wm(n,t,e);return i?Dt.fromGePolyline(i):null}const vt=1e-6,zh=4;function j_(n){const t=Hc(n,!0);if(t.length<2)return null;const{left:e,right:i}=Gc(t,!0),r=ci(e),s=ci(i);if(!vn(r)||!vn(s)||r.length!==s.length)return null;const o=Math.abs(wn(r)),a=Math.abs(wn(s)),[c,l]=o>=a?[r,s]:[s,r];return{outer:c,inner:l}}function U_(n,t){if(n.length<2)return null;if(t)return Jo(n,!0);const e=G_(n);if(e.length===1)return Jo(e[0],!1);const i=new he;let r=!1;for(const s of e){const o=Jo(s,!1);if(o!=null){for(const a of o.loops)i.add(a);r=!0}}return r?i:null}function Jo(n,t){const e=Hc(n,t);if(e.length<2)return null;const{left:i,right:r}=Gc(e,t);if(jh(i)<2||jh(r)<2)return null;const s=new he;if(t){const o=ci(i),a=ci(r),c=vn(o),l=vn(a);if(!c&&!l)return null;if(!c||!l)return s.add(new rt(c?o:a,!0)),s;const h=Math.abs(wn(o)),u=Math.abs(wn(a)),[d,g]=h>=u?[o,a]:[a,o];return s.add(new rt(d,!0)),s.add(new rt(g,!0)),s}return bf(e)&&W_(s,e)||q_(s,i,r)?s:null}function G_(n){if(n.length<2)return[n];const t=[];let e=0;const i=new Map;for(let s=0;s<n.length;s++){const o=Vh(n[s]),a=i.get(o);if(a!=null&&s-a>1){const c=n.slice(e,s+1);if(c.length>=2&&t.push(c),a===e&&s===n.length-1)return t.length>0?t:[n];e=a,i.clear();for(let l=e;l<=s;l++)i.set(Vh(n[l]),l);continue}i.set(o,s)}const r=n.slice(e);return r.length>=2&&t.push(r),t.length>0?t:[n]}function Vh(n){return`${n.x.toFixed(4)}:${n.y.toFixed(4)}`}function H_(n,t){const e=Math.max(n,t),i=Math.min(n,t);return e<=vt?!1:e-i>vt}function bf(n){if(n.length<3)return!1;const t=n[0],e=n[n.length-1],i=Math.hypot(e.x-t.x,e.y-t.y);if(i<=vt)return!0;const r=Math.max(...n.map(s=>s.width));return r<=vt?!1:i<=r*4}function W_(n,t){const{left:e,right:i}=Gc(t,!0),r=ci(e),s=ci(i);if(!vn(r)||!vn(s))return!1;const o=Math.abs(wn(r)),a=Math.abs(wn(s));if(!H_(o,a))return!1;const[c,l]=o>=a?[r,s]:[s,r];return n.add(new rt(c,!0)),n.add(new rt(l,!0)),!0}function Gc(n,t){const e=new Array(n.length),i=new Array(n.length);for(let r=0;r<n.length;r++){const s=n[r],o=Math.max(0,s.width)/2;if(o<=vt){e[r]={x:s.x,y:s.y},i[r]={x:s.x,y:s.y};continue}const a=K_(n,r,t);if(a==null){e[r]=null,i[r]=null;continue}e[r]={x:s.x+a.x*o,y:s.y+a.y*o},i[r]={x:s.x-a.x*o,y:s.y-a.y*o}}return{left:e,right:i}}function $_(n,t,e,i,r){const s=[t,e,i,r];return vn(s)?(n.add(new rt(s,!0)),!0):!1}function q_(n,t,e){let i=!1;for(let r=0;r<t.length-1;r++){const s=t[r],o=t[r+1],a=e[r],c=e[r+1];s==null||o==null||a==null||c==null||$_(n,s,o,c,a)&&(i=!0)}return i}function jh(n){return n.reduce((t,e)=>e==null?t:t+1,0)}function ci(n){return n.filter(t=>t!=null)}function Hc(n,t){const e=[];if(n.forEach(i=>{const r=e[e.length-1];(!r||Math.abs(r.x-i.x)>vt||Math.abs(r.y-i.y)>vt||Math.abs(r.width-i.width)>vt)&&e.push(i)}),t&&e.length>1){const i=e[0],r=e[e.length-1];Math.abs(i.x-r.x)<=vt&&Math.abs(i.y-r.y)<=vt&&e.pop()}return e}function K_(n,t,e){const i=n.length,r=n[t],s=n[(t-1+i)%i],o=n[(t+1)%i];let a=Uh(r.x-s.x,r.y-s.y),c=Uh(o.x-r.x,o.y-r.y);if(e||(t===0&&(a=c),t===i-1&&(c=a)),a==null&&c==null)return null;if(a==null)return Ir(c);if(c==null)return Ir(a);const l=Ir(a),h=Ir(c),u=l.x+h.x,d=l.y+h.y,g=Math.hypot(u,d);if(g<=vt)return h;const f={x:u/g,y:d/g},p=Math.abs(f.x*h.x+f.y*h.y),m=p<=vt?zh:Math.min(1/p,zh);return{x:f.x*m,y:f.y*m}}function Uh(n,t){const e=Math.hypot(n,t);return e<=vt?null:{x:n/e,y:t/e}}function Ir(n){return{x:-n.y,y:n.x}}function wn(n){let t=0;const e=n.length;for(let i=0;i<e;i++){const r=n[i],s=n[(i+1)%e];t+=r.x*s.y-s.x*r.y}return t/2}function vn(n){return n.length>=3&&Math.abs(wn(n))>vt}function Z_(n,t,e){return n+(t-n)*e}const Q_={patterns:[{name:"SOLID",description:"",lines:[]},{name:"ANGLE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.275,dashes:[.2,-.075],sourceLine:23},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.275,dashes:[.2,-.075],sourceLine:24}]},{name:"ANSI31",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:26}]},{name:"ANSI32",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:28},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:29}]},{name:"ANSI33",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:31},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.25,dashes:[.125,-.0625],sourceLine:32}]},{name:"ANSI34",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:34},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:35},{angle:45,originX:.353553391,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:36},{angle:45,originX:.530330086,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:37}]},{name:"ANSI35",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:39},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.25,dashes:[.3125,-.0625,0,-.0625],sourceLine:40}]},{name:"ANSI36",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:.21875,deltaY:.125,dashes:[.3125,-.0625,0,-.0625],sourceLine:42}]},{name:"ANSI37",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:44},{angle:135,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:45}]},{name:"ANSI38",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:47},{angle:135,originX:0,originY:0,deltaX:.25,deltaY:.125,dashes:[.3125,-.1875],sourceLine:48}]},{name:"AR-B816",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[],sourceLine:54},{angle:90,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[8,-8],sourceLine:55}]},{name:"AR-B816C",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[15.625,-.375],sourceLine:57},{angle:0,originX:-8,originY:.375,deltaX:8,deltaY:8,dashes:[15.625,-.375],sourceLine:58},{angle:90,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[-8.375,7.625],sourceLine:59},{angle:90,originX:-.375,originY:0,deltaX:8,deltaY:8,dashes:[-8.375,7.625],sourceLine:60}]},{name:"AR-B88",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[],sourceLine:62},{angle:90,originX:0,originY:0,deltaX:8,deltaY:4,dashes:[8,-8],sourceLine:63}]},{name:"AR-BRELM",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.334,dashes:[7.625,-.375],sourceLine:65},{angle:0,originX:0,originY:2.25,deltaX:0,deltaY:5.334,dashes:[7.625,-.375],sourceLine:66},{angle:0,originX:2,originY:2.667,deltaX:0,deltaY:5.334,dashes:[3.625,-.375],sourceLine:67},{angle:0,originX:2,originY:4.917,deltaX:0,deltaY:5.334,dashes:[3.625,-.375],sourceLine:68},{angle:90,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[2.25,-3.084],sourceLine:69},{angle:90,originX:-.375,originY:0,deltaX:0,deltaY:8,dashes:[2.25,-3.084],sourceLine:70},{angle:90,originX:2,originY:2.667,deltaX:0,deltaY:4,dashes:[2.25,-3.084],sourceLine:71},{angle:90,originX:1.625,originY:2.667,deltaX:0,deltaY:4,dashes:[2.25,-3.084],sourceLine:72}]},{name:"AR-BRSTD",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:2.667,dashes:[],sourceLine:74},{angle:90,originX:0,originY:0,deltaX:2.667,deltaY:4,dashes:[2.667,-2.667],sourceLine:75}]},{name:"AR-CONC",description:"",lines:[{angle:50,originX:0,originY:0,deltaX:4.12975034,deltaY:-5.89789472,dashes:[.75,-8.25],sourceLine:77},{angle:355,originX:0,originY:0,deltaX:-2.03781207,deltaY:7.3723684,dashes:[.6,-6.6],sourceLine:78},{angle:100.45144446,originX:.59771681,originY:-.05229344,deltaX:5.7305871,deltaY:-6.9397673,dashes:[.63740192,-7.01142112],sourceLine:79},{angle:46.1842,originX:0,originY:2,deltaX:6.19462554,deltaY:-8.84684596,dashes:[1.125,-12.375],sourceLine:80},{angle:96.63563549,originX:.88936745,originY:1.86206693,deltaX:8.59588239,deltaY:-10.40964966,dashes:[.95610342,-10.5171376],sourceLine:81},{angle:351.18416399,originX:0,originY:2,deltaX:7.74327494,deltaY:11.05855746,dashes:[.9,-9.90000001],sourceLine:82},{angle:21,originX:1,originY:1.5,deltaX:4.12975034,deltaY:-5.89789472,dashes:[.75,-8.25],sourceLine:83},{angle:326,originX:1,originY:1.5,deltaX:-2.03781207,deltaY:7.3723684,dashes:[.6,-6.6],sourceLine:84},{angle:71.45144474,originX:1.49742254,originY:1.16448426,deltaX:5.7305871,deltaY:-6.9397673,dashes:[.6374019,-7.01142112],sourceLine:85},{angle:37.5,originX:0,originY:0,deltaX:2.123,deltaY:2.567,dashes:[0,-6.52,0,-6.7,0,-6.625],sourceLine:86},{angle:7.5,originX:0,originY:0,deltaX:3.123,deltaY:3.567,dashes:[0,-3.82,0,-6.37,0,-2.525],sourceLine:87},{angle:-32.5,originX:-2.23,originY:0,deltaX:4.6234,deltaY:2.678,dashes:[0,-2.5,0,-7.8,0,-10.35],sourceLine:88},{angle:-42.5,originX:-3.23,originY:0,deltaX:3.6234,deltaY:4.678,dashes:[0,-3.25,0,-5.18,0,-7.35],sourceLine:89}]},{name:"AR-HBONE",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:4,deltaY:4,dashes:[12,-4],sourceLine:91},{angle:135,originX:2.828427125,originY:2.828427125,deltaX:4,deltaY:-4,dashes:[12,-4],sourceLine:92}]},{name:"AR-PARQ1",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:94},{angle:90,originX:2,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:95},{angle:90,originX:4,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:96},{angle:90,originX:6,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:97},{angle:90,originX:8,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:98},{angle:90,originX:10,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:99},{angle:90,originX:12,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:100},{angle:0,originX:0,originY:12,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:101},{angle:0,originX:0,originY:14,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:102},{angle:0,originX:0,originY:16,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:103},{angle:0,originX:0,originY:18,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:104},{angle:0,originX:0,originY:20,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:105},{angle:0,originX:0,originY:22,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:106},{angle:0,originX:0,originY:24,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:107}]},{name:"AR-RROOF",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:2.2,deltaY:1,dashes:[15,-2,5,-1],sourceLine:109},{angle:0,originX:1.33,originY:.5,deltaX:-1,deltaY:1.33,dashes:[3,-.33,6,-.75],sourceLine:110},{angle:0,originX:.5,originY:.85,deltaX:5.2,deltaY:.67,dashes:[8,-1.4,4,-1],sourceLine:111}]},{name:"AR-RSHKE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:25.5,deltaY:12,dashes:[6,-5,7,-3,9,-4],sourceLine:113},{angle:0,originX:6,originY:.5,deltaX:25.5,deltaY:12,dashes:[5,-19,4,-6],sourceLine:114},{angle:0,originX:18,originY:-.75,deltaX:25.5,deltaY:12,dashes:[3,-31],sourceLine:115},{angle:90,originX:0,originY:0,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:116},{angle:90,originX:6,originY:0,deltaX:12,deltaY:8.5,dashes:[11.25,-36.75],sourceLine:117},{angle:90,originX:11,originY:0,deltaX:12,deltaY:8.5,dashes:[10.5,-37.5],sourceLine:118},{angle:90,originX:18,originY:-.75,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:119},{angle:90,originX:21,originY:-.75,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:120},{angle:90,originX:30,originY:0,deltaX:12,deltaY:8.5,dashes:[11,-37],sourceLine:121}]},{name:"AR-SAND",description:"",lines:[{angle:37.5,originX:0,originY:0,deltaX:1.123,deltaY:1.567,dashes:[0,-1.52,0,-1.7,0,-1.625],sourceLine:123},{angle:7.5,originX:0,originY:0,deltaX:2.123,deltaY:2.567,dashes:[0,-.82,0,-1.37,0,-.525],sourceLine:124},{angle:-32.5,originX:-1.23,originY:0,deltaX:2.6234,deltaY:1.678,dashes:[0,-.5,0,-1.8,0,-2.35],sourceLine:125},{angle:-42.5,originX:-1.23,originY:0,deltaX:1.6234,deltaY:2.678,dashes:[0,-.25,0,-1.18,0,-1.35],sourceLine:126}]},{name:"BOX",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:128},{angle:90,originX:.25,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:129},{angle:0,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[-.25,.25],sourceLine:130},{angle:0,originX:0,originY:.25,deltaX:0,deltaY:1,dashes:[-.25,.25],sourceLine:131},{angle:0,originX:0,originY:.5,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:132},{angle:0,originX:0,originY:.75,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:133},{angle:90,originX:.5,originY:0,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:134},{angle:90,originX:.75,originY:0,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:135}]},{name:"BRASS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:137},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.25,dashes:[.125,-.0625],sourceLine:138}]},{name:"BRICK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:140},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.5,dashes:[.25,-.25],sourceLine:141},{angle:90,originX:.25,originY:0,deltaX:0,deltaY:.5,dashes:[-.25,.25],sourceLine:142}]},{name:"BRSTONE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.33,dashes:[],sourceLine:144},{angle:90,originX:.9,originY:0,deltaX:.33,deltaY:.5,dashes:[.33,-.33],sourceLine:145},{angle:90,originX:.8,originY:0,deltaX:.33,deltaY:.5,dashes:[.33,-.33],sourceLine:146},{angle:0,originX:.9,originY:.055,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:147},{angle:0,originX:.9,originY:.11,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:148},{angle:0,originX:.9,originY:.165,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:149},{angle:0,originX:.9,originY:.22,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:150},{angle:0,originX:.9,originY:.275,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:151}]},{name:"CLAY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.1875,dashes:[],sourceLine:153},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.1875,dashes:[],sourceLine:154},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.1875,dashes:[],sourceLine:155},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.1875,dashes:[.1875,-.125],sourceLine:156}]},{name:"CORK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:158},{angle:135,originX:.0625,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:159},{angle:135,originX:.09375,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:160},{angle:135,originX:.125,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:161}]},{name:"CROSS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.25,dashes:[.125,-.375],sourceLine:163},{angle:90,originX:.0625,originY:-.0625,deltaX:.25,deltaY:.25,dashes:[.125,-.375],sourceLine:164}]},{name:"DASH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:166}]},{name:"DOLMIT",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:168},{angle:45,originX:0,originY:0,deltaX:0,deltaY:.70710678,dashes:[.3535533905932738,-.7071067811865476],sourceLine:169}]},{name:"DOTS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.03125,deltaY:.0625,dashes:[0,-.0625],sourceLine:171}]},{name:"EARTH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:173},{angle:0,originX:0,originY:.09375,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:174},{angle:0,originX:0,originY:.1875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:175},{angle:90,originX:.03125,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:176},{angle:90,originX:.125,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:177},{angle:90,originX:.21875,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:178}]},{name:"ESCHER",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:180},{angle:180,originX:0,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:181},{angle:300,originX:0,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:182},{angle:60,originX:.1,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:183},{angle:300,originX:.1,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:184},{angle:60,originX:-.05,originY:.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:185},{angle:180,originX:-.05,originY:.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:186},{angle:300,originX:-.05,originY:-.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:187},{angle:180,originX:-.05,originY:-.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:188},{angle:60,originX:-.4,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:189},{angle:300,originX:-.4,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:190},{angle:60,originX:.2,originY:-.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:191},{angle:180,originX:.2,originY:-.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:192},{angle:300,originX:.2,originY:.346410161,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:193},{angle:180,originX:.2,originY:.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:194},{angle:0,originX:.2,originY:.173205081,deltaX:-.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:195},{angle:0,originX:.2,originY:-.173205081,deltaX:-.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:196},{angle:120,originX:.05,originY:.259807621,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:197},{angle:120,originX:-.25,originY:.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:198},{angle:240,originX:-.25,originY:-.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:199},{angle:240,originX:.05,originY:-.259807621,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:200}]},{name:"FLEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[.25,-.25],sourceLine:202},{angle:45,originX:.25,originY:0,deltaX:.176776695296,deltaY:.176776695296,dashes:[.0625,-.2285533906,.0625,-.353553390593],sourceLine:203}]},{name:"GOST_GLASS",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:6,deltaY:-6,dashes:[5,-7],sourceLine:205},{angle:45,originX:2.12132,originY:0,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:206},{angle:45,originX:0,originY:2.12132,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:207}]},{name:"GOST_WOOD",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:209},{angle:90,originX:2,originY:-2,deltaX:0,deltaY:-6,dashes:[6,-1.5,3,-1.5],sourceLine:210},{angle:90,originX:4,originY:-5,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:211}]},{name:"GOST_GROUND",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:213},{angle:45,originX:3,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:214},{angle:45,originX:6,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:215}]},{name:"GRASS",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:.707106781,deltaY:.707106781,dashes:[.1875,-1.226713563],sourceLine:217},{angle:45,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[.1875,-.8125],sourceLine:218},{angle:135,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[.1875,-.8125],sourceLine:219}]},{name:"GRATE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.03125,dashes:[],sourceLine:221},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:222}]},{name:"GRAVEL",description:"",lines:[{angle:228.012787504,originX:.72,originY:1,deltaX:12.0413651692039,deltaY:.0743294146632,dashes:[.134536,-13.3190880470737],sourceLine:224},{angle:184.969740728,originX:.63,originY:.9,deltaX:-12.0415166747131,deltaY:.0433148081592,dashes:[.230868,-22.85592476123],sourceLine:225},{angle:132.510447078,originX:.4,originY:.88,deltaX:-14.8659418273816,deltaY:.061429511683,dashes:[.162788,-16.1160325960997],sourceLine:226},{angle:267.273689006,originX:.01,originY:.63,deltaX:-20.0249279039043,deltaY:.0475651493827,dashes:[.210238,-20.813558041629],sourceLine:227},{angle:292.833654178,originX:0,originY:.42,deltaX:-12.9999095019474,deltaY:.048507125026,dashes:[.206155,-20.4093731280883],sourceLine:228},{angle:357.273689006,originX:.08,originY:.23,deltaX:-20.0249279039043,deltaY:.0475651493827,dashes:[.210238,-20.813558041629],sourceLine:229},{angle:37.6942404667,originX:.29,originY:.22,deltaX:-16.4011800288558,deltaY:.0359675000664,dashes:[.278029,-27.524848548916],sourceLine:230},{angle:72.2553283749,originX:.51,originY:.39,deltaX:23.0867613281116,deltaY:.0380969659053,dashes:[.262488,-25.9863214968134],sourceLine:231},{angle:121.429565615,originX:.59,originY:.64,deltaX:15.2642639131074,deltaY:.047404546271,dashes:[.21095,-20.884073109729],sourceLine:232},{angle:175.236358309,originX:.48,originY:.82,deltaX:-11.0450488205478,deltaY:.083045479801,dashes:[.240832,-11.8007625787923],sourceLine:233},{angle:222.397437798,originX:.24,originY:.84,deltaX:16.2787889313724,deltaY:.0321080648114,dashes:[.311448,-30.8333750047949],sourceLine:234},{angle:138.814074834,originX:1,originY:.62,deltaX:9.2190645101588,deltaY:.0940720868851,dashes:[.106301,-10.5238448127347],sourceLine:235},{angle:171.46923439,originX:.92,originY:.69,deltaX:-13.1528534931484,deltaY:.0494468176315,dashes:[.202237,-20.021511416157],sourceLine:236},{angle:225,originX:.72,originY:.72,deltaX:.7071067811865,deltaY:.7071067811865,dashes:[.141421,-1.2727925623731],sourceLine:237},{angle:203.198590514,originX:.65,originY:.84,deltaX:-5.3835637472478,deltaY:.1313064328928,dashes:[.076158,-7.5396151058639],sourceLine:238},{angle:291.801409486,originX:.58,originY:.81,deltaX:-3.156820749011,deltaY:.185695338158,dashes:[.107703,-5.2774618071345],sourceLine:239},{angle:30.9637565321,originX:.62,originY:.71,deltaX:3.6014702879928,deltaY:.1714985851408,dashes:[.174929,-5.6560228948453],sourceLine:240},{angle:161.565051177,originX:.77,originY:.8,deltaX:-2.2135943621183,deltaY:.3162277660138,dashes:[.126491,-3.0357866601684],sourceLine:241},{angle:16.389540334,originX:0,originY:.81,deltaX:10.4401539876873,deltaY:.0564332648047,dashes:[.1772,-17.5428451466694],sourceLine:242},{angle:70.3461759419,originX:.17,originY:.86,deltaX:-11.7045066155395,deltaY:.0672672793901,dashes:[.148661,-14.717407747319],sourceLine:243},{angle:293.198590514,originX:.77,originY:1,deltaX:-5.3835637472478,deltaY:.1313064328928,dashes:[.152315,-7.4634581058639],sourceLine:244},{angle:343.610459666,originX:.83,originY:.86,deltaX:-10.4401539876873,deltaY:.0564332648047,dashes:[.1772,-17.542845146669],sourceLine:245},{angle:339.44395478,originX:0,originY:.19,deltaX:-5.3838927710229,deltaY:.117041147157,dashes:[.17088,-8.3731237453175],sourceLine:246},{angle:294.775140569,originX:.16,originY:.13,deltaX:-12.0828441168135,deltaY:.0698430296124,dashes:[.143178,-14.174643063276],sourceLine:247},{angle:66.8014094864,originX:.78,originY:0,deltaX:5.3835637472487,deltaY:.1313064328552,dashes:[.152315,-7.4634581058639],sourceLine:248},{angle:17.3540246363,originX:.84,originY:.14,deltaX:-13.6013396869991,deltaY:.0596549986364,dashes:[.167631,-16.59542361424],sourceLine:249},{angle:69.4439547804,originX:.29,originY:0,deltaX:-5.383892771022,deltaY:.1170411471946,dashes:[.08544,-8.4585637453175],sourceLine:250},{angle:101.309932474,originX:.72,originY:0,deltaX:4.1184388379018,deltaY:.1961161351396,dashes:[.05099,-5.0480295135928],sourceLine:251},{angle:165.963756532,originX:.71,originY:.05,deltaX:-3.1529631254726,deltaY:.2425356250323,dashes:[.206155,-3.9169506256177],sourceLine:252},{angle:186.009005957,originX:.51,originY:.1,deltaX:-10.0497393137326,deltaY:.0523423921723,dashes:[.19105,-18.9139231745428],sourceLine:253},{angle:303.690067526,originX:.62,originY:.62,deltaX:-2.2188007849008,deltaY:.2773500981134,dashes:[.144222,-3.461329275464],sourceLine:254},{angle:353.157226587,originX:.7,originY:.5,deltaX:17.1171966955143,deltaY:.0397150736497,dashes:[.251794,-24.9275626240283],sourceLine:255},{angle:60.9453959009,originX:.95,originY:.47,deltaX:-8.0616726575653,deltaY:.0971285862325,dashes:[.102956,-10.192674140987],sourceLine:256},{angle:90,originX:1,originY:.56,deltaX:1,deltaY:1,dashes:[.06,-.94],sourceLine:257},{angle:120.256437164,originX:.49,originY:.13,deltaX:-8.0619364083848,deltaY:.0719815751411,dashes:[.138924,-13.7535199894498],sourceLine:258},{angle:48.0127875042,originX:.42,originY:.25,deltaX:12.0413651692041,deltaY:.0743294146212,dashes:[.269072,-13.1845520470737],sourceLine:259},{angle:0,originX:.6,originY:.45,deltaX:1,deltaY:1,dashes:[.26,-.74],sourceLine:260},{angle:325.304846469,originX:.86,originY:.45,deltaX:12.2063917682497,deltaY:-.063245553253,dashes:[.158114,-15.653274300842],sourceLine:261},{angle:254.054604099,originX:.99,originY:.36,deltaX:4.1208169184605,deltaY:.1373605639542,dashes:[.145602,-7.1345078892805],sourceLine:262},{angle:207.645975364,originX:.95,originY:.22,deltaX:21.4708691170287,deltaY:.0421824539631,dashes:[.237065,-23.4694741822594],sourceLine:263},{angle:175.42607874,originX:.74,originY:.11,deltaX:13.0383438432524,deltaY:.039872611164,dashes:[.250799,-24.8290734079689],sourceLine:264}]},{name:"HEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:266},{angle:120,originX:0,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:267},{angle:60,originX:.125,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:268}]},{name:"HONEY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[.125,-.25],sourceLine:270},{angle:120,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[.125,-.25],sourceLine:271},{angle:60,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[-.25,.125],sourceLine:272}]},{name:"HOUND",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.0625,dashes:[1,-.5],sourceLine:274},{angle:90,originX:0,originY:0,deltaX:-.25,deltaY:.0625,dashes:[1,-.5],sourceLine:275}]},{name:"INSUL",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:277},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.375,dashes:[.125,-.125],sourceLine:278},{angle:0,originX:0,originY:.25,deltaX:0,deltaY:.375,dashes:[.125,-.125],sourceLine:279}]},{name:"ACAD_ISO02W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3],sourceLine:292}]},{name:"ACAD_ISO03W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-18],sourceLine:294}]},{name:"ACAD_ISO04W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3],sourceLine:296}]},{name:"ACAD_ISO05W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-3],sourceLine:298}]},{name:"ACAD_ISO06W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-6.5],sourceLine:300},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-34,.5,-3],sourceLine:301}]},{name:"ACAD_ISO07W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[.5,-3],sourceLine:303}]},{name:"ACAD_ISO08W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3],sourceLine:305}]},{name:"ACAD_ISO09W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3,6,-3],sourceLine:307}]},{name:"ACAD_ISO10W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3],sourceLine:309}]},{name:"ACAD_ISO11W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-3],sourceLine:311}]},{name:"ACAD_ISO12W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-3],sourceLine:313}]},{name:"ACAD_ISO13W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-6.5],sourceLine:315},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3],sourceLine:316}]},{name:"ACAD_ISO14W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-6.5],sourceLine:318},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-22,.5,-3],sourceLine:319}]},{name:"ACAD_ISO15W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-10],sourceLine:321},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3,.5,-3],sourceLine:322}]},{name:"LINE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:327}]},{name:"MUDST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.5,deltaY:.25,dashes:[.25,-.25,0,-.25,0,-.25],sourceLine:329}]},{name:"NET",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:331},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:332}]},{name:"NET3",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:334},{angle:60,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:335},{angle:120,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:336}]},{name:"PLAST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:338},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.25,dashes:[],sourceLine:339},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.25,dashes:[],sourceLine:340}]},{name:"PLASTI",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:342},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.25,dashes:[],sourceLine:343},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.25,dashes:[],sourceLine:344},{angle:0,originX:0,originY:.15625,deltaX:0,deltaY:.25,dashes:[],sourceLine:345}]},{name:"SACNCR",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.09375,dashes:[],sourceLine:347},{angle:45,originX:.066291261,originY:0,deltaX:0,deltaY:.09375,dashes:[0,-.09375],sourceLine:348}]},{name:"SQUARE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[.125,-.125],sourceLine:350},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[.125,-.125],sourceLine:351}]},{name:"STARS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:353},{angle:60,originX:0,originY:0,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:354},{angle:120,originX:.0625,originY:.108253176,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:355}]},{name:"STEEL",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:357},{angle:45,originX:0,originY:.0625,deltaX:0,deltaY:.125,dashes:[],sourceLine:358}]},{name:"SWAMP",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.125,-.875],sourceLine:360},{angle:90,originX:.0625,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.0625,-1.669550806],sourceLine:361},{angle:90,originX:.078125,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.05,-1.682050806],sourceLine:362},{angle:90,originX:.046875,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.05,-1.682050806],sourceLine:363},{angle:60,originX:.09375,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.04,-.96],sourceLine:364},{angle:120,originX:.03125,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.04,-.96],sourceLine:365}]},{name:"TRANS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:367},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.25,dashes:[.125,-.125],sourceLine:368}]},{name:"TRIANG",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:370},{angle:120,originX:0,originY:0,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:371},{angle:0,originX:-.09375,originY:.162379763,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:372}]},{name:"ZIGZAG",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:374},{angle:90,originX:.125,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:375}]}],issues:[]},_f={patterns:[{name:"SOLID",description:"",lines:[]},{name:"ANGLE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.985,dashes:[5.08,-1.905],sourceLine:20},{angle:90,originX:0,originY:0,deltaX:0,deltaY:6.985,dashes:[5.08,-1.905],sourceLine:21}]},{name:"ANSI31",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:23}]},{name:"ANSI32",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:25},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:26}]},{name:"ANSI33",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:28},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:6.35,dashes:[3.175,-1.5875],sourceLine:29}]},{name:"ANSI34",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:31},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:32},{angle:45,originX:8.98026,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:33},{angle:45,originX:13.4704,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:34}]},{name:"ANSI35",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:36},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:6.35,dashes:[7.9375,-1.5875,0,-1.5875],sourceLine:37}]},{name:"ANSI36",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:5.55625,deltaY:3.175,dashes:[7.9375,-1.5875,0,-1.5875],sourceLine:39}]},{name:"ANSI37",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:41},{angle:135,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:42}]},{name:"ANSI38",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:44},{angle:135,originX:0,originY:0,deltaX:6.35,deltaY:3.175,dashes:[7.9375,-4.7625],sourceLine:45}]},{name:"AR-B816",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[],sourceLine:47},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[203.2,-203.2],sourceLine:48}]},{name:"AR-B816C",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[396.875,-9.525],sourceLine:50},{angle:0,originX:-203.2,originY:9.525,deltaX:203.2,deltaY:203.2,dashes:[396.875,-9.525],sourceLine:51},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[-212.725,193.675],sourceLine:52},{angle:90,originX:-9.525,originY:0,deltaX:203.2,deltaY:203.2,dashes:[-212.725,193.675],sourceLine:53}]},{name:"AR-B88",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[],sourceLine:55},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:101.6,dashes:[203.2,-203.2],sourceLine:56}]},{name:"AR-BRELM",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:135.484,dashes:[193.675,-9.525],sourceLine:58},{angle:0,originX:0,originY:57.15,deltaX:0,deltaY:135.484,dashes:[193.675,-9.525],sourceLine:59},{angle:0,originX:50.8,originY:67.7418,deltaX:0,deltaY:135.484,dashes:[92.075,-9.525],sourceLine:60},{angle:0,originX:50.8,originY:124.892,deltaX:0,deltaY:135.484,dashes:[92.075,-9.525],sourceLine:61},{angle:90,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[57.15,-78.334],sourceLine:62},{angle:90,originX:-9.525,originY:0,deltaX:0,deltaY:203.2,dashes:[57.15,-78.334],sourceLine:63},{angle:90,originX:50.8,originY:67.7418,deltaX:0,deltaY:101.6,dashes:[57.15,-78.334],sourceLine:64},{angle:90,originX:41.275,originY:67.7418,deltaX:0,deltaY:101.6,dashes:[57.15,-78.334],sourceLine:65}]},{name:"AR-BRSTD",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:67.7418,dashes:[],sourceLine:67},{angle:90,originX:0,originY:0,deltaX:67.7418,deltaY:101.6,dashes:[67.7418,-67.7418],sourceLine:68}]},{name:"AR-CONC",description:"",lines:[{angle:50,originX:0,originY:0,deltaX:104.896,deltaY:-149.807,dashes:[19.05,-209.55],sourceLine:70},{angle:355,originX:0,originY:0,deltaX:-51.76101082,deltaY:187.25814969,dashes:[15.24,-167.64058417],sourceLine:71},{angle:100.4514447,originX:15.182007,originY:-1.3282535,deltaX:145.5569059,deltaY:-176.270089,dashes:[16.1900088,-178.0902446],sourceLine:72},{angle:46.1842,originX:0,originY:50.8,deltaX:157.343,deltaY:-224.71,dashes:[28.575,-314.325],sourceLine:73},{angle:96.63555761,originX:22.5899,originY:47.2965,deltaX:218.33577212,deltaY:-264.40480444,dashes:[24.28502314,-267.13560816],sourceLine:74},{angle:351.18415117,originX:0,originY:50.8,deltaX:196.67912063,deltaY:280.88740361,dashes:[22.85996707,-251.45973192],sourceLine:75},{angle:21,originX:25.4,originY:38.1,deltaX:104.89565868,deltaY:-149.80652586,dashes:[19.05,-209.55],sourceLine:76},{angle:326,originX:25.4,originY:38.1,deltaX:-51.7604,deltaY:187.258,dashes:[15.24,-167.64],sourceLine:77},{angle:71.451445,originX:38.0345326,originY:29.5779001,deltaX:145.5567546,deltaY:-176.2700748,dashes:[16.1900088,-178.0899376],sourceLine:78},{angle:37.5,originX:0,originY:0,deltaX:53.9242,deltaY:65.2018,dashes:[0,-165.608,0,-170.18,0,-168.275],sourceLine:79},{angle:7.5,originX:0,originY:0,deltaX:79.3242,deltaY:90.6018,dashes:[0,-97.028,0,-161.798,0,-64.135],sourceLine:80},{angle:-32.5,originX:-56.642,originY:0,deltaX:117.434,deltaY:68.0212,dashes:[0,-63.5,0,-198.12,0,-262.89],sourceLine:81},{angle:-42.5,originX:-82.042,originY:0,deltaX:92.0344,deltaY:118.821,dashes:[0,-82.55,0,-131.572,0,-186.69],sourceLine:82}]},{name:"AR-HBONE",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:101.6,deltaY:101.6,dashes:[304.8,-101.6],sourceLine:84},{angle:135,originX:71.842,originY:71.842,deltaX:101.6,deltaY:-101.6,dashes:[304.8,-101.6],sourceLine:85}]},{name:"AR-PARQ1",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:87},{angle:90,originX:50.8,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:88},{angle:90,originX:101.6,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:89},{angle:90,originX:152.4,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:90},{angle:90,originX:203.2,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:91},{angle:90,originX:254,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:92},{angle:90,originX:304.8,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:93},{angle:0,originX:0,originY:304.8,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:94},{angle:0,originX:0,originY:355.6,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:95},{angle:0,originX:0,originY:406.4,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:96},{angle:0,originX:0,originY:457.2,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:97},{angle:0,originX:0,originY:508,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:98},{angle:0,originX:0,originY:558.8,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:99},{angle:0,originX:0,originY:609.6,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:100}]},{name:"AR-RROOF",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:55.88,deltaY:25.4,dashes:[381,-50.8,127,-25.4],sourceLine:102},{angle:0,originX:33.782,originY:12.7,deltaX:-25.4,deltaY:33.782,dashes:[76.2,-8.382,152.4,-19.05],sourceLine:103},{angle:0,originX:12.7,originY:21.59,deltaX:132.08,deltaY:17.018,dashes:[203.2,-35.56,101.6,-25.4],sourceLine:104}]},{name:"AR-RSHKE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:647.7,deltaY:304.8,dashes:[152.4,-127,177.8,-76.2,228.6,-101.6],sourceLine:106},{angle:0,originX:152.4,originY:12.7,deltaX:647.7,deltaY:304.8,dashes:[127,-482.6,101.6,-152.4],sourceLine:107},{angle:0,originX:457.2,originY:-19.05,deltaX:647.7,deltaY:304.8,dashes:[76.2,-787.4],sourceLine:108},{angle:90,originX:0,originY:0,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:109},{angle:90,originX:152.4,originY:0,deltaX:304.8,deltaY:215.9,dashes:[285.75,-933.45],sourceLine:110},{angle:90,originX:279.4,originY:0,deltaX:304.8,deltaY:215.9,dashes:[266.7,-952.5],sourceLine:111},{angle:90,originX:457.2,originY:-19.05,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:112},{angle:90,originX:533.4,originY:-19.05,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:113},{angle:90,originX:762,originY:0,deltaX:304.8,deltaY:215.9,dashes:[279.4,-939.8],sourceLine:114}]},{name:"AR-SAND",description:"",lines:[{angle:37.5,originX:0,originY:0,deltaX:28.5242,deltaY:39.8018,dashes:[0,-38.608,0,-43.18,0,-41.275],sourceLine:116},{angle:7.5,originX:0,originY:0,deltaX:53.9242,deltaY:65.2018,dashes:[0,-20.828,0,-34.798,0,-13.335],sourceLine:117},{angle:-32.5,originX:-31.242,originY:0,deltaX:66.6344,deltaY:42.6212,dashes:[0,-12.7,0,-45.72,0,-59.69],sourceLine:118},{angle:-42.5,originX:-31.242,originY:0,deltaX:41.2344,deltaY:68.0212,dashes:[0,-6.35,0,-29.972,0,-34.29],sourceLine:119}]},{name:"BOX",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[],sourceLine:121},{angle:90,originX:6.35,originY:0,deltaX:0,deltaY:25.4,dashes:[],sourceLine:122},{angle:0,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[-6.35,6.35],sourceLine:123},{angle:0,originX:0,originY:6.35,deltaX:0,deltaY:25.4,dashes:[-6.35,6.35],sourceLine:124},{angle:0,originX:0,originY:12.7,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:125},{angle:0,originX:0,originY:19.05,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:126},{angle:90,originX:12.7,originY:0,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:127},{angle:90,originX:19.05,originY:0,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:128}]},{name:"BRASS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:130},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:6.35,dashes:[3.175,-1.5875],sourceLine:131}]},{name:"BRICK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:133},{angle:90,originX:0,originY:0,deltaX:0,deltaY:12.7,dashes:[6.35,-6.35],sourceLine:134},{angle:90,originX:6.35,originY:0,deltaX:0,deltaY:12.7,dashes:[-6.35,6.35],sourceLine:135}]},{name:"BRSTONE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8.382,dashes:[],sourceLine:137},{angle:90,originX:22.86,originY:0,deltaX:8.382,deltaY:12.7,dashes:[8.382,-8.382],sourceLine:138},{angle:90,originX:20.32,originY:0,deltaX:8.382,deltaY:12.7,dashes:[8.382,-8.382],sourceLine:139},{angle:0,originX:22.86,originY:1.397,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:140},{angle:0,originX:22.86,originY:2.794,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:141},{angle:0,originX:22.86,originY:4.191,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:142},{angle:0,originX:22.86,originY:5.588,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:143},{angle:0,originX:22.86,originY:6.985,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:144}]},{name:"CLAY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:146},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:147},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:148},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:4.7625,dashes:[4.7625,-3.175],sourceLine:149}]},{name:"CORK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:151},{angle:135,originX:1.5875,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:152},{angle:135,originX:2.38125,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:153},{angle:135,originX:3.175,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:154}]},{name:"CROSS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:6.35,dashes:[3.175,-9.525],sourceLine:156},{angle:90,originX:1.5875,originY:-1.5875,deltaX:6.35,deltaY:6.35,dashes:[3.175,-9.525],sourceLine:157}]},{name:"DASH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:159}]},{name:"DOLMIT",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:161},{angle:45,originX:0,originY:0,deltaX:0,deltaY:17.9605,dashes:[8.980256121069154,-17.960512242138307],sourceLine:162}]},{name:"DOTS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.79375,deltaY:1.5875,dashes:[0,-1.5875],sourceLine:164}]},{name:"EARTH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:166},{angle:0,originX:0,originY:2.38125,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:167},{angle:0,originX:0,originY:4.7625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:168},{angle:90,originX:.79375,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:169},{angle:90,originX:3.175,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:170},{angle:90,originX:5.55625,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:171}]},{name:"ESCHER",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:173},{angle:180,originX:0,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:174},{angle:300,originX:0,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:175},{angle:60,originX:2.54,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:176},{angle:300,originX:2.54,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:177},{angle:60,originX:-1.27,originY:2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:178},{angle:180,originX:-1.27,originY:2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:179},{angle:300,originX:-1.27,originY:-2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:180},{angle:180,originX:-1.27,originY:-2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:181},{angle:60,originX:-10.16,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:182},{angle:300,originX:-10.16,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:183},{angle:60,originX:5.08,originY:-8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:184},{angle:180,originX:5.08,originY:-8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:185},{angle:300,originX:5.08,originY:8.7988180894,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:186},{angle:180,originX:5.08,originY:8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:187},{angle:0,originX:5.08,originY:4.3994090574,deltaX:-15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:188},{angle:0,originX:5.08,originY:-4.3994090574,deltaX:-15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:189},{angle:120,originX:1.27,originY:6.5991135734,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:190},{angle:120,originX:-6.35,originY:2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:191},{angle:240,originX:-6.35,originY:-2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:192},{angle:240,originX:1.27,originY:-6.5991135734,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:193}]},{name:"FLEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:195},{angle:45,originX:6.35,originY:0,deltaX:4.490128053,deltaY:4.490128053,dashes:[1.5875,-5.8052561314,1.5875,-8.9802561314],sourceLine:196}]},{name:"GOST_GLASS",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:6,deltaY:-6,dashes:[5,-7],sourceLine:198},{angle:45,originX:2.12132,originY:0,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:199},{angle:45,originX:0,originY:2.12132,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:200}]},{name:"GOST_WOOD",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:202},{angle:90,originX:2,originY:-2,deltaX:0,deltaY:-6,dashes:[6,-1.5,3,-1.5],sourceLine:203},{angle:90,originX:4,originY:-5,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:204}]},{name:"GOST_GROUND",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:206},{angle:45,originX:3,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:207},{angle:45,originX:6,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:208}]},{name:"GRASS",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:17.96051224,deltaY:17.96051224,dashes:[4.7625,-31.15852448],sourceLine:210},{angle:45,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[4.7625,-20.6375],sourceLine:211},{angle:135,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[4.7625,-20.6375],sourceLine:212}]},{name:"GRATE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.79375,dashes:[],sourceLine:214},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:215}]},{name:"GRAVEL",description:"",lines:[{angle:228.0127875,originX:18.288,originY:25.4,deltaX:305.85067529778,deltaY:1.88796713245,dashes:[3.4172144,-338.30483639565],sourceLine:217},{angle:184.969741,originX:16.002,originY:22.86,deltaX:-305.8545235377,deltaY:1.10019612724,dashes:[5.8640472,-580.54048893524],sourceLine:218},{angle:132.5104471,originX:10.16,originY:22.352,deltaX:-377.59492241548,deltaY:1.56030959675,dashes:[4.1348152,-409.347227941],sourceLine:219},{angle:267.273689,originX:.254,originY:16.002,deltaX:-508.63316875916,deltaY:1.20815479432,dashes:[5.3400452,-528.66437425738],sourceLine:220},{angle:292.83365418,originX:0,originY:10.668,deltaX:-330.19770134945,deltaY:1.23208097566,dashes:[5.236337,-518.39807745344],sourceLine:221},{angle:357.273689,originX:2.032,originY:5.842,deltaX:-508.63316875916,deltaY:1.20815479432,dashes:[5.3400452,-528.66437425738],sourceLine:222},{angle:37.69424047,originX:7.366,originY:5.588,deltaX:-416.58997273292,deltaY:.91357450169,dashes:[7.0619366,-699.13115314247],sourceLine:223},{angle:72.25532837,originX:12.954,originY:9.906,deltaX:586.40373773403,deltaY:.96766293399,dashes:[6.6671952,-660.05256601905],sourceLine:224},{angle:121.42956562,originX:14.986,originY:16.256,deltaX:387.71230339293,deltaY:1.2040754753,dashes:[5.35813,-530.45545698712],sourceLine:225},{angle:175.2363583,originX:12.192,originY:20.828,deltaX:-280.5442400419,deltaY:2.10935518695,dashes:[6.1171328,-299.7393695],sourceLine:226},{angle:222.3974378,originX:6.096,originY:21.336,deltaX:413.48123885686,deltaY:.81554484621,dashes:[7.9107792,-783.16772512177],sourceLine:227},{angle:138.81407483,originX:25.4,originY:15.748,deltaX:234.164238558,deltaY:2.38943100688,dashes:[2.7000454,-267.30565824344],sourceLine:228},{angle:171.4692344,originX:23.368,originY:17.526,deltaX:-334.082478726,deltaY:1.25594916784,dashes:[5.1368198,-508.5463899704],sourceLine:229},{angle:225,originX:18.288,originY:18.288,deltaX:17.96051224214,deltaY:17.96051224214,dashes:[3.5920934,-32.32893108428],sourceLine:230},{angle:203.19859051,originX:16.51,originY:21.336,deltaX:-136.74251918,deltaY:3.33518339548,dashes:[1.9344132,-191.50622368894],sourceLine:231},{angle:291.80140949,originX:14.732,originY:20.574,deltaX:-80.18324702488,deltaY:4.71666158921,dashes:[2.7356562,-134.0475299],sourceLine:232},{angle:30.96375653,originX:15.748,originY:18.034,deltaX:91.47734531502,deltaY:4.35606406258,dashes:[4.4431966,-143.6629815291],sourceLine:233},{angle:161.56505118,originX:19.558,originY:20.32,deltaX:-56.2252967978,deltaY:8.03218525675,dashes:[3.2128714,-77.10898116828],sourceLine:234},{angle:16.389540334,originX:0,originY:20.574,deltaX:265.17991128726,deltaY:1.43340492604,dashes:[4.50088,-445.58826672539],sourceLine:235},{angle:70.34617594,originX:4.318,originY:21.844,deltaX:-297.29446803469,deltaY:1.70858889651,dashes:[3.7759894,-373.822156782],sourceLine:236},{angle:293.19859051,originX:19.558,originY:25.4,deltaX:-136.7425191801,deltaY:3.33518339548,dashes:[3.868801,-189.57183588894],sourceLine:237},{angle:343.61045967,originX:21.082,originY:21.844,deltaX:-265.17991128725,deltaY:1.433404926,dashes:[4.50088,-445.5882667254],sourceLine:238},{angle:339.44395478,originX:0,originY:4.826,deltaX:-136.75087638398,deltaY:2.97284513779,dashes:[4.340352,-212.67734313106],sourceLine:239},{angle:294.7751406,originX:4.064,originY:3.302,deltaX:-306.90424056705,deltaY:1.77401295215,dashes:[3.6367212,-360.0359338072],sourceLine:240},{angle:66.80140949,originX:19.812,originY:0,deltaX:136.74251918012,deltaY:3.33518339452,dashes:[3.868801,-189.57183588894],sourceLine:241},{angle:17.35402464,originX:21.336,originY:3.556,deltaX:-345.47402804977,deltaY:1.51523696536,dashes:[4.2578274,-421.523759802],sourceLine:242},{angle:69.44395478,originX:7.366,originY:0,deltaX:-136.75087638396,deltaY:2.97284513874,dashes:[2.170176,-214.84751913106],sourceLine:243},{angle:101.309932474,originX:18.288,originY:0,deltaX:104.60834648271,deltaY:4.98134983255,dashes:[1.295146,-128.21994964526],sourceLine:244},{angle:165.963756532,originX:18.034,originY:1.27,deltaX:-80.085263387,deltaY:6.16040487582,dashes:[5.236337,-99.49054589069],sourceLine:245},{angle:186.00900596,originX:12.954,originY:2.54,deltaX:-255.26337856879,deltaY:1.32949676118,dashes:[4.85267,-480.41364863337],sourceLine:246},{angle:303.69006753,originX:15.748,originY:15.748,deltaX:-56.35753993648,deltaY:7.0446924921,dashes:[3.6632388,-87.9177635968],sourceLine:247},{angle:353.15722659,originX:17.78,originY:12.7,deltaX:434.77679606606,deltaY:1.0087628707,dashes:[6.3955676,-633.16009065031],sourceLine:248},{angle:60.9453959,originX:24.13,originY:11.938,deltaX:-204.76648550216,deltaY:2.46706609031,dashes:[2.6150824,-258.8939231811],sourceLine:249},{angle:90,originX:25.4,originY:14.224,deltaX:25.4,deltaY:25.4,dashes:[1.524,-23.876],sourceLine:250},{angle:120.25643716,originX:12.446,originY:3.302,deltaX:-204.77318477297,deltaY:1.8283320086,dashes:[3.5286696,-349.339407732],sourceLine:251},{angle:48.0127875,originX:10.668,originY:6.35,deltaX:305.85067529778,deltaY:1.88796713138,dashes:[6.8344288,-334.88762199565],sourceLine:252},{angle:0,originX:15.24,originY:11.43,deltaX:25.4,deltaY:25.4,dashes:[6.604,-18.796],sourceLine:253},{angle:325.3048465,originX:21.844,originY:11.43,deltaX:310.04235091354,deltaY:-1.6064370526,dashes:[4.0160956,-397.5931672414],sourceLine:254},{angle:254.0546041,originX:25.146,originY:9.144,deltaX:104.6687497289,deltaY:3.48895832444,dashes:[3.6982908,-181.21650038772],sourceLine:255},{angle:207.64597536,originX:24.13,originY:5.588,deltaX:545.36007557253,deltaY:1.07143433066,dashes:[6.021451,-596.12464422938],sourceLine:256},{angle:175.42607874,originX:18.796,originY:2.794,deltaX:331.1739336186,deltaY:1.01276432357,dashes:[6.3702946,-630.6584645624],sourceLine:257}]},{name:"HEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:259},{angle:120,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:260},{angle:60,originX:3.175,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:261}]},{name:"HONEY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[3.175,-6.35],sourceLine:263},{angle:120,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[3.175,-6.35],sourceLine:264},{angle:60,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[-6.35,3.175],sourceLine:265}]},{name:"HOUND",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:1.5875,dashes:[25.4,-12.7],sourceLine:267},{angle:90,originX:0,originY:0,deltaX:-6.35,deltaY:1.5875,dashes:[25.4,-12.7],sourceLine:268}]},{name:"INSUL",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:270},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:9.525,dashes:[3.175,-3.175],sourceLine:271},{angle:0,originX:0,originY:6.35,deltaX:0,deltaY:9.525,dashes:[3.175,-3.175],sourceLine:272}]},{name:"ACAD_ISO02W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3],sourceLine:285}]},{name:"ACAD_ISO03W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-18],sourceLine:287}]},{name:"ACAD_ISO04W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3],sourceLine:289}]},{name:"ACAD_ISO05W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-3],sourceLine:291}]},{name:"ACAD_ISO06W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-6.5],sourceLine:293},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-34,.5,-3],sourceLine:294}]},{name:"ACAD_ISO07W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[.5,-3],sourceLine:296}]},{name:"ACAD_ISO08W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3],sourceLine:298}]},{name:"ACAD_ISO09W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3,6,-3],sourceLine:300}]},{name:"ACAD_ISO10W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3],sourceLine:302}]},{name:"ACAD_ISO11W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-3],sourceLine:304}]},{name:"ACAD_ISO12W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-3],sourceLine:306}]},{name:"ACAD_ISO13W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-6.5],sourceLine:308},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3],sourceLine:309}]},{name:"ACAD_ISO14W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-6.5],sourceLine:311},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-22,.5,-3],sourceLine:312}]},{name:"ACAD_ISO15W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-10],sourceLine:314},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3,.5,-3],sourceLine:315}]},{name:"JIS_LC_20",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:322},{angle:45,originX:.4,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:323}]},{name:"JIS_LC_20A",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:325},{angle:45,originX:1,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:326}]},{name:"JIS_LC_8",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:328},{angle:45,originX:.4,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:329}]},{name:"JIS_LC_8A",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:331},{angle:45,originX:1,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:332}]},{name:"JIS_RC_10",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:334},{angle:45,originX:.725,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:335},{angle:45,originX:1.45,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:336}]},{name:"JIS_RC_15",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:338},{angle:45,originX:.725,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:339},{angle:45,originX:1.45,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:340}]},{name:"JIS_RC_18",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:342},{angle:45,originX:1,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:343},{angle:45,originX:2,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:344}]},{name:"JIS_RC_30",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:346},{angle:45,originX:1,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:347},{angle:45,originX:2,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:348}]},{name:"JIS_STN_1E",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:350},{angle:45,originX:.705,originY:0,deltaX:0,deltaY:1,dashes:[1,-.5],sourceLine:351}]},{name:"JIS_STN_2.5",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:2.5,dashes:[],sourceLine:353},{angle:45,originX:1.765,originY:0,deltaX:0,deltaY:2.5,dashes:[1.2,-.5],sourceLine:354}]},{name:"JIS_WOOD",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.70710678,dashes:[],sourceLine:356}]},{name:"LINE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:359}]},{name:"MUDST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:12.7,deltaY:6.35,dashes:[6.35,-6.35,0,-6.35,0,-6.35],sourceLine:361}]},{name:"NET",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:363},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:364}]},{name:"NET3",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:366},{angle:60,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:367},{angle:120,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:368}]},{name:"PLAST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:370},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:6.35,dashes:[],sourceLine:371},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:372}]},{name:"PLASTI",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:374},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:6.35,dashes:[],sourceLine:375},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:376},{angle:0,originX:0,originY:3.96875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:377}]},{name:"SACNCR",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:2.38125,dashes:[],sourceLine:379},{angle:45,originX:1.6838,originY:0,deltaX:0,deltaY:2.38125,dashes:[0,-2.38125],sourceLine:380}]},{name:"SQUARE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:382},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:383}]},{name:"STARS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:385},{angle:60,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:386},{angle:120,originX:1.5875,originY:2.7496306704,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:387}]},{name:"STEEL",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:389},{angle:45,originX:0,originY:1.5875,deltaX:0,deltaY:3.175,dashes:[],sourceLine:390}]},{name:"SWAMP",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[3.175,-22.225],sourceLine:392},{angle:90,originX:1.5875,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.5875,-42.4065904724],sourceLine:393},{angle:90,originX:1.984375,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.27,-42.7240904724],sourceLine:394},{angle:90,originX:1.190625,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.27,-42.7240904724],sourceLine:395},{angle:60,originX:2.38125,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[1.016,-24.384],sourceLine:396},{angle:120,originX:.79375,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[1.016,-24.384],sourceLine:397}]},{name:"TRANS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:399},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:6.35,dashes:[3.175,-3.175],sourceLine:400}]},{name:"TRIANG",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:402},{angle:120,originX:0,originY:0,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:403},{angle:0,originX:-2.38125,originY:4.1244459802,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:404}]},{name:"ZIGZAG",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:406},{angle:90,originX:3.175,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:407}]}],issues:[]};var Ci=(n=>(n[n.UserDefined=0]="UserDefined",n[n.Predefined=1]="Predefined",n[n.Custom=2]="Custom",n))(Ci||{}),xf=(n=>(n[n.Normal=0]="Normal",n[n.Outer=1]="Outer",n[n.Ignore=2]="Ignore",n))(xf||{}),wf=(n=>(n[n.HatchObject=0]="HatchObject",n[n.GradientObject=1]="GradientObject",n))(wf||{}),vf=(n=>(n[n.PreDefinedGradient=0]="PreDefinedGradient",n[n.UserDefinedGradient=1]="UserDefinedGradient",n))(vf||{});const dl=class dl extends nt{constructor(){super(),this._areasFromLoopsCache=null,this._normal=new A(0,0,1),this._gradientAngle=0,this._elevation=0,this._geo=new he,this._isSolidFill=!1,this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1,this._patternName="",this._patternNameSet=!1,this._patternType=1,this._patternAngle=0,this._patternAngleSet=!1,this._patternScale=1,this._patternScaleSet=!1,this._associative=!1,this._associativeSet=!1,this._backgroundColor=void 0,this._backgroundColorSet=!1,this._patternDouble=!1,this._patternDoubleSet=!1,this._hatchStyle=0,this._hatchStyleSet=!1,this._hatchObjectType=0,this._gradientAngle=0,this._gradientShift=0,this._shadeTintValue=0,this._gradientStartColor=void 0,this._gradientEndColor=void 0,this._pixelSize=void 0,this._gradientType=0,this._gradientName="",this._gradientOneColorMode=!1}get dxfTypeName(){return"HATCH"}get isGradient(){return this._hatchObjectType===1}get isHatch(){return this._hatchObjectType===0}get isSolidFill(){return this._isSolidFill||ki(this.getEffectivePatternName())}set isSolidFill(t){this._isSolidFill=t}get color(){if(this.hasExplicitColor())return this.getEntityColor();const t=this.database,e=yt.instance().getVar(T.HPCOLOR,t);return e instanceof G&&e.colorMethod!==exports.AcCmColorMethod.None?e.clone():t.cecolor.clone()}set color(t){this.setEntityColor(t)}get definitionLines(){return this._definitionLines}get patternName(){return this._patternName}set patternName(t){this._patternName=t??"",this._isSolidFill=ki(this._patternName),this._patternNameSet=!0,this.updatePredefinedPatternDefinitionLines()}get patternType(){return this._patternType}set patternType(t){this._patternType=t,t!==1&&this._definitionLinesAutoGenerated&&(this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1),this.updatePredefinedPatternDefinitionLines()}get patternAngle(){return this._patternAngle}set patternAngle(t){this._patternAngle=t,this._patternAngleSet=!0}get patternScale(){return this._patternScale}set patternScale(t){this._patternScale=t,this._patternScaleSet=!0,this.updatePredefinedPatternDefinitionLines()}get associative(){return this._associative}set associative(t){this._associative=!!t,this._associativeSet=!0}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){this._backgroundColor=t==null?void 0:t.clone(),this._backgroundColorSet=!0}get patternDouble(){return this._patternDouble}set patternDouble(t){this._patternDouble=!!t,this._patternDoubleSet=!0}get hatchStyle(){return this._hatchStyle}set hatchStyle(t){this._hatchStyle=t,this._hatchStyleSet=!0}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t),this._normal.lengthSq()>0&&this._normal.normalize()}get hatchObjectType(){return this._hatchObjectType}set hatchObjectType(t){this._hatchObjectType=t}get gradientAngle(){return this._gradientAngle}set gradientAngle(t){this._gradientAngle=t}get gradientShift(){return this._gradientShift}set gradientShift(t){this._gradientShift=t}get gradientType(){return this._gradientType}set gradientType(t){this._gradientType=t}get gradientName(){return this.isGradient&&this._gradientName.trim()===""?Gd:this._gradientName}set gradientName(t){this._gradientName=t??""}get gradientOneColorMode(){return this._gradientOneColorMode}set gradientOneColorMode(t){this._gradientOneColorMode=t}get shadeTintValue(){return this._shadeTintValue}set shadeTintValue(t){this._shadeTintValue=t}get gradientStartColor(){return this._gradientStartColor}set gradientStartColor(t){this._gradientStartColor=t==null||!Number.isFinite(t)?void 0:t&16777215}get gradientEndColor(){return this._gradientEndColor}set gradientEndColor(t){this._gradientEndColor=t==null||!Number.isFinite(t)?void 0:t&16777215}get pixelSize(){return this._pixelSize}set pixelSize(t){this._pixelSize=t}applyPatternDefaultsFromSysVars(t){const e=yt.instance();if(!this.hasExplicitLayer()){const i=e.getVar(T.HPLAYER,t);this.shouldUseSysVarOverride(i)&&(this.layer=i)}if(!this.hasExplicitTransparency()){const i=this.parseHpTransparency(e.getVar(T.HPTRANSPARENCY,t));i&&(this.transparency=i)}if(this._backgroundColorSet||(this._backgroundColor=this.parseHpBackgroundColor(e.getVar(T.HPBACKGROUNDCOLOR,t)),this._backgroundColorSet=!0),!this._patternNameSet){const i=e.getVar(T.HPNAME,t);this._patternName=typeof i=="string"?i:"",this._patternNameSet=!0}if(!this._patternAngleSet){const i=e.getVar(T.HPANG,t);this._patternAngle=typeof i=="number"&&Number.isFinite(i)?i:0,this._patternAngleSet=!0}if(this._patternScaleSet||(this._patternScale=this.normalizePatternScale(e.getVar(T.HPSCALE,t)),this._patternScaleSet=!0),!this._associativeSet){const i=e.getVar(T.HPASSOC,t);this._associative=typeof i=="number"?i!==0:!1,this._associativeSet=!0}if(this._hatchStyleSet||(this._hatchStyle=this.normalizeHatchStyle(e.getVar(T.HPISLANDDETECTION,t)),this._hatchStyleSet=!0),!this._patternDoubleSet){const i=e.getVar(T.HPDOUBLE,t);this._patternDouble=typeof i=="number"?i!==0:!1,this._patternDoubleSet=!0}this.updatePredefinedPatternDefinitionLines()}getEffectivePatternName(){if(this._patternNameSet)return this._patternName;const t=this.database,e=yt.instance().getVar(T.HPNAME,t);return typeof e=="string"?e:this._patternName}shouldResolveColorFromCecolor(){return!1}getEffectivePatternAngle(){if(this._patternAngleSet)return this._patternAngle;const t=this.database,e=yt.instance().getVar(T.HPANG,t);return typeof e=="number"&&Number.isFinite(e)?e:this._patternAngle}getRenderablePatternAngle(){return!this._definitionLinesAutoGenerated&&this._definitionLines.length>0?0:this.getEffectivePatternAngle()}getEffectivePatternScale(){if(this._patternScaleSet)return this._patternScale;const t=this.database;return this.normalizePatternScale(yt.instance().getVar(T.HPSCALE,t))}getEffectiveAssociative(){if(this._associativeSet)return this._associative;const t=this.database,e=yt.instance().getVar(T.HPASSOC,t);return typeof e=="number"?e!==0:this._associative}normalizePatternScale(t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:1}normalizeHatchStyle(t){return typeof t!="number"||!Number.isFinite(t)?1:t===0?0:t===2?2:1}shouldUseSysVarOverride(t){if(typeof t!="string")return!1;const e=t.trim().toLowerCase();return e!==""&&e!=="."&&e!=="use current"}parseHpBackgroundColor(t){if(t instanceof G)return t.colorMethod===exports.AcCmColorMethod.None?void 0:t.clone();if(typeof t!="string")return;const e=t.trim().toLowerCase();if(!(!e||e==="."||e==="none"))return G.fromString(t)}parseHpTransparency(t){if(t instanceof xt)return t.clone();if(!this.shouldUseSysVarOverride(t))return;const e=t.trim();if(/^bylayer$/i.test(e)||/^byblock$/i.test(e))return xt.fromString(e);const i=Number(e);if(Number.isInteger(i)&&i>=0&&i<=90){const r=new xt;return r.percentage=i,r}}updatePredefinedPatternDefinitionLines(t=this.getEffectivePatternName(),e=this.getEffectivePatternScale()){if(this.patternType!==1||!(this._definitionLinesAutoGenerated||this._definitionLines.length===0))return;const r=t.trim().toUpperCase();if(!r||ki(r)){this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1;return}const s=this.normalizePatternScale(e);if(this._definitionLinesAutoGenerated&&this._definitionLinesPatternName===r&&this._definitionLinesPatternScale===s)return;const o=_f.patterns.find(a=>a.name.trim().toUpperCase()===r);if(!o){this._definitionLinesAutoGenerated&&(this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1);return}this._definitionLines=o.lines.map(a=>({angle:a.angle*Math.PI/180,base:{x:a.originX*s,y:a.originY*s},offset:{x:a.deltaX*s,y:a.deltaY*s},dashLengths:a.dashes.map(c=>c*s)})),this._definitionLinesAutoGenerated=!0,this._definitionLinesPatternName=r,this._definitionLinesPatternScale=s}add(t){this._geo.add(t),this.invalidateAreasFromLoopsCache()}invalidateAreasFromLoopsCache(){this._areasFromLoopsCache=null}buildAreasFromLoops(){if(this._areasFromLoopsCache!=null)return this._areasFromLoopsCache;const t=this._geo.loops;if(t.length===0)return this._areasFromLoopsCache=[],this._areasFromLoopsCache;if(t.length===1)return this._areasFromLoopsCache=[this._geo],this._areasFromLoopsCache;const e=this._geo.buildHierarchy(),i=[],r=(s,o)=>{if(s.index>=0&&o%2===0){const a=new he;a.add(t[s.index]),s.children.forEach(c=>{c.index>=0&&a.add(t[c.index])}),i.push(a)}s.children.forEach(a=>r(a,o+1))};return e.children.forEach(s=>r(s,0)),this._areasFromLoopsCache=i.length>0?i:[this._geo],this._areasFromLoopsCache}getCalculatedAreaValue(){const t=this.buildAreasFromLoops();return t.length===0?0:t.reduce((e,i)=>e+i.area,0)}get area(){return this.getCalculatedAreaValue()}get geometricExtents(){const t=this.buildAreasFromLoops();if(t.length===0)return new j;const e=new j;return t.forEach(i=>{const r=i.box;e.union(new j().setFromPoints([te({x:r.min.x,y:r.min.y,z:this._elevation},this._normal),te({x:r.max.x,y:r.min.y,z:this._elevation},this._normal),te({x:r.max.x,y:r.max.y,z:this._elevation},this._normal),te({x:r.min.x,y:r.max.y,z:this._elevation},this._normal)]))}),e}subGetIntersectCurves(){return a_(this._geo.loops,this._elevation,this._normal)}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"pattern",properties:[{name:"patternType",type:"enum",editable:!0,options:[{label:Ci[0],value:0},{label:Ci[1],value:1},{label:Ci[2],value:2}],accessor:{get:()=>this.patternType,set:t=>{this.patternType=t}}},{name:"patternName",type:"string",editable:!0,accessor:{get:()=>this.patternName,set:t=>{this.patternName=t}}},{name:"patternAngle",type:"float",editable:!0,accessor:{get:()=>this.patternAngle,set:t=>{this.patternAngle=t}}},{name:"patternScale",type:"float",editable:!0,accessor:{get:()=>this.patternScale,set:t=>{this.patternScale=t}}},{name:"associative",type:"boolean",editable:!0,accessor:{get:()=>this.associative,set:t=>{this.associative=t}}},{name:"backgroundColor",type:"color",editable:!0,accessor:{get:()=>this.backgroundColor,set:t=>{this.backgroundColor=t}}},{name:"patternDouble",type:"boolean",editable:!0,accessor:{get:()=>this.patternDouble,set:t=>{this.patternDouble=t}}}]},{groupName:"geometry",properties:[{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}subGetGripPoints(){return this.associative?[]:this.collectBoundaryGripPoints()}subMoveGripPointsAt(t,e){return this.associative?this:(Pt(t,i=>{this.moveBoundaryGripPointAt(i,e)}),this.invalidateAreasFromLoopsCache(),this)}collectBoundaryGripPoints(){const t=new Array,e=this._elevation,i=new Set,r=s=>{const o=`${s.x},${s.y},${s.z??0}`;i.has(o)||(i.add(o),t.push(new x(s.x,s.y,s.z??e)))};return this._geo.loops.forEach(s=>{if(s instanceof rt){const o=s.numberOfVertices;for(let a=0;a<o;a++){const c=s.getPointAt(a);r({x:c.x,y:c.y,z:e})}return}s.curves.forEach(o=>{if(o instanceof Vt)r({x:o.startPoint.x,y:o.startPoint.y,z:e}),r({x:o.endPoint.x,y:o.endPoint.y,z:e});else if(o instanceof Z)r({x:o.startPoint.x,y:o.startPoint.y,z:e}),r({x:o.endPoint.x,y:o.endPoint.y,z:e}),r({x:o.midPoint.x,y:o.midPoint.y,z:e});else if(o instanceof Ce){r({x:o.startPoint.x,y:o.startPoint.y,z:e}),r({x:o.endPoint.x,y:o.endPoint.y,z:e});const a=o.getPoint(.5);r({x:a.x,y:a.y,z:e})}})}),t}moveBoundaryGripPointAt(t,e){let i=0;const r=this._elevation,s=new Set,o=(a,c)=>{const l=`${a.x},${a.y},${a.z??0}`;s.has(l)||(s.add(l),i===t&&c(),i++)};this._geo.loops.forEach(a=>{if(a instanceof rt){const c=a.numberOfVertices;for(let l=0;l<c;l++){const h=a.vertices[l];h&&o({x:h.x,y:h.y,z:r},()=>{Ti(a.vertices,l,e)})}return}a.curves.forEach(c=>{if(c instanceof Vt)o({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>{c.startPoint.x+=e.x,c.startPoint.y+=e.y}),o({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>{c.endPoint.x+=e.x,c.endPoint.y+=e.y});else if(c instanceof Z)o({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"start",e)),o({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"end",e)),o({x:c.midPoint.x,y:c.midPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"mid",e));else if(c instanceof Ce){o({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"start",e)),o({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"end",e));const l=c.getPoint(.5);o({x:l.x,y:l.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"mid",e))}})})}moveCircArc2dGripPoint(t,e,i){const r=t.center;switch(e){case"start":{const s=t.startPoint;t.startAngle=Math.atan2(s.y+i.y-r.y,s.x+i.x-r.x);break}case"end":{const s=t.endPoint;t.endAngle=Math.atan2(s.y+i.y-r.y,s.x+i.x-r.x);break}case"mid":{const s=t.midPoint,o=new Z(t.startPoint,{x:s.x+i.x,y:s.y+i.y},t.endPoint);t.center=o.center,t.radius=o.radius,t.startAngle=o.startAngle,t.endAngle=o.endAngle,t.clockwise=o.clockwise;break}}}moveEllipseArc2dGripPoint(t,e,i){const r=t.center;switch(e){case"start":{const s=t.startPoint;t.startAngle=Math.atan2(s.y+i.y-r.y,s.x+i.x-r.x);break}case"end":{const s=t.endPoint;t.endAngle=Math.atan2(s.y+i.y-r.y,s.x+i.x-r.x);break}case"mid":{const s=t.getPoint(.5),o=s.x+i.x-t.center.x,a=s.y+i.y-t.center.y,c=Math.hypot(s.x-t.center.x,s.y-t.center.y),l=Math.hypot(o,a);if(c>0&&l>0){const h=l/c;t.majorAxisRadius*=h,t.minorAxisRadius*=h}break}}}subGetOsnapPoints(t,e,i,r){const s=this._elevation,o=[];if(this._geo.loops.forEach(a=>{var c;if(a instanceof rt){const l=a,h=l.numberOfVertices;if(h===0)return;switch(t){case I.EndPoint:for(let u=0;u<h;u++){const d=l.getPointAt(u);r.push(new x(d.x,d.y,s))}break;case I.MidPoint:case I.Nearest:case I.Perpendicular:case I.Tangent:{const u=a.closed?h:h-1;for(let d=0;d<u;d++){const g=[];Ui(l.getPointAt(d),l.getPointAt((d+1)%h),(c=l.vertices[d])==null?void 0:c.bulge,s,t,e,g),t===I.MidPoint?r.push(...g):o.push(...g)}break}}return}a.curves.forEach(l=>{if(l instanceof Vt){const h=[];Ui(l.startPoint,l.endPoint,void 0,s,t,e,h),t===I.MidPoint?r.push(...h):t===I.Nearest||t===I.Perpendicular||t===I.Tangent?o.push(...h):r.push(...h)}else if(l instanceof Z)switch(t){case I.EndPoint:r.push(new x(l.startPoint.x,l.startPoint.y,s),new x(l.endPoint.x,l.endPoint.y,s));break;case I.MidPoint:r.push(new x(l.midPoint.x,l.midPoint.y,s));break;case I.Nearest:{const h=l.nearestPoint({x:e.x,y:e.y});o.push(new x(h.x,h.y,s));break}case I.Perpendicular:{l.perpendicularPoints({x:e.x,y:e.y}).forEach(u=>o.push(new x(u.x,u.y,s)));break}case I.Tangent:{l.tangentPoints({x:e.x,y:e.y}).forEach(u=>o.push(new x(u.x,u.y,s)));break}}else if(l instanceof Ce)switch(t){case I.EndPoint:r.push(new x(l.startPoint.x,l.startPoint.y,s),new x(l.endPoint.x,l.endPoint.y,s));break;case I.MidPoint:{const h=l.getPoint(.5);r.push(new x(h.x,h.y,s));break}case I.Nearest:{const h=l.nearestPoint({x:e.x,y:e.y});o.push(new x(h.x,h.y,s));break}case I.Perpendicular:{l.perpendicularPoints({x:e.x,y:e.y}).forEach(u=>o.push(new x(u.x,u.y,s)));break}case I.Tangent:{l.tangentPoints({x:e.x,y:e.y}).forEach(u=>o.push(new x(u.x,u.y,s)));break}}})}),(t===I.Nearest||t===I.Perpendicular||t===I.Tangent)&&o.length>0){const a=oe(e,o);r.length=0,a&&r.push(a)}}get directBatchPrimitive(){return!this.isSolidFill||this.isGradient||this.buildAreasFromLoops().length>1?null:"area"}subWorldDraw(t){var s;this.updatePredefinedPatternDefinitionLines();const e=t.subEntityTraits;e.fillType={solidFill:this.isSolidFill,patternAngle:this.getRenderablePatternAngle(),definitionLines:this.definitionLines,backgroundColor:(s=this.backgroundColor)==null?void 0:s.clone(),gradient:this.isGradient?{name:this.gradientName,angle:this.gradientAngle,shift:this.gradientShift,oneColorMode:this.gradientOneColorMode,shadeTintValue:this.shadeTintValue,startColor:this.gradientStartColor,endColor:this.gradientEndColor}:void 0},e.drawOrder=-1;const i=this.buildAreasFromLoops();if(i.length===0)return t.area(this._geo);if(i.length===1)return t.area(i[0]);const r=i.map(o=>t.area(o));return t.group(r)}transformBy(t){const e=t.elements,i=new rr(e[0],e[4],e[12],e[1],e[5],e[13],0,0,1);this._geo.transform(i),this.invalidateAreasFromLoopsCache(),this._elevation=new x(0,0,this._elevation).applyMatrix4(t).z,this._normal.transformDirection(t),this._normal.lengthSq()>0&&this._normal.normalize();const r=new x(1,0,0).applyMatrix4(t),s=new x().applyMatrix4(t),o=new x(r).sub(s);if(o.length()>0){const a=Math.atan2(o.y,o.x);this._patternAngle=this.getEffectivePatternAngle()+a,this._gradientAngle+=a,this._patternScale=this.getEffectivePatternScale()*o.length(),this._patternAngleSet=!0,this._patternScaleSet=!0,this.updatePredefinedPatternDefinitionLines()}return this}dxfOutFields(t){super.dxfOutFields(t);const e=this._geo.loops,i=this.getEffectivePatternName(),r=this.getEffectivePatternAngle(),s=this.getEffectivePatternScale();if(this.updatePredefinedPatternDefinitionLines(i,s),t.writeSubclassMarker("AcDbHatch"),t.writePoint3d(10,{x:0,y:0,z:this.elevation}),t.writeVector3d(210,this.normal),t.writeString(2,i||(this.isSolidFill?co:Ud)),t.writeInt16(70,this.isSolidFill?1:0),t.writeInt16(71,this.getEffectiveAssociative()?1:0),t.writeInt16(91,e.length),e.forEach((o,a)=>{const c=a===0;if(o instanceof rt){const l=o.vertices,h=l.some(d=>(d.bulge??0)!==0);t.writeInt16(92,2),t.writeInt16(72,h?1:0),t.writeInt16(73,o.closed?1:0),t.writeInt16(93,l.length);for(const d of l)t.writePoint2d(10,d),h&&t.writeDouble(42,d.bulge??0);t.writeInt16(97,0);return}if(o instanceof Un){const l=c?1:0;t.writeInt16(92,l),t.writeInt16(93,o.numberOfEdges);for(const h of o.curves){if(h instanceof Vt){t.writeInt16(72,1),t.writePoint2d(10,h.startPoint),t.writePoint2d(11,h.endPoint);continue}if(h instanceof Z){t.writeInt16(72,2),t.writePoint2d(10,h.center),t.writeDouble(40,h.radius),t.writeAngle(50,h.startAngle),t.writeAngle(51,h.closed?h.startAngle+Math.PI*2:h.endAngle),t.writeInt16(73,h.clockwise?0:1);continue}if(h instanceof Ce){t.writeInt16(72,3),t.writePoint2d(10,h.center);const u=new M(h.majorAxisRadius*Math.cos(h.rotation),h.majorAxisRadius*Math.sin(h.rotation));t.writePoint2d(11,u);const d=h.majorAxisRadius===0?0:h.minorAxisRadius/h.majorAxisRadius;t.writeDouble(40,d),t.writeAngle(50,h.startAngle),t.writeAngle(51,h.closed?h.startAngle+Math.PI*2:h.endAngle),t.writeInt16(73,h.clockwise?0:1);continue}if(h instanceof Nt){const u=h.knots,d=h.controlPoints,g=h.weights,f=h.fitPoints,p=g.some(m=>m!==1);t.writeInt16(72,4),t.writeInt16(94,h.degree),t.writeInt16(73,p?1:0),t.writeInt16(74,h.closed?1:0),t.writeInt16(95,u.length),t.writeInt16(96,d.length),u.forEach(m=>t.writeDouble(40,m)),d.forEach((m,y)=>{t.writePoint2d(10,m),p&&t.writeDouble(42,g[y]??1)}),t.writeInt16(97,(f==null?void 0:f.length)??0),f==null||f.forEach(m=>t.writePoint2d(11,m))}}t.writeInt16(97,0)}}),t.writeInt16(75,this.hatchStyle),t.writeInt16(76,this.patternType),t.writeAngle(52,r),t.writeDouble(41,s),t.writeInt16(77,0),t.writeInt16(78,this.definitionLines.length),this.definitionLines.forEach(o=>{t.writeAngle(53,o.angle),t.writeDouble(43,o.base.x),t.writeDouble(44,o.base.y),t.writeDouble(45,o.offset.x),t.writeDouble(46,o.offset.y),t.writeInt16(79,o.dashLengths.length),o.dashLengths.forEach(a=>t.writeDouble(49,a))}),this._pixelSize!=null&&t.writeDouble(47,this._pixelSize),this.isGradient){t.writeInt16(450,this._hatchObjectType),t.writeInt16(451,0),t.writeDouble(460,this._gradientAngle),t.writeDouble(461,this._gradientShift),t.writeInt16(452,this._gradientOneColorMode?1:0),t.writeDouble(462,this._shadeTintValue);const o=this._gradientStartColor,a=this._gradientEndColor,c=o!=null&&a!=null?2:o!=null||a!=null?1:0;t.writeInt16(453,c);const l=(h,u)=>{t.writeDouble(463,h);const d=me.getIndexByColor(u);d!=null&&t.writeInt16(63,d),t.writeInt32(421,u)};o!=null&&l(0,o),a!=null&&l(1,a),t.writeString(470,this.gradientName)}return t.writeInt16(98,0),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbHatch"),this.definitionLines.length=0;let e=this.elevation,i=this.normal.x,r=this.normal.y,s=this.normal.z,o=this.patternAngle*180/Math.PI,a=0,c=!1,l=!1,h=!1,u=[],d=null,g=[],f=null,p="type",m=0,y=!1,b=null,_=!1,w=0,S;const P=U=>{w===0?this.gradientStartColor=U:this.gradientEndColor=U,w++,S=void 0},v=()=>{if(S==null)return;const U=me.getColorByIndex(S);U!=null?P(U):S=void 0},k=()=>{d&&(u.push(d),d=null)},L=()=>{if(k(),u.length===0)return;const U=new rt;U.closed=h,u.forEach((J,E)=>{U.addVertexAt(E,{x:J.x,y:J.y,bulge:J.bulge??0})}),this.add(U),u=[]},O=()=>{if(g.length===0)return;const U=[];for(const E of g)if(E.kind==="line")U.push(new Vt({x:E.sx,y:E.sy},{x:E.ex,y:E.ey}));else if(E.kind==="arc")U.push(new Z({x:E.cx,y:E.cy},E.radius,E.startDeg*Math.PI/180,E.endDeg*Math.PI/180,!E.isCcw));else if(E.kind==="ellipse"){const W=Math.hypot(E.mx,E.my),st=W*E.ratio;let D=E.startDeg*Math.PI/180,Ot=E.endDeg*Math.PI/180;const $t=Math.atan2(E.my,E.mx);E.isCcw||(D=Math.PI*2-D,Ot=Math.PI*2-Ot),U.push(new Ce({x:E.cx,y:E.cy,z:0},W,st,D,Ot,!E.isCcw,$t))}else{const W=Nt.fromDwgSplineEdge({degree:E.degree,numberOfControlPoints:E.controlPoints.length,numberOfKnots:E.knots.length,numberOfFitData:E.fitPoints.length,knots:E.knots,controlPoints:E.controlPoints.map(st=>({x:st.x,y:st.y,z:0,weight:E.rational?st.weight??1:void 0})),fitDatum:E.fitPoints.map(st=>({x:st.x,y:st.y,z:0})),startTangent:null,endTangent:null});W&&U.push(W)}const J=Un.buildFromEdges(U);J.length===0&&U.length>0?this.add(new Un(U)):J.forEach(E=>this.add(E)),g=[],f=null},R=()=>{c?L():O()},N=()=>{f&&(g.push(f),f=null)},it=()=>{N(),R(),m=Math.max(0,m-1),m===0&&(_=!0)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const U=t.readItem();if(!U)break;const J=Number(U.code),E=Number(U.value);if(y||_){switch(J){case 75:this.hatchStyle=E,_=!0;break;case 76:this.patternType=E;break;case 52:o=E;break;case 41:this.patternScale=E;break;case 77:break;case 78:y=!0;break;case 53:b&&this.definitionLines.push(b),b={angle:E*Math.PI/180,base:{x:0,y:0},offset:{x:0,y:0},dashLengths:[]};break;case 43:b&&(b.base.x=E);break;case 44:b&&(b.base.y=E);break;case 45:b&&(b.offset.x=E);break;case 46:b&&(b.offset.y=E);break;case 79:break;case 49:b&&b.dashLengths.push(E);break;case 47:this.pixelSize=E;break;case 99:break;case 450:this.hatchObjectType=E,this.gradientStartColor=void 0,this.gradientEndColor=void 0,w=0,S=void 0;break;case 451:break;case 452:this.gradientOneColorMode=E!==0;break;case 453:break;case 460:this.gradientAngle=E;break;case 461:this.gradientShift=E;break;case 462:this.shadeTintValue=E;break;case 463:v();break;case 63:S=E;break;case 421:P(E);break;case 470:v(),this.gradientName=String(U.value);break}continue}switch(J){case 10:c||f&&f.kind!=="line"&&f.kind!=="arc"&&f.kind!=="ellipse"&&f.kind,m>0&&c?(k(),d={x:E,y:0}):(f==null?void 0:f.kind)==="line"&&p==="type"?f.sx=E:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.cx=E:(f==null?void 0:f.kind)==="spline"&&f.controlPoints.push({x:E,y:0});break;case 20:m>0&&c&&d?d.y=E:(f==null?void 0:f.kind)==="line"&&p==="type"?f.sy=E:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.cy=E:(f==null?void 0:f.kind)==="spline"&&f.controlPoints.length>0&&(f.controlPoints[f.controlPoints.length-1].y=E);break;case 30:m<=0&&!_&&(e=E);break;case 2:this.patternName=String(U.value);break;case 70:this.isSolidFill=E!==0;break;case 71:this.associative=E!==0;break;case 91:m=E;break;case 92:m>0&&(u.length>0||g.length>0||f)&&(N(),R()),a=E,c=(a&2)!==0,l=!1,h=!1,u=[],g=[],f=null,p="type";break;case 72:c?l=E!==0:(N(),E===1?(f={kind:"line",sx:0,sy:0,ex:0,ey:0},p="type"):E===2?f={kind:"arc",cx:0,cy:0,radius:0,startDeg:0,endDeg:0,isCcw:!0}:E===3?f={kind:"ellipse",cx:0,cy:0,mx:0,my:0,ratio:1,startDeg:0,endDeg:0,isCcw:!0}:E===4?f={kind:"spline",degree:3,rational:!1,closed:!1,knots:[],controlPoints:[],fitPoints:[],expectedKnots:0,expectedControls:0,expectedFits:0,fitCountSeen:!1}:f=null);break;case 73:c?h=E!==0:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.isCcw=E!==0:(f==null?void 0:f.kind)==="spline"&&(f.rational=E!==0);break;case 74:(f==null?void 0:f.kind)==="spline"&&(f.closed=E!==0);break;case 93:break;case 42:c&&l&&d?d.bulge=E:(f==null?void 0:f.kind)==="spline"&&f.rational&&f.controlPoints.length>0&&(f.controlPoints[f.controlPoints.length-1].weight=E);break;case 11:(f==null?void 0:f.kind)==="line"?(f.ex=E,p="line-end"):(f==null?void 0:f.kind)==="ellipse"?f.mx=E:(f==null?void 0:f.kind)==="spline"&&f.fitPoints.push({x:E,y:0});break;case 21:(f==null?void 0:f.kind)==="line"?f.ey=E:(f==null?void 0:f.kind)==="ellipse"?f.my=E:(f==null?void 0:f.kind)==="spline"&&f.fitPoints.length>0&&(f.fitPoints[f.fitPoints.length-1].y=E);break;case 40:(f==null?void 0:f.kind)==="arc"?f.radius=E:(f==null?void 0:f.kind)==="ellipse"?f.ratio=E:(f==null?void 0:f.kind)==="spline"&&f.knots.push(E);break;case 50:((f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse")&&(f.startDeg=E);break;case 51:((f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse")&&(f.endDeg=E);break;case 94:(f==null?void 0:f.kind)==="spline"&&(f.degree=E);break;case 95:(f==null?void 0:f.kind)==="spline"&&(f.expectedKnots=E);break;case 96:(f==null?void 0:f.kind)==="spline"&&(f.expectedControls=E);break;case 97:if((f==null?void 0:f.kind)==="spline"&&!f.fitCountSeen&&(f.controlPoints.length>0||f.knots.length>0)){f.expectedFits=E,f.fitCountSeen=!0;break}it();break;case 75:N(),R(),m=0,_=!0,this.hatchStyle=E;break;case 210:i=E;break;case 220:r=E;break;case 230:s=E;break}}f&&(g.push(f),f=null),R(),b&&this.definitionLines.push(b),v(),this.elevation=e;const $=new A(i,r,s);return $.lengthSq()>0&&(this.normal=$),this.patternAngle=o*Math.PI/180,this}};dl.typeName="Hatch";let Wi=dl;class Af{constructor(t){this.db=t}createDefaultLayer(){const t=new G;return t.colorIndex=7,this.db.tables.layerTable.add(new lr({name:"0",standardFlags:0,linetype:"Continuous",lineWeight:0,isOff:!1,color:t,isPlottable:!0}))}createDefaultLineType(){this.db.tables.linetypeTable.add(new sn({name:"ByBlock",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new sn({name:"ByLayer",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new sn({name:"Continuous",standardFlag:0,description:"Solid line",totalPatternLength:0}))}createDefaultTextStyle(){this.db.tables.textStyleTable.add(new wo({name:ht,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}createDefaultDimStyle(){this.db.tables.dimStyleTable.add(new Gt({name:ht,dimtxsty:ht}))}createDefaultLayout(){const t=new cr;t.layoutName="Model",t.tabOrder=0,t.blockTableRecordId=this.db.tables.blockTable.modelSpace.objectId,t.limits.min.copy({x:0,y:0}),t.limits.max.copy({x:1e6,y:1e6}),t.extents.min.copy({x:0,y:0,z:0}),t.extents.max.copy({x:1e6,y:1e6,z:0}),this.db.objects.layout.setAt(t.layoutName,t),this.db.tables.blockTable.modelSpace.layoutId=t.objectId}createArrowBlock(){if(!this.db.tables.blockTable.getAt("_CAXARROW")){const e=new Wi;e.patternName=co;const i=new Un;i.add(new Vt({x:0,y:0},{x:-1,y:.125})),i.add(new Vt({x:-1,y:.125},{x:-1,y:-.125})),i.add(new Vt({x:-1,y:-.125},{x:0,y:0})),e.add(i);const r=new ut;r.name="_CAXARROW",r.appendEntity(e),this.db.tables.blockTable.add(r)}}}const Ba=Math.PI/200;class Pf{constructor(t){this.database=t}formatLength(t,e){const i=this.createContext(e);return In(t,i)}formatPoint2d(t,e){const i=this.createContext(e);return`${In(t.x,i)}, ${In(t.y,i)}`}formatPoint3d(t,e){const i=this.createContext(e);return`${In(t.x,i)}, ${In(t.y,i)}, ${In(t.z,i)}`}formatAngle(t,e){const i=this.createContext(e),s=(e==null?void 0:e.applyAngbaseAngdir)??!0?tx(t,this.database.angbase,this.database.angdir):C.normalizeAngle(t);return J_(s,i)}createContext(t){return{lunits:this.database.lunits,luprec:$i(this.database.luprec),insunits:this.database.insunits,unitmode:this.database.unitmode,measurement:this.database.measurement,aunits:this.database.aunits,auprec:$i(this.database.auprec),showUnits:(t==null?void 0:t.showUnits)??!1,showApproximate:(t==null?void 0:t.showApproximate)??!1}}}function In(n,t){let e;switch(t.lunits){case mt.Scientific:e=ta(lx(n,t.luprec),t);break;case mt.Engineering:e=hx(n,t);break;case mt.Architectural:e=ux(n,t);break;case mt.Fractional:e=ta(dx(n,t),t);break;case mt.WindowsDesktop:case mt.Decimal:default:e=ta(bi(n,t.luprec),t)}return Sf(e,ex(n,t),t)}function J_(n,t){let e;switch(t.aunits){case Xt.DegreesMinutesSeconds:e=Ef(n,t);break;case Xt.Gradians:e=px(n,t);break;case Xt.Radians:e=fx(n,t);break;case Xt.SurveyorsUnits:e=mx(n,t);break;case Xt.DecimalDegrees:default:e=gx(n,t)}return Sf(e,nx(n,t),t)}function tx(n,t,e){let i=n-t;return e===1&&(i=-i),C.normalizeAngle(i)}function Wc(n){const t=n.showUnits?'"':"";return n.unitmode===1?{feetInchSeparator:"",fractionSeparator:"-",inchSuffix:t}:{feetInchSeparator:"-",fractionSeparator:" ",inchSuffix:t}}function $i(n,t=0,e=8){return Number.isFinite(n)?Math.max(t,Math.min(e,Math.round(n))):t}function yi(n){return Object.is(n,-0)?0:n}function Sf(n,t,e){return!e.showApproximate||!t?n:`~ ${n}`}function ex(n,t){if(!Number.isFinite(n))return!1;const e=rx(n,t);return $c(n,e)}function nx(n,t){if(!Number.isFinite(n))return!1;if(t.aunits===Xt.SurveyorsUnits)return ix(n,t.auprec);const e=sx(n,t);return $c(n,e)}function ix(n,t){const i=((90-C.radToDeg(n))%360+360)%360,r=Tf(i),s=Math.min(Math.abs(i-r.base),Math.abs(r.base+90-i)),o=C.degToRad(s),a=kf(o,t);return $c(o,a)}function rx(n,t){const e=yi(n);switch(t.lunits){case mt.Scientific:return ox(e,t.luprec);case mt.Engineering:case mt.Architectural:case mt.Fractional:return ax(e,t);case mt.WindowsDesktop:case mt.Decimal:default:return Hn(e,t.luprec)}}function sx(n,t){const e=yi(n);switch(t.aunits){case Xt.DegreesMinutesSeconds:return kf(e,t.auprec);case Xt.Gradians:return Hn(e/Ba,t.auprec)*Ba;case Xt.Radians:return Hn(e,t.auprec);case Xt.DecimalDegrees:default:return C.degToRad(Hn(C.radToDeg(e),t.auprec))}}function Hn(n,t){if(!Number.isFinite(n))return 0;const e=10**t;return Math.round(yi(n)*e)/e}function ox(n,t){if(!Number.isFinite(n))return 0;const e=yi(n);if(e===0)return 0;const i=e.toExponential(t);return Number(i)}function ax(n,t){if(!Number.isFinite(n))return 0;const e=n<0?-1:1,i=Math.abs(n),r=Math.floor(i/12),s=i-r*12;if(t.lunits===mt.Architectural||t.lunits===mt.Fractional){const o=1<<$i(t.luprec,0,8),a=cx(s,o);return e*(r*12+a)}return e*(r*12+Hn(s,t.luprec))}function cx(n,t){const e=Math.floor(n),i=n-e,r=Math.round(i*t);return r>=t?e+1:e+r/t}function kf(n,t){const e=C.radToDeg(n),i=e<0?-1:1,r=Math.abs(e),s=Math.floor(r),o=(r-s)*60,a=Math.floor(o),c=Hn((o-a)*60,t),l=s+a/60+c/3600;return C.degToRad(i*l)}function $c(n,t){if(n===t)return!1;const e=Math.max(Math.abs(n),Math.abs(t),1);return Math.abs(n-t)>e*Number.EPSILON*8}function bi(n,t){if(!Number.isFinite(n))return"0";const e=yi(n);if(Number.isInteger(e)&&t===0)return String(e);const r=e.toFixed(t).replace(/\.?0+$/,"");return r===""||r==="-"?"0":r}function lx(n,t){if(!Number.isFinite(n))return"0";const e=yi(n);if(e===0)return"0";const i=e.toExponential(t).match(/^(.+)e([+-])(\d+)$/i);if(!i)return"0";const[,r,s,o]=i,a=o.length<2?o.padStart(2,"0"):o;return`${r}E${s}${a}`.toUpperCase()}function hx(n,t){if(!Number.isFinite(n))return"0";const e=Wc(t),i=n<0?"-":"",r=Math.abs(n),s=Math.floor(r/12),o=r-s*12,a=bi(o,t.luprec);return s===0?`${i}${a}${e.inchSuffix}`:`${i}${s}'${e.feetInchSeparator}${a}${e.inchSuffix}`}function ux(n,t){if(!Number.isFinite(n))return"0";const e=Wc(t),i=n<0?"-":"",r=Math.abs(n),s=Math.floor(r/12),o=r-s*12,a=1<<$i(t.luprec,0,8),c=If(o,a,e.fractionSeparator);return s===0?`${i}${c}${e.inchSuffix}`:`${i}${s}'${e.feetInchSeparator}${c}${e.inchSuffix}`}function dx(n,t){if(!Number.isFinite(n))return"0";const e=Wc(t),i=n<0?"-":"",r=Math.abs(n),s=1<<$i(t.luprec,0,8);return`${i}${If(r,s,e.fractionSeparator)}`}function If(n,t,e){const i=Math.floor(n),r=n-i;let s=Math.round(r*t);if(s>=t)return String(i+1);if(s===0)return String(i);const o=xx(s,t);s/=o;const a=t/o,c=`${s}/${a}`;return i===0?c:`${i}${e}${c}`}function gx(n,t){const e=C.radToDeg(n);return`${bi(e,t.auprec)}${t.showUnits?"°":""}`}function fx(n,t){return`${bi(n,t.auprec)}${t.showUnits?" rad":""}`}function px(n,t){const e=n/Ba;return`${bi(e,t.auprec)}${t.showUnits?"g":""}`}function Ef(n,t){const e=C.radToDeg(n),i=e<0?"-":"",r=Math.abs(e),s=Math.floor(r),o=(r-s)*60,a=Math.floor(o),c=(o-a)*60,l=bi(c,t.auprec),h=t.showUnits?'"':"";return`${i}${s}d${a}'${l}${h}`}function mx(n,t){const i=((90-C.radToDeg(n))%360+360)%360,r=Tf(i),s=Math.min(Math.abs(i-r.base),Math.abs(r.base+90-i)),a=Ef(C.degToRad(s),t).replace(/^-/,"");return`${r.prefix} ${a} ${r.suffix}`.trim()}function Tf(n){return n<90?{prefix:"N",suffix:"E",base:0}:n<180?{prefix:"S",suffix:"E",base:90}:n<270?{prefix:"S",suffix:"W",base:180}:{prefix:"N",suffix:"W",base:270}}function ta(n,t){if(!t.showUnits||t.lunits===mt.Engineering||t.lunits===mt.Architectural)return n;const e=yx(t.insunits,t.measurement);return e?`${n}${e}`:n}function yx(n,t){return n===gt.Undefined?t===0?'"':" mm":u_(n)?bx(n):d_(n)?_x(n):""}function bx(n){switch(n){case gt.Millimeters:return" mm";case gt.Centimeters:return" cm";case gt.Meters:return" m";case gt.Kilometers:return" km";case gt.Decimeters:return" dm";case gt.Microns:return" µm";case gt.Nanometers:return" nm";default:return""}}function _x(n){switch(n){case gt.Inches:case gt.Microinches:case gt.Mils:case gt.USSurveyInch:return'"';case gt.Feet:case gt.USSurveyFeet:return"'";case gt.Miles:case gt.USSurveyMile:return" mi";case gt.Yards:case gt.USSurveyYard:return" yd";default:return""}}function xx(n,t){let e=Math.abs(n),i=Math.abs(t);for(;i!==0;){const r=i;i=e%i,e=r}return e||1}class ue extends At{constructor(t){super(),this.database=t,this.objectId=t.generateHandle(),this.ownerId=t.objectId,this._recordsByName=new Map,this._unnamedRecords=[]}get numEntries(){return this._recordsByName.size}get totalRecordCount(){return this._recordsByName.size+this._unnamedRecords.length}add(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot add symbol table records outside an active transaction.");const i=e.resolveSymbolTableName(this);t.database=this.database,this.database.commitObjectHandle(t,s=>this.hasId(s)),t.ownerId=this.objectId;const r=this.normalizeName(t.name);r?this._recordsByName.set(r,t):this._unnamedRecords.push(t),e.isRecording()&&e.recordAppend({type:"symbolTable",tableName:i},t)}remove(t){const e=this.normalizeName(t),i=this._recordsByName.get(e);return i?(this.removeRecord(i),!0):!1}removeId(t){const e=this.getIdAt(t);return e?(this.removeRecord(e),!0):!1}removeRecord(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot remove symbol table records outside an active transaction.");if(e.isRecording()){const i=e.resolveSymbolTableName(this);e.recordRemove({type:"symbolTable",tableName:i},t)}this.removeFromMembership(t),this.database.releaseObjectHandle(t)}removeAll(){for(const t of this._recordsByName.values())this.database.releaseObjectHandle(t);for(const t of this._unnamedRecords)this.database.releaseObjectHandle(t);this._recordsByName.clear(),this._unnamedRecords.length=0}has(t){const e=this.normalizeName(t);return this._recordsByName.has(e)}hasId(t){return this.getIdAt(t)!==void 0}getAt(t){const e=this.normalizeName(t);return this._recordsByName.get(e)}getIdAt(t){const e=this.database.getObjectById(t);if(!(!e||e.getAttrWithoutException("ownerId")!==this.objectId))return e}getOwnerIdAt(t){return this.getIdAt(t)}newIterator(t=!1){return t?new ni([...this._recordsByName.values(),...this._unnamedRecords]):new ni(this._recordsByName)}normalizeName(t){return(t??"").trim().toUpperCase()}get dxfEntryCount(){return this.numEntries}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbSymbolTable"),t.writeInt16(70,this.dxfEntryCount),this}removeFromMembership(t){const e=this.normalizeName(t.name);if(e){this._recordsByName.delete(e);return}const i=this._unnamedRecords.indexOf(t);i>=0&&this._unnamedRecords.splice(i,1)}}class Lf extends ue{constructor(t){super(t)}get modelSpace(){let t=this.getAt(ut.MODEL_SPACE_NAME);return t||(t=new ut,t.name=ut.MODEL_SPACE_NAME,this.add(t)),t}getEntityById(t){const e=this.database.getObjectById(t);if(e instanceof nt)return e}removeEntity(t){let e=!1;for(const i of this.database.tables.blockTable.newIterator())if(i.removeEntity(t)){e=!0;break}return e}getXrefs(){const t=[];for(const e of this.newIterator())e.isXref&&t.push(e);return t}getUnresolvedXrefs(){return this.getXrefs().filter(t=>t.isUnresolvedXref)}normalizeName(t){const e=(t??"").trim();if(!e)return"";if(ut.isModelSapceName(e))return ut.MODEL_SPACE_NAME;if(ut.isPaperSapceName(e)){const i=ut.PAPER_SPACE_NAME_PREFIX,r=e.substring(i.length);return i+r}return super.normalizeName(e)}}const Mf="DwgConverterLicenseError",wx=["evaluation of @mlightcad/dwg-converter has expired"],vx=["invalid @mlightcad/dwg-converter license key"];function Cf(n){return n==="license_expired"||n==="license_invalid"}function qc(n){const t=n.toLowerCase();if(wx.some(e=>t.includes(e)))return"license_expired";if(vx.some(e=>t.includes(e)))return"license_invalid"}function Of(n){return qc(n)??"license_invalid"}const Ax=["out of memory","data cannot be cloned","allocation failed","memory access out of bounds"];function Rf(n){const t=n.toLowerCase();return Ax.some(e=>t.includes(e))}class Px{constructor(){this.setupMessageHandler()}setupMessageHandler(){self.onmessage=async t=>{const{id:e,input:i}=t.data;try{const r=await this.executeTask(i);this.sendResponse(e,!0,r)}catch(r){const s=r instanceof Error?r.message:String(r);this.sendResponse(e,!1,void 0,s,this.classifyTaskError(r,s))}}}sendResponse(t,e,i,r,s){const o={id:t,success:e,data:i,error:r,errorCode:s};try{self.postMessage(o)}catch(a){const c=a instanceof Error?a.message:String(a);self.postMessage({id:t,success:!1,error:c,errorCode:this.classifyPostMessageError(c)})}}classifyTaskError(t,e){if(t instanceof Error){const r=t.code;if(Cf(r))return r;if(t.name===Mf)return Of(e)}const i=qc(e);return i||this.classifyPostMessageError(e)}classifyPostMessageError(t){return Rf(t)?"worker_oom":t.toLowerCase().includes("timed out")?"worker_timeout":"worker_error"}}class Ft extends Error{constructor(t,e,i){super(t),this.name="AcDbOpenDatabaseError",this.code=e,this.stage=i==null?void 0:i.stage,this.cause=i==null?void 0:i.cause}static isLicenseErrorCode(t){return Cf(t)}static isWorkerOutOfMemoryMessage(t){return Rf(t)}static classifyThrownError(t){if(t instanceof Error){const i=Ft.readStructuredCode(t);if(i)return i;if(t.name===Mf)return Of(t.message)}const e=t instanceof Error?t.message:String(t);return Ft.classifyWorkerErrorMessage(e)}static classifyWorkerErrorMessage(t){const e=qc(t);return e||(Ft.isWorkerOutOfMemoryMessage(t)?"worker_oom":t.toLowerCase().includes("timed out")?"worker_timeout":"worker_error")}static from(t,e){if(t instanceof Ft)return t;const i=t instanceof Error?t.message:String(t),r=Ft.classifyThrownError(t);return new Ft(i,r,{stage:e,cause:t})}static fromTask(t){const e=t.task.name;return Ft.from(t.error,e)}static throwOnWorkerParseFailure(t,e="PARSE"){if(t.success)return;const i=t.error!=null?`Failed to parse drawing due to error: '${t.error}'`:"Failed to parse drawing due to an unknown worker error",r=Ft.mapWorkerResultCode(t.errorCode,t.error);throw new Ft(i,r,{stage:e})}static mapWorkerResultCode(t,e){switch(t){case"worker_oom":return"worker_oom";case"worker_timeout":return"worker_timeout";case"worker_error":return"worker_error";case"license_expired":return"license_expired";case"license_invalid":return"license_invalid";default:return Ft.classifyWorkerErrorMessage(e??"")}}static readStructuredCode(t){const e=t.code;if(typeof e=="string")switch(e){case"license_expired":case"license_invalid":case"worker_oom":case"worker_timeout":case"worker_error":case"parse_failed":case"font_load_failed":case"fetch_failed":case"unknown":return e;default:return}}}class Nf extends ue{constructor(t){super(t)}}class Bf extends ue{constructor(t){super(t)}add(t){super.add(t),this.database.events.layerAppended.dispatch({database:this.database,layer:t})}}class Df extends ue{constructor(t){super(t)}}class qi extends ue{constructor(t){super(t)}static normalizeFontFileName(t){if(!t)return;const e=t.lastIndexOf(".");return e>=0?t.substring(0,e).toLowerCase():t.toLowerCase()}get dxfEntryCount(){return this.totalRecordCount}resolveAt(t){this.database.ensureTextStyleDefaults();const e=[],i=r=>{const s=r==null?void 0:r.trim();s&&!e.includes(s)&&e.push(s)};i(t),i(this.database.textstyle),i(ht),i("STANDARD");for(const r of e){const s=this.getAt(r);if(s)return s;const o=r.toUpperCase();for(const a of this.newIterator())if(a.name.toUpperCase()===o)return a}return this.newIterator().next().value??void 0}get shapeFiles(){return this.newIterator(!0).toArray().filter(t=>t.isShapeFile)}get fonts(){const t=new Set;for(const e of this.newIterator()){const i=qi.normalizeFontFileName(e.fileName);i&&t.add(i);const r=qi.normalizeFontFileName(e.bigFontFileName);r&&t.add(r)}return Array.from(t)}}class Ff extends ue{constructor(t){super(t)}}class Xf extends ue{constructor(t){super(t)}}class Yf extends ue{constructor(t){super(t)}normalizeName(t){const e=(t??"").trim();return e?on.isActiveVportName(e)?ei:super.normalizeName(e):""}getActiveVport(){return this.getAt(ei)}getActiveVportBox(t,e){const i=this.getActiveVport();return i==null?void 0:i.resolveModelViewBox(t,e)}}class zf extends ue{constructor(t){super(t)}}class Vf extends dt{getBtrIdAt(t){for(const[e,i]of this._recordsByName)if(i.blockTableRecordId==t)return i}get maxTabOrder(){let t=-1;return this._recordsByName.forEach(e=>{e.tabOrder>t&&(t=e.tabOrder)}),t}}class jf{constructor(t){this.database=t}applyForward(t){for(const e of t)this.applyChange(e,!0)}applyInverse(t){for(let e=t.length-1;e>=0;e--)this.applyChange(t[e],!1)}applyChange(t,e){switch(t.kind){case"modify":this.applyModify(t,e);break;case"append":e?this.applyAppend(t.container,t.object):this.applyRemove(t.container,t.object);break;case"remove":e?this.applyRemove(t.container,t.object):this.applyAppend(t.container,t.object);break;case"sysvar":this.applySysvar(t,e);break}}applyModify(t,e){const i=this.database.getObjectById(t.objectId);if(!i)return;const r=e?t.after:t.before;r&&i.restoreFrom(r)}applySysvar(t,e){const i=e?t.after:t.before;i!==void 0&&yt.instance().setVar(t.name,i,this.database)}applyAppend(t,e){switch(t.type){case"blockTableRecord":{const i=this.database.tables.blockTable.getIdAt(t.ownerId);i&&i.appendEntity(e);break}case"symbolTable":{const i=this.getSymbolTable(t.tableName);i&&i.add(e);break}case"dictionary":{const i=this.database.getObjectById(t.dictionaryId);i&&i.setAt(t.key,e);break}}}applyRemove(t,e){switch(t.type){case"blockTableRecord":{const i=this.database.tables.blockTable.getIdAt(t.ownerId);i&&i.removeEntity(e.objectId);break}case"symbolTable":{const i=this.getSymbolTable(t.tableName);i&&i.removeId(e.objectId);break}case"dictionary":{const i=this.database.getObjectById(t.dictionaryId);i&&i.removeId(e.objectId);break}}}getSymbolTable(t){const e=this.database.tables;switch(t){case"appIdTable":return e.appIdTable;case"blockTable":return e.blockTable;case"dimStyleTable":return e.dimStyleTable;case"linetypeTable":return e.linetypeTable;case"textStyleTable":return e.textStyleTable;case"viewTable":return e.viewTable;case"layerTable":return e.layerTable;case"viewportTable":return e.viewportTable;default:return}}}function Da(n,t){const e=[],i=[],r=[];for(const s of t)if(s.kind==="modify"){const o=n.getObjectById(s.objectId);o instanceof nt&&e.push(o)}else if(s.kind==="append"){if(s.container.type==="blockTableRecord"){const o=n.tables.blockTable.getEntityById(s.object.objectId)??(s.object instanceof nt?s.object:void 0);o&&i.push(o)}}else s.kind==="remove"&&s.container.type==="blockTableRecord"&&s.object instanceof nt&&r.push(s.object);return{modified:e,appended:i,erased:r}}function Gh(n,t){const e=[],i=[];for(const r of t){if(r.kind!=="append"&&r.kind!=="remove"||r.container.type!=="dictionary")continue;const s=r.container.key;if(r.kind==="append"){const o=n.getObjectById(r.object.objectId)??r.object;e.push({object:o,key:s})}else r.kind==="remove"&&i.push({object:r.object,key:s})}return{set:e,erased:i}}function Hh(n,t){const e={};for(const i of y_){const r=n.getAttrWithoutException(i),s=t.getAttrWithoutException(i);Qe(r,s)||(e[i]=s)}return e}function Wh(n,t,e=!1){const i=[];for(const r of t){if(r.kind!=="modify")continue;const s=n.getObjectById(r.objectId);if(!(s instanceof lr))continue;const o=r.before,a=r.after;if(!o||!a)continue;const c=e?Hh(a,o):Hh(o,a);Object.keys(c).length!==0&&i.push({database:n,layer:s,changes:c})}return i}function Sx(n,t){if(n.type!==t.type)return!1;switch(n.type){case"blockTableRecord":return t.type==="blockTableRecord"&&n.ownerId===t.ownerId;case"symbolTable":return t.type==="symbolTable"&&n.tableName===t.tableName;case"dictionary":return t.type==="dictionary"&&n.dictionaryId===t.dictionaryId&&n.key===t.key}}class Uf{constructor(){this.changes=[]}getChanges(){return this.changes}clear(){this.changes.length=0}mergeFrom(t){for(const e of t.getChanges())this.mergeChange(e)}recordModify(t){const e=t.objectId;this.changes.find(r=>r.kind==="modify"&&r.objectId===e)||this.changes.push({kind:"modify",objectId:e,before:t.clonePreservingIdentity()})}hasModify(t){return this.changes.some(e=>e.kind==="modify"&&e.objectId===t)}recordAppend(t,e){this.recordStructuralChange({kind:"append",container:t,object:e.clonePreservingIdentity()})}recordRemove(t,e){this.recordStructuralChange({kind:"remove",container:t,object:e.clonePreservingIdentity()})}recordSysvar(t,e){const i=t.toLowerCase();this.changes.find(s=>s.kind==="sysvar"&&s.name===i)||this.changes.push({kind:"sysvar",name:i,before:e})}finalize(t){for(const e of this.changes)if(e.kind==="modify"){const i=t.getObjectById(e.objectId);i&&(e.after=i.clonePreservingIdentity())}else e.kind==="sysvar"&&(e.after=this.getSysvarValue(t,e.name))}recordStructuralChange(t){const e=t.kind==="append"?"remove":"append",i=this.findStructuralChangeIndex(e,t.container,t.object.objectId);if(i>=0){this.changes.splice(i,1);return}this.changes.push(t)}mergeChange(t){if(t.kind==="modify"){this.changes.find(i=>i.kind==="modify"&&i.objectId===t.objectId)||this.changes.push(t);return}if(t.kind==="sysvar"){this.changes.find(i=>i.kind==="sysvar"&&i.name===t.name)||this.changes.push(t);return}this.recordStructuralChange(t)}findStructuralChangeIndex(t,e,i){return this.changes.findIndex(r=>r.kind===t&&r.object.objectId===i&&Sx(r.container,e))}getSysvarValue(t,e){return yt.instance().getVar(e,t)}}class Kc{constructor(){this.openedObjects=new Map,this.originalStates=new Map,this.recorder=new Uf}getObject(t,e,i=!1){const r=this.openedObjects.get(t);if(r){if(e===ii.kForWrite&&!this.originalStates.has(t)){const o=r.clonePreservingIdentity();this.originalStates.set(t,o),this.recorder.recordModify(r)}return r}const s=this.lookupObject(t,i);if(this.openedObjects.set(t,s),e===ii.kForWrite){const o=s.clonePreservingIdentity();this.originalStates.set(s.objectId,o),this.recorder.recordModify(s)}return s}commit(){this.originalStates.clear(),this.openedObjects.clear()}abort(){for(const[t,e]of this.originalStates){const i=this.openedObjects.get(t);i&&i.restoreFrom(e)}this.originalStates.clear(),this.openedObjects.clear(),this.recorder.clear()}lookupObject(t,e){throw new Error(`lookupObject(${t}) not implemented`)}}class Gf extends Kc{constructor(t){super(),this.database=t}lookupObject(t,e){const i=this.database.getObjectById(t,e);if(!i)throw new Error(`lookupObject(${t}) not found`);return i}}class Hf{constructor(){this.undoRecords=[],this.redoRecords=[],this.maxDepth=100}push(t){this.undoRecords.push(t),this.redoRecords.length=0,this.undoRecords.length>this.maxDepth&&this.undoRecords.shift()}popUndo(){return this.undoRecords.pop()}pushRedo(t){this.redoRecords.push(t)}popRedo(){return this.redoRecords.pop()}canUndo(){return this.undoRecords.length>0}canRedo(){return this.redoRecords.length>0}clear(){this.undoRecords.length=0,this.redoRecords.length=0}}class Wf{constructor(t){this.database=t,this.transactionStack=[],this.undoStack=new Hf,this.undoMarkStack=[],this._applyingUndoRedo=!1,this._pendingEntityModified=new Set,this._pendingLayerModified=new Map,this.strictMode=!1,this.changeApplier=new jf(t)}startTransaction(){const t=new Gf(this.database);return this.transactionStack.push(t),t}currentTransaction(){return this.transactionStack[this.transactionStack.length-1]}hasTransaction(){return this.transactionStack.length>0}isRecording(){return this.hasTransaction()&&!this._applyingUndoRedo}isApplyingUndoRedo(){return this._applyingUndoRedo}isOpenedForWriteInTransaction(t){for(const e of this.transactionStack)if(e.recorder.hasModify(t))return!0;return!1}commitTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to commit.");if(this.transactionStack.length>0){this.transactionStack[this.transactionStack.length-1].recorder.mergeFrom(t.recorder),t.commit();return}t.recorder.finalize(this.database);const e=t.recorder.getChanges();t.commit(),e.length>0&&(this.dispatchCommitEvents(e),this.enqueueUndoChanges(e))}abortTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to abort.");const e=[...t.recorder.getChanges()];this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{t.abort(),e.length>0&&this.changeApplier.applyInverse(e)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}}startUndoMark(t){this.undoMarkStack.push({label:t,pendingChanges:[]})}endUndoMark(){const t=this.undoMarkStack.pop();if(!t)throw new Error("No active undo mark to end.");t.pendingChanges.length!==0&&this.undoStack.push({label:t.label,changes:t.pendingChanges})}cancelUndoMark(){this.undoMarkStack.length>0&&this.undoMarkStack.pop()}undo(){const t=this.undoStack.popUndo();if(!t)return!1;this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{this.changeApplier.applyInverse(t.changes),this.dispatchUndoRedoEvents(t.changes,!0)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}return this.undoStack.pushRedo(t),!0}redo(){const t=this.undoStack.popRedo();if(!t)return!1;this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{this.changeApplier.applyForward(t.changes),this.dispatchUndoRedoEvents(t.changes,!1)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}return this.undoStack.push(t),!0}canUndo(){return this.undoStack.canUndo()}canRedo(){return this.undoStack.canRedo()}clearUndoStack(){this.undoStack.clear()}recordAppend(t,e){var i;this.isRecording()&&((i=this.currentTransaction())==null||i.recorder.recordAppend(t,e))}recordRemove(t,e){var i;this.isRecording()&&((i=this.currentTransaction())==null||i.recorder.recordRemove(t,e))}recordSysvar(t,e){var i;this.isRecording()&&((i=this.currentTransaction())==null||i.recorder.recordSysvar(t,e))}resolveSymbolTableName(t){const e=this.database.tables;return t===e.appIdTable?"appIdTable":t===e.blockTable?"blockTable":t===e.dimStyleTable?"dimStyleTable":t===e.linetypeTable?"linetypeTable":t===e.textStyleTable?"textStyleTable":t===e.viewTable?"viewTable":t===e.layerTable?"layerTable":t===e.viewportTable?"viewportTable":t.objectId}runUndoable(t,e){this.startUndoMark(t),this.startTransaction();try{const i=e(this.currentTransaction());return this.commitTransaction(),this.endUndoMark(),i}catch(i){throw this.hasTransaction()&&this.abortTransaction(),this.cancelUndoMark(),i}}enqueueUndoChanges(t){const e=this.undoMarkStack[this.undoMarkStack.length-1];if(e)for(const i of t)e.pendingChanges.push(i)}dispatchCommitEvents(t){const{modified:e,appended:i,erased:r}=Da(this.database,t);for(const a of e)this.dispatchEntityModified(a);i.length>0&&this.database.notifyEntityAppended(i),r.length>0&&this.database.notifyEntityErased(r);const{set:s,erased:o}=Gh(this.database,t);for(const{object:a,key:c}of s)this.database.notifyDictObjectSet(a,c);for(const{object:a,key:c}of o)this.database.notifyDictObjectErased(a,c);for(const a of t)a.kind==="sysvar"&&a.after!==void 0&&yt.instance().events.sysVarChanged.dispatch({database:this.database,name:a.name,oldVal:a.before,newVal:a.after});for(const a of Wh(this.database,t))this.dispatchLayerModified(a)}dispatchUndoRedoEvents(t,e){const{modified:i,appended:r,erased:s}=Da(this.database,t),{set:o,erased:a}=Gh(this.database,t);if(e){for(const c of i)this.dispatchEntityModified(c);s.length>0&&this.database.notifyEntityAppended(s),r.length>0&&this.database.notifyEntityErased(r);for(const{object:c,key:l}of a)this.database.notifyDictObjectSet(c,l);for(const{object:c,key:l}of o)this.database.notifyDictObjectErased(c,l)}else{for(const c of i)this.dispatchEntityModified(c);r.length>0&&this.database.notifyEntityAppended(r),s.length>0&&this.database.notifyEntityErased(s);for(const{object:c,key:l}of o)this.database.notifyDictObjectSet(c,l);for(const{object:c,key:l}of a)this.database.notifyDictObjectErased(c,l)}for(const c of t)if(c.kind==="sysvar"){const l=e?c.after:c.before,h=e?c.before:c.after;h!==void 0&&yt.instance().events.sysVarChanged.dispatch({database:this.database,name:c.name,oldVal:l,newVal:h})}for(const c of Wh(this.database,t,e))this.dispatchLayerModified(c)}dispatchLayerModified(t){if(this.database.isEventBatched()){const e=this._pendingLayerModified.get(t.layer.objectId);if(e){e.changes={...e.changes,...t.changes};return}this._pendingLayerModified.set(t.layer.objectId,{database:t.database,layer:t.layer,changes:{...t.changes}});return}this.database.events.layerModified.dispatch(t)}dispatchEntityModified(t){if(this.database.isEventBatched()){this._pendingEntityModified.add(t);return}this.database.events.entityModified.dispatch({database:this.database,entity:t})}flushPendingLayerModifiedEvents(){if(this._pendingLayerModified.size===0)return;const t=[...this._pendingLayerModified.values()];this._pendingLayerModified.clear();for(const e of t)this.database.events.layerModified.dispatch(e)}flushPendingEntityModifiedEvents(){if(this._pendingEntityModified.size===0)return;const t=[...this._pendingEntityModified];this._pendingEntityModified.clear();for(const e of t)this.database.events.entityModified.dispatch({database:this.database,entity:e})}}const Di=class Di extends At{constructor(){super({objectId:"0"}),this._classes=[],this._handleRegistry=new Map,this._drawNoPlotLayers=!0,this._drawCircleSides=Na,this._eventBatchDepth=0,this._pendingEntityAppended=[],this._pendingEntityErased=[],this._pendingDictObjectSet=[],this._pendingDictObjectErased=[],this._lastOpenError=null,this.events={dictObjetSet:new bt,dictObjectErased:new bt,entityAppended:new bt,entityModified:new bt,entityErased:new bt,layerAppended:new bt,layerModified:new bt,layerErased:new bt,openProgress:new bt,openFailed:new bt},Di._unsavedDrawingSequence+=1,this._dwgname=`Drawing${Di._unsavedDrawingSequence}.dwg`,this._version=new kt("AC1014"),this._dwgCodePage=void 0,this._angbase=0,this._angdir=0,this._aunits=Xt.DecimalDegrees,this._auprec=0,this._lunits=mt.Decimal,this._luprec=4,this._celtscale=1,this._cecolor=new G,this._celtype=wt,this._celweight=exports.AcGiLineWeight.ByLayer,this._cetransparency=new xt,this._clayer="0",this._cmlstyle=De,this._cmlscale=1,this._cmleaderstyle=Fe,this._hpbackgroundcolor=new G(exports.AcCmColorMethod.None),this._hpcolor=this._cecolor.clone(),this._hplayer=".",this._hptransparency=new xt,this._textstyle=ht,this._dimstyle=ht,this._extents=new j,this._insunits=gt.Millimeters,this._unitmode=0,this._measurement=1,this._ltscale=1,this._lwdisplay=!1,this._tilemode=!0,this._psltscale=!0,this._pdmode=0,this._pdsize=0,this._osmode=0,this._orthomode=0,this._comparehatch=ts,this._comparercmargin=es,this._comparetext=ns,this._comparetolerance=is,this._maxHandle=0,this._tables={appIdTable:new zf(this),blockTable:new Lf(this),dimStyleTable:new Nf(this),linetypeTable:new Df(this),textStyleTable:new qi(this),ucsTable:new Ff(this),viewTable:new Xf(this),layerTable:new Bf(this),viewportTable:new Yf(this)},this._objects={dictionary:new dt(this),group:new dt(this),imageDefinition:new dt(this),layerFilter:new dt(this),layerIndex:new dt(this),layout:new Vf(this),mleaderStyle:new dt(this),mlineStyle:new dt(this),sortentsTable:new dt(this),xrecord:new dt(this)},this._layerFilters=new ze,this.transactionManager=new Wf(this),this.registerBootstrapHandles()}get tables(){return this._tables}get classes(){return this._classes}set classes(t){this._classes=t.map(e=>({...e}))}get objects(){return this._objects}get layerFilters(){return this._layerFilters}set layerFilters(t){this._layerFilters=t??new ze}getObjectById(t,e=!1){return t===this.objectId?this:this._handleRegistry.get(t)}createExtensionDictionaryFor(t){const e=t.extensionDictionary;if(e)return e;const i=new dt(this);return i.database=this,i.ownerId=t.objectId,this.commitObjectHandle(i),t.extensionDictionary=i.objectId,i.objectId}isUndoRecording(){return this.transactionManager.isRecording()}openObject(t,e){const i=this.transactionManager.currentTransaction();if(i){const r=i.getObject(t,e);if(r)return r}return this.getObjectById(t)}openObjectForRead(t){return this.openObject(t,ii.kForRead)}openObjectForWrite(t){return this.openObject(t,ii.kForWrite)}openEntityForRead(t){const e=typeof t=="string"?t:t.objectId;return this.openObjectForRead(e)}openEntityForWrite(t){const e=typeof t=="string"?t:t.objectId;return this.openObjectForWrite(e)}runDatabaseEdit(t,e){if(this.isUndoRecording()){e();return}this.transactionManager.runUndoable(t,e)}getRootDictionaries(){return[this.objects.dictionary,this.objects.group,this.objects.imageDefinition,this.objects.layerFilter,this.objects.layerIndex,this.objects.layout,this.objects.mleaderStyle,this.objects.mlineStyle,this.objects.sortentsTable,this.objects.xrecord]}beginEventBatch(){this._eventBatchDepth++}endEventBatch(){this._eventBatchDepth<=0||(this._eventBatchDepth--,this._eventBatchDepth===0&&(this.transactionManager.flushPendingEntityModifiedEvents(),this.transactionManager.flushPendingLayerModifiedEvents(),this.flushEventBatch()))}async endEventBatchChunked(t,e){if(this._eventBatchDepth<=0||(this._eventBatchDepth--,this._eventBatchDepth!==0))return;this.transactionManager.flushPendingEntityModifiedEvents(),this.transactionManager.flushPendingLayerModifiedEvents();const i=this._pendingEntityAppended;this._pendingEntityAppended=[];const r=i.length,s=Math.max(1,t);if(r===0){this.flushEventBatchRemainder();return}let o=0;try{for(let a=0;a<r;a+=s){const c=Math.min(a+s,r),l=i.slice(a,c);this.events.entityAppended.dispatch({database:this,entity:l}),o=c,e&&await e(c,r)}}finally{o<r&&this.events.entityAppended.dispatch({database:this,entity:i.slice(o)}),this.flushEventBatchRemainder()}}isEventBatched(){return this._eventBatchDepth>0}notifyEntityAppended(t){if(this.isEventBatched()){const e=Array.isArray(t)?t:[t];this._pendingEntityAppended.push(...e);return}this.events.entityAppended.dispatch({database:this,entity:t})}notifyEntityErased(t){if(this.isEventBatched()){const e=Array.isArray(t)?t:[t];this._pendingEntityErased.push(...e);return}this.events.entityErased.dispatch({database:this,entity:t})}notifyDictObjectSet(t,e){if(this.isEventBatched()){this._pendingDictObjectSet.push({object:t,key:e});return}this.events.dictObjetSet.dispatch({database:this,object:t,key:e})}notifyDictObjectErased(t,e){if(this.isEventBatched()){this._pendingDictObjectErased.push({object:t,key:e});return}this.events.dictObjectErased.dispatch({database:this,object:t,key:e})}flushEventBatch(){if(this._pendingEntityAppended.length>0){const t=this._pendingEntityAppended;this._pendingEntityAppended=[],this.events.entityAppended.dispatch({database:this,entity:t})}this.flushEventBatchRemainder()}flushEventBatchRemainder(){if(this._pendingEntityErased.length>0){const t=this._pendingEntityErased;this._pendingEntityErased=[],this.events.entityErased.dispatch({database:this,entity:t})}if(this._pendingDictObjectSet.length>0){const t=this._pendingDictObjectSet;this._pendingDictObjectSet=[];for(const{object:e,key:i}of t)this.events.dictObjetSet.dispatch({database:this,object:e,key:i})}if(this._pendingDictObjectErased.length>0){const t=this._pendingDictObjectErased;this._pendingDictObjectErased=[];for(const{object:e,key:i}of t)this.events.dictObjectErased.dispatch({database:this,object:e,key:i})}}get formatter(){return this._formatter??(this._formatter=new Pf(this))}generateHandle(){return this._maxHandleBig!=null?(this._maxHandleBig+=BigInt(1),this._maxHandleBig.toString(16).toUpperCase()):this._maxHandle>=Number.MAX_SAFE_INTEGER?(this._maxHandleBig=BigInt(this._maxHandle),this.generateHandle()):(this._maxHandle++,this._maxHandle.toString(16).toUpperCase())}generateUniqueHandle(){let t=this.generateHandle();for(;this.isHandleTaken(t);)t=this.generateHandle();return t}initializeHandleSeed(t){const e=BigInt("0x"+t);if(e<=BigInt(0))return;const i=e-BigInt(1);if(i<=BigInt(Number.MAX_SAFE_INTEGER)){if(this._maxHandleBig==null){const r=Number(i);r>this._maxHandle&&(this._maxHandle=r)}return}(this._maxHandleBig==null||i>this._maxHandleBig)&&(this._maxHandleBig=i)}adoptExternalHandle(t,e){return this.releaseObjectHandle(t),e&&!e.startsWith(Je)&&!this.isHandleTaken(e)?(t.objectId=e,this.registerObjectHandle(t),this.updateMaxHandle(e),e):this.assignGeneratedHandle(t)}registerObjectHandle(t){const e=t.objectId;!e||e.startsWith(Je)||this._handleRegistry.set(e,t)}releaseObjectHandle(t){const e=t.objectId;!e||e.startsWith(Je)||this._handleRegistry.get(e)===t&&this._handleRegistry.delete(e)}isHandleTaken(t,e){if(!t||t.startsWith(Je))return!1;const i=this._handleRegistry.get(t);return i!==void 0&&i!==e}registerBootstrapHandles(){this._handleRegistry.clear(),this.registerObjectHandle(this);for(const t of[this._tables.blockTable,this._tables.dimStyleTable,this._tables.layerTable,this._tables.linetypeTable,this._tables.appIdTable,this._tables.textStyleTable,this._tables.ucsTable,this._tables.viewTable,this._tables.viewportTable])this.registerObjectHandle(t);for(const t of[this._objects.dictionary,this._objects.group,this._objects.imageDefinition,this._objects.layerFilter,this._objects.layerIndex,this._objects.layout,this._objects.mleaderStyle,this._objects.mlineStyle,this._objects.sortentsTable,this._objects.xrecord])this.registerObjectHandle(t)}assignGeneratedHandle(t){const e=t.objectId;this.releaseObjectHandle(t);const i=this.generateUniqueHandle();if(t.objectId=i,this.registerObjectHandle(t),e&&e!==i){if(this.updateMaxHandle(i),t instanceof ut)for(const r of t.newIterator())r.getAttrWithoutException("ownerId")===e&&(r.ownerId=i);if(t instanceof ue)for(const r of t.newIterator(!0))r.getAttrWithoutException("ownerId")===e&&(r.ownerId=i);if(t instanceof dt)for(const r of t.newIterator())r.getAttrWithoutException("ownerId")===e&&(r.ownerId=i)}return i}updateMaxHandle(t){this.trackMaxHandle(t)}trackMaxHandle(t){if(this._maxHandleBig!=null){if(t.length>=14){const i=BigInt("0x"+t);i>this._maxHandleBig&&(this._maxHandleBig=i)}return}const e=parseInt(t,16);if(!isNaN(e)){if(e>Number.MAX_SAFE_INTEGER){this._maxHandleBig=BigInt("0x"+t);return}e>this._maxHandle&&(this._maxHandle=e)}}commitObjectHandle(t,e){const i=t.getAttrWithoutException("objectId"),r=e!=null&&i!=null&&e(i);if(!i||t.isTemp||r){this.assignGeneratedHandle(t);return}const o=this._handleRegistry.get(i);if(o&&o!==t)if(this.shouldPreserveIncomingHandle(t))this.assignGeneratedHandle(o);else{this.assignGeneratedHandle(t);return}this.registerObjectHandle(t),this.updateMaxHandle(i)}shouldPreserveIncomingHandle(t){return!t.isTemp}get currentSpaceId(){return this._currentSpace||(this._currentSpace=this._tables.blockTable.modelSpace),this._currentSpace.objectId}set currentSpaceId(t){const e=this.tables.blockTable.getIdAt(t);if(e==null)throw new Error(`[AcDbDatabase] The specified block table record id '${t}' doesn't exist in the drawing database!`);this._currentSpace=e}get aunits(){return this._aunits}set aunits(t){this.updateSysVar(T.AUNITS,this._aunits,t??0,e=>{this._aunits=e})}get auprec(){return this._auprec}set auprec(t){this.updateSysVar(T.AUPREC,this._auprec,t??0,e=>{this._auprec=e})}get lunits(){return this._lunits}set lunits(t){this.updateSysVar(T.LUNITS,this._lunits,t??mt.Decimal,e=>{this._lunits=e})}get luprec(){return this._luprec}set luprec(t){this.updateSysVar(T.LUPREC,this._luprec,t??4,e=>{this._luprec=e})}get version(){return this._version}set version(t){this.updateSysVar(T.ACADVER,this._version,new kt(t),e=>{this._version=e})}get dwgCodePage(){return this._dwgCodePage}set dwgCodePage(t){this._dwgCodePage=t!=null&&t.trim()?t.trim():void 0}get insunits(){return this._insunits}set insunits(t){this.updateSysVar(T.INSUNITS,this._insunits,t??4,e=>{this._insunits=e})}get unitmode(){return this._unitmode}set unitmode(t){this.updateSysVar(T.UNITMODE,this._unitmode,t??0,e=>{this._unitmode=e})}get measurement(){return this._measurement}set measurement(t){this.updateSysVar(T.MEASUREMENT,this._measurement,t??1,e=>{this._measurement=e})}get ltscale(){return this._ltscale}set ltscale(t){this.updateSysVar(T.LTSCALE,this._ltscale,t??1,e=>{this._ltscale=e})}get lwdisplay(){return this._lwdisplay}get drawNoPlotLayers(){return this._drawNoPlotLayers}get drawCircleSides(){return this._drawCircleSides}set drawCircleSides(t){this._drawCircleSides=Z.resolveCircleSides(t)}get dwgname(){return this._dwgname}setDwgName(t){const e=t.trim();e&&this.updateSysVar(T.DWGNAME,this._dwgname,e,i=>{this._dwgname=i})}get thumbnailImage(){return this._thumbnailImage}set thumbnailImage(t){if(!t||t.length===0){this._thumbnailImage=void 0;return}this._thumbnailImage=t}isLayerDrawable(t){if(this._drawNoPlotLayers)return!0;const e=this.tables.layerTable.getAt(t);return e==null||e.isPlottable}set lwdisplay(t){this.updateSysVar(T.LWDISPLAY,this._lwdisplay,t??!1,e=>{this._lwdisplay=e})}get tilemode(){return this._tilemode}set tilemode(t){this._tilemode=t}get psltscale(){return this._psltscale}set psltscale(t){this._psltscale=t}get cecolor(){return this._cecolor}set cecolor(t){this.updateSysVar(T.CECOLOR,this._cecolor,t||0,e=>{this._cecolor=e.clone()})}get celtscale(){return this._celtscale}set celtscale(t){this.updateSysVar(T.CELTSCALE,this._celtscale,t??1,e=>{this._celtscale=e})}get celtype(){return this._celtype}set celtype(t){const e=this.normalizeLinetypeName(t??wt);this.updateSysVar(T.CELTYPE,this._celtype,e,i=>{this._celtype=i})}get celweight(){return this._celweight}set celweight(t){this.updateSysVar(T.CELWEIGHT,this._celweight,t??exports.AcGiLineWeight.ByLayer,e=>{this._celweight=e})}get cetransparency(){return this._cetransparency}set cetransparency(t){this.updateSysVar(T.CETRANSPARENCY,this._cetransparency,t??new xt,e=>{this._cetransparency=e.clone()})}get clayer(){return this._clayer}set clayer(t){this.updateSysVar(T.CLAYER,this._clayer,t??"0",e=>{this._clayer=e})}get cmlstyle(){return this._cmlstyle}set cmlstyle(t){this.updateSysVar(T.CMLSTYLE,this._cmlstyle,t??De,e=>{this._cmlstyle=e})}get cmlscale(){return this._cmlscale}set cmlscale(t){this.updateSysVar(T.CMLSCALE,this._cmlscale,t??1,e=>{this._cmlscale=e})}get cmleaderstyle(){return this._cmleaderstyle}set cmleaderstyle(t){this.updateSysVar(T.CMLEADERSTYLE,this._cmleaderstyle,t??Fe,e=>{this._cmleaderstyle=e})}get hpbackgroundcolor(){return this._hpbackgroundcolor}set hpbackgroundcolor(t){this.updateSysVar(T.HPBACKGROUNDCOLOR,this._hpbackgroundcolor,t??new G(exports.AcCmColorMethod.None),e=>{this._hpbackgroundcolor=e.clone()})}get hpcolor(){return this._hpcolor}set hpcolor(t){this.updateSysVar(T.HPCOLOR,this._hpcolor,t??this._cecolor,e=>{this._hpcolor=e.clone()})}get hplayer(){return this._hplayer}set hplayer(t){this.updateSysVar(T.HPLAYER,this._hplayer,t??".",e=>{this._hplayer=e})}get hptransparency(){return this._hptransparency}set hptransparency(t){this.updateSysVar(T.HPTRANSPARENCY,this._hptransparency,t??new xt,e=>{this._hptransparency=e.clone()})}get textstyle(){return this._textstyle}set textstyle(t){this.updateSysVar(T.TEXTSTYLE,this._textstyle,t??ht,e=>{this._textstyle=e})}get dimstyle(){return this._dimstyle}set dimstyle(t){this.updateSysVar(T.DIMSTYLE,this._dimstyle,t??ht,e=>{this._dimstyle=e})}get angbase(){return this._angbase}set angbase(t){this.updateSysVar(T.ANGBASE,this._angbase,t??0,e=>{this._angbase=e})}get angdir(){return this._angdir}set angdir(t){this.updateSysVar(T.ANGDIR,this._angdir,t??0,e=>{this._angdir=e})}get extmax(){return this._extents.max}set extmax(t){if(t){const e=this._extents.max.clone();this._extents.expandByPoint(t),this._extents.max.equals(e)||this.triggerSysVarChangedEvent(T.EXTMAX,e,this._extents.max)}}get extmin(){return this._extents.min}set extmin(t){if(t){const e=this._extents.min.clone();this._extents.expandByPoint(t),this._extents.min.equals(e)||this.triggerSysVarChangedEvent(T.EXTMIN,e,this._extents.min)}}get extents(){return this._extents}get pdmode(){return this._pdmode}set pdmode(t){this.updateSysVar(T.PDMODE,this._pdmode,t??0,e=>{this._pdmode=e})}get pdsize(){return this._pdsize}set pdsize(t){this.updateSysVar(T.PDSIZE,this._pdsize,t??0,e=>{this._pdsize=e})}get osmode(){return this._osmode}set osmode(t){this.updateSysVar(T.OSMODE,this._osmode,t??0,e=>{this._osmode=e})}get orthomode(){return this._orthomode}set orthomode(t){this.updateSysVar(T.ORTHOMODE,this._orthomode,t??0,e=>{this._orthomode=e})}get comparehatch(){return this._comparehatch}set comparehatch(t){const e=xe("COMPAREHATCH",t??ts,lo,ho);this.updateSysVar(T.COMPAREHATCH,this._comparehatch,e,i=>{this._comparehatch=i})}get comparercmargin(){return this._comparercmargin}set comparercmargin(t){const e=xe("COMPARERCMARGIN",t??es,uo,go);this.updateSysVar(T.COMPARERCMARGIN,this._comparercmargin,e,i=>{this._comparercmargin=i})}get comparetext(){return this._comparetext}set comparetext(t){const e=xe("COMPARETEXT",t??ns,fo,po);this.updateSysVar(T.COMPARETEXT,this._comparetext,e,i=>{this._comparetext=i})}get comparetolerance(){return this._comparetolerance}set comparetolerance(t){const e=xe("COMPARETOLERANCE",t??is,mo,yo);this.updateSysVar(T.COMPARETOLERANCE,this._comparetolerance,e,i=>{this._comparetolerance=i})}get lastOpenError(){return this._lastOpenError}async read(t,e,i=Mi.DXF){const r=be.instance.get(i);if(r==null)throw new Error(`Database converter for file type '${i}' isn't registered and can can't read this file!`);this.clear(),this._lastOpenError=null,this._drawNoPlotLayers=(e==null?void 0:e.drawNoPlotLayers)??!0,this.drawCircleSides=(e==null?void 0:e.circleSides)??Na,e!=null&&e.fileName&&this.setDwgName(e.fileName),Fd(this);try{await r.read(t,this,{minimumChunkSize:e&&e.minimumChunkSize||10,progress:this.createConversionProgressHandler(),timeout:e==null?void 0:e.timeout,encoding:e==null?void 0:e.encoding,sysVars:e==null?void 0:e.sysVars})}catch(s){const o=Ft.from(s);throw this._lastOpenError=o,this.events.openFailed.dispatch({database:this,error:o}),o}this._lastOpenError=null,this.ensureDatabaseDefaults()}createConversionProgressHandler(){return async(t,e,i,r,s)=>{let o=r;if(i==="ERROR"&&s){const a=Ft.fromTask(s);this._lastOpenError=a,o={code:a.code,message:a.message,stage:a.stage??e}}this.events.openProgress.dispatch({database:this,percentage:t,stage:"CONVERSION",subStage:e,subStageStatus:i,data:o})}}async openUri(t,e){var g;this.events.openProgress.dispatch({database:this,percentage:0,stage:"FETCH_FILE",subStageStatus:"START"});const i=await fetch(t);if(!i.ok)throw this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"ERROR"}),new Error(`Failed to fetch file '${t}' with HTTP status code '${i.status}'!`);const r=i.headers.get("content-length"),s=r?parseInt(r,10):null;let o=0;const a=(g=i.body)==null?void 0:g.getReader();if(!a)throw new Error("Failed to get response reader");const c=[];for(;;){const{done:f,value:p}=await a.read();if(f)break;if(c.push(p),o+=p.length,s!==null){const m=Math.round(o/s*100);this.events.openProgress.dispatch({database:this,percentage:m,stage:"FETCH_FILE",subStageStatus:"IN-PROGRESS"})}}const l=new Uint8Array(o);let h=0;for(const f of c)l.set(f,h),h+=f.length;const u=this.getFileNameFromUri(t);u&&this.setDwgName(u);const d=u.toLowerCase().split(".").pop();d==="dwg"?await this.read(l.buffer,e,Mi.DWG):d==="dxf"?await this.read(l.buffer,e,Mi.DXF):await this.read(l.buffer,e,d),this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"END"})}dxfOut(t,e=16,i=this.version.name,r=!1){this.ensureDatabaseDefaults(),this._layerFilters.root.getNestedFilters().length>0&&!this.tables.layerTable.extensionDictionary&&(this.tables.layerTable.extensionDictionary=this.generateHandle());const s=typeof r=="boolean"?{saveThumbnailImage:r,format:"ascii"}:{saveThumbnailImage:r.saveThumbnailImage??!1,format:r.format??"ascii"},o=i instanceof kt?i:new kt(i),a=new Ye({database:this,precision:e,version:o,outputFormat:s.format});return this.writeDxfHeaderSection(a),this.writeDxfClassesSection(a),this.writeDxfTablesSection(a,o),this.writeDxfBlocksSection(a),this.writeDxfEntitiesSection(a),this.writeDxfObjectsSection(a),this.writeDxfThumbnailImageSection(a,s.saveThumbnailImage),a.writeStart("EOF"),s.format==="binary"?a.toBinary():a.toString()}async regen(){await new Xg(this).read(null,this,{minimumChunkSize:500,progress:this.createConversionProgressHandler()})}createDefaultData(t={layer:!0,lineType:!0,textStyle:!0,dimStyle:!0,layout:!0}){const e=new Af(this);t.layer&&e.createDefaultLayer(),t.lineType&&e.createDefaultLineType(),t.textStyle&&e.createDefaultTextStyle(),t.dimStyle&&e.createDefaultDimStyle(),t.layout&&e.createDefaultLayout()}ensureEntityStyleDefaults(t){var e;if(t.dxfTypeName==="MLINE"){this.ensureMLineStyle(this._cmlstyle||De);return}if(t.dxfTypeName==="MULTILEADER"){this.ensureMLeaderStyle(this._cmleaderstyle||Fe);return}if(t.dxfTypeName==="HATCH"){const i=t;(e=i.applyPatternDefaultsFromSysVars)==null||e.call(i,this)}}ensureTextStyleDefaults(){this.hasDefaultTextStyle()||this.tables.textStyleTable.add(new wo({name:ht,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}hasDefaultTextStyle(){const t=[ht,"STANDARD"];for(const e of t)if(this.tables.textStyleTable.has(e))return!0;for(const e of this.tables.textStyleTable.newIterator())if(e.name.toUpperCase()===ht.toUpperCase())return!0;return!1}ensureDatabaseDefaults(){if(!this.tables.layerTable.has("0")){const e=new G;e.colorIndex=7,this.tables.layerTable.add(new lr({name:"0",standardFlags:0,linetype:rn,lineWeight:0,isOff:!1,color:e,isPlottable:!0}))}if(this.tables.linetypeTable.has(ve)||this.tables.linetypeTable.add(new sn({name:ve,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has(wt)||this.tables.linetypeTable.add(new sn({name:wt,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has(rn)||this.tables.linetypeTable.add(new sn({name:rn,standardFlag:0,description:"Solid line",totalPatternLength:0})),this.ensureTextStyleDefaults(),this.tables.dimStyleTable.has(ht)||this.tables.dimStyleTable.add(new Gt({name:ht,dimtxsty:ht})),!this.tables.viewportTable.has(ei)){const e=new on;e.name=ei,this.tables.viewportTable.add(e)}this.ensureMLineStyle(this._cmlstyle||De),this.ensureMLeaderStyle(this._cmleaderstyle||Fe);const t=this.tables.blockTable.modelSpace;if(!this.objects.layout.getAt("Model")){const e=new cr;e.layoutName="Model",e.tabOrder=0,e.blockTableRecordId=t.objectId,e.limits.min.copy({x:0,y:0}),e.limits.max.copy({x:1e6,y:1e6}),e.extents.min.copy({x:0,y:0,z:0}),e.extents.max.copy({x:1e6,y:1e6,z:0}),this.objects.layout.setAt(e.layoutName,e),t.layoutId=e.objectId}this.tables.appIdTable.has(Pa)||this.tables.appIdTable.add(new fs(Pa)),this.tables.appIdTable.has(Aa)||this.tables.appIdTable.add(new fs(Aa))}ensureMLineStyle(t){var s;const e=this.objects.mlineStyle,i=t.trim();if(!i||e.getAt(i))return;for(const[o,a]of e.entries())if((o==null?void 0:o.toUpperCase())===i.toUpperCase()||((s=a.styleName)==null?void 0:s.toUpperCase())===i.toUpperCase())return;const r=new jc;r.styleName=i,r.elements=[{offset:.5,color:new G().setByLayer(),lineType:wt},{offset:-.5,color:new G().setByLayer(),lineType:wt}],e.setAt(i,r)}ensureMLeaderStyle(t){const e=this.objects.mleaderStyle,i=t.trim();if(!i||e.getAt(i))return;for(const[a]of e.entries())if((a==null?void 0:a.toUpperCase())===i.toUpperCase())return;const r=new Io;r.unknown1=2,r.maxLeaderSegmentsPoints=2,r.leaderLineColor=new G().setByBlock(),r.textColor=new G().setByBlock(),r.blockColor=new G().setByBlock(),r.alignSpace=4,r.breakSize=3.75,r.enableBlockRotation=!0,r.unknown2=!1;const s=this.tables.linetypeTable.getAt(ve);r.leaderLineTypeId=s==null?void 0:s.objectId;const o=this.tables.textStyleTable.getAt(ht);r.textStyleId=o==null?void 0:o.objectId,e.setAt(i,r)}writeDxfHeaderSection(t){var e;if(t.startSection("HEADER"),t.writeString(9,"$ACADVER"),t.writeString(1,((e=t.version)==null?void 0:e.name)??this.version.name),t.writeString(9,"$HANDSEED"),t.writeString(5,t.nextHandle.toString(16).toUpperCase()),t.writeString(9,"$DWGCODEPAGE"),t.capabilities.supportsUtf8CodePage)t.writeString(3,"UTF-8");else{const i=this._dwgCodePage,r=i&&!/^utf-?8$/i.test(i)?i:"ANSI_1252";t.writeString(3,r)}t.writeString(9,"$INSUNITS"),t.writeInt16(70,this.insunits),t.writeString(9,"$LUNITS"),t.writeInt16(70,this.lunits),t.writeString(9,"$LUPREC"),t.writeInt16(70,this.luprec),t.writeString(9,"$UNITMODE"),t.writeInt16(70,this.unitmode),t.writeString(9,"$MEASUREMENT"),t.writeInt16(70,this.measurement),t.writeString(9,"$LTSCALE"),t.writeDouble(40,this.ltscale),t.capabilities.supportsLineWeight&&(t.writeString(9,"$LWDISPLAY"),t.writeInt16(70,this.lwdisplay?1:0)),t.writeString(9,"$CELTSCALE"),t.writeDouble(40,this.celtscale),t.capabilities.supportsLineWeight&&(t.writeString(9,"$CELWEIGHT"),t.writeLineWeight(370,this.celweight)),t.writeString(9,"$CECOLOR"),t.writeCmColor(this.cecolor),t.writeString(9,"$TILEMODE"),t.writeInt16(70,this.tilemode?1:0),t.writeString(9,"$PSLTSCALE"),t.writeInt16(70,this.psltscale?1:0),t.writeString(9,"$CLAYER"),t.writeString(8,this.clayer),t.writeString(9,"$CELTYPE"),t.writeString(6,this.celtype),t.capabilities.supportsTransparency&&!this.cetransparency.isInvalid&&(t.writeString(9,"$CETRANSPARENCY"),t.writeTransparency(this.cetransparency)),t.writeString(9,"$CMLSTYLE"),t.writeString(2,this.cmlstyle),t.writeString(9,"$CMLSCALE"),t.writeDouble(40,this.cmlscale),t.writeString(9,"$CMLEADERSTYLE"),t.writeString(2,this.cmleaderstyle),this.hpcolor.colorMethod!==exports.AcCmColorMethod.None&&(t.writeString(9,"$HPCOLOR"),t.writeCmColor(this.hpcolor,2)),this.hpbackgroundcolor.colorMethod!==exports.AcCmColorMethod.None&&(t.writeString(9,"$HPBACKGROUNDCOLOR"),t.writeCmColor(this.hpbackgroundcolor,2)),t.writeString(9,"$HPLAYER"),t.writeString(8,this.hplayer),t.capabilities.supportsTransparency&&!this.hptransparency.isInvalid&&(t.writeString(9,"$HPTRANSPARENCY"),t.writeTransparency(this.hptransparency)),t.writeString(9,"$TEXTSTYLE"),t.writeString(7,this.textstyle),t.writeString(9,"$DIMSTYLE"),t.writeString(2,this.dimstyle),t.writeString(9,"$ANGBASE"),t.writeAngle(50,this.angbase),t.writeString(9,"$ANGDIR"),t.writeInt16(70,this.angdir),t.writeString(9,"$AUNITS"),t.writeInt16(70,this.aunits),t.writeString(9,"$AUPREC"),t.writeInt16(70,this.auprec),t.writeString(9,"$EXTMIN"),t.writePoint3d(10,this.extmin),t.writeString(9,"$EXTMAX"),t.writePoint3d(10,this.extmax),t.writeString(9,"$PDMODE"),t.writeInt32(70,this.pdmode),t.writeString(9,"$PDSIZE"),t.writeDouble(40,this.pdsize),t.writeString(9,"$OSMODE"),t.writeInt32(70,this.osmode),t.writeString(9,"$ORTHOMODE"),t.writeInt16(70,this.orthomode),t.endSection()}writeDxfClassesSection(t){if(!(!t.capabilities.supportsClassesSection||this._classes.length===0)){t.startSection("CLASSES");for(const e of this._classes)t.writeStart("CLASS"),t.writeString(1,e.name),t.writeString(2,e.cppClassName),t.writeString(3,e.appName),t.writeInt32(90,e.proxyFlag),t.writeInt32(91,e.instanceCount),t.writeInt8(280,e.wasProxy?1:0),t.writeInt8(281,e.isEntity?1:0);t.endSection()}}writeDxfTablesSection(t,e){t.startSection("TABLES"),this.writeDxfTable(t,"VPORT",this.tables.viewportTable,this.tables.viewportTable.newIterator(),"VPORT"),this.writeDxfTable(t,"VIEW",this.tables.viewTable,this.tables.viewTable.newIterator(),"VIEW"),this.writeDxfTable(t,"UCS",this.tables.ucsTable,this.tables.ucsTable.newIterator(),"UCS"),this.writeDxfTable(t,"LTYPE",this.tables.linetypeTable,this.tables.linetypeTable.newIterator(),"LTYPE"),this.writeDxfTable(t,"LAYER",this.tables.layerTable,this.tables.layerTable.newIterator(),"LAYER"),this.writeDxfTable(t,"STYLE",this.tables.textStyleTable,this.tables.textStyleTable.newIterator(!0),"STYLE"),this.writeDxfTable(t,"APPID",this.tables.appIdTable,this.tables.appIdTable.newIterator(),"APPID"),this.writeDxfTable(t,"DIMSTYLE",this.tables.dimStyleTable,this.tables.dimStyleTable.newIterator(),"DIMSTYLE"),e.capabilities.supportsBlockRecordTable&&this.writeDxfTable(t,"BLOCK_RECORD",this.tables.blockTable,this.tables.blockTable.newIterator(),"BLOCK_RECORD"),t.endSection()}writeDxfBlocksSection(t){t.startSection("BLOCKS");for(const e of this.tables.blockTable.newIterator()){if(e.dxfOutBlockBegin(t),!e.isModelSapce&&!e.isPaperSapce)for(const i of e.newIterator())this.writeDxfEntity(t,i);e.dxfOutBlockEnd(t)}t.endSection()}writeDxfEntitiesSection(t){t.startSection("ENTITIES");for(const e of this.tables.blockTable.newIterator())if(!(!e.isModelSapce&&!e.isPaperSapce))for(const i of e.newIterator())this.writeDxfEntity(t,i);t.endSection()}writeDxfObjectsSection(t){if(!t.capabilities.supportsObjectsSection)return;t.startSection("OBJECTS");const e=this.objects.dictionary;e.ownerId="0";const i=o=>{t.writeStart("DICTIONARY"),o.dxfOut(t,!0)},r=(o,a)=>{e.getAt(o)!==a&&e.setAt(o,a)},s=o=>{e.getAt(o)&&e.remove(o)};r("ACAD_LAYOUT",this.objects.layout),this.objects.group.numEntries>0?r("ACAD_GROUP",this.objects.group):s("ACAD_GROUP"),this.objects.sortentsTable.numEntries>0?r("ACAD_SORTENTS",this.objects.sortentsTable):s("ACAD_SORTENTS"),this.objects.mleaderStyle.numEntries>0?r("ACAD_MLEADERSTYLE",this.objects.mleaderStyle):s("ACAD_MLEADERSTYLE"),this.objects.mlineStyle.numEntries>0?r("ACAD_MLINESTYLE",this.objects.mlineStyle):s("ACAD_MLINESTYLE"),this.objects.imageDefinition.numEntries>0?r("ISM_RASTER_IMAGE_DICT",this.objects.imageDefinition):s("ISM_RASTER_IMAGE_DICT"),this.objects.xrecord.numEntries>0?r("MLIGHT_XRECORD",this.objects.xrecord):s("MLIGHT_XRECORD"),i(e),i(this.objects.layout),this.objects.group.numEntries>0&&i(this.objects.group),this.objects.sortentsTable.numEntries>0&&i(this.objects.sortentsTable),this.objects.mleaderStyle.numEntries>0&&i(this.objects.mleaderStyle),this.objects.mlineStyle.numEntries>0&&i(this.objects.mlineStyle),this.objects.imageDefinition.numEntries>0&&i(this.objects.imageDefinition),this.objects.xrecord.numEntries>0&&i(this.objects.xrecord);for(const[o,a]of this.objects.layout.entries())t.writeStart("LAYOUT"),a.dxfOut(t,!0);for(const[o,a]of this.objects.group.entries())a.name||(a.name=o),t.writeStart("GROUP"),a.dxfOut(t,!0);for(const[o,a]of this.objects.sortentsTable.entries())t.writeStart("SORTENTSTABLE"),a.dxfOut(t,!0);for(const[o,a]of this.objects.imageDefinition.entries())t.writeStart("IMAGEDEF"),a.dxfOut(t,!0);for(const[o,a]of this.objects.layerFilter.entries())t.writeStart("LAYER_FILTER"),a.dxfOut(t,!0);for(const[o,a]of this.objects.layerIndex.entries())t.writeStart("LAYER_INDEX"),a.dxfOut(t,!0);for(const[o,a]of this.objects.mleaderStyle.entries())t.writeStart("MLEADERSTYLE"),a.dxfOut(t,!0);for(const[o,a]of this.objects.mlineStyle.entries())t.writeStart("MLINESTYLE"),a.dxfOut(t,!0);for(const[o,a]of this.objects.xrecord.entries())t.writeStart("XRECORD"),a.dxfOut(t,!0);this.writeAcLyLayerFilterObjects(t),t.endSection()}writeAcLyLayerFilterObjects(t){const e=tf(this._layerFilters);if(e.nodes.length===0)return;const i=[],r=[],s=this.tables.layerTable,o=s.extensionDictionary??this.generateHandle();s.extensionDictionary=o;const a=this.generateHandle(),c=this.generateHandle(),l=[],h=[],u=(f,p,m)=>{const y=this.generateHandle();let b;if(f.children.length>0){const _=this.generateHandle(),w=this.generateHandle(),S=[];for(const P of f.children)S.push({name:P.key,id:u(P,w,!1)});i.push({handle:_,ownerId:y,entries:[{name:ai,id:w}]}),i.push({handle:w,ownerId:_,entries:S}),b=_}return r.push({handle:y,ownerId:p,extensionDictionaryId:b,data:f.data}),m&&h.push({name:f.key,id:y}),y};for(const f of e.nodes)l.push({name:f.key,id:u(f,a,!0)});const d=new Map,g=this.getObjectById(o);if(g instanceof dt)for(const[f,p]of g.entries())d.set(f,p.objectId);d.set(ai,a),d.set(ko,c),i.unshift({handle:o,ownerId:s.objectId,entries:Array.from(d,([f,p])=>({name:f,id:p}))},{handle:a,ownerId:o,entries:l},{handle:c,ownerId:o,entries:h});for(const f of i){t.writeStart("DICTIONARY"),t.writeHandle(5,f.handle),t.writeObjectId(330,f.ownerId),t.writeSubclassMarker("AcDbDictionary"),t.writeInt16(280,1),t.writeInt16(281,1);for(const p of f.entries)t.writeString(3,p.name),t.writeObjectId(350,p.id)}for(const f of r){const p=new Uc;p.objectId=f.handle,p.ownerId=f.ownerId,f.extensionDictionaryId&&(p.extensionDictionary=f.extensionDictionaryId),p.data=ef(f.data),t.writeStart("XRECORD"),p.dxfOut(t)}}writeDxfTable(t,e,i,r,s){const o=[...r];t.startTable(e),i.dxfOut(t);for(const a of o){if(s==="BLOCK_RECORD"&&a instanceof ut){a.dxfOutBlockRecord(t);continue}t.writeStart(s),a.dxfOut(t,!0)}t.endTable()}writeDxfEntity(t,e){if(e instanceof Dt&&!t.capabilities.supportsLwPolyline){t.writeStart("POLYLINE"),e.dxfOutAs2dPolyline(t,!0);return}t.writeStart(e.dxfTypeName),e.dxfOut(t,!0)}writeDxfThumbnailImageSection(t,e=!1){const i=this._thumbnailImage;if(!e||!i||i.length===0||!t.capabilities.supportsObjectsSection)return;const r=127;t.startSection("THUMBNAILIMAGE"),t.writeInt32(90,i.length);for(let s=0;s<i.length;s+=r){const o=i.subarray(s,s+r);t.writeString(310,bo(o))}t.endSection()}clear(){this.transactionManager.clearUndoStack(),this._classes=[],this._tables.blockTable.removeAll(),this._tables.dimStyleTable.removeAll(),this._tables.linetypeTable.removeAll(),this._tables.textStyleTable.removeAll(),this._tables.ucsTable.removeAll(),this._tables.viewTable.removeAll(),this._tables.layerTable.removeAll(),this._tables.viewportTable.removeAll(),this._tables.appIdTable.removeAll(),this._objects.layout.removeAll(),this._objects.group.removeAll(),this._objects.imageDefinition.removeAll(),this._objects.layerFilter.removeAll(),this._objects.layerIndex.removeAll(),this._objects.mleaderStyle.removeAll(),this._objects.mlineStyle.removeAll(),this._objects.sortentsTable.removeAll(),this._objects.xrecord.removeAll(),this._layerFilters=new ze,this._currentSpace=void 0,this._extents.makeEmpty(),this.registerBootstrapHandles()}updateSysVar(t,e,i,r){yt.instance().applyVarMutation(t,e,i,this,()=>r(i))}normalizeLinetypeName(t){const e=t.trim();return e.toUpperCase()==="BYLAYER"?wt:e.toUpperCase()==="BYBLOCK"?ve:e}triggerSysVarChangedEvent(t,e,i){const r=yt.instance(),s=t.toLowerCase();r.getDescriptor(s)!=null&&r.events.sysVarChanged.dispatch({database:this,name:s,oldVal:e,newVal:i})}getFileNameFromUri(t){try{const i=new URL(t).pathname.split("/");return i[i.length-1]||""}catch{return""}}};Di._unsavedDrawingSequence=0;let Fa=Di;class kx{constructor(){this.transactionStack=[]}startTransaction(){const t=new Kc;return this.transactionStack.push(t),t}currentTransaction(){return this.transactionStack[this.transactionStack.length-1]}commitTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to commit.");t.commit()}abortTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to abort.");t.abort()}hasTransaction(){return this.transactionStack.length>0}}const ea=6,gl=class gl extends nt{get dxfTypeName(){return"TOLERANCE"}constructor(){super(),this._location=new x,this._text="",this._dimensionStyle="",this._normal=new A(0,0,1),this._direction=new A(1,0,0)}get location(){return this._location}set location(t){this._location.set(t.x,t.y,t.z??0)}get text(){return this._text}set text(t){this._text=t}get dimensionStyle(){return this._dimensionStyle}set dimensionStyle(t){this._dimensionStyle=t}get normal(){return this._normal}set normal(t){this._normal.set(t.x,t.y,t.z??0),this._normal.lengthSq()>0&&this._normal.normalize()}get direction(){return this._direction}set direction(t){this._direction.set(t.x,t.y,t.z??0),this._direction.lengthSq()>0&&this._direction.normalize()}setOrientation(t,e){return this.normal=t,this.direction=e,this}getBoundingPoints(){return this.getBoundingPolyline().slice(0,4)}getBoundingPolyline(){const{width:t,rowHeight:e,rowCount:i}=this.resolveFrameLayout(),r=e/2,s=r-e*i;return[new x(0,r,0),new x(t,r,0),new x(t,s,0),new x(0,s,0),new x(0,r,0)].map(a=>this.toFrameWcs(a.x,a.y))}get geometricExtents(){const t=new j;for(const e of this.getBoundingPoints())t.expandByPoint(e);return t.isEmpty()&&t.expandByPoint(this._location),t}subGetGripPoints(){return[this._location]}subMoveGripPointsAt(t,e){return Ee(t,e,this._location),this}subGetOsnapPoints(t,e,i,r){t===I.Insertion&&r.push(this._location)}transformBy(t){const e=this.resolveLocalBasis(),i=this._location.clone(),r=i.clone().add(e.xAxis),s=i.clone().add(e.yAxis);i.applyMatrix4(t),r.applyMatrix4(t),s.applyMatrix4(t);const o=new A(r).sub(i),a=new A(s).sub(i);let c=new A().crossVectors(o,a);c.lengthSq()===0?c=this._normal.clone().transformDirection(t):c.normalize();let l=o.clone();return l.lengthSq()===0?l=this._direction.clone().transformDirection(t):l.normalize(),this._location.copy(i),this._normal.copy(c),this._direction.copy(l),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"tolerance",properties:[{name:"text",type:"string",editable:!0,accessor:{get:()=>this.text,set:t=>{this.text=t}}},{name:"dimensionStyle",type:"string",editable:!0,accessor:{get:()=>this.dimensionStyle,set:t=>{this.dimensionStyle=t}}},{name:"textHeight",type:"float",editable:!1,accessor:{get:()=>this.textHeight}}]},{groupName:"geometry",properties:[{name:"locationX",type:"float",editable:!0,accessor:{get:()=>this.location.x,set:t=>{this.location.x=t}}},{name:"locationY",type:"float",editable:!0,accessor:{get:()=>this.location.y,set:t=>{this.location.y=t}}},{name:"locationZ",type:"float",editable:!0,accessor:{get:()=>this.location.z,set:t=>{this.location.z=t}}}]}]}}subWorldDraw(t,e){const r=this.collectFrameLineSegments().map(([o,a])=>t.lines([o,a])),s=this.drawToleranceText(t,e);return r.length>0&&s?t.group([...r,s]):r.length===1?r[0]:r.length>1?t.group(r):s}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbFcf"),this._dimensionStyle&&t.writeString(3,this._dimensionStyle),t.writePoint3d(10,this._location),t.writeString(1,this._text),this._normal.equals(A.Z_AXIS)||t.writeVector3d(210,this._normal),this._direction.equals(A.X_AXIS)||t.writeVector3d(11,this._direction),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFcf");let e=this.location.x,i=this.location.y,r=this.location.z,s=this.normal.x,o=this.normal.y,a=this.normal.z,c=this.direction.x,l=this.direction.y,h=this.direction.z,u=!1,d=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 1:this.text=String(g.value);break;case 3:this.dimensionStyle=String(g.value);break;case 10:e=p;break;case 20:i=p;break;case 30:r=p;break;case 11:c=p,d=!0;break;case 21:l=p,d=!0;break;case 31:h=p,d=!0;break;case 210:s=p,u=!0;break;case 220:o=p,u=!0;break;case 230:a=p,u=!0;break}}return this.location={x:e,y:i,z:r},u&&(this.normal={x:s,y:o,z:a}),d&&(this.direction={x:c,y:l,z:h}),this}get textHeight(){const t=this.resolveDimensionStyle(),e=(t==null?void 0:t.dimtxt)??Gt.DEFAULT_DIM_VALUES.dimtxt,i=(t==null?void 0:t.dimscale)??Gt.DEFAULT_DIM_VALUES.dimscale;return e*i}drawToleranceText(t,e){const i=this.parseToleranceFrame(this._text);if(i.length===0)return;const r=this.resolveFrameLayout(i),s=this.getTextStyle(),o=[];for(let a=0;a<i.length;a++){const c=i[a];let l=r.cellPadding;const h=-r.rowHeight*a;for(let u=0;u<c.cells.length;u++){const d=c.cells[u],g=r.columnWidths[u]??this.textHeight;if(d.trim()){const f=this.toFrameWcs(l+g/2,h),p={text:d,height:this.textHeight,width:1/0,position:f,directionVector:this._direction,attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter,drawingDirection:exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT};o.push(t.mtext(p,s,e))}l+=g+r.columnGap}}if(o.length!==0)return o.length===1?o[0]:t.group(o)}collectFrameLineSegments(){const t=this.parseToleranceFrame(this._text),e=this.resolveFrameLayout(t),{width:i,rowHeight:r,rowCount:s,columnDivisions:o}=e;if(i<=0||r<=0||s<=0)return[];const a=r/2,c=a-r*s,l=[],h=(u,d)=>{l.push([u,d])};h(this.toFrameWcs(0,a),this.toFrameWcs(i,a)),h(this.toFrameWcs(i,a),this.toFrameWcs(i,c)),h(this.toFrameWcs(i,c),this.toFrameWcs(0,c)),h(this.toFrameWcs(0,c),this.toFrameWcs(0,a));for(const u of o)h(this.toFrameWcs(u,a),this.toFrameWcs(u,c));for(let u=1;u<t.length;u++){const d=a-r*u;h(this.toFrameWcs(0,d),this.toFrameWcs(i,d))}return l}toFrameWcs(t,e){const i=this.resolveLocalBasis();return this._location.clone().addScaledVector(i.xAxis,t).addScaledVector(i.yAxis,e)}resolveFrameLayout(t){const e=t??this.parseToleranceFrame(this._text),i=this.textHeight,r=i*2,s=i/2,o=i;if(i<=0||e.length===0)return{width:0,totalHeight:0,rowHeight:0,columnWidths:[],columnDivisions:[],rowCount:0,cellPadding:0,columnGap:0};const a=Math.max(...e.map(d=>d.cells.length),0),c=[];for(let d=0;d<a;d++){let g=i;for(const f of e){const p=f.cells[d]??"";if(!p.trim())continue;const m=Y1(p,i);g=Math.max(g,m)}c.push(g)}const l=[0];let h=s;for(let d=0;d<c.length;d++)h+=c[d],h+=o,l.push(h-s);return{width:l[l.length-1]??0,totalHeight:r*e.length,rowHeight:r,columnWidths:c,columnDivisions:l,rowCount:e.length,cellPadding:s,columnGap:o}}parseToleranceFrame(t){if(!t)return[];const e=this.splitToleranceRows(t);if(e.length===0)return[];if(!t.includes("%%v"))return e.map(s=>({cells:this.parsePipeSeparatedCells(s)}));const i=e.map(s=>{const a=this.splitToleranceTokens(s,"%%v").slice(0,ea);for(;a.length<ea;)a.push("");return a}),r=[0,1];i.some(s=>{var o;return(o=s[2])==null?void 0:o.trim()})&&r.push(2);for(let s=3;s<ea;s++)i.some(o=>{var a;return(a=o[s])==null?void 0:a.trim()})&&r.push(s);return i.map(s=>({cells:r.map(o=>s[o]??"")}))}splitToleranceRows(t){return t.replace(/\^J/g,`
|
|
13
13
|
`).split(/\r\n|\r|\n|\\P/i).map(i=>i.trim()).filter(i=>i.length>0)}splitToleranceTokens(t,e){if(!t)return[];const i=[];let r="",s=0;for(let o=0;o<t.length;){if(t.startsWith(e,o)&&s===0){i.push(r),r="",o+=e.length;continue}const a=t[o];a==="{"?s++:a==="}"&&(s=Math.max(0,s-1)),r+=a,o++}return i.push(r),i}parsePipeSeparatedCells(t){return t?this.splitToleranceTokens(t,"|").filter(i=>i.length>0):[]}resolveLocalBasis(){const t=this._normal.clone();t.lengthSq()===0?t.set(0,0,1):t.normalize();let e=this._direction.clone();e.lengthSq()===0?e.set(1,0,0):e.normalize();let i=new A().crossVectors(t,e);return i.lengthSq()===0&&(e=A.X_AXIS.clone(),i=new A().crossVectors(t,e)),i.normalize(),e=new A().crossVectors(i,t).normalize(),{xAxis:e,yAxis:i,zAxis:t}}resolveDimensionStyle(){const t=this._dimensionStyle.trim(),e=this.tryGetDatabase();if(!(!t||!e))return e.tables.dimStyleTable.getAt(t)}tryGetDatabase(){try{return this.database}catch{return}}getTextStyle(){const t=this.resolveDimensionStyle(),e=(t==null?void 0:t.dimtxsty)??Gt.DEFAULT_DIM_VALUES.dimtxsty??"Standard",i=this.database.tables.textStyleTable.resolveAt(e);if(!i)throw new Error("No valid text style found in text style table.");return i.textStyle}};gl.typeName="Fcf";let ps=gl;const fl=class fl extends nt{constructor(){super(),this._normal=new A(0,0,1),this._annotationHeight=0,this._columnType=0,this._columnCount=0,this._columnFlowReversed=!1,this._columnAutoHeight=!1,this._columnWidth=0,this._columnGutter=0,this._contents="",this._height=0,this._width=0,this._extentsWidth=0,this._lineSpacingFactor=1,this._lineSpacingStyle=0,this._backgroundFill=!1,this._backgroundFillColor=13158600,this._backgroundFillTransparency=1,this._backgroundScaleFactor=1,this._rotation=0,this._styleName="",this._location=new x,this._attachmentPoint=exports.AcGiMTextAttachmentPoint.TopLeft,this._direction=new A(1,0,0),this._drawingDirection=exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT}get dxfTypeName(){return"MTEXT"}get contents(){return this._contents}set contents(t){this._contents=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get extentsWidth(){return this._extentsWidth}set extentsWidth(t){this._extentsWidth=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get lineSpacingFactor(){return this._lineSpacingFactor}set lineSpacingFactor(t){this._lineSpacingFactor=t}get lineSpacingStyle(){return this._lineSpacingStyle}set lineSpacingStyle(t){this._lineSpacingStyle=t}get backgroundFill(){return this._backgroundFill}set backgroundFill(t){this._backgroundFill=t,this._backgroundFillColor=13158600}get backgroundFillColor(){return this._backgroundFillColor}set backgroundFillColor(t){this._backgroundFillColor=t}get backgroundFillTransparency(){return this._backgroundFillTransparency}set backgroundFillTransparency(t){this._backgroundFillTransparency=t}get backgroundScaleFactor(){return this._backgroundScaleFactor}set backgroundScaleFactor(t){this._backgroundScaleFactor=t}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get location(){return this._location}set location(t){this._location.copy(t)}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get direction(){return this._direction}set direction(t){this._direction.copy(t)}get drawingDirection(){return this._drawingDirection}set drawingDirection(t){this._drawingDirection=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get annotationHeight(){return this._annotationHeight}set annotationHeight(t){this._annotationHeight=t}get columnType(){return this._columnType}set columnType(t){this._columnType=t}get columnCount(){return this._columnCount}set columnCount(t){this._columnCount=t}get columnFlowReversed(){return this._columnFlowReversed}set columnFlowReversed(t){this._columnFlowReversed=t}get columnAutoHeight(){return this._columnAutoHeight}set columnAutoHeight(t){this._columnAutoHeight=t}get columnWidth(){return this._columnWidth}set columnWidth(t){this._columnWidth=t}get columnGutter(){return this._columnGutter}set columnGutter(t){this._columnGutter=t}get geometricExtents(){const t=new j,e=this.extentsWidth>0?this.extentsWidth:this.width>0?this.width:Ve(this.contents,this.height),i=kg(this.contents),r=Ig(i,this.height,this.lineSpacingFactor,this.lineSpacingStyle);return Eg(t,this._location,e,r,this.attachmentPoint,this.rotation,this.direction)}subGetGripPoints(){return[this._location]}subMoveGripPointsAt(t,e){return Ee(t,e,this._location),this}subGetOsnapPoints(t,e,i,r){I.Insertion===t&&r.push(this._location)}transformBy(t){const e=this._location.clone(),i=this._direction.lengthSq()>0?this._direction.clone().normalize():new A(Math.cos(this._rotation),Math.sin(this._rotation),0),r=new A(-i.y,i.x,i.z);r.lengthSq()===0&&r.set(0,1,0),r.normalize();const s=e.clone().add(i),o=e.clone().add(r);e.applyMatrix4(t),s.applyMatrix4(t),o.applyMatrix4(t);const a=new A(s).sub(e),c=new A(o).sub(e),l=a.length(),h=c.length();return this._location.copy(e),l>0&&(this._direction.copy(a).normalize(),this._rotation=Math.atan2(this._direction.y,this._direction.x),this._width*=l,this._extentsWidth>0&&(this._extentsWidth*=l)),h>0&&(this._height*=h),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.contents,set:t=>{this.contents=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"attachmentPoint",type:"enum",editable:!0,options:[{label:exports.AcGiMTextAttachmentPoint[1],value:1},{label:exports.AcGiMTextAttachmentPoint[2],value:2},{label:exports.AcGiMTextAttachmentPoint[3],value:3},{label:exports.AcGiMTextAttachmentPoint[4],value:4},{label:exports.AcGiMTextAttachmentPoint[5],value:5},{label:exports.AcGiMTextAttachmentPoint[6],value:6},{label:exports.AcGiMTextAttachmentPoint[7],value:7},{label:exports.AcGiMTextAttachmentPoint[8],value:8},{label:exports.AcGiMTextAttachmentPoint[9],value:9}],accessor:{get:()=>this.attachmentPoint,set:t=>{this.attachmentPoint=t}}},{name:"drawingDirection",type:"enum",editable:!0,options:[{label:exports.AcGiMTextFlowDirection[1],value:1},{label:exports.AcGiMTextFlowDirection[2],value:2},{label:exports.AcGiMTextFlowDirection[3],value:3},{label:exports.AcGiMTextFlowDirection[4],value:4},{label:exports.AcGiMTextFlowDirection[5],value:5}],accessor:{get:()=>this.drawingDirection,set:t=>{this.drawingDirection=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"lineSpacingFactor",type:"float",editable:!0,accessor:{get:()=>this.lineSpacingFactor,set:t=>{this.lineSpacingFactor=t}}},{name:"definedWidth",type:"float",editable:!0,accessor:{get:()=>this.width,set:t=>{this.width=t}}},{name:"directionX",type:"float",editable:!0,accessor:{get:()=>this.direction.x,set:t=>{this.direction.x=t}}},{name:"directionY",type:"float",editable:!0,accessor:{get:()=>this.direction.y,set:t=>{this.direction.y=t}}},{name:"directionZ",type:"float",editable:!0,accessor:{get:()=>this.direction.z,set:t=>{this.direction.z=t}}}]},{groupName:"geometry",properties:[{name:"locationX",type:"float",editable:!0,accessor:{get:()=>this.location.x,set:t=>{this.location.x=t}}},{name:"locationY",type:"float",editable:!0,accessor:{get:()=>this.location.y,set:t=>{this.location.y=t}}},{name:"locationZ",type:"float",editable:!0,accessor:{get:()=>this.location.z,set:t=>{this.location.z=t}}}]}]}}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.styleName);if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}subWorldDraw(t,e){const i={text:this.contents,height:this.height,width:this.width,position:this.location,rotation:this.rotation,directionVector:this.direction,attachmentPoint:this.attachmentPoint,drawingDirection:this.drawingDirection,lineSpaceFactor:this.lineSpacingFactor,lineSpaceStyle:this.lineSpacingStyle};return t.mtext(i,this.getTextStyle(),e)}encodeMTextContentsForDxf(t){return(t??"").replace(/\r\n|\r|\n/g,"\\P")}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMText"),t.writePoint3d(10,this.location),t.writeDouble(40,this.height),t.writeDouble(41,this.width),this.extentsWidth>0&&t.writeDouble(42,this.extentsWidth),t.writeMTextContents(this.encodeMTextContentsForDxf(this.contents??"")),t.writeString(7,this.styleName),t.writeAngle(50,this.rotation),t.writeVector3d(11,this.direction),t.writeInt16(71,this.attachmentPoint),t.writeInt16(72,this.drawingDirection),t.writeInt16(73,this.lineSpacingStyle),t.writeDouble(44,this.lineSpacingFactor),this.backgroundFill&&(t.writeInt16(90,1),t.writeInt32(63,this.backgroundFillColor),t.writeInt32(441,this.backgroundFillTransparency),t.writeDouble(45,this.backgroundScaleFactor)),this.annotationHeight!==0&&t.writeDouble(46,this.annotationHeight),this.columnType!==0&&(t.writeInt16(75,this.columnType),t.writeInt16(76,this.columnCount),t.writeInt16(78,this.columnFlowReversed?1:0),t.writeInt16(79,this.columnAutoHeight?1:0),t.writeDouble(48,this.columnWidth),t.writeDouble(49,this.columnGutter)),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMText");let e=this.location.x,i=this.location.y,r=this.location.z,s=this.direction.x,o=this.direction.y,a=this.direction.z,c=this.normal.x,l=this.normal.y,h=this.normal.z,u=!1;const d=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 10:e=p;break;case 20:i=p;break;case 30:r=p;break;case 11:s=p,u=!0;break;case 21:o=p,u=!0;break;case 31:a=p,u=!0;break;case 1:case 3:d.push(String(g.value));break;case 7:this.styleName=String(g.value);break;case 40:this.height=p;break;case 41:this.width=p;break;case 42:p>0&&(this.extentsWidth=p);break;case 43:break;case 44:this.lineSpacingFactor=p;break;case 45:this.backgroundScaleFactor=p;break;case 46:this.annotationHeight=p;break;case 48:this.columnWidth=p;break;case 49:this.columnGutter=p;break;case 50:this.rotation=C.degToRad(p);break;case 71:this.attachmentPoint=p;break;case 72:this.drawingDirection=p;break;case 73:this.lineSpacingStyle=p;break;case 75:this.columnType=p;break;case 76:this.columnCount=p;break;case 78:this.columnFlowReversed=p!==0;break;case 79:this.columnAutoHeight=p!==0;break;case 90:this.backgroundFill=p!==0;break;case 63:this.backgroundFillColor=p;break;case 441:this.backgroundFillTransparency=p;break;case 101:for(;!t.atEndOfObject&&!t.atEof&&t.readItem(););break;case 210:c=p;break;case 220:l=p;break;case 230:h=p;break;case 100:return t.pushBackItem(g),this.finishMTextDxfIn(d,e,i,r,s,o,a,u,c,l,h),this}}return this.finishMTextDxfIn(d,e,i,r,s,o,a,u,c,l,h),this}finishMTextDxfIn(t,e,i,r,s,o,a,c,l,h,u){t.length>0&&(this.contents=t.join("")),this.location={x:e,y:i,z:r},c&&(this.direction={x:s,y:o,z:a});const d=new A(l,h,u);d.lengthSq()>0&&this.normal.copy(d.normalize())}};fl.typeName="MText";let An=fl;var $f=(n=>(n[n.MText=0]="MText",n[n.Fcf=1]="Fcf",n[n.BlockReference=2]="BlockReference",n[n.NoAnnotation=3]="NoAnnotation",n))($f||{});const pl=class pl extends Et{get dxfTypeName(){return"LEADER"}constructor(){super(),this._isSplined=!1,this._updated=!1,this._hasArrowHead=!1,this._vertices=[],this._dimensionStyle="",this._hasHookLine=!1,this._isHookLineSameDirection=!1,this._annoType=3,this._textHeight=0,this._textWidth=0,this._associatedAnnotation="",this._normal=new A(0,0,1),this._horizontalDirection=new A(1,0,0)}get isSplined(){return this._isSplined}set isSplined(t){this._isSplined=t}get hasArrowHead(){return this._hasArrowHead}set hasArrowHead(t){this._hasArrowHead=t}get hasHookLine(){return this._hasHookLine}set hasHookLine(t){this._hasHookLine=t}get isHookLineSameDirection(){return this._isHookLineSameDirection}set isHookLineSameDirection(t){this._isHookLineSameDirection=t}get numVertices(){return this._vertices.length}get vertices(){return this._vertices.map(t=>t.clone())}get dimensionStyle(){return this._dimensionStyle}set dimensionStyle(t){this._dimensionStyle=t}get annoType(){return this._annoType}set annoType(t){this._annoType=t}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get textWidth(){return this._textWidth}set textWidth(t){this._textWidth=t}get byBlockColor(){return this._byBlockColor}set byBlockColor(t){this._byBlockColor=t}get associatedAnnotation(){return this._associatedAnnotation}set associatedAnnotation(t){this._associatedAnnotation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get horizontalDirection(){return this._horizontalDirection}set horizontalDirection(t){this._horizontalDirection.copy(t)}get offsetFromBlock(){var t;return(t=this._offsetFromBlock)==null?void 0:t.clone()}set offsetFromBlock(t){this._offsetFromBlock=t?new A(t):void 0}get offsetFromAnnotation(){var t;return(t=this._offsetFromAnnotation)==null?void 0:t.clone()}set offsetFromAnnotation(t){this._offsetFromAnnotation=t?new A(t):void 0}appendVertex(t){this._vertices.push(new x().copy(t)),this._updated=!0}setVertexAt(t,e){if(t<0||t>=this._vertices.length)throw new Error("The vertex index is out of range!");return this._vertices[t].copy(e),this._updated=!0,this}vertexAt(t){if(t<0||t>=this._vertices.length)throw new Error("The vertex index is out of range!");return this._vertices[t].clone()}subGetGripPoints(){return this._vertices.map(t=>t.clone())}subMoveGripPointsAt(t,e){return pi(t,e,this._vertices),this}subGetOsnapPoints(t,e,i,r){if(this.numVertices===0)return;if(this.isSplined&&this.splineGeo){switch(t){case I.EndPoint:r.push(this._vertices[0]),r.push(this._vertices[this.numVertices-1]);break;case I.Nearest:r.push(this.splineGeo.nearestPoint(e));break}return}const s=this._vertices;switch(t){case I.EndPoint:r.push(...s);break;case I.MidPoint:case I.Nearest:case I.Perpendicular:{const o=[];for(let a=0;a<s.length-1;a++){const c=[];mi(s[a],s[a+1],t,e,c),o.push(...c)}if(t===I.MidPoint)r.push(...o);else{const a=oe(e,o);a&&r.push(a)}break}}}get geometricExtents(){return this._isSplined&&this.splineGeo?this.splineGeo.calculateBoundingBox():new j().setFromPoints(this.collectDrawPoints())}subGetIntersectCurves(){return this.isSplined&&this.splineGeo?[{kind:"spline",spline:this.splineGeo.clone(),extendable:!1}]:Wt(this._vertices,!1)}get closed(){return!1}set closed(t){}get area(){return 0}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this.transformVector(this._normal,t),this.transformVector(this._horizontalDirection,t),this._offsetFromBlock&&this.transformVector(this._offsetFromBlock,t),this._offsetFromAnnotation&&this.transformVector(this._offsetFromAnnotation,t),this._splineGeo?(this._splineGeo.transform(t),this._updated=!1):this._updated=!0,this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.lines(this.collectDrawPoints(t))}collectDrawPoints(t){if(this.isSplined&&this.splineGeo)return this.splineGeo.tessellate(hr(t));const e=this._vertices.map(i=>i.clone());if(e.length>0&&!this._isSplined){const i=e[e.length-1];if(this.shouldDrawHookLine(i)){const r=this.computeHookLineEndPoint(i);r&&e.push(r)}}return e}shouldDrawHookLine(t){if(this.resolveHookLineLength(t)<=0)return!1;if(this._hasHookLine)return!0;const e=this.resolveAssociatedMText();if(e&&this.resolveHookSpanFromMText(e,t)>0)return!0;if(this._annoType!==0)return!1;const i=this.resolveDimensionStyle();return((i==null?void 0:i.dimtad)??Gt.DEFAULT_DIM_VALUES.dimtad)!==zc.Center}computeHookLineEndPoint(t){const e=this.resolveHookLineLength(t);if(e<=0)return null;const i=this.resolveHookAxis();return t.clone().addScaledVector(i,e)}resolveHookLineLength(t){const e=this.resolveDimensionStyle(),i=((e==null?void 0:e.dimgap)??Gt.DEFAULT_DIM_VALUES.dimgap)*((e==null?void 0:e.dimscale)??Gt.DEFAULT_DIM_VALUES.dimscale);let r=this._textWidth+i;const s=this.resolveAssociatedMText();if(s){const o=this.resolveHookSpanFromMText(s,t);if(o>0)r=Math.max(r,o);else{const a=this.resolveAnnotationWidth(s);a>0&&(r=Math.max(r,a))}}return r}resolveHookAxis(){const t=this._horizontalDirection.clone();t.lengthSq()===0?t.set(1,0,0):t.normalize();const e=this._isHookLineSameDirection?1:-1;return t.multiplyScalar(e),t}resolveHookSpanFromMText(t,e){const i=this.resolveHookAxis(),r=this.resolveMTextLayoutMetrics(t);let s=0;for(const o of j1(r)){const a=(o.x-e.x)*i.x+(o.y-e.y)*i.y+(o.z-e.z)*i.z;a>s&&(s=a)}return s}resolveAnnotationWidth(t){if(t.extentsWidth>0)return t.extentsWidth;const e=Rc(t.contents).split(`
|
|
14
|
-
`);return Math.max(...e.map(i=>Ve(i.trim(),t.height)),0)}resolveMTextLayoutMetrics(t){return z1({contents:t.contents,height:t.height,width:t.width,extentsWidth:t.extentsWidth,lineSpacingFactor:t.lineSpacingFactor,lineSpacingStyle:t.lineSpacingStyle,attachmentPoint:t.attachmentPoint,rotation:t.rotation,direction:t.direction,location:t.location})}scoreMTextAssociation(t,e){const i=this.resolveMTextLayoutMetrics(t),r=Math.max(t.height*2,1),s=Math.max(t.height,1),o=Math.max(i.height,t.height*4,10);return U1(e,i,{padX:r,padYAbove:s,padYBelow:o})}resolveDimensionStyle(){var i;const t=(i=this._dimensionStyle)==null?void 0:i.trim(),e=this.tryGetDatabase();if(!(!t||!e))return e.tables.dimStyleTable.getAt(t)}resolveAssociatedMText(){const t=this.tryGetDatabase();if(!t)return;if(this._associatedAnnotation){const a=t.getObjectById(this._associatedAnnotation);if(a instanceof An)return a}if(this._vertices.length===0)return;const e=this.getAttrWithoutException("ownerId");if(!e)return;const i=t.getObjectById(e);if(!(i instanceof ut))return;const r=this._vertices[this._vertices.length-1];let s,o=Number.POSITIVE_INFINITY;for(const a of i.newIterator()){if(!(a instanceof An))continue;const c=this.scoreMTextAssociation(a,r);c==null||c>=o||(o=c,s=a)}return s}tryGetDatabase(){try{return this.database}catch{return}}get splineGeo(){return this.createSplineIfNeeded(),this._splineGeo}createSplineIfNeeded(){this.isSplined&&this.numVertices>=2&&(this._splineGeo==null||this._updated)&&(this._splineGeo=new Nt(this._vertices,"Uniform"),this._updated=!1)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLeader"),t.writeString(3,this.dimensionStyle),t.writeInt16(71,this.hasArrowHead?1:0),t.writeInt16(72,this.isSplined?1:0),t.writeInt16(73,this.annoType),t.writeInt16(74,this.isHookLineSameDirection?1:0),t.writeInt16(75,this.hasHookLine?1:0),t.writeInt16(76,this.numVertices),this.textHeight!==0&&t.writeDouble(40,this.textHeight),this.textWidth!==0&&t.writeDouble(41,this.textWidth),this.byBlockColor!=null&&t.writeInt16(77,this.byBlockColor),this.associatedAnnotation&&t.writeHandle(340,this.associatedAnnotation);for(const e of this.vertices)t.writePoint3d(10,e);return t.writeVector3d(210,this.normal),t.writeVector3d(211,this.horizontalDirection),this._offsetFromBlock&&t.writeVector3d(212,this._offsetFromBlock),this._offsetFromAnnotation&&t.writeVector3d(213,this._offsetFromAnnotation),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLeader"),this._vertices.length=0;let e=null,i=this.normal.x,r=this.normal.y,s=this.normal.z,o=this.horizontalDirection.x,a=this.horizontalDirection.y,c=this.horizontalDirection.z,l=0,h=0,u=0,d=0,g=0,f=0,p=!1,m=!1;const y=()=>{e&&(this.appendVertex(e),e=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const b=t.readItem();if(!b)break;const _=Number(b.code),w=Number(b.value);switch(_){case 3:this.dimensionStyle=String(b.value);break;case 10:y(),e={x:w,y:0,z:0};break;case 20:e&&(e.y=w);break;case 30:e&&(e.z=w);break;case 40:this.textHeight=w;break;case 41:this.textWidth=w;break;case 71:this.hasArrowHead=w!==0;break;case 72:this.isSplined=w!==0;break;case 73:this.annoType=w;break;case 74:this.isHookLineSameDirection=w!==0;break;case 75:this.hasHookLine=w!==0;break;case 76:break;case 77:this.byBlockColor=w;break;case 210:i=w;break;case 220:r=w;break;case 230:s=w;break;case 211:o=w;break;case 221:a=w;break;case 231:c=w;break;case 212:l=w,p=!0;break;case 222:h=w,p=!0;break;case 232:u=w,p=!0;break;case 213:d=w,m=!0;break;case 223:g=w,m=!0;break;case 233:f=w,m=!0;break;case 340:this.associatedAnnotation=String(b.value);break}}return y(),this.normal={x:i,y:r,z:s},this.horizontalDirection={x:o,y:a,z:c},p&&(this.offsetFromBlock={x:l,y:h,z:u}),m&&(this.offsetFromAnnotation={x:d,y:g,z:f}),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d();return e.length<2?1:Dt.from2dPoints(e,!1).getOffsetSideAtPoint(t)}createOffsetCurve(t){return Eo(this.collectPath2d(),!1,t)}collectPath2d(){return this.isSplined&&this.splineGeo?this.splineGeo.getPoints(64).map(t=>new M(t.x,t.y)):this._vertices.map(t=>new M(t.x,t.y))}transformVector(t,e){const i=new x,r=new x(t.x,t.y,t.z);i.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-i.x,r.y-i.y,r.z-i.z)}};pl.typeName="Leader";let ms=pl;const $h=new x,qh=new x,to=class to extends Et{constructor(t,e){super(),this._geoData=null,this._normal=null,this._thickness=0,t!==void 0&&e!==void 0&&(this._geo=new Ct(t,e))}get dxfTypeName(){return"LINE"}get _geo(){return this._geoData==null&&(this._geoData=new Ct(new x,new x)),this._geoData}set _geo(t){this._geoData=t}get startPoint(){return this._geo.startPoint}set startPoint(t){this._geo.startPoint=t}get endPoint(){return this._geo.endPoint}set endPoint(t){this._geo.endPoint=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){let t=this._normal;return t==null&&(t=new A(0,0,1),this._normal=t),t}set normal(t){this.normal.copy(t).normalize()}get midPoint(){return this._geo.midPoint}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"line",line:this._geo.clone(),extent:"bounded"}]}get closed(){return!1}get area(){return 0}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"startX",type:"float",editable:!0,accessor:{get:()=>this.startPoint.x,set:t=>{this.startPoint.x=t}}},{name:"startY",type:"float",editable:!0,accessor:{get:()=>this.startPoint.y,set:t=>{this.startPoint.y=t}}},{name:"startZ",type:"float",editable:!0,accessor:{get:()=>this.startPoint.z,set:t=>{this.startPoint.z=t}}},{name:"endX",type:"float",editable:!0,accessor:{get:()=>this.endPoint.x,set:t=>{this.endPoint.x=t}}},{name:"endY",type:"float",editable:!0,accessor:{get:()=>this.endPoint.y,set:t=>{this.endPoint.y=t}}},{name:"endZ",type:"float",editable:!0,accessor:{get:()=>this.endPoint.z,set:t=>{this.endPoint.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.midPoint),t.push(this.startPoint),t.push(this.endPoint),t}subMoveGripPointsAt(t,e){return Pt(t,i=>{switch(i){case 0:this.transformBy(F.makeTranslation(e));break;case 1:this.startPoint.add(e);break;case 2:this.endPoint.add(e);break}}),this}subGetOsnapPoints(t,e,i,r){const s=this.startPoint,o=this.endPoint;switch(t){case I.EndPoint:r.push(s),r.push(o);break;case I.MidPoint:r.push(this.midPoint);break;case I.Nearest:{const a=this._geo.project(e);r.push(a)}break;case I.Perpendicular:{const a=this._geo.perpPoint(e);r.push(a)}break;case I.Tangent:break}}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this.startPoint,i=this.endPoint,r=[new x(e.x,e.y,0),new x(i.x,i.y,0)];return t.lines(r)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLine"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,this.startPoint),t.writePoint3d(11,this.endPoint),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLine");let e=0,i=0,r=0,s=0,o=0,a=0,c=this.thickness,l=0,h=0,u=1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const d=t.readItem();if(!d)break;const g=Number(d.code),f=Number(d.value);switch(g){case 10:e=f;break;case 20:i=f;break;case 30:r=f;break;case 11:s=f;break;case 21:o=f;break;case 31:a=f;break;case 39:c=f;break;case 210:l=f;break;case 220:h=f;break;case 230:u=f;break}}return(l!==0||h!==0||u!==1)&&l*l+h*h+u*u>0&&this.normal.set(l,h,u).normalize(),this.thickness=c,$h.set(e,i,r),qh.set(s,o,a),this._geo=new Ct($h,qh),this}getOffsetCurves(t){const e=this._geo.offset(t);return[new to(e.startPoint,e.endPoint)]}getOffsetSideAtPoint(t){const e=this.startPoint,i=this.endPoint;return(i.x-e.x)*(t.y-e.y)-(i.y-e.y)*(t.x-e.x)>=0?1:-1}};to.typeName="Line";let Ki=to;var Oi=(n=>(n[n.InvisibleLeader=0]="InvisibleLeader",n[n.StraightLeader=1]="StraightLeader",n[n.SplineLeader=2]="SplineLeader",n))(Oi||{}),Dn=(n=>(n[n.NoneContent=0]="NoneContent",n[n.BlockContent=1]="BlockContent",n[n.MTextContent=2]="MTextContent",n[n.ToleranceContent=3]="ToleranceContent",n))(Dn||{}),qf=(n=>(n[n.Horizontal=0]="Horizontal",n[n.Vertical=1]="Vertical",n))(qf||{}),Kf=(n=>(n[n.Unknown=0]="Unknown",n[n.Left=1]="Left",n[n.Right=2]="Right",n[n.Top=3]="Top",n[n.Bottom=4]="Bottom",n))(Kf||{});const Ix=1,Ex=2,Tx=4,Lx=8,Mx=64,Cx=128,Ox=32768,ml=class ml extends nt{get dxfTypeName(){return"MULTILEADER"}constructor(){super(),this._leaders=[],this._leaderLineType=1,this._contentType=0,this._doglegEnabled=!1,this._doglegLength=0,this._doglegVector=new A(1,0,0),this._normal=new A(0,0,1),this._mleaderStyleId="",this._textHeight=2.5,this._textWidth=0,this._textRotation=0,this._textDirection=new A(1,0,0),this._textStyleName="",this._textAttachmentPoint=exports.AcGiMTextAttachmentPoint.MiddleLeft,this._textDrawingDirection=exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT,this._textLineSpacingFactor=1,this._textAttachmentDirection=0,this._arrowheadOverrides=[],this._blockAttributes=[]}get leaders(){return this._leaders.map(t=>this.cloneLeader(t))}get numberOfLeaders(){return this._leaders.length}get leaderLineType(){return this._leaderLineType}set leaderLineType(t){this._leaderLineType=t}get contentType(){return this._contentType}set contentType(t){this._contentType=t}get doglegEnabled(){return this._doglegEnabled}set doglegEnabled(t){this._doglegEnabled=t}get doglegLength(){return this._doglegLength}set doglegLength(t){this._doglegLength=t}get doglegVector(){return this._doglegVector}set doglegVector(t){this._doglegVector.copy(t)}get landingPoint(){return this._landingPoint}set landingPoint(t){this._landingPoint=t?this.createPoint(t):void 0}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get mleaderStyleId(){return this._mleaderStyleId}set mleaderStyleId(t){this._mleaderStyleId=t}get version(){return this._version}set version(t){this._version=t}get leaderStyleId(){return this._leaderStyleId}set leaderStyleId(t){this._leaderStyleId=t}get propertyOverrideFlag(){return this._propertyOverrideFlag}set propertyOverrideFlag(t){this._propertyOverrideFlag=t}get leaderLineColor(){return this._leaderLineColor}set leaderLineColor(t){this._leaderLineColor=t==null?void 0:t.clone()}get leaderLineTypeId(){return this._leaderLineTypeId}set leaderLineTypeId(t){this._leaderLineTypeId=t}get leaderLineWeight(){return this._leaderLineWeight}set leaderLineWeight(t){this._leaderLineWeight=t}get landingEnabled(){return this._landingEnabled}set landingEnabled(t){this._landingEnabled=t}get arrowheadId(){return this._arrowheadId}set arrowheadId(t){this._arrowheadId=t}get arrowheadSize(){return this._arrowheadSize}set arrowheadSize(t){this._arrowheadSize=t}get textStyleId(){return this._textStyleId}set textStyleId(t){this._textStyleId=t}get textLeftAttachmentType(){return this._textLeftAttachmentType}set textLeftAttachmentType(t){this._textLeftAttachmentType=t}get textRightAttachmentType(){return this._textRightAttachmentType}set textRightAttachmentType(t){this._textRightAttachmentType=t}get textAngleType(){return this._textAngleType}set textAngleType(t){this._textAngleType=t}get textAlignmentType(){return this._textAlignmentType}set textAlignmentType(t){this._textAlignmentType=t}get textColor(){return this._textColor}set textColor(t){this._textColor=t==null?void 0:t.clone()}get textFrameEnabled(){return this._textFrameEnabled}set textFrameEnabled(t){this._textFrameEnabled=t}get landingGap(){return this._landingGap}set landingGap(t){this._landingGap=t}get textAttachment(){return this._textAttachment}set textAttachment(t){this._textAttachment=t}get textFlowDirection(){return this._textFlowDirection}set textFlowDirection(t){this._textFlowDirection=t}get blockContentId(){return this._blockContentId}set blockContentId(t){this._blockContentId=t}get blockContentColor(){return this._blockContentColor}set blockContentColor(t){this._blockContentColor=t==null?void 0:t.clone()}get blockContentScale(){return this._blockContentScale}set blockContentScale(t){this._blockContentScale=t}get blockContentRotation(){return this._blockContentRotation}set blockContentRotation(t){this._blockContentRotation=t}get blockContentConnectionType(){return this._blockContentConnectionType}set blockContentConnectionType(t){this._blockContentConnectionType=t}get annotativeScaleEnabled(){return this._annotativeScaleEnabled}set annotativeScaleEnabled(t){this._annotativeScaleEnabled=t}get arrowheadOverrides(){return this._arrowheadOverrides}set arrowheadOverrides(t){this._arrowheadOverrides=t}get blockAttributes(){return this._blockAttributes}set blockAttributes(t){this._blockAttributes=t}get textDirectionNegative(){return this._textDirectionNegative}set textDirectionNegative(t){this._textDirectionNegative=t}get textAlignInIPE(){return this._textAlignInIPE}set textAlignInIPE(t){this._textAlignInIPE=t}get bottomTextAttachmentDirection(){return this._bottomTextAttachmentDirection}set bottomTextAttachmentDirection(t){this._bottomTextAttachmentDirection=t}get topTextAttachmentDirection(){return this._topTextAttachmentDirection}set topTextAttachmentDirection(t){this._topTextAttachmentDirection=t}get contentScale(){return this._contentScale}set contentScale(t){this._contentScale=t}get contentBasePosition(){return this._contentBasePosition}set contentBasePosition(t){this._contentBasePosition=t}get textAnchor(){return this._textAnchor}set textAnchor(t){this._textAnchor=t}get textLineSpacingStyle(){return this._textLineSpacingStyle}set textLineSpacingStyle(t){this._textLineSpacingStyle=t}get textBackgroundColor(){return this._textBackgroundColor}set textBackgroundColor(t){this._textBackgroundColor=t==null?void 0:t.clone()}get textBackgroundScaleFactor(){return this._textBackgroundScaleFactor}set textBackgroundScaleFactor(t){this._textBackgroundScaleFactor=t}get textBackgroundTransparency(){return this._textBackgroundTransparency}set textBackgroundTransparency(t){this._textBackgroundTransparency=t}get textBackgroundColorOn(){return this._textBackgroundColorOn}set textBackgroundColorOn(t){this._textBackgroundColorOn=t}get textFillOn(){return this._textFillOn}set textFillOn(t){this._textFillOn=t}get textColumnType(){return this._textColumnType}set textColumnType(t){this._textColumnType=t}get textUseAutoHeight(){return this._textUseAutoHeight}set textUseAutoHeight(t){this._textUseAutoHeight=t}get textColumnWidth(){return this._textColumnWidth}set textColumnWidth(t){this._textColumnWidth=t}get textColumnGutterWidth(){return this._textColumnGutterWidth}set textColumnGutterWidth(t){this._textColumnGutterWidth=t}get textColumnFlowReversed(){return this._textColumnFlowReversed}set textColumnFlowReversed(t){this._textColumnFlowReversed=t}get textColumnHeight(){return this._textColumnHeight}set textColumnHeight(t){this._textColumnHeight=t}get textUseWordBreak(){return this._textUseWordBreak}set textUseWordBreak(t){this._textUseWordBreak=t}get hasMText(){return this._hasMText}set hasMText(t){this._hasMText=t}get hasBlock(){return this._hasBlock}set hasBlock(t){this._hasBlock=t}get planeOrigin(){return this._planeOrigin}set planeOrigin(t){this._planeOrigin=t}get planeXAxisDirection(){return this._planeXAxisDirection}set planeXAxisDirection(t){this._planeXAxisDirection=t}get planeYAxisDirection(){return this._planeYAxisDirection}set planeYAxisDirection(t){this._planeYAxisDirection=t}get planeNormalReversed(){return this._planeNormalReversed}set planeNormalReversed(t){this._planeNormalReversed=t}get leaderSections(){return this.leaders}get blockContentData(){return this.blockContent}get mtextContent(){return this._mtextContent?{text:this._mtextContent.text,anchorPoint:this._mtextContent.anchorPoint.clone()}:void 0}set mtextContent(t){if(!t){this._mtextContent=void 0,this._contentType===2&&(this._contentType=0);return}this._mtextContent={text:t.text,anchorPoint:this.createPoint(t.anchorPoint)},this._contentType=2}get contents(){var t;return((t=this._mtextContent)==null?void 0:t.text)??""}set contents(t){this._mtextContent?this._mtextContent.text=t:this._mtextContent={text:t,anchorPoint:new x},this._contentType=2}get textLocation(){var t;return(t=this._mtextContent)==null?void 0:t.anchorPoint}set textLocation(t){if(!t){this._mtextContent=void 0;return}this._mtextContent?this._mtextContent.anchorPoint.copy(t):this._mtextContent={text:"",anchorPoint:this.createPoint(t)},this._contentType=2}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get textWidth(){return this._textWidth}set textWidth(t){this._textWidth=t}get textRotation(){return this._textRotation}set textRotation(t){this._textRotation=t}get textDirection(){return this._textDirection}set textDirection(t){this._textDirection.copy(t)}get textStyleName(){return this._textStyleName}set textStyleName(t){this._textStyleName=t}get textAttachmentPoint(){return this._textAttachmentPoint}set textAttachmentPoint(t){this._textAttachmentPoint=t}get textDrawingDirection(){return this._textDrawingDirection}set textDrawingDirection(t){this._textDrawingDirection=t}get textLineSpacingFactor(){return this._textLineSpacingFactor}set textLineSpacingFactor(t){this._textLineSpacingFactor=t}get textAttachmentDirection(){return this._textAttachmentDirection}set textAttachmentDirection(t){this._textAttachmentDirection=t}get blockContent(){var t,e,i;return this._blockContent?{blockContentId:this._blockContent.blockContentId,blockHandle:this._blockContent.blockHandle,normal:(t=this._blockContent.normal)==null?void 0:t.clone(),position:(e=this._blockContent.position)==null?void 0:e.clone(),scale:this._blockContent.scale.clone(),rotation:this._blockContent.rotation,color:(i=this._blockContent.color)==null?void 0:i.clone(),transformationMatrix:[...this._blockContent.transformationMatrix]}:void 0}set blockContent(t){var e;if(!t){this._blockContent=void 0,this._contentType===1&&(this._contentType=0);return}this._blockContent={blockContentId:t.blockContentId??t.blockHandle,blockHandle:t.blockHandle,normal:t.normal?new A(t.normal):void 0,position:t.position?this.createPoint(t.position):void 0,scale:new A(t.scale??{x:1,y:1,z:1}),rotation:t.rotation??0,color:(e=t.color)==null?void 0:e.clone(),transformationMatrix:t.transformationMatrix?[...t.transformationMatrix]:[]},this.blockContentId=this._blockContent.blockContentId,this._contentType=1}addLeader(t={}){var i,r;const e={lastLeaderLinePoint:t.lastLeaderLinePoint?this.createPoint(t.lastLeaderLinePoint):void 0,lastLeaderLinePointSet:t.lastLeaderLinePointSet,landingPoint:t.landingPoint?this.createPoint(t.landingPoint):void 0,doglegVector:t.doglegVector?new A(t.doglegVector):void 0,doglegVectorSet:t.doglegVectorSet,doglegLength:t.doglegLength,breaks:((i=t.breaks)==null?void 0:i.map(s=>({index:s.index,start:this.createPoint(s.start),end:this.createPoint(s.end)})))??[],leaderBranchIndex:t.leaderBranchIndex,directionType:t.directionType,leaderLines:[]};return(r=t.leaderLines)==null||r.forEach(s=>{e.leaderLines.push(this.createLeaderLine(s))}),this._leaders.push(e),this._leaders.length-1}removeLeader(t){return this.checkLeaderIndex(t),this._leaders.splice(t,1),this}addLeaderLine(t,e=[]){return this.checkLeaderIndex(t),this._leaders[t].leaderLines.push(this.createLeaderLine({vertices:e})),this._leaders[t].leaderLines.length-1}appendVertex(t,e,i){return this.getMutableLeaderLine(t,e).vertices.push(this.createPoint(i)),this}setLeaderLineVertices(t,e,i){return this.getMutableLeaderLine(t,e).vertices=i.map(r=>this.createPoint(r)),this}getLeaderLineVertices(t,e){return this.getMutableLeaderLine(t,e).vertices.map(i=>i.clone())}addBreak(t,e,i,r){return this.getMutableLeaderLine(t,e).breaks.push({start:this.createPoint(i),end:this.createPoint(r)}),this}setLandingPoint(t,e){return this.checkLeaderIndex(t),this._leaders[t].landingPoint=e?this.createPoint(e):void 0,this}setDoglegDirection(t,e){return this.checkLeaderIndex(t),this._leaders[t].doglegVector=new A(e),this}setDoglegLength(t,e){return this.checkLeaderIndex(t),this._leaders[t].doglegLength=e,this}get geometricExtents(){const t=this.collectGeometryPoints();return t.length>0?new j().setFromPoints(t):new j}subGetIntersectCurves(){const t=[];return this._leaders.forEach(e=>{e.leaderLines.forEach(i=>{t.push(...Wt(i.vertices,!1))})}),t}subGetGripPoints(){return this.collectGeometryPoints().map(t=>t.clone())}subMoveGripPointsAt(t,e){return Pt(t,i=>{this.moveGeometryGripPointAt(i,e)}),this}subGetOsnapPoints(t,e,i,r){var s;if(t===I.Insertion){this.contentBasePosition?r.push(this.contentBasePosition):this._mtextContent?r.push(this._mtextContent.anchorPoint):(s=this._blockContent)!=null&&s.position&&r.push(this._blockContent.position);return}this._leaders.forEach(o=>{o.leaderLines.forEach(a=>{const c=this.getLeaderLineDrawPoints(o,a);if(c.length!==0)switch(t){case I.EndPoint:r.push(...c);break;case I.MidPoint:case I.Nearest:case I.Perpendicular:{const l=[];for(let h=0;h<c.length-1;h++){const u=[];mi(c[h],c[h+1],t,e,u),l.push(...u)}if(t===I.MidPoint)r.push(...l);else{const h=oe(e,l);h&&r.push(h)}break}}})})}transformBy(t){var e,i,r,s,o,a,c,l;return this._leaders.forEach(h=>{var u,d;(u=h.lastLeaderLinePoint)==null||u.applyMatrix4(t),(d=h.landingPoint)==null||d.applyMatrix4(t),h.doglegVector&&this.transformVector(h.doglegVector,t),h.breaks.forEach(g=>{g.start.applyMatrix4(t),g.end.applyMatrix4(t)}),h.leaderLines.forEach(g=>{g.vertices.forEach(f=>f.applyMatrix4(t)),g.breaks.forEach(f=>{f.start.applyMatrix4(t),f.end.applyMatrix4(t)})})}),(e=this._landingPoint)==null||e.applyMatrix4(t),(i=this.contentBasePosition)==null||i.applyMatrix4(t),this.transformVector(this._doglegVector,t),this.transformVector(this._normal,t),(r=this.textAnchor)==null||r.applyMatrix4(t),(s=this._mtextContent)==null||s.anchorPoint.applyMatrix4(t),this.transformVector(this._textDirection,t),(a=(o=this._blockContent)==null?void 0:o.position)==null||a.applyMatrix4(t),(c=this._blockContent)!=null&&c.normal&&this.transformVector(this._blockContent.normal,t),this.blockContentScale&&this.transformVector(this.blockContentScale,t),(l=this.planeOrigin)==null||l.applyMatrix4(t),this.planeXAxisDirection&&this.transformVector(this.planeXAxisDirection,t),this.planeYAxisDirection&&this.transformVector(this.planeYAxisDirection,t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"leader",properties:[{name:"contentType",type:"enum",editable:!0,options:[{label:Dn[0],value:0},{label:Dn[1],value:1},{label:Dn[2],value:2},{label:Dn[3],value:3}],accessor:{get:()=>this.contentType,set:t=>{this.contentType=t}}},{name:"leaderLineType",type:"enum",editable:!0,options:[{label:Oi[0],value:0},{label:Oi[1],value:1},{label:Oi[2],value:2}],accessor:{get:()=>this.leaderLineType,set:t=>{this.leaderLineType=t}}},{name:"doglegEnabled",type:"boolean",editable:!0,accessor:{get:()=>this.doglegEnabled,set:t=>{this.doglegEnabled=t}}},{name:"doglegLength",type:"float",editable:!0,accessor:{get:()=>this.doglegLength,set:t=>{this.doglegLength=t}}},{name:"leaderCount",type:"int",editable:!1,accessor:{get:()=>this.numberOfLeaders}}]},{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.contents,set:t=>{this.contents=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.textHeight,set:t=>{this.textHeight=t}}},{name:"textWidth",type:"float",editable:!0,accessor:{get:()=>this.textWidth,set:t=>{this.textWidth=t}}},{name:"textStyleName",type:"string",editable:!0,accessor:{get:()=>this.textStyleName,set:t=>{this.textStyleName=t}}}]}]}}resolveEffectiveProperties(){if(super.resolveEffectiveProperties(),this._mleaderStyleId)return;const t=this.getDefaultMLeaderStyle();t&&(this._mleaderStyleId=t.objectId)}subWorldDraw(t,e){const i=[],r=t.subEntityTraits,s=r.color,o=r.lineType,a=r.lineWeight,c=this.getResolvedLeaderLineColor(),l=this.getResolvedLeaderLineStyle(),h=this.getResolvedLeaderLineWeight(),u=this.getResolvedTextColor();this.getResolvedLeaderLineType()!==0&&(this.applyColorTraits(r,c,s),this.applyLineTraits(r,l,h),this._leaders.forEach(f=>{f.leaderLines.forEach(m=>{const y=this.getLeaderLineDrawPoints(f,m);if(y.length>0){const b=this.drawLeaderLine(t,y);b&&i.push(b)}});const p=this.getDoglegPoints(f);p&&i.push(t.lines(p))}));const d=this.getRenderableMTextContent();if(!!d&&(this.contentType===2||this.contentType===0||this.hasMText===!0)&&d){this.applyColorTraits(r,u,s);const f=this.getResolvedTextHeight(),p={text:d.text,height:f,width:this.getMTextRenderWidth(d.text,f),position:d.anchorPoint,rotation:this.textRotation,directionVector:this.textDirection,attachmentPoint:this.textAttachmentPoint,drawingDirection:this.textDrawingDirection,lineSpaceFactor:this.textLineSpacingFactor,lineSpaceStyle:this.textLineSpacingStyle};i.push(t.mtext(p,this.getTextStyle(),e))}if(r.color=s,r.lineType=o,r.lineWeight=a,i.length!==0)return i.length===1?i[0]:t.group(i)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMLeader"),t.writeInt16(170,this.leaderLineType),t.writeBoolean(290,this.doglegEnabled),t.writeDouble(41,this.doglegLength),t.writeInt16(172,this.contentType),t.writeVector3d(210,this.normal),t.writeHandle(340,this.mleaderStyleId),this._landingPoint&&t.writePoint3d(10,this._landingPoint),t.writeVector3d(11,this.doglegVector),this._mtextContent&&(t.writeString(1,this._mtextContent.text),t.writePoint3d(12,this._mtextContent.anchorPoint),t.writeDouble(40,this.textHeight),t.writeDouble(42,this.textWidth),t.writeAngle(50,this.textRotation),t.writeString(7,this.textStyleName)),this._blockContent&&(t.writeHandle(341,this._blockContent.blockContentId??""),this._blockContent.position&&t.writePoint3d(15,this._blockContent.position),t.writeVector3d(16,this._blockContent.scale),t.writeAngle(52,this._blockContent.rotation)),this._leaders.forEach(e=>{e.landingPoint&&t.writePoint3d(110,e.landingPoint),e.doglegVector&&t.writeVector3d(111,e.doglegVector),t.writeDouble(140,e.doglegLength),t.writeInt16(171,e.leaderLines.length),e.leaderLines.forEach(i=>{t.writeInt16(90,i.vertices.length),i.vertices.forEach(r=>t.writePoint3d(10,r))})}),this}dxfInFields(t){var k,L,O,R,N,it,$,U,J,E,W,st,D,Ot,$t;super.dxfInFields(t),t.atSubclassData("AcDbMLeader"),this._leaders.length=0;let e=(k=this._mtextContent)==null?void 0:k.text,i=(O=(L=this._mtextContent)==null?void 0:L.anchorPoint)==null?void 0:O.clone(),r=!!this._mtextContent,s=(R=this._blockContent)==null?void 0:R.blockContentId,o=(it=(N=this._blockContent)==null?void 0:N.position)==null?void 0:it.clone(),a=(U=($=this._blockContent)==null?void 0:$.scale)==null?void 0:U.clone(),c=(J=this._blockContent)==null?void 0:J.rotation,l=(W=(E=this._blockContent)==null?void 0:E.normal)==null?void 0:W.clone(),h=(D=(st=this._blockContent)==null?void 0:st.color)==null?void 0:D.clone(),u=(Ot=this._blockContent)!=null&&Ot.transformationMatrix?[...this._blockContent.transformationMatrix]:[],d=!!this._blockContent,g=!1,f=!1,p=!1,m=($t=this._landingPoint)==null?void 0:$t.clone(),y=this._doglegVector.clone(),b=null,_=null,w=!1,S;const P=()=>{_&&b&&b.leaderLines.push(_),_=null},v=()=>{P(),b&&this.addLeader(b),b=null};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const ct=t.readItem();if(!ct)break;const Ge=Number(ct.code),H=Number(ct.value),ot=String(ct.value??"");switch(Ge){case 100:return t.pushBackItem(ct),v(),this.finishMLeaderDxfIn(e,i,r,s,o,a,c,l,h,u,d,g,m,y,S),this;case 300:if(ot==="CONTEXT_DATA{"){f=!0;const B=this.dxfInContextData(t);B.hasArrowheadSize&&(p=!0),B.textContent!=null&&(e=B.textContent,r=!0),B.textAnchor&&(i=B.textAnchor,r=!0),B.hasMText!=null&&(this.hasMText=B.hasMText),B.hasBlock!=null&&(this.hasBlock=B.hasBlock),B.blockContentId&&(s=B.blockContentId,d=this.isValidMLeaderHandle(B.blockContentId)),B.blockPosition&&(o=B.blockPosition,d=!0),B.blockScale&&(a=B.blockScale,d=!0),B.blockRotation!=null&&(c=B.blockRotation,d=!0),B.blockNormal&&(l=B.blockNormal,d=!0),B.blockColor&&(h=B.blockColor,d=!0),B.blockMatrix.length>0&&(u=B.blockMatrix,d=!0),r&&!g&&(this.contentType=2,g=!0)}break;case 270:f=!0,this.version=H;break;case 340:this.leaderStyleId=ot,this.mleaderStyleId=ot;break;case 90:w?(P(),_={vertices:[],breakPointIndexes:[],breaks:[]}):this.propertyOverrideFlag=H;break;case 170:this.leaderLineType=H;break;case 91:this.leaderLineColor=_e(H);break;case 341:f?this.leaderLineTypeId=ot:this.isValidMLeaderHandle(ot)?(s=ot,d=!0):this.leaderLineTypeId=ot;break;case 171:w||(this.leaderLineWeight=H);break;case 290:f?this.landingEnabled=this.readDxfBoolean(ct):this.doglegEnabled=this.readDxfBoolean(ct);break;case 291:this.doglegEnabled=this.readDxfBoolean(ct);break;case 40:f?this.doglegLength=H:this.textHeight=H;break;case 41:this.doglegLength=H;break;case 342:this.arrowheadId=ot;break;case 42:f?p||(this.arrowheadSize=H*(this.contentScale??1)):this.textWidth=H;break;case 172:this.contentType=H,g=!0;break;case 343:this.textStyleId=ot;break;case 173:this.textLeftAttachmentType=H;break;case 95:this.textRightAttachmentType=H;break;case 174:this.textAngleType=H;break;case 175:this.textAlignmentType=H;break;case 92:this.textColor=_e(H);break;case 292:this.textFrameEnabled=this.readDxfBoolean(ct);break;case 344:this.isValidMLeaderHandle(ot)&&(s=ot,this.blockContentId=ot,d=!0);break;case 93:this.blockContentColor=_e(H);break;case 10:if(w){t.pushBackItem(ct);const B=t.readPoint3d(10);B&&_&&_.vertices.push(B)}else{t.pushBackItem(ct);const B=t.readPoint3d(10);if(!B)break;f?(this.blockContentScale=new A(B),a=new A(B),d=!0):m=B}break;case 43:this.blockContentRotation=H,c=H,d=!0;break;case 176:this.blockContentConnectionType=H;break;case 293:this.annotativeScaleEnabled=this.readDxfBoolean(ct);break;case 94:{this.arrowheadOverrides.push({index:H});break}case 345:{const B=this.arrowheadOverrides[this.arrowheadOverrides.length-1];B?B.handle=ot:this.arrowheadOverrides.push({index:0,handle:ot});break}case 330:this.blockAttributes.push({id:ot});break;case 177:{const B=this.blockAttributes[this.blockAttributes.length-1];B&&(B.index=H);break}case 44:{const B=this.blockAttributes[this.blockAttributes.length-1];B&&(B.width=H);break}case 302:{const B=this.blockAttributes[this.blockAttributes.length-1];B&&(B.text=ot);break}case 294:this.textDirectionNegative=this.readDxfBoolean(ct);break;case 178:this.textAlignInIPE=H;break;case 179:H!==0&&(this.textAttachmentPoint=H);break;case 271:this.textAttachmentDirection=H;break;case 272:this.bottomTextAttachmentDirection=H;break;case 273:this.topTextAttachmentDirection=H;break;case 210:t.pushBackItem(ct);{const B=t.readVector3d(210);B&&(this.normal=B)}break;case 110:v(),w=!0,t.pushBackItem(ct),b={landingPoint:t.readPoint3d(110),doglegVector:new A(1,0,0),doglegLength:0,breaks:[],leaderLines:[]};break;case 111:if(b){t.pushBackItem(ct);const B=t.readVector3d(111);B&&(b.doglegVector=B)}break;case 140:b?b.doglegLength=H:this.arrowheadSize=H;break;case 1:e=ot,r=!0;break;case 12:t.pushBackItem(ct);{const B=t.readPoint3d(12);B&&(i=B,r=!0)}break;case 7:this.textStyleName=ot;break;case 50:S=H;break;case 15:t.pushBackItem(ct);{const B=t.readPoint3d(15);B&&(o=B,d=!0)}break;case 16:t.pushBackItem(ct);{const B=t.readVector3d(16);B&&(a=B,d=!0)}break;case 52:c=H*Math.PI/180,d=!0;break;case 11:if(!w&&!f){t.pushBackItem(ct);const B=t.readVector3d(11);B&&(y=B)}break}}return v(),this.finishMLeaderDxfIn(e,i,r,s,o,a,c,l,h,u,d,g,m,y,S),this}finishMLeaderDxfIn(t,e,i,r,s,o,a,c,l,h,u,d,g,f,p){if(g&&(this.landingPoint=g),this.doglegVector=f,p!=null&&(this.textRotation=p*Math.PI/180),!this.textStyleName&&this.textStyleId){const y=this.database.tables.textStyleTable.getIdAt(this.textStyleId);y!=null&&y.name&&(this.textStyleName=y.name)}const m=e??this.textAnchor??this.contentBasePosition??g;(i||this.hasMText)&&t!=null&&m?(this.mtextContent={text:t,anchorPoint:m.clone()},this.textAnchor||(this.textAnchor=m.clone()),d||(this.contentType=2)):(i||this.hasMText)&&t!=null&&!m&&(d||(this.contentType=2)),u&&this.isValidMLeaderHandle(r)&&this.contentType!==2&&!this.mtextContent&&(this.blockContent={blockContentId:r,position:s,scale:o??new A(1,1,1),rotation:a??0,normal:c,color:l,transformationMatrix:h},!d&&this.contentType===0&&(this.contentType=1))}dxfInContextData(t){const e={blockMatrix:[]};for(;!t.atEof;){const i=t.readItem();if(!i)break;const r=Number(i.code),s=Number(i.value),o=String(i.value??"");if(r===301)break;if(r===0){t.pushBackItem(i);break}switch(r){case 10:t.pushBackItem(i),this.contentBasePosition=t.readPoint3d(10);break;case 11:t.pushBackItem(i);{const a=t.readVector3d(11);a&&(this.normal=a)}break;case 12:t.pushBackItem(i);{const a=t.readPoint3d(12);a&&(e.textAnchor=a,this.textAnchor=a.clone())}break;case 13:t.pushBackItem(i);{const a=t.readVector3d(13);a&&(this.textDirection=a)}break;case 14:t.pushBackItem(i),e.blockNormal=t.readVector3d(14);break;case 15:t.pushBackItem(i),e.blockPosition=t.readPoint3d(15);break;case 16:t.pushBackItem(i),e.blockScale=t.readVector3d(16);break;case 40:this.contentScale=s;break;case 41:s>0&&(this.textHeight=s);break;case 42:this.textRotation=s;break;case 43:s>0&&(this.textWidth=s);break;case 44:s>0&&(this.textHeight=s);break;case 45:this.textLineSpacingFactor=s;break;case 46:e.blockRotation=s;break;case 47:e.blockMatrix.push(s);break;case 90:this.textColor=_e(s);break;case 91:this.textBackgroundColor=_e(s);break;case 92:this.textBackgroundTransparency=s;break;case 93:e.blockColor=_e(s);break;case 110:t.pushBackItem(i),this.planeOrigin=t.readPoint3d(110);break;case 111:t.pushBackItem(i),this.planeXAxisDirection=t.readVector3d(111);break;case 112:t.pushBackItem(i),this.planeYAxisDirection=t.readVector3d(112);break;case 140:this.arrowheadSize=s,e.hasArrowheadSize=!0;break;case 141:this.textBackgroundScaleFactor=s;break;case 142:this.textColumnWidth=s;break;case 143:this.textColumnGutterWidth=s;break;case 144:this.textColumnHeight=s;break;case 145:this.landingGap=s;break;case 170:this.textLineSpacingStyle=s;break;case 171:this.textAttachment=s;break;case 172:this.textFlowDirection=s;break;case 173:this.textColumnType=s;break;case 290:e.hasMText=this.readDxfBoolean(i),this.hasMText=e.hasMText;break;case 291:this.textBackgroundColorOn=this.readDxfBoolean(i);break;case 292:this.textFillOn=this.readDxfBoolean(i);break;case 293:this.textUseAutoHeight=this.readDxfBoolean(i);break;case 294:this.textColumnFlowReversed=this.readDxfBoolean(i);break;case 295:this.textUseWordBreak=this.readDxfBoolean(i);break;case 296:e.hasBlock=this.readDxfBoolean(i),this.hasBlock=e.hasBlock;break;case 297:this.planeNormalReversed=this.readDxfBoolean(i);break;case 302:if(o==="LEADER{"){const a=this.dxfInLeaderSection(t);this.addLeader(a)}break;case 304:o!=="LEADER_LINE{"&&(e.textContent=o,this.hasMText=!0);break;case 340:this.textStyleId=o;break;case 341:e.blockContentId=o,this.isValidMLeaderHandle(o)&&(this.blockContentId=o);break}}return e}dxfInLeaderSection(t){const e={breaks:[],leaderLines:[]};let i;const r=()=>{i&&(e.breaks.push(i),i=void 0)};for(;!t.atEof;){const s=t.readItem();if(!s)break;const o=Number(s.code),a=Number(s.value),c=String(s.value??"");if(o===303){r();break}if(o===0||o===301){t.pushBackItem(s),r();break}switch(o){case 290:e.lastLeaderLinePointSet=this.readDxfBoolean(s);break;case 291:e.doglegVectorSet=this.readDxfBoolean(s);break;case 10:t.pushBackItem(s),e.lastLeaderLinePoint=t.readPoint3d(10);break;case 11:t.pushBackItem(s),e.doglegVector=t.readVector3d(11);break;case 12:t.pushBackItem(s);{const l=t.readPoint3d(12);l&&(i={start:l,end:l.clone()})}break;case 13:t.pushBackItem(s);{const l=t.readPoint3d(13);i&&l&&(i.end=l,r())}break;case 90:e.leaderBranchIndex=a;break;case 40:e.doglegLength=a;break;case 304:c==="LEADER_LINE{"&&e.leaderLines.push(this.dxfInLeaderLine(t));break}}return e}dxfInLeaderLine(t){const e={vertices:[],breakPointIndexes:[],breaks:[]};let i;const r=()=>{i&&(e.breaks.push(i),i=void 0)};for(;!t.atEof;){const s=t.readItem();if(!s)break;const o=Number(s.code),a=Number(s.value);if(o===305){r();break}if(o===0||o===303||o===301){t.pushBackItem(s),r();break}switch(o){case 10:t.pushBackItem(s);{const c=t.readPoint3d(10);c&&e.vertices.push(c)}break;case 11:t.pushBackItem(s);{const c=t.readPoint3d(11);c&&(i={index:i==null?void 0:i.index,start:c,end:c.clone()})}break;case 12:t.pushBackItem(s);{const c=t.readPoint3d(12);i&&c&&(i.end=c,r())}break;case 90:e.breakPointIndexes.push(a),i={index:a,start:(i==null?void 0:i.start)??new x,end:(i==null?void 0:i.end)??new x};break;case 91:e.leaderLineIndex=a;break}}return e}readDxfBoolean(t){if(typeof t.value=="boolean")return t.value;const e=Number(t.value);if(Number.isFinite(e))return e!==0;const i=String(t.value??"");return i!==""&&i!=="0"}isValidMLeaderHandle(t){return t!=null&&t!==""&&t!=="0"}createPoint(t){return new x().copy(t)}createLeaderLine(t){var e,i;return{vertices:((e=t.vertices)==null?void 0:e.map(r=>this.createPoint(r)))??[],breakPointIndexes:t.breakPointIndexes?[...t.breakPointIndexes]:[],leaderLineIndex:t.leaderLineIndex,breaks:((i=t.breaks)==null?void 0:i.map(r=>({index:r.index,start:this.createPoint(r.start),end:this.createPoint(r.end)})))??[]}}cloneLeader(t){var e,i,r;return{lastLeaderLinePoint:(e=t.lastLeaderLinePoint)==null?void 0:e.clone(),lastLeaderLinePointSet:t.lastLeaderLinePointSet,landingPoint:(i=t.landingPoint)==null?void 0:i.clone(),doglegVector:(r=t.doglegVector)==null?void 0:r.clone(),doglegVectorSet:t.doglegVectorSet,doglegLength:t.doglegLength,breaks:t.breaks.map(s=>({index:s.index,start:s.start.clone(),end:s.end.clone()})),leaderBranchIndex:t.leaderBranchIndex,directionType:t.directionType,leaderLines:t.leaderLines.map(s=>({vertices:s.vertices.map(o=>o.clone()),breakPointIndexes:[...s.breakPointIndexes],leaderLineIndex:s.leaderLineIndex,breaks:s.breaks.map(o=>({index:o.index,start:o.start.clone(),end:o.end.clone()}))}))}}checkLeaderIndex(t){if(t<0||t>=this._leaders.length)throw new Error("The leader index is out of range!")}getMutableLeaderLine(t,e){this.checkLeaderIndex(t);const i=this._leaders[t].leaderLines[e];if(!i)throw new Error("The leader line index is out of range!");return i}collectGeometryPoints(){var e;const t=[];return this._leaders.forEach(i=>{i.lastLeaderLinePoint&&t.push(i.lastLeaderLinePoint),i.landingPoint&&t.push(i.landingPoint),i.breaks.forEach(s=>t.push(s.start,s.end)),i.leaderLines.forEach(s=>{t.push(...s.vertices),s.breaks.forEach(o=>t.push(o.start,o.end))});const r=this.getDoglegPoints(i);r&&t.push(...r),i.leaderLines.forEach(s=>{const o=this.getArrowheadPoints(this.getLeaderLineDrawPoints(i,s));o&&t.push(...o)})}),this._landingPoint&&t.push(this._landingPoint),this.contentBasePosition&&t.push(this.contentBasePosition),this.textAnchor&&t.push(this.textAnchor),this._mtextContent&&t.push(this._mtextContent.anchorPoint),(e=this._blockContent)!=null&&e.position&&t.push(this._blockContent.position),this.planeOrigin&&t.push(this.planeOrigin),t}moveGeometryGripPointAt(t,e){var s;let i=0;const r=(o,a)=>{if(o){i===t&&o.add(e),i++;return}a&&(i===t&&a(),i++)};this._leaders.forEach(o=>{r(o.lastLeaderLinePoint),r(o.landingPoint),o.breaks.forEach(c=>{r(c.start),r(c.end)}),o.leaderLines.forEach(c=>{c.vertices.forEach(l=>r(l)),c.breaks.forEach(l=>{r(l.start),r(l.end)})});const a=this.getDoglegPoints(o);a&&(r(a[0]),r(void 0,()=>{const c=a[0],l=a[1];if(!c||!l)return;const h=c.distanceTo({x:l.x+e.x,y:l.y+e.y,z:(l.z??0)+(e.z??0)});o.doglegLength!=null||o.doglegVectorSet?o.doglegLength=h:this._doglegLength=h})),o.leaderLines.forEach(c=>{const l=this.getLeaderLineDrawPoints(o,c),h=this.getArrowheadPoints(l);h&&h.forEach((u,d)=>{d===0||d===h.length-1?r(l[0]):r(void 0)})})}),r(this._landingPoint),r(this.contentBasePosition),r(this.textAnchor),this._mtextContent&&r(this._mtextContent.anchorPoint),(s=this._blockContent)!=null&&s.position&&r(this._blockContent.position),r(this.planeOrigin)}getLeaderLineDrawPoints(t,e){if(e.vertices.length>=2)return e.vertices;if(e.vertices.length===0)return[];const i=t.lastLeaderLinePoint??t.landingPoint??this._landingPoint??this.contentBasePosition;return!i||e.vertices[0].equals(i)?e.vertices:[e.vertices[0],i]}getDoglegPoints(t){if(!this.getResolvedDoglegEnabled())return;const e=t.lastLeaderLinePoint??t.landingPoint??this._landingPoint,i=t.doglegVector??this._doglegVector,r=t.doglegLength??this.getResolvedDoglegLength();if(!e||r==null||r===0||i.lengthSq()===0)return;const s=e.clone().add(i.clone().normalize().multiplyScalar(r));return[e,s]}getArrowheadPoints(t){if(!this.isArrowheadVisible()||t.length<2)return;const e=this.getArrowheadFrame(t);if(!e)return;const i=this.getResolvedArrowheadSize(),{tip:r,unit:s}=e,o=r.clone().add(s.clone().multiplyScalar(i)),a=i/6,c=new A(-s.y,s.x,0),l=o.clone().add(c.clone().multiplyScalar(a)),h=o.clone().add(c.clone().multiplyScalar(-a));return[r,l,h,r]}isArrowheadVisible(){const t=this.getResolvedArrowheadId();return(t==null?void 0:t.toUpperCase())==="_NONE"?!1:this.getResolvedArrowheadSize()>0}drawLeaderLine(t,e){const i=[],r=this.getLeaderLinePointsForDraw(e);r.length>=2&&i.push(t.lines(r));const s=this.drawArrowhead(t,e);if(s&&i.push(s),i.length!==0)return i.length===1?i[0]:t.group(i)}getLeaderLinePointsForDraw(t){const e=this.getArrowheadLeaderLineTrimDistance();return e<=0?t:this.trimPolylineStart(t,e)}getArrowheadLeaderLineTrimDistance(){if(!this.isArrowheadVisible())return 0;const t=this.getResolvedArrowheadBlockTableRecord();if(!t)return 0;const e=this.getResolvedArrowheadSize();if(e<=0)return 0;const i=t.origin??x.ORIGIN;let r=i.x;for(const s of t.newIterator()){const o=s.geometricExtents;o.isEmpty()||o.max.x>r&&(r=o.max.x)}return Math.max(0,(r-i.x)*e)}trimPolylineStart(t,e){if(t.length<2||e<=0)return t;let i=e;for(let r=0;r<t.length-1;r++){const s=t[r],o=t[r+1],a=o.distanceTo(s);if(!(a<=0)){if(i<a){const c=new A().subVectors(o,s);return[s.clone().add(c.multiplyScalar(i/a)),...t.slice(r+1)]}i-=a}}return[t[t.length-1]]}drawArrowhead(t,e){if(!this.isArrowheadVisible())return;const i=this.drawArrowheadBlock(t,e);if(i)return i;const r=this.getArrowheadPoints(e);if(!r)return;const s=new he;s.add(new rt(r,!0));const o=t.subEntityTraits,a=o.fillType;o.fillType={solidFill:!0,patternAngle:0,definitionLines:[]};const c=t.area(s);return o.fillType=a,c}drawArrowheadBlock(t,e){const i=this.getResolvedArrowheadBlockTableRecord();if(!i)return;const r=this.getArrowheadFrame(e);if(!r)return;const{tip:s,unit:o}=r,a=this.getResolvedArrowheadSize(),c=Math.atan2(o.y,o.x),l=i.origin??x.ORIGIN,h=new F().makeTranslation(-l.x,-l.y,-l.z),u=new F().makeScale(a,a,a),d=new F().makeRotationZ(c),g=new F().makeTranslation(s.x,s.y,s.z),f=new F().multiplyMatrices(g,d).multiply(u).multiply(h);return xn.instance.draw(t,i,this.resolvedColor,[],!0,f,new A(this.normal))}getArrowheadFrame(t){if(t.length<2)return;const e=t[0],i=t.find(s=>!s.equals(e));if(!i)return;const r=new A().subVectors(i,e);if(r.lengthSq()!==0)return{tip:e,unit:r.normalize()}}getResolvedArrowheadId(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.arrowSymbolId;return this.arrowheadId??t}getResolvedArrowheadBlockTableRecord(){const t=this.getResolvedArrowheadId();if(t)return this.database.tables.blockTable.getIdAt(t)}getResolvedArrowheadSize(){const t=this.getMLeaderStyle(),e=(t==null?void 0:t.arrowSize)??(t==null?void 0:t.scale);return this.arrowheadSize??this.contentScale??e??this.getResolvedTextHeight()}getResolvedTextHeight(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.textHeight;return this.textHeight>0?this.textHeight:t!=null&&t>0?t:2.5}getRenderableMTextContent(){var i;if(this._mtextContent)return{text:this._mtextContent.text,anchorPoint:this._mtextContent.anchorPoint};const t=(i=this.getMLeaderStyle())==null?void 0:i.defaultMTextContents,e=this.textAnchor??this.contentBasePosition??this._landingPoint;if(!(!t||!e))return{text:t,anchorPoint:e}}getMTextRenderWidth(t,e){if(this._textWidth>0)return this._textWidth;if(!t)return this._textWidth;const i=t.replace(/\\[PpNn]/g,`
|
|
15
|
-
`).replace(/\\[A-Za-z][^;]*;/g,"").replace(/[{}]/g,""),r=Math.max(...i.split(/\r\n|\r|\n/g).map(s=>s.length),1);return Math.max(e,r*e)}transformVector(t,e){const i=new x,r=new x(t.x,t.y,t.z);i.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-i.x,r.y-i.y,r.z-i.z)}getMLeaderStyle(){var i,r;const t=this.database.objects.mleaderStyle,e=(i=this.mleaderStyleId||this.leaderStyleId)==null?void 0:i.trim();if(e){const s=t.getIdAt(e);if(s)return s;const o=e.toUpperCase();for(const[,c]of t.entries())if(((r=c.objectId)==null?void 0:r.toUpperCase())===o)return c;const a=this.database.getObjectById(e);if(a instanceof Io)return a}return this.getDefaultMLeaderStyle()}getDefaultMLeaderStyle(){const t=this.resolveMLeaderStyleByName(this.getDefaultMLeaderStyleName());return t||this.database.objects.mleaderStyle.newIterator().toArray()[0]}resolveMLeaderStyleByName(t){const e=t==null?void 0:t.trim();if(!e)return;const i=this.database.objects.mleaderStyle,r=i.getAt(e);if(r)return r;const s=i.getIdAt(e);if(s)return s;const o=e.toUpperCase();for(const[a,c]of i.entries())if(a.toUpperCase()===o)return c}getDefaultMLeaderStyleName(){try{return this.database.cmleaderstyle||Fe}catch{return Fe}}getResolvedTextStyleName(){var s,o,a;const t=this.database.tables.textStyleTable,e=(s=this.getMLeaderStyle())==null?void 0:s.textStyleId,i=e?(o=t.getIdAt(e))==null?void 0:o.name:void 0,r=this.textStyleId?(a=t.getIdAt(this.textStyleId))==null?void 0:a.name:void 0;if(this.textStyleName){const c=t.getAt(this.textStyleName);if(c!=null&&c.name)return c.name;const l=t.getIdAt(this.textStyleName);if(l!=null&&l.name)return l.name}return r||i}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.getResolvedTextStyleName());if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}getResolvedLeaderLineColor(){var t;return this.getResolvedComponentColor(this.leaderLineColor,(t=this.getMLeaderStyle())==null?void 0:t.leaderLineColor,Ex)}getResolvedLeaderLineType(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.leaderLineType;return this.getResolvedStyleDrivenValue(this.leaderLineType,t,Ix)}getResolvedLeaderLineTypeId(){var t;return this.getResolvedStyleDrivenValue(this.leaderLineTypeId,(t=this.getMLeaderStyle())==null?void 0:t.leaderLineTypeId,Tx)}getResolvedLeaderLineStyle(){const t=this.getResolvedLeaderLineTypeId();if(!t)return;const e=this.database.tables.linetypeTable.getIdAt(t);if(e)return{type:"UserSpecified",...e.linetype}}getResolvedLeaderLineWeight(){var i;const t=(i=this.getMLeaderStyle())==null?void 0:i.leaderLineWeight,e=this.getResolvedStyleDrivenValue(this.leaderLineWeight,t,Lx);if(e!=null)return e}getResolvedDoglegEnabled(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.doglegEnabled;return this.getResolvedStyleDrivenValue(this.doglegEnabled,t,Mx)}getResolvedDoglegLength(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.doglegLength;return this.getResolvedStyleDrivenValue(this.doglegLength,t,Cx)}getResolvedTextColor(){var t;return this.getResolvedComponentColor(this.textColor,(t=this.getMLeaderStyle())==null?void 0:t.textColor,Ox)}getResolvedComponentColor(t,e,i){if(!t)return e;if(!t.isByBlock&&!t.isByLayer)return t;const r=this.isPropertyOverrideEnabled(i);return r===!0?t:e??t}getResolvedStyleDrivenValue(t,e,i){const r=this.isPropertyOverrideEnabled(i);return r===!0?t??e:e??t}isPropertyOverrideEnabled(t){if(this.propertyOverrideFlag!=null)return(this.propertyOverrideFlag&t)!==0}applyColorTraits(t,e,i){t.color=i,e&&(t.color=e)}applyLineTraits(t,e,i){e&&(t.lineType=e),i!=null&&(t.lineWeight=i)}};ml.typeName="MLeader";let ys=ml;var Zf=(n=>(n[n.Top=0]="Top",n[n.Zero=1]="Zero",n[n.Bottom=2]="Bottom",n))(Zf||{}),Qf=(n=>(n[n.HasVertex=1]="HasVertex",n[n.Closed=2]="Closed",n[n.SuppressStartCaps=4]="SuppressStartCaps",n[n.SuppressEndCaps=8]="SuppressEndCaps",n))(Qf||{});const yl=class yl extends nt{get dxfTypeName(){return"MLINE"}constructor(){super(),this._styleName="",this._styleObjectHandle="",this._scale=1,this._justification=1,this._flags=0,this._styleCount=0,this._startPosition=new x,this._normal=new A(0,0,1),this._segments=[]}get styleName(){return this._styleName||this.getDefaultStyleName()}set styleName(t){this._styleName=t}get styleObjectHandle(){return this._styleObjectHandle}set styleObjectHandle(t){this._styleObjectHandle=t}get scale(){return this._scale}set scale(t){this._scale=t}get justification(){return this._justification}set justification(t){this._justification=t}get flags(){return this._flags}set flags(t){this._flags=t}get styleCount(){return this._styleCount}set styleCount(t){this._styleCount=Math.max(0,t)}get startPosition(){return this._startPosition}set startPosition(t){this._startPosition.copy(t)}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get segments(){return this._segments.map(t=>this.cloneSegment(t))}set segments(t){this._segments=t.map(e=>this.createSegment(e)),this.updateHasVertexFlag()}get vertexCount(){return this._segments.length}get closed(){return(this._flags&2)!==0}set closed(t){this.setFlag(2,t)}get suppressStartCaps(){return(this._flags&4)!==0}set suppressStartCaps(t){this.setFlag(4,t)}get suppressEndCaps(){return(this._flags&8)!==0}set suppressEndCaps(t){this.setFlag(8,t)}appendSegment(t){this._segments.push(this.createSegment(t)),this.updateHasVertexFlag()}clearSegments(){this._segments=[],this.updateHasVertexFlag()}get geometricExtents(){const t=this.collectGeometryPoints();return new j().setFromPoints(t)}subGetIntersectCurves(){const t=[],e=this.getMLineStyle(),i=this.getRenderableElementCount(e);if(i<=0)return Wt(this.getReferencePath(),this.closed);for(let r=0;r<i;r++)t.push(...Wt(this.getElementPath(r,e),this.closed));return t}transformBy(t){return this._startPosition.applyMatrix4(t),this._segments.forEach(e=>{e.position.applyMatrix4(t),this.transformVector(e.direction,t),this.transformVector(e.miterDirection,t)}),this.transformVector(this._normal,t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"mline",properties:[{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"scale",type:"float",editable:!0,accessor:{get:()=>this.scale,set:t=>{this.scale=t}}},{name:"justification",type:"int",editable:!0,accessor:{get:()=>this.justification,set:t=>{this.justification=t}}},{name:"closed",type:"boolean",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}},{name:"vertexCount",type:"int",editable:!1,accessor:{get:()=>this.vertexCount}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this._startPosition.clone()),this._segments.forEach(e=>t.push(e.position.clone())),t}subMoveGripPointsAt(t,e){const i=[this._startPosition,...this._segments.map(r=>r.position)];return pi(t,e,i),Pt(t,r=>{this.updateReferencePathDirectionsAfterGripMove(r)}),this}subGetOsnapPoints(t,e,i,r){const s=[this._startPosition,...this._segments.map(o=>o.position)];if(s.length!==0)switch(t){case I.EndPoint:r.push(...s);break;case I.MidPoint:case I.Nearest:case I.Perpendicular:{const o=[];for(let a=0;a<s.length-1;a++){const c=[];mi(s[a],s[a+1],t,e,c),o.push(...c)}if(t===I.MidPoint)r.push(...o);else{const a=oe(e,o);a&&r.push(a)}break}}}subWorldDraw(t){if(this._segments.length===0)return;const e=[],i=this.getMLineStyle(),r=this.getRenderableElementCount(i),s=t.subEntityTraits,o=s.color,a=s.lineType,c=s.fillType,l=s.drawOrder,h=this.createFillArea(i,r);if(h&&(s.color=o,this.applyFillTraits(i,s),s.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},s.drawOrder=-1,e.push(t.area(h)),s.fillType=c,s.drawOrder=l),r<=0){const u=this.getReferencePath();u.length>=2&&e.push(t.lines(u))}else{for(let u=0;u<r;u++){s.color=o,s.lineType=a,this.applyStyleElementTraits(i,u,s);const d=this.getElementPath(u,i);d.length>=2&&e.push(t.lines(d))}this.appendStyleDrivenJointAndCapEntities(t,e,i,r,o,a)}if(s.color=o,s.lineType=a,s.fillType=c,s.drawOrder=l,e.length!==0)return e.length===1?e[0]:t.group(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMline"),t.writeString(2,this.styleName),t.writeHandle(340,this._styleObjectHandle),t.writeDouble(40,this._scale),t.writeInt16(70,this._justification),t.writeInt16(71,this._flags),t.writeInt16(72,this.vertexCount),t.writeInt16(73,this._styleCount),t.writePoint3d(10,this._startPosition),t.writeVector3d(210,this._normal),this._segments.forEach(e=>{t.writePoint3d(11,e.position),t.writeVector3d(12,e.direction),t.writeVector3d(13,e.miterDirection),e.elements.forEach(i=>{t.writeInt16(74,i.parameterCount),i.parameters.forEach(r=>t.writeDouble(41,r)),t.writeInt16(75,i.fillCount),i.fillParameters.forEach(r=>t.writeDouble(42,r))})}),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMline");let e=this._startPosition.x,i=this._startPosition.y,r=this._startPosition.z,s=this._normal.x,o=this._normal.y,a=this._normal.z;const c=[];let l=null,h=null,u=!1,d=!1,g=0,f=0;const p=()=>{h&&l&&l.elements.push(h),h=null,u=!1,d=!1,g=0,f=0},m=()=>{p(),l&&c.push(l),l=null};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const y=t.readItem();if(!y)break;const b=Number(y.code),_=Number(y.value);switch(b){case 2:this.styleName=String(y.value);break;case 340:this.styleObjectHandle=String(y.value);break;case 40:this.scale=_;break;case 70:this.justification=_;break;case 71:this.flags=_;break;case 72:break;case 73:this.styleCount=_;break;case 10:e=_;break;case 20:i=_;break;case 30:r=_;break;case 210:s=_;break;case 220:o=_;break;case 230:a=_;break;case 11:m(),l={position:new x(_,0,0),direction:new A(1,0,0),miterDirection:new A(0,1,0),elements:[]};break;case 21:l&&(l.position.y=_);break;case 31:l&&(l.position.z=_);break;case 12:l&&(l.direction.x=_);break;case 22:l&&(l.direction.y=_);break;case 32:l&&(l.direction.z=_);break;case 13:l&&(l.miterDirection.x=_);break;case 23:l&&(l.miterDirection.y=_);break;case 33:l&&(l.miterDirection.z=_);break;case 74:p(),g=_,u=!0,d=!1,h={parameterCount:_,parameters:[],fillCount:0,fillParameters:[]};break;case 41:h&&u&&(h.parameters.push(_),g>0&&h.parameters.length>=g&&(u=!1));break;case 75:h&&(f=_,h.fillCount=_,d=!0,u=!1);break;case 42:h&&d&&(h.fillParameters.push(_),f>0&&h.fillParameters.length>=f&&(d=!1));break}}return m(),this.startPosition=new x(e,i,r),this.normal=new A(s,o,a),this.segments=c,this}setFlag(t,e){e?this._flags|=t:this._flags&=~t}updateHasVertexFlag(){this.setFlag(1,this._segments.length>0)}updateReferencePathDirectionsAfterGripMove(t){const e=r=>{const s=this._segments[r];if(!s)return;const o=r===0?this._startPosition:this._segments[r-1].position,a=new A().subVectors(s.position,o);a.lengthSq()>0&&s.direction.copy(a.normalize())};if(t===0){this._segments.length>0&&e(0);return}const i=t-1;i<0||i>=this._segments.length||(e(i),i+1<this._segments.length&&e(i+1))}createSegment(t){var e;return{position:new x().copy(t.position),direction:new A().copy(t.direction),miterDirection:new A().copy(t.miterDirection),elements:((e=t.elements)==null?void 0:e.map(i=>this.createElement(i)))??[]}}createElement(t){const e=t.parameters?[...t.parameters]:[],i=t.fillParameters?[...t.fillParameters]:[];return{parameterCount:t.parameterCount??e.length,parameters:e,fillCount:t.fillCount??i.length,fillParameters:i}}cloneSegment(t){return{position:t.position.clone(),direction:t.direction.clone(),miterDirection:t.miterDirection.clone(),elements:t.elements.map(e=>({parameterCount:e.parameterCount,parameters:[...e.parameters],fillCount:e.fillCount,fillParameters:[...e.fillParameters]}))}}collectGeometryPoints(){const t=[this._startPosition];if(this._segments.length===0)return t;const e=this.getMLineStyle(),i=this.getRenderableElementCount(e);if(i<=0)return this._segments.forEach(r=>t.push(r.position)),t;for(let r=0;r<i;r++)t.push(...this.getElementPath(r,e));return t}getRenderableElementCount(t){const e=(t==null?void 0:t.elementCount)??0;return Math.max(this._styleCount,e,...this._segments.map(i=>i.elements.length),0)}getReferencePath(){const t=[this._startPosition.clone(),...this._segments.map(e=>e.position.clone())];return this.closePathIfNeeded(t)}getElementPath(t,e){const i=[],r=this._segments[0];return i.push(this.getElementBoundaryPoint("start",r,t,e)),this._segments.forEach(s=>{i.push(this.offsetPoint(s.position,s.miterDirection,this.getElementMiterOffset(s,t,e)))}),i[i.length-1]=this.getElementBoundaryPoint("end",this._segments[this._segments.length-1],t,e),this.closePathIfNeeded(i)}getElementMiterOffset(t,e,i){var s;const r=t.elements[e];return(s=r==null?void 0:r.parameters)!=null&&s.length?r.parameters[0]:this.getStyleElementOffset(e,i)}getElementBoundaryPoint(t,e,i,r){const s=this.getElementMiterOffset(e,i,r),o=t==="start"?this._startPosition:e.position,a=this.offsetPoint(o,e.miterDirection,s);if(!this.shouldApplyCapCutAtSide(t,r))return a;const c=t==="start"?r==null?void 0:r.startAngle:r==null?void 0:r.endAngle,l=this.computeCapCutDistance(s,c,t);if(l===0)return a;const h=t==="start"?this.getStartSegmentDirection():this.getEndSegmentDirection();return h.lengthSq()===0?a:a.add(h.multiplyScalar(l))}shouldApplyCapCutAtSide(t,e){return!e||this.closed?!1:t==="start"?this.suppressStartCaps?!1:(e.flags&112)!==0:this.suppressEndCaps?!1:(e.flags&1792)!==0}computeCapCutDistance(t,e,i){const r=this.normalizeCapAngle(e),s=Math.tan(r);if(Math.abs(s)<1e-6)return 0;const o=t/s;return o}normalizeCapAngle(t){if(t==null||!Number.isFinite(t))return Math.PI/2;let e=t%180;return e<0&&(e+=180),(e<1||e>179)&&(e=90),e*Math.PI/180}getStartSegmentDirection(){const t=this._segments[0],e=new A;return t&&(e.subVectors(t.position,this._startPosition),e.lengthSq()===0&&e.copy(t.direction)),e.lengthSq()>0&&e.normalize(),e}getEndSegmentDirection(){const t=this._segments[this._segments.length-1];if(!t)return new A;const e=new A,i=this._segments.length>1?this._segments[this._segments.length-2].position:this._startPosition;return e.subVectors(t.position,i),e.lengthSq()===0&&e.copy(t.direction),e.lengthSq()>0&&e.normalize(),e}createFillArea(t,e){if(!t||(t.flags&1)===0||e<2)return;const i=this.getFillBoundaryElementIndices(e,t);if(!i)return;const r=this.getElementPath(i.outerIndex,t),s=this.getElementPath(i.innerIndex,t),o=this.stripClosingPoint(r),a=this.stripClosingPoint(s);if(o.length<2||a.length<2)return;const c=new he;if(this.closed){if(o.length<3||a.length<3)return;c.add(new rt(o.map(l=>({x:l.x,y:l.y})),!0)),c.add(new rt(a.map(l=>({x:l.x,y:l.y})),!0))}else{const l=[...o,...a.slice().reverse()].map(h=>({x:h.x,y:h.y}));if(l.length<3)return;c.add(new rt(l,!0))}return c}getFillBoundaryElementIndices(t,e){let i=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=-1,o=-1;for(let a=0;a<t;a++){const c=this.getElementReferenceOffset(a,e);c<i&&(i=c,s=a),c>r&&(r=c,o=a)}if(!(s<0||o<0||s===o))return{outerIndex:o,innerIndex:s}}getElementReferenceOffset(t,e){var r;const i=this._segments[0];if(i){const s=i.elements[t];if((r=s==null?void 0:s.parameters)!=null&&r.length)return s.parameters[0]}return this.getStyleElementOffset(t,e)}getStyleElementOffset(t,e){const i=e==null?void 0:e.elements[t];if(!i)return 0;const r=this.getStyleJustificationShift(e);return(i.offset+r)*this._scale}getStyleJustificationShift(t){const e=(t==null?void 0:t.elements)??[];if(e.length<=0)return 0;let i=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(const s of e){const o=s.offset;o<i&&(i=o),o>r&&(r=o)}return this._justification===0?-r:this._justification===2?-i:0}stripClosingPoint(t){if(t.length<2)return t;const e=t[0],i=t[t.length-1],r=1e-9;return Math.abs(e.x-i.x)<=r&&Math.abs(e.y-i.y)<=r&&Math.abs(e.z-i.z)<=r?t.slice(0,-1):t}offsetPoint(t,e,i){if(i===0||e.lengthSq()===0)return t.clone();const r=e.clone().normalize().multiplyScalar(i);return t.clone().add(r)}closePathIfNeeded(t){if(!this.closed||t.length<2)return t;const e=t[0],i=t[t.length-1],r=1e-9;return Math.abs(e.x-i.x)<=r&&Math.abs(e.y-i.y)<=r&&Math.abs(e.z-i.z)<=r||t.push(e.clone()),t}appendStyleDrivenJointAndCapEntities(t,e,i,r,s,o){!i||r<2||(e.push(...this.drawMiterJointEntities(t,i,r,s,o)),e.push(...this.drawCapEntities(t,i,r,s,o)))}drawMiterJointEntities(t,e,i,r,s){if(this.closed||this._segments.length<2||(e.flags&2)===0)return[];const o=[],a=t.subEntityTraits;for(let c=0;c<this._segments.length-1;c++){const l=this._segments[c],h=Array.from({length:i},(u,d)=>{const g=this.getElementMiterOffset(l,d,e);return{elementIndex:d,offset:g,point:this.offsetPoint(l.position,l.miterDirection,g)}}).sort((u,d)=>d.offset-u.offset);for(let u=0;u<h.length-1;u++)this.applyElementDrawTraits(a,r,s,e,h[u].elementIndex),o.push(t.lines([h[u].point,h[u+1].point]))}return o}drawCapEntities(t,e,i,r,s){if(this.closed||this._segments.length<=0)return[];const o=[];return o.push(...this.drawCapEntitiesForSide(t,"start",e,i,r,s)),o.push(...this.drawCapEntitiesForSide(t,"end",e,i,r,s)),o}drawCapEntitiesForSide(t,e,i,r,s,o){if(e==="start"&&this.suppressStartCaps)return[];if(e==="end"&&this.suppressEndCaps)return[];const a=i.flags,c=e==="start",l=c?(a&16)!==0:(a&256)!==0,h=c?(a&64)!==0:(a&1024)!==0,u=c?(a&32)!==0:(a&512)!==0;if(!l&&!h&&!u)return[];const d=this.getCapElementPoints(e,r,i);if(d.length<2)return[];const g=[],f=t.subEntityTraits;if(l)for(let m=0;m<d.length-1;m++)this.applyElementDrawTraits(f,s,o,i,d[m].elementIndex),g.push(t.lines([d[m].point,d[m+1].point]));const p=c?this.getStartSegmentDirection().multiplyScalar(-1):this.getEndSegmentDirection().clone();if(h){const m=this.drawCapArcBetweenElements(t,e,d[0],d[d.length-1],p,f,s,o,i);m&&g.push(m)}if(u)for(let m=1;m<Math.floor(d.length/2);m++){const y=d[m],b=d[d.length-1-m];if(!y||!b||y===b)continue;const _=this.drawCapArcBetweenElements(t,e,y,b,p,f,s,o,i);_&&g.push(_)}return g}getCapElementPoints(t,e,i){const r=t==="start"?this._segments[0]:this._segments[this._segments.length-1];return r?Array.from({length:e},(s,o)=>({elementIndex:o,offset:this.getElementMiterOffset(r,o,i),point:this.getElementBoundaryPoint(t,r,o,i)})).sort((s,o)=>o.offset-s.offset):[]}drawCapArcBetweenElements(t,e,i,r,s,o,a,c,l){const h=e==="end"?r.point:i.point,u=e==="end"?i.point:r.point,d=h.distanceTo(u);if(d<=1e-9||s.lengthSq()===0)return;const f=h.clone().add(new A().subVectors(u,h).multiplyScalar(.5)).add(s.clone().normalize().multiplyScalar(d/2)),p=pt.createByThreePoints(h,u,f);if(p)return this.applyElementDrawTraits(o,a,c,l,e==="end"?r.elementIndex:i.elementIndex),t.circularArc(p)}applyElementDrawTraits(t,e,i,r,s){t.color=e,t.lineType=i,this.applyStyleElementTraits(r,s,t)}transformVector(t,e){const i=new x,r=new x(t.x,t.y,t.z);i.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-i.x,r.y-i.y,r.z-i.z)}getMLineStyle(){var s;const t=this.database.objects.mlineStyle,e=this.styleObjectHandle?t.getIdAt(this.styleObjectHandle):void 0;if(e)return e;const i=this.styleName?t.getAt(this.styleName):void 0;if(i)return i;const r=(s=this.styleName)==null?void 0:s.toUpperCase();if(r)for(const[o,a]of t.entries()){const c=(a.styleName||o).toUpperCase();if(o.toUpperCase()===r||c===r)return a}}applyStyleElementTraits(t,e,i){const r=t==null?void 0:t.elements[e];if(!r)return;const s=this.resolveStyleElementLineType(r.lineType);s&&(i.lineType=s),!(r.color.isByBlock||r.color.isByLayer)&&(i.color=r.color.clone())}applyFillTraits(t,e){const i=t==null?void 0:t.fillColor;!i||i.isByBlock||i.isByLayer||(e.color=i.clone())}resolveStyleElementLineType(t){var l;const e=t==null?void 0:t.trim();if(!e)return;const i=e.toUpperCase(),r=wt.toUpperCase(),s=ve.toUpperCase();let o="UserSpecified",a=e;if(i===r){o="ByLayer";const h=(l=this.database.tables.layerTable.getAt(this.layer))==null?void 0:l.linetype;a=h&&h.toUpperCase()!==r&&h.toUpperCase()!==s?h:rn}else i===s&&(o="ByBlock",a=rn);const c=this.database.tables.linetypeTable.getAt(a);return c?{type:o,...c.linetype}:{type:o,name:a,standardFlag:0,description:"",totalPatternLength:0}}resolveEffectiveProperties(){super.resolveEffectiveProperties(),this._styleName||(this._styleName=this.getDefaultStyleName())}getDefaultStyleName(){try{return this.database.cmlstyle||De}catch{return De}}};yl.typeName="MLine";let bs=yl;function Jf(n,t){if(t.length<3)return;const e=n.subEntityTraits,i=e.fillType,r=e.transparency;e.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},e.transparency=new xt(0);const s=new he;s.add(new rt(t,!0));const o=n.area(s);e.fillType=i,e.transparency=r;const a=n.lines(t);return o?a?n.group([o,a]):o:a}const Kh=[208,207,17,224,161,177,26,225],Xa=128,Ya=8,na=3*Ya,Er=2;function tp(n){if(!n||n.length<Xa)return;for(let l=0;l<Kh.length;l++)if(n[Xa+l]!==Kh[l])return;const t=new DataView(n.buffer,n.byteOffset,n.byteLength),e=l=>{const h=t.getFloat64(l,!0),u=t.getFloat64(l+Ya,!0),d=t.getFloat64(l+2*Ya,!0);if([h,u,d].every(Number.isFinite))return{x:h,y:u,z:d}},i=e(Er),r=e(Er+na),s=e(Er+2*na),o=e(Er+3*na);if(!i||!r||!s||!o)return;const a=Math.abs(s.x-i.x),c=Math.abs(i.y-s.y);if(!(a<=0||c<=0))return{upperLeft:i,upperRight:r,lowerRight:s,lowerLeft:o}}const Zi="image/wmf",Wn="image/emf",ep=2596720087;function Zc(n){return n===Zi||n===Wn}function Se(n){if(n.length<18)return!1;const t=new DataView(n.buffer,n.byteOffset,n.byteLength);return n.length>=40&&t.getUint32(0,!0)===ep?Zh(n.subarray(22)):Zh(n)}function _s(n){return ip(n)>=0}const Rx=1574,Nx=15,Bx=1128680791;function np(n){if(!Se(n))return;const t=new DataView(n.buffer,n.byteOffset,n.byteLength);let e=0;if(t.getUint32(0,!0)===ep&&(e=22),e+18>n.length)return;const i=t.getUint16(e+2,!0);if(i<9)return;e+=i*2;const r=[];let s=0;for(;e+6<=n.length;){const c=t.getUint32(e,!0),l=c*2,h=t.getUint16(e+4,!0);if(c<3||l<6||e+l>n.length)break;if(h===Rx&&e+44<=e+l&&t.getUint16(e+6,!0)===Nx){const d=t.getUint32(e+10,!0),g=t.getUint32(e+32,!0),f=t.getUint32(e+40,!0),p=g>0&&g===f||g>0?g:f,m=e+44;d===Bx&&p>0&&m+p<=e+l&&(r.push(n.subarray(m,m+p)),s+=p)}if(h===0)break;e+=l}if(r.length===0||s<88)return;const o=new Uint8Array(s);let a=0;for(const c of r)o.set(c,a),a+=c.length;if(To(o,0))return o}function ip(n){const t=Math.min(n.length-44,4096);for(let e=0;e<=t;e++)if(To(n,e))return e;return-1}function To(n,t){if(t+88>n.length)return!1;const e=new DataView(n.buffer,n.byteOffset+t,n.length-t);if(e.getUint32(0,!0)!==1)return!1;const i=e.getUint32(4,!0);if(i<88||t+i>n.length||n[t+40]!==32||n[t+41]!==69||n[t+42]!==77||n[t+43]!==70)return!1;const r=e.getUint32(48,!0),s=e.getUint32(52,!0);return!(r<i||t+r>n.length||s<2||s>1e7)}function Zh(n){if(n.length<18)return!1;const t=new DataView(n.buffer,n.byteOffset,n.byteLength),e=t.getUint16(0,!0),i=t.getUint16(2,!0),r=t.getUint16(4,!0),s=t.getUint32(6,!0);return!(e!==1&&e!==2||i<9||i>100||r!==256&&r!==768||(s<i||s*2>n.length+16)&&s<i)}const za=[208,207,17,224,161,177,26,225],Dx=2,Va=3,Fx=8,Qh=14,ia=128,Xx=64*1024*1024;function rp(n){if(!(n!=null&&n.length))return;const t=Yx(n);return t||Ua(n)}function Yx(n){const t=Qi(n,za);if(t<0)return;const e=n.subarray(t);let i;try{i=Kx(e)}catch{return}for(const s of i.entries()){if(s.type!=="stream"||!Jh(s.name))continue;const o=i.readStream(s.name);if(!(o!=null&&o.length))continue;const a=tu(o,{allowMetafile:!1});if(a)return a}const r=["CONTENTS","Ole10Native","Ole10Native","Package"];for(const s of r){const o=i.readStream(s);if(!(o!=null&&o.length))continue;const a=xs(o);if(a)return a}for(const s of i.entries()){if(s.type!=="stream"||!Jh(s.name))continue;const o=i.readStream(s.name);if(!(o!=null&&o.length))continue;const a=tu(o,{allowMetafile:!0});if(a)return a;const c=Ua(o);if(c)return c}for(const s of i.entries()){if(s.type!=="stream")continue;const o=i.readStream(s.name);if(!(o!=null&&o.length))continue;const a=Ua(o);if(a)return a}}function Jh(n){return/olepres/i.test(n)||n.includes("OlePres")}function tu(n,t={}){if(n.length<28)return;const e=t.allowMetafile!==!1,i=new DataView(n.buffer,n.byteOffset,n.byteLength);let r=0;const s=i.getUint32(r,!0);r+=4;let o=0;if(s===4294967295)o=i.getUint32(r,!0),r+=4;else if(s===4294967294){if(r+4>n.length)return;const h=i.getUint32(r,!0);r+=4+h}else if(s>0&&s<65535)r+=s;else return;if(r+4>n.length)return;const a=i.getUint32(r,!0);if(r+=4,a>4&&(r+=a-4),r+=24,r+4>n.length)return;const c=i.getUint32(r,!0);if(r+=4,c<=0||r+c>n.length)return;const l=n.subarray(r,r+c);return zx(l,o,{allowMetafile:e})}function zx(n,t,e={}){const i=e.allowMetafile!==!1;if(!((t===Qh||t===Va)&&!i)){if(t===Fx){const s=op(n);if(s)return s}if(t===Dx){const s=xs(n);if(s)return s}if(i&&(t===Qh||t===Va)){const s=ja(n,t);if(s)return s}if(i){const s=ja(n);if(s)return s}return xs(n)}}function ja(n,t){let e=n;if(t===Va&&n.length>30){const r=n.subarray(12);Se(r)&&(e=r)}if(Se(e)){const r=np(e);if(r)return new Blob([xi(r)],{type:Wn})}const i=ip(n);if(i>=0&&To(n,i)){const r=Vx(n,i);if(r)return new Blob([xi(r)],{type:Wn});const o=new DataView(n.buffer,n.byteOffset+i,n.length-i).getUint32(48,!0);if(o>88&&i+o<=n.length)return new Blob([xi(n.subarray(i,i+o))],{type:Wn})}if(Se(e)){const r=jx(e);return r?new Blob([xi(r)],{type:Zi}):new Blob([xi(e)],{type:Zi})}}function xi(n){const t=new Uint8Array(n.length);return t.set(n),t}function Vx(n,t){if(!To(n,t))return;const e=new DataView(n.buffer,n.byteOffset+t,n.length-t),i=e.getUint32(48,!0),r=e.getUint32(52,!0);let s=0;for(let o=0;o<r;o++){if(s+8>i)return;const a=e.getUint32(s,!0),c=e.getUint32(s+4,!0);if(c<8||s+c>i)return;if(s+=c,a===14)return n.subarray(t,t+s)}}function jx(n){let t=0;const e=new DataView(n.buffer,n.byteOffset,n.byteLength);if(n.length>=40&&e.getUint32(0,!0)===2596720087&&(t=22),!Se(n.subarray(t)))return;const i=new DataView(n.buffer,n.byteOffset+t,n.length-t),r=i.getUint16(2,!0),s=i.getUint32(6,!0),o=t+s*2;if(o>n.length)return;let a=t+r*2;const c=o;let l=0;for(;a+6<=c&&l<5e5;){const h=e.getUint32(a,!0),u=e.getUint16(a+4,!0);if(h<3||a+h*2>c)return;if(a+=h*2,l++,u===0)return n.subarray(0,a)}}function Ua(n){const t=xs(n);if(t)return t;if(_s(n)||Se(n))return ja(n)}function xs(n){const t=Ux(n);if(t)return t;const e=Gx(n);if(e)return e;const i=Hx(n);if(i)return i;const r=Wx(n);if(r)return r;const s=$x(n);if(s)return s}function Ux(n){for(let t=0;t<n.length-14;t++){if(n[t]!==66||n[t+1]!==77)continue;const e=new DataView(n.buffer,n.byteOffset+t,n.length-t),i=e.getUint32(2,!0);if(i<14||i>n.length-t)continue;const r=e.getUint32(10,!0);if(!(r<14||r>=i))return new Blob([n.subarray(t,t+i)],{type:"image/bmp"})}}function Gx(n){const e=Qi(n,[137,80,78,71,13,10,26,10]);if(!(e<0)){for(let i=e+8;i+12<=n.length;i++)if(n[i+4]===73&&n[i+5]===69&&n[i+6]===78&&n[i+7]===68){const r=i+12;return new Blob([n.subarray(e,r)],{type:"image/png"})}return new Blob([n.subarray(e)],{type:"image/png"})}}function Hx(n){const t=Qi(n,[255,216,255]);if(!(t<0)){for(let e=t+3;e+1<n.length;e++)if(n[e]===255&&n[e+1]===217)return new Blob([n.subarray(t,e+2)],{type:"image/jpeg"})}}function Wx(n){const t=Qi(n,[71,73,70,56,55,97]),e=Qi(n,[71,73,70,56,57,97]),i=t>=0?t:e;if(!(i<0)){for(let r=i+6;r<n.length;r++)if(n[r]===59)return new Blob([n.subarray(i,r+1)],{type:"image/gif"});return new Blob([n.subarray(i)],{type:"image/gif"})}}function $x(n){for(let t=0;t+40<=n.length;t++){const e=new DataView(n.buffer,n.byteOffset+t,n.length-t),i=e.getUint32(0,!0);if(i!==40)continue;const r=e.getInt32(4,!0),s=e.getInt32(8,!0),o=e.getUint16(12,!0),a=e.getUint16(14,!0),c=e.getUint32(16,!0),l=e.getUint32(20,!0),h=e.getUint32(32,!0);if(r<=0||r>65536||s===0||Math.abs(s)>65536||o!==1||![1,4,8,16,24,32].includes(a)||c!==0&&c!==3)continue;const u=sp(i,a,c,h),d=Math.abs(s),g=r*a+31>>5<<2,f=l>0?l:g*d,p=u+f;if(!(p<=40||t+p>n.length))return op(n.subarray(t,t+p))}}function sp(n,t,e,i){let r=0;return t>8&&e===3&&(r+=12),i>0?r+=i*4:t<=8&&(r+=(1<<t)*4),n+r}function op(n){if(n.length<40)return;const e=new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,!0);if(e!==40&&e!==12)return;const i=14+n.length,r=new Uint8Array(14),s=new DataView(r.buffer);r[0]=66,r[1]=77,s.setUint32(2,i,!0),s.setUint32(10,14+qx(n),!0);const o=new Uint8Array(i);return o.set(r,0),o.set(n,14),new Blob([o],{type:"image/bmp"})}function qx(n){const t=new DataView(n.buffer,n.byteOffset,n.byteLength),e=t.getUint32(0,!0);if(e===12){const o=t.getUint16(10,!0),a=o<=8?1<<o:0;return e+a*3}const i=t.getUint16(14,!0),r=t.getUint32(16,!0),s=t.getUint32(32,!0);return sp(e,i,r,s)}function Qi(n,t){t:for(let e=0;e<=n.length-t.length;e++){for(let i=0;i<t.length;i++)if(n[e+i]!==t[i])continue t;return e}return-1}function Kx(n){if(n.length<512)throw new Error("CFB too small");for(let P=0;P<za.length;P++)if(n[P]!==za[P])throw new Error("Not a CFB document");const t=new DataView(n.buffer,n.byteOffset,n.byteLength),i=1<<t.getUint16(30,!0);if(i!==512&&i!==4096)throw new Error("Unsupported CFB sector size");const r=t.getUint32(44,!0),s=t.getUint32(48,!0),o=t.getUint32(56,!0),a=t.getUint32(60,!0),c=t.getUint32(64,!0),l=t.getUint32(68,!0),h=t.getUint32(72,!0),u=[];for(let P=0;P<109;P++){const v=t.getUint32(76+P*4,!0);v<=4294967290&&u.push(v)}let d=l;for(let P=0;P<h&&d<=4294967290;P++){const v=(d+1)*i;if(v+i>n.length)break;const k=i/4-1;for(let L=0;L<k;L++){const O=t.getUint32(v+L*4,!0);O<=4294967290&&u.push(O)}d=t.getUint32(v+k*4,!0)}const g=[];for(let P=0;P<Math.min(r,u.length);P++){const k=(u[P]+1)*i;if(k+i>n.length)break;const L=i/4;for(let O=0;O<L;O++)g.push(t.getUint32(k+O*4,!0))}const f=Tr(g,s,4096),p=Lr(n,f,i),m=[],y=Math.floor(p.length/ia);for(let P=0;P<y;P++){const v=P*ia,k=new DataView(p.buffer,p.byteOffset+v,ia),L=k.getUint16(64,!0);if(L<2||L>64)continue;const O=Math.floor((L-2)/2);let R="";for(let W=0;W<O;W++)R+=String.fromCharCode(k.getUint16(W*2,!0));const N=k.getUint8(66),it=k.getUint32(116,!0),$=k.getUint32(120,!0),U=k.getUint32(124,!0),J=U===0?$:$+U*4294967296;let E="unknown";N===5?E="root":N===1?E="storage":N===2&&(E="stream"),m.push({name:R,type:E,size:J,startSector:it})}const b=m.find(P=>P.type==="root"),_=[];if(c>0&&a<=4294967290){const P=Tr(g,a,c),v=Lr(n,P,i),k=new DataView(v.buffer,v.byteOffset,v.byteLength);for(let L=0;L+4<=v.length;L+=4)_.push(k.getUint32(L,!0))}let w;if(b&&b.size>0){const P=Tr(g,b.startSector,65536);w=Lr(n,P,i).subarray(0,b.size)}return{entries:()=>m,readStream:P=>{const v=m.find(L=>L.type==="stream"&&(L.name===P||L.name.toLowerCase()===P.toLowerCase()));if(!v||v.size<=0||v.size>Xx)return;if(v.size<o&&w&&_.length>0){const O=ap(_,v.startSector,65536),R=new Uint8Array(v.size);let N=0;for(const it of O){if(N>=v.size)break;const $=it*64,U=Math.min($+64,w.length);if($>=w.length)break;const J=w.subarray($,U);R.set(J.subarray(0,Math.min(J.length,v.size-N)),N),N+=J.length}return R.subarray(0,Math.min(N,v.size))}const k=Tr(g,v.startSector,65536);return Lr(n,k,i).subarray(0,v.size)}}}function Tr(n,t,e){return ap(n,t,e)}function ap(n,t,e){const i=[];let r=t;const s=new Set;for(;r<=4294967290&&i.length<e&&!(s.has(r)||(s.add(r),i.push(r),r>=n.length));)r=n[r];return i}function Lr(n,t,e){const i=new Uint8Array(t.length*e);let r=0;for(const s of t){const o=(s+1)*e,a=Math.min(o+e,n.length);if(o>=n.length)break;i.set(n.subarray(o,a),r),r+=e}return i}const bl=class bl extends nt{};bl.typeName="Frame";let ws=bl;const _l=class _l extends ws{constructor(){super(),this._oleVersion=0}get dxfTypeName(){return"OLEFRAME"}get oleVersion(){return this._oleVersion}set oleVersion(t){this._oleVersion=t}getOleObject(){return this._oleObject?new Uint8Array(this._oleObject):void 0}setOleObject(t){t==null?this._oleObject=void 0:this._oleObject=t instanceof ArrayBuffer?new Uint8Array(t.slice(0)):new Uint8Array(t),this.onOleObjectChanged()}loadOleObjectFromDxf(t,e){e!=null&&e.length?t!=null&&t>0&&t<e.length?this._oleObject=e.subarray(0,t):this._oleObject=new Uint8Array(e):this._oleObject=void 0,this.onOleObjectChanged()}get oleObjectData(){return this._oleObject}onOleObjectChanged(){}getOleProperties(){return{groupName:"ole",properties:[{name:"oleVersion",type:"int",editable:!0,accessor:{get:()=>this.oleVersion,set:t=>{this.oleVersion=t}}}]}}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),this.getOleProperties()]}}get geometricExtents(){return new j}subWorldDraw(t){}dxfOutFields(t){var e;if(super.dxfOutFields(t),t.writeSubclassMarker("AcDbOleFrame"),t.writeInt16(70,this._oleVersion),(e=this._oleObject)!=null&&e.length){t.writeInt32(90,this._oleObject.length);let i=0;for(;i<this._oleObject.length;){const r=this._oleObject.subarray(i,i+127);t.writeString(310,bo(r)),i+=127}}return t.writeString(1,"OLE"),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbOleFrame");const e=[];let i;const r=()=>{e.length>0&&this.loadOleObjectFromDxf(i,ar(e))};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;const o=Number(s.code),a=Number(s.value);switch(o){case 1:break;case 70:this.oleVersion=a;break;case 90:i=a;break;case 310:s.value instanceof Uint8Array?e.push(s.value):e.push(String(s.value));break}}return r(),this}};_l.typeName="OleFrame";let Ji=_l;var Ri=(n=>(n[n.Link=1]="Link",n[n.Embedded=2]="Embedded",n[n.Static=3]="Static",n))(Ri||{}),vs=(n=>(n[n.ModelSpace=0]="ModelSpace",n[n.PaperSpace=1]="PaperSpace",n))(vs||{});const xl=class xl extends Ji{constructor(){super(),this._upperLeft=new x,this._lowerRight=new x,this._rotation=0,this._scaleWidth=1,this._scaleHeight=1,this._lockAspect=!1,this._outputQuality=0,this._autoOutputQuality=0,this._oleObjectType=2,this._tileMode=0,this._userType="",this._linkName="",this._linkPath="",this._oleClientItem=null,this._imageResolved=!1}get dxfTypeName(){return"OLE2FRAME"}get upperLeftCorner(){return this._upperLeft}set upperLeftCorner(t){this._upperLeft.copy(t)}get lowerRightCorner(){return this._lowerRight}set lowerRightCorner(t){this._lowerRight.copy(t)}getLocation(t){return t?t.copy(this._upperLeft):this._upperLeft.clone()}setLocation(t){const e=t.x-this._upperLeft.x,i=t.y-this._upperLeft.y,r=(t.z??0)-this._upperLeft.z;this._upperLeft.copy(t),this._lowerRight.x+=e,this._lowerRight.y+=i,this._lowerRight.z+=r}position(){return{upperLeft:this._upperLeft.clone(),upperRight:this.cornerUpperRight(),lowerLeft:this.cornerLowerLeft(),lowerRight:this._lowerRight.clone()}}setPosition(t){this._upperLeft.copy(t.upperLeft),this._lowerRight.copy(t.lowerRight)}wcsWidth(){return Math.abs(this._lowerRight.x-this._upperLeft.x)}setWcsWidth(t){const e=this._lowerRight.x>=this._upperLeft.x?1:-1;this._lowerRight.x=this._upperLeft.x+e*Math.abs(t),this._lockAspect&&this.syncHeightFromAspect()}wcsHeight(){return Math.abs(this._upperLeft.y-this._lowerRight.y)}setWcsHeight(t){const e=this._upperLeft.y>=this._lowerRight.y?1:-1;this._lowerRight.y=this._upperLeft.y-e*Math.abs(t),this._lockAspect&&this.syncWidthFromAspect()}scaleWidth(){return this._scaleWidth}setScaleWidth(t){this._scaleWidth=t}scaleHeight(){return this._scaleHeight}setScaleHeight(t){this._scaleHeight=t}rotation(){return this._rotation}setRotation(t){this._rotation=t}lockAspect(){return this._lockAspect}setLockAspect(t){this._lockAspect=!!t}outputQuality(){return this._outputQuality}setOutputQuality(t){this._outputQuality=t&255}autoOutputQuality(){return this._autoOutputQuality}setAutoOutputQuality(t){this._autoOutputQuality=t&255}getType(){return this._oleObjectType}setType(t){this._oleObjectType=t}get oleObjectType(){return this._oleObjectType}set oleObjectType(t){this._oleObjectType=t}get tileMode(){return this._tileMode}set tileMode(t){this._tileMode=t}getUserType(){return this._userType}setUserType(t){this._userType=t}get userType(){return this._userType}set userType(t){this._userType=t}getLinkName(){return this._linkName}setLinkName(t){this._linkName=t}getLinkPath(){return this._linkPath}setLinkPath(t){this._linkPath=t}getOleClientItem(){return this._oleClientItem}setOleClientItem(t){this._oleClientItem=t??null}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.upperLeftCorner.x,set:t=>{this.setLocation({x:t,y:this.upperLeftCorner.y,z:this.upperLeftCorner.z})}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.upperLeftCorner.y,set:t=>{this.setLocation({x:this.upperLeftCorner.x,y:t,z:this.upperLeftCorner.z})}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.upperLeftCorner.z,set:t=>{this.setLocation({x:this.upperLeftCorner.x,y:this.upperLeftCorner.y,z:t})}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation(),set:t=>{this.setRotation(t)}}},{name:"width",type:"float",editable:!0,accessor:{get:()=>this.wcsWidth(),set:t=>{this.setWcsWidth(t)}}},{name:"height",type:"float",editable:!0,accessor:{get:()=>this.wcsHeight(),set:t=>{this.setWcsHeight(t)}}},{name:"scaleWidth",type:"float",editable:!0,accessor:{get:()=>this.scaleWidth(),set:t=>{this.setScaleWidth(t)}}},{name:"scaleHeight",type:"float",editable:!0,accessor:{get:()=>this.scaleHeight(),set:t=>{this.setScaleHeight(t)}}},{name:"lockAspect",type:"boolean",editable:!0,accessor:{get:()=>this.lockAspect(),set:t=>{this.setLockAspect(t)}}}]},{groupName:"ole",properties:[...this.getOleProperties().properties,{name:"userType",type:"string",editable:!0,accessor:{get:()=>this.userType,set:t=>{this.userType=t}}},{name:"oleObjectType",type:"enum",editable:!0,options:[{label:Ri[1],value:1},{label:Ri[2],value:2},{label:Ri[3],value:3}],accessor:{get:()=>this.oleObjectType,set:t=>{this.oleObjectType=t}}},{name:"tileMode",type:"enum",editable:!0,options:[{label:vs[0],value:0},{label:vs[1],value:1}],accessor:{get:()=>this.tileMode,set:t=>{this.tileMode=t}}},{name:"linkName",type:"string",editable:!0,accessor:{get:()=>this.getLinkName(),set:t=>{this.setLinkName(t)}}},{name:"linkPath",type:"string",editable:!0,accessor:{get:()=>this.getLinkPath(),set:t=>{this.setLinkPath(t)}}},{name:"outputQuality",type:"int",editable:!0,accessor:{get:()=>this.outputQuality(),set:t=>{this.setOutputQuality(t)}}},{name:"autoOutputQuality",type:"int",editable:!0,accessor:{get:()=>this.autoOutputQuality(),set:t=>{this.setAutoOutputQuality(t)}}}]}]}}get geometricExtents(){return new j().setFromPoints(this.boundaryPath())}subGetIntersectCurves(){return Wt(this.boundaryPath().slice(0,4),!0)}subGetGripPoints(){return this.boundaryPath().slice(0,4)}subMoveGripPointsAt(t,e){const i=this.boundaryPath().slice(0,4);return pi(t,e,i),Pt(t,r=>{r===0?this._upperLeft.copy(i[0]):r===2?this._lowerRight.copy(i[2]):r===1?(this._upperLeft.y=i[1].y,this._lowerRight.x=i[1].x,this._upperLeft.z=i[1].z,this._lowerRight.z=i[1].z):r===3&&(this._upperLeft.x=i[3].x,this._lowerRight.y=i[3].y,this._upperLeft.z=i[3].z,this._lowerRight.z=i[3].z)}),this}subGetOsnapPoints(t,e,i,r){if(t===I.Insertion){r.push(this._upperLeft.clone());return}const s=this.boundaryPath().slice(0,4);if(t===I.EndPoint){r.push(...s);return}_o(s,!0,t,e,r)}transformBy(t){const e=this._lowerRight.x-this._upperLeft.x,i=this._upperLeft.y-this._lowerRight.y,r=Math.cos(this._rotation),s=Math.sin(this._rotation),o=this._upperLeft.clone(),a=o.clone().add(new A(e*r,e*s,0)),c=o.clone().add(new A(i*s,-i*r,0));o.applyMatrix4(t),a.applyMatrix4(t),c.applyMatrix4(t);const l=new A().subVectors(a,o),h=new A().subVectors(c,o);return this._upperLeft.copy(o),this._rotation=Math.atan2(l.y,l.x),this._lowerRight.set(o.x+l.length(),o.y-h.length(),o.z),this}get image(){return this.resolveImage()}subWorldDraw(t){const e=this.resolveImage(),i=this.imageBoundaryPath();return e?t.image(e,{boundary:i,roation:this._rotation}):Jf(t,this.boundaryPath())}onOleObjectChanged(){this._image=void 0,this._imageResolved=!1,this.applyGeometryFromOleObjectData()}applyGeometryFromOleObjectData(){const t=tp(this.oleObjectData);t&&(this._upperLeft.copy(t.upperLeft),this._lowerRight.copy(t.lowerRight))}resolveImage(){return this._imageResolved?this._image:(this._imageResolved=!0,this._image=rp(this.oleObjectData),this._image)}imageBoundaryPath(){const t=this.boundaryPath(),e=[t[3],t[2],t[1],t[0]];return e.push(e[0].clone()),e}dxfOutFields(t){nt.prototype.dxfOutFields.call(this,t),t.writeSubclassMarker("AcDbOle2Frame"),t.writeInt16(70,this.oleVersion),this._userType&&t.writeString(3,this._userType),t.writePoint3d(10,this._upperLeft),t.writePoint3d(11,this._lowerRight),t.writeInt16(71,this._oleObjectType),t.writeInt16(72,this._tileMode),this._outputQuality&&t.writeInt16(73,this._outputQuality);const e=this.getOleObject();if(e!=null&&e.length){t.writeInt32(90,e.length);let i=0;for(;i<e.length;){const r=e.subarray(i,i+127);t.writeString(310,bo(r)),i+=127}}return t.writeString(1,"OLE"),this}dxfInFields(t){nt.prototype.dxfInFields.call(this,t),t.atSubclassData("AcDbOle2Frame");let e=this._upperLeft.x,i=this._upperLeft.y,r=this._upperLeft.z,s=this._lowerRight.x,o=this._lowerRight.y,a=this._lowerRight.z;const c=[];let l;const h=()=>{this.upperLeftCorner=new x(e,i,r),this.lowerRightCorner=new x(s,o,a),c.length>0&&this.loadOleObjectFromDxf(l,ar(c))};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const u=t.readItem();if(!u)break;const d=Number(u.code),g=Number(u.value);switch(d){case 1:break;case 3:this.userType=String(u.value);break;case 10:e=g;break;case 20:i=g;break;case 30:r=g;break;case 11:s=g;break;case 21:o=g;break;case 31:a=g;break;case 70:this.oleVersion=g;break;case 71:this.oleObjectType=g;break;case 72:this.tileMode=g;break;case 73:this.setOutputQuality(g);break;case 90:l=g;break;case 310:u.value instanceof Uint8Array?c.push(u.value):c.push(String(u.value));break}}return h(),this}cornerUpperRight(){return new x(this._lowerRight.x,this._upperLeft.y,this._upperLeft.z)}cornerLowerLeft(){return new x(this._upperLeft.x,this._lowerRight.y,this._lowerRight.z)}boundaryPath(){const t=[this._upperLeft.clone(),this.cornerUpperRight(),this._lowerRight.clone(),this.cornerLowerLeft()];if(this._rotation!==0){const e=this._upperLeft;for(let i=1;i<t.length;i++)t[i].sub(e).applyMatrix4(new F().makeRotationZ(this._rotation)),t[i].add(e)}return t.push(t[0].clone()),t}syncHeightFromAspect(){const t=this.wcsWidth();if(t===0||this._scaleWidth===0)return;const e=this._scaleHeight/this._scaleWidth,i=t*e,r=this._upperLeft.y>=this._lowerRight.y?1:-1;this._lowerRight.y=this._upperLeft.y-r*Math.abs(i)}syncWidthFromAspect(){const t=this.wcsHeight();if(t===0||this._scaleHeight===0)return;const e=this._scaleWidth/this._scaleHeight,i=t*e,r=this._lowerRight.x>=this._upperLeft.x?1:-1;this._lowerRight.x=this._upperLeft.x+r*Math.abs(i)}};xl.typeName="Ole2Frame";let As=xl;const wl=class wl extends nt{constructor(){super(),this._thickness=0,this._normal=new A(0,0,1),this._ecsRotation=0,this._geo=new x}get dxfTypeName(){return"POINT"}get position(){return this._geo}set position(t){this._geo.set(t.x,t.y,t.z||0)}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get ecsRotation(){return this._ecsRotation}set ecsRotation(t){this._ecsRotation=t}get geometricExtents(){return new j().expandByPoint(this._geo)}subGetGripPoints(){return[this._geo]}subMoveGripPointsAt(t,e){return Ee(t,e,this._geo),this}subGetOsnapPoints(t,e,i,r){t===I.Node&&r.push(this._geo)}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}transformBy(t){return this._geo.applyMatrix4(t),this}get directBatchPrimitive(){var e;return(((e=this.database)==null?void 0:e.pdmode)??0)===0?"point":null}subWorldDraw(t){return t.point(this._geo,{displayMode:this.database.pdmode,displaySize:this.database.pdsize})}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbPoint"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,this.position),this.ecsRotation!==0&&t.writeAngle(50,this.ecsRotation),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbPoint");let e=this.position.x,i=this.position.y,r=this.position.z,s=this.thickness,o=this.ecsRotation*180/Math.PI,a=this.normal.x,c=this.normal.y,l=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const u=t.readItem();if(!u)break;const d=Number(u.code),g=Number(u.value);switch(d){case 10:e=g;break;case 20:i=g;break;case 30:r=g;break;case 39:s=g;break;case 50:o=g;break;case 210:a=g;break;case 220:c=g;break;case 230:l=g;break}}const h=new A(a,c,l);return h.lengthSq()>0&&this.normal.copy(h.normalize()),this.thickness=s,this.ecsRotation=o*Math.PI/180,this.position=new x(e,i,r),this}};wl.typeName="Point";let Ps=wl;const vl=class vl extends nt{constructor(){super(...arguments),this._originalDxfName="",this._originalClassName="",this._applicationName="",this._proxyEntityClassId=498,this._applicationEntityClassId=0,this._objectDrawingFormat=0,this._originalDataFormat=0,this._entityOrigins=[],this._worldTransform=new F}get dxfTypeName(){return"ACAD_PROXY_ENTITY"}get originalDxfName(){return this._originalDxfName}set originalDxfName(t){this._originalDxfName=t}get originalClassName(){return this._originalClassName}set originalClassName(t){this._originalClassName=t}get applicationName(){return this._applicationName}set applicationName(t){this._applicationName=t}get proxyEntityClassId(){return this._proxyEntityClassId}set proxyEntityClassId(t){this._proxyEntityClassId=t}get applicationEntityClassId(){return this._applicationEntityClassId}set applicationEntityClassId(t){this._applicationEntityClassId=t}get objectDrawingFormat(){return this._objectDrawingFormat}set objectDrawingFormat(t){this._objectDrawingFormat=t}get graphicsMetafileType(){return this._objectDrawingFormat}set graphicsMetafileType(t){this._objectDrawingFormat=t}get originalDataFormat(){return this._originalDataFormat}set originalDataFormat(t){this._originalDataFormat=t}get proxyGraphic(){return this._proxyGraphic}setProxyGraphic(t){this._proxyGraphic=t?new Uint8Array(t):void 0}get entityOrigins(){return this._entityOrigins}setEntityOrigins(t){this._entityOrigins=t.map(e=>new x(e.x,e.y,e.z))}get geometricExtents(){const t=this._proxyGraphic;if(!(t!=null&&t.length))return new j;const i=new Ca(t,{database:this.database,defaultLayer:this.layer}).scanExtents();if(i){const r=new j().setFromPoints(i);return this._worldTransform.equals(new F)||r.applyMatrix4(this._worldTransform),r}return new j}subGetGripPoints(){if(this._entityOrigins.length>0)return[...this._entityOrigins];const t=this.geometricExtents;return t.isEmpty()?[]:[new x(t.min.x,t.min.y,t.min.z),new x(t.max.x,t.max.y,t.max.z)]}subMoveGripPointsAt(t,e){return this._entityOrigins.length>0?(pi(t,e,this._entityOrigins),this):this.geometricExtents.isEmpty()?this:(Pt(t,r=>{r===0&&this.transformBy(F.makeTranslation(e))}),this)}transformBy(t){return this._entityOrigins.forEach(e=>e.applyMatrix4(t)),this._worldTransform.premultiply(t),this}subWorldDraw(t){const e=this._proxyGraphic;if(!(e!=null&&e.length))return;const r=new Ca(e,{database:this.database,defaultLayer:this.layer}).worldDraw(t);return r&&!this._worldTransform.equals(new F)&&r.applyMatrix(this._worldTransform),r}dxfOutFields(t){var e;if(super.dxfOutFields(t),t.writeSubclassMarker("AcDbProxyEntity"),this._originalDxfName&&t.writeString(1,this._originalDxfName),this._originalClassName&&t.writeString(3,this._originalClassName),t.writeInt32(90,this._proxyEntityClassId||498),this._applicationEntityClassId&&t.writeInt32(91,this._applicationEntityClassId),this._objectDrawingFormat&&t.writeInt32(95,this._objectDrawingFormat),t.writeInt16(70,this._originalDataFormat),(e=this._proxyGraphic)!=null&&e.length){t.writeInt32(160,this._proxyGraphic.length);let i=0;for(;i<this._proxyGraphic.length;){const r=this._proxyGraphic.subarray(i,i+127);t.writeString(310,bo(r)),i+=127}}return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbProxyEntity");const e=[];let i;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code),o=Number(r.value);switch(s){case 1:this.originalDxfName=String(r.value);break;case 3:this.originalClassName=String(r.value);break;case 70:this.originalDataFormat=o;break;case 90:this.proxyEntityClassId=o;break;case 91:this.applicationEntityClassId=o;break;case 95:this.objectDrawingFormat=o;break;case 160:i=o;break;case 310:r.value instanceof Uint8Array?e.push(r.value):e.push(String(r.value));break}}return e.length>0&&this.loadProxyGraphicFromDxf(i,e),this}loadProxyGraphicFromDxf(t,e){const i=E_(t,e);i&&this.setProxyGraphic(i)}};vl.typeName="ProxyEntity";let Ss=vl;var cp=(n=>(n[n.Invalid=0]="Invalid",n[n.Rect=1]="Rect",n[n.Poly=2]="Poly",n))(cp||{}),lp=(n=>(n[n.Show=1]="Show",n[n.ShowUnAligned=2]="ShowUnAligned",n[n.Clip=4]="Clip",n[n.Transparent=8]="Transparent",n))(lp||{});const Al=class Al extends nt{constructor(){super(),this._classVersion=0,this._clipMode=0,this._brightness=50,this._contrast=50,this._fade=0,this._width=0,this._height=0,this._position=new x,this._scale=new ft(1,1),this._rotation=0,this._imageSize=new M,this._clipBoundaryType=1,this._clipBoundary=[],this._isClipped=!1,this._isShownClipped=!1,this._isImageShown=!0,this._isImageTransparent=!1,this._imageDefId=""}get dxfTypeName(){return"IMAGE"}get brightness(){return this._brightness}set brightness(t){this._brightness=t}get contrast(){return this._contrast}set contrast(t){this._contrast=t}get fade(){return this._fade}set fade(t){this._fade=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get position(){return this._position}set position(t){this._position=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get scale(){return this._scale}set scale(t){this._scale.copy(t)}get imageSize(){return this._imageSize}set imageSize(t){this._imageSize.copy(t)}get clipBoundaryType(){return this._clipBoundaryType}set clipBoundaryType(t){this._clipBoundaryType=t}get clipBoundary(){return this._clipBoundary}set clipBoundary(t){this._clipBoundary=[],this._clipBoundary.push(...t)}get isClipped(){return this._isClipped}set isClipped(t){this._isClipped=t}get isShownClipped(){return this._isShownClipped}set isShownClipped(t){this._isShownClipped=t}get isImageShown(){return this._isImageShown}set isImageShown(t){this._isImageShown=t}get isImageTransparent(){return this._isImageTransparent}set isImageTransparent(t){this._isImageTransparent=t}get classVersion(){return this._classVersion}set classVersion(t){this._classVersion=t}get clipMode(){return this._clipMode}set clipMode(t){this._clipMode=t}get image(){return this._image}set image(t){this._image=t}get imageDefId(){return this._imageDefId}set imageDefId(t){this._imageDefId=t}get imageFileName(){if(this._imageDefId){const t=this.database.objects.imageDefinition,e=t.getIdAt(this._imageDefId)??t.getAt(this._imageDefId);if(e)return e.sourceFileName}return""}get imageDisplayName(){const t=this.imageFileName.trim();if(!t)return"";const e=t.replace(/\\/g,"/").split("/");return e[e.length-1]||t}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"name",type:"string",editable:!1,accessor:{get:()=>this.imageFileName||this.imageDisplayName}},{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"width",type:"float",editable:!0,accessor:{get:()=>this.width,set:t=>{this.width=t}}},{name:"height",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}}]},{groupName:"image",properties:[{name:"brightness",type:"int",editable:!0,accessor:{get:()=>this.brightness,set:t=>{this.brightness=t}}},{name:"contrast",type:"int",editable:!0,accessor:{get:()=>this.contrast,set:t=>{this.contrast=t}}},{name:"fade",type:"int",editable:!0,accessor:{get:()=>this.fade,set:t=>{this.fade=t}}},{name:"isImageShown",type:"boolean",editable:!0,accessor:{get:()=>this.isImageShown,set:t=>{this.isImageShown=t}}},{name:"isImageTransparent",type:"boolean",editable:!0,accessor:{get:()=>this.isImageTransparent,set:t=>{this.isImageTransparent=t}}},{name:"isClipped",type:"boolean",editable:!0,accessor:{get:()=>this.isClipped,set:t=>{this.isClipped=t}}},{name:"isShownClipped",type:"boolean",editable:!0,accessor:{get:()=>this.isShownClipped,set:t=>{this.isShownClipped=t}}}]}]}}get geometricExtents(){const t=new j;return t.min.copy(this._position),t.max.set(this._position.x+this._width,this._position.y+this._height,0),t}subGetIntersectCurves(){return Wt(this.boundaryPath(),!0)}subGetGripPoints(){return this.boundaryPath()}subMoveGripPointsAt(t,e){return Pt(t,i=>{this.isClipped&&this._clipBoundary.length>3?this.moveClippedBoundaryGripAt(i,e):this.moveUnclippedGripAt(i,e)}),this}subGetOsnapPoints(t,e,i,r){if(t===I.Insertion){r.push(this._position);return}const s=this.boundaryPath();if(s.length===0)return;let o=s;if(s.length>1){const a=s[0],c=s[s.length-1];a.x===c.x&&a.y===c.y&&(a.z||0)===(c.z||0)&&(o=s.slice(0,-1))}if(t===I.EndPoint){r.push(...o);return}_o(o,!0,t,e,r)}subWorldDraw(t){const e=this.boundaryPath();if(this._image&&this.isImageShown)return t.image(this._image,{boundary:e,roation:this._rotation});const i=Jf(t,e),r=this.drawMissingImageLabel(t,e);return r?i?t.group([i,r]):r:i}drawMissingImageLabel(t,e){if(this._image||e.length<3)return;let i="";try{i=this.imageFileName.trim()}catch{return}if(!i)return;const r=this.boundaryCenter(e),{width:s,height:o,rotation:a}=this.boundaryLocalSize(e);if(s<=0||o<=0)return;const c=i.replace(/\\/g,"/"),l=this.fitLabelTextHeight(c,s,o);if(l<=0)return;const h=F1(i),u=Ve(c,l),d={text:h,height:l,width:Math.max(u,l),position:r,rotation:a,attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter};try{return t.mtext(d,this.resolveLabelTextStyle())}catch{return}}resolveLabelTextStyle(){const t=this.database.tables.textStyleTable,e=t.resolveAt(ht)??t.resolveAt("STANDARD");return e?e.textStyle:{name:ht,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:0,font:"txt",bigFont:""}}fitLabelTextHeight(t,e,i){const r=e*.85,s=i*.85;if(r<=0||s<=0||!t)return 0;let o=0,a=s;for(let c=0;c<24;c++){const l=(o+a)/2;Ve(t,l)<=r&&l<=s?o=l:a=l}return o}boundaryCenter(t){let e=t.length;e>1&&t[0].x===t[e-1].x&&t[0].y===t[e-1].y&&(e-=1);let i=0,r=0,s=0;for(let o=0;o<e;o++)i+=t[o].x,r+=t[o].y,s+=t[o].z;return new x(i/e,r/e,s/e)}boundaryLocalSize(t){let e=t.length;if(e>1&&t[0].x===t[e-1].x&&t[0].y===t[e-1].y&&(e-=1),e<2)return{width:this._width,height:this._height,rotation:this._rotation};const i=t[0],r=t[1],s=r.x-i.x,o=r.y-i.y,a=Math.hypot(s,o),c=Math.atan2(o,s);if(a<=0)return{width:this._width,height:this._height,rotation:this._rotation};const l=s/a,h=o/a;let u=0,d=0;for(let f=0;f<e;f++){const p=t[f].x-i.x,m=t[f].y-i.y,y=p*-h+m*l;u=Math.min(u,y),d=Math.max(d,y)}const g=Math.max(d-u,0);return{width:a>0?a:this._width,height:g>0?g:this._height,rotation:c}}transformBy(t){const e=this._width*this._scale.x,i=this._height*this._scale.y,r=new A(e*Math.cos(this._rotation),e*Math.sin(this._rotation),0),s=new A(-i*Math.sin(this._rotation),i*Math.cos(this._rotation),0),o=this._position.clone(),a=this._position.clone().add(r),c=this._position.clone().add(s);o.applyMatrix4(t),a.applyMatrix4(t),c.applyMatrix4(t);const l=new A(a).sub(o),h=new A(c).sub(o);return this._position.copy(o),this._rotation=Math.atan2(l.y,l.x),this._width=l.length(),this._height=h.length(),this._scale.set(1,1),this}moveUnclippedGripAt(t,e){const i=this._position.x,r=this._position.y,s=this._width,o=this._height;switch(t){case 0:this._position.add(e);break;case 1:{const a=i,c=r+o,l=i+s+e.x,h=r+e.y;this._position.x=a,this._position.y=h,this._width=l-a,this._height=c-h;break}case 2:{const a=i+s+e.x,c=r+o+e.y;this._width=a-i,this._height=c-r;break}case 3:{const a=i+s,c=r,l=i+e.x,h=r+o+e.y;this._position.x=l,this._position.y=c,this._width=a-l,this._height=h-c;break}}}moveClippedBoundaryGripAt(t,e){if(t<0||t>=this._clipBoundary.length)return;const i=this._width,r=this._height,s=new It;s.setFromPoints(this._clipBoundary);const o=new M;o.setX(this._position.x-s.min.x*i),o.setY(this._position.y-s.min.y*r);const a=this._clipBoundary[t],c=a.x*i+o.x+e.x,l=a.y*r+o.y+e.y;a.x=(c-o.x)/i,a.y=(l-o.y)/r}boundaryPath(){const t=[];if(this.isClipped&&this._clipBoundary.length>3){const e=this._width,i=this._height,r=new It;r.setFromPoints(this._clipBoundary);const s=new M;s.setX(this._position.x-r.min.x*e),s.setY(this._position.y-r.min.y*i),this._clipBoundary.forEach(o=>{const a=o.x*e+s.x,c=o.y*i+s.y;t.push(new x(a,c,this._position.z))})}else{if(t.push(this._position),t.push(this._position.clone().setX(this._position.x+this._width)),t.push(this._position.clone().set(this._position.x+this._width,this._position.y+this._height,this._position.z)),t.push(this._position.clone().setY(this._position.y+this._height)),this._rotation>0){eu.copy(t[1]);for(let e=1;e<4;e++)Mr.copy(t[e]),Mr.rotateAround(eu,this._rotation),t[e].setX(Mr.x),t[e].setY(Mr.y)}t.push(t[0])}return t}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImage"),t.writeInt32(90,this.classVersion),t.writePoint3d(10,this.position);const e=this.width*this.scale.x,i=this.height*this.scale.y,r=this._imageSize.x>0&&this._imageSize.y>0?this._imageSize:{x:e,y:i},s=r.x>0?e/r.x:e,o=r.y>0?i/r.y:i,a=Math.cos(this._rotation),c=Math.sin(this._rotation);t.writePoint3d(11,{x:s*a,y:s*c,z:0}),t.writePoint3d(12,{x:-o*c,y:o*a,z:0}),t.writePoint2d(13,r),t.writeObjectId(340,this.imageDefId);const l=(this.isImageShown?1:0)|(this.isShownClipped?4:0)|(this.isImageTransparent?8:0);if(t.writeInt16(70,l),t.writeInt16(280,this.isClipped?1:0),t.writeInt16(281,this.brightness),t.writeInt16(282,this.contrast),t.writeInt16(283,this.fade),t.writeInt16(71,this.clipBoundaryType),this.isClipped){t.writeInt16(91,this.clipBoundary.length);for(const h of this.clipBoundary)t.writePoint2d(14,h)}return t.writeInt16(290,this.clipMode),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbRasterImage");let e=this.position.x,i=this.position.y,r=this.position.z,s=1,o=0,a=0,c=0,l=1,h=0,u=this.imageSize.x,d=this.imageSize.y;const g=[];let f=null;const p=()=>{f&&(g.push(new M(f.x,f.y)),f=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const m=t.readItem();if(!m)break;const y=Number(m.code),b=Number(m.value);switch(y){case 10:e=b;break;case 20:i=b;break;case 30:r=b;break;case 11:s=b;break;case 21:o=b;break;case 31:a=b;break;case 12:c=b;break;case 22:l=b;break;case 32:h=b;break;case 13:u=b;break;case 23:d=b;break;case 14:p(),f={x:b,y:0};break;case 24:f&&(f.y=b);break;case 70:{this.isImageShown=(b&3)!==0,this.isShownClipped=(b&4)!==0,this.isImageTransparent=(b&8)!==0;break}case 71:this.clipBoundaryType=b;break;case 90:this.classVersion=b;break;case 91:break;case 280:this.isClipped=b!==0;break;case 281:this.brightness=b;break;case 282:this.contrast=b;break;case 283:this.fade=b;break;case 290:this.clipMode=b;break;case 340:this.imageDefId=String(m.value);break}}return p(),this.applyRasterImageDxfIn(e,i,r,s,o,a,c,l,h,u,d,g),this}applyRasterImageDxfIn(t,e,i,r,s,o,a,c,l,h,u,d){this.position.copy({x:t,y:e,z:i}),this.imageSize.copy({x:h,y:u});const g=Math.hypot(r,s,o),f=Math.hypot(a,c,l);this.width=g*(h||1),this.height=f*(u||1),this.rotation=Math.atan2(s,r),d.length>0&&(this.clipBoundary=d)}};Al.typeName="RasterImage";let tr=Al;const eu=new M,Mr=new M,eo=class eo extends Et{get dxfTypeName(){return"RAY"}constructor(){super(),this._basePoint=new x,this._unitDir=new A}get basePoint(){return this._basePoint}set basePoint(t){this._basePoint.copy(t)}get unitDir(){return this._unitDir}set unitDir(t){this._unitDir.copy(t)}get closed(){return!1}get area(){return 0}get geometricExtents(){const t=new j;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}subGetIntersectCurves(){const t=this._basePoint.clone().add(this._unitDir);return[{kind:"line",line:new Ct(this._basePoint,t),extent:"ray"}]}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}subMoveGripPointsAt(t,e){return Ee(t,e,this.basePoint),this}subGetOsnapPoints(t,e,i,r){const s=this.basePoint;if(t===I.EndPoint){r.push(s);return}const o=this.unitDir.clone();if(o.lengthSq()===0)return;o.normalize();const a=new Ct(s,s.clone().add(o));switch(t){case I.Nearest:{const c=a.project(e),h=new A(c).sub(s).dot(o);r.push(h<0?s:c);break}case I.Perpendicular:r.push(a.perpPoint(e));break}}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=[];return e.push(this.basePoint),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRay"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbRay");let e=this.basePoint.x,i=this.basePoint.y,r=this.basePoint.z,s=this.unitDir.x,o=this.unitDir.y,a=this.unitDir.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:i=h;break;case 30:r=h;break;case 11:s=h;break;case 21:o=h;break;case 31:a=h;break}}return this.basePoint=new x(e,i,r),this.unitDir=new A(s,o,a),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.basePoint,i=this.unitDir,r=Math.hypot(i.x,i.y);return r<=1e-9||(i.x*(t.y-e.y)-i.y*(t.x-e.x))/r>=0?1:-1}createOffsetCurve(t){const e=ud(this.basePoint,this.unitDir,t);if(!e)return null;const i=new eo;return i.basePoint=e,i.unitDir=this.unitDir.clone(),i}};eo.typeName="Ray";let ks=eo;const Pl=class Pl extends nt{get dxfTypeName(){return"SHAPE"}constructor(){super(),this._position=new x,this._size=1,this._name="",this._rotation=0,this._widthFactor=1,this._oblique=0,this._thickness=0,this._normal=new A(0,0,1),this._shapeNumber=0,this._styleName=""}get position(){return this._position}set position(t){this._position.copy(t)}get size(){return this._size}set size(t){this._size=t}get name(){return this._name}set name(t){this._name=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get widthFactor(){return this._widthFactor}set widthFactor(t){this._widthFactor=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get shapeNumber(){return this._shapeNumber}set shapeNumber(t){this._shapeNumber=t}get styleId(){var e,i,r;const t=(r=(i=(e=this.database)==null?void 0:e.tables)==null?void 0:i.textStyleTable)==null?void 0:r.resolveAt(this._styleName);return(t==null?void 0:t.objectId)??""}set styleId(t){var i,r,s;const e=(s=(r=(i=this.database)==null?void 0:i.tables)==null?void 0:r.textStyleTable)==null?void 0:s.getIdAt(t);e&&(this._styleName=e.name)}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get isPlanar(){return!0}get geometricExtents(){const t=Math.abs(this._size)/2,e=new j;return e.expandByPoint(this._position),t>0&&(e.expandByPoint(new x(this._position.x-t,this._position.y-t,this._position.z)),e.expandByPoint(new x(this._position.x+t,this._position.y+t,this._position.z))),e}subGetGripPoints(){return[this._position]}subMoveGripPointsAt(t,e){return Ee(t,e,this._position),this}subGetOsnapPoints(t,e,i,r){t===I.Insertion&&r.push(this._position)}transformBy(t){const e=new F().setFromExtrusionDirection(this._normal),i=new F().makeRotationZ(this._rotation),r=new F().multiplyMatrices(e,i),s=this._position.clone(),o=new x(this._widthFactor,0,0).applyMatrix4(r).add(s),a=new x(0,1,0).applyMatrix4(r).add(s),c=new x(0,0,1).applyMatrix4(r).add(s);s.applyMatrix4(t),o.applyMatrix4(t),a.applyMatrix4(t),c.applyMatrix4(t);const l=new A(o).sub(s),h=new A(a).sub(s),u=new A(c).sub(s);let d=new A().crossVectors(l,h);d.lengthSq()===0?d=this._normal.clone().transformDirection(t):d.normalize();const f=new F().setFromExtrusionDirection(d).clone().invert(),p=l.clone().applyMatrix4(f),m=h.length(),y=l.length();this._position.copy(s),this._normal.copy(d),y>0&&(this._rotation=Math.atan2(p.y,p.x)),m>0&&(this._size*=m,y>0&&(this._widthFactor*=y/m));const b=u.length();return b>0&&(this._thickness*=b),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"shape",properties:[{name:"name",type:"string",editable:!0,accessor:{get:()=>this.name,set:t=>{this.name=t}}},{name:"size",type:"float",editable:!0,accessor:{get:()=>this.size,set:t=>{this.size=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"widthFactor",type:"float",editable:!0,accessor:{get:()=>this.widthFactor,set:t=>{this.widthFactor=t}}},{name:"oblique",type:"float",editable:!0,accessor:{get:()=>this.oblique,set:t=>{this.oblique=t}}},{name:"shapeNumber",type:"int",editable:!0,accessor:{get:()=>this.shapeNumber,set:t=>{this.shapeNumber=t}}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}subWorldDraw(t,e){const i=this.getTextStyle(),r=i?{...i,widthFactor:this.widthFactor,obliqueAngle:this.oblique*180/Math.PI}:void 0,s={...this.renderGlyphIdentity(),size:this.size,position:this._position,rotation:this._rotation,directionVector:this._normal,widthFactor:this.widthFactor};return t.shape(s,r,e)}renderGlyphIdentity(){const t=this._name.trim(),e=Number(t);return t!==""&&Number.isInteger(e)&&e!==0&&String(e)===t?{shapeNumber:e}:{name:t||void 0,shapeNumber:this._shapeNumber!==0?this._shapeNumber:void 0}}getTextStyle(){const t=this.styleName.trim();if(!t)return;const e=this.database.tables.textStyleTable.resolveAt(t);return e==null?void 0:e.textStyle}get dxfShapeIdentity(){const t=this._name.trim();return t||(this._shapeNumber!==0?String(this._shapeNumber):"")}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbShape"),t.writePoint3d(10,this.position),t.writeDouble(40,this.size);const e=this.dxfShapeIdentity;return e&&t.writeString(2,e),t.writeAngle(50,this.rotation),t.writeDouble(41,this.widthFactor),t.writeAngle(51,this.oblique),t.writeDouble(39,this.thickness),this._styleName&&t.writeString(3,this._styleName),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbShape");let e=this.position.x,i=this.position.y,r=this.position.z,s=this.normal.x,o=this.normal.y,a=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:i=h;break;case 30:r=h;break;case 2:{const u=String(c.value).trim(),d=Number(u);u!==""&&Number.isInteger(d)&&d!==0&&String(d)===u?(this.shapeNumber=d,this.name=""):this.name=u;break}case 3:this.styleName=String(c.value);break;case 39:this.thickness=h;break;case 40:this.size=h;break;case 41:this.widthFactor=h;break;case 50:this.rotation=C.degToRad(h);break;case 51:this.oblique=C.degToRad(h);break;case 210:s=h;break;case 220:o=h;break;case 230:a=h;break}}return this.position={x:e,y:i,z:r},this.normal={x:s,y:o,z:a},this}};Pl.typeName="Shape";let Is=Pl;const zn=class zn extends Et{constructor(){super(),this._normal=new A(0,0,1),this._elevation=0,this._thickness=0,this._vertices=[new x,new x,new x,new x]}get dxfTypeName(){return"TRACE"}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return!0}get area(){return new rt(zn.boundaryPointsFromVertices(this._vertices),!0).area}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}getPointAt(t){return t<0?this._vertices[0]:t>3?this._vertices[3]:this._vertices[t]}setPointAt(t,e){if(t<0&&this._vertices[0].copy(e),t>3)return this._vertices[3].copy(e);this._vertices[t].copy(e)}get geometricExtents(){return new j().setFromPoints(this._vertices)}subGetIntersectCurves(){const t=this._vertices[0],e=this._vertices[1],i=this._vertices[2],r=this._vertices[3];return Wt([t,e,r,i],!0)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subMoveGripPointsAt(t,e){return pi(t,e,this._vertices),this}subGetOsnapPoints(t,e,i,r){const s=[this._vertices[0],this._vertices[1],this._vertices[3],this._vertices[2]];_o(s,!0,t,e,r)}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this._elevation=this._vertices[0].z,this}get directBatchPrimitive(){return"area"}subWorldDraw(t){const e=new rt(zn.boundaryPointsFromVertices(this._vertices),!0),i=new he;i.add(e);const r=t.subEntityTraits;return r.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.area(i)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTrace"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,jt(this.getPointAt(0),this.normal)),t.writePoint3d(11,jt(this.getPointAt(1),this.normal)),t.writePoint3d(12,jt(this.getPointAt(2),this.normal)),t.writePoint3d(13,jt(this.getPointAt(3),this.normal)),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbTrace");const e=[{x:this.getPointAt(0).x,y:this.getPointAt(0).y,z:this.getPointAt(0).z},{x:this.getPointAt(1).x,y:this.getPointAt(1).y,z:this.getPointAt(1).z},{x:this.getPointAt(2).x,y:this.getPointAt(2).y,z:this.getPointAt(2).z},{x:this.getPointAt(3).x,y:this.getPointAt(3).y,z:this.getPointAt(3).z}];let i=this.normal.x,r=this.normal.y,s=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const a=t.readItem();if(!a)break;const c=Number(a.code),l=Number(a.value);switch(c){case 10:case 11:case 12:case 13:e[c-10].x=l;break;case 20:case 21:case 22:case 23:e[c-20].y=l;break;case 30:case 31:case 32:case 33:e[c-30].z=l;break;case 39:this.thickness=l;break;case 210:i=l;break;case 220:r=l;break;case 230:s=l;break}}const o=new A(i,r,s);return o.lengthSq()>0&&this.normal.copy(o.normalize()),e.forEach((a,c)=>this.setPointAt(c,te(a,this.normal))),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectBoundary2d();return e.length<2?1:Dt.from2dPoints(e,!0).getOffsetSideAtPoint(t)}createOffsetCurve(t){return Eo(this.collectBoundary2d(),!0,t)}collectBoundary2d(){return zn.boundaryPointsFromVertices(this._vertices)}static boundaryPointsFromVertices(t){const e=t[0],i=t[1],r=t[2],s=t[3];return[new M(e.x,e.y),new M(i.x,i.y),new M(s.x,s.y),new M(r.x,r.y)]}};zn.typeName="Trace";let er=zn;const Sl=class Sl extends er{get dxfTypeName(){return"SOLID"}};Sl.typeName="Solid";let Es=Sl;function Zx(n){return n&2048?"SqrtChord":n&1024?"Chord":"Uniform"}function nu(n,t){try{return new nr(n.controlPoints,n.knots,Qx(n.weights,n.controlPoints.length),n.degree,t)}catch{return null}}function Qx(n,t){if(!(!n||n.length!==t))return n}const Vn=class Vn extends Et{constructor(t,e,i,r,s){super(),this._geoData=null,this._knotTolerance=1e-6,this._controlTolerance=1e-6,this._fitTolerance=1e-9,this._normal=new A(0,0,1),t!==void 0&&this.rebuild(t,e,i,r,s)}get dxfTypeName(){return"SPLINE"}static fromControlPoints(t,e,i,r,s){const o=Nt.fromControlPoints(t,e,i,r,s);return o?nu(o,s):null}static fromFitPoints(t,e,i,r,s,o){const a=Nt.fromFitPoints(t,e,i,r,s,o);return a?nu(a,r):null}static fromDwgSpline(t){const e=!!(t.flag&1),i=Zx(t.flag);if(t.numberOfControlPoints>0&&t.numberOfKnots>0){const r=Vn.fromControlPoints(t.controlPoints,t.knots,t.weights,t.degree,e);if(r)return r}return t.numberOfFitPoints>0?Vn.fromFitPoints(t.fitPoints,i,t.degree,e,t.startTangent,t.endTangent):null}get _geo(){if(this._geoData==null){const t=[{x:0,y:0,z:0},{x:1,y:0,z:0},{x:2,y:0,z:0},{x:3,y:0,z:0}],e=[0,0,0,0,1,1,1,1];this._geoData=Nt.fromControlPoints(t,e,void 0,3,!1)??new Nt(t,e,void 0,3,!1)}return this._geoData}set _geo(t){this._geoData=t}rebuild(t,e,i,r,s){const o=+(t!==void 0)+ +(e!==void 0)+ +(i!==void 0)+ +(r!==void 0)+ +(s!==void 0);if(o<2||o>5)throw Bt.ILLEGAL_PARAMETERS;!Array.isArray(e)?this._geo=new Nt(t,e,i,r):this._geo=new Nt(t,e,i,r,s)}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"spline",spline:this._geo.clone(),extendable:!1}]}get closed(){return this._geo.closed}get area(){return this._geo.area}set closed(t){this._geo.closed=t}get knotTolerance(){return this._knotTolerance}set knotTolerance(t){this._knotTolerance=t}get controlTolerance(){return this._controlTolerance}set controlTolerance(t){this._controlTolerance=t}get fitTolerance(){return this._fitTolerance}set fitTolerance(t){this._fitTolerance=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}subGetGripPoints(){return this._geo.getGripPoints()}subMoveGripPointsAt(t,e){return this._geo.moveGripPointsAt(t,e),this}subGetOsnapPoints(t,e,i,r){switch(t){case I.EndPoint:r.push(this._geo.startPoint),r.push(this._geo.endPoint);break;case I.Node:{const s=new Set;for(const o of this._geo.knots)s.has(o)||(s.add(o),r.push(this._geo.evaluateAt(o)));break}case I.Nearest:r.push(this._geo.nearestPoint(e));break}}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this._geo.tessellate(hr(t));return t.lines(e)}dxfOutFields(t){var i;const e=this._geo;super.dxfOutFields(t),t.writeSubclassMarker("AcDbSpline"),t.writeInt16(70,this.closed?1:0),t.writeInt16(71,e.degree),t.writeInt16(72,e.knots.length),t.writeInt16(73,e.controlPoints.length),t.writeInt16(74,((i=e.fitPoints)==null?void 0:i.length)??0),t.writeDouble(42,this.knotTolerance),t.writeDouble(43,this.controlTolerance),t.writeDouble(44,this.fitTolerance);for(const r of e.knots)t.writeDouble(40,r);for(const r of e.weights)t.writeDouble(41,r);for(const r of e.controlPoints)t.writePoint3d(10,r);for(const r of e.fitPoints??[])t.writePoint3d(11,r);return t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSpline");let e=this.closed?1:0,i=3,r=0,s=0,o=0;const a=[],c=[],l=[],h=[];let u=null,d=null,g=this.knotTolerance,f=this.controlTolerance,p=this.fitTolerance,m=this.normal.x,y=this.normal.y,b=this.normal.z,_=null,w=null,S=null,P=null;const v=()=>{_&&(l.push(_),_=null)},k=()=>{w&&(h.push(w),w=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const O=t.readItem();if(!O)break;const R=Number(O.code),N=Number(O.value);switch(R){case 70:e=N;break;case 71:i=N;break;case 72:r=N;break;case 73:s=N;break;case 74:o=N;break;case 42:g=N;break;case 43:f=N;break;case 44:p=N;break;case 40:a.push(N);break;case 41:c.push(N);break;case 10:v(),_={x:N,y:0,z:0};break;case 20:_&&(_.y=N);break;case 30:_&&(_.z=N);break;case 11:k(),w={x:N,y:0,z:0};break;case 21:w&&(w.y=N);break;case 31:w&&(w.z=N);break;case 12:S={x:N,y:0,z:0};break;case 22:S&&(S.y=N);break;case 32:S&&(S.z=N,u=S,S=null);break;case 13:P={x:N,y:0,z:0};break;case 23:P&&(P.y=N);break;case 33:P&&(P.z=N,d=P,P=null);break;case 210:m=N;break;case 220:y=N;break;case 230:b=N;break}}v(),k(),this.knotTolerance=g,this.controlTolerance=f,this.fitTolerance=p;const L=new A(m,y,b);return L.lengthSq()>0&&this.normal.copy(L.normalize()),this.applyDxfInSpline({flag:e,degree:i,numberOfControlPoints:s||l.length,numberOfKnots:r||a.length,numberOfFitPoints:o||h.length,controlPoints:l,knots:a,weights:c.length>0?c:void 0,fitPoints:h,startTangent:u,endTangent:d}),this}applyDxfInSpline(t){const e=Vn.fromDwgSpline(t);e&&(this._geo=e._geo,this.closed=e.closed)}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d(1);return e.length<2?1:Dt.from2dPoints(e,this.closed).getOffsetSideAtPoint(t)}createOffsetCurve(t){const{points:e,tangents:i}=this._geo.getOffsetSamplePath2d(t),r=$m(e,this.closed,t,i);return r?Dt.fromGePolyline(r):null}collectPath2d(t){return this._geo.getOffsetSamplePath2d(t).points}};Vn.typeName="Spline";let nr=Vn;function Jx(n){return n==null?kt.latest.capabilities:typeof n=="object"&&"supportsHandles"in n?n:n instanceof kt?n.capabilities:new kt(n).capabilities}const tw=new A,kl=class kl extends ne{get dxfTypeName(){return"ACAD_TABLE"}constructor(t,e,i){super(t??""),this._attachmentPoint=exports.AcGiMTextAttachmentPoint.TopLeft,this._numColumns=i,this._numRows=e,this._columnWidth=new Array(i),this._rowHeight=new Array(e),this._cells=new Array(e*i)}get blockTableRecord(){const t=this.blockName;if(t){const i=this.database.tables.blockTable.getAt(t);if(i)return i}const e=this.owningBlockRecordId;if(e)return this.database.tables.blockTable.getIdAt(e)}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get numRows(){return this._numRows}set numRows(t){this._numRows=t}get numColumns(){return this._numColumns}set numColumns(t){this._numColumns=t}numContents(t,e){return 1}rowHeight(t){return this._rowHeight[t]}setRowHeight(t,e){this._rowHeight[t]=e}setUniformRowHeight(t){this._rowHeight.fill(t)}columnWidth(t){return this._columnWidth[t]}setUniformColumnWidth(t){this._columnWidth.fill(t)}setColumnWidth(t,e){this._columnWidth[t]=e}resizeGrid(t,e){const i=Math.max(0,t),r=Math.max(0,e);this._numRows=i,this._numColumns=r,this._rowHeight=new Array(i).fill(0),this._columnWidth=new Array(r).fill(0),this._cells=new Array(i*r)}cell(t){if(!(t<0||t>=this._cells.length))return this._cells[t]}setCell(t,e){this._cells[t]=e}textString(t,e,i){var s;const r=t*this._numColumns+e;return(s=this._cells[r])==null?void 0:s.text}setTextString(t,e,i){const r=t*this._numColumns+e;if(!this._cells[r]){this._cells[r]={text:i,attachmentPoint:this._attachmentPoint,cellType:1,textHeight:0};return}this._cells[r].text=i}isEmpty(t,e){var r;const i=t*this._numColumns+e;return!((r=this._cells[i])!=null&&r.text)}get geometricExtents(){let t;try{t=this.blockTableRecord}catch{t=void 0}if(t&&t.newIterator().count>0){const a=new j;for(const c of t.newIterator())a.union(c.geometricExtents);return a.applyMatrix4(this.blockTransform),a}const e=this._columnWidth.reduce((a,c)=>a+c,0),i=this._rowHeight.reduce((a,c)=>a+c,0),r=new j;if(e===0&&i===0)return r.expandByPoint(this.position),r;const s=new qn;s.setFromAxisAngle(A.Z_AXIS,this.rotation),En.compose(this.position,s,this.scaleFactors);const o=[new x(0,0,0),new x(e,0,0),new x(e,-i,0),new x(0,-i,0)];for(const a of o)r.expandByPoint(a.applyMatrix4(En));return r}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"table",properties:[{name:"numRows",type:"string",editable:!0,accessor:{get:()=>this.numRows,set:t=>{this.numRows=t}}},{name:"numColumns",type:"float",editable:!0,accessor:{get:()=>this.numColumns,set:t=>{this.numColumns=t}}},{name:"tableWidth",type:"float",editable:!1,accessor:{get:()=>this._columnWidth.reduce((t,e)=>t+e,0)}},{name:"tableHeight",type:"float",editable:!1,accessor:{get:()=>this._rowHeight.reduce((t,e)=>t+e,0)}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}subWorldDraw(t){const e=this.blockTableRecord;if(e&&e.newIterator().count>0){const g=this.drawAnonymousTableBlock(t,e);if(g)return g}let i=0,r=0;const s=new Uint16Array(this.numColumns*this.numRows*8),o=new Float32Array((this.numColumns+1)*(this.numRows+1)*3);let a=0;for(let g=0;g<=this.numRows;g++){i-=g>0?this.rowHeight(g-1):0,r=0;for(let f=0;f<=this.numColumns;f++)r+=f>0?this.columnWidth(f-1):0,o[a++]=r,o[a++]=i,o[a++]=0}const c=[],l=new Array(this.numRows*this.numColumns).fill(!1);r=0,a=0;let h=0;for(let g=0;g<this.numColumns;g++){r+=g>0?this.columnWidth(g-1):0,i=0;for(let f=0;f<this.numRows;f++){i+=f>0?this.rowHeight(f-1):0;const p=this.cell(f*this.numColumns+g);if(h=f*this.numColumns+g,p&&!l[h]){const m=p.borderWidth??1,y=p.borderHeight??1;this.fillVisited(l,h,this.numColumns,m,y),s[a++]=g+f*(this.numColumns+1),s[a++]=g+f*(this.numColumns+1)+m;const b=o[s[a-1]*3]-r,_=g+(f+y)*(this.numColumns+1)+m;g+m==this.numColumns&&(s[a++]=g+f*(this.numColumns+1)+m,s[a++]=_);const w=-o[_*3+1]-i;if(f+y==this.numRows&&(s[a++]=g+(f+y)*(this.numColumns+1)+y,s[a++]=g+(f+y)*(this.numColumns+1)),s[a++]=g+(f+y)*(this.numColumns+1),s[a++]=g+f*(this.numColumns+1),p.text){const S=p.attachmentPoint||this.attachmentPoint||exports.AcGiMTextAttachmentPoint.MiddleCenter,P=this.getTableTextOffset(S,b,w),v={text:p.text,height:this.getCellTextHeight(p,w),width:b,position:tw.set(r,-i,0).clone().add(P),rotation:this.rotation,attachmentPoint:S},k=this.getTextStyle(p);c.push(t.mtext(v,k))}}}}c.push(t.lineSegments(o,3,s));const u=t.group(c),d=new qn;return d.setFromAxisAngle(A.Z_AXIS,this.rotation),En.compose(this.position,d,this.scaleFactors),u.applyMatrix(En),u}drawAnonymousTableBlock(t,e){const i=[],r=e.newIterator();for(const a of r){let c;if(a.color.isByBlock){iu.copy(a.color);const l=this.resolvedColor;l.isForeground?a.color.setForeground():l.RGB!=null&&a.color.setRGBValue(l.RGB),c=a.worldDraw(t),a.color.copy(iu)}else c=a.worldDraw(t);c&&(c.objectId=this.objectId,c.ownerId=this.ownerId,c.layerName=this.layer,c.visible=this.visibility&&a.visibility,i.push(c))}const s=t.group(i);s.applyMatrix(this.blockTransform);const o=this.normal;return o&&(o.x!==0||o.y!==0||o.z!==1)&&(En.setFromExtrusionDirection(o),s.applyMatrix(En)),s}fillVisited(t,e,i,r,s){if(s==1&&r==1)t[e]=!0;else for(let o=0;o<r;++o)for(let a=0;a<s;++a)t[e+o+a*i]=!0}getTextStyle(t){const e=this.database.tables.textStyleTable.resolveAt(t.textStyle);if(!e)throw new Error("No valid text style found in text style table.");return e.textStyle}getTableTextOffset(t,e,i){const r=new A;switch(t){case 1:break;case 2:r.setX(e/2);break;case 3:r.setX(e);break;case 4:r.setY(-i/2);break;case 5:r.set(e/2,-i/2,0);break;case 6:r.set(e,-i/2,0);break;case 7:r.setY(-i);break;case 8:r.set(e/2,-i,0);break;case 9:r.set(e,-i,0);break}return r}getCellTextHeight(t,e){return t.textHeight&&t.textHeight>0?t.textHeight:Math.max(e/2,1)}dxfOutFields(t){var s,o,a,c,l,h,u;super.dxfOutFields(t),t.writeSubclassMarker("AcDbTable");const e=t.version??((s=t.database)==null?void 0:s.version)??((o=this.database)==null?void 0:o.version),i=Jx(e).supportsUtf8CodePage;t.writeInt16(280,this.tableDataVersion),t.writeObjectId(342,this.tableStyleId),t.writeObjectId(343,this.owningBlockRecordId),t.writeVector3d(11,this.horizontalDirection),t.writeUInt32(90,this.tableValueFlag),t.writeUInt32(93,this.tableOverrideFlag),t.writeUInt32(94,this.borderColorOverrideFlag),t.writeUInt32(95,this.borderLineweightOverrideFlag),t.writeUInt32(96,this.borderVisibilityOverrideFlag),t.writeInt16(71,this.attachmentPoint),t.writeInt32(91,this.numRows),t.writeInt32(92,this.numColumns);for(let d=0;d<this.numRows;++d)t.writeDouble(141,this.rowHeight(d));for(let d=0;d<this.numColumns;++d)t.writeDouble(142,this.columnWidth(d));const r=this._cells.length>0?this._cells.length:this.numRows*this.numColumns;for(let d=0;d<r;d++){const g=this._cells[d],f=(g==null?void 0:g.cellType)??(g!=null&&g.blockTableRecordId?2:1);if(t.writeInt16(171,f),t.writeInt16(172,(g==null?void 0:g.flagValue)??0),t.writeInt16(173,(g==null?void 0:g.mergedValue)??0),t.writeBoolean(174,g==null?void 0:g.autoFit),t.writeInt16(175,g==null?void 0:g.borderWidth),t.writeInt16(176,g==null?void 0:g.borderHeight),(g==null?void 0:g.overrideFlag)!=null&&(i?t.writeInt32(91,g.overrideFlag):t.writeInt16(177,g.overrideFlag)),t.writeInt16(178,g==null?void 0:g.virtualEdgeFlag),t.writeAngle(145,g==null?void 0:g.rotation),i&&t.writeInt16(92,g==null?void 0:g.extendedCellFlags),f===1)g!=null&&g.fieldObjetId?t.writeObjectId(344,g.fieldObjetId):this.writeCellText(t,(g==null?void 0:g.text)??"",i,g==null?void 0:g.cellValueBlockBegin);else if(f===2){if(t.writeObjectId(340,g==null?void 0:g.blockTableRecordId),t.writeDouble(144,g==null?void 0:g.blockScale),t.writeInt16(179,g==null?void 0:g.blockAttrNum),(a=g==null?void 0:g.attrDefineId)!=null&&a.length)for(const p of g.attrDefineId)t.writeObjectId(331,p);if((g==null?void 0:g.attrText)!=null)if(Array.isArray(g.attrText))for(const p of g.attrText)t.writeString(300,p);else t.writeString(300,g.attrText)}g!=null&&g.textStyle&&t.writeString(7,g.textStyle),(g==null?void 0:g.textHeight)!=null&&t.writeDouble(140,g.textHeight),(g==null?void 0:g.attachmentPoint)!=null&&t.writeInt16(170,g.attachmentPoint),(g==null?void 0:g.topBorderVisibility)!=null&&t.writeInt16(289,g.topBorderVisibility?1:0),(g==null?void 0:g.rightBorderVisibility)!=null&&t.writeInt16(285,g.rightBorderVisibility?1:0),(g==null?void 0:g.bottomBorderVisibility)!=null&&t.writeInt16(286,g.bottomBorderVisibility?1:0),(g==null?void 0:g.leftBorderVisibility)!=null&&t.writeInt16(288,g.leftBorderVisibility?1:0)}if(t.writeInt16(70,this.flowDirection),t.writeDouble(40,this.horizontalCellMargin),t.writeDouble(41,this.verticalCellMargin),this.suppressTitle!=null&&t.writeInt16(280,this.suppressTitle?1:0),this.suppressHeader!=null&&t.writeInt16(281,this.suppressHeader?1:0),(c=this.cellTypeOverrides)!=null&&c.length)for(const d of this.cellTypeOverrides){t.writeString(7,d.textStyle),t.writeDouble(140,d.textHeight),t.writeInt16(170,d.alignment),t.writeInt16(63,d.backgroundColor),t.writeInt16(64,d.contentColor),d.backgroundColorEnabled!=null&&t.writeInt16(283,d.backgroundColorEnabled?1:0);const g=d.borderLineweights;g&&(t.writeInt16(274,g.top),t.writeInt16(275,g.right),t.writeInt16(276,g.bottom),t.writeInt16(277,g.left),t.writeInt16(278,g.insideHorizontal),t.writeInt16(279,g.insideVertical));const f=d.borderVisibility;f&&(t.writeInt16(284,f.top?1:0),t.writeInt16(285,f.right?1:0),t.writeInt16(286,f.bottom?1:0),t.writeInt16(287,f.left?1:0),t.writeInt16(288,f.insideHorizontal?1:0),t.writeInt16(289,f.insideVertical?1:0))}if(this.tableBorderColors&&(t.writeInt16(63,this.tableBorderColors.left),t.writeInt16(64,this.tableBorderColors.top),t.writeInt16(65,this.tableBorderColors.insideHorizontal),t.writeInt16(66,this.tableBorderColors.bottom),t.writeInt16(68,this.tableBorderColors.insideVertical),t.writeInt16(69,this.tableBorderColors.right)),(l=this.rowDataTypes)!=null&&l.length)for(const d of this.rowDataTypes)t.writeInt16(97,d);if((h=this.rowUnitTypes)!=null&&h.length)for(const d of this.rowUnitTypes)t.writeInt16(98,d);if((u=this.rowFormats)!=null&&u.length)for(const d of this.rowFormats)t.writeString(4,d);return this}dxfInFields(t){var p,m,y;super.dxfInFields(t),t.atSubclassData("AcDbTable");let e=this._numRows,i=this._numColumns,r=!1;const s=[],o=[];let a=0,c=null,l=[],h=((p=this.horizontalDirection)==null?void 0:p.x)??1,u=((m=this.horizontalDirection)==null?void 0:m.y)??0,d=((y=this.horizontalDirection)==null?void 0:y.z)??0;const g=()=>{e>0&&i>0&&(!r||this._numRows!==e||this._numColumns!==i)&&(this.resizeGrid(e,i),r=!0)},f=()=>{c&&(l.length>0&&(c.text=l.join(""),l=[]),g(),a<this._cells.length&&this.setCell(a,c),a+=1,c=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const b=t.readItem();if(!b)break;const _=Number(b.code),w=Number(b.value);switch(_){case 280:c||(this.tableDataVersion=w);break;case 342:this.tableStyleId=String(b.value);break;case 343:this.owningBlockRecordId=String(b.value);break;case 11:h=w;break;case 21:u=w;break;case 31:d=w;break;case 90:c||(this.tableValueFlag=w);break;case 93:c||(this.tableOverrideFlag=w);break;case 94:c||(this.borderColorOverrideFlag=w);break;case 95:c||(this.borderLineweightOverrideFlag=w);break;case 96:c||(this.borderVisibilityOverrideFlag=w);break;case 71:this.attachmentPoint=w;break;case 170:c?c.attachmentPoint=w:this.attachmentPoint=w;break;case 91:c?c&&(c.overrideFlag=w):(e=w,g());break;case 92:c?c&&(c.extendedCellFlags=w):(i=w,g());break;case 141:s.push(w);break;case 142:o.push(w);break;case 171:f(),c={text:"",attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter,cellType:w,textHeight:0};break;case 172:c&&(c.flagValue=w);break;case 173:c&&(c.mergedValue=w);break;case 174:c&&(c.autoFit=!!b.value||w!==0);break;case 175:c&&(c.borderWidth=w);break;case 176:c&&(c.borderHeight=w);break;case 177:c&&(c.overrideFlag=w);break;case 178:c&&(c.virtualEdgeFlag=w);break;case 145:c&&(c.rotation=w*Math.PI/180);break;case 1:case 2:case 302:case 303:l.push(String(b.value));break;case 300:if(c){const S=c.attrText;Array.isArray(S)?S.push(String(b.value)):S!=null&&S!==""?c.attrText=[String(S),String(b.value)]:c.attrText=String(b.value)}break;case 301:c&&(c.cellValueBlockBegin=String(b.value));break;case 304:break;case 7:c&&(c.textStyle=String(b.value));break;case 140:c&&(c.textHeight=w);break;case 340:c&&(c.blockTableRecordId=String(b.value));break;case 344:case 345:c&&(c.fieldObjetId=String(b.value));break;case 144:case 146:c&&(c.blockScale=w);break;case 179:c&&(c.blockAttrNum=w);break;case 70:this.flowDirection=w;break;case 40:this.horizontalCellMargin=w;break;case 41:this.verticalCellMargin=w;break;case 281:this.suppressHeader=w!==0;break}}return f(),this.horizontalDirection=new A(h,u,d),s.forEach((b,_)=>this.setRowHeight(_,b)),o.forEach((b,_)=>this.setColumnWidth(_,b)),this}writeCellText(t,e,i,r){if(!i){if(e.length<=250){t.writeString(1,e);return}const a=Math.ceil(e.length/250);for(let c=0;c<a;c++){const l=c*250,h=l+250,u=e.slice(l,h);c===a-1?t.writeString(1,u):t.writeString(2,u)}return}if(t.writeString(301,r??"CELL_VALUE"),e.length<=250){t.writeString(302,e),t.writeString(304,"ACVALUE_END");return}const o=Math.ceil(e.length/250);for(let a=0;a<o;a++){const c=a*250,l=c+250,h=e.slice(c,l);a===o-1?t.writeString(302,h):t.writeString(303,h)}t.writeString(304,"ACVALUE_END")}};kl.typeName="Table";let Ts=kl;const En=new F,iu=new G,Il=class Il extends nt{constructor(){super(),this._snapBase=new x,this._snapSpacing=new x(1,1,0),this._gridSpacing=new x(1,1,0),this._perspectiveLensLength=50,this._frontClipZ=0,this._backClipZ=0,this._snapAngle=0,this._status=0,this._ucsPerViewport=0,this._circleZoomPercent=1e3,this._statusBitFlags=0,this._ucsOrigin=new x,this._ucsXAxis=new A(1,0,0),this._ucsYAxis=new A(0,1,0),this._elevation=0,this._frozenLayerIds=[],this._sheetName="",this._iconFlag=0,this._orthographicType=0,this._majorGridFrequency=0,this._ambientLightColorIndex=0,this._brightness=0,this._contrast=0,this._shadePlotMode=0,this._renderMode=0,this._defaultLightingType=0,this._isDefaultLighting=!1,this._clippingBoundaryId="",this._backgroundId="",this._shadePlotId="",this._ucsId="",this._ucsBaseId="",this._visualStyleId="",this._sunId="",this._ambientLightColorInstance=0,this._ambientLightColorName="",this._softPointers=[],this._centerPoint=new x,this._height=0,this._width=0,this._viewCenter=new x,this._viewTarget=new x,this._viewDirection=new A(0,0,1),this._viewTwistAngle=0,this._viewHeight=0,this._number=-1}get dxfTypeName(){return"VIEWPORT"}get number(){return this._number}set number(t){this._number=t}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get viewCenter(){return this._viewCenter}set viewCenter(t){this._viewCenter=t}get viewTarget(){return this._viewTarget}set viewTarget(t){this._viewTarget=t}get viewDirection(){return this._viewDirection}set viewDirection(t){this._viewDirection.copy(t)}get snapBase(){return this._snapBase}set snapBase(t){this._snapBase.copy(t)}get snapSpacing(){return this._snapSpacing}set snapSpacing(t){this._snapSpacing.copy(t)}get gridSpacing(){return this._gridSpacing}set gridSpacing(t){this._gridSpacing.copy(t)}get perspectiveLensLength(){return this._perspectiveLensLength}set perspectiveLensLength(t){this._perspectiveLensLength=t}get frontClipZ(){return this._frontClipZ}set frontClipZ(t){this._frontClipZ=t}get backClipZ(){return this._backClipZ}set backClipZ(t){this._backClipZ=t}get snapAngle(){return this._snapAngle}set snapAngle(t){this._snapAngle=t}get status(){return this._status}set status(t){this._status=t}get ucsPerViewport(){return this._ucsPerViewport}set ucsPerViewport(t){this._ucsPerViewport=t}get circleZoomPercent(){return this._circleZoomPercent}set circleZoomPercent(t){this._circleZoomPercent=t}get statusBitFlags(){return this._statusBitFlags}set statusBitFlags(t){this._statusBitFlags=t}get ucsOrigin(){return this._ucsOrigin}set ucsOrigin(t){this._ucsOrigin.copy(t)}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get frozenLayerIds(){return this._frozenLayerIds}set frozenLayerIds(t){this._frozenLayerIds=[...t]}get ucsXAxis(){return this._ucsXAxis}set ucsXAxis(t){this._ucsXAxis.copy(t)}get ucsYAxis(){return this._ucsYAxis}set ucsYAxis(t){this._ucsYAxis.copy(t)}get sheetName(){return this._sheetName}set sheetName(t){this._sheetName=t}get iconFlag(){return this._iconFlag}set iconFlag(t){this._iconFlag=t}get orthographicType(){return this._orthographicType}set orthographicType(t){this._orthographicType=t}get majorGridFrequency(){return this._majorGridFrequency}set majorGridFrequency(t){this._majorGridFrequency=t}get ambientLightColorIndex(){return this._ambientLightColorIndex}set ambientLightColorIndex(t){this._ambientLightColorIndex=t}get viewportBrightness(){return this._brightness}set viewportBrightness(t){this._brightness=t}get viewportContrast(){return this._contrast}set viewportContrast(t){this._contrast=t}get shadePlotMode(){return this._shadePlotMode}set shadePlotMode(t){this._shadePlotMode=t}get renderMode(){return this._renderMode}set renderMode(t){this._renderMode=t}get defaultLightingType(){return this._defaultLightingType}set defaultLightingType(t){this._defaultLightingType=t}get isDefaultLighting(){return this._isDefaultLighting}set isDefaultLighting(t){this._isDefaultLighting=t}get clippingBoundaryId(){return this._clippingBoundaryId}set clippingBoundaryId(t){this._clippingBoundaryId=t}get backgroundId(){return this._backgroundId}set backgroundId(t){this._backgroundId=t}get shadePlotId(){return this._shadePlotId}set shadePlotId(t){this._shadePlotId=t}get ucsId(){return this._ucsId}set ucsId(t){this._ucsId=t}get ucsBaseId(){return this._ucsBaseId}set ucsBaseId(t){this._ucsBaseId=t}get visualStyleId(){return this._visualStyleId}set visualStyleId(t){this._visualStyleId=t}get sunId(){return this._sunId}set sunId(t){this._sunId=t}get ambientLightColorInstance(){return this._ambientLightColorInstance}set ambientLightColorInstance(t){this._ambientLightColorInstance=t}get ambientLightColorName(){return this._ambientLightColorName}set ambientLightColorName(t){this._ambientLightColorName=t}get softPointers(){return this._softPointers}set softPointers(t){this._softPointers=[...t]}get viewTwistAngle(){return this._viewTwistAngle}set viewTwistAngle(t){this._viewTwistAngle=t}get viewHeight(){return this._viewHeight}set viewHeight(t){this._viewHeight=t}get geometricExtents(){const t=this._width/2,e=this._height/2,i=new j;return i.expandByPoint(new x(this._centerPoint.x-t,this._centerPoint.y-e,this._centerPoint.z)),i.expandByPoint(new x(this._centerPoint.x+t,this._centerPoint.y+e,this._centerPoint.z)),i}subGetIntersectCurves(){const t=this._width/2,e=this._height/2,i=this._centerPoint.z,r=[new x(this._centerPoint.x-t,this._centerPoint.y-e,i),new x(this._centerPoint.x+t,this._centerPoint.y-e,i),new x(this._centerPoint.x+t,this._centerPoint.y+e,i),new x(this._centerPoint.x-t,this._centerPoint.y+e,i)];return Wt(r,!0)}subGetGripPoints(){const t=new Array,e=this._width/2,i=this._height/2,r=this._centerPoint.z;return t.push(this._centerPoint),(e>0||i>0)&&t.push(new x(this._centerPoint.x-e,this._centerPoint.y-i,r),new x(this._centerPoint.x+e,this._centerPoint.y-i,r),new x(this._centerPoint.x+e,this._centerPoint.y+i,r),new x(this._centerPoint.x-e,this._centerPoint.y+i,r)),t}subMoveGripPointsAt(t,e){return Pt(t,i=>{this.moveGripAt(i,e)}),this}transformBy(t){const e=this._centerPoint.clone(),i=this._centerPoint.clone().add(new A(this._width,0,0)),r=this._centerPoint.clone().add(new A(0,this._height,0));e.applyMatrix4(t),i.applyMatrix4(t),r.applyMatrix4(t);const s=new A(i).sub(e),o=new A(r).sub(e),a=this._height!==0?o.length()/this._height:1;return this._centerPoint.copy(e),this._width=s.length(),this._height=o.length(),this._viewHeight*=a,this}subWorldDraw(t){if(this._number>1&&this.ownerId!=this.database.tables.blockTable.modelSpace.objectId){const e=this.toGiViewport();return t.group(this.createViewportRect(e,t))}}toGiViewport(){var r;const t=new Vd;t.id=this.objectId,t.groupId=this.ownerId,t.number=this.number,t.centerPoint=this.centerPoint,t.width=this.width,t.height=this.height,t.viewHeight=this.viewHeight,t.viewCenter=this.viewCenter,t.viewTarget=this.viewTarget,t.viewTwistAngle=this.viewTwistAngle,t.frozenLayerIds=this.frozenLayerIds;const e=[],i=(r=this.database)==null?void 0:r.tables.layerTable;if(i)for(const s of this.frozenLayerIds){const o=i.getIdAt(s);o&&e.push(o.name)}return t.frozenLayers=e,t}createViewportRect(t,e){const i=[];return i.push(e.lines([new x(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0),new x(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0)])),i.push(e.lines([new x(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0),new x(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0)])),i.push(e.lines([new x(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0),new x(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0)])),i.push(e.lines([new x(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0),new x(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0)])),i}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewport"),t.writePoint3d(10,this.centerPoint),t.writeDouble(40,this.width),t.writeDouble(41,this.height),t.writePoint3d(12,this.viewCenter),t.writePoint3d(13,this.snapBase),t.writePoint3d(14,this.snapSpacing),t.writePoint3d(15,this.gridSpacing),t.writeVector3d(16,this.viewDirection),t.writePoint3d(17,this.viewTarget),t.writeDouble(42,this.perspectiveLensLength),t.writeDouble(43,this.frontClipZ),t.writeDouble(44,this.backClipZ),t.writeDouble(45,this.viewHeight),t.writeAngle(50,this.snapAngle),t.writeAngle(51,this.viewTwistAngle),t.writeInt16(68,this.status),t.writeInt32(69,this.number),t.writeInt16(71,this.ucsPerViewport),t.writeInt16(72,this.circleZoomPercent),t.writeInt32(90,this.statusBitFlags);for(const e of this.frozenLayerIds)t.writeObjectId(331,e);t.writePoint3d(110,this.ucsOrigin),t.writeVector3d(111,this.ucsXAxis),t.writeVector3d(112,this.ucsYAxis),t.writeDouble(146,this.elevation),this.sheetName&&t.writeString(1,this.sheetName),t.writeInt16(61,this.majorGridFrequency),t.writeInt16(63,this.ambientLightColorIndex),t.writeInt16(74,this.iconFlag),t.writeInt16(79,this.orthographicType);for(const e of this.softPointers)t.writeObjectId(91,e);return t.writeDouble(141,this.viewportBrightness),t.writeDouble(142,this.viewportContrast),t.writeInt16(170,this.shadePlotMode),t.writeInt16(281,this.renderMode),t.writeInt16(282,this.defaultLightingType),t.writeInt16(292,this.isDefaultLighting?1:0),this.clippingBoundaryId&&t.writeObjectId(340,this.clippingBoundaryId),this.backgroundId&&t.writeObjectId(332,this.backgroundId),this.shadePlotId&&t.writeObjectId(333,this.shadePlotId),this.ucsId&&t.writeObjectId(345,this.ucsId),this.ucsBaseId&&t.writeObjectId(346,this.ucsBaseId),this.visualStyleId&&t.writeObjectId(348,this.visualStyleId),this.sunId&&t.writeObjectId(361,this.sunId),this.ambientLightColorInstance&&t.writeInt32(421,this.ambientLightColorInstance),this.ambientLightColorName&&t.writeString(431,this.ambientLightColorName),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbViewport");let e=this.centerPoint.x,i=this.centerPoint.y,r=this.centerPoint.z,s=this.viewCenter.x,o=this.viewCenter.y,a=this.viewCenter.z,c=this.viewTarget.x,l=this.viewTarget.y,h=this.viewTarget.z,u=this.viewDirection.x,d=this.viewDirection.y,g=this.viewDirection.z,f=this.snapBase.x,p=this.snapBase.y,m=this.snapBase.z,y=this.snapSpacing.x,b=this.snapSpacing.y,_=this.snapSpacing.z,w=this.gridSpacing.x,S=this.gridSpacing.y,P=this.gridSpacing.z,v=this.ucsOrigin.x,k=this.ucsOrigin.y,L=this.ucsOrigin.z,O=this.ucsXAxis.x,R=this.ucsXAxis.y,N=this.ucsXAxis.z,it=this.ucsYAxis.x,$=this.ucsYAxis.y,U=this.ucsYAxis.z;const J=[],E=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const W=t.readItem();if(!W)break;const st=Number(W.code),D=Number(W.value);switch(st){case 1:this.sheetName=String(W.value);break;case 10:e=D;break;case 20:i=D;break;case 30:r=D;break;case 12:s=D;break;case 22:o=D;break;case 32:a=D;break;case 13:f=D;break;case 23:p=D;break;case 33:m=D;break;case 14:y=D;break;case 24:b=D;break;case 34:_=D;break;case 15:w=D;break;case 25:S=D;break;case 35:P=D;break;case 16:u=D;break;case 26:d=D;break;case 36:g=D;break;case 17:c=D;break;case 27:l=D;break;case 37:h=D;break;case 40:this.width=D;break;case 41:this.height=D;break;case 42:this.perspectiveLensLength=D;break;case 43:this.frontClipZ=D;break;case 44:this.backClipZ=D;break;case 45:this.viewHeight=D;break;case 50:this.snapAngle=C.degToRad(D);break;case 51:this.viewTwistAngle=C.degToRad(D);break;case 61:this.majorGridFrequency=D;break;case 63:this.ambientLightColorIndex=D;break;case 68:this.status=D;break;case 69:this.number=D;break;case 71:this.ucsPerViewport=D;break;case 72:this.circleZoomPercent=D;break;case 74:this.iconFlag=D;break;case 79:this.orthographicType=D;break;case 90:this.statusBitFlags=D;break;case 91:case 335:case 343:case 344:E.push(String(W.value));break;case 110:v=D;break;case 120:k=D;break;case 130:L=D;break;case 111:O=D;break;case 121:R=D;break;case 131:N=D;break;case 112:it=D;break;case 122:$=D;break;case 132:U=D;break;case 141:this.viewportBrightness=D;break;case 142:this.viewportContrast=D;break;case 146:this.elevation=D;break;case 170:this.shadePlotMode=D;break;case 281:this.renderMode=D;break;case 282:this.defaultLightingType=D;break;case 292:this.isDefaultLighting=D!==0;break;case 331:J.push(String(W.value));break;case 332:this.backgroundId=String(W.value);break;case 333:this.shadePlotId=String(W.value);break;case 340:this.clippingBoundaryId=String(W.value);break;case 345:this.ucsId=String(W.value);break;case 346:this.ucsBaseId=String(W.value);break;case 348:this.visualStyleId=String(W.value);break;case 361:this.sunId=String(W.value);break;case 421:this.ambientLightColorInstance=D;break;case 431:this.ambientLightColorName=String(W.value);break}}return this.applyViewportDxfIn(e,i,r,s,o,a,c,l,h),this._viewDirection.copy({x:u,y:d,z:g}),this._snapBase.copy({x:f,y:p,z:m}),this._snapSpacing.copy({x:y,y:b,z:_}),this._gridSpacing.copy({x:w,y:S,z:P}),this._ucsOrigin.copy({x:v,y:k,z:L}),this._ucsXAxis.copy({x:O,y:R,z:N}),this._ucsYAxis.copy({x:it,y:$,z:U}),this.frozenLayerIds=J,this.softPointers=E,this}applyViewportDxfIn(t,e,i,r,s,o,a,c,l){this.centerPoint.copy({x:t,y:e,z:i}),this.viewCenter.copy({x:r,y:s,z:o}),this.viewTarget.copy({x:a,y:c,z:l});const h=1e-6,u=Math.abs(t)<h&&Math.abs(e)<h,d=Math.abs(a)<h&&Math.abs(c)<h,g=Number.isFinite(this.height)&&Number.isFinite(this.viewHeight)&&Math.abs(this.viewHeight-this.height)<h;u&&d&&g&&this.centerPoint.copy(this.viewCenter)}moveGripAt(t,e){switch(t){case 0:this._centerPoint.add(e);break;case 1:case 2:case 3:case 4:{const i=this.width/2,r=this.height/2,s=this._centerPoint.x,o=this._centerPoint.y,a={1:{x:s-i,y:o-r},2:{x:s+i,y:o-r},3:{x:s+i,y:o+r},4:{x:s-i,y:o+r}},c=t===1?3:t===2?4:t===3?1:2,l=a[t],h=a[c];l.x+=e.x,l.y+=e.y,this._centerPoint.x=(l.x+h.x)/2,this._centerPoint.y=(l.y+h.y)/2,this._centerPoint.z=(this._centerPoint.z??0)+(e.z??0),this.width=Math.abs(h.x-l.x),this.height=Math.abs(h.y-l.y);break}}}};Il.typeName="Viewport";let Ls=Il;const El=class El extends tr{get dxfTypeName(){return"WIPEOUT"}subWorldDraw(t){t.subEntityTraits.isBackgroundFill=!0;const e=this.boundaryPath(),i=new he;return i.add(new rt(e)),t.area(i)}dxfOutFields(t){return super.dxfOutFields(t),this}};El.typeName="Wipeout";let Ms=El;const no=class no extends Et{get dxfTypeName(){return"XLINE"}constructor(){super(),this._basePoint=new x,this._unitDir=new A}get basePoint(){return this._basePoint}set basePoint(t){this._basePoint.copy(t)}get unitDir(){return this._unitDir}set unitDir(t){this._unitDir.copy(t)}get closed(){return!1}get area(){return 0}get geometricExtents(){const t=new j;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}subGetIntersectCurves(){const t=this._basePoint.clone().add(this._unitDir);return[{kind:"line",line:new Ct(this._basePoint,t),extent:"unbounded"}]}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}subMoveGripPointsAt(t,e){return Ee(t,e,this.basePoint),this}subGetOsnapPoints(t,e,i,r){const s=this.basePoint;if(t===I.EndPoint){r.push(s);return}const o=this.unitDir.clone();if(o.lengthSq()===0)return;o.normalize();const a=new Ct(s,s.clone().add(o));switch(t){case I.Nearest:r.push(a.project(e));break;case I.Perpendicular:r.push(a.perpPoint(e));break}}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=[];return e.push(this._unitDir.clone().multiplyScalar(-1e6).add(this._basePoint)),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbXline"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbXline");let e=this.basePoint.x,i=this.basePoint.y,r=this.basePoint.z,s=this.unitDir.x,o=this.unitDir.y,a=this.unitDir.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:i=h;break;case 30:r=h;break;case 11:s=h;break;case 21:o=h;break;case 31:a=h;break}}return this.basePoint=new x(e,i,r),this.unitDir=new A(s,o,a),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.basePoint,i=this.unitDir,r=Math.hypot(i.x,i.y);return r<=1e-9||(i.x*(t.y-e.y)-i.y*(t.x-e.x))/r>=0?1:-1}createOffsetCurve(t){const e=ud(this.basePoint,this.unitDir,t);if(!e)return null;const i=new no;return i.basePoint=e,i.unitDir=this.unitDir.clone(),i}};no.typeName="Xline";let Cs=no;var hp=(n=>(n.ClosedFilled="",n.Dot="_DOT",n.DotSmall="_DOTSMALL",n.DotBlank="_DOTBLANK",n.Origin="_ORIGIN",n.Origin2="_ORIGIN2",n.Open="_OPEN",n.Open90="_OPEN90",n.Open30="_OPEN30",n.Closed="_CLOSED",n.Small="_SMALL",n.None="_NONE",n.Oblique="_OBLIQUE",n.BoxFilled="_BOXFILLED",n.Box="_BOXBLANK",n.ClosedBlank="_CLOSEDBLANK",n.DatumBlank="_DATUMBLANK",n.DatumFilled="_DATUMFILLED",n.Integral="_INTEGRAL",n.ArchTick="_ARCHTICK",n))(hp||{});const Tn=48,ru=8,ew=48,up=80,dp=32,ra=80,sa=24,Ga=40,nw=8,iw=4,su=64,rw=64,sw=new Set(["_version","_angbase","_angdir","_aunits","_auprec","_lunits","_luprec","_celtscale","_cecolor","_celtype","_celweight","_cetransparency","_clayer","_cmlstyle","_cmlscale","_cmleaderstyle","_hpbackgroundcolor","_hpcolor","_hplayer","_hptransparency","_textstyle","_dimstyle","_dimstyle","_dimstyle","_extents","_insunits","_unitmode","_measurement","_ltscale","_lwdisplay","_pdmode","_pdsize","_osmode","_orthomode","_maxHandle","_drawNoPlotLayers","_drawCircleSides","_dwgname","_currentSpace","_formatter","_eventBatchDepth","_pendingEntityAppended","_pendingEntityErased","_pendingDictObjectSet","_pendingDictObjectErased","_lastOpenError"]),gp=new Set(["constructor","prototype","__proto__","caller","callee","arguments"]);function ge(n,t){let e=n.get(t);return e||(e={bytes:0,count:0},n.set(t,e)),e}function Zt(n,t,e,i=0){if(e<=0&&i===0)return;const r=ge(n.byCategory,t);r.bytes+=e,r.count+=i}function ow(n){const t=Object.getPrototypeOf(n);return t===Object.prototype||t===null}function aw(n){return ArrayBuffer.isView(n)}function cw(n){return typeof n.addEventListener=="function"&&typeof n.dispatch=="function"&&"listeners"in n}function lw(n,t,e){return gp.has(t)?!0:!n.includeEventManagers&&(t==="events"||e==="events")?t==="events":!n.includeTransactionManager&&(t==="transactionManager"||e==="transaction")?t==="transactionManager":!1}function ou(n,t,e){return t==="_xDataMap"||t==="_importedXData"||n==="xdata"?"xdata":t==="_tables"||n==="tables"?e instanceof nt?"entities":"tables":t==="_entities"||n==="entities"?"entities":t==="_objects"||n==="objects"?"objects":t==="_handleRegistry"||n==="handleRegistry"?"handleRegistry":t==="transactionManager"||n==="transaction"?"transaction":t==="events"||n==="events"?"events":n==="sysvars"||sw.has(t)?"sysvars":e instanceof nt?"entities":n==="other"?"other":n}function hw(n){const t=new Set;let e=n;for(;e&&e!==Object.prototype;){for(const i of Object.getOwnPropertyNames(e)){if(gp.has(i))continue;const r=Object.getOwnPropertyDescriptor(e,i);r&&typeof r.value=="function"||r&&(r.get||r.set)&&r.value===void 0||t.add(i)}if(e=Object.getPrototypeOf(e),e===Object.prototype||e===null||e===Array.prototype||e===Map.prototype||e===Set.prototype)break}return[...t]}function fp(n){if(n==null)return 0;switch(typeof n){case"number":return nw;case"boolean":return iw;case"string":return Ga+n.length*2;case"bigint":return 16;case"symbol":return Ga+String(n.description??"").length*2;default:return 0}}function uw(n,t){if(n.visited.has(t))return 0;n.visited.add(t),n.objectCount+=1;let e=up+t.size*dp;for(const i of t.keys())e+=fp(i);return Zt(n,"handleRegistry",e,1),e}function On(n,t,e,i){if(t==null)return 0;const r=typeof t;if(r==="function")return 0;if(r!=="object"){const h=fp(t);if(Zt(n,e,h),i){const u=ge(n.byEntityType,i);u.bytes+=h}return h}const s=t;if(typeof s.nodeType=="number"||n.visited.has(s))return 0;if(n.visited.add(s),n.objectCount+=1,!n.includeEventManagers&&cw(s))return Zt(n,e,Tn,1),Tn;let o=i,a=e;if(s instanceof nt){a="entities",o=s.type,n.entityCount+=1;const h=ge(n.byEntityType,o);h.count+=1}if(typeof s.then=="function")return Zt(n,a,Tn,1),Tn;if(s instanceof ArrayBuffer){const h=su+s.byteLength;return Zt(n,a,h,1),o&&(ge(n.byEntityType,o).bytes+=h),h}if(aw(s)){const h=su+s.byteLength;return s.buffer&&!n.visited.has(s.buffer)&&n.visited.add(s.buffer),Zt(n,a,h,1),o&&(ge(n.byEntityType,o).bytes+=h),h}if(typeof Blob<"u"&&s instanceof Blob){const h=rw+s.size;return Zt(n,a,h,1),o&&(ge(n.byEntityType,o).bytes+=h),h}if(s instanceof Date){const h=Tn+8;return Zt(n,a,h,1),h}if(s instanceof Map){const h=a==="handleRegistry",u=up+s.size*dp;let d=u;Zt(n,a,u,1),o&&(ge(n.byEntityType,o).bytes+=u);for(const[g,f]of s)d+=On(n,g,a,o),h||(d+=On(n,f,a,o));return d}if(s instanceof Set){let h=ra+s.size*sa;for(const u of s)h+=On(n,u,a,o);return Zt(n,a,ra+s.size*sa,1),o&&(ge(n.byEntityType,o).bytes+=ra+s.size*sa),h}if(Array.isArray(s)){let h=ew+s.length*ru;Zt(n,a,h,1),o&&(ge(n.byEntityType,o).bytes+=h);for(let u=0;u<s.length;u++){const d=s[u],g=ou(a,String(u),d);h+=On(n,d,g,o)}return h}let c=Tn;const l=ow(s)?Object.getOwnPropertyNames(s):hw(s);for(const h of l)c+=ru,c+=Math.min(Ga+h.length*2,64);Zt(n,a,c,1),o&&(ge(n.byEntityType,o).bytes+=c);for(const h of l){if(lw(n,h,a)||h==="_database"||h==="database")continue;let u;try{u=s[h]}catch{continue}if(typeof u=="function")continue;if(h==="_handleRegistry"&&u instanceof Map){c+=uw(n,u);continue}const d=ou(a,h,u);!n.includeTransactionManager&&d==="transaction"||!n.includeEventManagers&&d==="events"||(c+=On(n,u,d,o))}return c}function dw(n,t){const e={visited:new WeakSet,objectCount:0,entityCount:0,byCategory:new Map,byEntityType:new Map,includeTransactionManager:(t==null?void 0:t.includeTransactionManager)===!0,includeEventManagers:(t==null?void 0:t.includeEventManagers)===!0};On(e,n,"sysvars",null);let i=0;const r={};for(const[o,a]of e.byCategory)r[o]={bytes:a.bytes,count:a.count},i+=a.bytes;const s={};for(const[o,a]of e.byEntityType)s[o]={bytes:a.bytes,count:a.count};return{totalBytes:i,objectCount:e.objectCount,entityCount:e.entityCount,byCategory:r,byEntityType:s}}function oa(n){return n<1024?`${n} B`:n<1024*1024?`${(n/1024).toFixed(2)} KiB`:`${(n/(1024*1024)).toFixed(2)} MiB`}function gw(n){const t=[`AcDbDatabase memory estimate: ${oa(n.totalBytes)} (${n.totalBytes} bytes)`,`Objects: ${n.objectCount}, Entities: ${n.entityCount}`,"By category:"],e=Object.entries(n.byCategory).sort((r,s)=>s[1].bytes-r[1].bytes);for(const[r,s]of e)t.push(` ${r}: ${oa(s.bytes)} (${s.bytes} bytes), count=${s.count}`);const i=Object.entries(n.byEntityType).sort((r,s)=>s[1].bytes-r[1].bytes);if(i.length>0){t.push("By entity type:");for(const[r,s]of i)t.push(` ${r}: ${oa(s.bytes)} (${s.bytes} bytes), count=${s.count}`)}return t.join(`
|
|
14
|
+
`);return Math.max(...e.map(i=>Ve(i.trim(),t.height)),0)}resolveMTextLayoutMetrics(t){return z1({contents:t.contents,height:t.height,width:t.width,extentsWidth:t.extentsWidth,lineSpacingFactor:t.lineSpacingFactor,lineSpacingStyle:t.lineSpacingStyle,attachmentPoint:t.attachmentPoint,rotation:t.rotation,direction:t.direction,location:t.location})}scoreMTextAssociation(t,e){const i=this.resolveMTextLayoutMetrics(t),r=Math.max(t.height*2,1),s=Math.max(t.height,1),o=Math.max(i.height,t.height*4,10);return U1(e,i,{padX:r,padYAbove:s,padYBelow:o})}resolveDimensionStyle(){var i;const t=(i=this._dimensionStyle)==null?void 0:i.trim(),e=this.tryGetDatabase();if(!(!t||!e))return e.tables.dimStyleTable.getAt(t)}resolveAssociatedMText(){const t=this.tryGetDatabase();if(!t)return;if(this._associatedAnnotation){const a=t.getObjectById(this._associatedAnnotation);if(a instanceof An)return a}if(this._vertices.length===0)return;const e=this.getAttrWithoutException("ownerId");if(!e)return;const i=t.getObjectById(e);if(!(i instanceof ut))return;const r=this._vertices[this._vertices.length-1];let s,o=Number.POSITIVE_INFINITY;for(const a of i.newIterator()){if(!(a instanceof An))continue;const c=this.scoreMTextAssociation(a,r);c==null||c>=o||(o=c,s=a)}return s}tryGetDatabase(){try{return this.database}catch{return}}get splineGeo(){return this.createSplineIfNeeded(),this._splineGeo}createSplineIfNeeded(){this.isSplined&&this.numVertices>=2&&(this._splineGeo==null||this._updated)&&(this._splineGeo=new Nt(this._vertices,"Uniform"),this._updated=!1)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLeader"),t.writeString(3,this.dimensionStyle),t.writeInt16(71,this.hasArrowHead?1:0),t.writeInt16(72,this.isSplined?1:0),t.writeInt16(73,this.annoType),t.writeInt16(74,this.isHookLineSameDirection?1:0),t.writeInt16(75,this.hasHookLine?1:0),t.writeInt16(76,this.numVertices),this.textHeight!==0&&t.writeDouble(40,this.textHeight),this.textWidth!==0&&t.writeDouble(41,this.textWidth),this.byBlockColor!=null&&t.writeInt16(77,this.byBlockColor),this.associatedAnnotation&&t.writeHandle(340,this.associatedAnnotation);for(const e of this.vertices)t.writePoint3d(10,e);return t.writeVector3d(210,this.normal),t.writeVector3d(211,this.horizontalDirection),this._offsetFromBlock&&t.writeVector3d(212,this._offsetFromBlock),this._offsetFromAnnotation&&t.writeVector3d(213,this._offsetFromAnnotation),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLeader"),this._vertices.length=0;let e=null,i=this.normal.x,r=this.normal.y,s=this.normal.z,o=this.horizontalDirection.x,a=this.horizontalDirection.y,c=this.horizontalDirection.z,l=0,h=0,u=0,d=0,g=0,f=0,p=!1,m=!1;const y=()=>{e&&(this.appendVertex(e),e=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const b=t.readItem();if(!b)break;const _=Number(b.code),w=Number(b.value);switch(_){case 3:this.dimensionStyle=String(b.value);break;case 10:y(),e={x:w,y:0,z:0};break;case 20:e&&(e.y=w);break;case 30:e&&(e.z=w);break;case 40:this.textHeight=w;break;case 41:this.textWidth=w;break;case 71:this.hasArrowHead=w!==0;break;case 72:this.isSplined=w!==0;break;case 73:this.annoType=w;break;case 74:this.isHookLineSameDirection=w!==0;break;case 75:this.hasHookLine=w!==0;break;case 76:break;case 77:this.byBlockColor=w;break;case 210:i=w;break;case 220:r=w;break;case 230:s=w;break;case 211:o=w;break;case 221:a=w;break;case 231:c=w;break;case 212:l=w,p=!0;break;case 222:h=w,p=!0;break;case 232:u=w,p=!0;break;case 213:d=w,m=!0;break;case 223:g=w,m=!0;break;case 233:f=w,m=!0;break;case 340:this.associatedAnnotation=String(b.value);break}}return y(),this.normal={x:i,y:r,z:s},this.horizontalDirection={x:o,y:a,z:c},p&&(this.offsetFromBlock={x:l,y:h,z:u}),m&&(this.offsetFromAnnotation={x:d,y:g,z:f}),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d();return e.length<2?1:Dt.from2dPoints(e,!1).getOffsetSideAtPoint(t)}createOffsetCurve(t){return Eo(this.collectPath2d(),!1,t)}collectPath2d(){return this.isSplined&&this.splineGeo?this.splineGeo.getPoints(64).map(t=>new M(t.x,t.y)):this._vertices.map(t=>new M(t.x,t.y))}transformVector(t,e){const i=new x,r=new x(t.x,t.y,t.z);i.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-i.x,r.y-i.y,r.z-i.z)}};pl.typeName="Leader";let ms=pl;const $h=new x,qh=new x,to=class to extends Et{constructor(t,e){super(),this._geoData=null,this._normal=null,this._thickness=0,t!==void 0&&e!==void 0&&(this._geo=new Ct(t,e))}get dxfTypeName(){return"LINE"}get _geo(){return this._geoData==null&&(this._geoData=new Ct(new x,new x)),this._geoData}set _geo(t){this._geoData=t}get startPoint(){return this._geo.startPoint}set startPoint(t){this._geo.startPoint=t}get endPoint(){return this._geo.endPoint}set endPoint(t){this._geo.endPoint=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){let t=this._normal;return t==null&&(t=new A(0,0,1),this._normal=t),t}set normal(t){this.normal.copy(t).normalize()}get midPoint(){return this._geo.midPoint}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"line",line:this._geo.clone(),extent:"bounded"}]}get closed(){return!1}get area(){return 0}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"startX",type:"float",editable:!0,accessor:{get:()=>this.startPoint.x,set:t=>{this.startPoint.x=t}}},{name:"startY",type:"float",editable:!0,accessor:{get:()=>this.startPoint.y,set:t=>{this.startPoint.y=t}}},{name:"startZ",type:"float",editable:!0,accessor:{get:()=>this.startPoint.z,set:t=>{this.startPoint.z=t}}},{name:"endX",type:"float",editable:!0,accessor:{get:()=>this.endPoint.x,set:t=>{this.endPoint.x=t}}},{name:"endY",type:"float",editable:!0,accessor:{get:()=>this.endPoint.y,set:t=>{this.endPoint.y=t}}},{name:"endZ",type:"float",editable:!0,accessor:{get:()=>this.endPoint.z,set:t=>{this.endPoint.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.midPoint),t.push(this.startPoint),t.push(this.endPoint),t}subMoveGripPointsAt(t,e){return Pt(t,i=>{switch(i){case 0:this.transformBy(F.makeTranslation(e));break;case 1:this.startPoint.add(e);break;case 2:this.endPoint.add(e);break}}),this}subGetOsnapPoints(t,e,i,r){const s=this.startPoint,o=this.endPoint;switch(t){case I.EndPoint:r.push(s),r.push(o);break;case I.MidPoint:r.push(this.midPoint);break;case I.Nearest:{const a=this._geo.project(e);r.push(a)}break;case I.Perpendicular:{const a=this._geo.perpPoint(e);r.push(a)}break;case I.Tangent:break}}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this.startPoint,i=this.endPoint,r=[new x(e.x,e.y,0),new x(i.x,i.y,0)];return t.lines(r)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLine"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,this.startPoint),t.writePoint3d(11,this.endPoint),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLine");let e=0,i=0,r=0,s=0,o=0,a=0,c=this.thickness,l=0,h=0,u=1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const d=t.readItem();if(!d)break;const g=Number(d.code),f=Number(d.value);switch(g){case 10:e=f;break;case 20:i=f;break;case 30:r=f;break;case 11:s=f;break;case 21:o=f;break;case 31:a=f;break;case 39:c=f;break;case 210:l=f;break;case 220:h=f;break;case 230:u=f;break}}return(l!==0||h!==0||u!==1)&&l*l+h*h+u*u>0&&this.normal.set(l,h,u).normalize(),this.thickness=c,$h.set(e,i,r),qh.set(s,o,a),this._geo=new Ct($h,qh),this}getOffsetCurves(t){const e=this._geo.offset(t);return[new to(e.startPoint,e.endPoint)]}getOffsetSideAtPoint(t){const e=this.startPoint,i=this.endPoint;return(i.x-e.x)*(t.y-e.y)-(i.y-e.y)*(t.x-e.x)>=0?1:-1}};to.typeName="Line";let Ki=to;var Oi=(n=>(n[n.InvisibleLeader=0]="InvisibleLeader",n[n.StraightLeader=1]="StraightLeader",n[n.SplineLeader=2]="SplineLeader",n))(Oi||{}),Dn=(n=>(n[n.NoneContent=0]="NoneContent",n[n.BlockContent=1]="BlockContent",n[n.MTextContent=2]="MTextContent",n[n.ToleranceContent=3]="ToleranceContent",n))(Dn||{}),qf=(n=>(n[n.Horizontal=0]="Horizontal",n[n.Vertical=1]="Vertical",n))(qf||{}),Kf=(n=>(n[n.Unknown=0]="Unknown",n[n.Left=1]="Left",n[n.Right=2]="Right",n[n.Top=3]="Top",n[n.Bottom=4]="Bottom",n))(Kf||{});const Ix=1,Ex=2,Tx=4,Lx=8,Mx=64,Cx=128,Ox=32768,ml=class ml extends nt{get dxfTypeName(){return"MULTILEADER"}constructor(){super(),this._leaders=[],this._leaderLineType=1,this._contentType=0,this._doglegEnabled=!1,this._doglegLength=0,this._doglegVector=new A(1,0,0),this._normal=new A(0,0,1),this._mleaderStyleId="",this._textHeight=2.5,this._textWidth=0,this._textRotation=0,this._textDirection=new A(1,0,0),this._textStyleName="",this._textAttachmentPoint=exports.AcGiMTextAttachmentPoint.MiddleLeft,this._textDrawingDirection=exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT,this._textLineSpacingFactor=1,this._textAttachmentDirection=0,this._arrowheadOverrides=[],this._blockAttributes=[]}get leaders(){return this._leaders.map(t=>this.cloneLeader(t))}get numberOfLeaders(){return this._leaders.length}get leaderLineType(){return this._leaderLineType}set leaderLineType(t){this._leaderLineType=t}get contentType(){return this._contentType}set contentType(t){this._contentType=t}get doglegEnabled(){return this._doglegEnabled}set doglegEnabled(t){this._doglegEnabled=t}get doglegLength(){return this._doglegLength}set doglegLength(t){this._doglegLength=t}get doglegVector(){return this._doglegVector}set doglegVector(t){this._doglegVector.copy(t)}get landingPoint(){return this._landingPoint}set landingPoint(t){this._landingPoint=t?this.createPoint(t):void 0}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get mleaderStyleId(){return this._mleaderStyleId}set mleaderStyleId(t){this._mleaderStyleId=t}get version(){return this._version}set version(t){this._version=t}get leaderStyleId(){return this._leaderStyleId}set leaderStyleId(t){this._leaderStyleId=t}get propertyOverrideFlag(){return this._propertyOverrideFlag}set propertyOverrideFlag(t){this._propertyOverrideFlag=t}get leaderLineColor(){return this._leaderLineColor}set leaderLineColor(t){this._leaderLineColor=t==null?void 0:t.clone()}get leaderLineTypeId(){return this._leaderLineTypeId}set leaderLineTypeId(t){this._leaderLineTypeId=t}get leaderLineWeight(){return this._leaderLineWeight}set leaderLineWeight(t){this._leaderLineWeight=t}get landingEnabled(){return this._landingEnabled}set landingEnabled(t){this._landingEnabled=t}get arrowheadId(){return this._arrowheadId}set arrowheadId(t){this._arrowheadId=t}get arrowheadSize(){return this._arrowheadSize}set arrowheadSize(t){this._arrowheadSize=t}get textStyleId(){return this._textStyleId}set textStyleId(t){this._textStyleId=t}get textLeftAttachmentType(){return this._textLeftAttachmentType}set textLeftAttachmentType(t){this._textLeftAttachmentType=t}get textRightAttachmentType(){return this._textRightAttachmentType}set textRightAttachmentType(t){this._textRightAttachmentType=t}get textAngleType(){return this._textAngleType}set textAngleType(t){this._textAngleType=t}get textAlignmentType(){return this._textAlignmentType}set textAlignmentType(t){this._textAlignmentType=t}get textColor(){return this._textColor}set textColor(t){this._textColor=t==null?void 0:t.clone()}get textFrameEnabled(){return this._textFrameEnabled}set textFrameEnabled(t){this._textFrameEnabled=t}get landingGap(){return this._landingGap}set landingGap(t){this._landingGap=t}get textAttachment(){return this._textAttachment}set textAttachment(t){this._textAttachment=t}get textFlowDirection(){return this._textFlowDirection}set textFlowDirection(t){this._textFlowDirection=t}get blockContentId(){return this._blockContentId}set blockContentId(t){this._blockContentId=t}get blockContentColor(){return this._blockContentColor}set blockContentColor(t){this._blockContentColor=t==null?void 0:t.clone()}get blockContentScale(){return this._blockContentScale}set blockContentScale(t){this._blockContentScale=t}get blockContentRotation(){return this._blockContentRotation}set blockContentRotation(t){this._blockContentRotation=t}get blockContentConnectionType(){return this._blockContentConnectionType}set blockContentConnectionType(t){this._blockContentConnectionType=t}get annotativeScaleEnabled(){return this._annotativeScaleEnabled}set annotativeScaleEnabled(t){this._annotativeScaleEnabled=t}get arrowheadOverrides(){return this._arrowheadOverrides}set arrowheadOverrides(t){this._arrowheadOverrides=t}get blockAttributes(){return this._blockAttributes}set blockAttributes(t){this._blockAttributes=t}get textDirectionNegative(){return this._textDirectionNegative}set textDirectionNegative(t){this._textDirectionNegative=t}get textAlignInIPE(){return this._textAlignInIPE}set textAlignInIPE(t){this._textAlignInIPE=t}get bottomTextAttachmentDirection(){return this._bottomTextAttachmentDirection}set bottomTextAttachmentDirection(t){this._bottomTextAttachmentDirection=t}get topTextAttachmentDirection(){return this._topTextAttachmentDirection}set topTextAttachmentDirection(t){this._topTextAttachmentDirection=t}get contentScale(){return this._contentScale}set contentScale(t){this._contentScale=t}get contentBasePosition(){return this._contentBasePosition}set contentBasePosition(t){this._contentBasePosition=t}get textAnchor(){return this._textAnchor}set textAnchor(t){this._textAnchor=t}get textLineSpacingStyle(){return this._textLineSpacingStyle}set textLineSpacingStyle(t){this._textLineSpacingStyle=t}get textBackgroundColor(){return this._textBackgroundColor}set textBackgroundColor(t){this._textBackgroundColor=t==null?void 0:t.clone()}get textBackgroundScaleFactor(){return this._textBackgroundScaleFactor}set textBackgroundScaleFactor(t){this._textBackgroundScaleFactor=t}get textBackgroundTransparency(){return this._textBackgroundTransparency}set textBackgroundTransparency(t){this._textBackgroundTransparency=t}get textBackgroundColorOn(){return this._textBackgroundColorOn}set textBackgroundColorOn(t){this._textBackgroundColorOn=t}get textFillOn(){return this._textFillOn}set textFillOn(t){this._textFillOn=t}get textColumnType(){return this._textColumnType}set textColumnType(t){this._textColumnType=t}get textUseAutoHeight(){return this._textUseAutoHeight}set textUseAutoHeight(t){this._textUseAutoHeight=t}get textColumnWidth(){return this._textColumnWidth}set textColumnWidth(t){this._textColumnWidth=t}get textColumnGutterWidth(){return this._textColumnGutterWidth}set textColumnGutterWidth(t){this._textColumnGutterWidth=t}get textColumnFlowReversed(){return this._textColumnFlowReversed}set textColumnFlowReversed(t){this._textColumnFlowReversed=t}get textColumnHeight(){return this._textColumnHeight}set textColumnHeight(t){this._textColumnHeight=t}get textUseWordBreak(){return this._textUseWordBreak}set textUseWordBreak(t){this._textUseWordBreak=t}get hasMText(){return this._hasMText}set hasMText(t){this._hasMText=t}get hasBlock(){return this._hasBlock}set hasBlock(t){this._hasBlock=t}get planeOrigin(){return this._planeOrigin}set planeOrigin(t){this._planeOrigin=t}get planeXAxisDirection(){return this._planeXAxisDirection}set planeXAxisDirection(t){this._planeXAxisDirection=t}get planeYAxisDirection(){return this._planeYAxisDirection}set planeYAxisDirection(t){this._planeYAxisDirection=t}get planeNormalReversed(){return this._planeNormalReversed}set planeNormalReversed(t){this._planeNormalReversed=t}get leaderSections(){return this.leaders}get blockContentData(){return this.blockContent}get mtextContent(){return this._mtextContent?{text:this._mtextContent.text,anchorPoint:this._mtextContent.anchorPoint.clone()}:void 0}set mtextContent(t){if(!t){this._mtextContent=void 0,this._contentType===2&&(this._contentType=0);return}this._mtextContent={text:t.text,anchorPoint:this.createPoint(t.anchorPoint)},this._contentType=2}get contents(){var t;return((t=this._mtextContent)==null?void 0:t.text)??""}set contents(t){this._mtextContent?this._mtextContent.text=t:this._mtextContent={text:t,anchorPoint:new x},this._contentType=2}get textLocation(){var t;return(t=this._mtextContent)==null?void 0:t.anchorPoint}set textLocation(t){if(!t){this._mtextContent=void 0;return}this._mtextContent?this._mtextContent.anchorPoint.copy(t):this._mtextContent={text:"",anchorPoint:this.createPoint(t)},this._contentType=2}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get textWidth(){return this._textWidth}set textWidth(t){this._textWidth=t}get textRotation(){return this._textRotation}set textRotation(t){this._textRotation=t}get textDirection(){return this._textDirection}set textDirection(t){this._textDirection.copy(t)}get textStyleName(){return this._textStyleName}set textStyleName(t){this._textStyleName=t}get textAttachmentPoint(){return this._textAttachmentPoint}set textAttachmentPoint(t){this._textAttachmentPoint=t}get textDrawingDirection(){return this._textDrawingDirection}set textDrawingDirection(t){this._textDrawingDirection=t}get textLineSpacingFactor(){return this._textLineSpacingFactor}set textLineSpacingFactor(t){this._textLineSpacingFactor=t}get textAttachmentDirection(){return this._textAttachmentDirection}set textAttachmentDirection(t){this._textAttachmentDirection=t}get blockContent(){var t,e,i;return this._blockContent?{blockContentId:this._blockContent.blockContentId,blockHandle:this._blockContent.blockHandle,normal:(t=this._blockContent.normal)==null?void 0:t.clone(),position:(e=this._blockContent.position)==null?void 0:e.clone(),scale:this._blockContent.scale.clone(),rotation:this._blockContent.rotation,color:(i=this._blockContent.color)==null?void 0:i.clone(),transformationMatrix:[...this._blockContent.transformationMatrix]}:void 0}set blockContent(t){var e;if(!t){this._blockContent=void 0,this._contentType===1&&(this._contentType=0);return}this._blockContent={blockContentId:t.blockContentId??t.blockHandle,blockHandle:t.blockHandle,normal:t.normal?new A(t.normal):void 0,position:t.position?this.createPoint(t.position):void 0,scale:new A(t.scale??{x:1,y:1,z:1}),rotation:t.rotation??0,color:(e=t.color)==null?void 0:e.clone(),transformationMatrix:t.transformationMatrix?[...t.transformationMatrix]:[]},this.blockContentId=this._blockContent.blockContentId,this._contentType=1}addLeader(t={}){var i,r;const e={lastLeaderLinePoint:t.lastLeaderLinePoint?this.createPoint(t.lastLeaderLinePoint):void 0,lastLeaderLinePointSet:t.lastLeaderLinePointSet,landingPoint:t.landingPoint?this.createPoint(t.landingPoint):void 0,doglegVector:t.doglegVector?new A(t.doglegVector):void 0,doglegVectorSet:t.doglegVectorSet,doglegLength:t.doglegLength,breaks:((i=t.breaks)==null?void 0:i.map(s=>({index:s.index,start:this.createPoint(s.start),end:this.createPoint(s.end)})))??[],leaderBranchIndex:t.leaderBranchIndex,directionType:t.directionType,leaderLines:[]};return(r=t.leaderLines)==null||r.forEach(s=>{e.leaderLines.push(this.createLeaderLine(s))}),this._leaders.push(e),this._leaders.length-1}removeLeader(t){return this.checkLeaderIndex(t),this._leaders.splice(t,1),this}addLeaderLine(t,e=[]){return this.checkLeaderIndex(t),this._leaders[t].leaderLines.push(this.createLeaderLine({vertices:e})),this._leaders[t].leaderLines.length-1}appendVertex(t,e,i){return this.getMutableLeaderLine(t,e).vertices.push(this.createPoint(i)),this}setLeaderLineVertices(t,e,i){return this.getMutableLeaderLine(t,e).vertices=i.map(r=>this.createPoint(r)),this}getLeaderLineVertices(t,e){return this.getMutableLeaderLine(t,e).vertices.map(i=>i.clone())}addBreak(t,e,i,r){return this.getMutableLeaderLine(t,e).breaks.push({start:this.createPoint(i),end:this.createPoint(r)}),this}setLandingPoint(t,e){return this.checkLeaderIndex(t),this._leaders[t].landingPoint=e?this.createPoint(e):void 0,this}setDoglegDirection(t,e){return this.checkLeaderIndex(t),this._leaders[t].doglegVector=new A(e),this}setDoglegLength(t,e){return this.checkLeaderIndex(t),this._leaders[t].doglegLength=e,this}get geometricExtents(){const t=this.collectGeometryPoints();return t.length>0?new j().setFromPoints(t):new j}subGetIntersectCurves(){const t=[];return this._leaders.forEach(e=>{e.leaderLines.forEach(i=>{t.push(...Wt(i.vertices,!1))})}),t}subGetGripPoints(){return this.collectGeometryPoints().map(t=>t.clone())}subMoveGripPointsAt(t,e){return Pt(t,i=>{this.moveGeometryGripPointAt(i,e)}),this}subGetOsnapPoints(t,e,i,r){var s;if(t===I.Insertion){this.contentBasePosition?r.push(this.contentBasePosition):this._mtextContent?r.push(this._mtextContent.anchorPoint):(s=this._blockContent)!=null&&s.position&&r.push(this._blockContent.position);return}this._leaders.forEach(o=>{o.leaderLines.forEach(a=>{const c=this.getLeaderLineDrawPoints(o,a);if(c.length!==0)switch(t){case I.EndPoint:r.push(...c);break;case I.MidPoint:case I.Nearest:case I.Perpendicular:{const l=[];for(let h=0;h<c.length-1;h++){const u=[];mi(c[h],c[h+1],t,e,u),l.push(...u)}if(t===I.MidPoint)r.push(...l);else{const h=oe(e,l);h&&r.push(h)}break}}})})}transformBy(t){var e,i,r,s,o,a,c,l;return this._leaders.forEach(h=>{var u,d;(u=h.lastLeaderLinePoint)==null||u.applyMatrix4(t),(d=h.landingPoint)==null||d.applyMatrix4(t),h.doglegVector&&this.transformVector(h.doglegVector,t),h.breaks.forEach(g=>{g.start.applyMatrix4(t),g.end.applyMatrix4(t)}),h.leaderLines.forEach(g=>{g.vertices.forEach(f=>f.applyMatrix4(t)),g.breaks.forEach(f=>{f.start.applyMatrix4(t),f.end.applyMatrix4(t)})})}),(e=this._landingPoint)==null||e.applyMatrix4(t),(i=this.contentBasePosition)==null||i.applyMatrix4(t),this.transformVector(this._doglegVector,t),this.transformVector(this._normal,t),(r=this.textAnchor)==null||r.applyMatrix4(t),(s=this._mtextContent)==null||s.anchorPoint.applyMatrix4(t),this.transformVector(this._textDirection,t),(a=(o=this._blockContent)==null?void 0:o.position)==null||a.applyMatrix4(t),(c=this._blockContent)!=null&&c.normal&&this.transformVector(this._blockContent.normal,t),this.blockContentScale&&this.transformVector(this.blockContentScale,t),(l=this.planeOrigin)==null||l.applyMatrix4(t),this.planeXAxisDirection&&this.transformVector(this.planeXAxisDirection,t),this.planeYAxisDirection&&this.transformVector(this.planeYAxisDirection,t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"leader",properties:[{name:"contentType",type:"enum",editable:!0,options:[{label:Dn[0],value:0},{label:Dn[1],value:1},{label:Dn[2],value:2},{label:Dn[3],value:3}],accessor:{get:()=>this.contentType,set:t=>{this.contentType=t}}},{name:"leaderLineType",type:"enum",editable:!0,options:[{label:Oi[0],value:0},{label:Oi[1],value:1},{label:Oi[2],value:2}],accessor:{get:()=>this.leaderLineType,set:t=>{this.leaderLineType=t}}},{name:"doglegEnabled",type:"boolean",editable:!0,accessor:{get:()=>this.doglegEnabled,set:t=>{this.doglegEnabled=t}}},{name:"doglegLength",type:"float",editable:!0,accessor:{get:()=>this.doglegLength,set:t=>{this.doglegLength=t}}},{name:"leaderCount",type:"int",editable:!1,accessor:{get:()=>this.numberOfLeaders}}]},{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.contents,set:t=>{this.contents=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.textHeight,set:t=>{this.textHeight=t}}},{name:"textWidth",type:"float",editable:!0,accessor:{get:()=>this.textWidth,set:t=>{this.textWidth=t}}},{name:"textStyleName",type:"string",editable:!0,accessor:{get:()=>this.textStyleName,set:t=>{this.textStyleName=t}}}]}]}}resolveEffectiveProperties(){if(super.resolveEffectiveProperties(),this._mleaderStyleId)return;const t=this.getDefaultMLeaderStyle();t&&(this._mleaderStyleId=t.objectId)}subWorldDraw(t,e){const i=[],r=t.subEntityTraits,s=r.color,o=r.lineType,a=r.lineWeight,c=this.getResolvedLeaderLineColor(),l=this.getResolvedLeaderLineStyle(),h=this.getResolvedLeaderLineWeight(),u=this.getResolvedTextColor();this.getResolvedLeaderLineType()!==0&&(this.applyColorTraits(r,c,s),this.applyLineTraits(r,l,h),this._leaders.forEach(f=>{f.leaderLines.forEach(m=>{const y=this.getLeaderLineDrawPoints(f,m);if(y.length>0){const b=this.drawLeaderLine(t,y);b&&i.push(b)}});const p=this.getDoglegPoints(f);p&&i.push(t.lines(p))}));const d=this.getRenderableMTextContent();if(!!d&&(this.contentType===2||this.contentType===0||this.hasMText===!0)&&d){this.applyColorTraits(r,u,s);const f=this.getResolvedTextHeight(),p={text:d.text,height:f,width:this.getMTextRenderWidth(d.text,f),position:d.anchorPoint,rotation:this.textRotation,directionVector:this.textDirection,attachmentPoint:this.textAttachmentPoint,drawingDirection:this.textDrawingDirection,lineSpaceFactor:this.textLineSpacingFactor,lineSpaceStyle:this.textLineSpacingStyle};i.push(t.mtext(p,this.getTextStyle(),e))}if(r.color=s,r.lineType=o,r.lineWeight=a,i.length!==0)return i.length===1?i[0]:t.group(i)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMLeader"),t.writeInt16(170,this.leaderLineType),t.writeBoolean(290,this.doglegEnabled),t.writeDouble(41,this.doglegLength),t.writeInt16(172,this.contentType),t.writeVector3d(210,this.normal),t.writeHandle(340,this.mleaderStyleId),this._landingPoint&&t.writePoint3d(10,this._landingPoint),t.writeVector3d(11,this.doglegVector),this._mtextContent&&(t.writeString(1,this._mtextContent.text),t.writePoint3d(12,this._mtextContent.anchorPoint),t.writeDouble(40,this.textHeight),t.writeDouble(42,this.textWidth),t.writeAngle(50,this.textRotation),t.writeString(7,this.textStyleName)),this._blockContent&&(t.writeHandle(341,this._blockContent.blockContentId??""),this._blockContent.position&&t.writePoint3d(15,this._blockContent.position),t.writeVector3d(16,this._blockContent.scale),t.writeAngle(52,this._blockContent.rotation)),this._leaders.forEach(e=>{e.landingPoint&&t.writePoint3d(110,e.landingPoint),e.doglegVector&&t.writeVector3d(111,e.doglegVector),t.writeDouble(140,e.doglegLength),t.writeInt16(171,e.leaderLines.length),e.leaderLines.forEach(i=>{t.writeInt16(90,i.vertices.length),i.vertices.forEach(r=>t.writePoint3d(10,r))})}),this}dxfInFields(t){var k,L,O,R,N,it,$,U,J,E,W,st,D,Ot,$t;super.dxfInFields(t),t.atSubclassData("AcDbMLeader"),this._leaders.length=0;let e=(k=this._mtextContent)==null?void 0:k.text,i=(O=(L=this._mtextContent)==null?void 0:L.anchorPoint)==null?void 0:O.clone(),r=!!this._mtextContent,s=(R=this._blockContent)==null?void 0:R.blockContentId,o=(it=(N=this._blockContent)==null?void 0:N.position)==null?void 0:it.clone(),a=(U=($=this._blockContent)==null?void 0:$.scale)==null?void 0:U.clone(),c=(J=this._blockContent)==null?void 0:J.rotation,l=(W=(E=this._blockContent)==null?void 0:E.normal)==null?void 0:W.clone(),h=(D=(st=this._blockContent)==null?void 0:st.color)==null?void 0:D.clone(),u=(Ot=this._blockContent)!=null&&Ot.transformationMatrix?[...this._blockContent.transformationMatrix]:[],d=!!this._blockContent,g=!1,f=!1,p=!1,m=($t=this._landingPoint)==null?void 0:$t.clone(),y=this._doglegVector.clone(),b=null,_=null,w=!1,S;const P=()=>{_&&b&&b.leaderLines.push(_),_=null},v=()=>{P(),b&&this.addLeader(b),b=null};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const ct=t.readItem();if(!ct)break;const Ge=Number(ct.code),H=Number(ct.value),ot=String(ct.value??"");switch(Ge){case 100:return t.pushBackItem(ct),v(),this.finishMLeaderDxfIn(e,i,r,s,o,a,c,l,h,u,d,g,m,y,S),this;case 300:if(ot==="CONTEXT_DATA{"){f=!0;const B=this.dxfInContextData(t);B.hasArrowheadSize&&(p=!0),B.textContent!=null&&(e=B.textContent,r=!0),B.textAnchor&&(i=B.textAnchor,r=!0),B.hasMText!=null&&(this.hasMText=B.hasMText),B.hasBlock!=null&&(this.hasBlock=B.hasBlock),B.blockContentId&&(s=B.blockContentId,d=this.isValidMLeaderHandle(B.blockContentId)),B.blockPosition&&(o=B.blockPosition,d=!0),B.blockScale&&(a=B.blockScale,d=!0),B.blockRotation!=null&&(c=B.blockRotation,d=!0),B.blockNormal&&(l=B.blockNormal,d=!0),B.blockColor&&(h=B.blockColor,d=!0),B.blockMatrix.length>0&&(u=B.blockMatrix,d=!0),r&&!g&&(this.contentType=2,g=!0)}break;case 270:f=!0,this.version=H;break;case 340:this.leaderStyleId=ot,this.mleaderStyleId=ot;break;case 90:w?(P(),_={vertices:[],breakPointIndexes:[],breaks:[]}):this.propertyOverrideFlag=H;break;case 170:this.leaderLineType=H;break;case 91:this.leaderLineColor=_e(H);break;case 341:f?this.leaderLineTypeId=ot:this.isValidMLeaderHandle(ot)?(s=ot,d=!0):this.leaderLineTypeId=ot;break;case 171:w||(this.leaderLineWeight=H);break;case 290:f?this.landingEnabled=this.readDxfBoolean(ct):this.doglegEnabled=this.readDxfBoolean(ct);break;case 291:this.doglegEnabled=this.readDxfBoolean(ct);break;case 40:f?this.doglegLength=H:this.textHeight=H;break;case 41:this.doglegLength=H;break;case 342:this.arrowheadId=ot;break;case 42:f?p||(this.arrowheadSize=H*(this.contentScale??1)):this.textWidth=H;break;case 172:this.contentType=H,g=!0;break;case 343:this.textStyleId=ot;break;case 173:this.textLeftAttachmentType=H;break;case 95:this.textRightAttachmentType=H;break;case 174:this.textAngleType=H;break;case 175:this.textAlignmentType=H;break;case 92:this.textColor=_e(H);break;case 292:this.textFrameEnabled=this.readDxfBoolean(ct);break;case 344:this.isValidMLeaderHandle(ot)&&(s=ot,this.blockContentId=ot,d=!0);break;case 93:this.blockContentColor=_e(H);break;case 10:if(w){t.pushBackItem(ct);const B=t.readPoint3d(10);B&&_&&_.vertices.push(B)}else{t.pushBackItem(ct);const B=t.readPoint3d(10);if(!B)break;f?(this.blockContentScale=new A(B),a=new A(B),d=!0):m=B}break;case 43:this.blockContentRotation=H,c=H,d=!0;break;case 176:this.blockContentConnectionType=H;break;case 293:this.annotativeScaleEnabled=this.readDxfBoolean(ct);break;case 94:{this.arrowheadOverrides.push({index:H});break}case 345:{const B=this.arrowheadOverrides[this.arrowheadOverrides.length-1];B?B.handle=ot:this.arrowheadOverrides.push({index:0,handle:ot});break}case 330:this.blockAttributes.push({id:ot});break;case 177:{const B=this.blockAttributes[this.blockAttributes.length-1];B&&(B.index=H);break}case 44:{const B=this.blockAttributes[this.blockAttributes.length-1];B&&(B.width=H);break}case 302:{const B=this.blockAttributes[this.blockAttributes.length-1];B&&(B.text=ot);break}case 294:this.textDirectionNegative=this.readDxfBoolean(ct);break;case 178:this.textAlignInIPE=H;break;case 179:H!==0&&(this.textAttachmentPoint=H);break;case 271:this.textAttachmentDirection=H;break;case 272:this.bottomTextAttachmentDirection=H;break;case 273:this.topTextAttachmentDirection=H;break;case 210:t.pushBackItem(ct);{const B=t.readVector3d(210);B&&(this.normal=B)}break;case 110:v(),w=!0,t.pushBackItem(ct),b={landingPoint:t.readPoint3d(110),doglegVector:new A(1,0,0),doglegLength:0,breaks:[],leaderLines:[]};break;case 111:if(b){t.pushBackItem(ct);const B=t.readVector3d(111);B&&(b.doglegVector=B)}break;case 140:b?b.doglegLength=H:this.arrowheadSize=H;break;case 1:e=ot,r=!0;break;case 12:t.pushBackItem(ct);{const B=t.readPoint3d(12);B&&(i=B,r=!0)}break;case 7:this.textStyleName=ot;break;case 50:S=H;break;case 15:t.pushBackItem(ct);{const B=t.readPoint3d(15);B&&(o=B,d=!0)}break;case 16:t.pushBackItem(ct);{const B=t.readVector3d(16);B&&(a=B,d=!0)}break;case 52:c=H*Math.PI/180,d=!0;break;case 11:if(!w&&!f){t.pushBackItem(ct);const B=t.readVector3d(11);B&&(y=B)}break}}return v(),this.finishMLeaderDxfIn(e,i,r,s,o,a,c,l,h,u,d,g,m,y,S),this}finishMLeaderDxfIn(t,e,i,r,s,o,a,c,l,h,u,d,g,f,p){if(g&&(this.landingPoint=g),this.doglegVector=f,p!=null&&(this.textRotation=p*Math.PI/180),!this.textStyleName&&this.textStyleId){const y=this.database.tables.textStyleTable.getIdAt(this.textStyleId);y!=null&&y.name&&(this.textStyleName=y.name)}const m=e??this.textAnchor??this.contentBasePosition??g;(i||this.hasMText)&&t!=null&&m?(this.mtextContent={text:t,anchorPoint:m.clone()},this.textAnchor||(this.textAnchor=m.clone()),d||(this.contentType=2)):(i||this.hasMText)&&t!=null&&!m&&(d||(this.contentType=2)),u&&this.isValidMLeaderHandle(r)&&this.contentType!==2&&!this.mtextContent&&(this.blockContent={blockContentId:r,position:s,scale:o??new A(1,1,1),rotation:a??0,normal:c,color:l,transformationMatrix:h},!d&&this.contentType===0&&(this.contentType=1))}dxfInContextData(t){const e={blockMatrix:[]};for(;!t.atEof;){const i=t.readItem();if(!i)break;const r=Number(i.code),s=Number(i.value),o=String(i.value??"");if(r===301)break;if(r===0){t.pushBackItem(i);break}switch(r){case 10:t.pushBackItem(i),this.contentBasePosition=t.readPoint3d(10);break;case 11:t.pushBackItem(i);{const a=t.readVector3d(11);a&&(this.normal=a)}break;case 12:t.pushBackItem(i);{const a=t.readPoint3d(12);a&&(e.textAnchor=a,this.textAnchor=a.clone())}break;case 13:t.pushBackItem(i);{const a=t.readVector3d(13);a&&(this.textDirection=a)}break;case 14:t.pushBackItem(i),e.blockNormal=t.readVector3d(14);break;case 15:t.pushBackItem(i),e.blockPosition=t.readPoint3d(15);break;case 16:t.pushBackItem(i),e.blockScale=t.readVector3d(16);break;case 40:this.contentScale=s;break;case 41:s>0&&(this.textHeight=s);break;case 42:this.textRotation=s;break;case 43:s>0&&(this.textWidth=s);break;case 44:s>0&&(this.textHeight=s);break;case 45:this.textLineSpacingFactor=s;break;case 46:e.blockRotation=s;break;case 47:e.blockMatrix.push(s);break;case 90:this.textColor=_e(s);break;case 91:this.textBackgroundColor=_e(s);break;case 92:this.textBackgroundTransparency=s;break;case 93:e.blockColor=_e(s);break;case 110:t.pushBackItem(i),this.planeOrigin=t.readPoint3d(110);break;case 111:t.pushBackItem(i),this.planeXAxisDirection=t.readVector3d(111);break;case 112:t.pushBackItem(i),this.planeYAxisDirection=t.readVector3d(112);break;case 140:this.arrowheadSize=s,e.hasArrowheadSize=!0;break;case 141:this.textBackgroundScaleFactor=s;break;case 142:this.textColumnWidth=s;break;case 143:this.textColumnGutterWidth=s;break;case 144:this.textColumnHeight=s;break;case 145:this.landingGap=s;break;case 170:this.textLineSpacingStyle=s;break;case 171:this.textAttachment=s;break;case 172:this.textFlowDirection=s;break;case 173:this.textColumnType=s;break;case 290:e.hasMText=this.readDxfBoolean(i),this.hasMText=e.hasMText;break;case 291:this.textBackgroundColorOn=this.readDxfBoolean(i);break;case 292:this.textFillOn=this.readDxfBoolean(i);break;case 293:this.textUseAutoHeight=this.readDxfBoolean(i);break;case 294:this.textColumnFlowReversed=this.readDxfBoolean(i);break;case 295:this.textUseWordBreak=this.readDxfBoolean(i);break;case 296:e.hasBlock=this.readDxfBoolean(i),this.hasBlock=e.hasBlock;break;case 297:this.planeNormalReversed=this.readDxfBoolean(i);break;case 302:if(o==="LEADER{"){const a=this.dxfInLeaderSection(t);this.addLeader(a)}break;case 304:o!=="LEADER_LINE{"&&(e.textContent=o,this.hasMText=!0);break;case 340:this.textStyleId=o;break;case 341:e.blockContentId=o,this.isValidMLeaderHandle(o)&&(this.blockContentId=o);break}}return e}dxfInLeaderSection(t){const e={breaks:[],leaderLines:[]};let i;const r=()=>{i&&(e.breaks.push(i),i=void 0)};for(;!t.atEof;){const s=t.readItem();if(!s)break;const o=Number(s.code),a=Number(s.value),c=String(s.value??"");if(o===303){r();break}if(o===0||o===301){t.pushBackItem(s),r();break}switch(o){case 290:e.lastLeaderLinePointSet=this.readDxfBoolean(s);break;case 291:e.doglegVectorSet=this.readDxfBoolean(s);break;case 10:t.pushBackItem(s),e.lastLeaderLinePoint=t.readPoint3d(10);break;case 11:t.pushBackItem(s),e.doglegVector=t.readVector3d(11);break;case 12:t.pushBackItem(s);{const l=t.readPoint3d(12);l&&(i={start:l,end:l.clone()})}break;case 13:t.pushBackItem(s);{const l=t.readPoint3d(13);i&&l&&(i.end=l,r())}break;case 90:e.leaderBranchIndex=a;break;case 40:e.doglegLength=a;break;case 304:c==="LEADER_LINE{"&&e.leaderLines.push(this.dxfInLeaderLine(t));break}}return e}dxfInLeaderLine(t){const e={vertices:[],breakPointIndexes:[],breaks:[]};let i;const r=()=>{i&&(e.breaks.push(i),i=void 0)};for(;!t.atEof;){const s=t.readItem();if(!s)break;const o=Number(s.code),a=Number(s.value);if(o===305){r();break}if(o===0||o===303||o===301){t.pushBackItem(s),r();break}switch(o){case 10:t.pushBackItem(s);{const c=t.readPoint3d(10);c&&e.vertices.push(c)}break;case 11:t.pushBackItem(s);{const c=t.readPoint3d(11);c&&(i={index:i==null?void 0:i.index,start:c,end:c.clone()})}break;case 12:t.pushBackItem(s);{const c=t.readPoint3d(12);i&&c&&(i.end=c,r())}break;case 90:e.breakPointIndexes.push(a),i={index:a,start:(i==null?void 0:i.start)??new x,end:(i==null?void 0:i.end)??new x};break;case 91:e.leaderLineIndex=a;break}}return e}readDxfBoolean(t){if(typeof t.value=="boolean")return t.value;const e=Number(t.value);if(Number.isFinite(e))return e!==0;const i=String(t.value??"");return i!==""&&i!=="0"}isValidMLeaderHandle(t){return t!=null&&t!==""&&t!=="0"}createPoint(t){return new x().copy(t)}createLeaderLine(t){var e,i;return{vertices:((e=t.vertices)==null?void 0:e.map(r=>this.createPoint(r)))??[],breakPointIndexes:t.breakPointIndexes?[...t.breakPointIndexes]:[],leaderLineIndex:t.leaderLineIndex,breaks:((i=t.breaks)==null?void 0:i.map(r=>({index:r.index,start:this.createPoint(r.start),end:this.createPoint(r.end)})))??[]}}cloneLeader(t){var e,i,r;return{lastLeaderLinePoint:(e=t.lastLeaderLinePoint)==null?void 0:e.clone(),lastLeaderLinePointSet:t.lastLeaderLinePointSet,landingPoint:(i=t.landingPoint)==null?void 0:i.clone(),doglegVector:(r=t.doglegVector)==null?void 0:r.clone(),doglegVectorSet:t.doglegVectorSet,doglegLength:t.doglegLength,breaks:t.breaks.map(s=>({index:s.index,start:s.start.clone(),end:s.end.clone()})),leaderBranchIndex:t.leaderBranchIndex,directionType:t.directionType,leaderLines:t.leaderLines.map(s=>({vertices:s.vertices.map(o=>o.clone()),breakPointIndexes:[...s.breakPointIndexes],leaderLineIndex:s.leaderLineIndex,breaks:s.breaks.map(o=>({index:o.index,start:o.start.clone(),end:o.end.clone()}))}))}}checkLeaderIndex(t){if(t<0||t>=this._leaders.length)throw new Error("The leader index is out of range!")}getMutableLeaderLine(t,e){this.checkLeaderIndex(t);const i=this._leaders[t].leaderLines[e];if(!i)throw new Error("The leader line index is out of range!");return i}collectGeometryPoints(){var e;const t=[];return this._leaders.forEach(i=>{i.lastLeaderLinePoint&&t.push(i.lastLeaderLinePoint),i.landingPoint&&t.push(i.landingPoint),i.breaks.forEach(s=>t.push(s.start,s.end)),i.leaderLines.forEach(s=>{t.push(...s.vertices),s.breaks.forEach(o=>t.push(o.start,o.end))});const r=this.getDoglegPoints(i);r&&t.push(...r),i.leaderLines.forEach(s=>{const o=this.getArrowheadPoints(this.getLeaderLineDrawPoints(i,s));o&&t.push(...o)})}),this._landingPoint&&t.push(this._landingPoint),this.contentBasePosition&&t.push(this.contentBasePosition),this.textAnchor&&t.push(this.textAnchor),this._mtextContent&&t.push(this._mtextContent.anchorPoint),(e=this._blockContent)!=null&&e.position&&t.push(this._blockContent.position),this.planeOrigin&&t.push(this.planeOrigin),t}moveGeometryGripPointAt(t,e){var s;let i=0;const r=(o,a)=>{if(o){i===t&&o.add(e),i++;return}a&&(i===t&&a(),i++)};this._leaders.forEach(o=>{r(o.lastLeaderLinePoint),r(o.landingPoint),o.breaks.forEach(c=>{r(c.start),r(c.end)}),o.leaderLines.forEach(c=>{c.vertices.forEach(l=>r(l)),c.breaks.forEach(l=>{r(l.start),r(l.end)})});const a=this.getDoglegPoints(o);a&&(r(a[0]),r(void 0,()=>{const c=a[0],l=a[1];if(!c||!l)return;const h=c.distanceTo({x:l.x+e.x,y:l.y+e.y,z:(l.z??0)+(e.z??0)});o.doglegLength!=null||o.doglegVectorSet?o.doglegLength=h:this._doglegLength=h})),o.leaderLines.forEach(c=>{const l=this.getLeaderLineDrawPoints(o,c),h=this.getArrowheadPoints(l);h&&h.forEach((u,d)=>{d===0||d===h.length-1?r(l[0]):r(void 0)})})}),r(this._landingPoint),r(this.contentBasePosition),r(this.textAnchor),this._mtextContent&&r(this._mtextContent.anchorPoint),(s=this._blockContent)!=null&&s.position&&r(this._blockContent.position),r(this.planeOrigin)}getLeaderLineDrawPoints(t,e){if(e.vertices.length>=2)return e.vertices;if(e.vertices.length===0)return[];const i=t.lastLeaderLinePoint??t.landingPoint??this._landingPoint??this.contentBasePosition;return!i||e.vertices[0].equals(i)?e.vertices:[e.vertices[0],i]}getDoglegPoints(t){if(!this.getResolvedDoglegEnabled())return;const e=t.lastLeaderLinePoint??t.landingPoint??this._landingPoint;if(!e)return;const i=this.contentBasePosition;if(i&&!i.equals(e))return[e,i.clone()];const r=t.doglegVector??this._doglegVector,s=t.doglegLength??this.getResolvedDoglegLength();if(s==null||s===0||r.lengthSq()===0)return;const o=e.clone().add(r.clone().normalize().multiplyScalar(s));return[e,o]}getArrowheadPoints(t){if(!this.isArrowheadVisible()||t.length<2)return;const e=this.getArrowheadFrame(t);if(!e)return;const i=this.getResolvedArrowheadSize(),{tip:r,unit:s}=e,o=r.clone().add(s.clone().multiplyScalar(i)),a=i/6,c=new A(-s.y,s.x,0),l=o.clone().add(c.clone().multiplyScalar(a)),h=o.clone().add(c.clone().multiplyScalar(-a));return[r,l,h,r]}isArrowheadVisible(){const t=this.getResolvedArrowheadId();return(t==null?void 0:t.toUpperCase())==="_NONE"?!1:this.getResolvedArrowheadSize()>0}drawLeaderLine(t,e){const i=[],r=this.getLeaderLinePointsForDraw(e);r.length>=2&&i.push(t.lines(r));const s=this.drawArrowhead(t,e);if(s&&i.push(s),i.length!==0)return i.length===1?i[0]:t.group(i)}getLeaderLinePointsForDraw(t){const e=this.getArrowheadLeaderLineTrimDistance();return e<=0?t:this.trimPolylineStart(t,e)}getArrowheadLeaderLineTrimDistance(){if(!this.isArrowheadVisible())return 0;const t=this.getResolvedArrowheadBlockTableRecord();if(!t)return 0;const e=this.getResolvedArrowheadSize();if(e<=0)return 0;const i=t.origin??x.ORIGIN;let r=i.x;for(const s of t.newIterator()){const o=s.geometricExtents;o.isEmpty()||o.max.x>r&&(r=o.max.x)}return Math.max(0,(r-i.x)*e)}trimPolylineStart(t,e){if(t.length<2||e<=0)return t;let i=e;for(let r=0;r<t.length-1;r++){const s=t[r],o=t[r+1],a=o.distanceTo(s);if(!(a<=0)){if(i<a){const c=new A().subVectors(o,s);return[s.clone().add(c.multiplyScalar(i/a)),...t.slice(r+1)]}i-=a}}return[t[t.length-1]]}drawArrowhead(t,e){if(!this.isArrowheadVisible())return;const i=this.drawArrowheadBlock(t,e);if(i)return i;const r=this.getArrowheadPoints(e);if(!r)return;const s=new he;s.add(new rt(r,!0));const o=t.subEntityTraits,a=o.fillType;o.fillType={solidFill:!0,patternAngle:0,definitionLines:[]};const c=t.area(s);return o.fillType=a,c}drawArrowheadBlock(t,e){const i=this.getResolvedArrowheadBlockTableRecord();if(!i)return;const r=this.getArrowheadFrame(e);if(!r)return;const{tip:s,unit:o}=r,a=this.getResolvedArrowheadSize(),c=Math.atan2(o.y,o.x),l=i.origin??x.ORIGIN,h=new F().makeTranslation(-l.x,-l.y,-l.z),u=new F().makeScale(a,a,a),d=new F().makeRotationZ(c),g=new F().makeTranslation(s.x,s.y,s.z),f=new F().multiplyMatrices(g,d).multiply(u).multiply(h);return xn.instance.draw(t,i,this.resolvedColor,[],!0,f,new A(this.normal))}getArrowheadFrame(t){if(t.length<2)return;const e=t[0],i=t.find(s=>!s.equals(e));if(!i)return;const r=new A().subVectors(i,e);if(r.lengthSq()!==0)return{tip:e,unit:r.normalize()}}getResolvedArrowheadId(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.arrowSymbolId;return this.arrowheadId??t}getResolvedArrowheadBlockTableRecord(){const t=this.getResolvedArrowheadId();if(t)return this.database.tables.blockTable.getIdAt(t)}getResolvedArrowheadSize(){const t=this.getMLeaderStyle(),e=(t==null?void 0:t.arrowSize)??(t==null?void 0:t.scale);return this.arrowheadSize??this.contentScale??e??this.getResolvedTextHeight()}getResolvedTextHeight(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.textHeight;return this.textHeight>0?this.textHeight:t!=null&&t>0?t:2.5}getRenderableMTextContent(){var i;if(this._mtextContent)return{text:this._mtextContent.text,anchorPoint:this._mtextContent.anchorPoint};const t=(i=this.getMLeaderStyle())==null?void 0:i.defaultMTextContents,e=this.textAnchor??this.contentBasePosition??this._landingPoint;if(!(!t||!e))return{text:t,anchorPoint:e}}getMTextRenderWidth(t,e){return this._textWidth>0?this._textWidth:0}transformVector(t,e){const i=new x,r=new x(t.x,t.y,t.z);i.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-i.x,r.y-i.y,r.z-i.z)}getMLeaderStyle(){var i,r;const t=this.database.objects.mleaderStyle,e=(i=this.mleaderStyleId||this.leaderStyleId)==null?void 0:i.trim();if(e){const s=t.getIdAt(e);if(s)return s;const o=e.toUpperCase();for(const[,c]of t.entries())if(((r=c.objectId)==null?void 0:r.toUpperCase())===o)return c;const a=this.database.getObjectById(e);if(a instanceof Io)return a}return this.getDefaultMLeaderStyle()}getDefaultMLeaderStyle(){const t=this.resolveMLeaderStyleByName(this.getDefaultMLeaderStyleName());return t||this.database.objects.mleaderStyle.newIterator().toArray()[0]}resolveMLeaderStyleByName(t){const e=t==null?void 0:t.trim();if(!e)return;const i=this.database.objects.mleaderStyle,r=i.getAt(e);if(r)return r;const s=i.getIdAt(e);if(s)return s;const o=e.toUpperCase();for(const[a,c]of i.entries())if(a.toUpperCase()===o)return c}getDefaultMLeaderStyleName(){try{return this.database.cmleaderstyle||Fe}catch{return Fe}}getResolvedTextStyleName(){var s,o,a;const t=this.database.tables.textStyleTable,e=(s=this.getMLeaderStyle())==null?void 0:s.textStyleId,i=e?(o=t.getIdAt(e))==null?void 0:o.name:void 0,r=this.textStyleId?(a=t.getIdAt(this.textStyleId))==null?void 0:a.name:void 0;if(this.textStyleName){const c=t.getAt(this.textStyleName);if(c!=null&&c.name)return c.name;const l=t.getIdAt(this.textStyleName);if(l!=null&&l.name)return l.name}return r||i}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.getResolvedTextStyleName());if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}getResolvedLeaderLineColor(){var t;return this.getResolvedComponentColor(this.leaderLineColor,(t=this.getMLeaderStyle())==null?void 0:t.leaderLineColor,Ex)}getResolvedLeaderLineType(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.leaderLineType;return this.getResolvedStyleDrivenValue(this.leaderLineType,t,Ix)}getResolvedLeaderLineTypeId(){var t;return this.getResolvedStyleDrivenValue(this.leaderLineTypeId,(t=this.getMLeaderStyle())==null?void 0:t.leaderLineTypeId,Tx)}getResolvedLeaderLineStyle(){const t=this.getResolvedLeaderLineTypeId();if(!t)return;const e=this.database.tables.linetypeTable.getIdAt(t);if(e)return{type:"UserSpecified",...e.linetype}}getResolvedLeaderLineWeight(){var i;const t=(i=this.getMLeaderStyle())==null?void 0:i.leaderLineWeight,e=this.getResolvedStyleDrivenValue(this.leaderLineWeight,t,Lx);if(e!=null)return e}getResolvedDoglegEnabled(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.doglegEnabled;return this.getResolvedStyleDrivenValue(this.doglegEnabled,t,Mx)}getResolvedDoglegLength(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.doglegLength;return this.getResolvedStyleDrivenValue(this.doglegLength,t,Cx)}getResolvedTextColor(){var t;return this.getResolvedComponentColor(this.textColor,(t=this.getMLeaderStyle())==null?void 0:t.textColor,Ox)}getResolvedComponentColor(t,e,i){if(!t)return e;if(!t.isByBlock&&!t.isByLayer)return t;const r=this.isPropertyOverrideEnabled(i);return r===!0?t:e??t}getResolvedStyleDrivenValue(t,e,i){const r=this.isPropertyOverrideEnabled(i);return r===!0?t??e:e??t}isPropertyOverrideEnabled(t){if(this.propertyOverrideFlag!=null)return(this.propertyOverrideFlag&t)!==0}applyColorTraits(t,e,i){t.color=i,e&&(t.color=e)}applyLineTraits(t,e,i){e&&(t.lineType=e),i!=null&&(t.lineWeight=i)}};ml.typeName="MLeader";let ys=ml;var Zf=(n=>(n[n.Top=0]="Top",n[n.Zero=1]="Zero",n[n.Bottom=2]="Bottom",n))(Zf||{}),Qf=(n=>(n[n.HasVertex=1]="HasVertex",n[n.Closed=2]="Closed",n[n.SuppressStartCaps=4]="SuppressStartCaps",n[n.SuppressEndCaps=8]="SuppressEndCaps",n))(Qf||{});const yl=class yl extends nt{get dxfTypeName(){return"MLINE"}constructor(){super(),this._styleName="",this._styleObjectHandle="",this._scale=1,this._justification=1,this._flags=0,this._styleCount=0,this._startPosition=new x,this._normal=new A(0,0,1),this._segments=[]}get styleName(){return this._styleName||this.getDefaultStyleName()}set styleName(t){this._styleName=t}get styleObjectHandle(){return this._styleObjectHandle}set styleObjectHandle(t){this._styleObjectHandle=t}get scale(){return this._scale}set scale(t){this._scale=t}get justification(){return this._justification}set justification(t){this._justification=t}get flags(){return this._flags}set flags(t){this._flags=t}get styleCount(){return this._styleCount}set styleCount(t){this._styleCount=Math.max(0,t)}get startPosition(){return this._startPosition}set startPosition(t){this._startPosition.copy(t)}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get segments(){return this._segments.map(t=>this.cloneSegment(t))}set segments(t){this._segments=t.map(e=>this.createSegment(e)),this.updateHasVertexFlag()}get vertexCount(){return this._segments.length}get closed(){return(this._flags&2)!==0}set closed(t){this.setFlag(2,t)}get suppressStartCaps(){return(this._flags&4)!==0}set suppressStartCaps(t){this.setFlag(4,t)}get suppressEndCaps(){return(this._flags&8)!==0}set suppressEndCaps(t){this.setFlag(8,t)}appendSegment(t){this._segments.push(this.createSegment(t)),this.updateHasVertexFlag()}clearSegments(){this._segments=[],this.updateHasVertexFlag()}get geometricExtents(){const t=this.collectGeometryPoints();return new j().setFromPoints(t)}subGetIntersectCurves(){const t=[],e=this.getMLineStyle(),i=this.getRenderableElementCount(e);if(i<=0)return Wt(this.getReferencePath(),this.closed);for(let r=0;r<i;r++)t.push(...Wt(this.getElementPath(r,e),this.closed));return t}transformBy(t){return this._startPosition.applyMatrix4(t),this._segments.forEach(e=>{e.position.applyMatrix4(t),this.transformVector(e.direction,t),this.transformVector(e.miterDirection,t)}),this.transformVector(this._normal,t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"mline",properties:[{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"scale",type:"float",editable:!0,accessor:{get:()=>this.scale,set:t=>{this.scale=t}}},{name:"justification",type:"int",editable:!0,accessor:{get:()=>this.justification,set:t=>{this.justification=t}}},{name:"closed",type:"boolean",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}},{name:"vertexCount",type:"int",editable:!1,accessor:{get:()=>this.vertexCount}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this._startPosition.clone()),this._segments.forEach(e=>t.push(e.position.clone())),t}subMoveGripPointsAt(t,e){const i=[this._startPosition,...this._segments.map(r=>r.position)];return pi(t,e,i),Pt(t,r=>{this.updateReferencePathDirectionsAfterGripMove(r)}),this}subGetOsnapPoints(t,e,i,r){const s=[this._startPosition,...this._segments.map(o=>o.position)];if(s.length!==0)switch(t){case I.EndPoint:r.push(...s);break;case I.MidPoint:case I.Nearest:case I.Perpendicular:{const o=[];for(let a=0;a<s.length-1;a++){const c=[];mi(s[a],s[a+1],t,e,c),o.push(...c)}if(t===I.MidPoint)r.push(...o);else{const a=oe(e,o);a&&r.push(a)}break}}}subWorldDraw(t){if(this._segments.length===0)return;const e=[],i=this.getMLineStyle(),r=this.getRenderableElementCount(i),s=t.subEntityTraits,o=s.color,a=s.lineType,c=s.fillType,l=s.drawOrder,h=this.createFillArea(i,r);if(h&&(s.color=o,this.applyFillTraits(i,s),s.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},s.drawOrder=-1,e.push(t.area(h)),s.fillType=c,s.drawOrder=l),r<=0){const u=this.getReferencePath();u.length>=2&&e.push(t.lines(u))}else{for(let u=0;u<r;u++){s.color=o,s.lineType=a,this.applyStyleElementTraits(i,u,s);const d=this.getElementPath(u,i);d.length>=2&&e.push(t.lines(d))}this.appendStyleDrivenJointAndCapEntities(t,e,i,r,o,a)}if(s.color=o,s.lineType=a,s.fillType=c,s.drawOrder=l,e.length!==0)return e.length===1?e[0]:t.group(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMline"),t.writeString(2,this.styleName),t.writeHandle(340,this._styleObjectHandle),t.writeDouble(40,this._scale),t.writeInt16(70,this._justification),t.writeInt16(71,this._flags),t.writeInt16(72,this.vertexCount),t.writeInt16(73,this._styleCount),t.writePoint3d(10,this._startPosition),t.writeVector3d(210,this._normal),this._segments.forEach(e=>{t.writePoint3d(11,e.position),t.writeVector3d(12,e.direction),t.writeVector3d(13,e.miterDirection),e.elements.forEach(i=>{t.writeInt16(74,i.parameterCount),i.parameters.forEach(r=>t.writeDouble(41,r)),t.writeInt16(75,i.fillCount),i.fillParameters.forEach(r=>t.writeDouble(42,r))})}),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMline");let e=this._startPosition.x,i=this._startPosition.y,r=this._startPosition.z,s=this._normal.x,o=this._normal.y,a=this._normal.z;const c=[];let l=null,h=null,u=!1,d=!1,g=0,f=0;const p=()=>{h&&l&&l.elements.push(h),h=null,u=!1,d=!1,g=0,f=0},m=()=>{p(),l&&c.push(l),l=null};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const y=t.readItem();if(!y)break;const b=Number(y.code),_=Number(y.value);switch(b){case 2:this.styleName=String(y.value);break;case 340:this.styleObjectHandle=String(y.value);break;case 40:this.scale=_;break;case 70:this.justification=_;break;case 71:this.flags=_;break;case 72:break;case 73:this.styleCount=_;break;case 10:e=_;break;case 20:i=_;break;case 30:r=_;break;case 210:s=_;break;case 220:o=_;break;case 230:a=_;break;case 11:m(),l={position:new x(_,0,0),direction:new A(1,0,0),miterDirection:new A(0,1,0),elements:[]};break;case 21:l&&(l.position.y=_);break;case 31:l&&(l.position.z=_);break;case 12:l&&(l.direction.x=_);break;case 22:l&&(l.direction.y=_);break;case 32:l&&(l.direction.z=_);break;case 13:l&&(l.miterDirection.x=_);break;case 23:l&&(l.miterDirection.y=_);break;case 33:l&&(l.miterDirection.z=_);break;case 74:p(),g=_,u=!0,d=!1,h={parameterCount:_,parameters:[],fillCount:0,fillParameters:[]};break;case 41:h&&u&&(h.parameters.push(_),g>0&&h.parameters.length>=g&&(u=!1));break;case 75:h&&(f=_,h.fillCount=_,d=!0,u=!1);break;case 42:h&&d&&(h.fillParameters.push(_),f>0&&h.fillParameters.length>=f&&(d=!1));break}}return m(),this.startPosition=new x(e,i,r),this.normal=new A(s,o,a),this.segments=c,this}setFlag(t,e){e?this._flags|=t:this._flags&=~t}updateHasVertexFlag(){this.setFlag(1,this._segments.length>0)}updateReferencePathDirectionsAfterGripMove(t){const e=r=>{const s=this._segments[r];if(!s)return;const o=r===0?this._startPosition:this._segments[r-1].position,a=new A().subVectors(s.position,o);a.lengthSq()>0&&s.direction.copy(a.normalize())};if(t===0){this._segments.length>0&&e(0);return}const i=t-1;i<0||i>=this._segments.length||(e(i),i+1<this._segments.length&&e(i+1))}createSegment(t){var e;return{position:new x().copy(t.position),direction:new A().copy(t.direction),miterDirection:new A().copy(t.miterDirection),elements:((e=t.elements)==null?void 0:e.map(i=>this.createElement(i)))??[]}}createElement(t){const e=t.parameters?[...t.parameters]:[],i=t.fillParameters?[...t.fillParameters]:[];return{parameterCount:t.parameterCount??e.length,parameters:e,fillCount:t.fillCount??i.length,fillParameters:i}}cloneSegment(t){return{position:t.position.clone(),direction:t.direction.clone(),miterDirection:t.miterDirection.clone(),elements:t.elements.map(e=>({parameterCount:e.parameterCount,parameters:[...e.parameters],fillCount:e.fillCount,fillParameters:[...e.fillParameters]}))}}collectGeometryPoints(){const t=[this._startPosition];if(this._segments.length===0)return t;const e=this.getMLineStyle(),i=this.getRenderableElementCount(e);if(i<=0)return this._segments.forEach(r=>t.push(r.position)),t;for(let r=0;r<i;r++)t.push(...this.getElementPath(r,e));return t}getRenderableElementCount(t){const e=(t==null?void 0:t.elementCount)??0;return Math.max(this._styleCount,e,...this._segments.map(i=>i.elements.length),0)}getReferencePath(){const t=[this._startPosition.clone(),...this._segments.map(e=>e.position.clone())];return this.closePathIfNeeded(t)}getElementPath(t,e){const i=[],r=this._segments[0];return i.push(this.getElementBoundaryPoint("start",r,t,e)),this._segments.forEach(s=>{i.push(this.offsetPoint(s.position,s.miterDirection,this.getElementMiterOffset(s,t,e)))}),i[i.length-1]=this.getElementBoundaryPoint("end",this._segments[this._segments.length-1],t,e),this.closePathIfNeeded(i)}getElementMiterOffset(t,e,i){var s;const r=t.elements[e];return(s=r==null?void 0:r.parameters)!=null&&s.length?r.parameters[0]:this.getStyleElementOffset(e,i)}getElementBoundaryPoint(t,e,i,r){const s=this.getElementMiterOffset(e,i,r),o=t==="start"?this._startPosition:e.position,a=this.offsetPoint(o,e.miterDirection,s);if(!this.shouldApplyCapCutAtSide(t,r))return a;const c=t==="start"?r==null?void 0:r.startAngle:r==null?void 0:r.endAngle,l=this.computeCapCutDistance(s,c,t);if(l===0)return a;const h=t==="start"?this.getStartSegmentDirection():this.getEndSegmentDirection();return h.lengthSq()===0?a:a.add(h.multiplyScalar(l))}shouldApplyCapCutAtSide(t,e){return!e||this.closed?!1:t==="start"?this.suppressStartCaps?!1:(e.flags&112)!==0:this.suppressEndCaps?!1:(e.flags&1792)!==0}computeCapCutDistance(t,e,i){const r=this.normalizeCapAngle(e),s=Math.tan(r);if(Math.abs(s)<1e-6)return 0;const o=t/s;return o}normalizeCapAngle(t){if(t==null||!Number.isFinite(t))return Math.PI/2;let e=t%180;return e<0&&(e+=180),(e<1||e>179)&&(e=90),e*Math.PI/180}getStartSegmentDirection(){const t=this._segments[0],e=new A;return t&&(e.subVectors(t.position,this._startPosition),e.lengthSq()===0&&e.copy(t.direction)),e.lengthSq()>0&&e.normalize(),e}getEndSegmentDirection(){const t=this._segments[this._segments.length-1];if(!t)return new A;const e=new A,i=this._segments.length>1?this._segments[this._segments.length-2].position:this._startPosition;return e.subVectors(t.position,i),e.lengthSq()===0&&e.copy(t.direction),e.lengthSq()>0&&e.normalize(),e}createFillArea(t,e){if(!t||(t.flags&1)===0||e<2)return;const i=this.getFillBoundaryElementIndices(e,t);if(!i)return;const r=this.getElementPath(i.outerIndex,t),s=this.getElementPath(i.innerIndex,t),o=this.stripClosingPoint(r),a=this.stripClosingPoint(s);if(o.length<2||a.length<2)return;const c=new he;if(this.closed){if(o.length<3||a.length<3)return;c.add(new rt(o.map(l=>({x:l.x,y:l.y})),!0)),c.add(new rt(a.map(l=>({x:l.x,y:l.y})),!0))}else{const l=[...o,...a.slice().reverse()].map(h=>({x:h.x,y:h.y}));if(l.length<3)return;c.add(new rt(l,!0))}return c}getFillBoundaryElementIndices(t,e){let i=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=-1,o=-1;for(let a=0;a<t;a++){const c=this.getElementReferenceOffset(a,e);c<i&&(i=c,s=a),c>r&&(r=c,o=a)}if(!(s<0||o<0||s===o))return{outerIndex:o,innerIndex:s}}getElementReferenceOffset(t,e){var r;const i=this._segments[0];if(i){const s=i.elements[t];if((r=s==null?void 0:s.parameters)!=null&&r.length)return s.parameters[0]}return this.getStyleElementOffset(t,e)}getStyleElementOffset(t,e){const i=e==null?void 0:e.elements[t];if(!i)return 0;const r=this.getStyleJustificationShift(e);return(i.offset+r)*this._scale}getStyleJustificationShift(t){const e=(t==null?void 0:t.elements)??[];if(e.length<=0)return 0;let i=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(const s of e){const o=s.offset;o<i&&(i=o),o>r&&(r=o)}return this._justification===0?-r:this._justification===2?-i:0}stripClosingPoint(t){if(t.length<2)return t;const e=t[0],i=t[t.length-1],r=1e-9;return Math.abs(e.x-i.x)<=r&&Math.abs(e.y-i.y)<=r&&Math.abs(e.z-i.z)<=r?t.slice(0,-1):t}offsetPoint(t,e,i){if(i===0||e.lengthSq()===0)return t.clone();const r=e.clone().normalize().multiplyScalar(i);return t.clone().add(r)}closePathIfNeeded(t){if(!this.closed||t.length<2)return t;const e=t[0],i=t[t.length-1],r=1e-9;return Math.abs(e.x-i.x)<=r&&Math.abs(e.y-i.y)<=r&&Math.abs(e.z-i.z)<=r||t.push(e.clone()),t}appendStyleDrivenJointAndCapEntities(t,e,i,r,s,o){!i||r<2||(e.push(...this.drawMiterJointEntities(t,i,r,s,o)),e.push(...this.drawCapEntities(t,i,r,s,o)))}drawMiterJointEntities(t,e,i,r,s){if(this.closed||this._segments.length<2||(e.flags&2)===0)return[];const o=[],a=t.subEntityTraits;for(let c=0;c<this._segments.length-1;c++){const l=this._segments[c],h=Array.from({length:i},(u,d)=>{const g=this.getElementMiterOffset(l,d,e);return{elementIndex:d,offset:g,point:this.offsetPoint(l.position,l.miterDirection,g)}}).sort((u,d)=>d.offset-u.offset);for(let u=0;u<h.length-1;u++)this.applyElementDrawTraits(a,r,s,e,h[u].elementIndex),o.push(t.lines([h[u].point,h[u+1].point]))}return o}drawCapEntities(t,e,i,r,s){if(this.closed||this._segments.length<=0)return[];const o=[];return o.push(...this.drawCapEntitiesForSide(t,"start",e,i,r,s)),o.push(...this.drawCapEntitiesForSide(t,"end",e,i,r,s)),o}drawCapEntitiesForSide(t,e,i,r,s,o){if(e==="start"&&this.suppressStartCaps)return[];if(e==="end"&&this.suppressEndCaps)return[];const a=i.flags,c=e==="start",l=c?(a&16)!==0:(a&256)!==0,h=c?(a&64)!==0:(a&1024)!==0,u=c?(a&32)!==0:(a&512)!==0;if(!l&&!h&&!u)return[];const d=this.getCapElementPoints(e,r,i);if(d.length<2)return[];const g=[],f=t.subEntityTraits;if(l)for(let m=0;m<d.length-1;m++)this.applyElementDrawTraits(f,s,o,i,d[m].elementIndex),g.push(t.lines([d[m].point,d[m+1].point]));const p=c?this.getStartSegmentDirection().multiplyScalar(-1):this.getEndSegmentDirection().clone();if(h){const m=this.drawCapArcBetweenElements(t,e,d[0],d[d.length-1],p,f,s,o,i);m&&g.push(m)}if(u)for(let m=1;m<Math.floor(d.length/2);m++){const y=d[m],b=d[d.length-1-m];if(!y||!b||y===b)continue;const _=this.drawCapArcBetweenElements(t,e,y,b,p,f,s,o,i);_&&g.push(_)}return g}getCapElementPoints(t,e,i){const r=t==="start"?this._segments[0]:this._segments[this._segments.length-1];return r?Array.from({length:e},(s,o)=>({elementIndex:o,offset:this.getElementMiterOffset(r,o,i),point:this.getElementBoundaryPoint(t,r,o,i)})).sort((s,o)=>o.offset-s.offset):[]}drawCapArcBetweenElements(t,e,i,r,s,o,a,c,l){const h=e==="end"?r.point:i.point,u=e==="end"?i.point:r.point,d=h.distanceTo(u);if(d<=1e-9||s.lengthSq()===0)return;const f=h.clone().add(new A().subVectors(u,h).multiplyScalar(.5)).add(s.clone().normalize().multiplyScalar(d/2)),p=pt.createByThreePoints(h,u,f);if(p)return this.applyElementDrawTraits(o,a,c,l,e==="end"?r.elementIndex:i.elementIndex),t.circularArc(p)}applyElementDrawTraits(t,e,i,r,s){t.color=e,t.lineType=i,this.applyStyleElementTraits(r,s,t)}transformVector(t,e){const i=new x,r=new x(t.x,t.y,t.z);i.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-i.x,r.y-i.y,r.z-i.z)}getMLineStyle(){var s;const t=this.database.objects.mlineStyle,e=this.styleObjectHandle?t.getIdAt(this.styleObjectHandle):void 0;if(e)return e;const i=this.styleName?t.getAt(this.styleName):void 0;if(i)return i;const r=(s=this.styleName)==null?void 0:s.toUpperCase();if(r)for(const[o,a]of t.entries()){const c=(a.styleName||o).toUpperCase();if(o.toUpperCase()===r||c===r)return a}}applyStyleElementTraits(t,e,i){const r=t==null?void 0:t.elements[e];if(!r)return;const s=this.resolveStyleElementLineType(r.lineType);s&&(i.lineType=s),!(r.color.isByBlock||r.color.isByLayer)&&(i.color=r.color.clone())}applyFillTraits(t,e){const i=t==null?void 0:t.fillColor;!i||i.isByBlock||i.isByLayer||(e.color=i.clone())}resolveStyleElementLineType(t){var l;const e=t==null?void 0:t.trim();if(!e)return;const i=e.toUpperCase(),r=wt.toUpperCase(),s=ve.toUpperCase();let o="UserSpecified",a=e;if(i===r){o="ByLayer";const h=(l=this.database.tables.layerTable.getAt(this.layer))==null?void 0:l.linetype;a=h&&h.toUpperCase()!==r&&h.toUpperCase()!==s?h:rn}else i===s&&(o="ByBlock",a=rn);const c=this.database.tables.linetypeTable.getAt(a);return c?{type:o,...c.linetype}:{type:o,name:a,standardFlag:0,description:"",totalPatternLength:0}}resolveEffectiveProperties(){super.resolveEffectiveProperties(),this._styleName||(this._styleName=this.getDefaultStyleName())}getDefaultStyleName(){try{return this.database.cmlstyle||De}catch{return De}}};yl.typeName="MLine";let bs=yl;function Jf(n,t){if(t.length<3)return;const e=n.subEntityTraits,i=e.fillType,r=e.transparency;e.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},e.transparency=new xt(0);const s=new he;s.add(new rt(t,!0));const o=n.area(s);e.fillType=i,e.transparency=r;const a=n.lines(t);return o?a?n.group([o,a]):o:a}const Kh=[208,207,17,224,161,177,26,225],Xa=128,Ya=8,na=3*Ya,Er=2;function tp(n){if(!n||n.length<Xa)return;for(let l=0;l<Kh.length;l++)if(n[Xa+l]!==Kh[l])return;const t=new DataView(n.buffer,n.byteOffset,n.byteLength),e=l=>{const h=t.getFloat64(l,!0),u=t.getFloat64(l+Ya,!0),d=t.getFloat64(l+2*Ya,!0);if([h,u,d].every(Number.isFinite))return{x:h,y:u,z:d}},i=e(Er),r=e(Er+na),s=e(Er+2*na),o=e(Er+3*na);if(!i||!r||!s||!o)return;const a=Math.abs(s.x-i.x),c=Math.abs(i.y-s.y);if(!(a<=0||c<=0))return{upperLeft:i,upperRight:r,lowerRight:s,lowerLeft:o}}const Zi="image/wmf",Wn="image/emf",ep=2596720087;function Zc(n){return n===Zi||n===Wn}function Se(n){if(n.length<18)return!1;const t=new DataView(n.buffer,n.byteOffset,n.byteLength);return n.length>=40&&t.getUint32(0,!0)===ep?Zh(n.subarray(22)):Zh(n)}function _s(n){return ip(n)>=0}const Rx=1574,Nx=15,Bx=1128680791;function np(n){if(!Se(n))return;const t=new DataView(n.buffer,n.byteOffset,n.byteLength);let e=0;if(t.getUint32(0,!0)===ep&&(e=22),e+18>n.length)return;const i=t.getUint16(e+2,!0);if(i<9)return;e+=i*2;const r=[];let s=0;for(;e+6<=n.length;){const c=t.getUint32(e,!0),l=c*2,h=t.getUint16(e+4,!0);if(c<3||l<6||e+l>n.length)break;if(h===Rx&&e+44<=e+l&&t.getUint16(e+6,!0)===Nx){const d=t.getUint32(e+10,!0),g=t.getUint32(e+32,!0),f=t.getUint32(e+40,!0),p=g>0&&g===f||g>0?g:f,m=e+44;d===Bx&&p>0&&m+p<=e+l&&(r.push(n.subarray(m,m+p)),s+=p)}if(h===0)break;e+=l}if(r.length===0||s<88)return;const o=new Uint8Array(s);let a=0;for(const c of r)o.set(c,a),a+=c.length;if(To(o,0))return o}function ip(n){const t=Math.min(n.length-44,4096);for(let e=0;e<=t;e++)if(To(n,e))return e;return-1}function To(n,t){if(t+88>n.length)return!1;const e=new DataView(n.buffer,n.byteOffset+t,n.length-t);if(e.getUint32(0,!0)!==1)return!1;const i=e.getUint32(4,!0);if(i<88||t+i>n.length||n[t+40]!==32||n[t+41]!==69||n[t+42]!==77||n[t+43]!==70)return!1;const r=e.getUint32(48,!0),s=e.getUint32(52,!0);return!(r<i||t+r>n.length||s<2||s>1e7)}function Zh(n){if(n.length<18)return!1;const t=new DataView(n.buffer,n.byteOffset,n.byteLength),e=t.getUint16(0,!0),i=t.getUint16(2,!0),r=t.getUint16(4,!0),s=t.getUint32(6,!0);return!(e!==1&&e!==2||i<9||i>100||r!==256&&r!==768||(s<i||s*2>n.length+16)&&s<i)}const za=[208,207,17,224,161,177,26,225],Dx=2,Va=3,Fx=8,Qh=14,ia=128,Xx=64*1024*1024;function rp(n){if(!(n!=null&&n.length))return;const t=Yx(n);return t||Ua(n)}function Yx(n){const t=Qi(n,za);if(t<0)return;const e=n.subarray(t);let i;try{i=Kx(e)}catch{return}for(const s of i.entries()){if(s.type!=="stream"||!Jh(s.name))continue;const o=i.readStream(s.name);if(!(o!=null&&o.length))continue;const a=tu(o,{allowMetafile:!1});if(a)return a}const r=["CONTENTS","Ole10Native","Ole10Native","Package"];for(const s of r){const o=i.readStream(s);if(!(o!=null&&o.length))continue;const a=xs(o);if(a)return a}for(const s of i.entries()){if(s.type!=="stream"||!Jh(s.name))continue;const o=i.readStream(s.name);if(!(o!=null&&o.length))continue;const a=tu(o,{allowMetafile:!0});if(a)return a;const c=Ua(o);if(c)return c}for(const s of i.entries()){if(s.type!=="stream")continue;const o=i.readStream(s.name);if(!(o!=null&&o.length))continue;const a=Ua(o);if(a)return a}}function Jh(n){return/olepres/i.test(n)||n.includes("OlePres")}function tu(n,t={}){if(n.length<28)return;const e=t.allowMetafile!==!1,i=new DataView(n.buffer,n.byteOffset,n.byteLength);let r=0;const s=i.getUint32(r,!0);r+=4;let o=0;if(s===4294967295)o=i.getUint32(r,!0),r+=4;else if(s===4294967294){if(r+4>n.length)return;const h=i.getUint32(r,!0);r+=4+h}else if(s>0&&s<65535)r+=s;else return;if(r+4>n.length)return;const a=i.getUint32(r,!0);if(r+=4,a>4&&(r+=a-4),r+=24,r+4>n.length)return;const c=i.getUint32(r,!0);if(r+=4,c<=0||r+c>n.length)return;const l=n.subarray(r,r+c);return zx(l,o,{allowMetafile:e})}function zx(n,t,e={}){const i=e.allowMetafile!==!1;if(!((t===Qh||t===Va)&&!i)){if(t===Fx){const s=op(n);if(s)return s}if(t===Dx){const s=xs(n);if(s)return s}if(i&&(t===Qh||t===Va)){const s=ja(n,t);if(s)return s}if(i){const s=ja(n);if(s)return s}return xs(n)}}function ja(n,t){let e=n;if(t===Va&&n.length>30){const r=n.subarray(12);Se(r)&&(e=r)}if(Se(e)){const r=np(e);if(r)return new Blob([xi(r)],{type:Wn})}const i=ip(n);if(i>=0&&To(n,i)){const r=Vx(n,i);if(r)return new Blob([xi(r)],{type:Wn});const o=new DataView(n.buffer,n.byteOffset+i,n.length-i).getUint32(48,!0);if(o>88&&i+o<=n.length)return new Blob([xi(n.subarray(i,i+o))],{type:Wn})}if(Se(e)){const r=jx(e);return r?new Blob([xi(r)],{type:Zi}):new Blob([xi(e)],{type:Zi})}}function xi(n){const t=new Uint8Array(n.length);return t.set(n),t}function Vx(n,t){if(!To(n,t))return;const e=new DataView(n.buffer,n.byteOffset+t,n.length-t),i=e.getUint32(48,!0),r=e.getUint32(52,!0);let s=0;for(let o=0;o<r;o++){if(s+8>i)return;const a=e.getUint32(s,!0),c=e.getUint32(s+4,!0);if(c<8||s+c>i)return;if(s+=c,a===14)return n.subarray(t,t+s)}}function jx(n){let t=0;const e=new DataView(n.buffer,n.byteOffset,n.byteLength);if(n.length>=40&&e.getUint32(0,!0)===2596720087&&(t=22),!Se(n.subarray(t)))return;const i=new DataView(n.buffer,n.byteOffset+t,n.length-t),r=i.getUint16(2,!0),s=i.getUint32(6,!0),o=t+s*2;if(o>n.length)return;let a=t+r*2;const c=o;let l=0;for(;a+6<=c&&l<5e5;){const h=e.getUint32(a,!0),u=e.getUint16(a+4,!0);if(h<3||a+h*2>c)return;if(a+=h*2,l++,u===0)return n.subarray(0,a)}}function Ua(n){const t=xs(n);if(t)return t;if(_s(n)||Se(n))return ja(n)}function xs(n){const t=Ux(n);if(t)return t;const e=Gx(n);if(e)return e;const i=Hx(n);if(i)return i;const r=Wx(n);if(r)return r;const s=$x(n);if(s)return s}function Ux(n){for(let t=0;t<n.length-14;t++){if(n[t]!==66||n[t+1]!==77)continue;const e=new DataView(n.buffer,n.byteOffset+t,n.length-t),i=e.getUint32(2,!0);if(i<14||i>n.length-t)continue;const r=e.getUint32(10,!0);if(!(r<14||r>=i))return new Blob([n.subarray(t,t+i)],{type:"image/bmp"})}}function Gx(n){const e=Qi(n,[137,80,78,71,13,10,26,10]);if(!(e<0)){for(let i=e+8;i+12<=n.length;i++)if(n[i+4]===73&&n[i+5]===69&&n[i+6]===78&&n[i+7]===68){const r=i+12;return new Blob([n.subarray(e,r)],{type:"image/png"})}return new Blob([n.subarray(e)],{type:"image/png"})}}function Hx(n){const t=Qi(n,[255,216,255]);if(!(t<0)){for(let e=t+3;e+1<n.length;e++)if(n[e]===255&&n[e+1]===217)return new Blob([n.subarray(t,e+2)],{type:"image/jpeg"})}}function Wx(n){const t=Qi(n,[71,73,70,56,55,97]),e=Qi(n,[71,73,70,56,57,97]),i=t>=0?t:e;if(!(i<0)){for(let r=i+6;r<n.length;r++)if(n[r]===59)return new Blob([n.subarray(i,r+1)],{type:"image/gif"});return new Blob([n.subarray(i)],{type:"image/gif"})}}function $x(n){for(let t=0;t+40<=n.length;t++){const e=new DataView(n.buffer,n.byteOffset+t,n.length-t),i=e.getUint32(0,!0);if(i!==40)continue;const r=e.getInt32(4,!0),s=e.getInt32(8,!0),o=e.getUint16(12,!0),a=e.getUint16(14,!0),c=e.getUint32(16,!0),l=e.getUint32(20,!0),h=e.getUint32(32,!0);if(r<=0||r>65536||s===0||Math.abs(s)>65536||o!==1||![1,4,8,16,24,32].includes(a)||c!==0&&c!==3)continue;const u=sp(i,a,c,h),d=Math.abs(s),g=r*a+31>>5<<2,f=l>0?l:g*d,p=u+f;if(!(p<=40||t+p>n.length))return op(n.subarray(t,t+p))}}function sp(n,t,e,i){let r=0;return t>8&&e===3&&(r+=12),i>0?r+=i*4:t<=8&&(r+=(1<<t)*4),n+r}function op(n){if(n.length<40)return;const e=new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,!0);if(e!==40&&e!==12)return;const i=14+n.length,r=new Uint8Array(14),s=new DataView(r.buffer);r[0]=66,r[1]=77,s.setUint32(2,i,!0),s.setUint32(10,14+qx(n),!0);const o=new Uint8Array(i);return o.set(r,0),o.set(n,14),new Blob([o],{type:"image/bmp"})}function qx(n){const t=new DataView(n.buffer,n.byteOffset,n.byteLength),e=t.getUint32(0,!0);if(e===12){const o=t.getUint16(10,!0),a=o<=8?1<<o:0;return e+a*3}const i=t.getUint16(14,!0),r=t.getUint32(16,!0),s=t.getUint32(32,!0);return sp(e,i,r,s)}function Qi(n,t){t:for(let e=0;e<=n.length-t.length;e++){for(let i=0;i<t.length;i++)if(n[e+i]!==t[i])continue t;return e}return-1}function Kx(n){if(n.length<512)throw new Error("CFB too small");for(let P=0;P<za.length;P++)if(n[P]!==za[P])throw new Error("Not a CFB document");const t=new DataView(n.buffer,n.byteOffset,n.byteLength),i=1<<t.getUint16(30,!0);if(i!==512&&i!==4096)throw new Error("Unsupported CFB sector size");const r=t.getUint32(44,!0),s=t.getUint32(48,!0),o=t.getUint32(56,!0),a=t.getUint32(60,!0),c=t.getUint32(64,!0),l=t.getUint32(68,!0),h=t.getUint32(72,!0),u=[];for(let P=0;P<109;P++){const v=t.getUint32(76+P*4,!0);v<=4294967290&&u.push(v)}let d=l;for(let P=0;P<h&&d<=4294967290;P++){const v=(d+1)*i;if(v+i>n.length)break;const k=i/4-1;for(let L=0;L<k;L++){const O=t.getUint32(v+L*4,!0);O<=4294967290&&u.push(O)}d=t.getUint32(v+k*4,!0)}const g=[];for(let P=0;P<Math.min(r,u.length);P++){const k=(u[P]+1)*i;if(k+i>n.length)break;const L=i/4;for(let O=0;O<L;O++)g.push(t.getUint32(k+O*4,!0))}const f=Tr(g,s,4096),p=Lr(n,f,i),m=[],y=Math.floor(p.length/ia);for(let P=0;P<y;P++){const v=P*ia,k=new DataView(p.buffer,p.byteOffset+v,ia),L=k.getUint16(64,!0);if(L<2||L>64)continue;const O=Math.floor((L-2)/2);let R="";for(let W=0;W<O;W++)R+=String.fromCharCode(k.getUint16(W*2,!0));const N=k.getUint8(66),it=k.getUint32(116,!0),$=k.getUint32(120,!0),U=k.getUint32(124,!0),J=U===0?$:$+U*4294967296;let E="unknown";N===5?E="root":N===1?E="storage":N===2&&(E="stream"),m.push({name:R,type:E,size:J,startSector:it})}const b=m.find(P=>P.type==="root"),_=[];if(c>0&&a<=4294967290){const P=Tr(g,a,c),v=Lr(n,P,i),k=new DataView(v.buffer,v.byteOffset,v.byteLength);for(let L=0;L+4<=v.length;L+=4)_.push(k.getUint32(L,!0))}let w;if(b&&b.size>0){const P=Tr(g,b.startSector,65536);w=Lr(n,P,i).subarray(0,b.size)}return{entries:()=>m,readStream:P=>{const v=m.find(L=>L.type==="stream"&&(L.name===P||L.name.toLowerCase()===P.toLowerCase()));if(!v||v.size<=0||v.size>Xx)return;if(v.size<o&&w&&_.length>0){const O=ap(_,v.startSector,65536),R=new Uint8Array(v.size);let N=0;for(const it of O){if(N>=v.size)break;const $=it*64,U=Math.min($+64,w.length);if($>=w.length)break;const J=w.subarray($,U);R.set(J.subarray(0,Math.min(J.length,v.size-N)),N),N+=J.length}return R.subarray(0,Math.min(N,v.size))}const k=Tr(g,v.startSector,65536);return Lr(n,k,i).subarray(0,v.size)}}}function Tr(n,t,e){return ap(n,t,e)}function ap(n,t,e){const i=[];let r=t;const s=new Set;for(;r<=4294967290&&i.length<e&&!(s.has(r)||(s.add(r),i.push(r),r>=n.length));)r=n[r];return i}function Lr(n,t,e){const i=new Uint8Array(t.length*e);let r=0;for(const s of t){const o=(s+1)*e,a=Math.min(o+e,n.length);if(o>=n.length)break;i.set(n.subarray(o,a),r),r+=e}return i}const bl=class bl extends nt{};bl.typeName="Frame";let ws=bl;const _l=class _l extends ws{constructor(){super(),this._oleVersion=0}get dxfTypeName(){return"OLEFRAME"}get oleVersion(){return this._oleVersion}set oleVersion(t){this._oleVersion=t}getOleObject(){return this._oleObject?new Uint8Array(this._oleObject):void 0}setOleObject(t){t==null?this._oleObject=void 0:this._oleObject=t instanceof ArrayBuffer?new Uint8Array(t.slice(0)):new Uint8Array(t),this.onOleObjectChanged()}loadOleObjectFromDxf(t,e){e!=null&&e.length?t!=null&&t>0&&t<e.length?this._oleObject=e.subarray(0,t):this._oleObject=new Uint8Array(e):this._oleObject=void 0,this.onOleObjectChanged()}get oleObjectData(){return this._oleObject}onOleObjectChanged(){}getOleProperties(){return{groupName:"ole",properties:[{name:"oleVersion",type:"int",editable:!0,accessor:{get:()=>this.oleVersion,set:t=>{this.oleVersion=t}}}]}}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),this.getOleProperties()]}}get geometricExtents(){return new j}subWorldDraw(t){}dxfOutFields(t){var e;if(super.dxfOutFields(t),t.writeSubclassMarker("AcDbOleFrame"),t.writeInt16(70,this._oleVersion),(e=this._oleObject)!=null&&e.length){t.writeInt32(90,this._oleObject.length);let i=0;for(;i<this._oleObject.length;){const r=this._oleObject.subarray(i,i+127);t.writeString(310,bo(r)),i+=127}}return t.writeString(1,"OLE"),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbOleFrame");const e=[];let i;const r=()=>{e.length>0&&this.loadOleObjectFromDxf(i,ar(e))};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;const o=Number(s.code),a=Number(s.value);switch(o){case 1:break;case 70:this.oleVersion=a;break;case 90:i=a;break;case 310:s.value instanceof Uint8Array?e.push(s.value):e.push(String(s.value));break}}return r(),this}};_l.typeName="OleFrame";let Ji=_l;var Ri=(n=>(n[n.Link=1]="Link",n[n.Embedded=2]="Embedded",n[n.Static=3]="Static",n))(Ri||{}),vs=(n=>(n[n.ModelSpace=0]="ModelSpace",n[n.PaperSpace=1]="PaperSpace",n))(vs||{});const xl=class xl extends Ji{constructor(){super(),this._upperLeft=new x,this._lowerRight=new x,this._rotation=0,this._scaleWidth=1,this._scaleHeight=1,this._lockAspect=!1,this._outputQuality=0,this._autoOutputQuality=0,this._oleObjectType=2,this._tileMode=0,this._userType="",this._linkName="",this._linkPath="",this._oleClientItem=null,this._imageResolved=!1}get dxfTypeName(){return"OLE2FRAME"}get upperLeftCorner(){return this._upperLeft}set upperLeftCorner(t){this._upperLeft.copy(t)}get lowerRightCorner(){return this._lowerRight}set lowerRightCorner(t){this._lowerRight.copy(t)}getLocation(t){return t?t.copy(this._upperLeft):this._upperLeft.clone()}setLocation(t){const e=t.x-this._upperLeft.x,i=t.y-this._upperLeft.y,r=(t.z??0)-this._upperLeft.z;this._upperLeft.copy(t),this._lowerRight.x+=e,this._lowerRight.y+=i,this._lowerRight.z+=r}position(){return{upperLeft:this._upperLeft.clone(),upperRight:this.cornerUpperRight(),lowerLeft:this.cornerLowerLeft(),lowerRight:this._lowerRight.clone()}}setPosition(t){this._upperLeft.copy(t.upperLeft),this._lowerRight.copy(t.lowerRight)}wcsWidth(){return Math.abs(this._lowerRight.x-this._upperLeft.x)}setWcsWidth(t){const e=this._lowerRight.x>=this._upperLeft.x?1:-1;this._lowerRight.x=this._upperLeft.x+e*Math.abs(t),this._lockAspect&&this.syncHeightFromAspect()}wcsHeight(){return Math.abs(this._upperLeft.y-this._lowerRight.y)}setWcsHeight(t){const e=this._upperLeft.y>=this._lowerRight.y?1:-1;this._lowerRight.y=this._upperLeft.y-e*Math.abs(t),this._lockAspect&&this.syncWidthFromAspect()}scaleWidth(){return this._scaleWidth}setScaleWidth(t){this._scaleWidth=t}scaleHeight(){return this._scaleHeight}setScaleHeight(t){this._scaleHeight=t}rotation(){return this._rotation}setRotation(t){this._rotation=t}lockAspect(){return this._lockAspect}setLockAspect(t){this._lockAspect=!!t}outputQuality(){return this._outputQuality}setOutputQuality(t){this._outputQuality=t&255}autoOutputQuality(){return this._autoOutputQuality}setAutoOutputQuality(t){this._autoOutputQuality=t&255}getType(){return this._oleObjectType}setType(t){this._oleObjectType=t}get oleObjectType(){return this._oleObjectType}set oleObjectType(t){this._oleObjectType=t}get tileMode(){return this._tileMode}set tileMode(t){this._tileMode=t}getUserType(){return this._userType}setUserType(t){this._userType=t}get userType(){return this._userType}set userType(t){this._userType=t}getLinkName(){return this._linkName}setLinkName(t){this._linkName=t}getLinkPath(){return this._linkPath}setLinkPath(t){this._linkPath=t}getOleClientItem(){return this._oleClientItem}setOleClientItem(t){this._oleClientItem=t??null}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.upperLeftCorner.x,set:t=>{this.setLocation({x:t,y:this.upperLeftCorner.y,z:this.upperLeftCorner.z})}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.upperLeftCorner.y,set:t=>{this.setLocation({x:this.upperLeftCorner.x,y:t,z:this.upperLeftCorner.z})}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.upperLeftCorner.z,set:t=>{this.setLocation({x:this.upperLeftCorner.x,y:this.upperLeftCorner.y,z:t})}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation(),set:t=>{this.setRotation(t)}}},{name:"width",type:"float",editable:!0,accessor:{get:()=>this.wcsWidth(),set:t=>{this.setWcsWidth(t)}}},{name:"height",type:"float",editable:!0,accessor:{get:()=>this.wcsHeight(),set:t=>{this.setWcsHeight(t)}}},{name:"scaleWidth",type:"float",editable:!0,accessor:{get:()=>this.scaleWidth(),set:t=>{this.setScaleWidth(t)}}},{name:"scaleHeight",type:"float",editable:!0,accessor:{get:()=>this.scaleHeight(),set:t=>{this.setScaleHeight(t)}}},{name:"lockAspect",type:"boolean",editable:!0,accessor:{get:()=>this.lockAspect(),set:t=>{this.setLockAspect(t)}}}]},{groupName:"ole",properties:[...this.getOleProperties().properties,{name:"userType",type:"string",editable:!0,accessor:{get:()=>this.userType,set:t=>{this.userType=t}}},{name:"oleObjectType",type:"enum",editable:!0,options:[{label:Ri[1],value:1},{label:Ri[2],value:2},{label:Ri[3],value:3}],accessor:{get:()=>this.oleObjectType,set:t=>{this.oleObjectType=t}}},{name:"tileMode",type:"enum",editable:!0,options:[{label:vs[0],value:0},{label:vs[1],value:1}],accessor:{get:()=>this.tileMode,set:t=>{this.tileMode=t}}},{name:"linkName",type:"string",editable:!0,accessor:{get:()=>this.getLinkName(),set:t=>{this.setLinkName(t)}}},{name:"linkPath",type:"string",editable:!0,accessor:{get:()=>this.getLinkPath(),set:t=>{this.setLinkPath(t)}}},{name:"outputQuality",type:"int",editable:!0,accessor:{get:()=>this.outputQuality(),set:t=>{this.setOutputQuality(t)}}},{name:"autoOutputQuality",type:"int",editable:!0,accessor:{get:()=>this.autoOutputQuality(),set:t=>{this.setAutoOutputQuality(t)}}}]}]}}get geometricExtents(){return new j().setFromPoints(this.boundaryPath())}subGetIntersectCurves(){return Wt(this.boundaryPath().slice(0,4),!0)}subGetGripPoints(){return this.boundaryPath().slice(0,4)}subMoveGripPointsAt(t,e){const i=this.boundaryPath().slice(0,4);return pi(t,e,i),Pt(t,r=>{r===0?this._upperLeft.copy(i[0]):r===2?this._lowerRight.copy(i[2]):r===1?(this._upperLeft.y=i[1].y,this._lowerRight.x=i[1].x,this._upperLeft.z=i[1].z,this._lowerRight.z=i[1].z):r===3&&(this._upperLeft.x=i[3].x,this._lowerRight.y=i[3].y,this._upperLeft.z=i[3].z,this._lowerRight.z=i[3].z)}),this}subGetOsnapPoints(t,e,i,r){if(t===I.Insertion){r.push(this._upperLeft.clone());return}const s=this.boundaryPath().slice(0,4);if(t===I.EndPoint){r.push(...s);return}_o(s,!0,t,e,r)}transformBy(t){const e=this._lowerRight.x-this._upperLeft.x,i=this._upperLeft.y-this._lowerRight.y,r=Math.cos(this._rotation),s=Math.sin(this._rotation),o=this._upperLeft.clone(),a=o.clone().add(new A(e*r,e*s,0)),c=o.clone().add(new A(i*s,-i*r,0));o.applyMatrix4(t),a.applyMatrix4(t),c.applyMatrix4(t);const l=new A().subVectors(a,o),h=new A().subVectors(c,o);return this._upperLeft.copy(o),this._rotation=Math.atan2(l.y,l.x),this._lowerRight.set(o.x+l.length(),o.y-h.length(),o.z),this}get image(){return this.resolveImage()}subWorldDraw(t){const e=this.resolveImage(),i=this.imageBoundaryPath();return e?t.image(e,{boundary:i,roation:this._rotation}):Jf(t,this.boundaryPath())}onOleObjectChanged(){this._image=void 0,this._imageResolved=!1,this.applyGeometryFromOleObjectData()}applyGeometryFromOleObjectData(){const t=tp(this.oleObjectData);t&&(this._upperLeft.copy(t.upperLeft),this._lowerRight.copy(t.lowerRight))}resolveImage(){return this._imageResolved?this._image:(this._imageResolved=!0,this._image=rp(this.oleObjectData),this._image)}imageBoundaryPath(){const t=this.boundaryPath(),e=[t[3],t[2],t[1],t[0]];return e.push(e[0].clone()),e}dxfOutFields(t){nt.prototype.dxfOutFields.call(this,t),t.writeSubclassMarker("AcDbOle2Frame"),t.writeInt16(70,this.oleVersion),this._userType&&t.writeString(3,this._userType),t.writePoint3d(10,this._upperLeft),t.writePoint3d(11,this._lowerRight),t.writeInt16(71,this._oleObjectType),t.writeInt16(72,this._tileMode),this._outputQuality&&t.writeInt16(73,this._outputQuality);const e=this.getOleObject();if(e!=null&&e.length){t.writeInt32(90,e.length);let i=0;for(;i<e.length;){const r=e.subarray(i,i+127);t.writeString(310,bo(r)),i+=127}}return t.writeString(1,"OLE"),this}dxfInFields(t){nt.prototype.dxfInFields.call(this,t),t.atSubclassData("AcDbOle2Frame");let e=this._upperLeft.x,i=this._upperLeft.y,r=this._upperLeft.z,s=this._lowerRight.x,o=this._lowerRight.y,a=this._lowerRight.z;const c=[];let l;const h=()=>{this.upperLeftCorner=new x(e,i,r),this.lowerRightCorner=new x(s,o,a),c.length>0&&this.loadOleObjectFromDxf(l,ar(c))};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const u=t.readItem();if(!u)break;const d=Number(u.code),g=Number(u.value);switch(d){case 1:break;case 3:this.userType=String(u.value);break;case 10:e=g;break;case 20:i=g;break;case 30:r=g;break;case 11:s=g;break;case 21:o=g;break;case 31:a=g;break;case 70:this.oleVersion=g;break;case 71:this.oleObjectType=g;break;case 72:this.tileMode=g;break;case 73:this.setOutputQuality(g);break;case 90:l=g;break;case 310:u.value instanceof Uint8Array?c.push(u.value):c.push(String(u.value));break}}return h(),this}cornerUpperRight(){return new x(this._lowerRight.x,this._upperLeft.y,this._upperLeft.z)}cornerLowerLeft(){return new x(this._upperLeft.x,this._lowerRight.y,this._lowerRight.z)}boundaryPath(){const t=[this._upperLeft.clone(),this.cornerUpperRight(),this._lowerRight.clone(),this.cornerLowerLeft()];if(this._rotation!==0){const e=this._upperLeft;for(let i=1;i<t.length;i++)t[i].sub(e).applyMatrix4(new F().makeRotationZ(this._rotation)),t[i].add(e)}return t.push(t[0].clone()),t}syncHeightFromAspect(){const t=this.wcsWidth();if(t===0||this._scaleWidth===0)return;const e=this._scaleHeight/this._scaleWidth,i=t*e,r=this._upperLeft.y>=this._lowerRight.y?1:-1;this._lowerRight.y=this._upperLeft.y-r*Math.abs(i)}syncWidthFromAspect(){const t=this.wcsHeight();if(t===0||this._scaleHeight===0)return;const e=this._scaleWidth/this._scaleHeight,i=t*e,r=this._lowerRight.x>=this._upperLeft.x?1:-1;this._lowerRight.x=this._upperLeft.x+r*Math.abs(i)}};xl.typeName="Ole2Frame";let As=xl;const wl=class wl extends nt{constructor(){super(),this._thickness=0,this._normal=new A(0,0,1),this._ecsRotation=0,this._geo=new x}get dxfTypeName(){return"POINT"}get position(){return this._geo}set position(t){this._geo.set(t.x,t.y,t.z||0)}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get ecsRotation(){return this._ecsRotation}set ecsRotation(t){this._ecsRotation=t}get geometricExtents(){return new j().expandByPoint(this._geo)}subGetGripPoints(){return[this._geo]}subMoveGripPointsAt(t,e){return Ee(t,e,this._geo),this}subGetOsnapPoints(t,e,i,r){t===I.Node&&r.push(this._geo)}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}transformBy(t){return this._geo.applyMatrix4(t),this}get directBatchPrimitive(){var e;return(((e=this.database)==null?void 0:e.pdmode)??0)===0?"point":null}subWorldDraw(t){return t.point(this._geo,{displayMode:this.database.pdmode,displaySize:this.database.pdsize})}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbPoint"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,this.position),this.ecsRotation!==0&&t.writeAngle(50,this.ecsRotation),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbPoint");let e=this.position.x,i=this.position.y,r=this.position.z,s=this.thickness,o=this.ecsRotation*180/Math.PI,a=this.normal.x,c=this.normal.y,l=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const u=t.readItem();if(!u)break;const d=Number(u.code),g=Number(u.value);switch(d){case 10:e=g;break;case 20:i=g;break;case 30:r=g;break;case 39:s=g;break;case 50:o=g;break;case 210:a=g;break;case 220:c=g;break;case 230:l=g;break}}const h=new A(a,c,l);return h.lengthSq()>0&&this.normal.copy(h.normalize()),this.thickness=s,this.ecsRotation=o*Math.PI/180,this.position=new x(e,i,r),this}};wl.typeName="Point";let Ps=wl;const vl=class vl extends nt{constructor(){super(...arguments),this._originalDxfName="",this._originalClassName="",this._applicationName="",this._proxyEntityClassId=498,this._applicationEntityClassId=0,this._objectDrawingFormat=0,this._originalDataFormat=0,this._entityOrigins=[],this._worldTransform=new F}get dxfTypeName(){return"ACAD_PROXY_ENTITY"}get originalDxfName(){return this._originalDxfName}set originalDxfName(t){this._originalDxfName=t}get originalClassName(){return this._originalClassName}set originalClassName(t){this._originalClassName=t}get applicationName(){return this._applicationName}set applicationName(t){this._applicationName=t}get proxyEntityClassId(){return this._proxyEntityClassId}set proxyEntityClassId(t){this._proxyEntityClassId=t}get applicationEntityClassId(){return this._applicationEntityClassId}set applicationEntityClassId(t){this._applicationEntityClassId=t}get objectDrawingFormat(){return this._objectDrawingFormat}set objectDrawingFormat(t){this._objectDrawingFormat=t}get graphicsMetafileType(){return this._objectDrawingFormat}set graphicsMetafileType(t){this._objectDrawingFormat=t}get originalDataFormat(){return this._originalDataFormat}set originalDataFormat(t){this._originalDataFormat=t}get proxyGraphic(){return this._proxyGraphic}setProxyGraphic(t){this._proxyGraphic=t?new Uint8Array(t):void 0}get entityOrigins(){return this._entityOrigins}setEntityOrigins(t){this._entityOrigins=t.map(e=>new x(e.x,e.y,e.z))}get geometricExtents(){const t=this._proxyGraphic;if(!(t!=null&&t.length))return new j;const i=new Ca(t,{database:this.database,defaultLayer:this.layer}).scanExtents();if(i){const r=new j().setFromPoints(i);return this._worldTransform.equals(new F)||r.applyMatrix4(this._worldTransform),r}return new j}subGetGripPoints(){if(this._entityOrigins.length>0)return[...this._entityOrigins];const t=this.geometricExtents;return t.isEmpty()?[]:[new x(t.min.x,t.min.y,t.min.z),new x(t.max.x,t.max.y,t.max.z)]}subMoveGripPointsAt(t,e){return this._entityOrigins.length>0?(pi(t,e,this._entityOrigins),this):this.geometricExtents.isEmpty()?this:(Pt(t,r=>{r===0&&this.transformBy(F.makeTranslation(e))}),this)}transformBy(t){return this._entityOrigins.forEach(e=>e.applyMatrix4(t)),this._worldTransform.premultiply(t),this}subWorldDraw(t){const e=this._proxyGraphic;if(!(e!=null&&e.length))return;const r=new Ca(e,{database:this.database,defaultLayer:this.layer}).worldDraw(t);return r&&!this._worldTransform.equals(new F)&&r.applyMatrix(this._worldTransform),r}dxfOutFields(t){var e;if(super.dxfOutFields(t),t.writeSubclassMarker("AcDbProxyEntity"),this._originalDxfName&&t.writeString(1,this._originalDxfName),this._originalClassName&&t.writeString(3,this._originalClassName),t.writeInt32(90,this._proxyEntityClassId||498),this._applicationEntityClassId&&t.writeInt32(91,this._applicationEntityClassId),this._objectDrawingFormat&&t.writeInt32(95,this._objectDrawingFormat),t.writeInt16(70,this._originalDataFormat),(e=this._proxyGraphic)!=null&&e.length){t.writeInt32(160,this._proxyGraphic.length);let i=0;for(;i<this._proxyGraphic.length;){const r=this._proxyGraphic.subarray(i,i+127);t.writeString(310,bo(r)),i+=127}}return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbProxyEntity");const e=[];let i;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code),o=Number(r.value);switch(s){case 1:this.originalDxfName=String(r.value);break;case 3:this.originalClassName=String(r.value);break;case 70:this.originalDataFormat=o;break;case 90:this.proxyEntityClassId=o;break;case 91:this.applicationEntityClassId=o;break;case 95:this.objectDrawingFormat=o;break;case 160:i=o;break;case 310:r.value instanceof Uint8Array?e.push(r.value):e.push(String(r.value));break}}return e.length>0&&this.loadProxyGraphicFromDxf(i,e),this}loadProxyGraphicFromDxf(t,e){const i=E_(t,e);i&&this.setProxyGraphic(i)}};vl.typeName="ProxyEntity";let Ss=vl;var cp=(n=>(n[n.Invalid=0]="Invalid",n[n.Rect=1]="Rect",n[n.Poly=2]="Poly",n))(cp||{}),lp=(n=>(n[n.Show=1]="Show",n[n.ShowUnAligned=2]="ShowUnAligned",n[n.Clip=4]="Clip",n[n.Transparent=8]="Transparent",n))(lp||{});const Al=class Al extends nt{constructor(){super(),this._classVersion=0,this._clipMode=0,this._brightness=50,this._contrast=50,this._fade=0,this._width=0,this._height=0,this._position=new x,this._scale=new ft(1,1),this._rotation=0,this._imageSize=new M,this._clipBoundaryType=1,this._clipBoundary=[],this._isClipped=!1,this._isShownClipped=!1,this._isImageShown=!0,this._isImageTransparent=!1,this._imageDefId=""}get dxfTypeName(){return"IMAGE"}get brightness(){return this._brightness}set brightness(t){this._brightness=t}get contrast(){return this._contrast}set contrast(t){this._contrast=t}get fade(){return this._fade}set fade(t){this._fade=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get position(){return this._position}set position(t){this._position=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get scale(){return this._scale}set scale(t){this._scale.copy(t)}get imageSize(){return this._imageSize}set imageSize(t){this._imageSize.copy(t)}get clipBoundaryType(){return this._clipBoundaryType}set clipBoundaryType(t){this._clipBoundaryType=t}get clipBoundary(){return this._clipBoundary}set clipBoundary(t){this._clipBoundary=[],this._clipBoundary.push(...t)}get isClipped(){return this._isClipped}set isClipped(t){this._isClipped=t}get isShownClipped(){return this._isShownClipped}set isShownClipped(t){this._isShownClipped=t}get isImageShown(){return this._isImageShown}set isImageShown(t){this._isImageShown=t}get isImageTransparent(){return this._isImageTransparent}set isImageTransparent(t){this._isImageTransparent=t}get classVersion(){return this._classVersion}set classVersion(t){this._classVersion=t}get clipMode(){return this._clipMode}set clipMode(t){this._clipMode=t}get image(){return this._image}set image(t){this._image=t}get imageDefId(){return this._imageDefId}set imageDefId(t){this._imageDefId=t}get imageFileName(){if(this._imageDefId){const t=this.database.objects.imageDefinition,e=t.getIdAt(this._imageDefId)??t.getAt(this._imageDefId);if(e)return e.sourceFileName}return""}get imageDisplayName(){const t=this.imageFileName.trim();if(!t)return"";const e=t.replace(/\\/g,"/").split("/");return e[e.length-1]||t}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"name",type:"string",editable:!1,accessor:{get:()=>this.imageFileName||this.imageDisplayName}},{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"width",type:"float",editable:!0,accessor:{get:()=>this.width,set:t=>{this.width=t}}},{name:"height",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}}]},{groupName:"image",properties:[{name:"brightness",type:"int",editable:!0,accessor:{get:()=>this.brightness,set:t=>{this.brightness=t}}},{name:"contrast",type:"int",editable:!0,accessor:{get:()=>this.contrast,set:t=>{this.contrast=t}}},{name:"fade",type:"int",editable:!0,accessor:{get:()=>this.fade,set:t=>{this.fade=t}}},{name:"isImageShown",type:"boolean",editable:!0,accessor:{get:()=>this.isImageShown,set:t=>{this.isImageShown=t}}},{name:"isImageTransparent",type:"boolean",editable:!0,accessor:{get:()=>this.isImageTransparent,set:t=>{this.isImageTransparent=t}}},{name:"isClipped",type:"boolean",editable:!0,accessor:{get:()=>this.isClipped,set:t=>{this.isClipped=t}}},{name:"isShownClipped",type:"boolean",editable:!0,accessor:{get:()=>this.isShownClipped,set:t=>{this.isShownClipped=t}}}]}]}}get geometricExtents(){const t=new j;return t.min.copy(this._position),t.max.set(this._position.x+this._width,this._position.y+this._height,0),t}subGetIntersectCurves(){return Wt(this.boundaryPath(),!0)}subGetGripPoints(){return this.boundaryPath()}subMoveGripPointsAt(t,e){return Pt(t,i=>{this.isClipped&&this._clipBoundary.length>3?this.moveClippedBoundaryGripAt(i,e):this.moveUnclippedGripAt(i,e)}),this}subGetOsnapPoints(t,e,i,r){if(t===I.Insertion){r.push(this._position);return}const s=this.boundaryPath();if(s.length===0)return;let o=s;if(s.length>1){const a=s[0],c=s[s.length-1];a.x===c.x&&a.y===c.y&&(a.z||0)===(c.z||0)&&(o=s.slice(0,-1))}if(t===I.EndPoint){r.push(...o);return}_o(o,!0,t,e,r)}subWorldDraw(t){const e=this.boundaryPath();if(this._image&&this.isImageShown)return t.image(this._image,{boundary:e,roation:this._rotation});const i=Jf(t,e),r=this.drawMissingImageLabel(t,e);return r?i?t.group([i,r]):r:i}drawMissingImageLabel(t,e){if(this._image||e.length<3)return;let i="";try{i=this.imageFileName.trim()}catch{return}if(!i)return;const r=this.boundaryCenter(e),{width:s,height:o,rotation:a}=this.boundaryLocalSize(e);if(s<=0||o<=0)return;const c=i.replace(/\\/g,"/"),l=this.fitLabelTextHeight(c,s,o);if(l<=0)return;const h=F1(i),u=Ve(c,l),d={text:h,height:l,width:Math.max(u,l),position:r,rotation:a,attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter};try{return t.mtext(d,this.resolveLabelTextStyle())}catch{return}}resolveLabelTextStyle(){const t=this.database.tables.textStyleTable,e=t.resolveAt(ht)??t.resolveAt("STANDARD");return e?e.textStyle:{name:ht,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:0,font:"txt",bigFont:""}}fitLabelTextHeight(t,e,i){const r=e*.85,s=i*.85;if(r<=0||s<=0||!t)return 0;let o=0,a=s;for(let c=0;c<24;c++){const l=(o+a)/2;Ve(t,l)<=r&&l<=s?o=l:a=l}return o}boundaryCenter(t){let e=t.length;e>1&&t[0].x===t[e-1].x&&t[0].y===t[e-1].y&&(e-=1);let i=0,r=0,s=0;for(let o=0;o<e;o++)i+=t[o].x,r+=t[o].y,s+=t[o].z;return new x(i/e,r/e,s/e)}boundaryLocalSize(t){let e=t.length;if(e>1&&t[0].x===t[e-1].x&&t[0].y===t[e-1].y&&(e-=1),e<2)return{width:this._width,height:this._height,rotation:this._rotation};const i=t[0],r=t[1],s=r.x-i.x,o=r.y-i.y,a=Math.hypot(s,o),c=Math.atan2(o,s);if(a<=0)return{width:this._width,height:this._height,rotation:this._rotation};const l=s/a,h=o/a;let u=0,d=0;for(let f=0;f<e;f++){const p=t[f].x-i.x,m=t[f].y-i.y,y=p*-h+m*l;u=Math.min(u,y),d=Math.max(d,y)}const g=Math.max(d-u,0);return{width:a>0?a:this._width,height:g>0?g:this._height,rotation:c}}transformBy(t){const e=this._width*this._scale.x,i=this._height*this._scale.y,r=new A(e*Math.cos(this._rotation),e*Math.sin(this._rotation),0),s=new A(-i*Math.sin(this._rotation),i*Math.cos(this._rotation),0),o=this._position.clone(),a=this._position.clone().add(r),c=this._position.clone().add(s);o.applyMatrix4(t),a.applyMatrix4(t),c.applyMatrix4(t);const l=new A(a).sub(o),h=new A(c).sub(o);return this._position.copy(o),this._rotation=Math.atan2(l.y,l.x),this._width=l.length(),this._height=h.length(),this._scale.set(1,1),this}moveUnclippedGripAt(t,e){const i=this._position.x,r=this._position.y,s=this._width,o=this._height;switch(t){case 0:this._position.add(e);break;case 1:{const a=i,c=r+o,l=i+s+e.x,h=r+e.y;this._position.x=a,this._position.y=h,this._width=l-a,this._height=c-h;break}case 2:{const a=i+s+e.x,c=r+o+e.y;this._width=a-i,this._height=c-r;break}case 3:{const a=i+s,c=r,l=i+e.x,h=r+o+e.y;this._position.x=l,this._position.y=c,this._width=a-l,this._height=h-c;break}}}moveClippedBoundaryGripAt(t,e){if(t<0||t>=this._clipBoundary.length)return;const i=this._width,r=this._height,s=new It;s.setFromPoints(this._clipBoundary);const o=new M;o.setX(this._position.x-s.min.x*i),o.setY(this._position.y-s.min.y*r);const a=this._clipBoundary[t],c=a.x*i+o.x+e.x,l=a.y*r+o.y+e.y;a.x=(c-o.x)/i,a.y=(l-o.y)/r}boundaryPath(){const t=[];if(this.isClipped&&this._clipBoundary.length>3){const e=this._width,i=this._height,r=new It;r.setFromPoints(this._clipBoundary);const s=new M;s.setX(this._position.x-r.min.x*e),s.setY(this._position.y-r.min.y*i),this._clipBoundary.forEach(o=>{const a=o.x*e+s.x,c=o.y*i+s.y;t.push(new x(a,c,this._position.z))})}else{if(t.push(this._position),t.push(this._position.clone().setX(this._position.x+this._width)),t.push(this._position.clone().set(this._position.x+this._width,this._position.y+this._height,this._position.z)),t.push(this._position.clone().setY(this._position.y+this._height)),this._rotation>0){eu.copy(t[1]);for(let e=1;e<4;e++)Mr.copy(t[e]),Mr.rotateAround(eu,this._rotation),t[e].setX(Mr.x),t[e].setY(Mr.y)}t.push(t[0])}return t}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImage"),t.writeInt32(90,this.classVersion),t.writePoint3d(10,this.position);const e=this.width*this.scale.x,i=this.height*this.scale.y,r=this._imageSize.x>0&&this._imageSize.y>0?this._imageSize:{x:e,y:i},s=r.x>0?e/r.x:e,o=r.y>0?i/r.y:i,a=Math.cos(this._rotation),c=Math.sin(this._rotation);t.writePoint3d(11,{x:s*a,y:s*c,z:0}),t.writePoint3d(12,{x:-o*c,y:o*a,z:0}),t.writePoint2d(13,r),t.writeObjectId(340,this.imageDefId);const l=(this.isImageShown?1:0)|(this.isShownClipped?4:0)|(this.isImageTransparent?8:0);if(t.writeInt16(70,l),t.writeInt16(280,this.isClipped?1:0),t.writeInt16(281,this.brightness),t.writeInt16(282,this.contrast),t.writeInt16(283,this.fade),t.writeInt16(71,this.clipBoundaryType),this.isClipped){t.writeInt16(91,this.clipBoundary.length);for(const h of this.clipBoundary)t.writePoint2d(14,h)}return t.writeInt16(290,this.clipMode),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbRasterImage");let e=this.position.x,i=this.position.y,r=this.position.z,s=1,o=0,a=0,c=0,l=1,h=0,u=this.imageSize.x,d=this.imageSize.y;const g=[];let f=null;const p=()=>{f&&(g.push(new M(f.x,f.y)),f=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const m=t.readItem();if(!m)break;const y=Number(m.code),b=Number(m.value);switch(y){case 10:e=b;break;case 20:i=b;break;case 30:r=b;break;case 11:s=b;break;case 21:o=b;break;case 31:a=b;break;case 12:c=b;break;case 22:l=b;break;case 32:h=b;break;case 13:u=b;break;case 23:d=b;break;case 14:p(),f={x:b,y:0};break;case 24:f&&(f.y=b);break;case 70:{this.isImageShown=(b&3)!==0,this.isShownClipped=(b&4)!==0,this.isImageTransparent=(b&8)!==0;break}case 71:this.clipBoundaryType=b;break;case 90:this.classVersion=b;break;case 91:break;case 280:this.isClipped=b!==0;break;case 281:this.brightness=b;break;case 282:this.contrast=b;break;case 283:this.fade=b;break;case 290:this.clipMode=b;break;case 340:this.imageDefId=String(m.value);break}}return p(),this.applyRasterImageDxfIn(e,i,r,s,o,a,c,l,h,u,d,g),this}applyRasterImageDxfIn(t,e,i,r,s,o,a,c,l,h,u,d){this.position.copy({x:t,y:e,z:i}),this.imageSize.copy({x:h,y:u});const g=Math.hypot(r,s,o),f=Math.hypot(a,c,l);this.width=g*(h||1),this.height=f*(u||1),this.rotation=Math.atan2(s,r),d.length>0&&(this.clipBoundary=d)}};Al.typeName="RasterImage";let tr=Al;const eu=new M,Mr=new M,eo=class eo extends Et{get dxfTypeName(){return"RAY"}constructor(){super(),this._basePoint=new x,this._unitDir=new A}get basePoint(){return this._basePoint}set basePoint(t){this._basePoint.copy(t)}get unitDir(){return this._unitDir}set unitDir(t){this._unitDir.copy(t)}get closed(){return!1}get area(){return 0}get geometricExtents(){const t=new j;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}subGetIntersectCurves(){const t=this._basePoint.clone().add(this._unitDir);return[{kind:"line",line:new Ct(this._basePoint,t),extent:"ray"}]}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}subMoveGripPointsAt(t,e){return Ee(t,e,this.basePoint),this}subGetOsnapPoints(t,e,i,r){const s=this.basePoint;if(t===I.EndPoint){r.push(s);return}const o=this.unitDir.clone();if(o.lengthSq()===0)return;o.normalize();const a=new Ct(s,s.clone().add(o));switch(t){case I.Nearest:{const c=a.project(e),h=new A(c).sub(s).dot(o);r.push(h<0?s:c);break}case I.Perpendicular:r.push(a.perpPoint(e));break}}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=[];return e.push(this.basePoint),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRay"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbRay");let e=this.basePoint.x,i=this.basePoint.y,r=this.basePoint.z,s=this.unitDir.x,o=this.unitDir.y,a=this.unitDir.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:i=h;break;case 30:r=h;break;case 11:s=h;break;case 21:o=h;break;case 31:a=h;break}}return this.basePoint=new x(e,i,r),this.unitDir=new A(s,o,a),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.basePoint,i=this.unitDir,r=Math.hypot(i.x,i.y);return r<=1e-9||(i.x*(t.y-e.y)-i.y*(t.x-e.x))/r>=0?1:-1}createOffsetCurve(t){const e=ud(this.basePoint,this.unitDir,t);if(!e)return null;const i=new eo;return i.basePoint=e,i.unitDir=this.unitDir.clone(),i}};eo.typeName="Ray";let ks=eo;const Pl=class Pl extends nt{get dxfTypeName(){return"SHAPE"}constructor(){super(),this._position=new x,this._size=1,this._name="",this._rotation=0,this._widthFactor=1,this._oblique=0,this._thickness=0,this._normal=new A(0,0,1),this._shapeNumber=0,this._styleName=""}get position(){return this._position}set position(t){this._position.copy(t)}get size(){return this._size}set size(t){this._size=t}get name(){return this._name}set name(t){this._name=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get widthFactor(){return this._widthFactor}set widthFactor(t){this._widthFactor=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get shapeNumber(){return this._shapeNumber}set shapeNumber(t){this._shapeNumber=t}get styleId(){var e,i,r;const t=(r=(i=(e=this.database)==null?void 0:e.tables)==null?void 0:i.textStyleTable)==null?void 0:r.resolveAt(this._styleName);return(t==null?void 0:t.objectId)??""}set styleId(t){var i,r,s;const e=(s=(r=(i=this.database)==null?void 0:i.tables)==null?void 0:r.textStyleTable)==null?void 0:s.getIdAt(t);e&&(this._styleName=e.name)}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get isPlanar(){return!0}get geometricExtents(){const t=Math.abs(this._size)/2,e=new j;return e.expandByPoint(this._position),t>0&&(e.expandByPoint(new x(this._position.x-t,this._position.y-t,this._position.z)),e.expandByPoint(new x(this._position.x+t,this._position.y+t,this._position.z))),e}subGetGripPoints(){return[this._position]}subMoveGripPointsAt(t,e){return Ee(t,e,this._position),this}subGetOsnapPoints(t,e,i,r){t===I.Insertion&&r.push(this._position)}transformBy(t){const e=new F().setFromExtrusionDirection(this._normal),i=new F().makeRotationZ(this._rotation),r=new F().multiplyMatrices(e,i),s=this._position.clone(),o=new x(this._widthFactor,0,0).applyMatrix4(r).add(s),a=new x(0,1,0).applyMatrix4(r).add(s),c=new x(0,0,1).applyMatrix4(r).add(s);s.applyMatrix4(t),o.applyMatrix4(t),a.applyMatrix4(t),c.applyMatrix4(t);const l=new A(o).sub(s),h=new A(a).sub(s),u=new A(c).sub(s);let d=new A().crossVectors(l,h);d.lengthSq()===0?d=this._normal.clone().transformDirection(t):d.normalize();const f=new F().setFromExtrusionDirection(d).clone().invert(),p=l.clone().applyMatrix4(f),m=h.length(),y=l.length();this._position.copy(s),this._normal.copy(d),y>0&&(this._rotation=Math.atan2(p.y,p.x)),m>0&&(this._size*=m,y>0&&(this._widthFactor*=y/m));const b=u.length();return b>0&&(this._thickness*=b),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"shape",properties:[{name:"name",type:"string",editable:!0,accessor:{get:()=>this.name,set:t=>{this.name=t}}},{name:"size",type:"float",editable:!0,accessor:{get:()=>this.size,set:t=>{this.size=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"widthFactor",type:"float",editable:!0,accessor:{get:()=>this.widthFactor,set:t=>{this.widthFactor=t}}},{name:"oblique",type:"float",editable:!0,accessor:{get:()=>this.oblique,set:t=>{this.oblique=t}}},{name:"shapeNumber",type:"int",editable:!0,accessor:{get:()=>this.shapeNumber,set:t=>{this.shapeNumber=t}}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}subWorldDraw(t,e){const i=this.getTextStyle(),r=i?{...i,widthFactor:this.widthFactor,obliqueAngle:this.oblique*180/Math.PI}:void 0,s={...this.renderGlyphIdentity(),size:this.size,position:this._position,rotation:this._rotation,directionVector:this._normal,widthFactor:this.widthFactor};return t.shape(s,r,e)}renderGlyphIdentity(){const t=this._name.trim(),e=Number(t);return t!==""&&Number.isInteger(e)&&e!==0&&String(e)===t?{shapeNumber:e}:{name:t||void 0,shapeNumber:this._shapeNumber!==0?this._shapeNumber:void 0}}getTextStyle(){const t=this.styleName.trim();if(!t)return;const e=this.database.tables.textStyleTable.resolveAt(t);return e==null?void 0:e.textStyle}get dxfShapeIdentity(){const t=this._name.trim();return t||(this._shapeNumber!==0?String(this._shapeNumber):"")}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbShape"),t.writePoint3d(10,this.position),t.writeDouble(40,this.size);const e=this.dxfShapeIdentity;return e&&t.writeString(2,e),t.writeAngle(50,this.rotation),t.writeDouble(41,this.widthFactor),t.writeAngle(51,this.oblique),t.writeDouble(39,this.thickness),this._styleName&&t.writeString(3,this._styleName),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbShape");let e=this.position.x,i=this.position.y,r=this.position.z,s=this.normal.x,o=this.normal.y,a=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:i=h;break;case 30:r=h;break;case 2:{const u=String(c.value).trim(),d=Number(u);u!==""&&Number.isInteger(d)&&d!==0&&String(d)===u?(this.shapeNumber=d,this.name=""):this.name=u;break}case 3:this.styleName=String(c.value);break;case 39:this.thickness=h;break;case 40:this.size=h;break;case 41:this.widthFactor=h;break;case 50:this.rotation=C.degToRad(h);break;case 51:this.oblique=C.degToRad(h);break;case 210:s=h;break;case 220:o=h;break;case 230:a=h;break}}return this.position={x:e,y:i,z:r},this.normal={x:s,y:o,z:a},this}};Pl.typeName="Shape";let Is=Pl;const zn=class zn extends Et{constructor(){super(),this._normal=new A(0,0,1),this._elevation=0,this._thickness=0,this._vertices=[new x,new x,new x,new x]}get dxfTypeName(){return"TRACE"}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return!0}get area(){return new rt(zn.boundaryPointsFromVertices(this._vertices),!0).area}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}getPointAt(t){return t<0?this._vertices[0]:t>3?this._vertices[3]:this._vertices[t]}setPointAt(t,e){if(t<0&&this._vertices[0].copy(e),t>3)return this._vertices[3].copy(e);this._vertices[t].copy(e)}get geometricExtents(){return new j().setFromPoints(this._vertices)}subGetIntersectCurves(){const t=this._vertices[0],e=this._vertices[1],i=this._vertices[2],r=this._vertices[3];return Wt([t,e,r,i],!0)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subMoveGripPointsAt(t,e){return pi(t,e,this._vertices),this}subGetOsnapPoints(t,e,i,r){const s=[this._vertices[0],this._vertices[1],this._vertices[3],this._vertices[2]];_o(s,!0,t,e,r)}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this._elevation=this._vertices[0].z,this}get directBatchPrimitive(){return"area"}subWorldDraw(t){const e=new rt(zn.boundaryPointsFromVertices(this._vertices),!0),i=new he;i.add(e);const r=t.subEntityTraits;return r.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.area(i)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTrace"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,jt(this.getPointAt(0),this.normal)),t.writePoint3d(11,jt(this.getPointAt(1),this.normal)),t.writePoint3d(12,jt(this.getPointAt(2),this.normal)),t.writePoint3d(13,jt(this.getPointAt(3),this.normal)),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbTrace");const e=[{x:this.getPointAt(0).x,y:this.getPointAt(0).y,z:this.getPointAt(0).z},{x:this.getPointAt(1).x,y:this.getPointAt(1).y,z:this.getPointAt(1).z},{x:this.getPointAt(2).x,y:this.getPointAt(2).y,z:this.getPointAt(2).z},{x:this.getPointAt(3).x,y:this.getPointAt(3).y,z:this.getPointAt(3).z}];let i=this.normal.x,r=this.normal.y,s=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const a=t.readItem();if(!a)break;const c=Number(a.code),l=Number(a.value);switch(c){case 10:case 11:case 12:case 13:e[c-10].x=l;break;case 20:case 21:case 22:case 23:e[c-20].y=l;break;case 30:case 31:case 32:case 33:e[c-30].z=l;break;case 39:this.thickness=l;break;case 210:i=l;break;case 220:r=l;break;case 230:s=l;break}}const o=new A(i,r,s);return o.lengthSq()>0&&this.normal.copy(o.normalize()),e.forEach((a,c)=>this.setPointAt(c,te(a,this.normal))),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectBoundary2d();return e.length<2?1:Dt.from2dPoints(e,!0).getOffsetSideAtPoint(t)}createOffsetCurve(t){return Eo(this.collectBoundary2d(),!0,t)}collectBoundary2d(){return zn.boundaryPointsFromVertices(this._vertices)}static boundaryPointsFromVertices(t){const e=t[0],i=t[1],r=t[2],s=t[3];return[new M(e.x,e.y),new M(i.x,i.y),new M(s.x,s.y),new M(r.x,r.y)]}};zn.typeName="Trace";let er=zn;const Sl=class Sl extends er{get dxfTypeName(){return"SOLID"}};Sl.typeName="Solid";let Es=Sl;function Zx(n){return n&2048?"SqrtChord":n&1024?"Chord":"Uniform"}function nu(n,t){try{return new nr(n.controlPoints,n.knots,Qx(n.weights,n.controlPoints.length),n.degree,t)}catch{return null}}function Qx(n,t){if(!(!n||n.length!==t))return n}const Vn=class Vn extends Et{constructor(t,e,i,r,s){super(),this._geoData=null,this._knotTolerance=1e-6,this._controlTolerance=1e-6,this._fitTolerance=1e-9,this._normal=new A(0,0,1),t!==void 0&&this.rebuild(t,e,i,r,s)}get dxfTypeName(){return"SPLINE"}static fromControlPoints(t,e,i,r,s){const o=Nt.fromControlPoints(t,e,i,r,s);return o?nu(o,s):null}static fromFitPoints(t,e,i,r,s,o){const a=Nt.fromFitPoints(t,e,i,r,s,o);return a?nu(a,r):null}static fromDwgSpline(t){var a,c,l;const e=!!(t.flag&1),i=Zx(t.flag),r=t.numberOfControlPoints||((a=t.controlPoints)==null?void 0:a.length)||0,s=t.numberOfKnots||((c=t.knots)==null?void 0:c.length)||0,o=t.numberOfFitPoints||((l=t.fitPoints)==null?void 0:l.length)||0;if(r>0&&s>0){const h=Vn.fromControlPoints(t.controlPoints,t.knots,t.weights,t.degree,e);if(h)return h}return o>0?Vn.fromFitPoints(t.fitPoints,i,t.degree,e,t.startTangent,t.endTangent):null}get _geo(){if(this._geoData==null){const t=[{x:0,y:0,z:0},{x:1,y:0,z:0},{x:2,y:0,z:0},{x:3,y:0,z:0}],e=[0,0,0,0,1,1,1,1];this._geoData=Nt.fromControlPoints(t,e,void 0,3,!1)??new Nt(t,e,void 0,3,!1)}return this._geoData}set _geo(t){this._geoData=t}rebuild(t,e,i,r,s){const o=+(t!==void 0)+ +(e!==void 0)+ +(i!==void 0)+ +(r!==void 0)+ +(s!==void 0);if(o<2||o>5)throw Bt.ILLEGAL_PARAMETERS;!Array.isArray(e)?this._geo=new Nt(t,e,i,r):this._geo=new Nt(t,e,i,r,s)}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"spline",spline:this._geo.clone(),extendable:!1}]}get closed(){return this._geo.closed}get area(){return this._geo.area}set closed(t){this._geo.closed=t}get knotTolerance(){return this._knotTolerance}set knotTolerance(t){this._knotTolerance=t}get controlTolerance(){return this._controlTolerance}set controlTolerance(t){this._controlTolerance=t}get fitTolerance(){return this._fitTolerance}set fitTolerance(t){this._fitTolerance=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}subGetGripPoints(){return this._geo.getGripPoints()}subMoveGripPointsAt(t,e){return this._geo.moveGripPointsAt(t,e),this}subGetOsnapPoints(t,e,i,r){switch(t){case I.EndPoint:r.push(this._geo.startPoint),r.push(this._geo.endPoint);break;case I.Node:{const s=new Set;for(const o of this._geo.knots)s.has(o)||(s.add(o),r.push(this._geo.evaluateAt(o)));break}case I.Nearest:r.push(this._geo.nearestPoint(e));break}}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this._geo.tessellate(hr(t));return t.lines(e)}dxfOutFields(t){var i;const e=this._geo;super.dxfOutFields(t),t.writeSubclassMarker("AcDbSpline"),t.writeInt16(70,this.closed?1:0),t.writeInt16(71,e.degree),t.writeInt16(72,e.knots.length),t.writeInt16(73,e.controlPoints.length),t.writeInt16(74,((i=e.fitPoints)==null?void 0:i.length)??0),t.writeDouble(42,this.knotTolerance),t.writeDouble(43,this.controlTolerance),t.writeDouble(44,this.fitTolerance);for(const r of e.knots)t.writeDouble(40,r);for(const r of e.weights)t.writeDouble(41,r);for(const r of e.controlPoints)t.writePoint3d(10,r);for(const r of e.fitPoints??[])t.writePoint3d(11,r);return t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSpline");let e=this.closed?1:0,i=3,r=0,s=0,o=0;const a=[],c=[],l=[],h=[];let u=null,d=null,g=this.knotTolerance,f=this.controlTolerance,p=this.fitTolerance,m=this.normal.x,y=this.normal.y,b=this.normal.z,_=null,w=null,S=null,P=null;const v=()=>{_&&(l.push(_),_=null)},k=()=>{w&&(h.push(w),w=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const O=t.readItem();if(!O)break;const R=Number(O.code),N=Number(O.value);switch(R){case 70:e=N;break;case 71:i=N;break;case 72:r=N;break;case 73:s=N;break;case 74:o=N;break;case 42:g=N;break;case 43:f=N;break;case 44:p=N;break;case 40:a.push(N);break;case 41:c.push(N);break;case 10:v(),_={x:N,y:0,z:0};break;case 20:_&&(_.y=N);break;case 30:_&&(_.z=N);break;case 11:k(),w={x:N,y:0,z:0};break;case 21:w&&(w.y=N);break;case 31:w&&(w.z=N);break;case 12:S={x:N,y:0,z:0};break;case 22:S&&(S.y=N);break;case 32:S&&(S.z=N,u=S,S=null);break;case 13:P={x:N,y:0,z:0};break;case 23:P&&(P.y=N);break;case 33:P&&(P.z=N,d=P,P=null);break;case 210:m=N;break;case 220:y=N;break;case 230:b=N;break}}v(),k(),this.knotTolerance=g,this.controlTolerance=f,this.fitTolerance=p;const L=new A(m,y,b);return L.lengthSq()>0&&this.normal.copy(L.normalize()),this.applyDxfInSpline({flag:e,degree:i,numberOfControlPoints:s||l.length,numberOfKnots:r||a.length,numberOfFitPoints:o||h.length,controlPoints:l,knots:a,weights:c.length>0?c:void 0,fitPoints:h,startTangent:u,endTangent:d}),this}applyDxfInSpline(t){const e=Vn.fromDwgSpline(t);e&&(this._geo=e._geo,this.closed=e.closed)}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d(1);return e.length<2?1:Dt.from2dPoints(e,this.closed).getOffsetSideAtPoint(t)}createOffsetCurve(t){const{points:e,tangents:i}=this._geo.getOffsetSamplePath2d(t),r=$m(e,this.closed,t,i);return r?Dt.fromGePolyline(r):null}collectPath2d(t){return this._geo.getOffsetSamplePath2d(t).points}};Vn.typeName="Spline";let nr=Vn;function Jx(n){return n==null?kt.latest.capabilities:typeof n=="object"&&"supportsHandles"in n?n:n instanceof kt?n.capabilities:new kt(n).capabilities}const tw=new A,kl=class kl extends ne{get dxfTypeName(){return"ACAD_TABLE"}constructor(t,e,i){super(t??""),this._attachmentPoint=exports.AcGiMTextAttachmentPoint.TopLeft,this._numColumns=i,this._numRows=e,this._columnWidth=new Array(i),this._rowHeight=new Array(e),this._cells=new Array(e*i)}get blockTableRecord(){const t=this.blockName;if(t){const i=this.database.tables.blockTable.getAt(t);if(i)return i}const e=this.owningBlockRecordId;if(e)return this.database.tables.blockTable.getIdAt(e)}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get numRows(){return this._numRows}set numRows(t){this._numRows=t}get numColumns(){return this._numColumns}set numColumns(t){this._numColumns=t}numContents(t,e){return 1}rowHeight(t){return this._rowHeight[t]}setRowHeight(t,e){this._rowHeight[t]=e}setUniformRowHeight(t){this._rowHeight.fill(t)}columnWidth(t){return this._columnWidth[t]}setUniformColumnWidth(t){this._columnWidth.fill(t)}setColumnWidth(t,e){this._columnWidth[t]=e}resizeGrid(t,e){const i=Math.max(0,t),r=Math.max(0,e);this._numRows=i,this._numColumns=r,this._rowHeight=new Array(i).fill(0),this._columnWidth=new Array(r).fill(0),this._cells=new Array(i*r)}cell(t){if(!(t<0||t>=this._cells.length))return this._cells[t]}setCell(t,e){this._cells[t]=e}textString(t,e,i){var s;const r=t*this._numColumns+e;return(s=this._cells[r])==null?void 0:s.text}setTextString(t,e,i){const r=t*this._numColumns+e;if(!this._cells[r]){this._cells[r]={text:i,attachmentPoint:this._attachmentPoint,cellType:1,textHeight:0};return}this._cells[r].text=i}isEmpty(t,e){var r;const i=t*this._numColumns+e;return!((r=this._cells[i])!=null&&r.text)}get geometricExtents(){let t;try{t=this.blockTableRecord}catch{t=void 0}if(t&&t.newIterator().count>0){const a=new j;for(const c of t.newIterator())a.union(c.geometricExtents);return a.applyMatrix4(this.blockTransform),a}const e=this._columnWidth.reduce((a,c)=>a+c,0),i=this._rowHeight.reduce((a,c)=>a+c,0),r=new j;if(e===0&&i===0)return r.expandByPoint(this.position),r;const s=new qn;s.setFromAxisAngle(A.Z_AXIS,this.rotation),En.compose(this.position,s,this.scaleFactors);const o=[new x(0,0,0),new x(e,0,0),new x(e,-i,0),new x(0,-i,0)];for(const a of o)r.expandByPoint(a.applyMatrix4(En));return r}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"table",properties:[{name:"numRows",type:"string",editable:!0,accessor:{get:()=>this.numRows,set:t=>{this.numRows=t}}},{name:"numColumns",type:"float",editable:!0,accessor:{get:()=>this.numColumns,set:t=>{this.numColumns=t}}},{name:"tableWidth",type:"float",editable:!1,accessor:{get:()=>this._columnWidth.reduce((t,e)=>t+e,0)}},{name:"tableHeight",type:"float",editable:!1,accessor:{get:()=>this._rowHeight.reduce((t,e)=>t+e,0)}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}subWorldDraw(t){const e=this.blockTableRecord;if(e&&e.newIterator().count>0){const g=this.drawAnonymousTableBlock(t,e);if(g)return g}let i=0,r=0;const s=new Uint16Array(this.numColumns*this.numRows*8),o=new Float32Array((this.numColumns+1)*(this.numRows+1)*3);let a=0;for(let g=0;g<=this.numRows;g++){i-=g>0?this.rowHeight(g-1):0,r=0;for(let f=0;f<=this.numColumns;f++)r+=f>0?this.columnWidth(f-1):0,o[a++]=r,o[a++]=i,o[a++]=0}const c=[],l=new Array(this.numRows*this.numColumns).fill(!1);r=0,a=0;let h=0;for(let g=0;g<this.numColumns;g++){r+=g>0?this.columnWidth(g-1):0,i=0;for(let f=0;f<this.numRows;f++){i+=f>0?this.rowHeight(f-1):0;const p=this.cell(f*this.numColumns+g);if(h=f*this.numColumns+g,p&&!l[h]){const m=p.borderWidth??1,y=p.borderHeight??1;this.fillVisited(l,h,this.numColumns,m,y),s[a++]=g+f*(this.numColumns+1),s[a++]=g+f*(this.numColumns+1)+m;const b=o[s[a-1]*3]-r,_=g+(f+y)*(this.numColumns+1)+m;g+m==this.numColumns&&(s[a++]=g+f*(this.numColumns+1)+m,s[a++]=_);const w=-o[_*3+1]-i;if(f+y==this.numRows&&(s[a++]=g+(f+y)*(this.numColumns+1)+y,s[a++]=g+(f+y)*(this.numColumns+1)),s[a++]=g+(f+y)*(this.numColumns+1),s[a++]=g+f*(this.numColumns+1),p.text){const S=p.attachmentPoint||this.attachmentPoint||exports.AcGiMTextAttachmentPoint.MiddleCenter,P=this.getTableTextOffset(S,b,w),v={text:p.text,height:this.getCellTextHeight(p,w),width:b,position:tw.set(r,-i,0).clone().add(P),rotation:this.rotation,attachmentPoint:S},k=this.getTextStyle(p);c.push(t.mtext(v,k))}}}}c.push(t.lineSegments(o,3,s));const u=t.group(c),d=new qn;return d.setFromAxisAngle(A.Z_AXIS,this.rotation),En.compose(this.position,d,this.scaleFactors),u.applyMatrix(En),u}drawAnonymousTableBlock(t,e){const i=[],r=e.newIterator();for(const a of r){let c;if(a.color.isByBlock){iu.copy(a.color);const l=this.resolvedColor;l.isForeground?a.color.setForeground():l.RGB!=null&&a.color.setRGBValue(l.RGB),c=a.worldDraw(t),a.color.copy(iu)}else c=a.worldDraw(t);c&&(c.objectId=this.objectId,c.ownerId=this.ownerId,c.layerName=this.layer,c.visible=this.visibility&&a.visibility,i.push(c))}const s=t.group(i);s.applyMatrix(this.blockTransform);const o=this.normal;return o&&(o.x!==0||o.y!==0||o.z!==1)&&(En.setFromExtrusionDirection(o),s.applyMatrix(En)),s}fillVisited(t,e,i,r,s){if(s==1&&r==1)t[e]=!0;else for(let o=0;o<r;++o)for(let a=0;a<s;++a)t[e+o+a*i]=!0}getTextStyle(t){const e=this.database.tables.textStyleTable.resolveAt(t.textStyle);if(!e)throw new Error("No valid text style found in text style table.");return e.textStyle}getTableTextOffset(t,e,i){const r=new A;switch(t){case 1:break;case 2:r.setX(e/2);break;case 3:r.setX(e);break;case 4:r.setY(-i/2);break;case 5:r.set(e/2,-i/2,0);break;case 6:r.set(e,-i/2,0);break;case 7:r.setY(-i);break;case 8:r.set(e/2,-i,0);break;case 9:r.set(e,-i,0);break}return r}getCellTextHeight(t,e){return t.textHeight&&t.textHeight>0?t.textHeight:Math.max(e/2,1)}dxfOutFields(t){var s,o,a,c,l,h,u;super.dxfOutFields(t),t.writeSubclassMarker("AcDbTable");const e=t.version??((s=t.database)==null?void 0:s.version)??((o=this.database)==null?void 0:o.version),i=Jx(e).supportsUtf8CodePage;t.writeInt16(280,this.tableDataVersion),t.writeObjectId(342,this.tableStyleId),t.writeObjectId(343,this.owningBlockRecordId),t.writeVector3d(11,this.horizontalDirection),t.writeUInt32(90,this.tableValueFlag),t.writeUInt32(93,this.tableOverrideFlag),t.writeUInt32(94,this.borderColorOverrideFlag),t.writeUInt32(95,this.borderLineweightOverrideFlag),t.writeUInt32(96,this.borderVisibilityOverrideFlag),t.writeInt16(71,this.attachmentPoint),t.writeInt32(91,this.numRows),t.writeInt32(92,this.numColumns);for(let d=0;d<this.numRows;++d)t.writeDouble(141,this.rowHeight(d));for(let d=0;d<this.numColumns;++d)t.writeDouble(142,this.columnWidth(d));const r=this._cells.length>0?this._cells.length:this.numRows*this.numColumns;for(let d=0;d<r;d++){const g=this._cells[d],f=(g==null?void 0:g.cellType)??(g!=null&&g.blockTableRecordId?2:1);if(t.writeInt16(171,f),t.writeInt16(172,(g==null?void 0:g.flagValue)??0),t.writeInt16(173,(g==null?void 0:g.mergedValue)??0),t.writeBoolean(174,g==null?void 0:g.autoFit),t.writeInt16(175,g==null?void 0:g.borderWidth),t.writeInt16(176,g==null?void 0:g.borderHeight),(g==null?void 0:g.overrideFlag)!=null&&(i?t.writeInt32(91,g.overrideFlag):t.writeInt16(177,g.overrideFlag)),t.writeInt16(178,g==null?void 0:g.virtualEdgeFlag),t.writeAngle(145,g==null?void 0:g.rotation),i&&t.writeInt16(92,g==null?void 0:g.extendedCellFlags),f===1)g!=null&&g.fieldObjetId?t.writeObjectId(344,g.fieldObjetId):this.writeCellText(t,(g==null?void 0:g.text)??"",i,g==null?void 0:g.cellValueBlockBegin);else if(f===2){if(t.writeObjectId(340,g==null?void 0:g.blockTableRecordId),t.writeDouble(144,g==null?void 0:g.blockScale),t.writeInt16(179,g==null?void 0:g.blockAttrNum),(a=g==null?void 0:g.attrDefineId)!=null&&a.length)for(const p of g.attrDefineId)t.writeObjectId(331,p);if((g==null?void 0:g.attrText)!=null)if(Array.isArray(g.attrText))for(const p of g.attrText)t.writeString(300,p);else t.writeString(300,g.attrText)}g!=null&&g.textStyle&&t.writeString(7,g.textStyle),(g==null?void 0:g.textHeight)!=null&&t.writeDouble(140,g.textHeight),(g==null?void 0:g.attachmentPoint)!=null&&t.writeInt16(170,g.attachmentPoint),(g==null?void 0:g.topBorderVisibility)!=null&&t.writeInt16(289,g.topBorderVisibility?1:0),(g==null?void 0:g.rightBorderVisibility)!=null&&t.writeInt16(285,g.rightBorderVisibility?1:0),(g==null?void 0:g.bottomBorderVisibility)!=null&&t.writeInt16(286,g.bottomBorderVisibility?1:0),(g==null?void 0:g.leftBorderVisibility)!=null&&t.writeInt16(288,g.leftBorderVisibility?1:0)}if(t.writeInt16(70,this.flowDirection),t.writeDouble(40,this.horizontalCellMargin),t.writeDouble(41,this.verticalCellMargin),this.suppressTitle!=null&&t.writeInt16(280,this.suppressTitle?1:0),this.suppressHeader!=null&&t.writeInt16(281,this.suppressHeader?1:0),(c=this.cellTypeOverrides)!=null&&c.length)for(const d of this.cellTypeOverrides){t.writeString(7,d.textStyle),t.writeDouble(140,d.textHeight),t.writeInt16(170,d.alignment),t.writeInt16(63,d.backgroundColor),t.writeInt16(64,d.contentColor),d.backgroundColorEnabled!=null&&t.writeInt16(283,d.backgroundColorEnabled?1:0);const g=d.borderLineweights;g&&(t.writeInt16(274,g.top),t.writeInt16(275,g.right),t.writeInt16(276,g.bottom),t.writeInt16(277,g.left),t.writeInt16(278,g.insideHorizontal),t.writeInt16(279,g.insideVertical));const f=d.borderVisibility;f&&(t.writeInt16(284,f.top?1:0),t.writeInt16(285,f.right?1:0),t.writeInt16(286,f.bottom?1:0),t.writeInt16(287,f.left?1:0),t.writeInt16(288,f.insideHorizontal?1:0),t.writeInt16(289,f.insideVertical?1:0))}if(this.tableBorderColors&&(t.writeInt16(63,this.tableBorderColors.left),t.writeInt16(64,this.tableBorderColors.top),t.writeInt16(65,this.tableBorderColors.insideHorizontal),t.writeInt16(66,this.tableBorderColors.bottom),t.writeInt16(68,this.tableBorderColors.insideVertical),t.writeInt16(69,this.tableBorderColors.right)),(l=this.rowDataTypes)!=null&&l.length)for(const d of this.rowDataTypes)t.writeInt16(97,d);if((h=this.rowUnitTypes)!=null&&h.length)for(const d of this.rowUnitTypes)t.writeInt16(98,d);if((u=this.rowFormats)!=null&&u.length)for(const d of this.rowFormats)t.writeString(4,d);return this}dxfInFields(t){var p,m,y;super.dxfInFields(t),t.atSubclassData("AcDbTable");let e=this._numRows,i=this._numColumns,r=!1;const s=[],o=[];let a=0,c=null,l=[],h=((p=this.horizontalDirection)==null?void 0:p.x)??1,u=((m=this.horizontalDirection)==null?void 0:m.y)??0,d=((y=this.horizontalDirection)==null?void 0:y.z)??0;const g=()=>{e>0&&i>0&&(!r||this._numRows!==e||this._numColumns!==i)&&(this.resizeGrid(e,i),r=!0)},f=()=>{c&&(l.length>0&&(c.text=l.join(""),l=[]),g(),a<this._cells.length&&this.setCell(a,c),a+=1,c=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const b=t.readItem();if(!b)break;const _=Number(b.code),w=Number(b.value);switch(_){case 280:c||(this.tableDataVersion=w);break;case 342:this.tableStyleId=String(b.value);break;case 343:this.owningBlockRecordId=String(b.value);break;case 11:h=w;break;case 21:u=w;break;case 31:d=w;break;case 90:c||(this.tableValueFlag=w);break;case 93:c||(this.tableOverrideFlag=w);break;case 94:c||(this.borderColorOverrideFlag=w);break;case 95:c||(this.borderLineweightOverrideFlag=w);break;case 96:c||(this.borderVisibilityOverrideFlag=w);break;case 71:this.attachmentPoint=w;break;case 170:c?c.attachmentPoint=w:this.attachmentPoint=w;break;case 91:c?c&&(c.overrideFlag=w):(e=w,g());break;case 92:c?c&&(c.extendedCellFlags=w):(i=w,g());break;case 141:s.push(w);break;case 142:o.push(w);break;case 171:f(),c={text:"",attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter,cellType:w,textHeight:0};break;case 172:c&&(c.flagValue=w);break;case 173:c&&(c.mergedValue=w);break;case 174:c&&(c.autoFit=!!b.value||w!==0);break;case 175:c&&(c.borderWidth=w);break;case 176:c&&(c.borderHeight=w);break;case 177:c&&(c.overrideFlag=w);break;case 178:c&&(c.virtualEdgeFlag=w);break;case 145:c&&(c.rotation=w*Math.PI/180);break;case 1:case 2:case 302:case 303:l.push(String(b.value));break;case 300:if(c){const S=c.attrText;Array.isArray(S)?S.push(String(b.value)):S!=null&&S!==""?c.attrText=[String(S),String(b.value)]:c.attrText=String(b.value)}break;case 301:c&&(c.cellValueBlockBegin=String(b.value));break;case 304:break;case 7:c&&(c.textStyle=String(b.value));break;case 140:c&&(c.textHeight=w);break;case 340:c&&(c.blockTableRecordId=String(b.value));break;case 344:case 345:c&&(c.fieldObjetId=String(b.value));break;case 144:case 146:c&&(c.blockScale=w);break;case 179:c&&(c.blockAttrNum=w);break;case 70:this.flowDirection=w;break;case 40:this.horizontalCellMargin=w;break;case 41:this.verticalCellMargin=w;break;case 281:this.suppressHeader=w!==0;break}}return f(),this.horizontalDirection=new A(h,u,d),s.forEach((b,_)=>this.setRowHeight(_,b)),o.forEach((b,_)=>this.setColumnWidth(_,b)),this}writeCellText(t,e,i,r){if(!i){if(e.length<=250){t.writeString(1,e);return}const a=Math.ceil(e.length/250);for(let c=0;c<a;c++){const l=c*250,h=l+250,u=e.slice(l,h);c===a-1?t.writeString(1,u):t.writeString(2,u)}return}if(t.writeString(301,r??"CELL_VALUE"),e.length<=250){t.writeString(302,e),t.writeString(304,"ACVALUE_END");return}const o=Math.ceil(e.length/250);for(let a=0;a<o;a++){const c=a*250,l=c+250,h=e.slice(c,l);a===o-1?t.writeString(302,h):t.writeString(303,h)}t.writeString(304,"ACVALUE_END")}};kl.typeName="Table";let Ts=kl;const En=new F,iu=new G,Il=class Il extends nt{constructor(){super(),this._snapBase=new x,this._snapSpacing=new x(1,1,0),this._gridSpacing=new x(1,1,0),this._perspectiveLensLength=50,this._frontClipZ=0,this._backClipZ=0,this._snapAngle=0,this._status=0,this._ucsPerViewport=0,this._circleZoomPercent=1e3,this._statusBitFlags=0,this._ucsOrigin=new x,this._ucsXAxis=new A(1,0,0),this._ucsYAxis=new A(0,1,0),this._elevation=0,this._frozenLayerIds=[],this._sheetName="",this._iconFlag=0,this._orthographicType=0,this._majorGridFrequency=0,this._ambientLightColorIndex=0,this._brightness=0,this._contrast=0,this._shadePlotMode=0,this._renderMode=0,this._defaultLightingType=0,this._isDefaultLighting=!1,this._clippingBoundaryId="",this._backgroundId="",this._shadePlotId="",this._ucsId="",this._ucsBaseId="",this._visualStyleId="",this._sunId="",this._ambientLightColorInstance=0,this._ambientLightColorName="",this._softPointers=[],this._centerPoint=new x,this._height=0,this._width=0,this._viewCenter=new x,this._viewTarget=new x,this._viewDirection=new A(0,0,1),this._viewTwistAngle=0,this._viewHeight=0,this._number=-1}get dxfTypeName(){return"VIEWPORT"}get number(){return this._number}set number(t){this._number=t}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get viewCenter(){return this._viewCenter}set viewCenter(t){this._viewCenter=t}get viewTarget(){return this._viewTarget}set viewTarget(t){this._viewTarget=t}get viewDirection(){return this._viewDirection}set viewDirection(t){this._viewDirection.copy(t)}get snapBase(){return this._snapBase}set snapBase(t){this._snapBase.copy(t)}get snapSpacing(){return this._snapSpacing}set snapSpacing(t){this._snapSpacing.copy(t)}get gridSpacing(){return this._gridSpacing}set gridSpacing(t){this._gridSpacing.copy(t)}get perspectiveLensLength(){return this._perspectiveLensLength}set perspectiveLensLength(t){this._perspectiveLensLength=t}get frontClipZ(){return this._frontClipZ}set frontClipZ(t){this._frontClipZ=t}get backClipZ(){return this._backClipZ}set backClipZ(t){this._backClipZ=t}get snapAngle(){return this._snapAngle}set snapAngle(t){this._snapAngle=t}get status(){return this._status}set status(t){this._status=t}get ucsPerViewport(){return this._ucsPerViewport}set ucsPerViewport(t){this._ucsPerViewport=t}get circleZoomPercent(){return this._circleZoomPercent}set circleZoomPercent(t){this._circleZoomPercent=t}get statusBitFlags(){return this._statusBitFlags}set statusBitFlags(t){this._statusBitFlags=t}get ucsOrigin(){return this._ucsOrigin}set ucsOrigin(t){this._ucsOrigin.copy(t)}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get frozenLayerIds(){return this._frozenLayerIds}set frozenLayerIds(t){this._frozenLayerIds=[...t]}get ucsXAxis(){return this._ucsXAxis}set ucsXAxis(t){this._ucsXAxis.copy(t)}get ucsYAxis(){return this._ucsYAxis}set ucsYAxis(t){this._ucsYAxis.copy(t)}get sheetName(){return this._sheetName}set sheetName(t){this._sheetName=t}get iconFlag(){return this._iconFlag}set iconFlag(t){this._iconFlag=t}get orthographicType(){return this._orthographicType}set orthographicType(t){this._orthographicType=t}get majorGridFrequency(){return this._majorGridFrequency}set majorGridFrequency(t){this._majorGridFrequency=t}get ambientLightColorIndex(){return this._ambientLightColorIndex}set ambientLightColorIndex(t){this._ambientLightColorIndex=t}get viewportBrightness(){return this._brightness}set viewportBrightness(t){this._brightness=t}get viewportContrast(){return this._contrast}set viewportContrast(t){this._contrast=t}get shadePlotMode(){return this._shadePlotMode}set shadePlotMode(t){this._shadePlotMode=t}get renderMode(){return this._renderMode}set renderMode(t){this._renderMode=t}get defaultLightingType(){return this._defaultLightingType}set defaultLightingType(t){this._defaultLightingType=t}get isDefaultLighting(){return this._isDefaultLighting}set isDefaultLighting(t){this._isDefaultLighting=t}get clippingBoundaryId(){return this._clippingBoundaryId}set clippingBoundaryId(t){this._clippingBoundaryId=t}get backgroundId(){return this._backgroundId}set backgroundId(t){this._backgroundId=t}get shadePlotId(){return this._shadePlotId}set shadePlotId(t){this._shadePlotId=t}get ucsId(){return this._ucsId}set ucsId(t){this._ucsId=t}get ucsBaseId(){return this._ucsBaseId}set ucsBaseId(t){this._ucsBaseId=t}get visualStyleId(){return this._visualStyleId}set visualStyleId(t){this._visualStyleId=t}get sunId(){return this._sunId}set sunId(t){this._sunId=t}get ambientLightColorInstance(){return this._ambientLightColorInstance}set ambientLightColorInstance(t){this._ambientLightColorInstance=t}get ambientLightColorName(){return this._ambientLightColorName}set ambientLightColorName(t){this._ambientLightColorName=t}get softPointers(){return this._softPointers}set softPointers(t){this._softPointers=[...t]}get viewTwistAngle(){return this._viewTwistAngle}set viewTwistAngle(t){this._viewTwistAngle=t}get viewHeight(){return this._viewHeight}set viewHeight(t){this._viewHeight=t}get geometricExtents(){const t=this._width/2,e=this._height/2,i=new j;return i.expandByPoint(new x(this._centerPoint.x-t,this._centerPoint.y-e,this._centerPoint.z)),i.expandByPoint(new x(this._centerPoint.x+t,this._centerPoint.y+e,this._centerPoint.z)),i}subGetIntersectCurves(){const t=this._width/2,e=this._height/2,i=this._centerPoint.z,r=[new x(this._centerPoint.x-t,this._centerPoint.y-e,i),new x(this._centerPoint.x+t,this._centerPoint.y-e,i),new x(this._centerPoint.x+t,this._centerPoint.y+e,i),new x(this._centerPoint.x-t,this._centerPoint.y+e,i)];return Wt(r,!0)}subGetGripPoints(){const t=new Array,e=this._width/2,i=this._height/2,r=this._centerPoint.z;return t.push(this._centerPoint),(e>0||i>0)&&t.push(new x(this._centerPoint.x-e,this._centerPoint.y-i,r),new x(this._centerPoint.x+e,this._centerPoint.y-i,r),new x(this._centerPoint.x+e,this._centerPoint.y+i,r),new x(this._centerPoint.x-e,this._centerPoint.y+i,r)),t}subMoveGripPointsAt(t,e){return Pt(t,i=>{this.moveGripAt(i,e)}),this}transformBy(t){const e=this._centerPoint.clone(),i=this._centerPoint.clone().add(new A(this._width,0,0)),r=this._centerPoint.clone().add(new A(0,this._height,0));e.applyMatrix4(t),i.applyMatrix4(t),r.applyMatrix4(t);const s=new A(i).sub(e),o=new A(r).sub(e),a=this._height!==0?o.length()/this._height:1;return this._centerPoint.copy(e),this._width=s.length(),this._height=o.length(),this._viewHeight*=a,this}subWorldDraw(t){if(this._number>1&&this.ownerId!=this.database.tables.blockTable.modelSpace.objectId){const e=this.toGiViewport();return t.group(this.createViewportRect(e,t))}}toGiViewport(){var r;const t=new Vd;t.id=this.objectId,t.groupId=this.ownerId,t.number=this.number,t.centerPoint=this.centerPoint,t.width=this.width,t.height=this.height,t.viewHeight=this.viewHeight,t.viewCenter=this.viewCenter,t.viewTarget=this.viewTarget,t.viewTwistAngle=this.viewTwistAngle,t.frozenLayerIds=this.frozenLayerIds;const e=[],i=(r=this.database)==null?void 0:r.tables.layerTable;if(i)for(const s of this.frozenLayerIds){const o=i.getIdAt(s);o&&e.push(o.name)}return t.frozenLayers=e,t}createViewportRect(t,e){const i=[];return i.push(e.lines([new x(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0),new x(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0)])),i.push(e.lines([new x(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0),new x(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0)])),i.push(e.lines([new x(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0),new x(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0)])),i.push(e.lines([new x(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0),new x(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0)])),i}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewport"),t.writePoint3d(10,this.centerPoint),t.writeDouble(40,this.width),t.writeDouble(41,this.height),t.writePoint3d(12,this.viewCenter),t.writePoint3d(13,this.snapBase),t.writePoint3d(14,this.snapSpacing),t.writePoint3d(15,this.gridSpacing),t.writeVector3d(16,this.viewDirection),t.writePoint3d(17,this.viewTarget),t.writeDouble(42,this.perspectiveLensLength),t.writeDouble(43,this.frontClipZ),t.writeDouble(44,this.backClipZ),t.writeDouble(45,this.viewHeight),t.writeAngle(50,this.snapAngle),t.writeAngle(51,this.viewTwistAngle),t.writeInt16(68,this.status),t.writeInt32(69,this.number),t.writeInt16(71,this.ucsPerViewport),t.writeInt16(72,this.circleZoomPercent),t.writeInt32(90,this.statusBitFlags);for(const e of this.frozenLayerIds)t.writeObjectId(331,e);t.writePoint3d(110,this.ucsOrigin),t.writeVector3d(111,this.ucsXAxis),t.writeVector3d(112,this.ucsYAxis),t.writeDouble(146,this.elevation),this.sheetName&&t.writeString(1,this.sheetName),t.writeInt16(61,this.majorGridFrequency),t.writeInt16(63,this.ambientLightColorIndex),t.writeInt16(74,this.iconFlag),t.writeInt16(79,this.orthographicType);for(const e of this.softPointers)t.writeObjectId(91,e);return t.writeDouble(141,this.viewportBrightness),t.writeDouble(142,this.viewportContrast),t.writeInt16(170,this.shadePlotMode),t.writeInt16(281,this.renderMode),t.writeInt16(282,this.defaultLightingType),t.writeInt16(292,this.isDefaultLighting?1:0),this.clippingBoundaryId&&t.writeObjectId(340,this.clippingBoundaryId),this.backgroundId&&t.writeObjectId(332,this.backgroundId),this.shadePlotId&&t.writeObjectId(333,this.shadePlotId),this.ucsId&&t.writeObjectId(345,this.ucsId),this.ucsBaseId&&t.writeObjectId(346,this.ucsBaseId),this.visualStyleId&&t.writeObjectId(348,this.visualStyleId),this.sunId&&t.writeObjectId(361,this.sunId),this.ambientLightColorInstance&&t.writeInt32(421,this.ambientLightColorInstance),this.ambientLightColorName&&t.writeString(431,this.ambientLightColorName),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbViewport");let e=this.centerPoint.x,i=this.centerPoint.y,r=this.centerPoint.z,s=this.viewCenter.x,o=this.viewCenter.y,a=this.viewCenter.z,c=this.viewTarget.x,l=this.viewTarget.y,h=this.viewTarget.z,u=this.viewDirection.x,d=this.viewDirection.y,g=this.viewDirection.z,f=this.snapBase.x,p=this.snapBase.y,m=this.snapBase.z,y=this.snapSpacing.x,b=this.snapSpacing.y,_=this.snapSpacing.z,w=this.gridSpacing.x,S=this.gridSpacing.y,P=this.gridSpacing.z,v=this.ucsOrigin.x,k=this.ucsOrigin.y,L=this.ucsOrigin.z,O=this.ucsXAxis.x,R=this.ucsXAxis.y,N=this.ucsXAxis.z,it=this.ucsYAxis.x,$=this.ucsYAxis.y,U=this.ucsYAxis.z;const J=[],E=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const W=t.readItem();if(!W)break;const st=Number(W.code),D=Number(W.value);switch(st){case 1:this.sheetName=String(W.value);break;case 10:e=D;break;case 20:i=D;break;case 30:r=D;break;case 12:s=D;break;case 22:o=D;break;case 32:a=D;break;case 13:f=D;break;case 23:p=D;break;case 33:m=D;break;case 14:y=D;break;case 24:b=D;break;case 34:_=D;break;case 15:w=D;break;case 25:S=D;break;case 35:P=D;break;case 16:u=D;break;case 26:d=D;break;case 36:g=D;break;case 17:c=D;break;case 27:l=D;break;case 37:h=D;break;case 40:this.width=D;break;case 41:this.height=D;break;case 42:this.perspectiveLensLength=D;break;case 43:this.frontClipZ=D;break;case 44:this.backClipZ=D;break;case 45:this.viewHeight=D;break;case 50:this.snapAngle=C.degToRad(D);break;case 51:this.viewTwistAngle=C.degToRad(D);break;case 61:this.majorGridFrequency=D;break;case 63:this.ambientLightColorIndex=D;break;case 68:this.status=D;break;case 69:this.number=D;break;case 71:this.ucsPerViewport=D;break;case 72:this.circleZoomPercent=D;break;case 74:this.iconFlag=D;break;case 79:this.orthographicType=D;break;case 90:this.statusBitFlags=D;break;case 91:case 335:case 343:case 344:E.push(String(W.value));break;case 110:v=D;break;case 120:k=D;break;case 130:L=D;break;case 111:O=D;break;case 121:R=D;break;case 131:N=D;break;case 112:it=D;break;case 122:$=D;break;case 132:U=D;break;case 141:this.viewportBrightness=D;break;case 142:this.viewportContrast=D;break;case 146:this.elevation=D;break;case 170:this.shadePlotMode=D;break;case 281:this.renderMode=D;break;case 282:this.defaultLightingType=D;break;case 292:this.isDefaultLighting=D!==0;break;case 331:J.push(String(W.value));break;case 332:this.backgroundId=String(W.value);break;case 333:this.shadePlotId=String(W.value);break;case 340:this.clippingBoundaryId=String(W.value);break;case 345:this.ucsId=String(W.value);break;case 346:this.ucsBaseId=String(W.value);break;case 348:this.visualStyleId=String(W.value);break;case 361:this.sunId=String(W.value);break;case 421:this.ambientLightColorInstance=D;break;case 431:this.ambientLightColorName=String(W.value);break}}return this.applyViewportDxfIn(e,i,r,s,o,a,c,l,h),this._viewDirection.copy({x:u,y:d,z:g}),this._snapBase.copy({x:f,y:p,z:m}),this._snapSpacing.copy({x:y,y:b,z:_}),this._gridSpacing.copy({x:w,y:S,z:P}),this._ucsOrigin.copy({x:v,y:k,z:L}),this._ucsXAxis.copy({x:O,y:R,z:N}),this._ucsYAxis.copy({x:it,y:$,z:U}),this.frozenLayerIds=J,this.softPointers=E,this}applyViewportDxfIn(t,e,i,r,s,o,a,c,l){this.centerPoint.copy({x:t,y:e,z:i}),this.viewCenter.copy({x:r,y:s,z:o}),this.viewTarget.copy({x:a,y:c,z:l});const h=1e-6,u=Math.abs(t)<h&&Math.abs(e)<h,d=Math.abs(a)<h&&Math.abs(c)<h,g=Number.isFinite(this.height)&&Number.isFinite(this.viewHeight)&&Math.abs(this.viewHeight-this.height)<h;u&&d&&g&&this.centerPoint.copy(this.viewCenter)}moveGripAt(t,e){switch(t){case 0:this._centerPoint.add(e);break;case 1:case 2:case 3:case 4:{const i=this.width/2,r=this.height/2,s=this._centerPoint.x,o=this._centerPoint.y,a={1:{x:s-i,y:o-r},2:{x:s+i,y:o-r},3:{x:s+i,y:o+r},4:{x:s-i,y:o+r}},c=t===1?3:t===2?4:t===3?1:2,l=a[t],h=a[c];l.x+=e.x,l.y+=e.y,this._centerPoint.x=(l.x+h.x)/2,this._centerPoint.y=(l.y+h.y)/2,this._centerPoint.z=(this._centerPoint.z??0)+(e.z??0),this.width=Math.abs(h.x-l.x),this.height=Math.abs(h.y-l.y);break}}}};Il.typeName="Viewport";let Ls=Il;const El=class El extends tr{get dxfTypeName(){return"WIPEOUT"}subWorldDraw(t){t.subEntityTraits.isBackgroundFill=!0;const e=this.boundaryPath(),i=new he;return i.add(new rt(e)),t.area(i)}dxfOutFields(t){return super.dxfOutFields(t),this}};El.typeName="Wipeout";let Ms=El;const no=class no extends Et{get dxfTypeName(){return"XLINE"}constructor(){super(),this._basePoint=new x,this._unitDir=new A}get basePoint(){return this._basePoint}set basePoint(t){this._basePoint.copy(t)}get unitDir(){return this._unitDir}set unitDir(t){this._unitDir.copy(t)}get closed(){return!1}get area(){return 0}get geometricExtents(){const t=new j;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}subGetIntersectCurves(){const t=this._basePoint.clone().add(this._unitDir);return[{kind:"line",line:new Ct(this._basePoint,t),extent:"unbounded"}]}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}subMoveGripPointsAt(t,e){return Ee(t,e,this.basePoint),this}subGetOsnapPoints(t,e,i,r){const s=this.basePoint;if(t===I.EndPoint){r.push(s);return}const o=this.unitDir.clone();if(o.lengthSq()===0)return;o.normalize();const a=new Ct(s,s.clone().add(o));switch(t){case I.Nearest:r.push(a.project(e));break;case I.Perpendicular:r.push(a.perpPoint(e));break}}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=[];return e.push(this._unitDir.clone().multiplyScalar(-1e6).add(this._basePoint)),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbXline"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbXline");let e=this.basePoint.x,i=this.basePoint.y,r=this.basePoint.z,s=this.unitDir.x,o=this.unitDir.y,a=this.unitDir.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:i=h;break;case 30:r=h;break;case 11:s=h;break;case 21:o=h;break;case 31:a=h;break}}return this.basePoint=new x(e,i,r),this.unitDir=new A(s,o,a),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.basePoint,i=this.unitDir,r=Math.hypot(i.x,i.y);return r<=1e-9||(i.x*(t.y-e.y)-i.y*(t.x-e.x))/r>=0?1:-1}createOffsetCurve(t){const e=ud(this.basePoint,this.unitDir,t);if(!e)return null;const i=new no;return i.basePoint=e,i.unitDir=this.unitDir.clone(),i}};no.typeName="Xline";let Cs=no;var hp=(n=>(n.ClosedFilled="",n.Dot="_DOT",n.DotSmall="_DOTSMALL",n.DotBlank="_DOTBLANK",n.Origin="_ORIGIN",n.Origin2="_ORIGIN2",n.Open="_OPEN",n.Open90="_OPEN90",n.Open30="_OPEN30",n.Closed="_CLOSED",n.Small="_SMALL",n.None="_NONE",n.Oblique="_OBLIQUE",n.BoxFilled="_BOXFILLED",n.Box="_BOXBLANK",n.ClosedBlank="_CLOSEDBLANK",n.DatumBlank="_DATUMBLANK",n.DatumFilled="_DATUMFILLED",n.Integral="_INTEGRAL",n.ArchTick="_ARCHTICK",n))(hp||{});const Tn=48,ru=8,ew=48,up=80,dp=32,ra=80,sa=24,Ga=40,nw=8,iw=4,su=64,rw=64,sw=new Set(["_version","_angbase","_angdir","_aunits","_auprec","_lunits","_luprec","_celtscale","_cecolor","_celtype","_celweight","_cetransparency","_clayer","_cmlstyle","_cmlscale","_cmleaderstyle","_hpbackgroundcolor","_hpcolor","_hplayer","_hptransparency","_textstyle","_dimstyle","_dimstyle","_dimstyle","_extents","_insunits","_unitmode","_measurement","_ltscale","_lwdisplay","_pdmode","_pdsize","_osmode","_orthomode","_maxHandle","_drawNoPlotLayers","_drawCircleSides","_dwgname","_currentSpace","_formatter","_eventBatchDepth","_pendingEntityAppended","_pendingEntityErased","_pendingDictObjectSet","_pendingDictObjectErased","_lastOpenError"]),gp=new Set(["constructor","prototype","__proto__","caller","callee","arguments"]);function ge(n,t){let e=n.get(t);return e||(e={bytes:0,count:0},n.set(t,e)),e}function Zt(n,t,e,i=0){if(e<=0&&i===0)return;const r=ge(n.byCategory,t);r.bytes+=e,r.count+=i}function ow(n){const t=Object.getPrototypeOf(n);return t===Object.prototype||t===null}function aw(n){return ArrayBuffer.isView(n)}function cw(n){return typeof n.addEventListener=="function"&&typeof n.dispatch=="function"&&"listeners"in n}function lw(n,t,e){return gp.has(t)?!0:!n.includeEventManagers&&(t==="events"||e==="events")?t==="events":!n.includeTransactionManager&&(t==="transactionManager"||e==="transaction")?t==="transactionManager":!1}function ou(n,t,e){return t==="_xDataMap"||t==="_importedXData"||n==="xdata"?"xdata":t==="_tables"||n==="tables"?e instanceof nt?"entities":"tables":t==="_entities"||n==="entities"?"entities":t==="_objects"||n==="objects"?"objects":t==="_handleRegistry"||n==="handleRegistry"?"handleRegistry":t==="transactionManager"||n==="transaction"?"transaction":t==="events"||n==="events"?"events":n==="sysvars"||sw.has(t)?"sysvars":e instanceof nt?"entities":n==="other"?"other":n}function hw(n){const t=new Set;let e=n;for(;e&&e!==Object.prototype;){for(const i of Object.getOwnPropertyNames(e)){if(gp.has(i))continue;const r=Object.getOwnPropertyDescriptor(e,i);r&&typeof r.value=="function"||r&&(r.get||r.set)&&r.value===void 0||t.add(i)}if(e=Object.getPrototypeOf(e),e===Object.prototype||e===null||e===Array.prototype||e===Map.prototype||e===Set.prototype)break}return[...t]}function fp(n){if(n==null)return 0;switch(typeof n){case"number":return nw;case"boolean":return iw;case"string":return Ga+n.length*2;case"bigint":return 16;case"symbol":return Ga+String(n.description??"").length*2;default:return 0}}function uw(n,t){if(n.visited.has(t))return 0;n.visited.add(t),n.objectCount+=1;let e=up+t.size*dp;for(const i of t.keys())e+=fp(i);return Zt(n,"handleRegistry",e,1),e}function On(n,t,e,i){if(t==null)return 0;const r=typeof t;if(r==="function")return 0;if(r!=="object"){const h=fp(t);if(Zt(n,e,h),i){const u=ge(n.byEntityType,i);u.bytes+=h}return h}const s=t;if(typeof s.nodeType=="number"||n.visited.has(s))return 0;if(n.visited.add(s),n.objectCount+=1,!n.includeEventManagers&&cw(s))return Zt(n,e,Tn,1),Tn;let o=i,a=e;if(s instanceof nt){a="entities",o=s.type,n.entityCount+=1;const h=ge(n.byEntityType,o);h.count+=1}if(typeof s.then=="function")return Zt(n,a,Tn,1),Tn;if(s instanceof ArrayBuffer){const h=su+s.byteLength;return Zt(n,a,h,1),o&&(ge(n.byEntityType,o).bytes+=h),h}if(aw(s)){const h=su+s.byteLength;return s.buffer&&!n.visited.has(s.buffer)&&n.visited.add(s.buffer),Zt(n,a,h,1),o&&(ge(n.byEntityType,o).bytes+=h),h}if(typeof Blob<"u"&&s instanceof Blob){const h=rw+s.size;return Zt(n,a,h,1),o&&(ge(n.byEntityType,o).bytes+=h),h}if(s instanceof Date){const h=Tn+8;return Zt(n,a,h,1),h}if(s instanceof Map){const h=a==="handleRegistry",u=up+s.size*dp;let d=u;Zt(n,a,u,1),o&&(ge(n.byEntityType,o).bytes+=u);for(const[g,f]of s)d+=On(n,g,a,o),h||(d+=On(n,f,a,o));return d}if(s instanceof Set){let h=ra+s.size*sa;for(const u of s)h+=On(n,u,a,o);return Zt(n,a,ra+s.size*sa,1),o&&(ge(n.byEntityType,o).bytes+=ra+s.size*sa),h}if(Array.isArray(s)){let h=ew+s.length*ru;Zt(n,a,h,1),o&&(ge(n.byEntityType,o).bytes+=h);for(let u=0;u<s.length;u++){const d=s[u],g=ou(a,String(u),d);h+=On(n,d,g,o)}return h}let c=Tn;const l=ow(s)?Object.getOwnPropertyNames(s):hw(s);for(const h of l)c+=ru,c+=Math.min(Ga+h.length*2,64);Zt(n,a,c,1),o&&(ge(n.byEntityType,o).bytes+=c);for(const h of l){if(lw(n,h,a)||h==="_database"||h==="database")continue;let u;try{u=s[h]}catch{continue}if(typeof u=="function")continue;if(h==="_handleRegistry"&&u instanceof Map){c+=uw(n,u);continue}const d=ou(a,h,u);!n.includeTransactionManager&&d==="transaction"||!n.includeEventManagers&&d==="events"||(c+=On(n,u,d,o))}return c}function dw(n,t){const e={visited:new WeakSet,objectCount:0,entityCount:0,byCategory:new Map,byEntityType:new Map,includeTransactionManager:(t==null?void 0:t.includeTransactionManager)===!0,includeEventManagers:(t==null?void 0:t.includeEventManagers)===!0};On(e,n,"sysvars",null);let i=0;const r={};for(const[o,a]of e.byCategory)r[o]={bytes:a.bytes,count:a.count},i+=a.bytes;const s={};for(const[o,a]of e.byEntityType)s[o]={bytes:a.bytes,count:a.count};return{totalBytes:i,objectCount:e.objectCount,entityCount:e.entityCount,byCategory:r,byEntityType:s}}function oa(n){return n<1024?`${n} B`:n<1024*1024?`${(n/1024).toFixed(2)} KiB`:`${(n/(1024*1024)).toFixed(2)} MiB`}function gw(n){const t=[`AcDbDatabase memory estimate: ${oa(n.totalBytes)} (${n.totalBytes} bytes)`,`Objects: ${n.objectCount}, Entities: ${n.entityCount}`,"By category:"],e=Object.entries(n.byCategory).sort((r,s)=>s[1].bytes-r[1].bytes);for(const[r,s]of e)t.push(` ${r}: ${oa(s.bytes)} (${s.bytes} bytes), count=${s.count}`);const i=Object.entries(n.byEntityType).sort((r,s)=>s[1].bytes-r[1].bytes);if(i.length>0){t.push("By entity type:");for(const[r,s]of i)t.push(` ${r}: ${oa(s.bytes)} (${s.bytes} bytes), count=${s.count}`)}return t.join(`
|
|
16
15
|
`)}function fw(n,t,e){const i=r=>r.toString(16).padStart(2,"0");return`#${i(n&255)}${i(t&255)}${i(e&255)}`}function Pe(n,t){const e=n.getUint8(t),i=n.getUint8(t+1),r=n.getUint8(t+2);return fw(e,i,r)}function Jt(n){const t=(n>>>24&255)/255,e=n>>>16&255,i=n>>>8&255,r=n&255;return`rgba(${e},${i},${r},${t.toFixed(3)})`}function pp(n,t,e){const i=Math.min(1,Math.max(0,e)),r=(u,d)=>Math.round(u+(d-u)*i),s=n>>>24&255,o=t>>>24&255,a=r(n>>>16&255,t>>>16&255),c=r(n>>>8&255,t>>>8&255),l=r(n&255,t&255),h=r(s,o)/255;return`rgba(${a},${c},${l},${h.toFixed(3)})`}function pw(n){const t=/^#([0-9a-f]{6})$/i.exec(n);if(t)return`#${(16777215^parseInt(t[1],16)).toString(16).padStart(6,"0")}`;const e=/^#([0-9a-f]{3})$/i.exec(n);if(e){const[r,s,o]=e[1].split("").map(c=>parseInt(c+c,16)),a=c=>(255-c).toString(16).padStart(2,"0");return`#${a(r)}${a(s)}${a(o)}`}const i=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+)\s*)?\)$/i.exec(n);if(i){const r=255-Math.min(255,parseInt(i[1],10)),s=255-Math.min(255,parseInt(i[2],10)),o=255-Math.min(255,parseInt(i[3],10));return i[4]!==void 0?`rgba(${r},${s},${o},${i[4]})`:`rgb(${r},${s},${o})`}return n}var mp=1,yp=2,bp=3,mw=4,Ha=5,_p=6,yw=7,bw=8,_w=9,xw=10,ww=11,vw=12,Aw=13,Pw=14,Sw=15,kw=17,Iw=18,Ew=19,Tw=20,Lw=21,Mw=1,Cw=2,Ow=3,Rw=4,Nw=5,Bw=6,Dw=7,Fw=8,Xw=9,Yw=10,zw=11,Vw=12,jw=14,Uw=15,Gw=16,Wa=8192,xp=2e5,wp=5e5,au=22,Hw=24,Ww=25,$w=26,qw=27,Kw=28,Zw=29,Qw=30,Jw=31,tv=32,ev=33,nv=34,iv=35,rv=36,sv=37,ov=38,av=39,cv=40,lv=42,hv=43,uv=44,dv=45,$a=46,Vr=47,gv=54,vp=55,fv=58,pv=59,mv=60,yv=61,bv=62,_v=63,xv=64,wv=67,vv=70,Av=75,Pv=76,Sv=81,kv=82,Iv=84,Ap=85,Pp=86,Ev=87,qa=88,Sp=89,Tv=91,Lv=95,Mv=98,Cv=115,cu=2147483648,Ov=726027589,Rv=1128875079,Nv=16385,Bv=16386,Dv=16388,Fv=16392,Xv=16394,Yv=16395,zv=16396,Vv=16397,jv=16398,Uv=16399,aa=16400,Gv=16401,Hv=16402,Wv=16404,$v=16405,qv=16410,Kv=16411,Zv=16412,Qv=16414,Jv=16415,t2=16417,e2=16418,n2=16420,i2=16421,r2=16422,s2=16424,o2=16425,a2=16426,c2=16427,l2=16428,h2=16429,u2=16430,d2=16431,g2=16432,f2=16433,p2=16434,m2=16435,y2=16436,b2=16438,_2=16437,x2=1,w2=2,v2=3,A2=4,P2=5,S2=6,k2=7,I2=8,E2=0,T2=1,L2=3,M2=4,C2=0,O2=513,R2=258,N2=260,B2=262,D2=521,F2=302,X2=523,Y2=524,z2=532,V2=531,j2=1051,U2=1564,G2=1048,H2=2071,Cr=2074,ca=2096,W2=804,$2=805,q2=301,K2=496,Z2=762,Q2=764,J2=763,tA=1313,eA=2610,nA=30,iA=295,rA=1336,z=(...n)=>{},ke=(...n)=>{},Qc=1;function kp(n,t,e,i,r=Qc,s=Wa){const o=Math.max(1,Math.min(r,4));let a=Math.round(n*o),c=Math.round(t*o),l=o,h=o;if(e&&a>e){const f=e/a;a=e,c=Math.round(c*f),l*=f,h*=f}if(i&&c>i){const f=i/c;a=Math.round(a*f),c=i,l*=f,h*=f}const u=Math.max(1,Math.floor(s)),d=Math.max(1,Math.min(a,u)),g=Math.max(1,Math.min(c,u));a=d,c=g;try{if(typeof OffscreenCanvas<"u"){z(`createCanvas: using OffscreenCanvas ${a}×${c}, scale=(${l.toFixed(3)},${h.toFixed(3)})`);const m=new OffscreenCanvas(a,c),y=m.getContext("2d");return y?{canvas:m,ctx:y,scaleX:l,scaleY:h}:(ke('createCanvas: OffscreenCanvas.getContext("2d") returned null'),null)}if(typeof document>"u")return ke("createCanvas: no OffscreenCanvas and no document — cannot create canvas"),null;z(`createCanvas: using HTMLCanvasElement ${a}×${c}, scale=(${l.toFixed(3)},${h.toFixed(3)})`);const f=document.createElement("canvas");f.width=a,f.height=c;const p=f.getContext("2d");return p?{canvas:f,ctx:p,scaleX:l,scaleY:h}:(ke('createCanvas: HTMLCanvasElement.getContext("2d") returned null'),null)}catch{return null}}function Ip(n,t){if(n<=0||t<=0)return null;if(n=Math.max(1,Math.min(Math.floor(n),Wa)),t=Math.max(1,Math.min(Math.floor(t),Wa)),typeof OffscreenCanvas<"u"){const e=new OffscreenCanvas(n,t),i=e.getContext("2d");return i?{canvas:e,ctx:i}:null}if(typeof document<"u"){const e=document.createElement("canvas");e.width=n,e.height=t;const i=e.getContext("2d");return i?{canvas:e,ctx:i}:null}return null}function Ep(n){switch(n){case Mw:return{gco:"source-over",colorTransform:"black",exact:!0};case Gw:return{gco:"source-over",colorTransform:"white",exact:!0};case zw:return{gco:"source-over",colorTransform:"skip",exact:!0};case Rw:return{gco:"source-over",colorTransform:"invert",exact:!0};case Bw:return{gco:"difference",colorTransform:"white",exact:!0};case Dw:case Nw:return{gco:"difference",colorTransform:"none",exact:!1};case Yw:return{gco:"difference",colorTransform:"invert",exact:!1};case Xw:return{gco:"darken",colorTransform:"none",exact:!1};case Ow:case Cw:return{gco:"darken",colorTransform:"invert",exact:!1};case Uw:case jw:return{gco:"lighten",colorTransform:"none",exact:!1};case Vw:case Fw:return{gco:"lighten",colorTransform:"invert",exact:!1};default:return{gco:"source-over",colorTransform:"none",exact:!0}}}function Tp(n,t){switch(t){case"invert":return pw(n);case"black":return"#000000";case"white":return"#ffffff";case"skip":return"rgba(0,0,0,0)";default:return n}}function _t(n,t){const e=Ep(t.rop2);if(n.globalCompositeOperation=e.gco,t.penStyle===5){n.strokeStyle="rgba(0,0,0,0)",n.lineWidth=0;return}switch(n.strokeStyle=Tp(t.penColor,e.colorTransform),n.lineWidth=Math.max(t.penWidth,1),t.penStyle){case 1:n.setLineDash([8,4]);break;case 2:n.setLineDash([2,2]);break;case 3:n.setLineDash([8,4,2,4]);break;case 4:n.setLineDash([8,4,2,4,2,4]);break;default:n.setLineDash([]);break}}function Mt(n,t){const e=Ep(t.rop2);if(n.globalCompositeOperation=e.gco,t.brushStyle===1){n.fillStyle="rgba(0,0,0,0)";return}n.fillStyle=Tp(t.brushColor,e.colorTransform)}function sA(n){if(!n||n===400)return"";const t=Math.round(n/100)*100;return t===700?"bold":t>=100&&t<=900?String(t):n>=700?"bold":""}function Ka(n,t){const e=(t==null?void 0:t[n.toLowerCase().trim()])??n;return/[\s,]/.test(e)&&!/^["']/.test(e)?`"${e}"`:e}function Jc(n,t=1){return Math.max(Math.abs(n.fontHeight)*Math.abs(t||1),8)}function Za(n,t,e=1){const i=t.fontItalic?"italic ":"",r=sA(t.fontWeight),s=r?`${r} `:"",o=Jc(t,e),a=Ka(t.fontFamily,t.fontFamilyMap);n.font=`${i}${s}${o}px ${a}`}function oA(n,t,e,i,r,s=1){if(!t.fontUnderline&&!t.fontStrikeOut)return;const o=Jc(t,s),a=Math.max(1,Math.round(o/14)),c=n.fillStyle;n.fillStyle=t.textColor,t.fontUnderline&&n.fillRect(e,i+Math.round(o*.12),r,a),t.fontStrikeOut&&n.fillRect(e,i-Math.round(o*.3),r,a),n.fillStyle=c}function ir(n,t,e){if(e<=0)return"";const i=n.byteLength-t;if(i<=0)return"";const r=Math.min(e,Math.floor(i/2));if(r<=0)return"";let s;try{const a=new Uint8Array(n.buffer,n.byteOffset+t,r*2);s=new TextDecoder("utf-16le").decode(a)}catch{const a=[];for(let c=0;c<r;c++){const l=n.getUint16(t+c*2,!0);if(l===0)return a.join("");a.push(String.fromCharCode(l))}return a.join("")}const o=s.indexOf("\0");return o===-1?s:s.slice(0,o)}function aA(n){switch(n){case 0:return{kind:"brush",style:0,color:"#ffffff"};case 1:return{kind:"brush",style:0,color:"#c0c0c0"};case 2:return{kind:"brush",style:0,color:"#808080"};case 3:return{kind:"brush",style:0,color:"#404040"};case 4:return{kind:"brush",style:0,color:"#000000"};case 5:return{kind:"brush",style:1,color:"#000000"};case 6:return{kind:"pen",style:0,widthX:1,color:"#ffffff"};case 7:return{kind:"pen",style:0,widthX:1,color:"#000000"};case 8:return{kind:"pen",style:5,widthX:0,color:"#000000"};case 10:case 11:return{kind:"font",height:12,weight:400,italic:!1,underline:!1,strikeOut:!1,family:"monospace"};case 12:case 13:case 14:case 17:return{kind:"font",height:12,weight:400,italic:!1,underline:!1,strikeOut:!1,family:"sans-serif"};default:return null}}async function cA(n){return new Promise((t,e)=>{const i=new FileReader;i.onload=()=>t(i.result),i.onerror=()=>e(i.error),i.readAsDataURL(n)})}async function Lp(n){if(typeof OffscreenCanvas<"u"&&n instanceof OffscreenCanvas){z(`exportCanvasToPngDataUrl: using OffscreenCanvas.convertToBlob (${n.width}×${n.height})`);const t=await n.convertToBlob({type:"image/png"});return z(`exportCanvasToPngDataUrl: blob size=${t.size} bytes, type=${t.type}`),cA(t)}return typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement?(z(`exportCanvasToPngDataUrl: using HTMLCanvasElement.toDataURL (${n.width}×${n.height})`),n.toDataURL("image/png")):null}function lA(n){if(z("parseEmfHeader: byteLength =",n.byteLength),n.byteLength<88||n.getUint32(0,!0)!==mp)return null;const e=n.getInt32(8,!0),i=n.getInt32(12,!0),r=n.getInt32(16,!0),s=n.getInt32(20,!0),o=n.getInt32(24,!0),a=n.getInt32(28,!0),c=n.getInt32(32,!0),l=n.getInt32(36,!0),h=c-o,u=l-a;return{bounds:{left:e,top:i,right:r,bottom:s},frameW:h,frameH:u}}function hA(n){const t=n.bounds.right-n.bounds.left,e=n.bounds.bottom-n.bounds.top;return t>0&&e>0?n.bounds:n.frameW>0&&n.frameH>0?(z(`getRenderableEmfBounds: bounds invalid (${t}×${e}), falling back to frame ${n.frameW}×${n.frameH}`),{left:0,top:0,right:n.frameW,bottom:n.frameH}):null}function uA(n){if(n.byteLength<22)return null;const t=n.getUint32(0,!0);let e=0,i=0,r=0,s=800,o=600,a=96;if(t===2596720087&&(i=n.getInt16(6,!0),r=n.getInt16(8,!0),s=n.getInt16(10,!0),o=n.getInt16(12,!0),a=n.getUint16(14,!0)||96,e=22),e+18>n.byteLength)return null;const c=n.getUint16(e,!0);if(c!==1&&c!==2)return null;const l=n.getUint16(e+2,!0)*2,h=n.getUint32(e+8,!0)*2;return{headerSize:e+l,maxRecordSize:h,boundsLeft:i,boundsTop:r,boundsRight:s,boundsBottom:o,unitsPerInch:a}}function tt(n,t){const e=n.state.worldTransform,i=e[0]*t+e[4];return n.useMappingMode?(i-n.windowOrg.x)/(n.windowExt.cx||1)*(n.viewportExt.cx||1)+n.viewportOrg.x:(i-n.bounds.left)*n.sx}function et(n,t){const e=n.state.worldTransform,i=e[3]*t+e[5];return n.useMappingMode?(i-n.windowOrg.y)/(n.windowExt.cy||1)*(n.viewportExt.cy||1)+n.viewportOrg.y:(i-n.bounds.top)*n.sy}function ie(n,t){const e=n.state.worldTransform[0]*t;return n.useMappingMode?e/(n.windowExt.cx||1)*(n.viewportExt.cx||1):e*n.sx}function Ht(n,t){const e=n.state.worldTransform[3]*t;return n.useMappingMode?e/(n.windowExt.cy||1)*(n.viewportExt.cy||1):e*n.sy}function hn(n){n.useMappingMode=!0}function dA(n,t,e){const{ctx:i,view:r}=n;if(e>=20){const s=r.getInt32(t,!0),o=r.getInt32(t+4,!0),a=Pe(r,t+8);i.fillStyle=a,i.fillRect(tt(n,s),et(n,o),1,1)}return!0}function gA(n,t,e){const{ctx:i,view:r,state:s,inPath:o}=n;return e>=16&&(s.curX=r.getInt32(t,!0),s.curY=r.getInt32(t+4,!0),o&&i.moveTo(tt(n,s.curX),et(n,s.curY))),!0}function fA(n,t,e){const{ctx:i,view:r,state:s,inPath:o}=n;if(e>=16){const a=r.getInt32(t,!0),c=r.getInt32(t+4,!0);o?i.lineTo(tt(n,a),et(n,c)):(_t(i,s),i.beginPath(),i.moveTo(tt(n,s.curX),et(n,s.curY)),i.lineTo(tt(n,a),et(n,c)),i.stroke()),s.curX=a,s.curY=c}return!0}function pA(n,t,e){const{ctx:i,view:r,state:s,inPath:o}=n;if(e>=24){const a=r.getInt32(t,!0),c=r.getInt32(t+4,!0),l=r.getInt32(t+8,!0),h=r.getInt32(t+12,!0);o?i.rect(tt(n,a),et(n,c),ie(n,l-a),Ht(n,h-c)):(Mt(i,s),i.fillRect(tt(n,a),et(n,c),ie(n,l-a),Ht(n,h-c)),_t(i,s),i.strokeRect(tt(n,a),et(n,c),ie(n,l-a),Ht(n,h-c)))}return!0}function mA(n,t,e){const{ctx:i,view:r,state:s,inPath:o}=n;if(e>=32){const a=r.getInt32(t,!0),c=r.getInt32(t+4,!0),l=r.getInt32(t+8,!0),h=r.getInt32(t+12,!0),u=Math.abs(ie(n,r.getInt32(t+16,!0)))/2,d=Math.abs(Ht(n,r.getInt32(t+20,!0)))/2,g=tt(n,a),f=et(n,c),p=ie(n,l-a),m=Ht(n,h-c),y=()=>{const b=Math.min(u,d,p/2,m/2);i.moveTo(g+b,f),i.lineTo(g+p-b,f),i.arcTo(g+p,f,g+p,f+b,b),i.lineTo(g+p,f+m-b),i.arcTo(g+p,f+m,g+p-b,f+m,b),i.lineTo(g+b,f+m),i.arcTo(g,f+m,g,f+m-b,b),i.lineTo(g,f+b),i.arcTo(g,f,g+b,f,b),i.closePath()};o?y():(i.beginPath(),y(),Mt(i,s),i.fill(),_t(i,s),i.stroke())}return!0}function yA(n,t,e){const{ctx:i,view:r,state:s,inPath:o}=n;if(e>=24){const a=r.getInt32(t,!0),c=r.getInt32(t+4,!0),l=r.getInt32(t+8,!0),h=r.getInt32(t+12,!0),u=tt(n,(a+l)/2),d=et(n,(c+h)/2),g=Math.abs(ie(n,l-a))/2,f=Math.abs(Ht(n,h-c))/2;o?i.ellipse(u,d,g,f,0,0,Math.PI*2):(i.beginPath(),i.ellipse(u,d,g,f,0,0,Math.PI*2),Mt(i,s),i.fill(),_t(i,s),i.stroke())}return!0}function bA(n,t,e,i){const{ctx:r,view:s,state:o,inPath:a}=n;if(i>=40){const c=s.getInt32(e,!0),l=s.getInt32(e+4,!0),h=s.getInt32(e+8,!0),u=s.getInt32(e+12,!0),d=s.getInt32(e+16,!0),g=s.getInt32(e+20,!0),f=s.getInt32(e+24,!0),p=s.getInt32(e+28,!0),m=(c+h)/2,y=(l+u)/2,b=Math.abs(h-c)/2,_=Math.abs(u-l)/2,w=Math.atan2((g-y)/(_||1),(d-m)/(b||1)),S=Math.atan2((p-y)/(_||1),(f-m)/(b||1)),P=tt(n,m),v=et(n,y),k=Math.abs(ie(n,b)),L=Math.abs(Ht(n,_)),O=t===vp,R=t===Vr||t===$a;a||r.beginPath(),t===Vr&&r.moveTo(P,v),O&&r.lineTo(P+k*Math.cos(w),v+L*Math.sin(w)),r.ellipse(P,v,k,L,0,w,S,!1),(t===Vr||t===$a)&&r.closePath(),a||(R&&(Mt(r,o),r.fill()),_t(r,o),r.stroke()),O&&(o.curX=f,o.curY=p)}return!0}function _A(n,t,e,i){switch(t){case Sw:return dA(n,e,i);case qw:return gA(n,e,i);case gv:return fA(n,e,i);case hv:return pA(n,e,i);case uv:return mA(n,e,i);case lv:return yA(n,e,i);case dv:case vp:case $a:case Vr:return bA(n,t,e,i);default:return!1}}var Or=1<<24;function xA(n,t,e,i){return{cmds:[{op:"rect",x:n,y:t,w:e,h:i}],fillRule:"nonzero",simple:!0}}function wA(n){return{cmds:n.map(t=>({op:"rect",x:t.x,y:t.y,w:t.w,h:t.h})),fillRule:"nonzero",simple:!0}}function $n(){return{cmds:[{op:"rect",x:0,y:0,w:0,h:0}],fillRule:"nonzero",simple:!0}}function vA(n,t,e){return{...n,cmds:n.cmds.map(i=>{switch(i.op){case"rect":return{...i,x:i.x+t,y:i.y+e};case"moveTo":case"lineTo":return{...i,x:i.x+t,y:i.y+e};case"bezierCurveTo":return{...i,cp1x:i.cp1x+t,cp1y:i.cp1y+e,cp2x:i.cp2x+t,cp2y:i.cp2y+e,x:i.x+t,y:i.y+e};case"closePath":return i}})}}function Mp(n,t,e){return n?n.map(i=>vA(i,t,e)):null}function We(n){return n.simple&&n.fillRule==="nonzero"}function Rr(n){return{cmds:[{op:"rect",x:-Or,y:-Or,w:2*Or,h:2*Or},...n.cmds],fillRule:"evenodd",simple:!1}}function Ni(n,t,e){switch(e){case"replace":return{region:[t],exact:!0};case"intersect":return{region:n?[...n,t]:[t],exact:!0};case"exclude":{if(!We(t))return{region:n?[...n,t]:[t],exact:!1};const i=Rr(t);return{region:n?[...n,i]:[i],exact:!0}}case"union":return n?n.length===1&&We(n[0])&&We(t)?{region:[{cmds:[...n[0].cmds,...t.cmds],fillRule:"nonzero",simple:!1}],exact:!1}:{region:n,exact:!1}:{region:null,exact:!0};case"xor":return n?n.length===1&&We(n[0])&&We(t)?{region:[{cmds:[...n[0].cmds,...t.cmds],fillRule:"evenodd",simple:!1}],exact:!0}:We(t)?{region:[...n,Rr(t)],exact:!1}:{region:[...n,t],exact:!1}:We(t)?{region:[Rr(t)],exact:!0}:{region:[t],exact:!1};case"complement":return n?n.length===1&&We(n[0])?{region:[t,Rr(n[0])],exact:!0}:{region:[t],exact:!1}:{region:[$n()],exact:!0}}}function Cp(n,t,e){if(e==="replace")return{region:t,exact:!0};if(t&&t.length===1)return Ni(n,t[0],e);if(!t)switch(e){case"intersect":return{region:n,exact:!0};case"union":return{region:null,exact:!0};case"exclude":return{region:[$n()],exact:!0};case"xor":case"complement":return n?n.length===1?Ni(null,n[0],"exclude"):{region:n,exact:!1}:{region:[$n()],exact:!0}}switch(e){case"intersect":return{region:n?[...n,...t]:t,exact:!0};case"union":return{region:n,exact:!1};case"xor":return{region:n??t,exact:!1};case"exclude":return{region:n,exact:!1};case"complement":return n?n.length===1?Ni(t,n[0],"exclude"):{region:t,exact:!1}:{region:[$n()],exact:!0}}}function AA(n,t){for(const e of t)switch(e.op){case"rect":n.rect(e.x,e.y,e.w,e.h);break;case"moveTo":n.moveTo(e.x,e.y);break;case"lineTo":n.lineTo(e.x,e.y);break;case"bezierCurveTo":n.bezierCurveTo(e.cp1x,e.cp1y,e.cp2x,e.cp2y,e.x,e.y);break;case"closePath":n.closePath();break}}function Qa(n,t){for(const e of t){n.beginPath(),AA(n,e.cmds);try{n.clip(e.fillRule)}catch{}}}function li(n,t,e=!1){const{ctx:i}=n;for(;n.clipSaveDepth>0;)i.restore(),n.clipSaveDepth--;t&&(i.save(),n.clipSaveDepth=1,e&&i.setTransform(1,0,0,1,0,0),Qa(i,t))}function PA(n,t,e,i,r,s,o,a,c,l){let h=0,u=r-1,d=t;const g=t+e;for(;d+1<g&&u>=0;){const f=n.getUint8(d),p=n.getUint8(d+1);if(d+=2,f===0)if(p===0)h=0,u--;else{if(p===1)break;if(p===2){if(d+1>=g)break;h+=n.getUint8(d),u-=n.getUint8(d+1),d+=2}else{const m=p;if(o){const y=Math.ceil(m/2);let b=0;for(let _=0;_<y&&d<g;_++){const w=n.getUint8(d++);for(let S=0;S<2&&b<m;S++){const P=S===0?w>>4&15:w&15;P<a.length&&h<i&&l(h,r-1-u,a[P][0],a[P][1],a[P][2],255),h++,b++}}y&1&&d++}else{for(let y=0;y<m&&d<g&&h<i;y++){const b=n.getUint8(d++);b<a.length&&l(h,r-1-u,a[b][0],a[b][1],a[b][2],255),h++}m&1&&d++}}}else if(o){const m=p>>4&15,y=p&15;for(let b=0;b<f&&h<i;b++){const _=(b&1)===0?m:y;_<a.length&&l(h,r-1-u,a[_][0],a[_][1],a[_][2],255),h++}}else{const m=p,y=m<a.length?a[m]:[0,0,0];for(let b=0;b<f&&h<i;b++)l(h,r-1-u,y[0],y[1],y[2],255),h++}}return new ImageData(new Uint8ClampedArray(c.buffer,c.byteOffset,c.byteLength),i,r)}function la(n){if(n===0)return 0;let t=0,e=n;for(;(e&1)===0;)e>>>=1,t++;return t}var SA=3;function kA(n,t,e,i,r){let s=0,o=0,a=0,c=0,l=0,h=0,u=1,d=1,g=1;if(i===SA){const f=t+e;if(f+12>n.byteLength)return null;s=n.getUint32(f,!0),o=n.getUint32(f+4,!0),a=n.getUint32(f+8,!0),c=la(s),l=la(o),h=la(a),u=s>>>c||1,d=o>>>l||1,g=a>>>h||1}else r===16&&(s=31744,o=992,a=31,c=10,l=5,h=0,u=31,d=31,g=31);return{rMask:s,gMask:o,bMask:a,rShift:c,gShift:l,bShift:h,rMax:u,gMax:d,bMax:g}}function IA(n,t,e,i,r,s,o,a,c){const l=Math.floor((s*e+31)/32)*4,{rMask:h,gMask:u,bMask:d,rShift:g,gShift:f,bShift:p,rMax:m,gMax:y,bMax:b}=a;for(let _=0;_<i;_++){const w=r?_:i-1-_,S=t+w*l;if(!(S+l>n.byteLength))for(let P=0;P<e;P++){const v=(_*e+P)*4;if(s===1){const k=S+(P>>3),L=n.getUint8(k)>>7-(P&7)&1;L<o.length&&(c[v]=o[L][0],c[v+1]=o[L][1],c[v+2]=o[L][2]),c[v+3]=255}else if(s===4){const k=S+(P>>1),L=(P&1)===0?n.getUint8(k)>>4&15:n.getUint8(k)&15;L<o.length&&(c[v]=o[L][0],c[v+1]=o[L][1],c[v+2]=o[L][2]),c[v+3]=255}else if(s===8){const k=n.getUint8(S+P);k<o.length&&(c[v]=o[k][0],c[v+1]=o[k][1],c[v+2]=o[k][2]),c[v+3]=255}else if(s===16){const k=n.getUint16(S+P*2,!0);c[v]=Math.round(((k&h)>>>g)*255/m),c[v+1]=Math.round(((k&u)>>>f)*255/y),c[v+2]=Math.round(((k&d)>>>p)*255/b),c[v+3]=255}else if(s===24){const k=S+P*3;c[v]=n.getUint8(k+2),c[v+1]=n.getUint8(k+1),c[v+2]=n.getUint8(k),c[v+3]=255}else{const k=S+P*4,L=n.getUint8(k),O=n.getUint8(k+1),R=n.getUint8(k+2),N=n.getUint8(k+3);c[v]=R,c[v+1]=O,c[v+2]=L,c[v+3]=N===0?255:N}}}}function Op(n,t,e,i){if(t<0||e<0||t+40>n.byteLength||e+i>n.byteLength)return null;const r=n.getUint32(t,!0);if(r<40||t+r>n.byteLength)return null;const s=n.getInt32(t+4,!0),o=n.getInt32(t+8,!0),a=n.getUint16(t+12,!0),c=n.getUint16(t+14,!0),l=n.getUint32(t+16,!0);if(a!==1||s<=0||o===0||s>8192||Math.abs(o)>8192)return null;const h=0,u=1,d=2,g=3;if(c!==1&&c!==4&&c!==8&&c!==16&&c!==24&&c!==32||l===u&&c!==8||l===d&&c!==4||l===g&&c!==16&&c!==32||l!==h&&l!==u&&l!==d&&l!==g)return null;const f=Math.abs(o),p=o<0,m=[];if(c<=8){const _=1<<c,w=n.getUint32(t+32,!0)||_,S=Math.min(w,_),P=t+r;if(P+S*4>n.byteLength)return null;for(let v=0;v<S;v++){const k=n.getUint8(P+v*4),L=n.getUint8(P+v*4+1),O=n.getUint8(P+v*4+2);m.push([O,L,k])}}const y=kA(n,t,r,l,c);if(!y)return null;const b=new Uint8ClampedArray(s*f*4);return l===u||l===d?PA(n,e,i,s,f,p,l===d,m,b,(w,S,P,v,k,L)=>{const O=(S*s+w)*4;b[O]=P,b[O+1]=v,b[O+2]=k,b[O+3]=L}):(IA(n,e,s,f,p,c,m,y,b),new ImageData(b,s,f))}function EA(n,t,e,i){const{ctx:r,view:s,state:o}=n;if(i>=76){const a=s.getInt32(e+28,!0),c=s.getInt32(e+32,!0),l=s.getUint32(e+36,!0),h=s.getUint32(e+40,!0),u=s.byteLength;if(l>0&&h>0&&t+h+l*2<=u){const d=ir(s,t+h,l);if(d.length>0){const g=Math.abs(Ht(n,1));Za(r,o,g),r.fillStyle=o.textColor;const f=o.textAlign&24,p=f===24?"alphabetic":f===8?"bottom":"top";let m="left";if(o.textAlign&6&&(m="center"),o.textAlign&2&&(m="right"),r.textBaseline=p,r.textAlign=m,o.bkMode===2){const y=r.measureText(d),b=Jc(o,g);r.fillStyle=o.bkColor,r.fillRect(tt(n,a),et(n,c)-b,y.width,b),r.fillStyle=o.textColor}if(r.fillText(d,tt(n,a),et(n,c)),o.fontUnderline||o.fontStrikeOut){const y=r.measureText(d).width,b=tt(n,a),_=m==="center"?b-y/2:m==="right"?b-y:b;oA(r,o,_,et(n,c),y,g)}}}}return!0}var TA=15728673,LA=1;function MA(n,t,e,i){const{ctx:r,view:s,state:o}=n;if(i>=96){const a=s.getInt32(e+16,!0),c=s.getInt32(e+20,!0),l=s.getInt32(e+24,!0),h=s.getInt32(e+28,!0),u=s.getUint32(e+32,!0),d=s.getUint32(e+76,!0),g=s.getUint32(e+80,!0),f=s.getUint32(e+84,!0),p=s.getUint32(e+88,!0);if(d===0&&u===TA){const m=r.fillStyle;return o.brushStyle!==LA&&(r.fillStyle=o.brushColor,r.fillRect(tt(n,a),et(n,c),ie(n,l),Ht(n,h))),r.fillStyle=m,!0}if(d>0&&g>0&&f>0&&p>0){const m=Op(s,t+d,t+f,p);if(m){const y=Ip(m.width,m.height);y&&(y.ctx.putImageData(m,0,0),r.drawImage(y.canvas,tt(n,a),et(n,c),ie(n,l),Ht(n,h)))}}}return!0}function CA(n,t,e,i){const{ctx:r,view:s}=n;if(i>=80){const o=s.getInt32(e+16,!0),a=s.getInt32(e+20,!0),c=s.getInt32(e+64,!0),l=s.getInt32(e+68,!0),h=s.getUint32(e+40,!0),u=s.getUint32(e+44,!0),d=s.getUint32(e+48,!0),g=s.getUint32(e+52,!0);if(h>0&&u>0&&d>0&&g>0){const f=Op(s,t+h,t+d,g);if(f){const p=Ip(f.width,f.height);p&&(p.ctx.putImageData(f,0,0),r.drawImage(p.canvas,tt(n,o),et(n,a),ie(n,c),Ht(n,l)))}}}return!0}function tl(n,t,e){const{ctx:i}=n;if(n.clipUntracked&&e!=="replace")switch(e){case"intersect":case"complement":{i.save(),n.clipSaveDepth++,Qa(i,[t]);return}case"exclude":case"xor":{const s=Ni(null,t,"exclude");i.save(),n.clipSaveDepth++,Qa(i,s.region??[t]);return}case"union":return}const r=Ni(e==="replace"?null:n.clipRegion??null,t,e);r.exact,n.clipRegion=r.region,n.clipUntracked=!1,li(n,r.region)}function Rp(n,t){const{view:e}=n,i=e.getInt32(t,!0),r=e.getInt32(t+4,!0),s=e.getInt32(t+8,!0),o=e.getInt32(t+12,!0);return xA(tt(n,i),et(n,r),ie(n,s-i),Ht(n,o-r))}function OA(n,t,e){return e>=24&&tl(n,Rp(n,t),"intersect"),!0}function RA(n,t,e){return e>=24&&tl(n,Rp(n,t),"exclude"),!0}var NA={1:"intersect",2:"union",3:"xor",4:"exclude",5:"replace"};function BA(n,t,e){const{view:i}=n;if(e<16)return!0;const r=i.getUint32(t,!0),s=i.getUint32(t+4,!0),o=NA[s];if(!o)return!0;if(r===0)return o==="replace"&&(n.clipRegion=null,n.clipUntracked=!1,li(n,null)),!0;const a=t+8;if(r<32)return!0;const c=i.getUint32(a+8,!0);if(c===0)return!0;const l=[],h=a+32;for(let u=0;u<c;u++){const d=h+u*16;if(d+16>t+8+r)break;const g=i.getInt32(d,!0),f=i.getInt32(d+4,!0),p=i.getInt32(d+8,!0),m=i.getInt32(d+12,!0);l.push({x:(g-n.bounds.left)*n.sx,y:(f-n.bounds.top)*n.sy,w:(p-g)*n.sx,h:(m-f)*n.sy})}return l.length===0||tl(n,wA(l),o),!0}function DA(n,t,e){if(e>=16){const i=n.view.getInt32(t,!0),r=n.view.getInt32(t+4,!0);if(n.clipUntracked)return!0;n.clipRegion&&(n.clipRegion=Mp(n.clipRegion,ie(n,i),Ht(n,r)),li(n,n.clipRegion))}return!0}function FA(n,t,e,i,r){switch(t){case Iv:return EA(n,e,i,r);case Pv:return MA(n,e,i,r);case Sv:return CA(n,e,i,r);case Qw:return OA(n,i,r);case Av:return BA(n,i,r);case Zw:return RA(n,i,r);case $w:return DA(n,i,r);default:return!1}}function XA(n,t,e,i,r){return _A(n,t,i,r)||FA(n,t,e,i,r)}function YA(n,t,e,i){const{ctx:r,view:s,state:o,inPath:a}=n,c=s.getUint32(e+16,!0),l=s.getUint32(e+20,!0);if(c===0||c>=1e4||l>=1e5)return;const h=e+24,u=h+c*4;if(u+l*8>t+i)return;a||r.beginPath();let d=0;for(let g=0;g<c;g++){const f=s.getUint32(h+g*4,!0);for(let p=0;p<f&&d<l;p++){const m=s.getInt32(u+d*8,!0),y=s.getInt32(u+d*8+4,!0);p===0?r.moveTo(tt(n,m),et(n,y)):r.lineTo(tt(n,m),et(n,y)),d++}r.closePath()}a||(Mt(r,o),r.fill(o.polyFillMode===2?"nonzero":"evenodd"),_t(r,o),r.stroke())}function zA(n,t,e,i){const{ctx:r,view:s,state:o,inPath:a}=n,c=s.getUint32(e+16,!0),l=s.getUint32(e+20,!0);if(c===0||c>=1e4||l>=1e5)return;const h=e+24,u=h+c*4;if(u+l*8>t+i)return;a||r.beginPath();let d=0;for(let g=0;g<c;g++){const f=s.getUint32(h+g*4,!0);for(let p=0;p<f&&d<l;p++){const m=s.getInt32(u+d*8,!0),y=s.getInt32(u+d*8+4,!0);p===0?r.moveTo(tt(n,m),et(n,y)):r.lineTo(tt(n,m),et(n,y)),d++}}a||(_t(r,o),r.stroke())}function VA(n,t,e,i){const{ctx:r,view:s,state:o,inPath:a}=n,c=s.getUint32(e+16,!0),l=s.getUint32(e+20,!0);if(c===0||c>=1e4||l>=1e5)return;const h=e+24,u=h+c*4;if(u+l*4>t+i)return;a||r.beginPath();let d=0;for(let g=0;g<c;g++){const f=s.getUint32(h+g*4,!0);for(let p=0;p<f&&d<l;p++){const m=s.getInt16(u+d*4,!0),y=s.getInt16(u+d*4+2,!0);p===0?r.moveTo(tt(n,m),et(n,y)):r.lineTo(tt(n,m),et(n,y)),d++}r.closePath()}a||(Mt(r,o),r.fill(o.polyFillMode===2?"nonzero":"evenodd"),_t(r,o),r.stroke())}function jA(n,t,e,i,r){const{ctx:s,view:o,state:a,inPath:c}=n;if(r<28)return!0;const l=o.getUint32(i+16,!0),h=i+20;if(l===0||h+l*8>e+r)return!0;const u=t===bp,d=t===yp||t===Ha,g=t===Ha||t===_p;c||s.beginPath(),g||s.moveTo(tt(n,o.getInt32(h,!0)),et(n,o.getInt32(h+4,!0)));let f=g?0:1;if(d)for(;f+2<l;)s.bezierCurveTo(tt(n,o.getInt32(h+f*8,!0)),et(n,o.getInt32(h+f*8+4,!0)),tt(n,o.getInt32(h+(f+1)*8,!0)),et(n,o.getInt32(h+(f+1)*8+4,!0)),tt(n,o.getInt32(h+(f+2)*8,!0)),et(n,o.getInt32(h+(f+2)*8+4,!0))),f+=3;else for(;f<l;f++)s.lineTo(tt(n,o.getInt32(h+f*8,!0)),et(n,o.getInt32(h+f*8+4,!0)));if(u&&s.closePath(),c||(u&&(Mt(s,a),s.fill(a.polyFillMode===2?"nonzero":"evenodd")),_t(s,a),s.stroke()),l>0){const p=l-1;a.curX=o.getInt32(h+p*8,!0),a.curY=o.getInt32(h+p*8+4,!0)}return!0}function UA(n,t,e,i,r){const{ctx:s,view:o,state:a,inPath:c}=n;if(r<28)return!0;const l=o.getUint32(i+16,!0),h=i+20;if(l===0||h+l*4>e+r)return!0;const u=t===Pp,d=t===Ap||t===qa,g=t===qa||t===Sp;c||s.beginPath(),g||s.moveTo(tt(n,o.getInt16(h,!0)),et(n,o.getInt16(h+2,!0)));let f=g?0:1;if(d)for(;f+2<l;)s.bezierCurveTo(tt(n,o.getInt16(h+f*4,!0)),et(n,o.getInt16(h+f*4+2,!0)),tt(n,o.getInt16(h+(f+1)*4,!0)),et(n,o.getInt16(h+(f+1)*4+2,!0)),tt(n,o.getInt16(h+(f+2)*4,!0)),et(n,o.getInt16(h+(f+2)*4+2,!0))),f+=3;else for(;f<l;f++)s.lineTo(tt(n,o.getInt16(h+f*4,!0)),et(n,o.getInt16(h+f*4+2,!0)));if(u&&s.closePath(),c||(u&&(Mt(s,a),s.fill(a.polyFillMode===2?"nonzero":"evenodd")),_t(s,a),s.stroke()),l>0){const p=l-1;a.curX=o.getInt16(h+p*4,!0),a.curY=o.getInt16(h+p*4+2,!0)}return!0}function GA(n,t,e,i,r){const{ctx:s,state:o}=n;switch(t){case mw:case bp:case yp:case Ha:case _p:return jA(n,t,e,i,r);case Ev:case Pp:case Ap:case qa:case Sp:return UA(n,t,e,i,r);case yw:return r>=28&&zA(n,e,i,r),!0;case bw:return r>=28&&YA(n,e,i,r),!0;case Tv:return r>=28&&VA(n,e,i,r),!0;case pv:return n.inPath=!0,s.beginPath(),!0;case mv:return n.inPath=!1,!0;case yv:return s.closePath(),!0;case bv:return Mt(s,o),s.fill(o.polyFillMode===2?"nonzero":"evenodd"),!0;case _v:return Mt(s,o),s.fill(o.polyFillMode===2?"nonzero":"evenodd"),_t(s,o),s.stroke(),!0;case xv:return _t(s,o),s.stroke(),!0;case wv:{const a=r>=12?n.view.getUint32(i,!0):5;try{if(a===5)for(;n.clipSaveDepth>0;)s.restore(),n.clipSaveDepth--;s.save(),n.clipSaveDepth++,s.clip(o.polyFillMode===2?"nonzero":"evenodd"),n.clipRegion=null,n.clipUntracked=!0}catch{}return!0}default:return!1}}function HA(n,t,e,i){const{view:r,state:s}=n;switch(t){case ov:{if(i>=28){const o=r.getUint32(e,!0),a=r.getUint32(e+4,!0),c=r.getInt32(e+8,!0),l=Pe(r,e+16);n.objectTable.set(o,{kind:"pen",style:a&255,widthX:c,color:l})}return!0}case Lv:{if(i>=52){const o=r.getUint32(e,!0),a=r.getUint32(e+12,!0),c=r.getInt32(e+16,!0),l=Pe(r,e+24);n.objectTable.set(o,{kind:"pen",style:a&255,widthX:c,color:l})}return!0}case av:{if(i>=24){const o=r.getUint32(e,!0),a=r.getUint32(e+4,!0),c=Pe(r,e+8);n.objectTable.set(o,{kind:"brush",style:a,color:c})}return!0}case kv:{if(i>=332){const o=r.getUint32(e,!0),a=r.getInt32(e+4,!0),c=r.getInt32(e+20,!0),l=r.getUint8(e+24),h=r.getUint8(e+25),u=r.getUint8(e+26),d=ir(r,e+32,32)||"sans-serif";n.objectTable.set(o,{kind:"font",height:Math.abs(a),weight:c,italic:l!==0,underline:h!==0,strikeOut:u!==0,family:d})}return!0}case sv:{if(i>=12){const o=r.getUint32(e,!0),a=o>=cu?aA(o-cu):n.objectTable.get(o)??null;if(a)switch(a.kind){case"pen":s.penStyle=a.style,s.penWidth=a.widthX,s.penColor=a.color;break;case"brush":s.brushStyle=a.style,s.brushColor=a.color;break;case"font":s.fontHeight=a.height,s.fontWeight=a.weight,s.fontItalic=a.italic,s.fontUnderline=a.underline,s.fontStrikeOut=a.strikeOut,s.fontFamily=a.family;break}}return!0}case cv:return i>=12&&n.objectTable.delete(r.getUint32(e,!0)),!0;default:return!1}}function WA(n,t,e,i){const{view:r}=n;switch(t){case _w:return i>=16&&(n.windowExt.cx=r.getInt32(e,!0),n.windowExt.cy=r.getInt32(e+4,!0),hn(n)),!0;case xw:return i>=16&&(n.windowOrg.x=r.getInt32(e,!0),n.windowOrg.y=r.getInt32(e+4,!0),hn(n)),!0;case ww:return i>=16&&(n.viewportExt.cx=r.getInt32(e,!0),n.viewportExt.cy=r.getInt32(e+4,!0),hn(n)),!0;case vw:return i>=16&&(n.viewportOrg.x=r.getInt32(e,!0),n.viewportOrg.y=r.getInt32(e+4,!0),hn(n)),!0;case kw:{if(i>=12){const s=r.getUint32(e,!0);(s===8||s===7)&&hn(n)}return!0}case Jw:{if(i>=24){const s=r.getInt32(e,!0),o=r.getInt32(e+4,!0),a=r.getInt32(e+8,!0),c=r.getInt32(e+12,!0);o!==0&&(n.viewportExt.cx=Math.round(n.viewportExt.cx*s/o)),c!==0&&(n.viewportExt.cy=Math.round(n.viewportExt.cy*a/c)),hn(n)}return!0}case tv:{if(i>=24){const s=r.getInt32(e,!0),o=r.getInt32(e+4,!0),a=r.getInt32(e+8,!0),c=r.getInt32(e+12,!0);o!==0&&(n.windowExt.cx=Math.round(n.windowExt.cx*s/o)),c!==0&&(n.windowExt.cy=Math.round(n.windowExt.cy*a/c)),hn(n)}return!0}default:return!1}}function $A(n,t,e,i){const{view:r,state:s}=n;switch(t){case iv:return i>=32&&(s.worldTransform=[r.getFloat32(e,!0),r.getFloat32(e+4,!0),r.getFloat32(e+8,!0),r.getFloat32(e+12,!0),r.getFloat32(e+16,!0),r.getFloat32(e+20,!0)]),!0;case rv:{if(i>=36){const o=r.getUint32(e+24,!0);if(o===1)s.worldTransform=[1,0,0,1,0,0];else if(o===2||o===3){const a=[r.getFloat32(e,!0),r.getFloat32(e+4,!0),r.getFloat32(e+8,!0),r.getFloat32(e+12,!0),r.getFloat32(e+16,!0),r.getFloat32(e+20,!0)],[c,l,h,u,d,g]=s.worldTransform;o===2?s.worldTransform=[a[0]*c+a[1]*h,a[0]*l+a[1]*u,a[2]*c+a[3]*h,a[2]*l+a[3]*u,a[4]*c+a[5]*h+d,a[4]*l+a[5]*u+g]:s.worldTransform=[c*a[0]+l*a[2],c*a[1]+l*a[3],h*a[0]+u*a[2],h*a[1]+u*a[3],d*a[0]+g*a[2]+a[4],d*a[1]+g*a[3]+a[5]]}}return!0}default:return!1}}function qA(n,t,e,i){return WA(n,t,e,i)||$A(n,t,e,i)}function Np(){return{penColor:"#000000",penWidth:1,penStyle:0,brushColor:"#ffffff",brushStyle:0,textColor:"#000000",bkColor:"#ffffff",bkMode:1,fontHeight:12,fontWeight:400,fontItalic:!1,fontFamily:"sans-serif",fontUnderline:!1,fontStrikeOut:!1,rop2:13,curX:0,curY:0,polyFillMode:1,textAlign:0,worldTransform:[1,0,0,1,0,0]}}function Bp(n){return{...n,worldTransform:[...n.worldTransform]}}function Dp(){return{objectTable:new Map,worldTransform:[1,0,0,1,0,0],saveStack:[],saveIdMap:new Map,clipRegion:null,clipSaveDepth:0}}function KA(n,t,e,i,r){var c,l;if(qA(n,t,i,r)||HA(n,t,i,r))return!0;const{ctx:s,view:o,state:a}=n;switch(t){case ev:{for(;n.clipSaveDepth>0;)s.restore(),n.clipSaveDepth--;return n.clipStack??(n.clipStack=[]),n.clipStack.push({region:n.clipRegion??null,untracked:n.clipUntracked??!1}),n.stateStack.push(Bp(a)),s.save(),n.clipUntracked?(n.clipUntracked=!1,n.clipRegion=null):n.clipRegion&&li(n,n.clipRegion),!0}case nv:{if(r>=12){for(;n.clipSaveDepth>0;)s.restore(),n.clipSaveDepth--;let h=o.getInt32(i,!0);for(h<0&&(h=n.stateStack.length+h+1);n.stateStack.length>h&&n.stateStack.length>0;)n.stateStack.pop(),(c=n.clipStack)==null||c.pop(),s.restore();const u=n.stateStack.pop();if(u){const d=(l=n.clipStack)==null?void 0:l.pop();Object.assign(a,u),s.restore(),n.clipRegion=(d==null?void 0:d.region)??null,n.clipUntracked=!1,n.clipRegion&&li(n,n.clipRegion)}}return!0}case Hw:return r>=12&&(a.textColor=Pe(o,i)),!0;case Ww:return r>=12&&(a.bkColor=Pe(o,i)),!0;case Iw:return r>=12&&(a.bkMode=o.getUint32(i,!0)),!0;case Ew:return r>=12&&(a.polyFillMode=o.getUint32(i,!0)),!0;case Tw:return r>=12&&(a.rop2=o.getUint32(i,!0)),!0;case Lw:case fv:case au:return t===au&&r>=12&&(a.textAlign=o.getUint32(i,!0)),!0;default:return!1}}function lu(n,t,e){return e?{x:n.getInt16(t,!0),y:n.getInt16(t+2,!0),w:n.getInt16(t+4,!0),h:n.getInt16(t+6,!0)}:{x:n.getFloat32(t,!0),y:n.getFloat32(t+4,!0),w:n.getFloat32(t+8,!0),h:n.getFloat32(t+12,!0)}}function hu(n,t,e){return e?{x:n.getInt16(t,!0),y:n.getInt16(t+2,!0)}:{x:n.getFloat32(t,!0),y:n.getFloat32(t+4,!0)}}function el(n,t,e){if(e<12)return null;n.getUint32(t,!0);const i=n.getUint32(t+4,!0),r=n.getUint32(t+8,!0);if(i===0||i>1e5)return null;const s=(r&16384)!==0;if(12+(i*(s?4:8)+i)>e)return null;const h=[];let u=t+12;for(let f=0;f<i;f++)s?(h.push({x:n.getInt16(u,!0),y:n.getInt16(u+2,!0)}),u+=4):(h.push({x:n.getFloat32(u,!0),y:n.getFloat32(u+4,!0)}),u+=8);const d=u+3&-4,g=new Uint8Array(n.buffer,n.byteOffset+d,i);return{kind:"plus-path",points:h,types:new Uint8Array(g)}}function Fp(n,t){const e=(c,l)=>t[0]*c+t[2]*l+t[4],i=(c,l)=>t[1]*c+t[3]*l+t[5],r=[],s=n.points,o=n.types;let a=0;for(;a<s.length;){const c=o[a]&15,l=(o[a]&128)!==0;if(c===0)r.push({op:"moveTo",x:e(s[a].x,s[a].y),y:i(s[a].x,s[a].y)}),a++;else if(c===3){if(a+2<s.length){r.push({op:"bezierCurveTo",cp1x:e(s[a].x,s[a].y),cp1y:i(s[a].x,s[a].y),cp2x:e(s[a+1].x,s[a+1].y),cp2y:i(s[a+1].x,s[a+1].y),x:e(s[a+2].x,s[a+2].y),y:i(s[a+2].x,s[a+2].y)}),(o[a+2]&128)!==0&&r.push({op:"closePath"}),a+=3;continue}break}else r.push({op:"lineTo",x:e(s[a].x,s[a].y),y:i(s[a].x,s[a].y)}),a++;l&&r.push({op:"closePath"})}return r}function uu(n,t){n.beginPath();const e=t.points,i=t.types;let r=0;for(;r<e.length;){const s=i[r]&15,o=(i[r]&128)!==0;if(s===0)n.moveTo(e[r].x,e[r].y),r++;else if(s===1)n.lineTo(e[r].x,e[r].y),r++;else if(s===3)if(r+2<e.length){n.bezierCurveTo(e[r].x,e[r].y,e[r+1].x,e[r+1].y,e[r+2].x,e[r+2].y),(i[r+2]&128)!==0&&n.closePath(),r+=3;continue}else break;else n.lineTo(e[r].x,e[r].y),r++;o&&n.closePath()}}function $e(n,t){return[n[0]*t[0]+n[1]*t[2],n[0]*t[1]+n[1]*t[3],n[2]*t[0]+n[3]*t[2],n[2]*t[1]+n[3]*t[3],n[4]*t[0]+n[5]*t[2]+t[4],n[4]*t[1]+n[5]*t[3]+t[5]]}function ZA(n,t){const e=n.ctx;try{let i=null;if(t.type==="linear"&&typeof e.createLinearGradient=="function"){if(t.x1===t.x2&&t.y1===t.y2)return null;i=e.createLinearGradient(t.x1,t.y1,t.x2,t.y2)}else if(t.type==="radial"&&typeof e.createRadialGradient=="function"){if(!(t.r>0))return null;i=e.createRadialGradient(t.cx,t.cy,0,t.cx,t.cy,t.r)}if(!i)return null;for(const r of t.stops)i.addColorStop(r.offset,r.color);return i}catch{return null}}function fn(n,t,e){if(t&32768)return Jt(e);const i=n.objectTable.get(e&255);if(i&&i.kind==="plus-brush"){if(i.gradient){const r=ZA(n,i.gradient);if(r)return r}return i.color}return"rgba(0,0,0,1)"}function Os(n,t){let i;switch(n){case 3:i=96/72;break;case 4:i=96;break;case 5:i=96/300;break;case 6:i=96/25.4;break;default:i=1;break}return i*t}function ce(n){const t=n.worldTransform,e=Os(n.pageUnit,n.pageScale),i=n.dpiScale;n.ctx.setTransform(t[0]*e*i,t[1]*e*i,t[2]*e*i,t[3]*e*i,t[4]*e*i,t[5]*e*i)}function du(n,t){n.saveStack.push({transform:[...n.worldTransform]}),n.saveIdMap.set(t,n.saveStack.length-1)}function gu(n,t){const e=n.saveIdMap.get(t);if(e!==void 0&&e<n.saveStack.length){n.worldTransform=[...n.saveStack[e].transform],n.saveStack.length=e;const i=new Map;for(const[r,s]of n.saveIdMap)s<e&&i.set(r,s);n.saveIdMap=i}}function Nr(n){const t=n.worldTransform,e=Os(n.pageUnit,n.pageScale)*n.dpiScale;return[t[0]*e,t[1]*e,t[2]*e,t[3]*e,t[4]*e,t[5]*e]}function Xp(n,t,e,i,r){const s=(c,l)=>r[0]*c+r[2]*l+r[4],o=(c,l)=>r[1]*c+r[3]*l+r[5];return{cmds:[{op:"moveTo",x:s(n,t),y:o(n,t)},{op:"lineTo",x:s(n+e,t),y:o(n+e,t)},{op:"lineTo",x:s(n+e,t+i),y:o(n+e,t+i)},{op:"lineTo",x:s(n,t+i),y:o(n,t+i)},{op:"closePath"}],fillRule:"nonzero",simple:!0}}function QA(n,t){return{cmds:Fp(n.path,t),fillRule:"nonzero",simple:!0}}var JA={0:"intersect",1:"intersect",2:"union",3:"xor",4:"exclude",5:"complement"},tP=64;function Ja(n,t,e=0){if(e>tP)return{region:[$n()],exact:!1};switch(n.type){case"rect":return{region:[Xp(n.x,n.y,n.width,n.height,t)],exact:!0};case"path":return{region:[QA(n,t)],exact:!0};case"infinite":return{region:null,exact:!0};case"empty":return{region:[$n()],exact:!0};case"combine":{const i=Ja(n.left,t,e+1),r=Ja(n.right,t,e+1),s=JA[n.combineMode]??"intersect",o=Cp(i.region,r.region,s);return{region:o.region,exact:o.exact&&i.exact&&r.exact}}}}var eP={0:"replace",1:"intersect",2:"union",3:"xor",4:"exclude",5:"complement"};function tc(n){li(n,n.clipRegion??null,!0)}function Yp(n,t,e,i){const r=eP[e],s=Cp(n.clipRegion??null,t,r??"intersect");s.exact,n.clipRegion=s.region,tc(n)}function fu(n,t,e,i){Yp(n,[t],e)}function nP(n,t,e,i,r){const{view:s}=n;switch(t){case a2:return r>=24&&(n.worldTransform=[s.getFloat32(i,!0),s.getFloat32(i+4,!0),s.getFloat32(i+8,!0),s.getFloat32(i+12,!0),s.getFloat32(i+16,!0),s.getFloat32(i+20,!0)]),!0;case c2:return n.worldTransform=[1,0,0,1,0,0],!0;case l2:{if(r>=24){const o=[s.getFloat32(i,!0),s.getFloat32(i+4,!0),s.getFloat32(i+8,!0),s.getFloat32(i+12,!0),s.getFloat32(i+16,!0),s.getFloat32(i+20,!0)];e&8192?n.worldTransform=$e(n.worldTransform,o):n.worldTransform=$e(o,n.worldTransform)}return!0}case h2:{if(r>=8){const o=s.getFloat32(i,!0),a=s.getFloat32(i+4,!0),c=[1,0,0,1,o,a];e&8192?n.worldTransform=$e(n.worldTransform,c):n.worldTransform=$e(c,n.worldTransform)}return!0}case u2:{if(r>=8){const o=s.getFloat32(i,!0),a=s.getFloat32(i+4,!0),c=[o,0,0,a,0,0];e&8192?n.worldTransform=$e(n.worldTransform,c):n.worldTransform=$e(c,n.worldTransform)}return!0}case d2:{if(r>=4){const o=s.getFloat32(i,!0)*Math.PI/180,a=Math.cos(o),c=Math.sin(o),l=[a,c,-c,a,0,0];e&8192?n.worldTransform=$e(n.worldTransform,l):n.worldTransform=$e(l,n.worldTransform)}return!0}case i2:return r>=4&&du(n,s.getUint32(i,!0)),!0;case r2:return r>=4&&gu(n,s.getUint32(i,!0)),!0;case p2:{if(r>=16){const o=e>>8&15,a=s.getFloat32(i,!0),c=s.getFloat32(i+4,!0),l=s.getFloat32(i+8,!0),h=s.getFloat32(i+12,!0),u=Xp(a,c,l,h,Nr(n));fu(n,u,o)}return!0}case f2:return n.clipRegion=null,tc(n),!0;case y2:{const o=e&255,a=e>>8&15,c=n.objectTable.get(o);if(c&&c.kind==="plus-region"&&c.nodes.length>0){const l=Ja(c.nodes[0],Nr(n));l.exact,Yp(n,l.region,a)}return!0}case m2:{const o=e&255,a=e>>8&15,c=n.objectTable.get(o);if(c&&c.kind==="plus-path"){const l={cmds:Fp(c,Nr(n)),fillRule:"nonzero",simple:!0};fu(n,l,a)}return!0}case _2:{if(r>=8){const o=s.getFloat32(i,!0),a=s.getFloat32(i+4,!0);if(n.clipRegion){const c=Nr(n),l=c[0]*o+c[2]*a,h=c[1]*o+c[3]*a;n.clipRegion=Mp(n.clipRegion,l,h),tc(n)}}return!0}case s2:return r>=4&&du(n,s.getUint32(i,!0)),!0;case o2:return r>=4&&gu(n,s.getUint32(i,!0)),!0;case g2:{const o=e&255,a=r>=4?s.getFloat32(i,!0):1;return n.pageUnit=o,n.pageScale=a,!0}case Qv:case Jv:case t2:case e2:case n2:return!0;default:return!1}}function Br(n,t){n.strokeStyle=t.color,n.lineWidth=t.width;const e=t.width||1;switch(t.dashStyle){case 1:n.setLineDash([e*3,Number(e)]);break;case 2:n.setLineDash([Number(e),Number(e)]);break;case 3:n.setLineDash([e*3,Number(e),Number(e),Number(e)]);break;case 4:n.setLineDash([e*3,Number(e),Number(e),Number(e),Number(e),Number(e)]);break;default:n.setLineDash([]);break}}function iP(n,t,e,i,r){const{ctx:s,view:o,objectTable:a}=n;switch(t){case Xv:{if(r>=8){const c=o.getUint32(i,!0),l=o.getUint32(i+4,!0),h=(e&16384)!==0,u=h?8:16;s.fillStyle=fn(n,e,c),ce(n);let d=i+8;for(let g=0;g<l&&d+u<=i+r;g++){const{x:f,y:p,w:m,h:y}=lu(o,d,h);s.fillRect(f,p,m,y),d+=u}}return!0}case Yv:{if(r>=4){const c=e&255,l=a.get(c),h=o.getUint32(i,!0),u=(e&16384)!==0,d=u?8:16;l&&l.kind==="plus-pen"&&Br(s,l),ce(n);let g=i+4;for(let f=0;f<h&&g+d<=i+r;f++){const{x:p,y:m,w:y,h:b}=lu(o,g,u);s.strokeRect(p,m,y,b),g+=d}}return!0}case jv:{if(r>=12){const c=o.getUint32(i,!0),l=(e&16384)!==0;let h,u,d,g;if(l)h=o.getInt16(i+4,!0),u=o.getInt16(i+6,!0),d=o.getInt16(i+8,!0),g=o.getInt16(i+10,!0);else{if(r<20)return!0;h=o.getFloat32(i+4,!0),u=o.getFloat32(i+8,!0),d=o.getFloat32(i+12,!0),g=o.getFloat32(i+16,!0)}s.fillStyle=fn(n,e,c),ce(n),s.beginPath(),s.ellipse(h+d/2,u+g/2,Math.abs(d)/2,Math.abs(g)/2,0,0,Math.PI*2),s.fill()}return!0}case Uv:{const c=e&255,l=a.get(c),h=(e&16384)!==0;let u,d,g,f;if(h&&r>=8)u=o.getInt16(i,!0),d=o.getInt16(i+2,!0),g=o.getInt16(i+4,!0),f=o.getInt16(i+6,!0);else if(!h&&r>=16)u=o.getFloat32(i,!0),d=o.getFloat32(i+4,!0),g=o.getFloat32(i+8,!0),f=o.getFloat32(i+12,!0);else return!0;return l&&l.kind==="plus-pen"&&Br(s,l),ce(n),s.beginPath(),s.ellipse(u+g/2,d+f/2,Math.abs(g)/2,Math.abs(f)/2,0,0,Math.PI*2),s.stroke(),!0}case aa:case Gv:case Hv:{const c=t===aa;if(r<(c?12:8))return!0;let h=i;if(c){const P=o.getUint32(h,!0);s.fillStyle=fn(n,e,P),h+=4}const u=o.getFloat32(h,!0)*Math.PI/180,d=o.getFloat32(h+4,!0)*Math.PI/180;h+=8;const g=(e&16384)!==0;let f,p,m,y;if(g&&h+8<=i+r)f=o.getInt16(h,!0),p=o.getInt16(h+2,!0),m=o.getInt16(h+4,!0),y=o.getInt16(h+6,!0);else if(!g&&h+16<=i+r)f=o.getFloat32(h,!0),p=o.getFloat32(h+4,!0),m=o.getFloat32(h+8,!0),y=o.getFloat32(h+12,!0);else return!0;if(t!==aa){const P=e&255,v=a.get(P);v&&v.kind==="plus-pen"&&Br(s,v)}ce(n),s.beginPath();const b=f+m/2,_=p+y/2,w=Math.abs(m)/2,S=Math.abs(y)/2;return c&&s.moveTo(b,_),s.ellipse(b,_,w,S,0,u,u+d,d<0),c?(s.closePath(),s.fill()):s.stroke(),!0}case Vv:{if(r>=4){const c=e&255,l=a.get(c),h=o.getUint32(i,!0),u=(e&16384)!==0,d=u?4:8;l&&l.kind==="plus-pen"&&Br(s,l),ce(n),s.beginPath();let g=i+4;for(let f=0;f<h&&g+d<=i+r;f++){const p=hu(o,g,u);f===0?s.moveTo(p.x,p.y):s.lineTo(p.x,p.y),g+=d}e&8192&&s.closePath(),s.stroke()}return!0}case zv:{if(r>=8){const c=o.getUint32(i,!0),l=o.getUint32(i+4,!0),h=(e&16384)!==0,u=h?4:8;s.fillStyle=fn(n,e,c),ce(n),s.beginPath();let d=i+8;for(let g=0;g<l&&d+u<=i+r;g++){const f=hu(o,d,h);g===0?s.moveTo(f.x,f.y):s.lineTo(f.x,f.y),d+=u}s.closePath(),s.fill()}return!0}default:return!1}}var rP=1,zp=2,Vp=4,jp=8,Rs=4096;function Up(n){return n>>>12===900097}function Gp(n,t){return[n.getFloat32(t,!0),n.getFloat32(t+4,!0),n.getFloat32(t+8,!0),n.getFloat32(t+12,!0),n.getFloat32(t+16,!0),n.getFloat32(t+20,!0)]}function Ns(n,t,e){return{x:n[0]*t+n[2]*e+n[4],y:n[1]*t+n[3]*e+n[5]}}function sP(n){return Number.isFinite(n)?Math.min(1,Math.max(0,n)):0}function Hp(n){return n.map(t=>({offset:sP(t.offset),color:t.color})).sort((t,e)=>t.offset-e.offset)}function Wp(n,t,e){if(t+4>e)return null;const i=n.getUint32(t,!0);if(i===0||i>Rs)return null;const r=t+4,s=r+i*4,o=s+i*4;if(o>e)return null;const a=[];for(let c=0;c<i;c++)a.push({offset:n.getFloat32(r+c*4,!0),color:Jt(n.getUint32(s+c*4,!0))});return{stops:a,next:o}}function $p(n,t,e){if(t+4>e)return null;const i=n.getUint32(t,!0);if(i===0||i>Rs)return null;const r=t+4,s=r+i*4,o=s+i*4;if(o>e)return null;const a=[];for(let c=0;c<i;c++)a.push({pos:n.getFloat32(r+c*4,!0),factor:n.getFloat32(s+c*4,!0)});return{entries:a,next:o}}function oP(n,t,e){if(t+40>e)return null;const i=n.getUint32(t,!0),r=n.getFloat32(t+8,!0),s=n.getFloat32(t+12,!0),o=n.getFloat32(t+16,!0),a=n.getFloat32(t+20,!0),c=n.getUint32(t+24,!0),l=n.getUint32(t+28,!0);let h=t+40,u=null;i&zp&&h+24<=e&&(u=Gp(n,h),h+=24);let d=[{offset:0,color:Jt(c)},{offset:1,color:Jt(l)}];if(i&Vp){const p=Wp(n,h,e);p&&(d=p.stops)}else if(i&jp){const p=$p(n,h,e);p&&(d=p.entries.map(m=>({offset:m.pos,color:pp(c,l,m.factor)})))}let g={x:r,y:s+a/2},f={x:r+o,y:s+a/2};return u&&(g=Ns(u,g.x,g.y),f=Ns(u,f.x,f.y)),z(`parseEmfPlusBrushObject: linear gradient (${g.x.toFixed(1)},${g.y.toFixed(1)})→(${f.x.toFixed(1)},${f.y.toFixed(1)}), ${d.length} stop(s)`),{kind:"plus-brush",color:Jt(c),gradient:{type:"linear",x1:g.x,y1:g.y,x2:f.x,y2:f.y,stops:Hp(d)}}}function aP(n,t,e){if(t+24>e)return null;const i=n.getUint32(t,!0),r=n.getUint32(t+8,!0);let s=n.getFloat32(t+12,!0),o=n.getFloat32(t+16,!0);const a=n.getUint32(t+20,!0);if(a>Rs)return{kind:"plus-brush",color:Jt(r)};const c=[];let l=t+24;for(let p=0;p<a&&l+4<=e;p++)c.push(n.getUint32(l,!0)),l+=4;let h=[];if(i&rP){if(l+4<=e){const p=n.getInt32(l,!0);if(l+=4,p>0&&l+p<=e){const m=el(n,l,p);m&&(h=m.points),l+=p}}}else if(l+4<=e){const p=n.getUint32(l,!0);if(l+=4,p>0&&p<=Rs&&l+p*8<=e){for(let m=0;m<p;m++)h.push({x:n.getFloat32(l+m*8,!0),y:n.getFloat32(l+m*8+4,!0)});l+=p*8}}let u=null;i&zp&&l+24<=e&&(u=Gp(n,l),l+=24),u&&({x:s,y:o}=Ns(u,s,o),h=h.map(p=>Ns(u,p.x,p.y)));const d=c.length>0?c[0]:r;let g=[{offset:0,color:Jt(r)},{offset:1,color:Jt(d)}];if(i&Vp){const p=Wp(n,l,e);p&&(g=p.stops.map(m=>({offset:1-m.offset,color:m.color})))}else if(i&jp){const p=$p(n,l,e);p&&(g=p.entries.map(m=>({offset:1-m.pos,color:pp(d,r,m.factor)})))}let f=0;for(const p of h){const m=Math.hypot(p.x-s,p.y-o);m>f&&(f=m)}return f>0?(z(`parseEmfPlusBrushObject: path gradient centre=(${s.toFixed(1)},${o.toFixed(1)}), r=${f.toFixed(1)}, ${g.length} stop(s)`),{kind:"plus-brush",color:Jt(r),gradient:{type:"radial",cx:s,cy:o,r:f,stops:Hp(g)}}):{kind:"plus-brush",color:Jt(r)}}function qp(n,t,e){if(e<8)return null;const i=t+e,r=Up(n.getUint32(t,!0)),s=t+(r?4:0);if(s+8>i)return null;const o=n.getUint32(s,!0),a=s+4;switch(o){case E2:return{kind:"plus-brush",color:Jt(n.getUint32(a,!0))};case T2:return a+8<=i?{kind:"plus-brush",color:Jt(n.getUint32(a+4,!0))}:{kind:"plus-brush",color:"rgba(0,0,0,1)"};case M2:return oP(n,a,i)??{kind:"plus-brush",color:"rgba(0,0,0,1)"};case L2:return aP(n,a,i)??{kind:"plus-brush",color:"rgba(0,0,0,1)"};default:return{kind:"plus-brush",color:"rgba(0,0,0,1)"}}}var cP=137224,lP=139273,hP=2498570,pu=925707;function uP(n,t,e,i,r,s){const o=Math.abs(r),a=r>0,l=e*4+3&-4,h=l*i,u=new Uint8Array(h);for(let b=0;b<i;b++){const _=a?b:i-1-b,w=t+_*o,S=(i-1-b)*l;switch(s){case hP:case pu:{for(let P=0;P<e;P++){const v=w+P*4;if(v+3>=n.byteLength)break;let k=n.getUint8(v),L=n.getUint8(v+1),O=n.getUint8(v+2);const R=n.getUint8(v+3);s===pu&&R>0&&R<255&&(O=Math.min(255,Math.round(O*255/R)),L=Math.min(255,Math.round(L*255/R)),k=Math.min(255,Math.round(k*255/R)));const N=S+P*4;u[N]=k,u[N+1]=L,u[N+2]=O,u[N+3]=R}break}case lP:{for(let P=0;P<e;P++){const v=w+P*4;if(v+3>=n.byteLength)break;const k=S+P*4;u[k]=n.getUint8(v),u[k+1]=n.getUint8(v+1),u[k+2]=n.getUint8(v+2),u[k+3]=255}break}case cP:{for(let P=0;P<e;P++){const v=w+P*3;if(v+2>=n.byteLength)break;const k=S+P*4;u[k]=n.getUint8(v),u[k+1]=n.getUint8(v+1),u[k+2]=n.getUint8(v+2),u[k+3]=255}break}default:return null}}const d=14,g=108,f=d+g+h,p=new ArrayBuffer(f),m=new DataView(p),y=new Uint8Array(p);return m.setUint8(0,66),m.setUint8(1,77),m.setUint32(2,f,!0),m.setUint32(6,0,!0),m.setUint32(10,d+g,!0),m.setUint32(14,g,!0),m.setInt32(18,e,!0),m.setInt32(22,i,!0),m.setUint16(26,1,!0),m.setUint16(28,32,!0),m.setUint32(30,3,!0),m.setUint32(34,h,!0),m.setInt32(38,2835,!0),m.setInt32(42,2835,!0),m.setUint32(46,0,!0),m.setUint32(50,0,!0),m.setUint32(54,16711680,!0),m.setUint32(58,65280,!0),m.setUint32(62,255,!0),m.setUint32(66,4278190080,!0),m.setUint32(70,1934772034,!0),y.set(u,d+g),p}function dP(n,t,e){if(e<20)return null;const i=Up(n.getUint32(t,!0)),r=n.getUint32(t+(i?8:4),!0),s=n.getFloat32(t+16,!0);let o=t+20;const a=[[1,4],[2,4],[4,4],[8,4],[16,4],[32,4],[64,4],[128,4]];let c=0;for(const[h,u]of a)r&h&&(h===1?o+=24:(h===32&&o+4<=t+e&&(c=n.getUint32(o,!0)),o+=u));if(r&256&&o+4<=t+e){const h=n.getUint32(o,!0);o+=4+h*4}if(r&512&&o+4<=t+e){const h=n.getUint32(o,!0);o+=4+h*4}if(r&1024&&o+4<=t+e){const h=n.getUint32(o,!0);o+=4+h}if(r&2048&&o+4<=t+e){const h=n.getUint32(o,!0);o+=4+h}let l="rgba(0,0,0,1)";if(o+8<=t+e){const h=qp(n,o,t+e-o);h&&(l=h.color)}return{kind:"plus-pen",color:l,width:s||1,dashStyle:c}}function gP(n,t,e,i){let r=null;const s=n.getUint32(t+4,!0);if(s===1&&e>=28){const o=n.getUint32(t+24,!0);if(o===1){const a=n.getInt32(t+8,!0),c=n.getInt32(t+12,!0),l=n.getInt32(t+16,!0),h=n.getUint32(t+20,!0);z(` Bitmap(Pixel): ${a}×${c}, stride=${l}, pixelFormat=0x${h.toString(16).padStart(8,"0")}`);const u=t+28,d=Math.abs(l);if(a>0&&c>0&&a<=8192&&c<=8192&&u+d*c<=n.byteLength){const g=uP(n,u,a,c,l,h);g&&(z(` Bitmap(Pixel): decoded successfully, size=${g.byteLength} bytes`),r=g)}}else if(o===2){const a=t+28,c=e-28;if(z(` Bitmap(Compressed): imgLen=${c}, imgStart=0x${a.toString(16)}`),c>0&&a+c<=n.byteLength&&(r=n.buffer.slice(n.byteOffset+a,n.byteOffset+a+c),r.byteLength>=4)){const l=new Uint8Array(r,0,4);z(` Bitmap(Compressed): first 4 bytes = [${Array.from(l).map(h=>h.toString(16).padStart(2,"0")).join(" ")}]`)}}}else if(s===2&&e>=12){n.getUint32(t+8,!0);const o=n.getUint32(t+12,!0),a=t+16;o>0&&a+o<=n.byteLength?(r=n.buffer.slice(n.byteOffset+a,n.byteOffset+a+o),r.byteLength>=4&&new DataView(r).getUint32(0,!0)):ke(` Metafile: out of bounds or empty (mfStart=0x${a.toString(16)}, mfDataSize=${o}, viewLen=${n.byteLength})`)}return{data:r,type:s}}function fP(n,t,e){if(e<28)return null;const i=n.getFloat32(t+4,!0),r=n.getInt32(t+12,!0),s=n.getUint32(t+20,!0);let o="sans-serif";return s>0&&t+24+s*2<=t+e&&(o=ir(n,t+24,s)||"sans-serif"),{kind:"plus-font",emSize:i||12,flags:r,family:o}}function mu(n,t,e,i){const{view:r,objectTable:s}=n,o=t&255;switch(t>>8&127){case x2:{const c=qp(r,e,i);c&&s.set(o,c);break}case w2:{const c=dP(r,e,i);c&&s.set(o,c);break}case v2:{const c=el(r,e,i);c&&s.set(o,c);break}case S2:{const c=fP(r,e,i);c&&s.set(o,c);break}case k2:{if(i>=16){const c=r.getUint32(e+4,!0),l=r.getUint32(e+12,!0),h=r.getUint32(e+16,!0);s.set(o,{kind:"plus-stringformat",flags:c,alignment:l??0,lineAlignment:h??0})}break}case P2:{if(i<8)break;const c=gP(r,e,i);s.set(o,{kind:"plus-image",data:c.data,type:c.type}),n.totalImageObjects++;break}case A2:{s.set(o,{kind:"plus-imageattributes"});break}case I2:{const c=mP(r,e,i);c&&s.set(o,c);break}}}var pP=64;function ec(n,t,e,i=0){if(t+4>e||i>pP)return null;const r=n.getUint32(t,!0);let s=t+4;if(r<=5){const o=ec(n,s,e,i+1);if(!o)return null;s+=o.bytesRead;const a=ec(n,s,e,i+1);return a?(s+=a.bytesRead,{node:{type:"combine",combineMode:r,left:o.node,right:a.node},bytesRead:s-t}):null}if(r===268435456){if(s+16>e)return null;const o=n.getFloat32(s,!0),a=n.getFloat32(s+4,!0),c=n.getFloat32(s+8,!0),l=n.getFloat32(s+12,!0);return{node:{type:"rect",x:o,y:a,width:c,height:l},bytesRead:s+16-t}}if(r===268435457){if(s+4>e)return null;const o=n.getInt32(s,!0);if(s+=4,o<=0||s+o>e)return null;const a=el(n,s,o);return{node:a?{type:"path",path:a}:{type:"empty"},bytesRead:s+o-t}}return r===268435458?{node:{type:"empty"},bytesRead:4}:r===268435459?{node:{type:"infinite"},bytesRead:4}:(ke(`parseRegionNode: unknown node type 0x${r.toString(16)}`),{node:{type:"empty"},bytesRead:4})}function mP(n,t,e){if(e<8)return null;n.getUint32(t,!0);const i=n.getUint32(t+4,!0);if(i===0||i>1e5)return null;const r=t+e,s=ec(n,t+8,r);return s?{kind:"plus-region",nodes:[s.node]}:null}function yP(n,t,e,i,r){const{ctx:s,view:o,objectTable:a}=n;switch(t){case Wv:{if(r>=4){const c=o.getUint32(i,!0),l=e&255,h=a.get(l);h&&h.kind==="plus-path"&&(s.fillStyle=fn(n,e,c),ce(n),uu(s,h),s.fill())}return!0}case $v:{if(r>=4){const c=o.getUint32(i,!0),l=e&255,h=a.get(l),u=a.get(c&255);h&&h.kind==="plus-path"&&(u&&u.kind==="plus-pen"&&(s.strokeStyle=u.color,s.lineWidth=u.width),ce(n),uu(s,h),s.stroke())}return!0}case Zv:{if(r>=28){const c=o.getUint32(i,!0),l=o.getUint32(i+4,!0),h=o.getUint32(i+8,!0),u=o.getFloat32(i+12,!0),d=o.getFloat32(i+16,!0);o.getFloat32(i+20,!0),o.getFloat32(i+24,!0);const g=e&255,f=a.get(g);if(h>0&&i+28+h*2<=i+r){const p=ir(o,i+28,h);if(p.length>0&&f&&f.kind==="plus-font"){const m=f.flags&1?"bold ":"",y=f.flags&2?"italic ":"",b=Ka(f.family,n.fontFamilyMap);s.font=`${y}${m}${f.emSize}px ${b}`,s.fillStyle=fn(n,e,c),s.textBaseline="top";const _=a.get(l);if(_&&_.kind==="plus-stringformat")switch(_.alignment){case 1:s.textAlign="center";break;case 2:s.textAlign="right";break;default:s.textAlign="left"}else s.textAlign="left";ce(n),s.fillText(p,u,d)}}}return!0}case b2:{if(r>=16){const c=o.getUint32(i,!0),l=o.getUint32(i+12,!0),h=e&255,u=a.get(h),d=i+16,f=d+l*2+3&-4;if(l>0&&l<1e5&&f+l*8<=i+r&&u&&u.kind==="plus-font"){const p=ir(o,d,l);if(p.length>0){const m=u.flags&1?"bold ":"",y=u.flags&2?"italic ":"",b=Ka(u.family,n.fontFamilyMap);s.font=`${y}${m}${u.emSize}px ${b}`,s.fillStyle=fn(n,e,c),s.textBaseline="alphabetic",s.textAlign="left",ce(n);const _=o.getFloat32(f,!0),w=o.getFloat32(f+4,!0);s.fillText(p,_,w)}}}return!0}case qv:{if(r>=24){const c=e&255,l=a.get(c),h=(e&16384)!==0,u=i+24;let d,g,f,p;if(h&&u+8<=i+r)d=o.getInt16(u,!0),g=o.getInt16(u+2,!0),f=o.getInt16(u+4,!0),p=o.getInt16(u+6,!0);else if(!h&&u+16<=i+r)d=o.getFloat32(u,!0),g=o.getFloat32(u+4,!0),f=o.getFloat32(u+8,!0),p=o.getFloat32(u+12,!0);else return!0;n.totalDrawImageCalls++;const m=l&&l.kind==="plus-image"&&l.data;if(z(`DrawImage: imgId=${c}, dest=(${d},${g},${f},${p}), compressed=${h}, hasObj=${!!l}, objKind=${l==null?void 0:l.kind}, hasData=${!!m}, dataLen=${m?l.data.byteLength:0}, isMetafile=${(l==null?void 0:l.kind)==="plus-image"?l.type===2:"N/A"}`),z(`DrawImage: worldTransform=[${n.worldTransform.map(y=>y.toFixed(3)).join(", ")}]`),l&&l.kind==="plus-image"&&l.data){const y=n.worldTransform,b=Os(n.pageUnit,n.pageScale)*n.dpiScale;n.deferredImages.push({imageData:l.data,dx:d,dy:g,dw:f,dh:p,transform:[y[0]*b,y[1]*b,y[2]*b,y[3]*b,y[4]*b,y[5]*b],isMetafile:l.type===2}),z(`DrawImage: queued deferred image (total=${n.deferredImages.length})`)}}return!0}case Kv:{if(r>=28){const c=e&255,l=a.get(c),h=o.getUint32(i+24,!0),u=(e&16384)!==0,d=i+28;if(h>=3&&l&&l.kind==="plus-image"&&l.data){let g,f,p,m,y,b;if(u&&d+12<=i+r)g=o.getInt16(d,!0),f=o.getInt16(d+2,!0),p=o.getInt16(d+4,!0),m=o.getInt16(d+6,!0),y=o.getInt16(d+8,!0),b=o.getInt16(d+10,!0);else if(!u&&d+24<=i+r)g=o.getFloat32(d,!0),f=o.getFloat32(d+4,!0),p=o.getFloat32(d+8,!0),m=o.getFloat32(d+12,!0),y=o.getFloat32(d+16,!0),b=o.getFloat32(d+20,!0);else return!0;const _=g,w=f,S=Math.sqrt((p-g)**2+(m-f)**2),P=Math.sqrt((y-g)**2+(b-f)**2);n.totalDrawImageCalls++,z(`DrawImagePoints: imgId=${c}, points=[(${g},${f}),(${p},${m}),(${y},${b})], dest=(${_.toFixed(1)},${w.toFixed(1)},${S.toFixed(1)},${P.toFixed(1)})`),z(`DrawImagePoints: worldTransform=[${n.worldTransform.map(L=>L.toFixed(3)).join(", ")}]`);const v=n.worldTransform,k=Os(n.pageUnit,n.pageScale)*n.dpiScale;n.deferredImages.push({imageData:l.data,dx:_,dy:w,dw:S,dh:P,transform:[v[0]*k,v[1]*k,v[2]*k,v[3]*k,v[4]*k,v[5]*k],isMetafile:l.type===2}),z(`DrawImagePoints: queued deferred image (total=${n.deferredImages.length})`)}else l&&l.kind==="plus-image"&&l.data}return!0}default:return!1}}var bP={16385:"Header",16386:"EndOfFile",16388:"GetDC",16392:"Object",16394:"FillRects",16395:"DrawRects",16396:"FillPolygon",16397:"DrawLines",16398:"FillEllipse",16399:"DrawEllipse",16404:"FillPath",16405:"DrawPath",16410:"DrawImage",16411:"DrawImagePoints",16412:"DrawString",16438:"DrawDriverString",16414:"SetAntiAliasMode",16426:"SetWorldTransform",16427:"ResetWorldTransform",16428:"MultiplyWorldTransform",16432:"SetPageTransform",16433:"ResetClip",16434:"SetClipRect",16435:"SetClipPath",16436:"SetClipRegion",16437:"OffsetClip",16421:"Save",16422:"Restore",16424:"BeginContainerNoParams",16425:"EndContainer"};function _P(n,t,e,i,r,s,o,a=1,c=wp,l){const h=o??Dp(),u={ctx:i,view:n,objectTable:h.objectTable,worldTransform:h.worldTransform,deferredImages:[],saveStack:h.saveStack,saveIdMap:h.saveIdMap,totalImageObjects:0,totalDrawImageCalls:0,clipSaveDepth:h.clipSaveDepth,clipRegion:h.clipRegion,pageUnit:2,pageScale:1,continuationBuffer:null,continuationObjectId:-1,continuationObjectType:0,continuationTotalSize:0,continuationOffset:0,dpiScale:a,fontFamilyMap:l},d=t+e;let g=0;const f=new Map;for(z(`replayEmfPlusRecords: offset=0x${t.toString(16)}, length=${e}`);t+12<=d&&g<c;){const m=n.getUint16(t,!0),y=n.getUint16(t+2,!0),b=n.getUint32(t+4,!0),_=n.getUint32(t+8,!0);if(b<12||t+b>d)break;g++,f.set(m,(f.get(m)??0)+1);const w=t+12;switch(m){case Nv:{_>=16&&(n.getFloat32(w+8,!0),n.getFloat32(w+12,!0));break}case Bv:t=d;continue;case Dv:break;case Fv:{const S=(y&32768)!==0,P=y&255;if(S)if(u.continuationBuffer===null){if(_>=4){const v=n.getUint32(w,!0),k=y>>8&127,L=64*1024*1024,O=n.byteLength-w;if(!(!Number.isFinite(v)||v<=0||v>L||v>O||_-4<0)){u.continuationTotalSize=v,u.continuationObjectId=P,u.continuationObjectType=k,u.continuationBuffer=new Uint8Array(v);const R=_-4,N=new Uint8Array(n.buffer,n.byteOffset+w+4,Math.min(R,v));u.continuationBuffer.set(N,0),u.continuationOffset=N.length}}}else{const v=u.continuationTotalSize-u.continuationOffset,k=new Uint8Array(n.buffer,n.byteOffset+w,Math.min(_,v));u.continuationBuffer.set(k,u.continuationOffset),u.continuationOffset+=k.length}else if(u.continuationBuffer!==null&&P===u.continuationObjectId){const v=u.continuationTotalSize-u.continuationOffset,k=new Uint8Array(n.buffer,n.byteOffset+w,Math.min(_,v));u.continuationBuffer.set(k,u.continuationOffset);const L=new DataView(u.continuationBuffer.buffer,u.continuationBuffer.byteOffset,u.continuationBuffer.byteLength),O=u.continuationObjectType<<8|P;mu({...u,view:L},O,0,u.continuationTotalSize),u.continuationBuffer=null,u.continuationObjectId=-1,u.continuationObjectType=0,u.continuationTotalSize=0,u.continuationOffset=0}else mu(u,y,w,_);break}default:{const S=iP(u,m,y,w,_)||yP(u,m,y,w,_)||nP(u,m,y,w,_);break}}t+=b}g>=c;const p=[];for(const[m,y]of f)p.push(`${bP[m]??`0x${m.toString(16)}`}:${y}`);return z(`replayEmfPlusRecords: totalImageObjects=${u.totalImageObjects}, totalDrawImageCalls=${u.totalDrawImageCalls}, deferredImages=${u.deferredImages.length}`),z(`replayEmfPlusRecords: object table has ${u.objectTable.size} entries: [${Array.from(u.objectTable.entries()).map(([m,y])=>`${m}:${y.kind}`).join(", ")}]`),o&&(o.worldTransform=u.worldTransform,o.saveIdMap=u.saveIdMap,o.clipRegion=u.clipRegion??null,o.clipSaveDepth=u.clipSaveDepth),i.setTransform(1,0,0,1,0,0),u.deferredImages}var xP={1:"EMR_HEADER",2:"EMR_POLYBEZIER",3:"EMR_POLYGON",4:"EMR_POLYLINE",5:"EMR_POLYBEZIERTO",6:"EMR_POLYLINETO",14:"EMR_EOF",27:"EMR_MOVETOEX",37:"EMR_SELECTOBJECT",38:"EMR_CREATEPEN",39:"EMR_CREATEBRUSHINDIRECT",40:"EMR_DELETEOBJECT",42:"EMR_ELLIPSE",43:"EMR_RECTANGLE",54:"EMR_LINETO",59:"EMR_BEGINPATH",60:"EMR_ENDPATH",62:"EMR_FILLPATH",63:"EMR_STROKEANDFILLPATH",64:"EMR_STROKEPATH",70:"EMR_COMMENT",76:"EMR_BITBLT",81:"EMR_STRETCHDIBITS",84:"EMR_EXTTEXTOUTW",85:"EMR_POLYBEZIER16",86:"EMR_POLYGON16",87:"EMR_POLYLINE16",88:"EMR_POLYBEZIERTO16",91:"EMR_POLYPOLYGON16"};function wP(n,t,e,i,r,s=1,o={}){z(`replayEmfRecords: bounds=(${e.left},${e.top})→(${e.right},${e.bottom}), canvas=${i}×${r}`);const a=[],c=Dp(),l=o.maxRecords??xp,h=o.maxRecordsEmfPlus??wp,u=e.right-e.left||1,d=e.bottom-e.top||1,g=i/u,f=r/d;z(`replayEmfRecords: logical=${u}×${d}, scale=(${g.toFixed(4)},${f.toFixed(4)})`);const p={ctx:t,view:n,objectTable:new Map,state:{...Np(),fontFamilyMap:o.fontFamilyMap},stateStack:[],inPath:!1,windowOrg:{x:e.left,y:e.top},windowExt:{cx:u,cy:d},viewportOrg:{x:0,y:0},viewportExt:{cx:i,cy:r},useMappingMode:!1,clipSaveDepth:0,bounds:e,canvasW:i,canvasH:r,sx:g,sy:f};let m=0;const y=n.byteLength;let b=0,_=0;const w=new Map;for(;m+8<=y&&b<l;){const S=n.getUint32(m,!0),P=n.getUint32(m+4,!0);if(P<8||m+P>y)break;b++;const v=m+8;if(w.set(S,(w.get(S)??0)+1),S===vv){if(P>=16){const L=n.getUint32(v,!0),O=n.getUint32(v+4,!0);if(O===Ov&&L>4){_++,z(`replayEmfRecords: EMF+ comment #${_} at offset 0x${m.toString(16)}, dataSize=${L}`);const R=_P(n,v+8,L-4,t,i,r,c,s,h,o.fontFamilyMap);z(`replayEmfRecords: EMF+ comment #${_} returned ${R.length} deferred images`),a.push(...R)}else z(O===Rv?`replayEmfRecords: EMR_COMMENT_PUBLIC at offset 0x${m.toString(16)}, size=${L}`:`replayEmfRecords: EMR_COMMENT (sig=0x${O.toString(16).padStart(8,"0")}) at offset 0x${m.toString(16)}, size=${L}`)}m+=P;continue}if(S===Pw){const L=[];for(const[O,R]of w)L.push(`${xP[O]??`0x${O.toString(16)}`}:${R}`);z(`replayEmfRecords: total deferred images = ${a.length}, EMF+ object table size = ${c.objectTable.size}`);break}if(S===Aw||S===Kw||S===Mv||S===Cv||S===mp){m+=P;continue}const k=KA(p,S,m,v,P)||XA(p,S,m,v,P)||GA(p,S,m,v,P);m+=P}return b>=l,a}function vP(n,t,e,i,r){const{ctx:s,view:o,state:a,coord:c}=n,{mx:l,my:h,mw:u,mh:d}=c;switch(t){case z2:return r>=10&&(a.curY=o.getInt16(i,!0),a.curX=o.getInt16(i+2,!0)),!0;case V2:if(r>=10){const g=o.getInt16(i,!0),f=o.getInt16(i+2,!0);_t(s,a),s.beginPath(),s.moveTo(l(a.curX),h(a.curY)),s.lineTo(l(f),h(g)),s.stroke(),a.curX=f,a.curY=g}return!0;case j2:if(r>=14){const g=o.getInt16(i,!0),f=o.getInt16(i+2,!0),p=o.getInt16(i+4,!0),m=o.getInt16(i+6,!0);Mt(s,a),s.fillRect(l(m),h(p),u(f-m),d(g-p)),_t(s,a),s.strokeRect(l(m),h(p),u(f-m),d(g-p))}return!0;case U2:if(r>=18){const g=Math.abs(d(o.getInt16(i,!0)))/2,f=Math.abs(u(o.getInt16(i+2,!0)))/2,p=o.getInt16(i+4,!0),m=o.getInt16(i+6,!0),y=o.getInt16(i+8,!0),b=o.getInt16(i+10,!0),_=l(b),w=h(y),S=u(m-b),P=d(p-y),v=Math.min(f,g,S/2,P/2);s.beginPath(),s.moveTo(_+v,w),s.lineTo(_+S-v,w),s.arcTo(_+S,w,_+S,w+v,v),s.lineTo(_+S,w+P-v),s.arcTo(_+S,w+P,_+S-v,w+P,v),s.lineTo(_+v,w+P),s.arcTo(_,w+P,_,w+P-v,v),s.lineTo(_,w+v),s.arcTo(_,w,_+v,w,v),s.closePath(),Mt(s,a),s.fill(),_t(s,a),s.stroke()}return!0;case G2:if(r>=14){const g=o.getInt16(i,!0),f=o.getInt16(i+2,!0),p=o.getInt16(i+4,!0),m=o.getInt16(i+6,!0);s.beginPath(),s.ellipse(l((m+f)/2),h((p+g)/2),Math.abs(u(f-m))/2,Math.abs(d(g-p))/2,0,0,Math.PI*2),Mt(s,a),s.fill(),_t(s,a),s.stroke()}return!0;case H2:case Cr:case ca:if(r>=22){const g=o.getInt16(i,!0),f=o.getInt16(i+2,!0),p=o.getInt16(i+4,!0),m=o.getInt16(i+6,!0),y=o.getInt16(i+8,!0),b=o.getInt16(i+10,!0),_=o.getInt16(i+12,!0),w=o.getInt16(i+14,!0),S=(w+b)/2,P=(_+y)/2,v=Math.abs(b-w)/2,k=Math.abs(y-_)/2,L=Math.atan2((p-P)/(k||1),(m-S)/(v||1)),O=Math.atan2((g-P)/(k||1),(f-S)/(v||1));s.beginPath(),t===Cr&&s.moveTo(l(S),h(P)),s.ellipse(l(S),h(P),Math.abs(u(v)),Math.abs(d(k)),0,L,O,!1),(t===Cr||t===ca)&&s.closePath(),(t===Cr||t===ca)&&(Mt(s,a),s.fill()),_t(s,a),s.stroke()}return!0;case W2:if(r>=10){const g=o.getInt16(i,!0);if(g>0&&i+2+g*4<=e+r){s.beginPath();for(let f=0;f<g;f++){const p=o.getInt16(i+2+f*4,!0),m=o.getInt16(i+4+f*4,!0);f===0?s.moveTo(l(p),h(m)):s.lineTo(l(p),h(m))}s.closePath(),Mt(s,a),s.fill(a.polyFillMode===2?"nonzero":"evenodd"),_t(s,a),s.stroke()}}return!0;case $2:if(r>=10){const g=o.getInt16(i,!0);if(g>0&&i+2+g*4<=e+r){s.beginPath();for(let f=0;f<g;f++){const p=o.getInt16(i+2+f*4,!0),m=o.getInt16(i+4+f*4,!0);f===0?s.moveTo(l(p),h(m)):s.lineTo(l(p),h(m))}_t(s,a),s.stroke()}}return!0;case rA:if(r>=10){const g=o.getUint16(i,!0);let f=i+2;const p=[];for(let m=0;m<g&&f+2<=e+r;m++)p.push(o.getInt16(f,!0)),f+=2;s.beginPath();for(const m of p)if(m>0&&f+m*4<=e+r){for(let y=0;y<m;y++){const b=o.getInt16(f+y*4,!0),_=o.getInt16(f+y*4+2,!0);y===0?s.moveTo(l(b),h(_)):s.lineTo(l(b),h(_))}s.closePath(),f+=m*4}Mt(s,a),s.fill(a.polyFillMode===2?"nonzero":"evenodd"),_t(s,a),s.stroke()}return!0;case tA:if(r>=12){const g=o.getInt16(i,!0);if(g>0&&i+2+g<=e+r){let f="";for(let y=0;y<g;y++){const b=o.getUint8(i+2+y);if(b===0)break;f+=String.fromCharCode(b)}const p=g+g%2,m=i+2+p;if(m+4<=e+r){const y=o.getInt16(m,!0),b=o.getInt16(m+2,!0);Za(s,a,Math.abs(d(1))),s.fillStyle=a.textColor,s.fillText(f,l(b),h(y))}}}return!0;case eA:if(r>=14){const g=o.getInt16(i,!0),f=o.getInt16(i+2,!0),p=o.getInt16(i+4,!0),m=(o.getUint16(i+6,!0)&4)!==0,y=i+8+(m?8:0);if(p>0&&y+p<=e+r){let b="";for(let _=0;_<p;_++){const w=o.getUint8(y+_);if(w===0)break;b+=String.fromCharCode(w)}Za(s,a,Math.abs(d(1))),s.fillStyle=a.textColor,s.fillText(b,l(f),h(g))}}return!0;default:return!1}}function AP(n,t,e,i){return{mx:r=>(r-n.x)/(t.cx||1)*e,my:r=>(r-n.y)/(t.cy||1)*i,mw:r=>r/(t.cx||1)*e,mh:r=>r/(t.cy||1)*i}}function PP(n,t,e,i,r,s={}){const o=e.boundsRight-e.boundsLeft||1,a=e.boundsBottom-e.boundsTop||1,c={x:e.boundsLeft,y:e.boundsTop},l={cx:o,cy:a},h=AP(c,l,i,r),u=new Map,d=()=>{let w=0;for(;u.has(w);)w++;return w},g={...Np(),fontFamilyMap:s.fontFamilyMap},f=[],p={view:n,ctx:t,state:g,coord:h};let m=e.headerSize;const y=n.byteLength,b=s.maxRecords??xp;let _=0;for(;m+6<=y&&_<b;){const w=n.getUint32(m,!0),S=n.getUint16(m+4,!0),P=w*2;if(P<6||m+P>y||S===C2)break;_++;const v=m+6;if(vP(p,S,m,v,P)){m+=P;continue}switch(S){case X2:P>=10&&(c.y=n.getInt16(v,!0),c.x=n.getInt16(v+2,!0));break;case Y2:P>=10&&(l.cy=n.getInt16(v,!0),l.cx=n.getInt16(v+2,!0));break;case nA:f.push(Bp(g));break;case iA:{const k=f.pop();k&&Object.assign(g,k);break}case D2:P>=10&&(g.textColor=Pe(n,v));break;case O2:P>=10&&(g.bkColor=Pe(n,v));break;case R2:P>=8&&(g.bkMode=n.getUint16(v,!0));break;case N2:P>=8&&(g.rop2=n.getUint16(v,!0));break;case B2:P>=8&&(g.polyFillMode=n.getUint16(v,!0));break;case F2:P>=8&&(g.textAlign=n.getUint16(v,!0));break;case Z2:if(P>=16){const k=d();u.set(k,{kind:"pen",style:n.getUint16(v,!0)&255,widthX:n.getInt16(v+2,!0),color:Pe(n,v+6)})}break;case Q2:if(P>=14){const k=d();u.set(k,{kind:"brush",style:n.getUint16(v,!0),color:Pe(n,v+2)})}break;case J2:if(P>=24){let k="";for(let O=0;O<32&&v+14+O<m+P;O++){const R=n.getUint8(v+14+O);if(R===0)break;k+=String.fromCharCode(R)}const L=d();u.set(L,{kind:"font",height:Math.abs(n.getInt16(v,!0)),weight:n.getInt16(v+8,!0),italic:n.getUint8(v+10)!==0,underline:n.getUint8(v+11)!==0,strikeOut:n.getUint8(v+12)!==0,family:k||"sans-serif"})}break;case q2:if(P>=8){const k=u.get(n.getUint16(v,!0));if(k)switch(k.kind){case"pen":g.penStyle=k.style,g.penWidth=k.widthX,g.penColor=k.color;break;case"brush":g.brushStyle=k.style,g.brushColor=k.color;break;case"font":g.fontHeight=k.height,g.fontWeight=k.weight,g.fontItalic=k.italic,g.fontUnderline=k.underline,g.fontStrikeOut=k.strikeOut,g.fontFamily=k.family;break}}break;case K2:P>=8&&u.delete(n.getUint16(v,!0));break}m+=P}_>=b}var Bs=3;async function SP(n,t,e=0){z(`processDeferredImages: processing ${t.length} deferred images (recursionDepth=${e})...`);for(let i=0;i<t.length;i++){const r=t[i];z(` Deferred image [${i}]: isMetafile=${r.isMetafile}, dataLen=${r.imageData.byteLength}, dest=(${r.dx.toFixed(1)},${r.dy.toFixed(1)},${r.dw.toFixed(1)},${r.dh.toFixed(1)}), transform=[${r.transform.map(s=>s.toFixed(3)).join(",")}]`);try{const s=new ArrayBuffer(r.imageData.byteLength);if(new Uint8Array(s).set(new Uint8Array(r.imageData)),n.setTransform(r.transform[0],r.transform[1],r.transform[2],r.transform[3],r.transform[4],r.transform[5]),r.isMetafile){if(e>=Bs){ke(` Deferred image [${i}]: skipping embedded metafile — recursion depth ${e} >= ${Bs}`);continue}z(` Deferred image [${i}]: recursively converting embedded metafile...`);const a=await nc(s,void 0,e+1)??await ic(s,void 0,e+1);if(a){z(` Deferred image [${i}]: metafile converted, dataUrl length=${a.length}`);const c=atob(a.split(",")[1]),l=a.match(/data:([^;]+)/),h=l?l[1]:"image/png",u=new ArrayBuffer(c.length),d=new Uint8Array(u);for(let p=0;p<c.length;p++)d[p]=c.charCodeAt(p);const g=new Blob([u],{type:h});z(` Deferred image [${i}]: creating ImageBitmap from ${g.size} byte blob (${h})...`);const f=await createImageBitmap(g);z(` Deferred image [${i}]: ImageBitmap created ${f.width}×${f.height}`),n.drawImage(f,r.dx,r.dy,r.dw,r.dh),f.close()}else ke(` Deferred image [${i}]: metafile conversion returned null`)}else{z(` Deferred image [${i}]: creating ImageBitmap from ${s.byteLength} byte blob...`);const a=new Blob([s]),c=await createImageBitmap(a);z(` Deferred image [${i}]: ImageBitmap created ${c.width}×${c.height}`),n.drawImage(c,r.dx,r.dy,r.dw,r.dh),c.close()}}catch(s){s instanceof Error?s.message:String(s)}}n.setTransform(1,0,0,1,0,0)}async function nc(n,t,e=0){if(e>Bs)return null;const i=t??{},r=i.dpiScale??Qc,s=i.maxWidth,o=i.maxHeight,a={maxRecords:i.maxRecords,maxRecordsEmfPlus:i.maxRecords,fontFamilyMap:i.fontFamilyMap};try{if(z("=== convertEmfToDataUrl START ==="),z(`Input buffer: ${n.byteLength} bytes, maxWidth=${s}, maxHeight=${o}, dpiScale=${r}`),n.byteLength>=16){const b=new Uint8Array(n,0,16);z(`First 16 bytes: [${Array.from(b).map(_=>_.toString(16).padStart(2,"0")).join(" ")}]`)}const c=new DataView(n),l=lA(c);if(!l)return z("convertEmfToDataUrl: parseEmfHeader returned null — returning null"),null;const h=hA(l);if(!h)return z("convertEmfToDataUrl: getRenderableEmfBounds returned null — returning null"),null;const u=h.right-h.left,d=h.bottom-h.top;z(`convertEmfToDataUrl: logicalSize=${u}×${d}`);const g=kp(u,d,s,o,r,i.maxCanvasDimension);if(!g)return z("convertEmfToDataUrl: createCanvas returned null — returning null"),null;const{canvas:f,ctx:p}=g;z(`convertEmfToDataUrl: canvas created ${f.width}×${f.height} (dpiScale=${r})`),p.save(),z("convertEmfToDataUrl: starting replayEmfRecords...");const m=wP(c,p,h,f.width,f.height,r,a);z(`convertEmfToDataUrl: replayEmfRecords returned ${m.length} deferred images`),p.restore(),await SP(p,m),z("convertEmfToDataUrl: exporting canvas to PNG data URL...");const y=await Lp(f);return y?z(`convertEmfToDataUrl: SUCCESS — data URL length=${y.length}`):ke("convertEmfToDataUrl: exportCanvasToPngDataUrl returned null"),z("=== convertEmfToDataUrl END ==="),y}catch(c){return ke("convertEmfToDataUrl: EXCEPTION:",c instanceof Error?c.message:c),null}}async function ic(n,t,e=0){if(e>Bs)return null;const i=t??{},r=i.dpiScale??Qc,s=i.maxWidth,o=i.maxHeight,a={maxRecords:i.maxRecords,fontFamilyMap:i.fontFamilyMap};try{z("=== convertWmfToDataUrl START ===",`buffer=${n.byteLength} bytes, dpiScale=${r}`);const c=new DataView(n),l=uA(c);if(!l)return z("convertWmfToDataUrl: parseWmfHeader returned null"),null;const h=l.boundsRight-l.boundsLeft,u=l.boundsBottom-l.boundsTop;if(z(`convertWmfToDataUrl: logicalSize=${h}×${u}`),h<=0||u<=0)return z("convertWmfToDataUrl: invalid dimensions — returning null"),null;const d=kp(h,u,s,o,r,i.maxCanvasDimension);if(!d)return null;const{canvas:g,ctx:f}=d;f.save(),PP(c,f,l,g.width,g.height,a),f.restore();const p=await Lp(g);return z(`convertWmfToDataUrl: result=${p?`dataUrl len=${p.length}`:"null"}`),z("=== convertWmfToDataUrl END ==="),p}catch(c){return ke("convertWmfToDataUrl: EXCEPTION:",c instanceof Error?c.message:c),null}}const kP={宋体:'"SimSun", "NSimSun", "Microsoft YaHei", "Noto Sans SC", "Source Han Sans SC", sans-serif',simsun:'"SimSun", "NSimSun", "Microsoft YaHei", "Noto Sans SC", sans-serif',nsimsun:'"NSimSun", "SimSun", "Microsoft YaHei", sans-serif',黑体:'"SimHei", "Microsoft YaHei", "Noto Sans SC", sans-serif',simhei:'"SimHei", "Microsoft YaHei", sans-serif',微软雅黑:'"Microsoft YaHei", "Noto Sans SC", sans-serif',"microsoft yahei":'"Microsoft YaHei", "Noto Sans SC", sans-serif'};async function IP(n,t={}){const e=n instanceof Uint8Array?n:new Uint8Array(await n.arrayBuffer());if(!e.length)return;const i=n instanceof Blob&&Zc(n.type)?n.type:void 0,r={maxWidth:t.maxWidth,maxHeight:t.maxHeight,dpiScale:t.dpiScale??1,maxCanvasDimension:t.maxCanvasDimension,fontFamilyMap:{...kP,...t.fontFamilyMap}},s=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength),o=i===Wn||i==null&&_s(e)&&!Se(e);let a=null;if(o?(a=await nc(s,r),!a&&Se(e)&&(a=await ic(s,r))):((i===Zi||Se(e))&&(a=await ic(s,r)),!a&&_s(e)&&(a=await nc(s,r))),!!a)return TP(a)}function EP(n){return Zc(n.type)}function Dr(n){const t=n.indexOf(",");if(!n.startsWith("data:")||t<0)return;const e=n.slice(5,t),i=n.slice(t+1),r=e.split(";"),s=r[0]||"image/png";if(r.includes("base64")){const c=atob(i),l=new Uint8Array(c.length);for(let h=0;h<c.length;h++)l[h]=c.charCodeAt(h);return new Blob([l],{type:s})}const a=decodeURIComponent(i);return new Blob([a],{type:s})}async function TP(n){const t=LP();if(!t)return Dr(n);try{const e=await t.decodeImage(n),i=Math.max(1,e.width),r=Math.max(1,e.height),s=t.createCanvas(i,r),o=s.getContext("2d");if(!o)return Dr(n);if(o.fillStyle="#ffffff",o.fillRect(0,0,i,r),o.drawImage(e,0,0),s instanceof OffscreenCanvas)return await s.convertToBlob({type:"image/png"});const a=s;if(typeof a.toBlob=="function")return await new Promise(c=>{a.toBlob(l=>c(l||void 0),"image/png")});if(typeof a.toDataURL=="function")return Dr(a.toDataURL("image/png"))}catch{}return Dr(n)}function LP(){if(typeof OffscreenCanvas<"u")return{createCanvas:(n,t)=>new OffscreenCanvas(n,t),decodeImage:async n=>{const e=await(await fetch(n)).blob();return createImageBitmap(e)}};if(typeof document<"u"&&document.createElement)return{createCanvas:(n,t)=>{const e=document.createElement("canvas");return e.width=n,e.height=t,e},decodeImage:n=>new Promise((t,e)=>{const i=new Image;i.onload=()=>t(i),i.onerror=()=>e(new Error("Failed to decode PNG")),i.src=n})}}class nl{parse(t){const i=this.normalizeLineEndings(t).split(`
|
|
17
16
|
`),r=[],s=[];let o=null;return i.forEach((a,c)=>{const l=c+1,h=this.stripInlineComment(a).trim();if(!h)return;if(h.startsWith("*")){this.flushCurrentPattern(o,r,s);const d=this.parseHeader(h.slice(1));if(!d){s.push({line:l,message:"Invalid pattern header.",source:a}),o=null;return}o={pattern:{name:d.name,description:d.description,lines:[]},headerLine:l};return}if(!o){s.push({line:l,message:"Line descriptor appears before any pattern header.",source:a});return}const u=this.parseLineDescriptor(h,l);if(!u){s.push({line:l,message:"Invalid line descriptor. Expect: angle,x-origin,y-origin,delta-x,delta-y[,dash-1,...].",source:a});return}o.pattern.lines.push(u)}),this.flushCurrentPattern(o,r,s),{patterns:r,issues:s}}static parse(t){return new nl().parse(t)}normalizeLineEndings(t){return t.replace(/\r\n/g,`
|
|
18
17
|
`).replace(/\r/g,`
|