diff --git a/assets/lib/xeokit-sdk.es.js b/assets/lib/xeokit-sdk.es.js index 1e1d147..354b9d6 100644 --- a/assets/lib/xeokit-sdk.es.js +++ b/assets/lib/xeokit-sdk.es.js @@ -16053,19 +16053,6 @@ const Renderer = function (scene, options) { //------------------------------------------------------------------------------------------------------ // Render deferred bins - // - // Order: - // - // 1. Opaque color fill - // 2. Opaque edges - // 3. Opaque X-ray fill - // 4. Opaque X-ray edges - // 5. Opaque highlight - // 6. Transparent highlight - // 7. Selected opaque - // 8. Selected transparent - // 9. Normal transparent - // 10. X-rayed transparent //------------------------------------------------------------------------------------------------------ // Opaque color with SAO @@ -16101,6 +16088,66 @@ const Renderer = function (scene, options) { } } + // Transparent + + if (xrayedFillTransparentBinLen > 0 || xrayEdgesTransparentBinLen > 0 || normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) { + gl.enable(gl.CULL_FACE); + gl.enable(gl.BLEND); + if (canvasTransparent) { + gl.blendEquation(gl.FUNC_ADD); + gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); + } else { + gl.blendEquation(gl.FUNC_ADD); + gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); + } + frameCtx.backfaces = false; + if (!alphaDepthMask) { + gl.depthMask(false); + } + + // Transparent color edges + + if (normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) { + gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); + } + if (normalEdgesTransparentBinLen > 0) { + for (i = 0; i < normalEdgesTransparentBinLen; i++) { + drawable = normalEdgesTransparentBin[i]; + drawable.drawEdgesColorTransparent(frameCtx); + } + } + + // Transparent color fill + + if (normalFillTransparentBinLen > 0) { + for (i = 0; i < normalFillTransparentBinLen; i++) { + drawable = normalFillTransparentBin[i]; + drawable.drawColorTransparent(frameCtx); + } + } + + // Transparent X-ray edges + + if (xrayEdgesTransparentBinLen > 0) { + for (i = 0; i < xrayEdgesTransparentBinLen; i++) { + xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx); + } + } + + // Transparent X-ray fill + + if (xrayedFillTransparentBinLen > 0) { + for (i = 0; i < xrayedFillTransparentBinLen; i++) { + xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx); + } + } + + gl.disable(gl.BLEND); + if (!alphaDepthMask) { + gl.depthMask(true); + } + } + // Opaque highlight if (highlightedFillOpaqueBinLen > 0 || highlightedEdgesOpaqueBinLen > 0) { @@ -16219,66 +16266,6 @@ const Renderer = function (scene, options) { gl.disable(gl.BLEND); } - // Transparent - - if (xrayedFillTransparentBinLen > 0 || xrayEdgesTransparentBinLen > 0 || normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) { - gl.enable(gl.CULL_FACE); - gl.enable(gl.BLEND); - if (canvasTransparent) { - gl.blendEquation(gl.FUNC_ADD); - gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - } else { - gl.blendEquation(gl.FUNC_ADD); - gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); - } - frameCtx.backfaces = false; - if (!alphaDepthMask) { - gl.depthMask(false); - } - - // Transparent color edges - - if (normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) { - gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); - } - if (normalEdgesTransparentBinLen > 0) { - for (i = 0; i < normalEdgesTransparentBinLen; i++) { - drawable = normalEdgesTransparentBin[i]; - drawable.drawEdgesColorTransparent(frameCtx); - } - } - - // Transparent color fill - - if (normalFillTransparentBinLen > 0) { - for (i = 0; i < normalFillTransparentBinLen; i++) { - drawable = normalFillTransparentBin[i]; - drawable.drawColorTransparent(frameCtx); - } - } - - // Transparent X-ray edges - - if (xrayEdgesTransparentBinLen > 0) { - for (i = 0; i < xrayEdgesTransparentBinLen; i++) { - xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx); - } - } - - // Transparent X-ray fill - - if (xrayedFillTransparentBinLen > 0) { - for (i = 0; i < xrayedFillTransparentBinLen; i++) { - xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx); - } - } - - gl.disable(gl.BLEND); - if (!alphaDepthMask) { - gl.depthMask(true); - } - } - const endTime = Date.now(); const frameStats = stats.frame; @@ -96090,7 +96077,7 @@ const IFCObjectDefaults = { * * ## Usage * - * In the example below we'll load the Schependomlaan model from a [glTF file](http://xeokit.github.io/xeokit-sdk/examples/models/gltf/schependomlaan/), along + * In the example below we'll load a house plan model from a [binary glTF file](http://xeokit.github.io/xeokit-sdk/examples/models/gltf/schependomlaan/), along * with an accompanying JSON [IFC metadata file](http://xeokit.github.io/xeokit-sdk/examples/metaModels/schependomlaan/). * * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s @@ -96101,8 +96088,6 @@ const IFCObjectDefaults = { * * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee). * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_OTCConferenceCenter)] - * * ````javascript * import {Viewer, GLTFLoaderPlugin} from "xeokit-sdk.es.js"; * @@ -96186,8 +96171,6 @@ const IFCObjectDefaults = { * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then * translate it 100 units along its X axis. * - * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_glTF_Duplex_transform)] - * * ````javascript * const model = gltfLoader.load({ * src: "./models/gltf/Duplex/scene.gltf", @@ -96203,8 +96186,6 @@ const IFCObjectDefaults = { * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the * objects that represent walls. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_includeTypes_PlanView)] - * * ````javascript * const model = gltfLoader.load({ * id: "myModel", diff --git a/assets/metaModels/Duplex.ifc.ifc2gltf.json b/assets/metaModels/Duplex.ifc.ifc2gltf.json new file mode 100644 index 0000000..b42d692 --- /dev/null +++ b/assets/metaModels/Duplex.ifc.ifc2gltf.json @@ -0,0 +1 @@ +{"id":"0001","projectId":"1xS3BCk291UvhgP2a6eflL","author":"","createdAt":"2011-05-05T12:10:27","schema":"IFC2X3","creatingApplication":"Autodesk Revit Architecture 2011 - 1.0","metaObjects":[{"id":"1xS3BCk291UvhgP2a6eflL","name":"0001","type":"IfcProject","parent":null},{"id":"1xS3BCk291UvhgP2a6eflN","name":"Default","type":"IfcSite","parent":"1xS3BCk291UvhgP2a6eflL"},{"id":"1xS3BCk291UvhgP2a6eflK","name":"Building","type":"IfcBuilding","parent":"1xS3BCk291UvhgP2a6eflN","propertySetIds":["1bdXgCYin54u6pXk4ZWChC","1Rq7QOF9LFoQSN0i3SgnLg"]},{"id":"1xS3BCk291UvhgP2dvNtSE","name":"Roof","type":"IfcBuildingStorey","parent":"1xS3BCk291UvhgP2a6eflK","elevation":"0,000000","propertySetIds":["1cM3875ZL0pASdMucro9MA","3QBCwtflf9Aw6lOXf4RMzu","0_086HDzz3H9OKM5ipZ3$p"]},{"id":"1Eo2$BaHX42AEkDvQQDoy2","name":"M_Skylight:1180 x 1170mm:1180 x 1170mm:185718","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNtSE","propertySetIds":["1vXUvT4nnCGxRK4DNV0lRT","1_v60i_bvDmATzMxHMNS_d","1cAU5iDUf5cgcY3Js1bcK5","3zBmNYW2HCHOzAqlql76m5","0UVWLTLhfBOgh5hdjIBzvI"]},{"id":"","name":"M_Skylight:1180 x 1170mm:1180 x 1170mm:185718","type":"IfcWindow","parent":null},{"id":"1Eo2$BaHX42AEkDvQQDocD","name":"M_Skylight:1180 x 1170mm:1180 x 1170mm:185337","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNtSE","propertySetIds":["2RwNHBegfC2xknLYYV8Rax","2XmxyXDFDB_PAJ0si8m76L","24juHcIlXFIPF4T7zVmJQh","3zyrmU3kX2GecOOCzn4D6D","0VE2zyznf7Rv8XejFCBq20","0FodsgF2DC1gJUHRWSTnwh","3uh0qhS4vFMPN$0H51yHJo","28VMrJVfT5tBgMVCtYS_os","3jyC8AI$j3rANxSQit8CQm","1EA_HQ0qv72uUaPcQHXu9d"]},{"id":"","name":"M_Skylight:1180 x 1170mm:1180 x 1170mm:185337","type":"IfcWindow","parent":null},{"id":"0jf0rYHfX3RAB3bSIRjmr1","name":"Basic Wall:Exterior - Brick on Block:185101","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNtSE","propertySetIds":["2Mv7DE5af24wbyBoOd0bwS","3D1zFb00vEzwBomv_7S4_A","1PJlY8oADDOgUtw6HFXGvd","0kZDN00GbFeQ9_KekOYP9h","2mPW9z8hv1ZwOHbAjgajnj","1lwXXNWzz1O9uQvZKqMPE1"]},{"id":"","name":"Basic Wall:Exterior - Brick on Block:185101","type":"IfcWallStandardCase","parent":null},{"id":"0jf0rYHfX3RAB3bSIRjmoa","name":"Basic Wall:Exterior - Brick on Block:185064","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNtSE","propertySetIds":["3auARDRdPDzvZLjuzxyLCp","3z3fQ2Sb9F8vAKPY4YbWCj","3j04sY0EvEOvMZB3JJgasa","1K5ooRtQT3tu7Kr8v1Jkw6","2BFjLOPf1COulZePxJxrdk","1E1QVUnGb7UwbYyT0lPilv"]},{"id":"","name":"Basic Wall:Exterior - Brick on Block:185064","type":"IfcWallStandardCase","parent":null},{"id":"0jf0rYHfX3RAB3bSIRjmpw","name":"Basic Wall:Exterior - Brick on Block:185014","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNtSE","propertySetIds":["2eb32cMiTFwBvyFQwPMyqW","0XdAKypsnCWgcClrRLl0H6","2P5BgeWB98eQycO036lJ$U","3$dvxTby5AkwVGNjAtLRoD","3zTGsUrU574vgM5Qz0bx0X","29pANHfMf79wajnEjoxrEF"]},{"id":"","name":"Basic Wall:Exterior - Brick on Block:185014","type":"IfcWallStandardCase","parent":null},{"id":"0jf0rYHfX3RAB3bSIRjmmy","name":"Basic Wall:Exterior - Brick on Block:184944","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNtSE","propertySetIds":["3J2Y0mVW19AhWSrtusc8vr","3F0oKJKMbCH9nMBiR1oALF","1gEYG6$SX39fiao2aAWjUA","3J69IB6A9FIhn4pkGTAeYd","0CkNanxZj0$gwEf8xyadtG","3wvoEzgu11ye0o75p61Eux"]},{"id":"","name":"Basic Wall:Exterior - Brick on Block:184944","type":"IfcWallStandardCase","parent":null},{"id":"0jf0rYHfX3RAB3bSIRjmxl","name":"Basic Roof:Live Roof over Wood Joist Flat Roof:184483","type":"IfcRoof","parent":"1xS3BCk291UvhgP2dvNtSE","propertySetIds":["2BUc9THWb7mhiAOHiwXNzo","3E4N1gKfLE7PC4oQw6MZwS","0UV3MQO4r4zfV3AmdSXGsZ","0pKZomC5f6t8ZPuUTZJElh","15DOACJkT9oPQ$8j3dLmWD","1XcYrJmS13X8zmkV2tgtxb","0TaHX3s1TFjxYTeMIwL35L","3KYJMSocf7EAw169T4Ks$A","0SkDyUZ6b4tvtR4H_3LMmy","2oq$fvFxf50h20edfdRClM"]},{"id":"09g7Eo3WDEihdnsYS1YDoI","name":"Basic Roof:Live Roof over Wood Joist Flat Roof:184483","type":"IfcSlab","parent":"0jf0rYHfX3RAB3bSIRjmxl"},{"id":"","name":"Basic Roof:Live Roof over Wood Joist Flat Roof:184483","type":"IfcSlab","parent":null},{"id":"1xS3BCk291UvhgP2dvNsgp","name":"T/FDN","type":"IfcBuildingStorey","parent":"1xS3BCk291UvhgP2a6eflK","elevation":"0,000000","propertySetIds":["12C$W$jzn3BBQjsT53GuaN","3TMTL7qXr6Huu6v_PFIbPx","3k47lSpQnCl8WO_A1l3P9M"]},{"id":"0kF45Qs8L9PAM9kmb1lT2Z","name":"Wall Foundation:Bearing Footing - 900 x 300:186656","type":"IfcFooting","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["12i817DNjFkOijoKbHTPYa","3t_mtKDHv8gugf3dPuul4u","3waL9w__r0YhdlcXgJY$1n","19aKQSGlH0ox$oeodK2IiQ","2C8rnjT7z9sAwrNRgOgxAh","2c3S8drq93K8Auf9Tdg6mS"]},{"id":"","name":"Wall Foundation:Bearing Footing - 900 x 300:186656","type":"IfcFooting","parent":null},{"id":"0kF45Qs8L9PAM9kmb1lT2N","name":"Wall Foundation:Bearing Footing - 900 x 300:186644","type":"IfcFooting","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["1ms6_mwE92oAC$FxBNABAn","2MDEg8eenBb9cT8uCIYuO6","0BvgAVw_b0yx70eeF0wI5k","3zKQFDk5DDv8gDMJzcUUO0","34cJVVfDDCDekcYY0V5UwB","0AmgEgOXr5K94t2WJvfQ0L"]},{"id":"","name":"Wall Foundation:Bearing Footing - 900 x 300:186644","type":"IfcFooting","parent":null},{"id":"0kF45Qs8L9PAM9kmb1lT2B","name":"Wall Foundation:Bearing Footing - 900 x 300:186632","type":"IfcFooting","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["0pBFr76vD95BaToU1oy_f6","36qLW5RA9A$9OrIobhK8lg","2uPCB6wmj7vuW6P4VpIuQt","0sCWOj5h9998FGOF6iC$cG","3gYPVIVuHFPh_Vz9rf72An","3j9RfcjYTAnhrLBin80pAS"]},{"id":"","name":"Wall Foundation:Bearing Footing - 900 x 300:186632","type":"IfcFooting","parent":null},{"id":"0kF45Qs8L9PAM9kmb1lT5$","name":"Wall Foundation:Bearing Footing - 900 x 300:186620","type":"IfcFooting","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["1usVcSzhn9_8dDVQSC0Mgd","1IFqJRcJf7NPNyq9sMlY1B","00pSezQu1E5R7_KPMObOjL","1bVpHckM53hA6zMclh0gcU","0WaGHpd1DDluLgf9IGlc3P","2be$UQNqb6u8x4tYtIqbz9"]},{"id":"","name":"Wall Foundation:Bearing Footing - 900 x 300:186620","type":"IfcFooting","parent":null},{"id":"0kF45Qs8L9PAM9kmb1lT5t","name":"Wall Foundation:Bearing Footing - 900 x 300:186612","type":"IfcFooting","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["3tKjK24xP8D8N_Rm16pIAj","2mxcPWIkD9IBiYtrRyreeM","2Vi3cqovr3PxPb0T5GWdFZ","08FdxrUT1DFuI20CRm369b","2QQN_hVTP6mezV57D0B0gK","15gQky8TrAnPlh_4O_KbFV"]},{"id":"","name":"Wall Foundation:Bearing Footing - 900 x 300:186612","type":"IfcFooting","parent":null},{"id":"0kF45Qs8L9PAM9kmb1lT5l","name":"Wall Foundation:Bearing Footing - 900 x 300:186604","type":"IfcFooting","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["3gJ58s3Z575BBy49CtvvSA","2oH4QamCTFoBTao5BcDOij","1vcCvm2wH1DxeEFwZ5sXLN","1X4MxP_az9Tutk4i9dqcMV","2s9I2wQ8X7r8n8flgSODAv","1mdqyAZhL538OZLQIUaJwF"]},{"id":"","name":"Wall Foundation:Bearing Footing - 900 x 300:186604","type":"IfcFooting","parent":null},{"id":"0kF45Qs8L9PAM9kmb1lT5d","name":"Wall Foundation:Bearing Footing - 900 x 300:186596","type":"IfcFooting","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["2KPETJUCP5yRMjMQojrG2t","30iKU1NlPBNRicyb1FsUQC","1Ifl8qnRf7IQDZl3Ng1RwO","1IjnTNSDD5ruace8pfZgDf","1MbzdEVOb6mhjflbcm0HDq","0VdGbm22b2YfqqGVGjGobk","2EUZ8PR599JOQ2QR$CfLyh","3npWwZ31P9hv3tqq5TW9SK","3eIxFPwfP2$851KVFS4y1s","3acR82xND3DPk3V9j2d3ms","2ZUJ$RBoL1ZR$5i3Ufd1UZ"]},{"id":"","name":"Wall Foundation:Bearing Footing - 900 x 300:186596","type":"IfcFooting","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FK1b","name":"Basic Wall:Foundation - Concrete (435mm):141018","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["3da1oOrzv7buDm1k09RdxK","34P7uY6sr4Hfsz2zlg$O8_","1dZERd_Oj8jQrcEeZSVXSh","2mUmINkRL5oPuZwok5DDo9","1M6fkK$Aj9ffphOUVjp$xD","0okhwAXg93_RBFZ7BFjxXJ","1kPNZx5t11Bg3Bgg5idqkD"]},{"id":"","name":"Basic Wall:Foundation - Concrete (435mm):141018","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FK04","name":"Basic Wall:Foundation - Concrete (435mm):140987","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["1NDG6k_Z93E9KB8EEDyxfZ","2$GkdzjUzBUfkXXzAeX0PM","0vxYlcPSf9fQ3vycbyUD4Z","3KDJ$aGVbFZOgT76n11p34","20uE3md5j9YxeJ8FT65wMM","26CGUyF7b058BN_bSTN$1Y","1cLPgUcCHESfhty4MgdQJd"]},{"id":"","name":"Basic Wall:Foundation - Concrete (435mm):140987","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FK3E","name":"Basic Wall:Foundation - Concrete (435mm):140913","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["1$EvBR75P2yPLMxxxEJ7AX","3Ly7zT9PL9m8JaNzXp2Dtl","2lTHl$xTr4af_Q2wVbfdvg","3SZL4iFz15je6D6EfBuVGO","0s15_BfPz8VvfhDnP$J2NZ","1nnXh$42H1uuM2GKCMTbBh","20SwhsPJH8ZerXIiBuErkY","2CFtMYUpL9lhwaFApsLxKN","3m2NL6H$HAdx64EEIgGTIi","3CBLfEDP986O8174nwM4ZR","1UkLawTgf1Y8rlJ7ROOpFN"]},{"id":"","name":"Basic Wall:Foundation - Concrete (435mm):140913","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FKE5","name":"Basic Wall:Foundation - Concrete (417mm):140602","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["368pPxvP14N8a7FhHe0E3y","04W$NU4Ev8VexmQgOBMStZ","0UTvGEtmX9vAojJlPGAXwb","1YCkGCJ6r3VAol6eZjMLgk","3YZDKZ2Hv0iwJR9E24LdI$","1JDnqMYPTE_xmYRGsZPmuC","0Uawe2WWnFXvzlM3KHujqd"]},{"id":"","name":"Basic Wall:Foundation - Concrete (417mm):140602","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FKEr","name":"Basic Wall:Foundation - Concrete (417mm):140554","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["01DGDoFsTA6BlIlhhFggd7","0DwADEtHX77uddddJXdUIk","13Acu$NLH2$hNPXMW7$F7K","1QhmLqm251Wwf4tqhCu3zL","2D7uKIujvDdfRwvHBJtzJ7","09KiiDbob8vvR$EfSZ7kVJ","2Nk_pomSn0pfDWqPqvb4Rd"]},{"id":"","name":"Basic Wall:Foundation - Concrete (417mm):140554","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FK9N","name":"Basic Wall:Foundation - Concrete (417mm):140520","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["3uVKycqHHBWR9P8jhwamoI","0q9Dh6s2LCp8kKE0eG7Fye","1b0OIRakv0rxrzwkE_OIN1","2Ly77fCpDAdha4kWx6$DXf","1ok6uirSX1DeJNWdRYznHQ","1asWiQAO92gPEgl2hbAr54","3iu8N4pPr0AQnsJml4Sv_W"]},{"id":"","name":"Basic Wall:Foundation - Concrete (417mm):140520","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FK80","name":"Basic Wall:Foundation - Concrete (417mm):140479","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNsgp","propertySetIds":["0vopP2uh5EmQd6LvKLcU0w","2KB7QjcsDF7vOQ3jDFsy6m","0GF8lu$yX0FQEBSKfE4um3","0vjx7OV2HA0RlRlarfUSxV","1PQS62y1b7OPsGwTAKaRXa","2HmZPcflr3NeyaH0WCt2bn","2pfD0NCe976ubfWpODukMb","13qGdqrePBJu2d23cj4boK","0NRCUopsb00Bib8F2PG0yj","00HCmBZuvD0OxVIAg2enms","1eqIYsohrBneqf7dnEmsZg"]},{"id":"","name":"Basic Wall:Foundation - Concrete (417mm):140479","type":"IfcWallStandardCase","parent":null},{"id":"1xS3BCk291UvhgP2dvNMQJ","name":"Level 2","type":"IfcBuildingStorey","parent":"1xS3BCk291UvhgP2a6eflK","elevation":"0,000000","propertySetIds":["27nnbITZr6N8sX6jeye79D","3E6rwjevv8APNLus2QgRj_","36dn4d9KjBmvb4xadCUJln"]},{"id":"2gRXFgjRn2HPE$YoDLX3FC","name":"B205","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["0Le7piZyL2vhHNMegbVX$O","3_eQsJ4PfErPw6$rZmahJD","0M5BQRYKf61gDtyxku3s32","31RVS$hM5EMudW7sCOtF1h","1falNn3N99ufetGr6M0UGw","3P4KdLXDjFceP4lo2XadPP"]},{"id":"","name":"B205","type":"IfcSpace","parent":null},{"id":"2gRXFgjRn2HPE$YoDLX3FV","name":"A205","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1RTcNEE1DDxwgBfyRMc5RI","37te6FMU53bvzYTgjYhKug","0lS3XFys17o9uj3tgeZ98a","3RxUy8ntX3veOzyE3YEZOK","3gI5wBQZLEkQp$YQ1cfbj7","2oh69zaf95uvVPWfFVj7mE"]},{"id":"","name":"A205","type":"IfcSpace","parent":null},{"id":"0BTBFw6f90Nfh9rP1dl_3A","name":"B202","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["37ufZqmE5DTOjt4YV3pGAB","3tpjGLrODAwPur$dXMAFRS","0MQOFpxFb9GxEBOQIJlXBu","0nH14UFnXEefcrr0tDWRH6","1p6_pOx0f6oPY7RFvqpAzt","0KtdBA_ev6JRzEDZxIionw"]},{"id":"","name":"B202","type":"IfcSpace","parent":null},{"id":"2kvhekJrnDjRw0CDkKW$KL","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206675","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3A","propertySetIds":["2NY5iLhNjA_wbKyFj0vggS","3ZeJ4GCuTDbwpY4cer9IrC","3ccZaAQSL5sRyUOrKwnA6H"]},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206675","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206675","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206675","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206675","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206675","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUtHN","name":"M_Bed-Standard:1981 x 2032mm - King:1981 x 2032mm - King:168914","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3A","propertySetIds":["1ww7O1Fcn57OZWzZ8v6tHW","2skqsja5H6TvN9U_n3$81H","3qx7Al0cv79xwmyCrdVM9Y"]},{"id":"","name":"M_Bed-Standard:1981 x 2032mm - King:1981 x 2032mm - King:168914","type":"IfcFurnishingElement","parent":null},{"id":"0wkEuT1wr1kOyafLY4vy_8","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:157607","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3A","propertySetIds":["0jvGempX51yBlsxKaUzX_p","3wbrXcG0D6B9OiZzmeHpO4","0nuuzIbR982uqM1Bu9Daa4"]},{"id":"","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:157607","type":"IfcFurnishingElement","parent":null},{"id":"0wkEuT1wr1kOyafLY4vyu$","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:157200","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3A","propertySetIds":["0GRvExXmv1iB$5yBg33gZJ","26fGFZr1LDR9uL9G4wKwG4","1va2jm$Zj9lvxg0LFjOv4f"]},{"id":"","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:157200","type":"IfcFurnishingElement","parent":null},{"id":"0BTBFw6f90Nfh9rP1dl_39","name":"B203","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["12tooVhM95SvZpUQstG2je","3_d2iINUTDIetK$F_EFwt0","0vtogO6y54k8Lhd2xwGi7b","1P5ytJ3wr3Vucmlx6QXAxC","3gX2TXEAjBmP9M66vrzlQB","0LcukHoMn83gn2jsJScFC9"]},{"id":"","name":"B203","type":"IfcSpace","parent":null},{"id":"2kvhekJrnDjRw0CDkKW$UD","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206283","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_39","propertySetIds":["0eyMY$t7v3POvgjrkZHwF8","2H1DS8diD4dAJtkEcSaTop","2wBqriQVz169QfNcj5YFDA"]},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206283","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206283","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206283","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206283","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206283","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUtM4","name":"M_Bed-Standard:1525 x 2007mm - Queen:1525 x 2007mm - Queen:168449","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_39","propertySetIds":["1cYHv5H650Re4pglovEdF4","1pt6nfXwjFSgir9BsmGZ8o","2KRiAjCyD6vgVxqZ9d2f_Y"]},{"id":"","name":"M_Bed-Standard:1525 x 2007mm - Queen:1525 x 2007mm - Queen:168449","type":"IfcFurnishingElement","parent":null},{"id":"0wkEuT1wr1kOyafLY4vy6k","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:158081","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_39","propertySetIds":["36I6aGlFP4QxUnrIDooWqf","3enAyhfsTCdQ2XTCUN_ey3","3Z24zi7dL99QUK1PLuYfQ_"]},{"id":"","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:158081","type":"IfcFurnishingElement","parent":null},{"id":"0wkEuT1wr1kOyafLY4vy6l","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:158080","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_39","propertySetIds":["23nBQYPIX4Iug04yYnLVHB","3bqIHJnev9Cum1fUE1_lU6","1A3_u9Acj0vfrnfvI91htZ"]},{"id":"","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:158080","type":"IfcFurnishingElement","parent":null},{"id":"0BTBFw6f90Nfh9rP1dl_3C","name":"B204","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1M2dlVz9518gqW3K4A3Wko","0xSeFHrZ1CZuEMmk38x0QF","3gjfUYZq9DwuASJKvf4DMe","3L9nBCVmPAHvQSvjSGkuZj","2DBEp0dw5EbBc71oPLHqHa","1gHpw4KGfCYBVgwXpDSqdK"]},{"id":"","name":"B204","type":"IfcSpace","parent":null},{"id":"2gRXFgjRn2HPE$YoDLX0q2","name":"M_Vanity Cabinet-Double Door Sink Unit:650 x 450 mm:650 x 450 mm:205239","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3C","propertySetIds":["1BedrTk690NBfT0I0PZxQ8","0zXecetLH99etkOTtkx$S6","3JLt_8GU18Cg10xqr$ZKlu"]},{"id":"","name":"M_Vanity Cabinet-Double Door Sink Unit:650 x 450 mm:650 x 450 mm:205239","type":"IfcFurnishingElement","parent":null},{"id":"2gRXFgjRn2HPE$YoDLX0mp","name":"M_Vanity Cabinet-Double Door Sink Unit:650 x 450 mm:650 x 450 mm:204934","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3C","propertySetIds":["1xVf4rtVT5zR0gULZ3r1fL","2W06Oj9zT0HRbZl2SCpEOb","0Py5q4aFzC0hJ6k2cM6ZjX"]},{"id":"","name":"M_Vanity Cabinet-Double Door Sink Unit:650 x 450 mm:650 x 450 mm:204934","type":"IfcFurnishingElement","parent":null},{"id":"0BTBFw6f90Nfh9rP1dl_3G","name":"B201","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["12HfC6h9j0jOkZGeMeTHzr","2jplh4jvrDRh0pbqcxjuyk","22_RtiSHf0nv9ZdF29UICJ","0r_GHwaivEKBxuidwCiUao","3te4gDXlTDdwAHxaLuGesO","2NdufmIfT1ufixZs2uq1my"]},{"id":"","name":"B201","type":"IfcSpace","parent":null},{"id":"0BTBFw6f90Nfh9rP1dlXrc","name":"A202","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1VLrzOGZX4gOnHKdXCl3zA","3QSktcYG16FQtMLw$RQK7u","1M2ymagMX9yPil6Dh99OcX","0Iq3kuYNP0Qw7FBEp1_wp3","0nHKHMAS1BZQV3tiKLZGoe","1oSj2gz5D9Tg57X0BCxTJg"]},{"id":"","name":"A202","type":"IfcSpace","parent":null},{"id":"2kvhekJrnDjRw0CDkKW$JW","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206502","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXrc","propertySetIds":["1YPdO2q198FBIZWHWFC4Vb","17K8J2JcL6cAsks2RghwaH","2VktvDc396vOiTYddgKLFx"]},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206502","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206502","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206502","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206502","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206502","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUtI8","name":"M_Bed-Standard:1981 x 2032mm - King:1981 x 2032mm - King:168717","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXrc","propertySetIds":["1IzyUMlv59MhIWeNpe9idC","2K7ElVBHbE5h6_YaMb9Leq","1xtwW$Yhz9Ef1pxniSUYKT","3a1N3Pcwv3CeOHvB9_j1ss","3d6JrsMor68wlOCd_2B7qE","2gHnsT0$rEO8VKxYWaT4f8","2wq1UPxwrBCR7vlmiprk2R"]},{"id":"","name":"M_Bed-Standard:1981 x 2032mm - King:1981 x 2032mm - King:168717","type":"IfcFurnishingElement","parent":null},{"id":"0wkEuT1wr1kOyafLY4vy4F","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:157984","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXrc","propertySetIds":["36DEJvnKzAWPN3DQfhgAjF","3aLkH1grj53gtkxE4s6Pin","1yLzcsi7z0SuWw_MMBk3lM"]},{"id":"","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:157984","type":"IfcFurnishingElement","parent":null},{"id":"0wkEuT1wr1kOyafLY4vy4m","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:157983","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXrc","propertySetIds":["1pZasTjM54yBJmwqxscFhv","16hJQAf1n0puLu8iPiEUa2","2mHadkJlT9Tx0H5pgjJVqz"]},{"id":"","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:157983","type":"IfcFurnishingElement","parent":null},{"id":"0BTBFw6f90Nfh9rP1dlXrb","name":"A203","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["28FbaGe0j1rAOBLGPKdKfI","2VqkBH6eHD$xxCg5Y_8y3p","0CUjzUNFPE_PYNByQqg3Hj","0zIl6I0df8hgl7og45xK0J","29tkV921v12vbmOaerNRTn","31cY$XpW9ApPotBOg2toW8"]},{"id":"","name":"A203","type":"IfcSpace","parent":null},{"id":"2kvhekJrnDjRw0CDkKW$fQ","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206876","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXrb","propertySetIds":["1SPtpWtP94Th38nZ57n7bk","2Mw$d$csf4ORuK775Vt4MJ","1X4LmMy$5Aah1h8eKF6GpG"]},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206876","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206876","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206876","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206876","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206876","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUtEr","name":"M_Bed-Standard:1525 x 2007mm - Queen:1525 x 2007mm - Queen:169008","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXrb","propertySetIds":["1Ud_BkfgXE_xZzCdmy9JcI","24GVVIdE1BowXIBbuNGOc9","1ZN$Cd9vnBreXHV8jQn2XK","2litlPRcf9dvDN05YXljxI","3ApGkUzDzBWuP5s9esvFXt","32oWTITZP2SBDJCULH6fL8","3A6hVqHJTD0f3lVQ3LWQ_5"]},{"id":"","name":"M_Bed-Standard:1525 x 2007mm - Queen:1525 x 2007mm - Queen:169008","type":"IfcFurnishingElement","parent":null},{"id":"0wkEuT1wr1kOyafLY4vy3G","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:157951","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXrb","propertySetIds":["0IezQV_F9E0BxbrtjToNCs","0UBtLdrsz7Gxm1iAz4ABES","1ziULTUK5D8hMCaUeabJI8"]},{"id":"","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:157951","type":"IfcFurnishingElement","parent":null},{"id":"0wkEuT1wr1kOyafLY4vy3H","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:157950","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXrb","propertySetIds":["2cUf4XcNT7UALExEz6VHx5","11skZ$XujB$QB7dJyARH_E","33A2jmdjbCRO4wkSF$VIoV","02YRwqk3L1NuR1jNBdW9vN","0jfbX8rrL7ZhSr_eQM83s4","3cXxZMF9nCowCqCuyQmzG7","2bcHQxY1T5TB11t$_3xmg_","1mgN39Cxv3ohAPDo6z2Kaa"]},{"id":"","name":"M_Tall Cabinet-Single Door(2):800 mm:800 mm:157950","type":"IfcFurnishingElement","parent":null},{"id":"0BTBFw6f90Nfh9rP1dlXre","name":"A204","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3fsBtmxYX4FRznLeiElMNp","1GcZqQX3v2MPwbtVDaCZW6","0ABv2czUH44wJtVYaok1az","0W7Gg0CVX6OPJCD9unWQ7H","29LaTpg9D8VAGG9YOnxP9U","3Cjn7hogj1BBNH1Oc0VJl3"]},{"id":"","name":"A204","type":"IfcSpace","parent":null},{"id":"2gRXFgjRn2HPE$YoDLX0ra","name":"M_Vanity Cabinet-Double Door Sink Unit:650 x 450 mm:650 x 450 mm:205265","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXre","propertySetIds":["0T$3Okowz4v9YbQZIez73_","3n0qsC6Qn5Twn1s3B5jMTX","38NdU4LQr0jvfP7OIbJBn2"]},{"id":"","name":"M_Vanity Cabinet-Double Door Sink Unit:650 x 450 mm:650 x 450 mm:205265","type":"IfcFurnishingElement","parent":null},{"id":"2gRXFgjRn2HPE$YoDLX0rb","name":"M_Vanity Cabinet-Double Door Sink Unit:650 x 450 mm:650 x 450 mm:205264","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXre","propertySetIds":["1T7zhUxajBTv03oj$XBunI","1N2dlsmZP3b9QdAxx1pL29","36yAO_C758Tx_4mRcd$1m1","0yYky4FZbAuebrNsIn50bO","2MIPE3JQfBeRCavd_VLSgi","2I0S0Hcu5EHu9bCJtkTbXv","0WEVeTZLr5CwfSFahs62FF","1ZvWdq6QvF1ARBjVgiszP7"]},{"id":"","name":"M_Vanity Cabinet-Double Door Sink Unit:650 x 450 mm:650 x 450 mm:205264","type":"IfcFurnishingElement","parent":null},{"id":"0BTBFw6f90Nfh9rP1dlXri","name":"A201","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1FSMCIGGj1NvQMofIfCMwP","0q0Y43bv95S9Dk8VOcZYSe","2c6TtusUb1J9SO1FVgZEUV","0MRHp8PFb1rfsgHyp8nD2_","2BxmGiHJ94GBldWBSKNgdB","144IKzDaD43Qu1cUhYpcwj"]},{"id":"","name":"A201","type":"IfcSpace","parent":null},{"id":"2OrWItJ6zAwBNp0OUxK$Dw","name":"M_W-Wide Flange:W410X60:W410X60:209263","type":"IfcBeam","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1n96DzOyDDCvdtLE5UBydq","0KisbjPOnCDAiklsS8ZIdz","2NGOKOI9TCze7x507$LoX7","3FZpJW8R5FlB_sOGMonnLQ","0Xe6B2Tbf1EP17CvqOc8IM","0Ms9XuEjv0lecJygn43shn","1P4aeFuXXBBO0l4sf6GomD","2i$G_tAfrE3w4ELpAwOcVw","2WUdqd2F15W9DLLVDNCuYt","17UXC2X3fANRFw3IJtrSLd"]},{"id":"","name":"M_W-Wide Flange:W410X60:W410X60:209263","type":"IfcBeam","parent":null},{"id":"2OrWItJ6zAwBNp0OUxK$Dx","name":"M_W-Wide Flange:W410X60:W410X60:209262","type":"IfcBeam","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["0rmgCeUk1CnPu_nWCo2ae_","2K8GKt_d56$vEgSYzdpK2N","2h0JDpY2T0t9H1uxLBfp5_","22I5GTcAT2oQpr78ZwvXn3","3_r5vuyLjBQR17OoxZz9kM","1LIFBBtm16Mx5RhVMNPAy2","2JkSnOwTL3gAZEFOZ1gnL3","1v9fQ5j_r7wPSSN4Dk8KoD","1DJZM8QsH2lPmatXUi30qy","2zAYaCRDn7vR7eUmgxOORQ"]},{"id":"","name":"M_W-Wide Flange:W410X60:W410X60:209262","type":"IfcBeam","parent":null},{"id":"2OrWItJ6zAwBNp0OUxK$CR","name":"M_W-Wide Flange:W410X60:W410X60:209166","type":"IfcBeam","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3RBmZ40zT3efH7WM5Zj$Hn","2nw2UkJY9BPQGjri2aAo2M","3hO4RWJETCgBjyMX56lSGl","3Cf5IwhAzEfgCJTEATNMwh","3raM8W_SD00PI4ClqcpRF0","0hw9K2F2L6BA5gJhhivyMn","0y6T65pQ59TPMPHJ2GwaqC","1I$4zyCAv3Oxp6bXBwb6hh","0kwYQOQAH8h9Op$vorbmwa","3pbmnBkQbD_OtCI22Imy3F"]},{"id":"","name":"M_W-Wide Flange:W410X60:W410X60:209166","type":"IfcBeam","parent":null},{"id":"2OrWItJ6zAwBNp0OUxK$Bq","name":"M_W-Wide Flange:W410X60:W410X60:209121","type":"IfcBeam","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["2Jg$1I23DCvPkNZnt7Y0oZ","2YU4uisdnA_9yySbzkIbHL","2UlilZTMLBkxjDFKrZOGEJ","2x4C6gM617TgKG6LjADy$g","3RSUFpvQv0LPhE7W_qZ_Ao","3G8UFXwwr32fu9wn9Hho9o","28$z4Wf_H8VQyoX$kQevSd","0XT3aIgkrBFO1$7iqhr77G","0XWg472N9EEeeVnsLsHuXN","2rmSS2cCH1fOj4a5EMohWD"]},{"id":"","name":"M_W-Wide Flange:W410X60:W410X60:209121","type":"IfcBeam","parent":null},{"id":"1aj$VJZFn2TxepZUBcKpac","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:204034","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3Ki0SCkeX2XPg_r3O7VvUI","0MrhFP4PT2hB0HeMptzost","3TsbFW8ir9ohMOKmhbU$RX","02dvAkK69ErPpMo8sN7i39","2z$k983KDA0hkQqMXaW49y"]},{"id":"","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:204034","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:204034","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:204034","type":"IfcDoor","parent":null},{"id":"1aj$VJZFn2TxepZUBcKpZw","name":"Basic Wall:Interior - Partition (92mm Stud):203998","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1SSZkkWQD09eGB$YN_Q43x","0ehJUUCIv1lhQcBmtrUQp9","0OIsOgAqL468Wz7oGiFua1","1fDxe3E_z0PBulwt8K1np4","37B0lHC8fCyRcl2wm6y9i3","1yHZaI7Gr3D88naUz8soc7"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):203998","type":"IfcWallStandardCase","parent":null},{"id":"1aj$VJZFn2TxepZUBcKp$i","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:203720","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["2jmeLmf_r13vSrFXJx2Aj_","2dT8TSKs11wOWD0XYaq4a3","25jT0lBonAtBTvTFjYFUZ_","1XvYtcbHjBo9UeObav9h_Z","2_s5lNfnD9YQJ$$P_WYlBj"]},{"id":"","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:203720","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:203720","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:203720","type":"IfcDoor","parent":null},{"id":"1aj$VJZFn2TxepZUBcKpvt","name":"Basic Wall:Interior - Partition (92mm Stud):203347","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["2_Z1DOznv9VBfumnuceSXK","2HVMBRocD5jgCtBk7AhA8s","3ah$c934bD6Q4ITXQcIucc","2XhvHqgwH73uWTi_Un0bvE","0NJVffLxD3RhfHkRvndLsN","2gdnCiBl18sg5W24OVYqap"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):203347","type":"IfcWallStandardCase","parent":null},{"id":"0dxE1Sy6nDqfpDb5vIMN_Z","name":"Basic Wall:Interior - Furring (152 mm Stud):194166","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1nhdPCe6z8vwlvm98ogWO6","2G9Tb6S5z4kxQIxSA$bmWi","1rKOEiUUb4fP32D39h3lBp","3CubpNf3rBIhWv7BxWDCIP","3XgmNmXDj9JfGqA93kaaBa","3zRC_kUWf5GRPAwZaJmt2$"]},{"id":"","name":"Basic Wall:Interior - Furring (152 mm Stud):194166","type":"IfcWallStandardCase","parent":null},{"id":"0dxE1Sy6nDqfpDb5vIMNiA","name":"Basic Wall:Interior - Furring (152 mm Stud):193247","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3IVcAbIqrDfhv90nNz20QK","1FL13WzQL4Ewo3DFxYX25x","0S39bcKoH4fvRHYTdVdz29","0Fja1o7XrDQAwbcgQKcTSn","2TkUTGgSr0YOjEHZBMzyT$","1Zfg2Dhr93xeunTk8zfTj4"]},{"id":"","name":"Basic Wall:Interior - Furring (152 mm Stud):193247","type":"IfcWallStandardCase","parent":null},{"id":"3bXiCStxP6Fgxdej$yc55m","name":"Compound Ceiling:Gypsum Board:187701","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["2F9Z2ReHvC3fdos7jkFJpL","3Xs0v_tk1BnAyM6V7zmZ0e","2r4i1jjDP0ifoGeLnEpo3O","2dwG8wtgf2Bgm2KF1Ve_Zh","293ZjjPo5Dcx9kFuKcg4$d"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187701","type":"IfcCovering","parent":null},{"id":"3bXiCStxP6Fgxdej$yc55k","name":"Compound Ceiling:Gypsum Board:187691","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1OD6u7bYrC6RByYsp$TWYX","3deE$MBxX1C88KyYGlQnJa","051EZOvkLAQPAJTYWwOxjk","06MvXdKxf3KeDu4Xv6tUrH","01xnmsGXfBiw1_L44e$H_J"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187691","type":"IfcCovering","parent":null},{"id":"3bXiCStxP6Fgxdej$yc55c","name":"Compound Ceiling:Gypsum Board:187683","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3CIe8RuUn1RxHiKCejMsf4","2FRR4F8110GAk2JTVN$3jF","3ObeoJXHn9qxxyqlf3ckBN","0wVpboO9f1YxfjJoDJ54Vz","3LP223XmbBSgtBGW9MAe8d"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187683","type":"IfcCovering","parent":null},{"id":"3bXiCStxP6Fgxdej$yc55U","name":"Compound Ceiling:Gypsum Board:187675","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1xcXYjBMv668Fd2Ow4h2a9","1MSydyLR51QgzsmZZechqu","1mfV_8$yTDXuAcpr_tEqfP","17nxNEY6bC2B$s4UkZLB5h","2UwjSM1cTEf9lfEOIp9FcM"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187675","type":"IfcCovering","parent":null},{"id":"3bXiCStxP6Fgxdej$yc55M","name":"Compound Ceiling:Gypsum Board:187667","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3$Oz8JotX2uBXMJw5ifOaY","0dSPOMZtj2sB993y5hdqIw","3chp9iWMHEmwqF_C4TAl9M","185lhR4TTAKfHAdsLryBA4","0t4SEiUQ9CoeffJsbJYjR5"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187667","type":"IfcCovering","parent":null},{"id":"3bXiCStxP6Fgxdej$yc55E","name":"Compound Ceiling:Gypsum Board:187659","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["09luNEYE11$P11_LiRLvn5","0fECHhJmn5rwxoWw6chHJT","0ch4MvgNP5B8MCh8RuXKaz","2PyrTNZ0X8BRUYoKZZfkSg","2RHq5roX9299l6XKTxFChr"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187659","type":"IfcCovering","parent":null},{"id":"3bXiCStxP6Fgxdej$yc554","name":"Compound Ceiling:Gypsum Board:187649","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1tezDxCV9FYBKfuUS7vbZQ","1hu8DzJX1D$85WhxD2u34Z","1A3TZ1ZSz8VRUy3vjSEaNy","3tC_xR5Wn8U9a4X0X5oZ13","0aK4g1pdT5CvcpyPelZCmL"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187649","type":"IfcCovering","parent":null},{"id":"3bXiCStxP6Fgxdej$yc52o","name":"Compound Ceiling:Gypsum Board:187639","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3WbrW6NND4Cx_usrAiLsW1","3Ni2vAihXF$eMCDloDunOE","2mF3tsBKPCBwhmSrCbRpmZ","3j$RlmNenAiQeF$t8qf2Ct","3s1d7RYnfFsRRdcPSy2BZP"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187639","type":"IfcCovering","parent":null},{"id":"1l0GAJtRTFv8$zmKJOH4ZZ","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:182101","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["2hsyf7SJ17BewXKpzJQe0e","2BL7nIwnD78QQQYDUhaW1e","3_oZEAS45BBxZ1cdo$6JDj","2BxA7GwdjC$PnqBRbd8b3e","3qHBAkcyX7U8FxEv$i2Ezs"]},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:182101","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:182101","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:182101","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:182101","type":"IfcWindow","parent":null},{"id":"1l0GAJtRTFv8$zmKJOH4aS","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:181930","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["0z1gYtJ_f2beCPtUdG_9K_","0rHcUjbPb7hv5KzPoGSb6B","3uszM4eWHDmAbpWKCoAEIn","0JG1P_6Sn7Cx3z_3WgVJwi","2i6Nbpe$13rAyUZVimaxqF"]},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:181930","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:181930","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:181930","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:181930","type":"IfcWindow","parent":null},{"id":"1l0GAJtRTFv8$zmKJOH4hv","name":"M_Fixed:819mm x 759mm:819mm x 759mm:181583","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1YEnMZrmb0fw5IQkjK7_hV","2ZRyth50j0DvilUq_TaenE","0F1mJhNF5BR89Mnh6$dRge","1sGJqFj7rAJu$d7yWwl$P_","2VgjeF9xb04AaYNO4vpvb2"]},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:181583","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:181583","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:181583","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:181583","type":"IfcWindow","parent":null},{"id":"1l0GAJtRTFv8$zmKJOH4gQ","name":"M_Casement:819mm x 759mm:819mm x 759mm:181548","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1080FuAhrFmRmP89N497q9","19q8jmX550$wSxX7zSE1tF","1x9Ho$hH53lgZvdbJk2rti","2Un5A1w6j1sf1XB9iWOO4F","18OU1Dmb9CLPpxT717WcKy"]},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:181548","type":"IfcWindow","parent":null},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:181548","type":"IfcWindow","parent":null},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:181548","type":"IfcWindow","parent":null},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:181548","type":"IfcWindow","parent":null},{"id":"1l0GAJtRTFv8$zmKJOH4kJ","name":"M_Fixed:819mm x 759mm:819mm x 759mm:181285","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["10_aK_3$10YAkgipvP48fR","2Jwdc3tY140QP5CF_9TRNX","35QATQQLr2jvTt9F9nUWeI","3yQoi3EKf3gvLBsPgskFgW","0V5HKOqbj18O_KDCBuwd69"]},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:181285","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:181285","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:181285","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:181285","type":"IfcWindow","parent":null},{"id":"1l0GAJtRTFv8$zmKJOH4pU","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:181096","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["0hEoL5_sz2QewBGP7UkE8O","17TVkY_1L17QZaq6zzA6bq","0TFDOs9kn5xgz_V96LfnTA","3nHXF3hrvEdwkRXV8bZWTA","0A6NGjcSr2RQFnjyf6C7x6"]},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:181096","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:181096","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:181096","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:181096","type":"IfcWindow","parent":null},{"id":"1l0GAJtRTFv8$zmKJOH4oq","name":"M_Casement:819mm x 759mm:819mm x 759mm:180994","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1CWAfBDR18igFN47uJLE9G","0eOwln7zXF28aMhPwgynTM","00wWpbrVT2YOhGPQl$ykoJ","2e1SxZjzrD3vGiuxZ_DLkU","0TA59JE6XFR8rMaSDDhh_O"]},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:180994","type":"IfcWindow","parent":null},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:180994","type":"IfcWindow","parent":null},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:180994","type":"IfcWindow","parent":null},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:180994","type":"IfcWindow","parent":null},{"id":"1l0GAJtRTFv8$zmKJOH4qs","name":"M_Fixed:819mm x 759mm:819mm x 759mm:180864","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["0Vcx0MByzA7BuKtk9yeeu0","2PNmX5bN126e$SJJAPOyay","2Ovg4Hn09CA8FgE$aUVJ7K","0IjcdzJ7HCpe1ZvzVNQLKn","18iJ7AkN9DZRDbI9PquW6Z"]},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:180864","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:180864","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:180864","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:180864","type":"IfcWindow","parent":null},{"id":"1l0GAJtRTFv8$zmKJOH4u1","name":"M_Fixed:819mm x 759mm:819mm x 759mm:180663","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3pYLcu4djDMfbo$L92IZ2u","2Jf9JPAHjCLw6EcUg0xszW","2ewzc3ppbCwBll33LFBCHT","2p4gHVrqfA0wBhsC$z89$w","2MoI0iJIX47QaPklmpH2IV"]},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:180663","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:180663","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:180663","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:180663","type":"IfcWindow","parent":null},{"id":"1l0GAJtRTFv8$zmKJOH4$e","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:180318","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["0gxtxQL2963Bfo2XeaeUcN","2XJQovBjvCtvpSqp$4w05I","0GF57FsQvBAO$dCkhUA6eO","0H1puE2A59WvpIXJEV88QW","172AQiTOr1jxh2CnNuoSCx"]},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:180318","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:180318","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:180318","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:180318","type":"IfcWindow","parent":null},{"id":"2OBrcmyk58NupXoVOHUt0F","name":"Floor:Finish Floor - Ceramic Tile:169866","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["39K21YEcz9E9K0dSx5g0ru","2VIRXl4N1DRAm9zgqFtLG1","2V_bV33TnFGeVM6ao8ovFP","3N8oZ$4xL5SwIC0KB9g24E","1szvAtJBD8puwsU3vbHXKe","38TDddD757tBmTbmyAQOHN","0vEJdzrmXBkOtD9PHnTUGW","1_xhus5899ZwpbHD6Q4Z3Q"]},{"id":"","name":"Floor:Finish Floor - Ceramic Tile:169866","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUt2f","name":"Floor:Finish Floor - Ceramic Tile:169772","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["2C24Gi08H1WhLiIE0dC1HQ","0ur4oBBpn5CBeCrxObzXlg","0bnChxq9HA_BonHLN5MDVS","1KCqe2ZSv7POgU4QAMsv24","0RfO2qO752GBaPRhTqYwHq","0LdgaWN7b9nPteD2dznXAl","2y8Z$8Ci9Eig8aKdONYPGj","2gBilBnbL1dP1H5EBsWeQW"]},{"id":"","name":"Floor:Finish Floor - Ceramic Tile:169772","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUt5W","name":"Floor:Finish Floor - Wood:169701","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1WUXtBSAL8$QBxDf1BSEeQ","0wJ88KyHf9rxruhSSx6pB5","1Dn78sWab7fRE$gIxWeQvj","1S7GzAAfL45Ryonq9IXavn","2omOjeeyP2gxa7UE0z_s7r","1e2xV3opL59fid15rGnyhY","2aNaRraHjCyhNjxNCgoZQ$","0kW2juaYn3Sgi$29LZOXpv"]},{"id":"","name":"Floor:Finish Floor - Wood:169701","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUt8s","name":"Floor:Finish Floor - Wood:169395","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["2wZNFXA3HBoxamcc0ItDz1","2rcKCODjTE3O9$KykhVu15","37Py5gLzD4WuXdn2XRwdih","2P_1OtK5H5m8ZUiFqvhder","2DjHbIEZf9ZhySOo$I48yM","14IdAtNLrB7gECZT4nN8MA","2cjVAZr5fDvPXjvxc_X4Ki","09zx0ugV57fx2lZCRNwEiy"]},{"id":"","name":"Floor:Finish Floor - Wood:169395","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUt8F","name":"Floor:Finish Floor - Wood:169354","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["2ILGhX4zn4TxzLBBhnUI1t","2D7o7Tf8DDTxASx3teTwB7","3XkiH0S4HEwxIL5QZOx$7y","0vgb2Z5nT6gfwYMPA1fze3","0nt0bXVGr9Ff56TGTnlU7w","1ZtrCSEL17NBJ7L78iHi38","1XoI1aMXfEfQr_rdZrqxKz","0nP6Rg5tL2JQPg7$4Vpgk9"]},{"id":"","name":"Floor:Finish Floor - Wood:169354","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUtBP","name":"Floor:Finish Floor - Wood:169308","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3_Ag15_Pf6d8fYcRd8pIMV","15uYbdCWfDPwfKsK8Ol6Lg","3ESqAQXcL90PoMrhesDR9M","1f0Zp1sp56f9hVvstBvuvF","19UY71K297GegFP6D4uys5","0imL4l5yL7LufQAQJ_CdHZ","0J_WN4oQj3buI9XOLezAkS","2_jWSw70L5MOiZjZjAKrAK"]},{"id":"","name":"Floor:Finish Floor - Wood:169308","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUtDX","name":"Floor:Finish Floor - Wood:169188","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1G1trpcK90r9GTrhvIFL9b","1E8I5xnM15vQFW7DwfWpbc","2o3gYTfDr1mOrx5j6jSOkL","0MT45M0yf0gAjm0ro3ybGU","0_kcrUu4TFqPcgd416hoDS","13gXc4Q4n4rfr18m3nLtnR","2ztR25CKf3VPe4RO59MeHG","2Du1Ry1Fr5derasJha1u4e"]},{"id":"","name":"Floor:Finish Floor - Wood:169188","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUtC0","name":"Floor:Finish Floor - Wood:169093","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["00mXFN6njEWP$v0HKjwRvu","1x4neBeUr6NgmRi$nxiGiB","3m_GJTMWLCtQUNdI3fu_k_","16cZlg$U9AkgyQ2u8okg35","1Zh7IvjdnEQe5QxXbScD1P","2srZQjrbD2ZBnR9Jr89_wV","3tuPDasBD0IfuSuU6Yy9T4","13wN0f$4TEqhfE3pEcvVnN"]},{"id":"","name":"Floor:Finish Floor - Wood:169093","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUvPL","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:160208","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["0PRblILH9Ekx_Ks_TZpby_","3dVGMOzD9BBe$acI10yeXy","0MRXPey2HD7gV2n1s1FWdt","2TveAhHfnAkR7d4CcnOmid","19H7EAEGX5eRpllJz0oemg"]},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:160208","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:160208","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:160208","type":"IfcDoor","parent":null},{"id":"2OBrcmyk58NupXoVOHUvR4","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:160065","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1EBFkf0$T9XxPfMDNgNV0g","2jk8fb869D8wWAzrfNUxht","1Gpa4i_rj5mg$Y46DC3YTt","2BNnRGM1PBmvTZEVQ4nM3d","1i66UYusb7Kv18BWDe246s"]},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:160065","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:160065","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:160065","type":"IfcDoor","parent":null},{"id":"2OBrcmyk58NupXoVOHUvVV","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:159834","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["06hPg$08v729xqHynyKxQf","1ePu3nrsvBbPlxcK6KmXnb","3gj1Nx$UD72Pbc2_Qx1kLK","3RYQKVnLz2iuGaAXNoTmg$","17Oy3yfhb6SuwTROE4jYq_"]},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:159834","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:159834","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:159834","type":"IfcDoor","parent":null},{"id":"2OBrcmyk58NupXoVOHUuXp","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:159734","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["2YRl_fzPHDdundsFX4Hbve","00mqygXvb7khaFGz5MesVB","1R4zzbbcDFmxlmpA$XOjoy","0tCcZJWpfDaR1WJi3rZ74k","0wbSWqtmT90PUSDQNAgVlT"]},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:159734","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:159734","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:159734","type":"IfcDoor","parent":null},{"id":"1hOSvn6df7F8_7GcBWlSDm","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:150478","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3I$l7qhBj0U9XPvGJIo$P8","03AiXvtu9BSxSBJ_S8rh$_","2DVbpO8hHAdvDd5xq2XGv$","2kyAGyz051Ogo2HHnhzySf","3Sx$oKjNH9FOS_aK1YU7_C"]},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:150478","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:150478","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:150478","type":"IfcDoor","parent":null},{"id":"1hOSvn6df7F8_7GcBWlSFK","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:150378","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1_n6yXFJ5Ct8IFAekGu70C","3WJj6CpzbARf2kc9ZXd9O4","1uSCUKJy15cuwoOLa7WJkJ","2_h0tbUUHAMxVk26BoWhHF","3jO0PUICTCcBH1yf3yr5NO","0kwBVKRs54rPRax2fBUrV5","0JT9n4ifzDdQje8i1hh6sH","2pDC46u6P6YRL39xsqF4Fh","2wPgChCCHBxBYriCL3Jt4L","16vK6hEbf4QftjF_d4C0y6"]},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:150378","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:150378","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0864 x 2032mm:0864 x 2032mm:150378","type":"IfcDoor","parent":null},{"id":"1hOSvn6df7F8_7GcBWlS4Q","name":"M_Fixed:819mm x 759mm:819mm x 759mm:149924","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1xs$hHHOT6lOSQL9k6E3xH","1oAKdTlAHFBQGGCzY7R0CC","1w3ajvkwf6wf049pt$90uH","0n3k5QKZb0lxuKqzn8LGyZ","1k$tGnkO98nu7bvUzsj_q0"]},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:149924","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:149924","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:149924","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:149924","type":"IfcWindow","parent":null},{"id":"1hOSvn6df7F8_7GcBWlS1M","name":"M_Casement:819mm x 759mm:819mm x 759mm:149736","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["2uTHelKaP6OgA8oRYP_8Dq","1ws$5ay2T0hfW9tWxc0U3J","0X49hcxgH82eIyiJcylzMu","0KIyI4IBr6WAGWiHIXFEty","14Q1fDr3XCrhhmcpoE_Z2R"]},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:149736","type":"IfcWindow","parent":null},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:149736","type":"IfcWindow","parent":null},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:149736","type":"IfcWindow","parent":null},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:149736","type":"IfcWindow","parent":null},{"id":"1hOSvn6df7F8_7GcBWlS2V","name":"M_Fixed:819mm x 759mm:819mm x 759mm:149537","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["2v2CmD6R14S9suci2IlKtj","2HLVx$FTP4nu262LBwbUMT","1RcDL_RsD8shN7P9PSE14V","0aC7eYbSbBFAestLF0d3ic","0F6RqInVHEjwGSk3fyoYUC"]},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:149537","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:149537","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:149537","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:149537","type":"IfcWindow","parent":null},{"id":"1hOSvn6df7F8_7GcBWlS_W","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:149278","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1lJouz0QH7buW1q2b5FA_f","1DVclak1L83eMPA4cwXyFb","2nV$LtKG1ELwZXnN7iF1p5","3fFOTca4nDwugzDJfpf3kt","06HiRt9CLDk9RPhMVroIhw"]},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:149278","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:149278","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:149278","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:149278","type":"IfcWindow","parent":null},{"id":"1hOSvn6df7F8_7GcBWlSnC","name":"M_Fixed:819mm x 759mm:819mm x 759mm:148722","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3cE$Jk$N1FGwLl4eJPIjIv","0yuITuvQb26OiL3F3CCsYw","1HjbMGto1DEAHB6IbJwNg6","1qjkUeI2j0r85QBJQ2Byr$","1UBWwQohbFHe7w7ZaJ3OMV"]},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:148722","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:148722","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:148722","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:148722","type":"IfcWindow","parent":null},{"id":"1hOSvn6df7F8_7GcBWlSp1","name":"M_Casement:819mm x 759mm:819mm x 759mm:148607","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1X61bllhn2cQT1c_eFw1K8","1UklwVHAD9vutlAddJMpVL","1fraz2_Jz9ERFxo1ozwUAu","0OfZIw1wHEJgO0tXvmpbnZ","0pL5uSRuv1XuMhRArRMzW_","1N7GVdBBH19QsNh1Ns33Hu","2h5_ht7YnFQRctwK4i3hSY","2dRR06xITCmAnCIaUBeDAr","2Klexyjev0pfFCAVapxqIz","1rDOWthZz66ujq30JHwxUB"]},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:148607","type":"IfcWindow","parent":null},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:148607","type":"IfcWindow","parent":null},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:148607","type":"IfcWindow","parent":null},{"id":"","name":"M_Casement:819mm x 759mm:819mm x 759mm:148607","type":"IfcWindow","parent":null},{"id":"1hOSvn6df7F8_7GcBWlSga","name":"M_Fixed:819mm x 759mm:819mm x 759mm:147994","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["17nFo3MIH4_RONTLOkYwNI","02LRgP0615TvUrosaVE7CF","0p0G8vjJ17qO74EYdQxtYg","0Tj0GHhlL06OhFfaoB3Bs7","3GM4sfIzH39fnTTAp9_Ztm","3tfbBQeY9A9QM$oxwFx4X1","3oiCIpwxXAkuIQ7kgGp41d","3axvFjdOXEbQ8zfUp01OLd","1avLKK7U5638OiLaidRuMk","3sLWmpDvvBnQp6QOEUhuQ_"]},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:147994","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:147994","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:147994","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:819mm x 759mm:819mm x 759mm:147994","type":"IfcWindow","parent":null},{"id":"1hOSvn6df7F8_7GcBWlSXO","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:147686","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1vMKxTxbD4kgVWGmXaklIx","0hIKFOSqTEIgwSfXOSQmVi","38yiDyjE96agi5R_U9EOXf","14lLtwO0TAhv_qcaSOJcLl","04rEUACvXBMv$WpKiUd554","2qv3RPSj5Ebvk0pHB8jRxR","0g4_$qgUf5s9R_XyaxVUQh","0UBYNrxxHAaPhN3PMAJ5$8","1mUU5JLT5FYfMMYgp_Iq1P","2JBIeCcXn6reu7ROj3bEDY"]},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:147686","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:147686","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:147686","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:2800mm x 2410mm:2800mm x 2410mm:147686","type":"IfcWindow","parent":null},{"id":"1hOSvn6df7F8_7GcBWlRrM","name":"Floor:Residential - Wood Joist with Subflooring:144872","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1bznG0yOD0gOJPvwIDklrH","3Ze$SfvKH3H9xcDI86E0n0","2APfVS7Hr3XR724gOsUC2L","0adxOB_uzD4R04_o967r6o","2ZFWb63M15rxYnVtmF9p1j","34he9PLU5F9RlfNc3WOLRY","3TW4qTBXzAAg7gwIi8X7Be","1NOIKpqtzAuPVX8YV2j_01"]},{"id":"","name":"Floor:Residential - Wood Joist with Subflooring:144872","type":"IfcSlab","parent":null},{"id":"1hOSvn6df7F8_7GcBWlRqU","name":"Floor:Residential - Wood Joist with Subflooring:144800","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["0r0jymk4DD9wNGIZhui9iM","0P_jH96fLBhukrzM8lPtKZ","3uBbkp5inFJeLgtqoFJFli","1SgoVBg0fECPaP3u74xnAk","1Cvyh5GCT4PglSmL9p_2LJ","3Dmd6jt5rChAIY3$n$RUXe","1CGFbuTR59AB7ehIWObbU0","1QuSLdJtz13Bn7zgSiVgHT","0rzDpfMj56MBvB7cUrbLuy","2G1sas5WHEZAY6Ky5OL752","0ntOX81YT4SBNIoQDJeK__","2SmnsdG3jAyhzbRkCsW4gq"]},{"id":"","name":"Floor:Residential - Wood Joist with Subflooring:144800","type":"IfcSlab","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FLCm","name":"Basic Wall:Interior - Plumbing (152mm Stud):144783","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3iXykSHG15Wg7kN3f8A87m","2JWU_gL6z7Fv7R71yqN7Bk","0SthNs9p58ghq0DU0PrtD6","1FPDCgx9L3cwOWdOEJnAst","2$uH_TGcf4ohKOTacqzCaW","1f0tJ7WIn2fQa4Rwm5$fIQ"]},{"id":"","name":"Basic Wall:Interior - Plumbing (152mm Stud):144783","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FLEJ","name":"Basic Wall:Interior - Partition (92mm Stud):144684","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["00gkvvom1EdhsXFu3xbplC","10HPv$8wD9dwEhmpQuVb9X","1exT1THT5An9MgcijEajNK","1puxSsg$13_vNtV8rozmOO","331HYCPdzER9kcqrnQLvGc","0kjuX9uibA6PUS53hIL2rM"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):144684","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FL96","name":"Basic Wall:Interior - Partition (92mm Stud):144633","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["0zZX4WITv6rg0O2mb1uFvv","3H44tKo9D6vRXRBgl7q17K","0tFqWzhL57fvLwR0k3SM4L","06hpUIytf1XQLjlh3DdKjh","0JVBu8BI512OYcFzX_9wSg","1vNMEp5lHDHhmgGzt2a0ih"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):144633","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FL9r","name":"Basic Wall:Interior - Partition (92mm Stud):144586","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1V7M7A8SP1G8t6hk1Bh3hO","2dNyzZ3Q19YQwklhNaZFHq","2A3RcQonD5$Av48L8WOhxp","3$Yet0MQjATOlDMtrdGu_X","2mEpBD4wHDgf7QeVRnEBkQ","3tFDW3gov9se9TXXPnvPve"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):144586","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FLKI","name":"Basic Wall:Interior - Partition (92mm Stud):144301","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["11ZdONTufCmB0LeFfRzaY7","2YkYXgeMjDDvOIMFdtvK8s","09X16PdlDAjgA$901rWPhM","2NTHhhl3jBjOVBJg9mduzj","129aP9yKX7UfV88AeNu2mg","2U5yfEe3P66hGRhADJUIWH"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):144301","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FLMr","name":"Basic Wall:Interior - Plumbing (152mm Stud):144138","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["0Vh5ySrG58kxio8z1LyiDl","3IurLSAGf57xWS9EoA3tBE","29n_CX6yD56vTZDPNLiJ5J","0V5FXM_uj5swRbSZl0mOgJ","2rlnqs_qj4meLQViXFBMuY","0TVlEUfq9F8AbxhsLNHSsS","15aU1pv09BjuwfF59J9E0i","2_c7J0Vcv3V93Oy8DjsqHh","3NPl3eiOH7eO3Vn6GaH$E9","1KWiKuMtj1zxlj3OrJo88u"]},{"id":"","name":"Basic Wall:Interior - Plumbing (152mm Stud):144138","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FLJd","name":"Basic Wall:Interior - Partition (92mm Stud):143960","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["1dAMM7Hm5B9xSUECQhlNLq","3EbnoT3g11Z9NEM5OFApf7","2_e6DflB90_B4cFWKfKdUS","3MVzF5gd9F1P1rCJEa_ynN","0o4VcyUG1BAhwKC6GwR_ME","15oY5eYoz3xRp8eua0xfKC"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):143960","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FLIE","name":"Basic Wall:Interior - Partition (92mm Stud):143921","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["221fKV7PbAwRs80rLr5LaW","2cKdbdWDvCc8RhZ_80CLVK","0GjUiof$L0aA99noszyPFe","0s7amHxWn4axfZFVIaGd8F","23TvIUaJz1bemN65w5YL4V","1Bjm1ycEf3NvGHEKDC6rm6"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):143921","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FLPP","name":"Basic Wall:Exterior - Brick on Block:143590","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["14uelDeDX2ohnwvIINoGas","18qXw3UdzBgQhstL50wpUq","3OeR_LXn1729uYER_r8f1V","1nQMCOwADFvOeysf4l16dO","3n0ZdGOPj1P9VTieMb98aR","2o3vIZvhjERwg9AXmF8Xmc"]},{"id":"","name":"Basic Wall:Exterior - Brick on Block:143590","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FLOH","name":"Basic Wall:Exterior - Brick on Block:143534","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3GaJOaRBrF1glDNZ_rFoi_","1cByUaBT5BpP2vUO43ZRyP","0GafJweCPEVg8kte7F1hag","0TDkn8fuzFxfRe25suceu7","3pRGIV2yLAlxpKRlAKsQuP","3AdGhQKqL8bfZdc5_bEUrZ"]},{"id":"","name":"Basic Wall:Exterior - Brick on Block:143534","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FLR9","name":"Basic Wall:Exterior - Brick on Block:143478","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["0lMzh$SuP0dfpXxJ7G8RuD","0CGJPeVHf6bh4ZJhZ9O$3H","20KDqUoRH628_VRH7Fw$fj","2WW7uWmmr69wGc6mnf0nrp","2nYTWmT9D18P64x1ou1D50","2sulX7fVbB7Or1zam81xk7"]},{"id":"","name":"Basic Wall:Exterior - Brick on Block:143478","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FLQD","name":"Basic Wall:Exterior - Brick on Block:143410","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["0TwCn1_mr4s9M13Dl6_6q3","1_LNzStoX5KRTSGmWFhErh","3_mjb9F3r6PwtlNpfgwlGX","2EiTjiaJf0puAfzKwFx6n3","3YY3SriMzDX80O0f2nPZei","1mah_mDeb1pf1YT7Dab1At"]},{"id":"","name":"Basic Wall:Exterior - Brick on Block:143410","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FKau","name":"Basic Wall:Party Wall - CMU Residential Unit Dimising Wall:143239","type":"IfcWall","parent":"1xS3BCk291UvhgP2dvNMQJ","propertySetIds":["3qiqDLnAH92xJJ55HmvSC6","3UXPU$k8T7fexnhNKwkPZ2","1RZQgQOsb3fOjLoOEajp4V","0lOD8$5s98dvFLyApv_o0g","3eT0WPPJD2Gh8opb_2T7S_","2mtvZkhvL3nQaY3PgMwZ9g"]},{"id":"","name":"Basic Wall:Party Wall - CMU Residential Unit Dimising Wall:143239","type":"IfcWall","parent":null},{"id":"1xS3BCk291UvhgP2dvNMKI","name":"Level 1","type":"IfcBuildingStorey","parent":"1xS3BCk291UvhgP2a6eflK","elevation":"0,000000","propertySetIds":["15Cue4O593iuR5IfXeUemS","1AFgw0OMT1AQJk0DwMnH0e","1LcNq01Mb4TAwLaoVJy_wF","2K8OYX40X5nA7JttXNVS_W","14K4fgOkHAH8NqQhp1Kg1y","31$drkS3r7kPenjFa8USE0"]},{"id":"0BTBFw6f90Nfh9rP1dl_3Q","name":"B101","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0hZvTfjvH61eIkPQJO5LvA","3bU2xtk89FzRz1DwtEte81","2lMXpzhPn96BfDhcusjjtw","2LwYzxHFz2OBHAqFWPrNyi","3NAHROjWn88x5UM71J_mhl","1A1i9u$aL5vxdMXBVFPlfC"]},{"id":"","name":"B101","type":"IfcSpace","parent":null},{"id":"0BTBFw6f90Nfh9rP1dl_3P","name":"B104","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["36hVNX0OXFBuXN_5EcP6Lj","3IhT6zOwHE7vIP$JmOl978","3dVdLSDJDDuhfQUjGs60XR","0_DWbwOS99Qf1KQAIYdO_L","3uA6AmS8z1NwgYcPgnkdIH","3ucx2AW6z5X9bkgq4t5q2v"]},{"id":"","name":"B104","type":"IfcSpace","parent":null},{"id":"0BTBFw6f90Nfh9rP1dl_3S","name":"B103","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["3uf$C9G959FAPEZX0XTJgp","0wuURpxJ1BffIbJCA9j1m$","3v2RHNNA53bOIJaEGymbRI","26GgbXS5b8ffxKYPC8hydY","1vuIbN2TfAzBapWdc66E1W","1774LETVX1C8wg9IQBgnT2"]},{"id":"","name":"B103","type":"IfcSpace","parent":null},{"id":"0iEHWY1$XA8eQeeULq4ien","name":"M_Upper Cabinet-Double Door-Wall:1000mm:1000mm:192610","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["0TbtSR8qv7JfwLDzfgzjqa","2Y30jgFzb5IxgHNarXYsYP","18fCXU6_b6UgF$pCy4lQSo"]},{"id":"","name":"M_Upper Cabinet-Double Door-Wall:1000mm:1000mm:192610","type":"IfcFurnishingElement","parent":null},{"id":"0iEHWY1$XA8eQeeULq4jMl","name":"M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:192508","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["3xfgpDdTv0sAKa9eYkNIwM","0QrdBoIbv2agScyksqgkWz","285orToMTBOvW1wAKeW5v1"]},{"id":"","name":"M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:192508","type":"IfcFurnishingElement","parent":null},{"id":"0iEHWY1$XA8eQeeULq4jKO","name":"M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:192331","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["05LwnOEMzBsA0YEcn4oVAx","0VXDwLwLLF8BjQaOIzVkCt","18AN_BnSXDUeybGUOEG_zo"]},{"id":"","name":"M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:192331","type":"IfcFurnishingElement","parent":null},{"id":"0iEHWY1$XA8eQeeULq4jJA","name":"M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:192153","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["2L$i4TS7P3G8lKwyFpHu9G","1GDxTHLg55PPXjyY1Mp3vU","2XB4cJZNn4q8RmhTeSuQs6"]},{"id":"","name":"M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:192153","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvtA","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162383","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["3fYR3cSgTFL9Pibwm4ce7l","1dEZ8vSzPAgfTeEl8Px818","09DDfiV_572AnpUEq0DXp9"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162383","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvsm","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162357","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["0ooe9roGD2w9AbnaS8vRpB","02bAI0ZcfFsACHZOxZra_Z","3O57pDRNnB9fmLRYddi72Y"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162357","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvs2","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162311","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["3p2OzylWfEL8H3n8QABktP","3k4$g56_vCMBD70O1kU3Ph","36nb$0tNj5Vh2AKFwLLs2i"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162311","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvuo","name":"M_Counter Top:600mm Depth:600mm Depth:162231","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["2hkWpbEFz9BgH_l9M5Kx4J","39jTRe_CzEmRj1oj_u8EdV","0_G$fLZ7D4igvgk3jM13Hz","0h8JaEcRT5TBoqpBtoAs0S","18FTDVaBL6YugUw0ANfqAH"]},{"id":"","name":"M_Counter Top:600mm Depth:600mm Depth:162231","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Counter Top:600mm Depth:600mm Depth:162231","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvup","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162230","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["0AK_4YxJT12ug2iHQPXLkZ","2Lq5FAXaXCVgEd1JyLpy16","2D0vUE1Tz2geHag9CR3TMU"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162230","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUv3h","name":"M_Counter Top:600mm Depth:600mm Depth:161646","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["0v7jtadOv1Ow2rrvAqCM3k","1Cretmlc120vhMoWOjGkUJ","3Iu8VsbAz3WeB41OPPUn2U","0ENMvGbrLCyAsrGir$aJrd","1Bldjc1rP878cKkP0xhqq7"]},{"id":"","name":"M_Counter Top:600mm Depth:600mm Depth:161646","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Counter Top:600mm Depth:600mm Depth:161646","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUv88","name":"M_Counter Top w Sink Hole:600mm Depth:600mm Depth:161165","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["1FEFyhDa5F5O0eheqQSlwL","23_iUXOrXAnw9uHr8FEJzD","1QelTV1CP3k8aKY7MyEO68","3vmsyYlBbC1Rp$dEPgwDmT"]},{"id":"","name":"M_Counter Top w Sink Hole:600mm Depth:600mm Depth:161165","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvH8","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:160717","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["212VhG8YzDZPaRLEFsNlkL","17NFSg1xD6ihNvc5GvMc0x","0zfmJXOST3AxlZQOAid3d8"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:160717","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvGQ","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:160671","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["2WAajOInv1ywM66aT3e8xI","3sHycTcDT8a80y2KS0rzEK","1LzNGsVd98vR6VzHfpGZFI"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:160671","type":"IfcFurnishingElement","parent":null},{"id":"0wkEuT1wr1kOyafLY4vyOn","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:159262","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["0TeaceAsH0TfMqI_gljWlo","1Sh0_RuvD6q80miSTNmBru","0s4uq9EeT8vQmpWHsYAQOr"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:159262","type":"IfcFurnishingElement","parent":null},{"id":"0wkEuT1wr1kOyafLY4vyMO","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:159159","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_3S","propertySetIds":["1jMCGVkAz9yfbKTiDwBjxS","01X$8KVovB9xkNJ_M_vhgM","3o1_2vZ3v4J8tlJR0NTDhU"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:159159","type":"IfcFurnishingElement","parent":null},{"id":"0BTBFw6f90Nfh9rP1dl_CZ","name":"B102","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["3UBgW5mOfE9Q5cxWMFoTaX","3PLri_6Cr8HwFa4st5zie6","0DiwZigWv0KAmhEZKl8EOg","0oM_p7HY17TRcSzLTsf_8p","1hBbs1Rj511BLi$sXr_xkP","0aKgM76vnAkwl7kVbm4d_T"]},{"id":"","name":"B102","type":"IfcSpace","parent":null},{"id":"2OBrcmyk58NupXoVOHUtVQ","name":"M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168031","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_CZ","propertySetIds":["3yvdGLjnP3zQyg$nR4HtLz","0Btx2HRI93Zu8ummQKQNEs","2FetXfXiH1Av_C0$agowrM"]},{"id":"","name":"M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168031","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168031","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168031","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168031","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168031","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUsbY","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167655","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_CZ","propertySetIds":["3gkLfFgUn4LQJjK_BvRq2k","296TBv2BrCwQ1n7swI378C","33q20cZjbDqvfjoe1zqpUt"]},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167655","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167655","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167655","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167655","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167655","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUsab","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167584","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_CZ","propertySetIds":["1vFpbICB56swye_uFVcVBF","1AzE0RfUb3xBaGk2MCcD$Y","2Xb5VHhs98geTfQsmNKofR"]},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167584","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167584","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167584","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167584","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167584","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUsc7","name":"M_Sofa:1830mm:1830mm:167426","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_CZ","propertySetIds":["1vzGDyhqfFix5HV0KXM74K","12Ql_L4I9B3ATXTaGfvCd_","0J$2inJ6rA5RwqUfnPppaa"]},{"id":"","name":"M_Sofa:1830mm:1830mm:167426","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUshs","name":"M_Sofa:1830mm:1830mm:167283","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dl_CZ","propertySetIds":["1oEvLxaHDDjf7R968x33KO","1AnFX8_fj00ekTa8Hvb4Cv","1iqAHi379F_9OEE7GccjL_"]},{"id":"","name":"M_Sofa:1830mm:1830mm:167283","type":"IfcFurnishingElement","parent":null},{"id":"0BTBFw6f90Nfh9rP1dlXrr","name":"A101","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0W5fBD0Kn4nQ7VWouUCjdN","2HCU4wstf0qhkqp_trYY0X","39rOEfTYX4XuIA7KuxRmuu","36z5G5XajDpPlHwGhLsnkv","1kXXFuM_H7qe9kfqx$0Msr","3R5eufZxTFDe7yj5qkozue"]},{"id":"","name":"A101","type":"IfcSpace","parent":null},{"id":"0BTBFw6f90Nfh9rP1dlXru","name":"A104","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["3OUqCooR5BKx3dBgZ0TLBp","2PC1skh2r7UOH5mFzmNMlj","3HSwZo0Zv2UQdX0MgZfktK","3ABqrxcarEvhP8TO1qHGe0","3h8nA8udDAl8TdLbDZUZl6","3dbs3lCLfFdvCt6PwiQqrh"]},{"id":"","name":"A104","type":"IfcSpace","parent":null},{"id":"2gRXFgjRn2HPE$YoDLX0vP","name":"M_Vanity Cabinet-Double Door Sink Unit:450 x 450 mm:450 x 450 mm:205548","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXru","propertySetIds":["0ueR4DPrf5iQuyKI4_DLwd","0gpX8F4aTDvxql2AxZbCM_","0LuVy1apr77xK4qtdTeaUE","0t0S4OUXLDWhkgE9HNLQ3J","12RK$8E$r8ovK0xkHElNZQ","34C5uYewf4ugLBq78r$GnQ","0SAyqMT$L8vQA5bM59VevE","1igeVcjlLCxBpmF$haCJDy"]},{"id":"","name":"M_Vanity Cabinet-Double Door Sink Unit:450 x 450 mm:450 x 450 mm:205548","type":"IfcFurnishingElement","parent":null},{"id":"0BTBFw6f90Nfh9rP1dlXr$","name":"A103","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["26Loru4BHEbfZdaEQMXncW","2nkwB1d6fDIhpiGMSEjQKr","2cd61mWMbAA9SsviD7ZoHy","2DL4NqqwvELhDqNvJBpNOi","2gMbKqArj6dRaGZ$hYP$y$","0Nw9pEiIPB2eRs5U912rG5"]},{"id":"","name":"A103","type":"IfcSpace","parent":null},{"id":"0iEHWY1$XA8eQeeULq4jTB","name":"M_Upper Cabinet-Double Door-Wall:1000mm:1000mm:191768","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["1wsAn5m9fEE9O1iObhnkIM","3MTKRtKlD8RPLOB9MH28Ru","3eC03wDYT9mPXkrKPGV_59","3OpgVDDRf46vZLSrMWZpFc","0pZD0x2c1Fh8BGbofP2m$l","38uKGTWSn19wK5CCFXtCp7","3WPLsGhj96sBfafCv2AQ1O","0MWnW_lJXAMv6zOwJmzN54"]},{"id":"","name":"M_Upper Cabinet-Double Door-Wall:1000mm:1000mm:191768","type":"IfcFurnishingElement","parent":null},{"id":"0iEHWY1$XA8eQeeULq4jQJ","name":"M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:191680","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["2A7GfeuHTBjQ7Im41mX_xv","11dQsywZn3eOWgm2zDDeBR","3p0AajNxX27ehPQoPF$mbz"]},{"id":"","name":"M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:191680","type":"IfcFurnishingElement","parent":null},{"id":"0iEHWY1$XA8eQeeULq4jOM","name":"M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:191557","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["1nwM050rv5nwDtbve1Y3B8","3zXJ_XwGP35OFSbVEXdQNg","0ZxmKkzC96$xTtRpKVGokj"]},{"id":"","name":"M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:191557","type":"IfcFurnishingElement","parent":null},{"id":"0iEHWY1$XA8eQeeULq4j7w","name":"M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:191401","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["1uYgzxiFnACwcjMeM2Py2s","255ElPpHb0Gf2qHvhhME1i","1T34c7_oP7Y9yJxCGZ71eW","1zYUeyDir4jf$vdFaUbfrh","0EOTp55cPCUgR5SycaZEln","0ZFGskHer5tQocH9EUqthH","39IxHMEov73ffaJ2t2TM$w","0LT7Ht7b10VRpUGRrF9OWz"]},{"id":"","name":"M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:191401","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvr4","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162497","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["3xOrabOyTDOgbjLEKtcOqg","3zWm40QUbCQPVQupUKOv_O","2FiDDjBwPEXxpZxZhxj3ar"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162497","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvr5","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162496","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["1Uz7Jh8izFUfvYdDfDzEg5","35k76CwiT959LdMZlH9oOk","07cyMnC6H2wPtJjK4FJF0Q"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162496","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvqw","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162495","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["37Y8Ykn0bFSwqyIQUQ9UWu","0J14htz$H0XRTKVdtpnLzs","1jxzjvj_T7WRplCvqL9pno"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162495","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvqx","name":"M_Counter Top:600mm Depth:600mm Depth:162494","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["3wcPhAaVH1EhzbxF6PbJXA","3KQQOeB1D5deRu$LZeo10a","3dLsfeHpr8qRyEiBZ$rXuH","2r676IXj9CtvRkFvwvGOxr","3WBSzTqGL9$AsrpY0I2Pmf"]},{"id":"","name":"M_Counter Top:600mm Depth:600mm Depth:162494","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Counter Top:600mm Depth:600mm Depth:162494","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvqu","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162493","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["2_r5an_y18iRonoa$Y2_wQ","0sN36VI2P3CBI0q2IeQcRi","0BXMc4ofH5Ag7frTfZT1a_"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162493","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvq_","name":"M_Counter Top:600mm Depth:600mm Depth:162491","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["3IFNCnHJL9Cfky5FM6yB30","0gVlNCdjHFnghPPv7oUICM","1FPEkcb2j4mv18lWe6Lucb","0wNE2Q$B50fhZuKXCdcC3q","1v0qhRyc9DNBg0f3v7X9eQ","1IpXCJr0D4CR7Hm$xj72wC","3XUgIgVjP8vQxY2O0aFnMV","2nGIYzMrr0CRthPbudKuLS","0kKrJte6fCEQllxKxvy_C7","1qqy4nUZDE6QQMjYmlSwhV"]},{"id":"","name":"M_Counter Top:600mm Depth:600mm Depth:162491","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Counter Top:600mm Depth:600mm Depth:162491","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvq$","name":"M_Counter Top w Sink Hole:600mm Depth:600mm Depth:162490","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["0TcEdqE15ED8ndiPy0lszY","1JZ0LzwfDCa8sgX_T5ss8F","0u5chMXoz5W9pwxu4iJ37Q","2VO221bX5BcxroRQjsBb3S","21rgqk9Cj099Lfvd6c3Vbz","24lhGnKF9EPB27kgBhaxCy","38eDrwUj17sP$RwXLDTK0a","1VUYQNX$XAnv8v7yqLKvrE","2uRuaEWSjCXg1gs6Dvzw9V"]},{"id":"","name":"M_Counter Top w Sink Hole:600mm Depth:600mm Depth:162490","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvqy","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162489","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["2sSup2ZDnAyR1f5aKiQ$m4","0vt3CL0EL1_9vTECsb0Ewz","2tKS5w3O57YfrKHScdY68X"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162489","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvqz","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162488","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["0gS76cxizESAM6sf_jaJvg","27Ibh6e9rAe97yuk2yCnQo","1uuQu0eDLCnP55KwnHrCuu"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162488","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvqo","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162487","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["0suECcwSfD$POzynzt3bqH","3bwrkBG9nBj9ysxS0FnDNB","24zRJXC$98jwgVH7Hxg7MT"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162487","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUvqp","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162486","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr$","propertySetIds":["3KgxvVR5DAzgOQrq0OniMT","32_XLRoCL7uQDv52cwU_7R","1SogWXu2jD6RXWK5cl1Shm","0PWo9e7Vf3ofyodRq95u5$","0LQjLPGbvAnvCb4fpahn7Q","1pjw6zCfj7Qx5johgwM3qX","0936uqojL0ceIOtzco$jLE","2KNlIfHVr8qRPTLFs5xJlQ"]},{"id":"","name":"M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162486","type":"IfcFurnishingElement","parent":null},{"id":"0BTBFw6f90Nfh9rP1dlXr2","name":"A102","type":"IfcSpace","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["33Z2A5uGP6BhMJTKqZjMhY","27tYG4QYr61OPmLWDSMDhc","2$mzFpS494Tg$vHhLzZSuc","1rpZYZHkz2wA2zhuo866jB","0OaUeS1$nBgOp_jfDehRu3","1dD9snpSv6qOvWe2TBHutn"]},{"id":"","name":"A102","type":"IfcSpace","parent":null},{"id":"2OBrcmyk58NupXoVOHUtOu","name":"M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168381","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr2","propertySetIds":["25MZhTbtv6Fgk83X2ImFI7","13gjU7zaf8HPjx4Wij1HMw","3uqIvlvCH1bBCvy7EL6r9$","3HrF$kxa53RxyWQIWw20tm","0Zgo$Bbfz6OR8VAPWVzMA9","1HKpAOvYrDEOC8G$FPi7I9","1kZ8d1qrzByuILge9Urbd6"]},{"id":"","name":"M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168381","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168381","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168381","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168381","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168381","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUtOv","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168380","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr2","propertySetIds":["238jh$GZz9RRLLR5SFKewS","2OkBGiF6X0KB63VCO6OUVG","0PHReR5$HAKQSJ5hDoEshq"]},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168380","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168380","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168380","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168380","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168380","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUtO_","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168379","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr2","propertySetIds":["2L32zINGH9bhDmrUaAZuFP","1z9R2MgJ5CThI0iCYHj5BR","3b6Wmo9NL4OwVQxrXtBKsL","3SVIStAa94LA7BH1fuSuKL","08BPGQPQjCOxrzWjBDDrE5","0QHzCed2n09Rj2xVgoPMXM","18nOkHzI16WBjxIqMuTX06"]},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168379","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168379","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168379","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168379","type":"IfcFurnishingElement","parent":null},{"id":"","name":"M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168379","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUtO$","name":"M_Sofa:1830mm:1830mm:168378","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr2","propertySetIds":["157E_7cwvAyQf1MiVtUVy_","07RQ2b0TX3CvfUR3oQXKYb","1XKxG5pB1DKOBK05u1VPZh"]},{"id":"","name":"M_Sofa:1830mm:1830mm:168378","type":"IfcFurnishingElement","parent":null},{"id":"2OBrcmyk58NupXoVOHUtOy","name":"M_Sofa:1830mm:1830mm:168377","type":"IfcFurnishingElement","parent":"0BTBFw6f90Nfh9rP1dlXr2","propertySetIds":["3mHArHTpj3z8i5dvI0fkSR","18PpesNXP4iuXwJrdxtfzj","136RGy6an1Ng67kkUG8Qae","0LhXR0UGn9agGgJFS$9SEi","0LlMaXplP90wSWUWBAst6k","2Ku0TQAOzEGeSsv6EoSp9p","1z2GQFntX7T9rZDIpdZyNY"]},{"id":"","name":"M_Sofa:1830mm:1830mm:168377","type":"IfcFurnishingElement","parent":null},{"id":"2OrWItJ6zAwBNp0OUxK$Du","name":"M_W-Wide Flange:W410X60:W410X60:209261","type":"IfcBeam","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["10mikOm39BqxmNA4zdm8M9","1SBwc0ujPE_wa4ypWuKUy8","1x2tPoL3100Pxsw_uOe98k","29rwf09_XBPfs68uIFmb$f","3p6Zvfpiv7_xs5YmyI8aNM","1j6RZOoSXF9P8ggIx6eFLA","3MZyP1fhrCQPi8y44JuxxO","11rvSU02D7PgE7lEjfFMDl","3qMtIvgmnF9xaSMt3NU5l2","2$gSHW4BjBs8WKLEf0ShAk"]},{"id":"","name":"M_W-Wide Flange:W410X60:W410X60:209261","type":"IfcBeam","parent":null},{"id":"2OrWItJ6zAwBNp0OUxK$Dv","name":"M_W-Wide Flange:W310X60:W310X60:209260","type":"IfcBeam","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1OHRmwN6H1pu3_bV2CEJ1_","3vwyGgS$rFNxQOH43lznw3","03RnWTNwzBa9sohZCOjPmN","2rS3kRE01A09hyYmAdwyrs","0zjXA6uvL6yBsHRlK0KnOe","3KucQXYNPCfhzuUaM3$dZi","20P1JisgLC1OsL$03ty1$z","0QLiB6RsX8txBIIDwp_ATJ","2AM9AVWfzBIAMK4v7cSXZq","1BYhdUho53z9HvdqNQXEF1"]},{"id":"","name":"M_W-Wide Flange:W310X60:W310X60:209260","type":"IfcBeam","parent":null},{"id":"2OrWItJ6zAwBNp0OUxK$8W","name":"M_W-Wide Flange:W410X60:W410X60:208949","type":"IfcBeam","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0Z9xPszfT3YeXQEErA4eRx","1Cfy7u1Yf8R9p0qIa91N5q","2dKRtetjL7FuCgrYtz6xhY","1495vPEnL2Shqb4RS8KdfL","0hapovurL6r9L1Vijb0lzB","0rJMKeSYz2HBPFR15B561Q","020TRS8kPDu8Navq5NI2RN","3dTjT43$v4MhxHMCSOkquX","0YKkikD2D1YfrtXZ3UncS5","2eo5ir2lz2ZOQDj3NhhPuG","0DPjhRGbXBXuFZrmROsYEM","0RS8uf26v7YQbP9d62ylat","2MqnUG7YT5hAvILKqZtyE_","0hGnaWNaLEOPj4NH1NKg$S"]},{"id":"","name":"M_W-Wide Flange:W410X60:W410X60:208949","type":"IfcBeam","parent":null},{"id":"2OrWItJ6zAwBNp0OUxK_l8","name":"M_W-Wide Flange:W310X60:W310X60:207325","type":"IfcBeam","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["19_zK4ewb54AtQYv5k9Y9u","0Rxz7NAdn0WuGKbKoIThBs","3IEt1nONXFwR5oSobfKg4U","27ugzxsr15xwn12yjn2en9","0JYfEcYO57vA988diqJ0Ee","1UCYsTgpL4_AvJGX0l_j2n","3g8kc_vc5AIfWSvEmToW0W","0EkCmONFz8BRCSVhgayPwf","2Q4yFwwhPBzgHlUetiORT1","0IspL5mWnCFBph2TfSODya","2DzbliGoj5bud_f2aA_$XV","2j8lDB2jXEK9rbk1HlJDUd","3PD7czV8P3hgAxB4KkEf37","0hQP9jB6P21A99ZE6XCm3B"]},{"id":"","name":"M_W-Wide Flange:W310X60:W310X60:207325","type":"IfcBeam","parent":null},{"id":"1aj$VJZFn2TxepZUBcKphf","name":"Basic Wall:Interior - Partition (92mm Stud):204493","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1KJyWzk1P2uvPikBm0okJF","1n5K528_rB$vVpbsqPHRXr","0sfPlsYGT2cQ5ez7YkI68F","3489mDFJL8FfgUrmZa5Y6R","3tCkPbuyH0DfiJzcJRg75S","2itXMak3r7xwrgGEcYphu_"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):204493","type":"IfcWallStandardCase","parent":null},{"id":"1aj$VJZFn2TxepZUBcKpee","name":"Basic Wall:Interior - Partition (92mm Stud):204300","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["3BwNDHxXj2MQfjwMSctxQR","1YAumChW168x58kULL5mKN","3RKFlAXKn9JxWx1o8eU6ja","0TV7_FzlDFeBEZO5kZI11i","2vGobZfeX2NfemSwKYZzNz","37WtIuW3TA0OX5bIfF9SH7"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):204300","type":"IfcWallStandardCase","parent":null},{"id":"21ldoMpbP4VfsJ0XGY_34d","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878","type":"IfcStair","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1m3$iazM9DLfyL6syzIHry","2M0P93ZGf4qgr2TqraIC4l","3DA4cdNbzDSx3tbUR5k0Fh","1X7fyd8XfEvQBM9hde8ded","0rpvPhGYj21uvodA0x8opL","0vEthMU01C4wdvI9hj0zCC"]},{"id":"21ldoMpbP4VfsJ0XGY_335","name":"Railing:1100mm Guard Rail:198972","type":"IfcRailing","parent":"21ldoMpbP4VfsJ0XGY_34d","propertySetIds":["0SA1GcGL1ATvx$bzO6dyNS","1B$FSQjRP5B8GBM4Ee3C18","3mPQcW80P1Hx7pA$uIuy8Z","1XdWbfBcTBZR$$aY4sCGo_","3RLnu2Ihr0AfqbD33VW64L"]},{"id":"","name":"Railing:1100mm Guard Rail:198972","type":"IfcRailing","parent":null},{"id":"21ldoMpbP4VfsJ0XGY_34P","name":"Railing:900mm Handrail Only:198880","type":"IfcRailing","parent":"21ldoMpbP4VfsJ0XGY_34d","propertySetIds":["09gxfjJbbC8A2egN8EN08I","2uqzvLRI55thI4WSDll9yu","2ZZhYAnOXBVew25BFxwA6V","21tVg_hXvCNwlnz4SXUk_P","3Hn02wh11DNPLyUBQPpWRS"]},{"id":"","name":"Railing:900mm Handrail Only:198880","type":"IfcRailing","parent":null},{"id":"3NTjJKhLD9Z9PrfDDNlO7l","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:2","type":"IfcMember","parent":"21ldoMpbP4VfsJ0XGY_34d"},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:2","type":"IfcMember","parent":null},{"id":"1V7lhQlDX1jg$qhJ_oItPv","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcMember","parent":"21ldoMpbP4VfsJ0XGY_34d"},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcMember","parent":null},{"id":"06uoIsbYr35x9JXU7VZ77u","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":"21ldoMpbP4VfsJ0XGY_34d","propertySetIds":["2nJJvIXr9FhfKSCVwHNuub"]},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:198878:1","type":"IfcStairFlight","parent":null},{"id":"0iEHWY1$XA8eQeeULq4jE6","name":"Basic Wall:Interior - Furring (152 mm Stud):190933","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["03CYHWgf9EMvjryurCBM8W","3duFHV2xXASfFn447dT5eJ","3Yl2NrAcX3xwq9mXNmKOhr","0Hcub9rsX1SPcTv48nLClm","3ijge2USbBuOUkjoPE5VGX","30UxBbob57hhngGnLFrUM3"]},{"id":"","name":"Basic Wall:Interior - Furring (152 mm Stud):190933","type":"IfcWallStandardCase","parent":null},{"id":"0iEHWY1$XA8eQeeULq4jDb","name":"Basic Wall:Interior - Furring (152 mm Stud):190774","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0Cnq1MPFj5mACMj$t$qgOx","2u9EU14af4DBvTYdjTmQ0M","2$jX5oqcXCXuL$qU13a4Qv","2$VqY0pjL1OfDMAw6515$_","3M58moIdv08wp_pljhqtud","1tohgs1y1FK9izGg0w0O83"]},{"id":"","name":"Basic Wall:Interior - Furring (152 mm Stud):190774","type":"IfcWallStandardCase","parent":null},{"id":"0iEHWY1$XA8eQeeULq4jpl","name":"Basic Wall:Interior - Partition (92mm Stud):190140","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1AJ7TTnrjA0eenXmDMnlC8","2yyDeySSr3xRgS1ZzNxmad","0wr2ZQToD6vOzKB4CekQiK","3GdTU8k5H9Ovq5Tck7zSvp","3FJZ4tvBn5hwNzIu0bkNga","0u8nQryVHB7w7y3r1MNCBK"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):190140","type":"IfcWallStandardCase","parent":null},{"id":"0iEHWY1$XA8eQeeULq4j_U","name":"Basic Wall:Interior - Furring (152 mm Stud):189901","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["2TvBwkx9X4iPMfsQItx8CQ","2bqTpZe$f3YgI_V321PKbU","0W87pqgjD919nb9OsmvZVC","0SC0sjZwvBRAarP4pGKSjp","1b8suIg4L0juRASzz7KoES","1vodmyTpv8nP3Yfk6EKXrC"]},{"id":"","name":"Basic Wall:Interior - Furring (152 mm Stud):189901","type":"IfcWallStandardCase","parent":null},{"id":"0iEHWY1$XA8eQeeULq4jZ1","name":"Basic Wall:Interior - Furring (152 mm Stud):189074","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["16MUK4ugD9gfo4pjhpi88E","0hD25oa8f9fflZ9Q0ys_D4","0GP2lkOYbEGfKmwJKZck6s","3gt4Lmxuv3wfBSRTjFHJ6O","3qUg1OfM14CAjwHz4Xb4Ra","0S4cqonebArgXZKaSlv9b2","3cXuWaga92mvO9k74Ufupb","0Xjd_Uj0b9mxSbWlcyuuY_","1dE7KhEH95zPjDTbqVt2Oh","2NegtVUKbFORk1cvGtwkTa"]},{"id":"","name":"Basic Wall:Interior - Furring (152 mm Stud):189074","type":"IfcWallStandardCase","parent":null},{"id":"3bXiCStxP6Fgxdej$yc50n","name":"Compound Ceiling:Gypsum Board:187508","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0PT7R8YNbCvvAcSlngyvXs","0sDXBxIfn9JxYbg$y$x8zi","0btVI3Ry5CNvlDOR76HCC6","2bD7sq7PnC9v2cUzdaWdUI","2MydZ3sLrFlujhYf_l3J8$"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187508","type":"IfcCovering","parent":null},{"id":"3bXiCStxP6Fgxdej$yc50U","name":"Compound Ceiling:Gypsum Board:187483","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0Q4DCnqDXBshicLhkg4aDB","1HoiAE1$LA99XiC6$KdMew","3P06EXNaT6juyZj17UuFfm","1$rotiHHD1WgWY_dieve7v","1MbRx3Hs960w78ZQcUMmON"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187483","type":"IfcCovering","parent":null},{"id":"3bXiCStxP6Fgxdej$yc50B","name":"Compound Ceiling:Gypsum Board:187470","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1L0jCBKHj2ef2mNm4nEwwe","3pLCAjnyfBy8piPlyIT6Hm","2$iy2dUp924A1GR63Y5aD6","0rDFSBydv2vgJVYVvC1D5c","2kLoqy4_90vvaGda0hZ$Yi"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187470","type":"IfcCovering","parent":null},{"id":"3bXiCStxP6Fgxdej$yc503","name":"Compound Ceiling:Gypsum Board:187462","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1tcOR5lz1B1v6NDafByaUc","3hYDQ147H0C8OC5OZavzRR","09_zAQPnH5kREUMD3sKCnZ","2wHo8pLzr9nAANq3s4ysR6","3Tdu8T2hr1kuAQcM9xCMQs"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187462","type":"IfcCovering","parent":null},{"id":"3bXiCStxP6Fgxdej$yc5T8","name":"Compound Ceiling:Gypsum Board:187149","type":"IfcCovering","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["2_z7WsfVn7Se7VmnQpR69w","0wAljHtaP7KAOzy8BeNQ9n","0LS2XnuWzFL9fjtLDfCWfK","1QJShoeELFjxJHvu1SpcLN","1hQwRHNUnFtg82l9OMc1T3","2q6TVAfqz1RBwldp9yGgYm","3kQudvGcDD7g2m4KL7OV2u","3tu2wUpG136Qk$XR$usDNE","2acJcYaCD4GhB1xhHomZtg"]},{"id":"","name":"Compound Ceiling:Gypsum Board:187149","type":"IfcCovering","parent":null},{"id":"1s1jVhK8z0pgKYcr9jt7AB","name":"M_Single-Glass 1:0813 x 2420mm:0813 x 2420mm:171975","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1PTQnYluv2DfUfejy9pScK","3QWDABWQXEnxERtMCfgr4B","1In7e0cNn4Uw0U3HtLBroj","3no5ELqnPAAx3pW35E6PlN","0Uh0TLC_r1G8XWm0tC58eU"]},{"id":"","name":"M_Single-Glass 1:0813 x 2420mm:0813 x 2420mm:171975","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Glass 1:0813 x 2420mm:0813 x 2420mm:171975","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Glass 1:0813 x 2420mm:0813 x 2420mm:171975","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Glass 1:0813 x 2420mm:0813 x 2420mm:171975","type":"IfcDoor","parent":null},{"id":"1s1jVhK8z0pgKYcr9jt781","name":"M_Single-Glass 1:0813 x 2420mm:0813 x 2420mm:171853","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0iDFpJI6P1cBx2cLgBsRwo","22tatg3zX4$gJhNVjWFT2B","26YcGxlELAEOGqTlBh_PAS","3NxHAQ5G54ZPZ2dA944YPY","2WlggRRvn5jPp2VGRbsleK","1rlsdBkNrF09urimisRqua","3mwPWj4d93p8pO$lR2sHSu","0R73PTDgX3CP2SNicHcMlM","1W3$b4uYnC2O1Fh_MxEnFX","1GjrTsXQ1CKR1bapb9GsK9"]},{"id":"","name":"M_Single-Glass 1:0813 x 2420mm:0813 x 2420mm:171853","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Glass 1:0813 x 2420mm:0813 x 2420mm:171853","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Glass 1:0813 x 2420mm:0813 x 2420mm:171853","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Glass 1:0813 x 2420mm:0813 x 2420mm:171853","type":"IfcDoor","parent":null},{"id":"2OBrcmyk58NupXoVOHUten","name":"Floor:Finish Floor - Ceramic Tile:171444","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["11fj0WctX1m8kFXEmYfUGB","2YFlXPs4f6Uv9OKTYlfQVb","03wnnbxtH3w90ExxXajACh","07z2tLbXfD1ea7l5tZ1nGb","13bWcvUiL72fE5sbsjxwDA","2HaTzSfVv4$8Um3cF1D7vz","2OA48Hd5fCxx0U71qxIdnJ","09YJkq_EPExuLn7r1r8vs$"]},{"id":"","name":"Floor:Finish Floor - Ceramic Tile:171444","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUtgP","name":"Floor:Finish Floor - Wood:171292","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["3dZ6h9XjbDXPjBjbAa4L3b","16WcU4HEf6rw4bX4L9FWNq","184eFa$qn2SOKNkbAEx2Zh","3gVLpqshrACRrVL54PanjE","0IfNAzrhr3TvaBqiWpQ4ui","2sGr5uvyv3GxxdWXDswK$U","3SmwF70onFJfZd3QJ7mroM","0uGbAia7n2Gh9$perqm1KI"]},{"id":"","name":"Floor:Finish Floor - Wood:171292","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUtju","name":"Floor:Finish Floor - Ceramic Tile:171261","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0aBNeVDzb5ZPCJVYM1HMY1","0tbtC3rdP5SO4iL6UIS$ir","0iL9ASICbAAvPTbJCqc5U_","0FizRodEP92hLXh_P1PVG5","1g$wad7DbEeBjWJmDR__Ue","0_6W1z2Gz98PYys_HNx4Qr","0m7DIk0mzDv9sElVYn3q7e","2ebqRValbFBhjjEBdTg9lX"]},{"id":"","name":"Floor:Finish Floor - Ceramic Tile:171261","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUtjR","name":"Floor:Finish Floor - Ceramic Tile:171230","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0ICYuwlNjEeuuDlvjY1OJj","0s2M6iSoz6Y9GH7iMdF9$V","0f8CuSr$b8g8h$IT1NLPQW","3v45H7$tj67uRPxXlFUqs9","13gdx_jWf7IvLQ5OrkcYRL","1_q$zkzabFo8qxzq4bvts3","3IAJwCRn59DBai4484bCXB","2Z0jC7hgH9RhOWE4fOfTP2"]},{"id":"","name":"Floor:Finish Floor - Ceramic Tile:171230","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUtoa","name":"Floor:Finish Floor - Ceramic Tile:170785","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1Dkobk2vf0x94a$ZBdcu1L","2gV2ynJDv4xhARISosIufy","1yp5qK5qD0hv4ONhPsf$JV","2W4QGNHa9FqBKHOS9QwiWw","0j9PMm9tr0$BPsjqFBCd$v","2OnsLGzpH1B9aqXTrtY8Xx","29QLVlBfX5uv9wJiJNT8nD","13YLeaupX3JwAAXhSiW88W","3QYmzhKgX6ZvHsGly2TAOD","2RMMuW4pv5qRtv64aUVjRV","0u63UTzsX4RuDRKgJ1qZ5u","3tB0CxovT8LPCA8kyDK99W"]},{"id":"","name":"Floor:Finish Floor - Ceramic Tile:170785","type":"IfcSlab","parent":null},{"id":"2OBrcmyk58NupXoVOHUtxr","name":"Floor:Finish Floor - Wood:170352","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["2bXGN8hhrCSedmdmsVsxub","0QSxZmSlX9gQtwY1MRSgFp","3evaK1pPv2XgMwQeN1qTjf","2oK0OpVp10SelAecEi5aNv","2I41zfuZbDCen6K06qLNOK","17CdbwG5zFH8RonXiuXwcH","31oc8ALez8nh$Neq0rgW40","2w_jzSQ3b4wx0JtO27S7bf","3d3CUbBrj17u$pZa6BIz14","2tH$MCLWb9sw2TcT2EmhNG","1cMWHG6lP8DvEFISDm$6$S","1DLvMTbOrD$9maLb3MnNTE"]},{"id":"","name":"Floor:Finish Floor - Wood:170352","type":"IfcSlab","parent":null},{"id":"0wkEuT1wr1kOyafLY4v_O1","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086","type":"IfcStair","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["2bhUQxy7fBQfqGPOx4I9Ao","0iTFY1Wk5Cf8WO5QSZjH7T","26_714ClrCVeocg2FzCsC2","2ZuOZlOmj5J865$WjGL_U5","0oit7dyyrCu9rcO$SzYUT$","1f0HpRop96nfKmgMDfYOxi","2RcJfuTXnE4Q4k72LKrzDZ","1SO1Yvgwb9SQPUASTAdrzc","2Qs6Fo3G157AXa7tfCq06z","2HX657r9H4qevvhIAPrEbG","3bkLO$xov3SxAoFfUH5OHZ","0Xss5p4GjAxeua5wJsjStO","2OqtPWCv97GR5VAu1YQrt_","0njlrgFsn7JuFSTzJ4jUnK"]},{"id":"0wkEuT1wr1kOyafLY4v_PH","name":"Railing:1100mm Guard Rail:151166","type":"IfcRailing","parent":"0wkEuT1wr1kOyafLY4v_O1","propertySetIds":["3$ai7p4Lv5FeENOrdB54Oj","0FGgAuLFb9WhXCsy0LNHcb","2sHWRICUHAygdOAP830UEQ","3z5JpMBMn87huyVH2w2YRn","221TYWs7rAAvrOpn6TAPBA","3Oh8pteXH1s9UUm8JBRPSV","162h1N4KT1BuPYMSk$Uzl3","0Z2_tKgmfDthzSDG9tcitR"]},{"id":"","name":"Railing:1100mm Guard Rail:151166","type":"IfcRailing","parent":null},{"id":"0wkEuT1wr1kOyafLY4v_PL","name":"Railing:900mm Handrail Only:151162","type":"IfcRailing","parent":"0wkEuT1wr1kOyafLY4v_O1","propertySetIds":["0Crkeo1oD6YuH9bC1FoZgg","3pb2tV6XP53QGhRS$354qi","1gmrRoEob9UBo0CvnGzITg","1N7ouI$mz1gehyTq5NeFWl","0jAz91e8DFc9XmcV8DOlcS","1PsPO8ca52Yh5ZHj4_Q4jB","0ASAFcOlX4S9FqxOzV1kEd","0Nk3nVXKv8_uOslJn$Q1Qx"]},{"id":"","name":"Railing:900mm Handrail Only:151162","type":"IfcRailing","parent":null},{"id":"3oPHcnffTFUPOeoXH3gL9O","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:2","type":"IfcMember","parent":"0wkEuT1wr1kOyafLY4v_O1"},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:2","type":"IfcMember","parent":null},{"id":"2kvoSiZl9AyBFq5GcandkO","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcMember","parent":"0wkEuT1wr1kOyafLY4v_O1"},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcMember","parent":null},{"id":"3AHN05gWr6UPB1K6VN0idp","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":"0wkEuT1wr1kOyafLY4v_O1","propertySetIds":["3gXB$2y6vEBBpKpx_r$U94"]},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"","name":"Stair:Residential - 200mm Max Riser 250mm Tread:151086:1","type":"IfcStairFlight","parent":null},{"id":"1hOSvn6df7F8_7GcBWlS9F","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:150257","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1BJ45fdp93MeUmr9ez8uUQ","09xHTczqbC6wUtUFQ673Fz","2bsvBKbfn3dQ4TPVrEgxnY","2PLpsKk5D4fPgAyWk5tdeL","2vETF4W29E39o21kPg72mS"]},{"id":"","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:150257","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:150257","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:150257","type":"IfcDoor","parent":null},{"id":"1hOSvn6df7F8_7GcBWlS8Z","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:150173","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1q5ua55091puxUmdtI6YX7","3MLYX138XEcOfxBGDel6DW","1J8bd9e5DD2BCT4f0Pyyi7","2ZD4OI1kbDtR6$i2gFUFVc","1TJW7xJxP5JBESerr0uckJ","1sLaHGL_zCyveORfm8rsV3","16cRtr8vz3TvPoZkIJe7So","2sbbanN45BZPIwZPukgXPD","2sglbZXvn2sh0lTvo$SB66","1RGVcrg7n9KgKn9yx$5gxh"]},{"id":"","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:150173","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:150173","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:0762 x 2032mm:0762 x 2032mm:150173","type":"IfcDoor","parent":null},{"id":"1hOSvn6df7F8_7GcBWlRRL","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:147051","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["3sxi0VqZj1rf839LThsH7b","0qauOx3c15BwGZd4JjjIFd","3ztEwdFZjBBRUvXHE$auNM","2pfqKVxUXDnfB661DnIWDm","3B0c7k_bf7bhml84UX2wTW"]},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:147051","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:147051","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:147051","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:147051","type":"IfcWindow","parent":null},{"id":"1hOSvn6df7F8_7GcBWlRLx","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:146885","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1aQf0d_5bBaw9okFJFXY6f","2PJ$ik3c17lghn9v2QRXOh","3EbuoMQ8H6RPCMUZJf3j2d","3okNp$QP5ANQ8jPUy7df3P","3Hbg6aG654aueMr6SMmUNz","01yRbenaXDxvx2GHYSnLdS","0M9KPNTzLB2Ou_HJrmzxhq","0Gnmo4gJXAaRzp0AOvTSkn","03wgCXBKTE9P1HM1JNQ93T","0mHO8R7Pb8ZOJ84bUS_fIT"]},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:146885","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:146885","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:146885","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:750mm x 2200mm:750mm x 2200mm:146885","type":"IfcWindow","parent":null},{"id":"1hOSvn6df7F8_7GcBWlRH8","name":"M_Single-Flush:1250mm x 2010mm:1250mm x 2010mm:146678","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["3L4hCgfT56u8e34m50Sv$M","137qnGIjb7av2AlVBpR45r","3Vvg5dLd17mQwANopsBlRc","3u1DeF3z17BR0dgnSsS1$G","3gbC49DG10J9jBdwLtAyo8"]},{"id":"","name":"M_Single-Flush:1250mm x 2010mm:1250mm x 2010mm:146678","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:1250mm x 2010mm:1250mm x 2010mm:146678","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:1250mm x 2010mm:1250mm x 2010mm:146678","type":"IfcDoor","parent":null},{"id":"1hOSvn6df7F8_7GcBWlRGQ","name":"M_Single-Flush:1250mm x 2010mm:1250mm x 2010mm:146596","type":"IfcDoor","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0mO0Il3f19RvKpbnUo6r06","2mskqiPpn70BAkYIGXRumF","2WBG04AHz888DAdsOGtXdS","1uVmgsTvz0avwIhvduKmKk","1c4W3G$49ChQH9eneJ202_","3jvRCXoNjD0xlDCe0i$3SH","2K5esR4wL0NuSaiCTjIa$k","0Up69FPU9CC8s9EAuuQtHg","2Y$Y4GzGb1zvFmJaxZ3LU8","0NTLjSrPz46glScQIN4Oye"]},{"id":"","name":"M_Single-Flush:1250mm x 2010mm:1250mm x 2010mm:146596","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:1250mm x 2010mm:1250mm x 2010mm:146596","type":"IfcDoor","parent":null},{"id":"","name":"M_Single-Flush:1250mm x 2010mm:1250mm x 2010mm:146596","type":"IfcDoor","parent":null},{"id":"1hOSvn6df7F8_7GcBWlRBU","name":"M_Fixed:4835mm x 2420mm:4835mm x 2420mm:146016","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0TjPkByEb7WhJYcSx2uKnQ","07zS_tOmf9jQVcOzKBG4_f","0brZ0YY4zBlvrBK38Vvjqd","3WIZA6lWH8igD9IaB50aHs","3pZNbS9XnEpgtjeGefYIJY"]},{"id":"","name":"M_Fixed:4835mm x 2420mm:4835mm x 2420mm:146016","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:4835mm x 2420mm:4835mm x 2420mm:146016","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:4835mm x 2420mm:4835mm x 2420mm:146016","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:4835mm x 2420mm:4835mm x 2420mm:146016","type":"IfcWindow","parent":null},{"id":"1hOSvn6df7F8_7GcBWlR72","name":"M_Fixed:4835mm x 2420mm:4835mm x 2420mm:145788","type":"IfcWindow","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["2Li8$3URzE3vll_JbxjLpb","0pT784mxbEcwDozA_Ngyqq","2JBas4GYL2_xIqlpdplcJZ","1K3VkRzKf84912T8MgIA5C","3qfv_kEF58evU0PdP8wj6P","1ovQ3WAd95Ugod5ecFhoAq","0HEjDOSEf6LhhIqnpPlXjv","0lp51TmwPAehzm12dqlETR","2aqsdT$NvA9QbcdDc1FL7O","1Om_hoTsLDeR8jgqdit_fw"]},{"id":"","name":"M_Fixed:4835mm x 2420mm:4835mm x 2420mm:145788","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:4835mm x 2420mm:4835mm x 2420mm:145788","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:4835mm x 2420mm:4835mm x 2420mm:145788","type":"IfcWindow","parent":null},{"id":"","name":"M_Fixed:4835mm x 2420mm:4835mm x 2420mm:145788","type":"IfcWindow","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FL8v","name":"Basic Wall:Interior - Partition (92mm Stud):144518","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["284RuVz3HC7P5Gag7tbPHY","3B2M9jBDX2FvSslfP2RDGK","2aYiY4QTL2XeSwbJZOVixb","1Xten8vePENuPgy_CWV5LB","0Z9w0oVQf6ceixF2C34yDK","3SIbFNlTfDRABzWXoYlGGm"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):144518","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FLTF","name":"Basic Wall:Interior - Partition (92mm Stud):143856","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["12sS$rMubD392CT6OSXBsB","1eVvruvzr6nhnC0w14az7_","2QZoNkBFv7zeG7Gve5CCmH","0EBfEhB4rCKu_uZAJwfZbr","2g2s5gacT4O9$2U6HLfXIM","3WrLFdcBr6JBrBZTT2QZdQ"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):143856","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FKcz","name":"Floor:127mm Slab on Grade:143106","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0FAK7n8lf5_BuDfCBdj0tS","2fjdrtiCD948XA2IGuVPLy","28Jq5DO6v2Ewm$vvnDTQi0","2rHbV6A2LFmBUF0bAOfCyD","2WtCdA65H8UPlAdfK0LVUm","1gyn33lC1DqvP_hOC9pP8o","1XqryD8k5Fjw8BPy1s9k1p","3wJJ18RSjF3O04oeJgd2V6"]},{"id":"","name":"Floor:127mm Slab on Grade:143106","type":"IfcSlab","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FK4F","name":"Floor:127mm Slab on Grade:141232","type":"IfcSlab","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0SuGV_$k51cQvuDZzEVd_F","10UeTWEBDEZRXW$34NYl2Z","0BZksmjHP8$Rn1OAabVtha","0wMWJjuAD0cPVuO2TGNSfF","2Z84Ns5A50hRSeQai8qort","0514_trvH0ABT3OTENrMtU","0GqxXq9ln56QHsNX0UQjW7","1aMb$_DYn26AAUn_tsycM3","1NBAeRumD5lfzYsDSe2EnN","0KtYfwWyv7kgAQisasw_Ts","3lLboyYivE09eKSC62QNdh","3Y0EjkfaD4pQT8L935Z2rf"]},{"id":"","name":"Floor:127mm Slab on Grade:141232","type":"IfcSlab","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FKGS","name":"Basic Wall:Interior - Partition (92mm Stud):139939","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0OnJmf2RHCtwZdjC5b796t","0YFUDzmlfF0efd1Z4h$A_j","3ocS6JMxb1gAqlzltPIrag","3i4yjfyaP4EeJtaxFX2ug0","0Z0Pl4eGXEQePT$AUEaqPC","2uUqKqSc52MwcvKYpCvwFF"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):139939","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FKIu","name":"Basic Wall:Interior - Partition (92mm Stud):139783","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1z61GQeEHAtRt2ZMBzNNa$","03MhSluG9DuxpysnBgIcjq","0Bq1ADlYzCeBKPy4Xck1JV","0FD_6aU418p8fSsg5EaeoW","1vS8nE$QvBuhMtThmqYVev","1xKgkdT9v5DemDQulduMdW"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):139783","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FKST","name":"Basic Wall:Interior - Partition (92mm Stud):139682","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0UDGElS25CWwMM49iT$nvC","2yHf4Tzn1FVe09k6qFdrVn","19ukjcDl56uBsr$8bW4omL","0lUZmud_b8HAzb$1xwbXUq","0MAsy0Jbj0JePn04DUNSTS","26_5lAMePEsRT1GH_XwYMg"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):139682","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FKRH","name":"Basic Wall:Party Wall - CMU Residential Unit Dimising Wall:139374","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0Hl_tX3Ur8ABXNraKzMszC","0kcAROHYj04PUO2MgRIoqJ","3aghO68TX4Wf1AzAe0Q71o","3BhpdonIXCGOz5OSrvsfQV","1$ATHsODn1eA_uGNS0qpk2","0WVyp4_PP2vh62lNj898kd"]},{"id":"","name":"Basic Wall:Party Wall - CMU Residential Unit Dimising Wall:139374","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FKRi","name":"Basic Wall:Party Wall - CMU Residential Unit Dimising Wall:139347","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0q$8HgdRX1_f05UbbYuHzG","2n$WFwxwLBNuc9PD2RDEb3","3Pe4_s2AH6886Gz1pVy038","1o6MQprdj23AthqNFcPTJp","2WCne2wSnAHh2bdPhFQoKs","3I0bCWsYXA$uUZOH4IP0qA"]},{"id":"","name":"Basic Wall:Party Wall - CMU Residential Unit Dimising Wall:139347","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FNbT","name":"Basic Wall:Party Wall - CMU Residential Unit Dimising Wall:139234","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["06sPHkzRvEoeCHWROdzsxG","2vGinuHIzD2e1SuJ9pnesw","1BQPX09yL2DOktbKx_SEJl","3laasWzjP3FPQmOPfMD2nl","1MiEIZimv7EOdo5JHugrvy","2kula8xtn2$xbtX1g8hURJ","0sE7zJoWr5xh7xbdtjMsw3","0UDEsqQ$nB5fvBzQIKlin0","0Hhqv_0lH7ygduzQmRUfs3","3qj_sptMP2oelmXEgCWp_q"]},{"id":"","name":"Basic Wall:Party Wall - CMU Residential Unit Dimising Wall:139234","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FNau","name":"Basic Wall:Interior - Partition (92mm Stud):139143","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["06aS$0YsDDNgBYj3by8L_W","13hlcYTy971ubjSjuczUmV","0njsJkTTD4Xwaz0NpflITX","1iME8Zo4TAgxNgYFj2Fxsn","2xFnz_l0P2MPgRUPKDWEl4","1n0$5LhrnFNOwkUmgYga_j"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):139143","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FNld","name":"Basic Wall:Interior - Partition (92mm Stud):138584","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["088UZYAS12dQNn_tcm3IET","0nyK$YACH4jPUrrT32eEQA","3ndNMcysz9s9Y5d3YmM3rl","0KbmXCwNT9KQjswiMLPMTe","32xuOpUer6KxM22x5xQD$G","2jau$7tsL5whM2BPhVFBX7","0xt3kluWv25f9os20l$pc$","1HswWSSHn2Uu0rLuk$eJEb","1T8YVmPWDAcv3luoZwfsCP","1uI54s2UL4a9e754FtPXzW"]},{"id":"","name":"Basic Wall:Interior - Partition (92mm Stud):138584","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FNhv","name":"Basic Wall:Exterior - Brick on Block:138310","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1eVR1ziuX5TAQyrzaNhdvx","3mXmTdEb18eukGcgq7YQHM","2GGd3yPUn4bxDFbAKODc6O","1MH__u48DDlBhYKAoaOy2g","0AeisHfE13Cf09xoQ93D2T","1XVYZ8izX3YhJlr4EBKb02"]},{"id":"","name":"Basic Wall:Exterior - Brick on Block:138310","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FNr2","name":"Basic Wall:Exterior - Brick on Block:138237","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["0VtRgLYp9BxAWpFJRH9LVc","3SeHV5RL13M8NHjY_geoLI","1tH0LLeQj0o9qasBozf4W$","0xK80bHun5C9iJ9BL7kWMT","0w96Uj2ujFjP_SXzZQQdMG","28haraqyv4nvaa067eZB94"]},{"id":"","name":"Basic Wall:Exterior - Brick on Block:138237","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FNqI","name":"Basic Wall:Exterior - Brick on Block:138157","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["3cSiD15qb6Eg5Uhoa3m93d","2zeOl6NF1DxvBtppWgmc05","0OfYVf4Ij7LgR0HEs3mlGL","2LgeUG5B91efDSveOM26uN","11Mq6X97PDkQHyF5nut8Nn","0OWykhKY1BiPwKnO9zCccR"]},{"id":"","name":"Basic Wall:Exterior - Brick on Block:138157","type":"IfcWallStandardCase","parent":null},{"id":"2O2Fr$t4X7Zf8NOew3FNtn","name":"Basic Wall:Exterior - Brick on Block:138062","type":"IfcWallStandardCase","parent":"1xS3BCk291UvhgP2dvNMKI","propertySetIds":["1E7F2nuUH0_hvnhAf__rof","1w3SWzE$9BNu23_6baMv$$","2uU476nZ93zvRQ_U7SL3FO","0Sw8uqaaX5$QgDtiAnKz4q","3qibp2BP110wx$jHBHFO_X","3Z0MhOvvXDCenHwokiLRWj","0CAnPQshH87ATiAnTgSWYR","3Zh$JNdkb49f1HnW6y77hJ","31YSs6mK1ABvdOpqumRO4P","2xdv1GBTr3KQG$rGaRWwQy"]},{"id":"","name":"Basic Wall:Exterior - Brick on Block:138062","type":"IfcWallStandardCase","parent":null},{"id":"0MObPWVD1D8gv112BlXyng","name":"600mm Depth","type":"IfcFurnitureType","parent":null},{"id":"0iEHWY1$XA8eQeeULq4jRb","name":"1000 mm","type":"IfcFurnitureType","parent":null},{"id":"0rkqFIv$D9q8AH_fD6hwuj","name":"800 mm","type":"IfcFurnitureType","parent":null},{"id":"0wkEuT1wr1kOyafLY4v$qt","name":"1000mm","type":"IfcFurnitureType","parent":null},{"id":"0wkEuT1wr1kOyafLY4vy2N","name":"800 mm","type":"IfcFurnitureType","parent":null},{"id":"0wkEuT1wr1kOyafLY4vy9t","name":"1000 mm","type":"IfcFurnitureType","parent":null},{"id":"0wkEuT1wr1kOyafLY4vyuY","name":"800 mm","type":"IfcFurnitureType","parent":null},{"id":"1NArQRUeP4QB0VU$9qqjH0","name":"800 mm","type":"IfcFurnitureType","parent":null},{"id":"1aj$VJZFn2TxepZUBcKp0h","name":"1000mm","type":"IfcFurnitureType","parent":null},{"id":"1aj$VJZFn2TxepZUBcKp3g","name":"1000mm","type":"IfcFurnitureType","parent":null},{"id":"1aj$VJZFn2TxepZUBcKpCQ","name":"600mm Depth","type":"IfcFurnitureType","parent":null},{"id":"1aj$VJZFn2TxepZUBcKpCz","name":"600mm Depth","type":"IfcFurnitureType","parent":null},{"id":"1aj$VJZFn2TxepZUBcKppH","name":"600mm Depth","type":"IfcFurnitureType","parent":null},{"id":"2OBrcmyk58NupXoVOHUsk0","name":"0915 x 1830 x 0457mm","type":"IfcFurnitureType","parent":null},{"id":"2OBrcmyk58NupXoVOHUsk4","name":"0610 x 0610 x 0610mm","type":"IfcFurnitureType","parent":null},{"id":"2OBrcmyk58NupXoVOHUsvk","name":"1830mm","type":"IfcFurnitureType","parent":null},{"id":"2OBrcmyk58NupXoVOHUvfp","name":"1525 x 2007mm - Queen","type":"IfcFurnitureType","parent":null},{"id":"2OBrcmyk58NupXoVOHUvfz","name":"1981 x 2032mm - King","type":"IfcFurnitureType","parent":null},{"id":"2OHqcM7sT8Y9m2_2JkKhNb","name":"800 mm","type":"IfcFurnitureType","parent":null},{"id":"2gRXFgjRn2HPE$YoDLX0$a","name":"450 x 450 mm","type":"IfcFurnitureType","parent":null},{"id":"2gRXFgjRn2HPE$YoDLX0rd","name":"650 x 450 mm","type":"IfcFurnitureType","parent":null},{"id":"2gRXFgjRn2HPE$YoDLX0tW","name":"650 x 450 mm","type":"IfcFurnitureType","parent":null},{"id":"3LZ81yVpj3reyt5HtPcvhD","name":"800 mm","type":"IfcFurnitureType","parent":null},{"id":"3bu3W6Tm9CbA_SLbz36Oz9","name":"800 mm","type":"IfcFurnitureType","parent":null},{"id":"3g0dtxyR5CkRZdQk_LpLWE","name":"800 mm","type":"IfcFurnitureType","parent":null}],"propertySets":[{"id":"00HCmBZuvD0OxVIAg2enms","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"00gkvvom1EdhsXFu3xbplC","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"4","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"00mXFN6njEWP$v0HKjwRvu","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Wood","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"00mqygXvb7khaFGz5MesVB","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"00pSezQu1E5R7_KPMObOjL","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"00wWpbrVT2YOhGPQl$ykoJ","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":1.6845,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"01DGDoFsTA6BlIlhhFggd7","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Foundation - Concrete (417mm)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"01X$8KVovB9xkNJ_M_vhgM","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"01xnmsGXfBiw1_L44e$H_J","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":19.91399999999992,"valueType":"number"},{"id":"2","name":"Area","value":22.04323199999979,"valueType":"number"},{"id":"3","name":"Volume","value":1.256464223999989,"valueType":"number"}]},{"id":"01yRbenaXDxvx2GHYSnLdS","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Frame Exterior Material","value":"Sash","valueType":"string"},{"id":"2","name":"Frame Interior Material","value":"Sash","valueType":"string"},{"id":"3","name":"Glass Pane Material","value":"Glass","valueType":"string"},{"id":"4","name":"Sash","value":"Sash","valueType":"string"}]},{"id":"020TRS8kPDu8Navq5NI2RN","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Release","value":3.0,"valueType":"number"},{"id":"2","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"3","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"4","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"5","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"6","name":"Start My","value":"True","valueType":"boolean"},{"id":"7","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"8","name":"End Release","value":1.0,"valueType":"number"},{"id":"9","name":"End Fx","value":"False","valueType":"boolean"},{"id":"10","name":"End Fy","value":"False","valueType":"boolean"},{"id":"11","name":"End Fz","value":"False","valueType":"boolean"},{"id":"12","name":"End Mx","value":"True","valueType":"boolean"},{"id":"13","name":"End My","value":"True","valueType":"boolean"},{"id":"14","name":"End Mz","value":"True","valueType":"boolean"},{"id":"15","name":"Analyze As","value":1.0,"valueType":"number"}]},{"id":"02LRgP0615TvUrosaVE7CF","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1000000000000048,"valueType":"number"}]},{"id":"02YRwqk3L1NuR1jNBdW9vN","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Handle Material","value":"Cabinets - Handles","valueType":"string"},{"id":"2","name":"Panel Material","value":"Cabinets - Panel","valueType":"string"},{"id":"3","name":"Finish","value":"Finish","valueType":"string"}]},{"id":"02bAI0ZcfFsACHZOxZra_Z","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"02dvAkK69ErPpMo8sN7i39","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"A205","valueType":"string"}]},{"id":"03AiXvtu9BSxSBJ_S8rh$_","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"03CYHWgf9EMvjryurCBM8W","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Furring (152 mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"03MhSluG9DuxpysnBgIcjq","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"5","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"6","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"7","name":"Unconnected Height","value":2.795000000000196,"valueType":"number"},{"id":"8","name":"Top Offset","value":-0.3050000000000001,"valueType":"number"},{"id":"9","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"10","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"11","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"12","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"03RnWTNwzBa9sohZCOjPmN","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension","value":-0.0127,"valueType":"number"},{"id":"2","name":"End Extension","value":-0.0127,"valueType":"number"}]},{"id":"03wgCXBKTE9P1HM1JNQ93T","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"Type Mark","value":"04","valueType":"string"},{"id":"5","name":"OmniClass Number","value":"23.30.20.17.11","valueType":"string"},{"id":"6","name":"OmniClass Title","value":"Fixed Windows","valueType":"string"}]},{"id":"03wnnbxtH3w90ExxXajACh","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"04W$NU4Ev8VexmQgOBMStZ","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"T/FDN","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 1","valueType":"string"},{"id":"10","name":"Unconnected Height","value":1.25,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"04rEUACvXBMv$WpKiUd554","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0514_trvH0ABT3OTENrMtU","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":34.548,"valueType":"number"},{"id":"2","name":"Area","value":64.77992799999992,"valueType":"number"},{"id":"3","name":"Volume","value":8.22705085599999,"valueType":"number"},{"id":"4","name":"Thickness","value":0.127,"valueType":"number"}]},{"id":"051EZOvkLAQPAJTYWwOxjk","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"05LwnOEMzBsA0YEcn4oVAx","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Elevation","value":1.399999999999999,"valueType":"number"}]},{"id":"06HiRt9CLDk9RPhMVroIhw","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"06MvXdKxf3KeDu4Xv6tUrH","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"06aS$0YsDDNgBYj3by8L_W","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"06hPg$08v729xqHynyKxQf","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Flush:0864 x 2032mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"06hpUIytf1XQLjlh3DdKjh","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"06sPHkzRvEoeCHWROdzsxG","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Party Wall - CMU Residential Unit Dimising Wall","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"07RQ2b0TX3CvfUR3oQXKYb","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"07cyMnC6H2wPtJjK4FJF0Q","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"07z2tLbXfD1ea7l5tZ1nGb","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"07zS_tOmf9jQVcOzKBG4_f","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1,"valueType":"number"}]},{"id":"088UZYAS12dQNn_tcm3IET","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"08BPGQPQjCOxrzWjBDDrE5","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Height","value":0.61,"valueType":"number"},{"id":"2","name":"Length","value":0.61,"valueType":"number"},{"id":"3","name":"Width","value":0.61,"valueType":"number"}]},{"id":"08FdxrUT1DFuI20CRm369b","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0936uqojL0ceIOtzco$jLE","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"09DDfiV_572AnpUEq0DXp9","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"09KiiDbob8vvR$EfSZ7kVJ","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":8.382999999999976,"valueType":"number"},{"id":"2","name":"Area","value":10.47874999999997,"valueType":"number"},{"id":"3","name":"Volume","value":4.36963874999999,"valueType":"number"}]},{"id":"09X16PdlDAjgA$901rWPhM","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"09YJkq_EPExuLn7r1r8vs$","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"09_zAQPnH5kREUMD3sKCnZ","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"09gxfjJbbC8A2egN8EN08I","name":"Pset_RailingCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Railing:900mm Handrail Only","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"Height","value":0.8999999999999999,"valueType":"number"}]},{"id":"09luNEYE11$P11_LiRLvn5","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"09xHTczqbC6wUtUFQ673Fz","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"09zx0ugV57fx2lZCRNwEiy","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"0A6NGjcSr2RQFnjyf6C7x6","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0ABv2czUH44wJtVYaok1az","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Roof","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"0AK_4YxJT12ug2iHQPXLkZ","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"0ASAFcOlX4S9FqxOzV1kEd","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"0AeisHfE13Cf09xoQ93D2T","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"0AmgEgOXr5K94t2WJvfQ0L","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Top Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Bottom Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"}]},{"id":"0BXMc4ofH5Ag7frTfZT1a_","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0BZksmjHP8$Rn1OAabVtha","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"0Bq1ADlYzCeBKPy4Xck1JV","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0Btx2HRI93Zu8ummQKQNEs","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0BvgAVw_b0yx70eeF0wI5k","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0CAnPQshH87ATiAnTgSWYR","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"2","name":"Wrapping at Ends","value":0.0,"valueType":"number"},{"id":"3","name":"Width","value":0.4170000000000001,"valueType":"number"},{"id":"4","name":"Function","value":1.0,"valueType":"number"}]},{"id":"0CGJPeVHf6bh4ZJhZ9O$3H","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0CUjzUNFPE_PYNByQqg3Hj","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Roof","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"0CkNanxZj0$gwEf8xyadtG","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"0Cnq1MPFj5mACMj$t$qgOx","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Furring (152 mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"0Crkeo1oD6YuH9bC1FoZgg","name":"Pset_RailingCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Railing:900mm Handrail Only","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"Height","value":0.8999999999999999,"valueType":"number"}]},{"id":"0DPjhRGbXBXuFZrmROsYEM","name":"PSet_Revit_Type_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"W","value":0.58,"valueType":"number"},{"id":"2","name":"A","value":0.007599999999999999,"valueType":"number"}]},{"id":"0DiwZigWv0KAmhEZKl8EOg","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Level 2","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"0DwADEtHX77uddddJXdUIk","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"T/FDN","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 1","valueType":"string"},{"id":"10","name":"Unconnected Height","value":1.25,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0EBfEhB4rCKu_uZAJwfZbr","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0ENMvGbrLCyAsrGir$aJrd","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0EOTp55cPCUgR5SycaZEln","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Depth","value":0.3,"valueType":"number"},{"id":"2","name":"Height","value":0.6000000000000001,"valueType":"number"},{"id":"3","name":"Top Of Cabinet","value":2.0,"valueType":"number"},{"id":"4","name":"Width","value":1.0,"valueType":"number"}]},{"id":"0EkCmONFz8BRCSVhgayPwf","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"2","name":"Horizontal Projection","value":"Default","valueType":"string"}]},{"id":"0F1mJhNF5BR89Mnh6$dRge","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":0.8590000000000001,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0F6RqInVHEjwGSk3fyoYUC","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0FAK7n8lf5_BuDfCBdj0tS","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:127mm Slab on Grade","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"0FD_6aU418p8fSsg5EaeoW","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0FGgAuLFb9WhXCsy0LNHcb","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":8.334342848330112,"valueType":"number"}]},{"id":"0FizRodEP92hLXh_P1PVG5","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0Fja1o7XrDQAwbcgQKcTSn","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0FodsgF2DC1gJUHRWSTnwh","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Sash Material","value":"Metal - Bronze, Light Brush","valueType":"string"},{"id":"2","name":"Glass Pane Material","value":"Glass","valueType":"string"},{"id":"3","name":"Frame Material","value":"Metal - Bronze, Light Brush","valueType":"string"}]},{"id":"0GF57FsQvBAO$dCkhUA6eO","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.51,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0GF8lu$yX0FQEBSKfE4um3","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0GP2lkOYbEGfKmwJKZck6s","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0GRvExXmv1iB$5yBg33gZJ","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"0GafJweCPEVg8kte7F1hag","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0GjUiof$L0aA99noszyPFe","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0Gnmo4gJXAaRzp0AOvTSkn","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"2","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"0GqxXq9ln56QHsNX0UQjW7","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"0H1puE2A59WvpIXJEV88QW","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"22","valueType":"string"}]},{"id":"0HEjDOSEf6LhhIqnpPlXjv","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Height","value":2.42,"valueType":"number"},{"id":"2","name":"Default Sill Height","value":0.1,"valueType":"number"},{"id":"3","name":"Width","value":4.835,"valueType":"number"},{"id":"4","name":"Window Inset","value":0.019,"valueType":"number"}]},{"id":"0Hcub9rsX1SPcTv48nLClm","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0Hhqv_0lH7ygduzQmRUfs3","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"0Hl_tX3Ur8ABXNraKzMszC","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Party Wall - CMU Residential Unit Dimising Wall","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"0ICYuwlNjEeuuDlvjY1OJj","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Ceramic Tile","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"0IezQV_F9E0BxbrtjToNCs","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"0IfNAzrhr3TvaBqiWpQ4ui","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0IjcdzJ7HCpe1ZvzVNQLKn","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"24","valueType":"string"}]},{"id":"0Iq3kuYNP0Qw7FBEp1_wp3","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":26.11931424999996,"valueType":"number"},{"id":"2","name":"Perimeter","value":21.42199999999998,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":2.900000000000012,"valueType":"number"},{"id":"4","name":"Volume","value":56.8935817919999,"valueType":"number"}]},{"id":"0IspL5mWnCFBph2TfSODya","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0J$2inJ6rA5RwqUfnPppaa","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0J14htz$H0XRTKVdtpnLzs","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0JG1P_6Sn7Cx3z_3WgVJwi","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"31","valueType":"string"}]},{"id":"0JT9n4ifzDdQje8i1hh6sH","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Function","value":0.0,"valueType":"number"},{"id":"2","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"3","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"4","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"0JVBu8BI512OYcFzX_9wSg","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"0JYfEcYO57vA988diqJ0Ee","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":7.52299999999997,"valueType":"number"},{"id":"2","name":"Volume","value":0.0548775449799998,"valueType":"number"}]},{"id":"0J_WN4oQj3buI9XOLezAkS","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"0KIyI4IBr6WAGWiHIXFEty","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"20","valueType":"string"}]},{"id":"0KbmXCwNT9KQjswiMLPMTe","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0KisbjPOnCDAiklsS8ZIdz","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension Calculation","value":3.0,"valueType":"number"},{"id":"2","name":"End Extension Calculation","value":3.0,"valueType":"number"},{"id":"3","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"4","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"5","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"6","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"7","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"8","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0KtYfwWyv7kgAQisasw_Ts","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"0KtdBA_ev6JRzEDZxIionw","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Bedroom","valueType":"string"},{"id":"6","name":"Category Code","value":"13-51 21 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit B CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit B FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit B HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit B LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit B OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit B VentilationZoneName","valueType":"string"}]},{"id":"0LQjLPGbvAnvCb4fpahn7Q","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Depth","value":0.6000000000000001,"valueType":"number"},{"id":"2","name":"Height","value":0.8600000000000001,"valueType":"number"},{"id":"3","name":"Plinth Depth","value":0.035,"valueType":"number"},{"id":"4","name":"Plinth Height","value":0.1,"valueType":"number"},{"id":"5","name":"Width","value":1.0,"valueType":"number"},{"id":"6","name":"Width","value":1.0,"valueType":"number"}]},{"id":"0LS2XnuWzFL9fjtLDfCWfK","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0LT7Ht7b10VRpUGRrF9OWz","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"0LcukHoMn83gn2jsJScFC9","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Bedroom","valueType":"string"},{"id":"6","name":"Category Code","value":"13-51 21 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit B CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit B FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit B HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit B LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit B OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit B VentilationZoneName","valueType":"string"}]},{"id":"0LdgaWN7b9nPteD2dznXAl","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":11.36799999999998,"valueType":"number"},{"id":"2","name":"Area","value":6.339839999999962,"valueType":"number"},{"id":"3","name":"Volume","value":0.08241791999999794,"valueType":"number"},{"id":"4","name":"Thickness","value":0.013,"valueType":"number"}]},{"id":"0Le7piZyL2vhHNMegbVX$O","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"0LhXR0UGn9agGgJFS$9SEi","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Width","value":1.83,"valueType":"number"}]},{"id":"0LlMaXplP90wSWUWBAst6k","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Seat Material","value":"Textile - Linen, Smooth","valueType":"string"},{"id":"2","name":"Frame Material","value":"Wood - Cherry","valueType":"string"}]},{"id":"0LuVy1apr77xK4qtdTeaUE","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0M5BQRYKf61gDtyxku3s32","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Roof","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"0M9KPNTzLB2Ou_HJrmzxhq","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Height","value":2.2,"valueType":"number"},{"id":"2","name":"Default Sill Height","value":0.1,"valueType":"number"},{"id":"3","name":"Width","value":0.7500000000000001,"valueType":"number"},{"id":"4","name":"Window Inset","value":0.019,"valueType":"number"}]},{"id":"0MAsy0Jbj0JePn04DUNSTS","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"0MQOFpxFb9GxEBOQIJlXBu","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Roof","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"0MRHp8PFb1rfsgHyp8nD2_","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":12.12535199999988,"valueType":"number"},{"id":"2","name":"Perimeter","value":15.31899999999995,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":2.900000000000012,"valueType":"number"},{"id":"4","name":"Volume","value":26.94680025999971,"valueType":"number"}]},{"id":"0MRXPey2HD7gV2n1s1FWdt","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.032,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0MT45M0yf0gAjm0ro3ybGU","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0MWnW_lJXAMv6zOwJmzN54","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"0MrhFP4PT2hB0HeMptzost","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"0Ms9XuEjv0lecJygn43shn","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"2","name":"Cut Length","value":4.100000000000001,"valueType":"number"},{"id":"3","name":"Structural Usage","value":6.0,"valueType":"number"}]},{"id":"0NJVffLxD3RhfHkRvndLsN","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"0NRCUopsb00Bib8F2PG0yj","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Pattern","value":"Concrete","valueType":"string"},{"id":"2","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"},{"id":"3","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"0NTLjSrPz46glScQIN4Oye","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"IsFireExit","value":"IsFireExit","valueType":"string"},{"id":"4","name":"ConstructionType","value":"ConstructionType","valueType":"string"},{"id":"5","name":"GlazingAreaFraction","value":"GlazingAreaFraction","valueType":"string"},{"id":"6","name":"OperationType","value":"OperationType","valueType":"string"},{"id":"7","name":"Area","value":"Area","valueType":"string"},{"id":"8","name":"Color","value":"Color","valueType":"string"},{"id":"9","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"10","name":"Features","value":"Features","valueType":"string"},{"id":"11","name":"Finish","value":"Finish","valueType":"string"},{"id":"12","name":"Grade","value":"Grade","valueType":"string"},{"id":"13","name":"Material","value":"Material","valueType":"string"},{"id":"14","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"15","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"16","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"17","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"18","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"19","name":"Reference","value":"Reference","valueType":"string"},{"id":"20","name":"Shape","value":"Shape","valueType":"string"},{"id":"21","name":"Size","value":"Size","valueType":"string"},{"id":"22","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"23","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"24","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"25","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"26","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"27","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"28","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"29","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"30","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"31","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"0Nk3nVXKv8_uOslJn$Q1Qx","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"0Nw9pEiIPB2eRs5U912rG5","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Kitchen","valueType":"string"},{"id":"6","name":"Category Code","value":"13-11 19 11 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit A CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit A FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit A HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit A LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit A OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit A VentilationZoneName","valueType":"string"}]},{"id":"0OIsOgAqL468Wz7oGiFua1","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0OWykhKY1BiPwKnO9zCccR","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":17.38299999999997,"valueType":"number"},{"id":"2","name":"Area","value":49.72480000000331,"valueType":"number"},{"id":"3","name":"Volume","value":20.73524160000141,"valueType":"number"}]},{"id":"0OaUeS1$nBgOp_jfDehRu3","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"0OfYVf4Ij7LgR0HEs3mlGL","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0OfZIw1wHEJgO0tXvmpbnZ","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"16","valueType":"string"}]},{"id":"0OnJmf2RHCtwZdjC5b796t","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"0PHReR5$HAKQSJ5hDoEshq","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0PRblILH9Ekx_Ks_TZpby_","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Flush:0864 x 2032mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"0PT7R8YNbCvvAcSlngyvXs","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"0PWo9e7Vf3ofyodRq95u5$","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Handle Material","value":"Cabinets - Handles","valueType":"string"},{"id":"2","name":"Finish","value":"Finish","valueType":"string"}]},{"id":"0P_jH96fLBhukrzM8lPtKZ","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.0,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0Py5q4aFzC0hJ6k2cM6ZjX","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0Q4DCnqDXBshicLhkg4aDB","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"0QHzCed2n09Rj2xVgoPMXM","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.20.14.17.24","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Coffee Tables","valueType":"string"}]},{"id":"0QLiB6RsX8txBIIDwp_ATJ","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"2","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"3","name":"Horizontal Projection","value":"Default","valueType":"string"}]},{"id":"0QSxZmSlX9gQtwY1MRSgFp","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.019,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0QrdBoIbv2agScyksqgkWz","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0R73PTDgX3CP2SNicHcMlM","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Door Material","value":"Door - Panel","valueType":"string"},{"id":"2","name":"Frame Material","value":"Door - Frame","valueType":"string"}]},{"id":"0RS8uf26v7YQbP9d62ylat","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Assembly Code","value":"","valueType":"string"},{"id":"2","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"3","name":"Assembly Description","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.25.30.11.14.14","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Beams","valueType":"string"}]},{"id":"0RfO2qO752GBaPRhTqYwHq","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0Rxz7NAdn0WuGKbKoIThBs","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension Calculation","value":3.0,"valueType":"number"},{"id":"2","name":"End Extension Calculation","value":3.0,"valueType":"number"},{"id":"3","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"4","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"5","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"6","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"7","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"8","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0S39bcKoH4fvRHYTdVdz29","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0S4cqonebArgXZKaSlv9b2","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.485499999999986,"valueType":"number"},{"id":"2","name":"Area","value":12.16663500000081,"valueType":"number"},{"id":"3","name":"Volume","value":1.849328520000124,"valueType":"number"}]},{"id":"0SA1GcGL1ATvx$bzO6dyNS","name":"Pset_RailingCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Railing:1100mm Guard Rail","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"Height","value":1.1,"valueType":"number"}]},{"id":"0SAyqMT$L8vQA5bM59VevE","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"0SC0sjZwvBRAarP4pGKSjp","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0SkDyUZ6b4tvtR4H_3LMmy","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"0SthNs9p58ghq0DU0PrtD6","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0SuGV_$k51cQvuDZzEVd_F","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:127mm Slab on Grade","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"0Sw8uqaaX5$QgDtiAnKz4q","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0T$3Okowz4v9YbQZIez73_","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Finish Floor - Ceramic Tile","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"0TA59JE6XFR8rMaSDDhh_O","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0TDkn8fuzFxfRe25suceu7","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0TFDOs9kn5xgz_V96LfnTA","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.51,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0TV7_FzlDFeBEZO5kZI11i","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0TVlEUfq9F8AbxhsLNHSsS","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":1.95599999999999,"valueType":"number"},{"id":"2","name":"Area","value":4.69509999999999,"valueType":"number"},{"id":"3","name":"Volume","value":0.8638984000000003,"valueType":"number"}]},{"id":"0TaHX3s1TFjxYTeMIwL35L","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Default Thickness","value":0.4570000000000001,"valueType":"number"}]},{"id":"0TbtSR8qv7JfwLDzfgzjqa","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Elevation","value":1.399999999999999,"valueType":"number"}]},{"id":"0TcEdqE15ED8ndiPy0lszY","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":3.0,"valueType":"number"},{"id":"2","name":"Sink Location","value":1.500000000000001,"valueType":"number"},{"id":"3","name":"Sink Location To Wall","value":0.1,"valueType":"number"},{"id":"4","name":"Sink Opening Depth","value":0.378,"valueType":"number"},{"id":"5","name":"Sink Opening Width","value":0.5870000000000001,"valueType":"number"}]},{"id":"0TeaceAsH0TfMqI_gljWlo","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"0Tj0GHhlL06OhFfaoB3Bs7","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"15","valueType":"string"}]},{"id":"0TjPkByEb7WhJYcSx2uKnQ","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:4835mm x 2420mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"0TwCn1_mr4s9M13Dl6_6q3","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Exterior - Brick on Block","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"0UBYNrxxHAaPhN3PMAJ5$8","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"2","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"3","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"0UBtLdrsz7Gxm1iAz4ABES","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0UDEsqQ$nB5fvBzQIKlin0","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"},{"id":"2","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"0UDGElS25CWwMM49iT$nvC","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"0UTvGEtmX9vAojJlPGAXwb","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0UV3MQO4r4zfV3AmdSXGsZ","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Rafter Cut","value":33615.0,"valueType":"number"},{"id":"2","name":"Fascia Depth","value":0.0,"valueType":"number"},{"id":"3","name":"Maximum Ridge Height","value":6.457000000000208,"valueType":"number"}]},{"id":"0UVWLTLhfBOgh5hdjIBzvI","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0Uawe2WWnFXvzlM3KHujqd","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Enable Analytical Model","value":"True","valueType":"boolean"}]},{"id":"0Uh0TLC_r1G8XWm0tC58eU","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0Up69FPU9CC8s9EAuuQtHg","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Door Material","value":"Door - Panel","valueType":"string"},{"id":"2","name":"Frame Material","value":"Door - Frame","valueType":"string"}]},{"id":"0V5FXM_uj5swRbSZl0mOgJ","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0V5HKOqbj18O_KDCBuwd69","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0VE2zyznf7Rv8XejFCBq20","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0VXDwLwLLF8BjQaOIzVkCt","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0Vcx0MByzA7BuKtk9yeeu0","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:819mm x 759mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"0VdGbm22b2YfqqGVGjGobk","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Top Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Bottom Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"}]},{"id":"0Vh5ySrG58kxio8z1LyiDl","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Plumbing (152mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"0VtRgLYp9BxAWpFJRH9LVc","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Exterior - Brick on Block","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"0W5fBD0Kn4nQ7VWouUCjdN","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"0W7Gg0CVX6OPJCD9unWQ7H","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":5.415819401311199,"valueType":"number"},{"id":"2","name":"Perimeter","value":9.841231529857002,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":2.900000000000012,"valueType":"number"},{"id":"4","name":"Volume","value":12.240220859418,"valueType":"number"}]},{"id":"0W87pqgjD919nb9OsmvZVC","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0WEVeTZLr5CwfSFahs62FF","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"0WVyp4_PP2vh62lNj898kd","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":2.200000000000027,"valueType":"number"},{"id":"2","name":"Volume","value":2.010723000000178,"valueType":"number"}]},{"id":"0WaGHpd1DDluLgf9IGlc3P","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Analyze As","value":4.0,"valueType":"number"}]},{"id":"0X49hcxgH82eIyiJcylzMu","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":1.6845,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0XT3aIgkrBFO1$7iqhr77G","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"2","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"3","name":"Horizontal Projection","value":"Default","valueType":"string"}]},{"id":"0XWg472N9EEeeVnsLsHuXN","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference Level","value":"Roof","valueType":"string"},{"id":"2","name":"Work Plane","value":"Level : Roof","valueType":"string"},{"id":"3","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"4","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"5","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"6","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"7","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"8","name":"Orientation","value":0.0,"valueType":"number"},{"id":"9","name":"Cross-Section Rotation","value":0.0,"valueType":"number"}]},{"id":"0XdAKypsnCWgcClrRLl0H6","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Roof","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":0.6090000000000002,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.609,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0Xe6B2Tbf1EP17CvqOc8IM","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.100000000000001,"valueType":"number"},{"id":"2","name":"Volume","value":0.0307236780000001,"valueType":"number"}]},{"id":"0Xjd_Uj0b9mxSbWlcyuuY_","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"},{"id":"2","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"0Xss5p4GjAxeua5wJsjStO","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Tread Material","value":"Wood - Flooring","valueType":"string"},{"id":"2","name":"Riser Material","value":"Wood - Flooring","valueType":"string"},{"id":"3","name":"Stringer Material","value":"Wood - Dimensional Lumber","valueType":"string"}]},{"id":"0YFUDzmlfF0efd1Z4h$A_j","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.795000000000196,"valueType":"number"},{"id":"11","name":"Top Offset","value":-0.3050000000000001,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0YKkikD2D1YfrtXZ3UncS5","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Work Plane","value":"Level : Level 2","valueType":"string"},{"id":"3","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"5","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"6","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"7","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"8","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"9","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"10","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"11","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"12","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"13","name":"Orientation","value":0.0,"valueType":"number"},{"id":"14","name":"Orientation","value":0.0,"valueType":"number"},{"id":"15","name":"Cross-Section Rotation","value":0.0,"valueType":"number"}]},{"id":"0Z0Pl4eGXEQePT$AUEaqPC","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"0Z2_tKgmfDthzSDG9tcitR","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"0Z9w0oVQf6ceixF2C34yDK","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"0Z9xPszfT3YeXQEErA4eRx","name":"Pset_BeamCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_W-Wide Flange:W410X60","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"6","name":"Span","value":6.181887120424958,"valueType":"number"},{"id":"7","name":"Slope","value":0.0,"valueType":"number"}]},{"id":"0ZFGskHer5tQocH9EUqthH","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.35.17.47.11","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Kitchen Casework","valueType":"string"}]},{"id":"0Zgo$Bbfz6OR8VAPWVzMA9","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Height","value":0.4569999999999999,"valueType":"number"},{"id":"2","name":"Length","value":1.83,"valueType":"number"},{"id":"3","name":"Width","value":0.9149999999999999,"valueType":"number"}]},{"id":"0ZxmKkzC96$xTtRpKVGokj","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0_086HDzz3H9OKM5ipZ3$p","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Category","value":"Roof","valueType":"string"}]},{"id":"0_6W1z2Gz98PYys_HNx4Qr","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":7.254000000000099,"valueType":"number"},{"id":"2","name":"Area","value":3.160976000000074,"valueType":"number"},{"id":"3","name":"Volume","value":0.04109268800000098,"valueType":"number"},{"id":"4","name":"Thickness","value":0.013,"valueType":"number"}]},{"id":"0_DWbwOS99Qf1KQAIYdO_L","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":3.997752000000072,"valueType":"number"},{"id":"2","name":"Perimeter","value":8.204000000000092,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":3.100000000000196,"valueType":"number"},{"id":"4","name":"Volume","value":8.21236707200021,"valueType":"number"}]},{"id":"0_G$fLZ7D4igvgk3jM13Hz","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"0_kcrUu4TFqPcgd416hoDS","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0aBNeVDzb5ZPCJVYM1HMY1","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Ceramic Tile","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"0aC7eYbSbBFAestLF0d3ic","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"19","valueType":"string"}]},{"id":"0aK4g1pdT5CvcpyPelZCmL","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":19.91399999999998,"valueType":"number"},{"id":"2","name":"Area","value":22.04323199999996,"valueType":"number"},{"id":"3","name":"Volume","value":1.256464223999998,"valueType":"number"}]},{"id":"0aKgM76vnAkwl7kVbm4d_T","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Living Spaces","valueType":"string"},{"id":"6","name":"Category Code","value":"13-51 24","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit B CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit B FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit B HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit B LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit B OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit B VentilationZoneName","valueType":"string"}]},{"id":"0adxOB_uzD4R04_o967r6o","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0bnChxq9HA_BonHLN5MDVS","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"0brZ0YY4zBlvrBK38Vvjqd","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.52,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0btVI3Ry5CNvlDOR76HCC6","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0ch4MvgNP5B8MCh8RuXKaz","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0dSPOMZtj2sB993y5hdqIw","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"0eOwln7zXF28aMhPwgynTM","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.9255000000000001,"valueType":"number"}]},{"id":"0ehJUUCIv1lhQcBmtrUQp9","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0eyMY$t7v3POvgjrkZHwF8","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Finish Floor - Wood","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"0f8CuSr$b8g8h$IT1NLPQW","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"0fECHhJmn5rwxoWw6chHJT","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"0g4_$qgUf5s9R_XyaxVUQh","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Height","value":2.41,"valueType":"number"},{"id":"2","name":"Default Sill Height","value":0.1,"valueType":"number"},{"id":"3","name":"Width","value":2.8,"valueType":"number"},{"id":"4","name":"Window Inset","value":0.019,"valueType":"number"}]},{"id":"0gS76cxizESAM6sf_jaJvg","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Level : Level 1","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"0gVlNCdjHFnghPPv7oUICM","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Backsplash Visibility","value":"True","valueType":"boolean"}]},{"id":"0gpX8F4aTDvxql2AxZbCM_","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0gxtxQL2963Bfo2XeaeUcN","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:2800mm x 2410mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"0h8JaEcRT5TBoqpBtoAs0S","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0hD25oa8f9fflZ9Q0ys_D4","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Unconnected Height","value":3.100000000000196,"valueType":"number"},{"id":"10","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"True","valueType":"boolean"},{"id":"13","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0hEoL5_sz2QewBGP7UkE8O","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:2800mm x 2410mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"0hGnaWNaLEOPj4NH1NKg$S","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"0hIKFOSqTEIgwSfXOSQmVi","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1,"valueType":"number"}]},{"id":"0hQP9jB6P21A99ZE6XCm3B","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"0hZvTfjvH61eIkPQJO5LvA","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"0hapovurL6r9L1Vijb0lzB","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":6.181887120424957,"valueType":"number"},{"id":"2","name":"Volume","value":0.0463244656878742,"valueType":"number"}]},{"id":"0hw9K2F2L6BA5gJhhivyMn","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"2","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"3","name":"Cut Length","value":4.100000000000001,"valueType":"number"},{"id":"4","name":"Structural Usage","value":6.0,"valueType":"number"}]},{"id":"0iDFpJI6P1cBx2cLgBsRwo","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Glass 1:0813 x 2420mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"0iL9ASICbAAvPTbJCqc5U_","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"0iTFY1Wk5Cf8WO5QSZjH7T","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Width","value":1.0,"valueType":"number"},{"id":"2","name":"Width","value":1.0,"valueType":"number"},{"id":"3","name":"Desired Number of Risers","value":16.0,"valueType":"number"},{"id":"4","name":"Actual Number of Risers","value":16.0,"valueType":"number"},{"id":"5","name":"Actual Riser Height","value":0.1937500000000122,"valueType":"number"},{"id":"6","name":"Actual Tread Depth","value":0.25,"valueType":"number"}]},{"id":"0imL4l5yL7LufQAQJ_CdHZ","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":19.946,"valueType":"number"},{"id":"2","name":"Area","value":22.06913600000004,"valueType":"number"},{"id":"3","name":"Volume","value":0.4193135840000009,"valueType":"number"},{"id":"4","name":"Thickness","value":0.019,"valueType":"number"}]},{"id":"0j9PMm9tr0$BPsjqFBCd$v","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0jAz91e8DFc9XmcV8DOlcS","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0jfbX8rrL7ZhSr_eQM83s4","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Depth","value":0.5199999999999999,"valueType":"number"},{"id":"2","name":"Height","value":2.0,"valueType":"number"},{"id":"3","name":"Plinth Depth","value":0.035,"valueType":"number"},{"id":"4","name":"Plinth Height","value":0.16,"valueType":"number"},{"id":"5","name":"Width","value":0.8,"valueType":"number"}]},{"id":"0jvGempX51yBlsxKaUzX_p","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"0kKrJte6fCEQllxKxvy_C7","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"0kW2juaYn3Sgi$29LZOXpv","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"0kZDN00GbFeQ9_KekOYP9h","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0kcAROHYj04PUO2MgRIoqJ","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":0.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.795000000000196,"valueType":"number"},{"id":"11","name":"Top Offset","value":-0.3050000000000001,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0kjuX9uibA6PUS53hIL2rM","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":1.956000000000018,"valueType":"number"},{"id":"2","name":"Area","value":4.695100000000069,"valueType":"number"},{"id":"3","name":"Volume","value":0.5821924000000085,"valueType":"number"}]},{"id":"0kwBVKRs54rPRax2fBUrV5","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Thickness","value":0.051,"valueType":"number"},{"id":"2","name":"Height","value":2.032,"valueType":"number"},{"id":"3","name":"Trim Projection Ext","value":0.025,"valueType":"number"},{"id":"4","name":"Trim Projection Int","value":0.025,"valueType":"number"},{"id":"5","name":"Trim Width","value":0.07599999999999999,"valueType":"number"},{"id":"6","name":"Width","value":0.8639999999999999,"valueType":"number"}]},{"id":"0kwYQOQAH8h9Op$vorbmwa","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference Level","value":"Roof","valueType":"string"},{"id":"2","name":"Work Plane","value":"Level : Roof","valueType":"string"},{"id":"3","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"5","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"6","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"7","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"8","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"9","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"10","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"11","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"12","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"13","name":"Orientation","value":0.0,"valueType":"number"},{"id":"14","name":"Orientation","value":0.0,"valueType":"number"},{"id":"15","name":"Cross-Section Rotation","value":0.0,"valueType":"number"}]},{"id":"0lMzh$SuP0dfpXxJ7G8RuD","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Exterior - Brick on Block","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"0lOD8$5s98dvFLyApv_o0g","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0lS3XFys17o9uj3tgeZ98a","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Roof","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"0lUZmud_b8HAzb$1xwbXUq","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0lp51TmwPAehzm12dqlETR","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"2","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"3","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"0m7DIk0mzDv9sElVYn3q7e","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"0mHO8R7Pb8ZOJ84bUS_fIT","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"ConfigurationType","value":"ConfigurationType","valueType":"string"},{"id":"4","name":"ConstructionType","value":"ConstructionType","valueType":"string"},{"id":"5","name":"FireRating","value":"FireRating","valueType":"string"},{"id":"6","name":"GlazingAreaFraction","value":"GlazingAreaFraction","valueType":"string"},{"id":"7","name":"OperationType","value":"OperationType","valueType":"string"},{"id":"8","name":"Area","value":"Area","valueType":"string"},{"id":"9","name":"Color","value":"Color","valueType":"string"},{"id":"10","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"11","name":"Features","value":"Features","valueType":"string"},{"id":"12","name":"Finish","value":"Finish","valueType":"string"},{"id":"13","name":"Grade","value":"Grade","valueType":"string"},{"id":"14","name":"Material","value":"Material","valueType":"string"},{"id":"15","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"16","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"17","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"18","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"19","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"20","name":"Reference","value":"Reference","valueType":"string"},{"id":"21","name":"Shape","value":"Shape","valueType":"string"},{"id":"22","name":"Size","value":"Size","valueType":"string"},{"id":"23","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"24","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"25","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"26","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"27","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"28","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"29","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"30","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"31","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"32","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"0mO0Il3f19RvKpbnUo6r06","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Flush:1250mm x 2010mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"0n3k5QKZb0lxuKqzn8LGyZ","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"21","valueType":"string"}]},{"id":"0nH14UFnXEefcrr0tDWRH6","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":26.11931424999978,"valueType":"number"},{"id":"2","name":"Perimeter","value":21.42199999999992,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":2.900000000000012,"valueType":"number"},{"id":"4","name":"Volume","value":56.89358179199945,"valueType":"number"}]},{"id":"0nHKHMAS1BZQV3tiKLZGoe","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"0nP6Rg5tL2JQPg7$4Vpgk9","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"0njlrgFsn7JuFSTzJ4jUnK","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"0njsJkTTD4Xwaz0NpflITX","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0nt0bXVGr9Ff56TGTnlU7w","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0ntOX81YT4SBNIoQDJeK__","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"0nuuzIbR982uqM1Bu9Daa4","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0nyK$YACH4jPUrrT32eEQA","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.795000000000196,"valueType":"number"},{"id":"11","name":"Top Offset","value":-0.3050000000000001,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0o4VcyUG1BAhwKC6GwR_ME","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"0oM_p7HY17TRcSzLTsf_8p","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":30.14164524999997,"valueType":"number"},{"id":"2","name":"Perimeter","value":22.02799999999999,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":3.100000000000196,"valueType":"number"},{"id":"4","name":"Volume","value":71.3906897089999,"valueType":"number"}]},{"id":"0oit7dyyrCu9rcO$SzYUT$","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0okhwAXg93_RBFZ7BFjxXJ","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":2.200000000000026,"valueType":"number"},{"id":"2","name":"Area","value":1.982095000000031,"valueType":"number"},{"id":"3","name":"Volume","value":0.8622113250000139,"valueType":"number"}]},{"id":"0ooe9roGD2w9AbnaS8vRpB","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"0p0G8vjJ17qO74EYdQxtYg","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":0.8590000000000048,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0pBFr76vD95BaToU1oy_f6","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.200499999999994,"valueType":"number"},{"id":"2","name":"Width","value":0.9,"valueType":"number"},{"id":"3","name":"Volume","value":1.131705,"valueType":"number"}]},{"id":"0pKZomC5f6t8ZPuUTZJElh","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0pL5uSRuv1XuMhRArRMzW_","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0pT784mxbEcwDozA_Ngyqq","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1,"valueType":"number"}]},{"id":"0pZD0x2c1Fh8BGbofP2m$l","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Depth","value":0.3,"valueType":"number"},{"id":"2","name":"Height","value":0.6000000000000001,"valueType":"number"},{"id":"3","name":"Top Of Cabinet","value":2.0,"valueType":"number"},{"id":"4","name":"Width","value":1.0,"valueType":"number"},{"id":"5","name":"Width","value":1.0,"valueType":"number"}]},{"id":"0q$8HgdRX1_f05UbbYuHzG","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Party Wall - CMU Residential Unit Dimising Wall","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"0q0Y43bv95S9Dk8VOcZYSe","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"A201","valueType":"string"},{"id":"2","name":"Name","value":"Hallway","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-51 24 11: General Residential Space","valueType":"string"}]},{"id":"0q9Dh6s2LCp8kKE0eG7Fye","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"T/FDN","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 1","valueType":"string"},{"id":"10","name":"Unconnected Height","value":1.25,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0qauOx3c15BwGZd4JjjIFd","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1,"valueType":"number"}]},{"id":"0r0jymk4DD9wNGIZhui9iM","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"0rDFSBydv2vgJVYVvC1D5c","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0rHcUjbPb7hv5KzPoGSb6B","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1,"valueType":"number"}]},{"id":"0rJMKeSYz2HBPFR15B561Q","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"2","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"3","name":"Cut Length","value":6.181887120424958,"valueType":"number"},{"id":"4","name":"Structural Usage","value":6.0,"valueType":"number"}]},{"id":"0r_GHwaivEKBxuidwCiUao","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":12.12535199999996,"valueType":"number"},{"id":"2","name":"Perimeter","value":15.31899999999998,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":2.900000000000012,"valueType":"number"},{"id":"4","name":"Volume","value":26.94680025999992,"valueType":"number"}]},{"id":"0rmgCeUk1CnPu_nWCo2ae_","name":"Pset_BeamCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_W-Wide Flange:W410X60","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"6","name":"Span","value":4.121279928630351,"valueType":"number"},{"id":"7","name":"Slope","value":0.0,"valueType":"number"}]},{"id":"0rpvPhGYj21uvodA0x8opL","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0rzDpfMj56MBvB7cUrbLuy","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Default Thickness","value":0.3050000000000001,"valueType":"number"},{"id":"2","name":"Function","value":0.0,"valueType":"number"},{"id":"3","name":"Function","value":0.0,"valueType":"number"}]},{"id":"0s15_BfPz8VvfhDnP$J2NZ","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Exterior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Interior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"4","name":"Structural Usage","value":1.0,"valueType":"number"}]},{"id":"0s2M6iSoz6Y9GH7iMdF9$V","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.013,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0s4uq9EeT8vQmpWHsYAQOr","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0s7amHxWn4axfZFVIaGd8F","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0sCWOj5h9998FGOF6iC$cG","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0sDXBxIfn9JxYbg$y$x8zi","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"0sE7zJoWr5xh7xbdtjMsw3","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"2","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"3","name":"Wrapping at Ends","value":0.0,"valueType":"number"},{"id":"4","name":"Wrapping at Ends","value":0.0,"valueType":"number"},{"id":"5","name":"Width","value":0.5500000000000002,"valueType":"number"},{"id":"6","name":"Function","value":5.0,"valueType":"number"}]},{"id":"0sN36VI2P3CBI0q2IeQcRi","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0sfPlsYGT2cQ5ez7YkI68F","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0suECcwSfD$POzynzt3bqH","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Level : Level 1","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"0t0S4OUXLDWhkgE9HNLQ3J","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Handle Material","value":"Cabinets - Handles","valueType":"string"},{"id":"2","name":"Finish","value":"Finish","valueType":"string"}]},{"id":"0t4SEiUQ9CoeffJsbJYjR5","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":14.52999999999995,"valueType":"number"},{"id":"2","name":"Area","value":10.41449999999989,"valueType":"number"},{"id":"3","name":"Volume","value":0.593626499999994,"valueType":"number"}]},{"id":"0tCcZJWpfDaR1WJi3rZ74k","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"B202","valueType":"string"}]},{"id":"0tFqWzhL57fvLwR0k3SM4L","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0tbtC3rdP5SO4iL6UIS$ir","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.013,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0u5chMXoz5W9pwxu4iJ37Q","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0u63UTzsX4RuDRKgJ1qZ5u","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"0u8nQryVHB7w7y3r1MNCBK","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":1.594000000000002,"valueType":"number"},{"id":"2","name":"Area","value":4.06952000000029,"valueType":"number"},{"id":"3","name":"Volume","value":0.5046204800000358,"valueType":"number"}]},{"id":"0uGbAia7n2Gh9$perqm1KI","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"0ueR4DPrf5iQuyKI4_DLwd","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"0ur4oBBpn5CBeCrxObzXlg","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.01299999999999974,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0v7jtadOv1Ow2rrvAqCM3k","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":1.0,"valueType":"number"}]},{"id":"0vEJdzrmXBkOtD9PHnTUGW","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"0vEthMU01C4wdvI9hj0zCC","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0vgb2Z5nT6gfwYMPA1fze3","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0vjx7OV2HA0RlRlarfUSxV","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0vopP2uh5EmQd6LvKLcU0w","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Foundation - Concrete (417mm)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"0vt3CL0EL1_9vTECsb0Ewz","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0vtogO6y54k8Lhd2xwGi7b","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Roof","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"0vxYlcPSf9fQ3vycbyUD4Z","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0w96Uj2ujFjP_SXzZQQdMG","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"0wAljHtaP7KAOzy8BeNQ9n","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"0wJ88KyHf9rxruhSSx6pB5","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.019,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"0wMWJjuAD0cPVuO2TGNSfF","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0wNE2Q$B50fhZuKXCdcC3q","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0wVpboO9f1YxfjJoDJ54Vz","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0wbSWqtmT90PUSDQNAgVlT","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0wr2ZQToD6vOzKB4CekQiK","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0wuURpxJ1BffIbJCA9j1m$","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"B103","valueType":"string"},{"id":"2","name":"Name","value":"Kitchen","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-11 19 11 11: Kitchen","valueType":"string"}]},{"id":"0xK80bHun5C9iJ9BL7kWMT","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0xSeFHrZ1CZuEMmk38x0QF","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"B204","valueType":"string"},{"id":"2","name":"Name","value":"Bathroom 2","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-41 11 14 11: Bathroom","valueType":"string"}]},{"id":"0xt3kluWv25f9os20l$pc$","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"2","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"3","name":"Wrapping at Ends","value":2.0,"valueType":"number"},{"id":"4","name":"Width","value":0.124,"valueType":"number"},{"id":"5","name":"Function","value":0.0,"valueType":"number"},{"id":"6","name":"Function","value":0.0,"valueType":"number"}]},{"id":"0y6T65pQ59TPMPHJ2GwaqC","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Release","value":3.0,"valueType":"number"},{"id":"2","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"3","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"4","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"5","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"6","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"7","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"8","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"9","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"10","name":"Start My","value":"True","valueType":"boolean"},{"id":"11","name":"Start My","value":"True","valueType":"boolean"},{"id":"12","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"13","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"14","name":"End Release","value":1.0,"valueType":"number"},{"id":"15","name":"End Fx","value":"False","valueType":"boolean"},{"id":"16","name":"End Fx","value":"False","valueType":"boolean"},{"id":"17","name":"End Fy","value":"False","valueType":"boolean"},{"id":"18","name":"End Fy","value":"False","valueType":"boolean"},{"id":"19","name":"End Fz","value":"False","valueType":"boolean"},{"id":"20","name":"End Fz","value":"False","valueType":"boolean"},{"id":"21","name":"End Mx","value":"True","valueType":"boolean"},{"id":"22","name":"End Mx","value":"True","valueType":"boolean"},{"id":"23","name":"End My","value":"True","valueType":"boolean"},{"id":"24","name":"End My","value":"True","valueType":"boolean"},{"id":"25","name":"End Mz","value":"True","valueType":"boolean"},{"id":"26","name":"End Mz","value":"True","valueType":"boolean"},{"id":"27","name":"Analyze As","value":1.0,"valueType":"number"}]},{"id":"0yYky4FZbAuebrNsIn50bO","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Handle Material","value":"Cabinets - Handles","valueType":"string"},{"id":"2","name":"Finish","value":"Finish","valueType":"string"}]},{"id":"0yuITuvQb26OiL3F3CCsYw","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":1.750999999999997,"valueType":"number"}]},{"id":"0z1gYtJ_f2beCPtUdG_9K_","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:750mm x 2200mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"0zIl6I0df8hgl7og45xK0J","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":26.17799424999997,"valueType":"number"},{"id":"2","name":"Perimeter","value":21.48199999999996,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":2.900000000000012,"valueType":"number"},{"id":"4","name":"Volume","value":56.89358179199991,"valueType":"number"}]},{"id":"0zXecetLH99etkOTtkx$S6","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"0zZX4WITv6rg0O2mb1uFvv","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"0zfmJXOST3AxlZQOAid3d8","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"0zjXA6uvL6yBsHRlK0KnOe","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":7.52299999999997,"valueType":"number"},{"id":"2","name":"Volume","value":0.0548775449799998,"valueType":"number"}]},{"id":"1$ATHsODn1eA_uGNS0qpk2","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"1$EvBR75P2yPLMxxxEJ7AX","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Foundation - Concrete (435mm)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"1$rotiHHD1WgWY_dieve7v","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1080FuAhrFmRmP89N497q9","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Casement:819mm x 759mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"10HPv$8wD9dwEhmpQuVb9X","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"10UeTWEBDEZRXW$34NYl2Z","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.0,"valueType":"number"},{"id":"3","name":"Height Offset From Level","value":0.0,"valueType":"number"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"7","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"10_aK_3$10YAkgipvP48fR","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:819mm x 759mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"10mikOm39BqxmNA4zdm8M9","name":"Pset_BeamCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_W-Wide Flange:W410X60","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"6","name":"Span","value":6.181887120424958,"valueType":"number"},{"id":"7","name":"Slope","value":0.0,"valueType":"number"}]},{"id":"11Mq6X97PDkQHyF5nut8Nn","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"11ZdONTufCmB0LeFfRzaY7","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"11dQsywZn3eOWgm2zDDeBR","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"11fj0WctX1m8kFXEmYfUGB","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Ceramic Tile","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"11rvSU02D7PgE7lEjfFMDl","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"2","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"3","name":"Horizontal Projection","value":"Default","valueType":"string"}]},{"id":"11skZ$XujB$QB7dJyARH_E","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"129aP9yKX7UfV88AeNu2mg","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"12C$W$jzn3BBQjsT53GuaN","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Name","value":"T/FDN","valueType":"string"}]},{"id":"12HfC6h9j0jOkZGeMeTHzr","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"12Ql_L4I9B3ATXTaGfvCd_","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"12RK$8E$r8ovK0xkHElNZQ","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Depth","value":0.45,"valueType":"number"},{"id":"2","name":"Height","value":0.8199999999999998,"valueType":"number"},{"id":"3","name":"Plinth Depth","value":0.035,"valueType":"number"},{"id":"4","name":"Plinth Height","value":0.1,"valueType":"number"},{"id":"5","name":"Width","value":0.45,"valueType":"number"}]},{"id":"12i817DNjFkOijoKbHTPYa","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.200499999999992,"valueType":"number"},{"id":"2","name":"Width","value":0.9,"valueType":"number"},{"id":"3","name":"Volume","value":0.8887049999999972,"valueType":"number"}]},{"id":"12sS$rMubD392CT6OSXBsB","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"12tooVhM95SvZpUQstG2je","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"136RGy6an1Ng67kkUG8Qae","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"137qnGIjb7av2AlVBpR45r","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"13Acu$NLH2$hNPXMW7$F7K","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"13YLeaupX3JwAAXhSiW88W","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"13bWcvUiL72fE5sbsjxwDA","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"13gXc4Q4n4rfr18m3nLtnR","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":19.91399999999996,"valueType":"number"},{"id":"2","name":"Area","value":22.04323199999991,"valueType":"number"},{"id":"3","name":"Volume","value":0.4188214079999987,"valueType":"number"},{"id":"4","name":"Thickness","value":0.019,"valueType":"number"}]},{"id":"13gdx_jWf7IvLQ5OrkcYRL","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"13gjU7zaf8HPjx4Wij1HMw","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"13hlcYTy971ubjSjuczUmV","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.795000000000196,"valueType":"number"},{"id":"11","name":"Top Offset","value":-0.3050000000000001,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"13qGdqrePBJu2d23cj4boK","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"2","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"3","name":"Wrapping at Ends","value":0.0,"valueType":"number"},{"id":"4","name":"Wrapping at Ends","value":0.0,"valueType":"number"},{"id":"5","name":"Width","value":0.417,"valueType":"number"},{"id":"6","name":"Function","value":2.0,"valueType":"number"}]},{"id":"13wN0f$4TEqhfE3pEcvVnN","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"144IKzDaD43Qu1cUhYpcwj","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"General Residential Space","valueType":"string"},{"id":"6","name":"Category Code","value":"13-51 24 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit A CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit A FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit A HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit A LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit A OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit A VentilationZoneName","valueType":"string"}]},{"id":"1495vPEnL2Shqb4RS8KdfL","name":"PSet_Revit_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Beam Material","value":"Metal - Steel - 345 MPa","valueType":"string"}]},{"id":"14IdAtNLrB7gECZT4nN8MA","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":15.27399999999998,"valueType":"number"},{"id":"2","name":"Area","value":7.210867999999976,"valueType":"number"},{"id":"3","name":"Volume","value":0.1370064919999997,"valueType":"number"},{"id":"4","name":"Thickness","value":0.019,"valueType":"number"}]},{"id":"14K4fgOkHAH8NqQhp1Kg1y","name":"PSet_Revit_Type_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Elevation Base","value":0.0,"valueType":"number"}]},{"id":"14Q1fDr3XCrhhmcpoE_Z2R","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"14lLtwO0TAhv_qcaSOJcLl","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"14","valueType":"string"}]},{"id":"14uelDeDX2ohnwvIINoGas","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Exterior - Brick on Block","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"157E_7cwvAyQf1MiVtUVy_","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"15Cue4O593iuR5IfXeUemS","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Name","value":"Level 1","valueType":"string"}]},{"id":"15DOACJkT9oPQ$8j3dLmWD","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"15aU1pv09BjuwfF59J9E0i","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"2","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"3","name":"Wrapping at Ends","value":0.0,"valueType":"number"},{"id":"4","name":"Wrapping at Ends","value":0.0,"valueType":"number"},{"id":"5","name":"Width","value":0.184,"valueType":"number"},{"id":"6","name":"Function","value":0.0,"valueType":"number"},{"id":"7","name":"Function","value":0.0,"valueType":"number"}]},{"id":"15gQky8TrAnPlh_4O_KbFV","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Top Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Bottom Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"}]},{"id":"15oY5eYoz3xRp8eua0xfKC","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":2.235499999999992,"valueType":"number"},{"id":"2","name":"Area","value":3.942852000000001,"valueType":"number"},{"id":"3","name":"Volume","value":0.488913648,"valueType":"number"}]},{"id":"15uYbdCWfDPwfKsK8Ol6Lg","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.019,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"162h1N4KT1BuPYMSk$Uzl3","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"16MUK4ugD9gfo4pjhpi88E","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Furring (152 mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"True","valueType":"boolean"},{"id":"5","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"16WcU4HEf6rw4bX4L9FWNq","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.019,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"16cRtr8vz3TvPoZkIJe7So","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Function","value":0.0,"valueType":"number"},{"id":"2","name":"Function","value":0.0,"valueType":"number"},{"id":"3","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"4","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"5","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"16cZlg$U9AkgyQ2u8okg35","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"16hJQAf1n0puLu8iPiEUa2","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"16vK6hEbf4QftjF_d4C0y6","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"IsFireExit","value":"IsFireExit","valueType":"string"},{"id":"4","name":"ConstructionType","value":"ConstructionType","valueType":"string"},{"id":"5","name":"GlazingAreaFraction","value":"GlazingAreaFraction","valueType":"string"},{"id":"6","name":"OperationType","value":"OperationType","valueType":"string"},{"id":"7","name":"Area","value":"Area","valueType":"string"},{"id":"8","name":"Color","value":"Color","valueType":"string"},{"id":"9","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"10","name":"Features","value":"Features","valueType":"string"},{"id":"11","name":"Finish","value":"Finish","valueType":"string"},{"id":"12","name":"Grade","value":"Grade","valueType":"string"},{"id":"13","name":"Material","value":"Material","valueType":"string"},{"id":"14","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"15","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"16","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"17","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"18","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"19","name":"Reference","value":"Reference","valueType":"string"},{"id":"20","name":"Shape","value":"Shape","valueType":"string"},{"id":"21","name":"Size","value":"Size","valueType":"string"},{"id":"22","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"23","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"24","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"25","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"26","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"27","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"28","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"29","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"30","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"31","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"172AQiTOr1jxh2CnNuoSCx","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1774LETVX1C8wg9IQBgnT2","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Kitchen","valueType":"string"},{"id":"6","name":"Category Code","value":"13-11 19 11 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit B CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit B FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit B HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit B LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit B OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit B VentilationZoneName","valueType":"string"}]},{"id":"17CdbwG5zFH8RonXiuXwcH","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":41.96199999999997,"valueType":"number"},{"id":"2","name":"Area","value":47.1499189999998,"valueType":"number"},{"id":"3","name":"Volume","value":0.895848460999996,"valueType":"number"},{"id":"4","name":"Thickness","value":0.019,"valueType":"number"}]},{"id":"17K8J2JcL6cAsks2RghwaH","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"17NFSg1xD6ihNvc5GvMc0x","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"17Oy3yfhb6SuwTROE4jYq_","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"17TVkY_1L17QZaq6zzA6bq","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1,"valueType":"number"}]},{"id":"17UXC2X3fANRFw3IJtrSLd","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"17nFo3MIH4_RONTLOkYwNI","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:819mm x 759mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"17nxNEY6bC2B$s4UkZLB5h","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"184eFa$qn2SOKNkbAEx2Zh","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"185lhR4TTAKfHAdsLryBA4","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"18AN_BnSXDUeybGUOEG_zo","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"18FTDVaBL6YugUw0ANfqAH","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"18OU1Dmb9CLPpxT717WcKy","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"18PpesNXP4iuXwJrdxtfzj","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"18fCXU6_b6UgF$pCy4lQSo","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"18iJ7AkN9DZRDbI9PquW6Z","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"18nOkHzI16WBjxIqMuTX06","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"NONFIXED","valueType":"string"}]},{"id":"18qXw3UdzBgQhstL50wpUq","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"19H7EAEGX5eRpllJz0oemg","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"19UY71K297GegFP6D4uys5","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"19_zK4ewb54AtQYv5k9Y9u","name":"Pset_BeamCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_W-Wide Flange:W310X60","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"6","name":"Span","value":7.421299999999966,"valueType":"number"},{"id":"7","name":"Slope","value":0.0,"valueType":"number"}]},{"id":"19aKQSGlH0ox$oeodK2IiQ","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"19q8jmX550$wSxX7zSE1tF","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.9255000000000001,"valueType":"number"}]},{"id":"19ukjcDl56uBsr$8bW4omL","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1A1i9u$aL5vxdMXBVFPlfC","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"General Residential Space","valueType":"string"},{"id":"6","name":"Category Code","value":"13-51 24 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit B CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit B FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit B HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit B LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit B OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit B VentilationZoneName","valueType":"string"}]},{"id":"1A3TZ1ZSz8VRUy3vjSEaNy","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1A3_u9Acj0vfrnfvI91htZ","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1AFgw0OMT1AQJk0DwMnH0e","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Elevation","value":0.0,"valueType":"number"}]},{"id":"1AJ7TTnrjA0eenXmDMnlC8","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"1AnFX8_fj00ekTa8Hvb4Cv","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1AzE0RfUb3xBaGk2MCcD$Y","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1B$FSQjRP5B8GBM4Ee3C18","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":8.33434284833011,"valueType":"number"}]},{"id":"1BJ45fdp93MeUmr9ez8uUQ","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Flush:0762 x 2032mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"1BQPX09yL2DOktbKx_SEJl","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1BYhdUho53z9HvdqNQXEF1","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1BedrTk690NBfT0I0PZxQ8","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Finish Floor - Ceramic Tile","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1Bjm1ycEf3NvGHEKDC6rm6","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":5.423999999999994,"valueType":"number"},{"id":"2","name":"Area","value":13.97395200000005,"valueType":"number"},{"id":"3","name":"Volume","value":1.732770048000006,"valueType":"number"}]},{"id":"1Bldjc1rP878cKkP0xhqq7","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1CGFbuTR59AB7ehIWObbU0","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"1CWAfBDR18igFN47uJLE9G","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Casement:819mm x 759mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"1Cfy7u1Yf8R9p0qIa91N5q","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension Calculation","value":3.0,"valueType":"number"},{"id":"2","name":"End Extension Calculation","value":3.0,"valueType":"number"},{"id":"3","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"4","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"5","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"6","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"7","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"8","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1Cretmlc120vhMoWOjGkUJ","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Backsplash Visibility","value":"True","valueType":"boolean"},{"id":"2","name":"Backsplash Visibility","value":"True","valueType":"boolean"}]},{"id":"1Cvyh5GCT4PglSmL9p_2LJ","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1DJZM8QsH2lPmatXUi30qy","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference Level","value":"Roof","valueType":"string"},{"id":"2","name":"Work Plane","value":"Level : Roof","valueType":"string"},{"id":"3","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"5","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"6","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"7","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"8","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"9","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"10","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"11","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"12","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"13","name":"Orientation","value":0.0,"valueType":"number"},{"id":"14","name":"Orientation","value":0.0,"valueType":"number"},{"id":"15","name":"Cross-Section Rotation","value":0.0,"valueType":"number"}]},{"id":"1DLvMTbOrD$9maLb3MnNTE","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1DVclak1L83eMPA4cwXyFb","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1000000000000048,"valueType":"number"}]},{"id":"1Dkobk2vf0x94a$ZBdcu1L","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Ceramic Tile","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"1Dn78sWab7fRE$gIxWeQvj","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"1E1QVUnGb7UwbYyT0lPilv","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":8.382999999999973,"valueType":"number"},{"id":"2","name":"Area","value":5.105246999999985,"valueType":"number"},{"id":"3","name":"Volume","value":2.128887998999996,"valueType":"number"}]},{"id":"1E7F2nuUH0_hvnhAf__rof","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Exterior - Brick on Block","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"1E8I5xnM15vQFW7DwfWpbc","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.01900000000000001,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"1EA_HQ0qv72uUaPcQHXu9d","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"ConfigurationType","value":"ConfigurationType","valueType":"string"},{"id":"4","name":"ConstructionType","value":"ConstructionType","valueType":"string"},{"id":"5","name":"FireRating","value":"FireRating","valueType":"string"},{"id":"6","name":"GlazingAreaFraction","value":"GlazingAreaFraction","valueType":"string"},{"id":"7","name":"OperationType","value":"OperationType","valueType":"string"},{"id":"8","name":"Area","value":"Area","valueType":"string"},{"id":"9","name":"Color","value":"Color","valueType":"string"},{"id":"10","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"11","name":"Features","value":"Features","valueType":"string"},{"id":"12","name":"Finish","value":"Finish","valueType":"string"},{"id":"13","name":"Grade","value":"Grade","valueType":"string"},{"id":"14","name":"Material","value":"Material","valueType":"string"},{"id":"15","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"16","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"17","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"18","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"19","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"20","name":"Reference","value":"Reference","valueType":"string"},{"id":"21","name":"Shape","value":"Shape","valueType":"string"},{"id":"22","name":"Size","value":"Size","valueType":"string"},{"id":"23","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"24","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"25","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"26","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"27","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"28","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"29","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"30","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"31","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"32","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1EBFkf0$T9XxPfMDNgNV0g","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Flush:0864 x 2032mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"1FEFyhDa5F5O0eheqQSlwL","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":3.000000000000002,"valueType":"number"},{"id":"2","name":"Sink Location","value":1.500000000000007,"valueType":"number"},{"id":"3","name":"Sink Location To Wall","value":0.1,"valueType":"number"},{"id":"4","name":"Sink Opening Depth","value":0.378,"valueType":"number"},{"id":"5","name":"Sink Opening Width","value":0.5870000000000001,"valueType":"number"}]},{"id":"1FL13WzQL4Ewo3DFxYX25x","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.595000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":-0.3050000000000001,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"1FPDCgx9L3cwOWdOEJnAst","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1FPEkcb2j4mv18lWe6Lucb","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Level : Level 1","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1FSMCIGGj1NvQMofIfCMwP","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"1G1trpcK90r9GTrhvIFL9b","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Wood","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"1GDxTHLg55PPXjyY1Mp3vU","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1GcZqQX3v2MPwbtVDaCZW6","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"A204","valueType":"string"},{"id":"2","name":"Name","value":"Bathroom 2","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-41 11 14 11: Bathroom","valueType":"string"}]},{"id":"1GjrTsXQ1CKR1bapb9GsK9","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"IsFireExit","value":"IsFireExit","valueType":"string"},{"id":"4","name":"ConstructionType","value":"ConstructionType","valueType":"string"},{"id":"5","name":"GlazingAreaFraction","value":"GlazingAreaFraction","valueType":"string"},{"id":"6","name":"OperationType","value":"OperationType","valueType":"string"},{"id":"7","name":"Area","value":"Area","valueType":"string"},{"id":"8","name":"Color","value":"Color","valueType":"string"},{"id":"9","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"10","name":"Features","value":"Features","valueType":"string"},{"id":"11","name":"Finish","value":"Finish","valueType":"string"},{"id":"12","name":"Grade","value":"Grade","valueType":"string"},{"id":"13","name":"Material","value":"Material","valueType":"string"},{"id":"14","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"15","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"16","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"17","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"18","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"19","name":"Reference","value":"Reference","valueType":"string"},{"id":"20","name":"Shape","value":"Shape","valueType":"string"},{"id":"21","name":"Size","value":"Size","valueType":"string"},{"id":"22","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"23","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"24","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"25","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"26","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"27","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"28","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"29","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"30","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"31","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1Gpa4i_rj5mg$Y46DC3YTt","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.032,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1HKpAOvYrDEOC8G$FPi7I9","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.20.14.17.24","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Coffee Tables","valueType":"string"}]},{"id":"1HjbMGto1DEAHB6IbJwNg6","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.509999999999998,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1HoiAE1$LA99XiC6$KdMew","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"1HswWSSHn2Uu0rLuk$eJEb","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"},{"id":"2","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"1I$4zyCAv3Oxp6bXBwb6hh","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"2","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"3","name":"Horizontal Projection","value":"Default","valueType":"string"}]},{"id":"1IFqJRcJf7NPNyq9sMlY1B","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Eccentricity","value":0.0,"valueType":"number"}]},{"id":"1Ifl8qnRf7IQDZl3Ng1RwO","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1IjnTNSDD5ruace8pfZgDf","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1In7e0cNn4Uw0U3HtLBroj","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.42,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1IpXCJr0D4CR7Hm$xj72wC","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Code","value":"","valueType":"string"},{"id":"3","name":"Assembly Description","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.35.17.47.11","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Kitchen Casework","valueType":"string"}]},{"id":"1IzyUMlv59MhIWeNpe9idC","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1J8bd9e5DD2BCT4f0Pyyi7","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.032,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1JDnqMYPTE_xmYRGsZPmuC","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":17.38299999999999,"valueType":"number"},{"id":"2","name":"Area","value":21.20749999999998,"valueType":"number"},{"id":"3","name":"Volume","value":8.84352749999999,"valueType":"number"}]},{"id":"1JZ0LzwfDCa8sgX_T5ss8F","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Level : Level 1","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1K3VkRzKf84912T8MgIA5C","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"9","valueType":"string"}]},{"id":"1K5ooRtQT3tu7Kr8v1Jkw6","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1KCqe2ZSv7POgU4QAMsv24","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1KJyWzk1P2uvPikBm0okJF","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"1KWiKuMtj1zxlj3OrJo88u","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1L0jCBKHj2ef2mNm4nEwwe","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"1LIFBBtm16Mx5RhVMNPAy2","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"2","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"3","name":"Cut Length","value":4.121279928630351,"valueType":"number"},{"id":"4","name":"Structural Usage","value":6.0,"valueType":"number"}]},{"id":"1LcNq01Mb4TAwLaoVJy_wF","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Category","value":"Floor","valueType":"string"}]},{"id":"1LzNGsVd98vR6VzHfpGZFI","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1M2dlVz9518gqW3K4A3Wko","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"1M2ymagMX9yPil6Dh99OcX","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Roof","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"1M6fkK$Aj9ffphOUVjp$xD","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Exterior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Interior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"4","name":"Structural Usage","value":1.0,"valueType":"number"}]},{"id":"1MH__u48DDlBhYKAoaOy2g","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1MSydyLR51QgzsmZZechqu","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"1MbRx3Hs960w78ZQcUMmON","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":7.444000000000067,"valueType":"number"},{"id":"2","name":"Area","value":3.367221000000052,"valueType":"number"},{"id":"3","name":"Volume","value":0.191931597000003,"valueType":"number"}]},{"id":"1MbzdEVOb6mhjflbcm0HDq","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Analyze As","value":4.0,"valueType":"number"}]},{"id":"1MiEIZimv7EOdo5JHugrvy","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"1N2dlsmZP3b9QdAxx1pL29","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1N7GVdBBH19QsNh1Ns33Hu","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Glass Pane Material","value":"Glass","valueType":"string"},{"id":"2","name":"Sash","value":"Sash","valueType":"string"},{"id":"3","name":"Trim Exterior Material","value":"Trim","valueType":"string"},{"id":"4","name":"Trim Interior Material","value":"Trim","valueType":"string"}]},{"id":"1N7ouI$mz1gehyTq5NeFWl","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1NBAeRumD5lfzYsDSe2EnN","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Default Thickness","value":0.127,"valueType":"number"},{"id":"2","name":"Function","value":0.0,"valueType":"number"},{"id":"3","name":"Function","value":0.0,"valueType":"number"}]},{"id":"1NDG6k_Z93E9KB8EEDyxfZ","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Foundation - Concrete (435mm)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"1NOIKpqtzAuPVX8YV2j_01","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"1OD6u7bYrC6RByYsp$TWYX","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"1OHRmwN6H1pu3_bV2CEJ1_","name":"Pset_BeamCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_W-Wide Flange:W310X60","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"6","name":"Span","value":7.421299999999966,"valueType":"number"},{"id":"7","name":"Slope","value":0.0,"valueType":"number"}]},{"id":"1Om_hoTsLDeR8jgqdit_fw","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"ConfigurationType","value":"ConfigurationType","valueType":"string"},{"id":"4","name":"ConstructionType","value":"ConstructionType","valueType":"string"},{"id":"5","name":"FireRating","value":"FireRating","valueType":"string"},{"id":"6","name":"GlazingAreaFraction","value":"GlazingAreaFraction","valueType":"string"},{"id":"7","name":"OperationType","value":"OperationType","valueType":"string"},{"id":"8","name":"Area","value":"Area","valueType":"string"},{"id":"9","name":"Color","value":"Color","valueType":"string"},{"id":"10","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"11","name":"Features","value":"Features","valueType":"string"},{"id":"12","name":"Finish","value":"Finish","valueType":"string"},{"id":"13","name":"Grade","value":"Grade","valueType":"string"},{"id":"14","name":"Material","value":"Material","valueType":"string"},{"id":"15","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"16","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"17","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"18","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"19","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"20","name":"Reference","value":"Reference","valueType":"string"},{"id":"21","name":"Shape","value":"Shape","valueType":"string"},{"id":"22","name":"Size","value":"Size","valueType":"string"},{"id":"23","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"24","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"25","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"26","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"27","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"28","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"29","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"30","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"31","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"32","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1P4aeFuXXBBO0l4sf6GomD","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Release","value":3.0,"valueType":"number"},{"id":"2","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"3","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"4","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"5","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"6","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"7","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"8","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"9","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"10","name":"Start My","value":"True","valueType":"boolean"},{"id":"11","name":"Start My","value":"True","valueType":"boolean"},{"id":"12","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"13","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"14","name":"End Release","value":1.0,"valueType":"number"},{"id":"15","name":"End Fx","value":"False","valueType":"boolean"},{"id":"16","name":"End Fx","value":"False","valueType":"boolean"},{"id":"17","name":"End Fy","value":"False","valueType":"boolean"},{"id":"18","name":"End Fy","value":"False","valueType":"boolean"},{"id":"19","name":"End Fz","value":"False","valueType":"boolean"},{"id":"20","name":"End Fz","value":"False","valueType":"boolean"},{"id":"21","name":"End Mx","value":"True","valueType":"boolean"},{"id":"22","name":"End Mx","value":"True","valueType":"boolean"},{"id":"23","name":"End My","value":"True","valueType":"boolean"},{"id":"24","name":"End My","value":"True","valueType":"boolean"},{"id":"25","name":"End Mz","value":"True","valueType":"boolean"},{"id":"26","name":"End Mz","value":"True","valueType":"boolean"},{"id":"27","name":"Analyze As","value":1.0,"valueType":"number"}]},{"id":"1P5ytJ3wr3Vucmlx6QXAxC","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":26.17799424999995,"valueType":"number"},{"id":"2","name":"Perimeter","value":21.48199999999998,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":2.900000000000012,"valueType":"number"},{"id":"4","name":"Volume","value":56.8935817919999,"valueType":"number"}]},{"id":"1PJlY8oADDOgUtw6HFXGvd","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1PQS62y1b7OPsGwTAKaRXa","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Exterior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Interior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"4","name":"Structural Usage","value":1.0,"valueType":"number"}]},{"id":"1PTQnYluv2DfUfejy9pScK","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Glass 1:0813 x 2420mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"1PsPO8ca52Yh5ZHj4_Q4jB","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Railing Height","value":0.8999999999999999,"valueType":"number"},{"id":"2","name":"Baluster Offset","value":-0.025,"valueType":"number"},{"id":"3","name":"Use Landing Height Adjustment","value":0.0,"valueType":"number"},{"id":"4","name":"Landing Height Adjustment","value":0.0,"valueType":"number"},{"id":"5","name":"Angled Joins","value":0.0,"valueType":"number"},{"id":"6","name":"Tangent Joins","value":2.0,"valueType":"number"},{"id":"7","name":"Rail Connections","value":0.0,"valueType":"number"}]},{"id":"1QJShoeELFjxJHvu1SpcLN","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1QelTV1CP3k8aKY7MyEO68","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1QhmLqm251Wwf4tqhCu3zL","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1QuSLdJtz13Bn7zgSiVgHT","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"1R4zzbbcDFmxlmpA$XOjoy","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.032,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1RGVcrg7n9KgKn9yx$5gxh","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"IsFireExit","value":"IsFireExit","valueType":"string"},{"id":"4","name":"ConstructionType","value":"ConstructionType","valueType":"string"},{"id":"5","name":"GlazingAreaFraction","value":"GlazingAreaFraction","valueType":"string"},{"id":"6","name":"OperationType","value":"OperationType","valueType":"string"},{"id":"7","name":"Area","value":"Area","valueType":"string"},{"id":"8","name":"Color","value":"Color","valueType":"string"},{"id":"9","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"10","name":"Features","value":"Features","valueType":"string"},{"id":"11","name":"Finish","value":"Finish","valueType":"string"},{"id":"12","name":"Grade","value":"Grade","valueType":"string"},{"id":"13","name":"Material","value":"Material","valueType":"string"},{"id":"14","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"15","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"16","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"17","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"18","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"19","name":"Reference","value":"Reference","valueType":"string"},{"id":"20","name":"Shape","value":"Shape","valueType":"string"},{"id":"21","name":"Size","value":"Size","valueType":"string"},{"id":"22","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"23","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"24","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"25","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"26","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"27","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"28","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"29","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"30","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"31","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1RTcNEE1DDxwgBfyRMc5RI","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"1RZQgQOsb3fOjLoOEajp4V","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1RcDL_RsD8shN7P9PSE14V","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":0.8590000000000048,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1Rq7QOF9LFoQSN0i3SgnLg","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Project Issue Date","value":"Issue Date","valueType":"string"},{"id":"2","name":"Project Status","value":"Project Status","valueType":"string"},{"id":"3","name":"Client Name","value":"Owner","valueType":"string"},{"id":"4","name":"Project Address","value":"Enter address here","valueType":"string"},{"id":"5","name":"Project Name","value":"Duplex Apartment","valueType":"string"},{"id":"6","name":"Project Number","value":"0001","valueType":"string"},{"id":"7","name":"Category Description","value":"Duplex","valueType":"string"},{"id":"8","name":"Category Code","value":"11-16 21 11","valueType":"string"}]},{"id":"1S7GzAAfL45Ryonq9IXavn","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1SBwc0ujPE_wa4ypWuKUy8","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension Calculation","value":3.0,"valueType":"number"},{"id":"2","name":"End Extension Calculation","value":3.0,"valueType":"number"},{"id":"3","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"4","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"5","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"6","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"7","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"8","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1SO1Yvgwb9SQPUASTAdrzc","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Extend Below Base","value":0.0,"valueType":"number"},{"id":"2","name":"Monolithic Stairs","value":"False","valueType":"boolean"},{"id":"3","name":"Landing Overlap","value":0.07599999999999999,"valueType":"number"},{"id":"4","name":"Underside of Winder","value":1.0,"valueType":"number"},{"id":"5","name":"Function","value":0.0,"valueType":"number"},{"id":"6","name":"Function","value":0.0,"valueType":"number"}]},{"id":"1SPtpWtP94Th38nZ57n7bk","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Finish Floor - Wood","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1SSZkkWQD09eGB$YN_Q43x","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"1SgoVBg0fECPaP3u74xnAk","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1Sh0_RuvD6q80miSTNmBru","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1SogWXu2jD6RXWK5cl1Shm","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1T34c7_oP7Y9yJxCGZ71eW","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1T7zhUxajBTv03oj$XBunI","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Finish Floor - Ceramic Tile","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1T8YVmPWDAcv3luoZwfsCP","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"1TJW7xJxP5JBESerr0uckJ","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1UBWwQohbFHe7w7ZaJ3OMV","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1UCYsTgpL4_AvJGX0l_j2n","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"2","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"3","name":"Cut Length","value":7.421299999999966,"valueType":"number"},{"id":"4","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"1Ud_BkfgXE_xZzCdmy9JcI","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1UkLawTgf1Y8rlJ7ROOpFN","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1UklwVHAD9vutlAddJMpVL","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.9254999999999991,"valueType":"number"}]},{"id":"1Uz7Jh8izFUfvYdDfDzEg5","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Level : Level 1","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1V7M7A8SP1G8t6hk1Bh3hO","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"1VLrzOGZX4gOnHKdXCl3zA","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"1VUYQNX$XAnv8v7yqLKvrE","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"1W3$b4uYnC2O1Fh_MxEnFX","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"Type Mark","value":"56","valueType":"string"},{"id":"5","name":"Fire Rating","value":"Fire Rating","valueType":"string"},{"id":"6","name":"OmniClass Number","value":"23.30.10.00","valueType":"string"},{"id":"7","name":"OmniClass Title","value":"Doors","valueType":"string"}]},{"id":"1WUXtBSAL8$QBxDf1BSEeQ","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Wood","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"1X4LmMy$5Aah1h8eKF6GpG","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1X4MxP_az9Tutk4i9dqcMV","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1X61bllhn2cQT1c_eFw1K8","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Casement:819mm x 759mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"1X7fyd8XfEvQBM9hde8ded","name":"PSet_Revit_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Up text","value":"UP","valueType":"string"},{"id":"2","name":"Down text","value":"DN","valueType":"string"},{"id":"3","name":"Up label","value":"True","valueType":"boolean"},{"id":"4","name":"Up arrow","value":"True","valueType":"boolean"},{"id":"5","name":"Down label","value":"True","valueType":"boolean"},{"id":"6","name":"Down arrow","value":"True","valueType":"boolean"},{"id":"7","name":"Show Up arrow in all views","value":"False","valueType":"boolean"}]},{"id":"1XKxG5pB1DKOBK05u1VPZh","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1XVYZ8izX3YhJlr4EBKb02","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":17.38299999999997,"valueType":"number"},{"id":"2","name":"Area","value":48.43210000000325,"valueType":"number"},{"id":"3","name":"Volume","value":20.19618570000135,"valueType":"number"}]},{"id":"1XcYrJmS13X8zmkV2tgtxb","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Thickness","value":0.4570000000000001,"valueType":"number"},{"id":"2","name":"Volume","value":60.74719844285983,"valueType":"number"},{"id":"3","name":"Area","value":132.9260359799997,"valueType":"number"}]},{"id":"1XdWbfBcTBZR$$aY4sCGo_","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1XoI1aMXfEfQr_rdZrqxKz","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"1XqryD8k5Fjw8BPy1s9k1p","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"1Xten8vePENuPgy_CWV5LB","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1XvYtcbHjBo9UeObav9h_Z","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"B205","valueType":"string"}]},{"id":"1YAumChW168x58kULL5mKN","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":-0.4880000000001955,"valueType":"number"},{"id":"4","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"9","name":"Unconnected Height","value":0.4880000000001955,"valueType":"number"},{"id":"10","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"1YCkGCJ6r3VAol6eZjMLgk","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1YEnMZrmb0fw5IQkjK7_hV","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:819mm x 759mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"1YPdO2q198FBIZWHWFC4Vb","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Finish Floor - Wood","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1ZN$Cd9vnBreXHV8jQn2XK","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1Zfg2Dhr93xeunTk8zfTj4","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.314000000000004,"valueType":"number"},{"id":"2","name":"Area","value":10.79520000000006,"valueType":"number"},{"id":"3","name":"Volume","value":1.64087040000001,"valueType":"number"}]},{"id":"1Zh7IvjdnEQe5QxXbScD1P","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1ZtrCSEL17NBJ7L78iHi38","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":19.91399999999993,"valueType":"number"},{"id":"2","name":"Area","value":22.04323199999984,"valueType":"number"},{"id":"3","name":"Volume","value":0.4188214079999972,"valueType":"number"},{"id":"4","name":"Thickness","value":0.019,"valueType":"number"}]},{"id":"1ZvWdq6QvF1ARBjVgiszP7","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1_LNzStoX5KRTSGmWFhErh","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"1_n6yXFJ5Ct8IFAekGu70C","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Flush:0864 x 2032mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"1_q$zkzabFo8qxzq4bvts3","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":7.254000000000056,"valueType":"number"},{"id":"2","name":"Area","value":3.160976000000042,"valueType":"number"},{"id":"3","name":"Volume","value":0.04109268800000055,"valueType":"number"},{"id":"4","name":"Thickness","value":0.013,"valueType":"number"}]},{"id":"1_v60i_bvDmATzMxHMNS_d","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Roof","valueType":"string"},{"id":"2","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1_xhus5899ZwpbHD6Q4Z3Q","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"1aMb$_DYn26AAUn_tsycM3","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"1aQf0d_5bBaw9okFJFXY6f","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:750mm x 2200mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"1asWiQAO92gPEgl2hbAr54","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":17.38299999999999,"valueType":"number"},{"id":"2","name":"Area","value":21.72874999999998,"valueType":"number"},{"id":"3","name":"Volume","value":9.06088875,"valueType":"number"}]},{"id":"1avLKK7U5638OiLaidRuMk","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"Type Mark","value":"02","valueType":"string"},{"id":"5","name":"OmniClass Number","value":"23.30.20.17.11","valueType":"string"},{"id":"6","name":"OmniClass Title","value":"Fixed Windows","valueType":"string"}]},{"id":"1b0OIRakv0rxrzwkE_OIN1","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1b8suIg4L0juRASzz7KoES","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"1bVpHckM53hA6zMclh0gcU","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1bdXgCYin54u6pXk4ZWChC","name":"Pset_BuildingCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"NumberOfStoreys","value":4.0,"valueType":"number"}]},{"id":"1bznG0yOD0gOJPvwIDklrH","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"1c4W3G$49ChQH9eneJ202_","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1cAU5iDUf5cgcY3Js1bcK5","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"34","valueType":"string"}]},{"id":"1cByUaBT5BpP2vUO43ZRyP","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"1cLPgUcCHESfhty4MgdQJd","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Enable Analytical Model","value":"True","valueType":"boolean"},{"id":"2","name":"Enable Analytical Model","value":"True","valueType":"boolean"}]},{"id":"1cM3875ZL0pASdMucro9MA","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Name","value":"Roof","valueType":"string"}]},{"id":"1cMWHG6lP8DvEFISDm$6$S","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"1cYHv5H650Re4pglovEdF4","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1dAMM7Hm5B9xSUECQhlNLq","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"1dD9snpSv6qOvWe2TBHutn","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Living Spaces","valueType":"string"},{"id":"6","name":"Category Code","value":"13-51 24","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit A CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit A FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit A HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit A LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit A OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit A VentilationZoneName","valueType":"string"}]},{"id":"1dE7KhEH95zPjDTbqVt2Oh","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"1dEZ8vSzPAgfTeEl8Px818","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1dZERd_Oj8jQrcEeZSVXSh","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1e2xV3opL59fid15rGnyhY","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":15.2739999999999,"valueType":"number"},{"id":"2","name":"Area","value":7.21086799999996,"valueType":"number"},{"id":"3","name":"Volume","value":0.1370064919999993,"valueType":"number"},{"id":"4","name":"Thickness","value":0.019,"valueType":"number"}]},{"id":"1ePu3nrsvBbPlxcK6KmXnb","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"1eVR1ziuX5TAQyrzaNhdvx","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Exterior - Brick on Block","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"1eVvruvzr6nhnC0w14az7_","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":-0.4880000000001955,"valueType":"number"},{"id":"4","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"9","name":"Unconnected Height","value":3.388000000000207,"valueType":"number"},{"id":"10","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"1eqIYsohrBneqf7dnEmsZg","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1exT1THT5An9MgcijEajNK","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1f0HpRop96nfKmgMDfYOxi","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1f0Zp1sp56f9hVvstBvuvF","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1f0tJ7WIn2fQa4Rwm5$fIQ","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":1.956000000000018,"valueType":"number"},{"id":"2","name":"Area","value":4.695100000000073,"valueType":"number"},{"id":"3","name":"Volume","value":0.8638984000000101,"valueType":"number"}]},{"id":"1fDxe3E_z0PBulwt8K1np4","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1falNn3N99ufetGr6M0UGw","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"1fraz2_Jz9ERFxo1ozwUAu","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":1.684499999999999,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1g$wad7DbEeBjWJmDR__Ue","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1gEYG6$SX39fiao2aAWjUA","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1gHpw4KGfCYBVgwXpDSqdK","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Bathroom","valueType":"string"},{"id":"6","name":"Category Code","value":"13-41 11 14 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit B CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit B FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit B HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit B LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit B OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit B VentilationZoneName","valueType":"string"}]},{"id":"1gmrRoEob9UBo0CvnGzITg","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"2","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"1gyn33lC1DqvP_hOC9pP8o","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":34.54799999999995,"valueType":"number"},{"id":"2","name":"Area","value":64.90642799999978,"valueType":"number"},{"id":"3","name":"Volume","value":8.243116355999972,"valueType":"number"},{"id":"4","name":"Thickness","value":0.127,"valueType":"number"}]},{"id":"1hBbs1Rj511BLi$sXr_xkP","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"1hQwRHNUnFtg82l9OMc1T3","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":42.92399999999994,"valueType":"number"},{"id":"2","name":"Area","value":57.0343455999998,"valueType":"number"},{"id":"3","name":"Volume","value":3.25095769919999,"valueType":"number"}]},{"id":"1hu8DzJX1D$85WhxD2u34Z","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"1i66UYusb7Kv18BWDe246s","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1iME8Zo4TAgxNgYFj2Fxsn","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1igeVcjlLCxBpmF$haCJDy","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1iqAHi379F_9OEE7GccjL_","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1j6RZOoSXF9P8ggIx6eFLA","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"2","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"3","name":"Cut Length","value":6.181887120424958,"valueType":"number"},{"id":"4","name":"Structural Usage","value":6.0,"valueType":"number"}]},{"id":"1jMCGVkAz9yfbKTiDwBjxS","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1jxzjvj_T7WRplCvqL9pno","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1k$tGnkO98nu7bvUzsj_q0","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1kPNZx5t11Bg3Bgg5idqkD","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Enable Analytical Model","value":"True","valueType":"boolean"},{"id":"2","name":"Enable Analytical Model","value":"True","valueType":"boolean"}]},{"id":"1kXXFuM_H7qe9kfqx$0Msr","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"1kZ8d1qrzByuILge9Urbd6","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"NONFIXED","valueType":"string"}]},{"id":"1lJouz0QH7buW1q2b5FA_f","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:2800mm x 2410mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"1lwXXNWzz1O9uQvZKqMPE1","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":17.38299999999997,"valueType":"number"},{"id":"2","name":"Area","value":10.33229399999999,"valueType":"number"},{"id":"3","name":"Volume","value":4.308566597999995,"valueType":"number"}]},{"id":"1m3$iazM9DLfyL6syzIHry","name":"Pset_StairCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Stair:Residential - 200mm Max Riser 250mm Tread","valueType":"string"},{"id":"2","name":"NumberOfRiser","value":16.0,"valueType":"number"},{"id":"3","name":"NumberOfTreads","value":15.0,"valueType":"number"},{"id":"4","name":"RiserHeight","value":0.1937500000000122,"valueType":"number"},{"id":"5","name":"TreadLength","value":0.25,"valueType":"number"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"1mUU5JLT5FYfMMYgp_Iq1P","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"Type Mark","value":"01","valueType":"string"},{"id":"5","name":"OmniClass Number","value":"23.30.20.17.11","valueType":"string"},{"id":"6","name":"OmniClass Title","value":"Fixed Windows","valueType":"string"}]},{"id":"1mah_mDeb1pf1YT7Dab1At","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":8.383000000000001,"valueType":"number"},{"id":"2","name":"Area","value":16.90713700000012,"valueType":"number"},{"id":"3","name":"Volume","value":6.54599802900005,"valueType":"number"}]},{"id":"1mdqyAZhL538OZLQIUaJwF","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Top Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Bottom Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"}]},{"id":"1mfV_8$yTDXuAcpr_tEqfP","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1mgN39Cxv3ohAPDo6z2Kaa","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1ms6_mwE92oAC$FxBNABAn","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":1.765000000000027,"valueType":"number"},{"id":"2","name":"Width","value":0.9,"valueType":"number"},{"id":"3","name":"Volume","value":0.5940000000000077,"valueType":"number"}]},{"id":"1n0$5LhrnFNOwkUmgYga_j","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":3.195000000000043,"valueType":"number"},{"id":"2","name":"Area","value":6.613016000000691,"valueType":"number"},{"id":"3","name":"Volume","value":0.8200139840000854,"valueType":"number"}]},{"id":"1n5K528_rB$vVpbsqPHRXr","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":-0.4880000000001955,"valueType":"number"},{"id":"4","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"9","name":"Unconnected Height","value":0.4880000000001955,"valueType":"number"},{"id":"10","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"1n96DzOyDDCvdtLE5UBydq","name":"Pset_BeamCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_W-Wide Flange:W410X60","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"6","name":"Span","value":4.100000000000001,"valueType":"number"},{"id":"7","name":"Slope","value":0.0,"valueType":"number"}]},{"id":"1nQMCOwADFvOeysf4l16dO","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1nhdPCe6z8vwlvm98ogWO6","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Furring (152 mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"1nnXh$42H1uuM2GKCMTbBh","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.191499999999992,"valueType":"number"},{"id":"2","name":"Area","value":5.250624999999992,"valueType":"number"},{"id":"3","name":"Volume","value":2.284021874999995,"valueType":"number"}]},{"id":"1nwM050rv5nwDtbve1Y3B8","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Elevation","value":1.399999999999999,"valueType":"number"}]},{"id":"1o6MQprdj23AthqNFcPTJp","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1oAKdTlAHFBQGGCzY7R0CC","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":1.751,"valueType":"number"}]},{"id":"1oEvLxaHDDjf7R968x33KO","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1oSj2gz5D9Tg57X0BCxTJg","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Bedroom","valueType":"string"},{"id":"6","name":"Category Code","value":"13-51 21 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit A CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit A FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit A HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit A LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit A OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit A VentilationZoneName","valueType":"string"}]},{"id":"1ok6uirSX1DeJNWdRYznHQ","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Exterior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Interior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"4","name":"Structural Usage","value":1.0,"valueType":"number"}]},{"id":"1ovQ3WAd95Ugod5ecFhoAq","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Frame Exterior Material","value":"Sash","valueType":"string"},{"id":"2","name":"Frame Interior Material","value":"Sash","valueType":"string"},{"id":"3","name":"Glass Pane Material","value":"Glass","valueType":"string"},{"id":"4","name":"Sash","value":"Sash","valueType":"string"}]},{"id":"1p6_pOx0f6oPY7RFvqpAzt","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"1pZasTjM54yBJmwqxscFhv","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1pjw6zCfj7Qx5johgwM3qX","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.35.17.47.11","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Kitchen Casework","valueType":"string"}]},{"id":"1pt6nfXwjFSgir9BsmGZ8o","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1puxSsg$13_vNtV8rozmOO","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1q5ua55091puxUmdtI6YX7","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Flush:0762 x 2032mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"1qjkUeI2j0r85QBJQ2Byr$","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"17","valueType":"string"}]},{"id":"1qqy4nUZDE6QQMjYmlSwhV","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1rDOWthZz66ujq30JHwxUB","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"ConfigurationType","value":"ConfigurationType","valueType":"string"},{"id":"4","name":"ConstructionType","value":"ConstructionType","valueType":"string"},{"id":"5","name":"FireRating","value":"FireRating","valueType":"string"},{"id":"6","name":"GlazingAreaFraction","value":"GlazingAreaFraction","valueType":"string"},{"id":"7","name":"OperationType","value":"OperationType","valueType":"string"},{"id":"8","name":"Area","value":"Area","valueType":"string"},{"id":"9","name":"Color","value":"Color","valueType":"string"},{"id":"10","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"11","name":"Features","value":"Features","valueType":"string"},{"id":"12","name":"Finish","value":"Finish","valueType":"string"},{"id":"13","name":"Grade","value":"Grade","valueType":"string"},{"id":"14","name":"Material","value":"Material","valueType":"string"},{"id":"15","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"16","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"17","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"18","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"19","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"20","name":"Reference","value":"Reference","valueType":"string"},{"id":"21","name":"Shape","value":"Shape","valueType":"string"},{"id":"22","name":"Size","value":"Size","valueType":"string"},{"id":"23","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"24","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"25","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"26","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"27","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"28","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"29","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"30","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"31","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"32","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1rKOEiUUb4fP32D39h3lBp","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1rlsdBkNrF09urimisRqua","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Thickness","value":0.051,"valueType":"number"},{"id":"2","name":"Height","value":2.42,"valueType":"number"},{"id":"3","name":"Rail Width - Base","value":0.102,"valueType":"number"},{"id":"4","name":"Rail Width - Top","value":0.102,"valueType":"number"},{"id":"5","name":"Stile Width - Hinge","value":0.102,"valueType":"number"},{"id":"6","name":"Stile Width - Latch","value":0.102,"valueType":"number"},{"id":"7","name":"Trim Projection Ext","value":0.025,"valueType":"number"},{"id":"8","name":"Trim Projection Int","value":0.025,"valueType":"number"},{"id":"9","name":"Trim Width","value":0.07599999999999999,"valueType":"number"},{"id":"10","name":"Width","value":0.813,"valueType":"number"}]},{"id":"1rpZYZHkz2wA2zhuo866jB","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":30.14164524999992,"valueType":"number"},{"id":"2","name":"Perimeter","value":22.02799999999997,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":3.100000000000196,"valueType":"number"},{"id":"4","name":"Volume","value":71.39068970899979,"valueType":"number"}]},{"id":"1sGJqFj7rAJu$d7yWwl$P_","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"29","valueType":"string"}]},{"id":"1sLaHGL_zCyveORfm8rsV3","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Thickness","value":0.051,"valueType":"number"},{"id":"2","name":"Height","value":2.032,"valueType":"number"},{"id":"3","name":"Trim Projection Ext","value":0.025,"valueType":"number"},{"id":"4","name":"Trim Projection Int","value":0.025,"valueType":"number"},{"id":"5","name":"Trim Width","value":0.07599999999999999,"valueType":"number"},{"id":"6","name":"Width","value":0.7619999999999999,"valueType":"number"}]},{"id":"1szvAtJBD8puwsU3vbHXKe","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1tH0LLeQj0o9qasBozf4W$","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1tcOR5lz1B1v6NDafByaUc","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"1tezDxCV9FYBKfuUS7vbZQ","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"1tohgs1y1FK9izGg0w0O83","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":2.508000000000034,"valueType":"number"},{"id":"2","name":"Area","value":6.414525000000523,"valueType":"number"},{"id":"3","name":"Volume","value":0.97500780000008,"valueType":"number"}]},{"id":"1uI54s2UL4a9e754FtPXzW","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"1uSCUKJy15cuwoOLa7WJkJ","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.032,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1uVmgsTvz0avwIhvduKmKk","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"A101","valueType":"string"}]},{"id":"1uYgzxiFnACwcjMeM2Py2s","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Elevation","value":1.399999999999999,"valueType":"number"}]},{"id":"1usVcSzhn9_8dDVQSC0Mgd","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":8.800000000000003,"valueType":"number"},{"id":"2","name":"Width","value":0.9,"valueType":"number"},{"id":"3","name":"Volume","value":2.02041,"valueType":"number"}]},{"id":"1uuQu0eDLCnP55KwnHrCuu","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1v0qhRyc9DNBg0f3v7X9eQ","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1v9fQ5j_r7wPSSN4Dk8KoD","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"2","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"3","name":"Horizontal Projection","value":"Default","valueType":"string"}]},{"id":"1vFpbICB56swye_uFVcVBF","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1vMKxTxbD4kgVWGmXaklIx","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:2800mm x 2410mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"1vNMEp5lHDHhmgGzt2a0ih","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":2.235499999999982,"valueType":"number"},{"id":"2","name":"Area","value":3.942851999999971,"valueType":"number"},{"id":"3","name":"Volume","value":0.4889136479999963,"valueType":"number"}]},{"id":"1vS8nE$QvBuhMtThmqYVev","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"1vXUvT4nnCGxRK4DNV0lRT","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Skylight:1180 x 1170mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"1va2jm$Zj9lvxg0LFjOv4f","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1vcCvm2wH1DxeEFwZ5sXLN","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1vodmyTpv8nP3Yfk6EKXrC","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":2.508000000000044,"valueType":"number"},{"id":"2","name":"Area","value":6.643300000000551,"valueType":"number"},{"id":"3","name":"Volume","value":1.009781600000084,"valueType":"number"}]},{"id":"1vuIbN2TfAzBapWdc66E1W","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"1vzGDyhqfFix5HV0KXM74K","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1w3SWzE$9BNu23_6baMv$$","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"10","name":"Unconnected Height","value":3.100000000000196,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"1w3ajvkwf6wf049pt$90uH","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.51,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1ws$5ay2T0hfW9tWxc0U3J","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.9255000000000001,"valueType":"number"}]},{"id":"1wsAn5m9fEE9O1iObhnkIM","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Elevation","value":1.399999999999999,"valueType":"number"}]},{"id":"1ww7O1Fcn57OZWzZ8v6tHW","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1x2tPoL3100Pxsw_uOe98k","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension","value":-0.0127,"valueType":"number"},{"id":"2","name":"End Extension","value":-0.0127,"valueType":"number"}]},{"id":"1x4neBeUr6NgmRi$nxiGiB","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.019,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"1x9Ho$hH53lgZvdbJk2rti","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":1.6845,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1xKgkdT9v5DemDQulduMdW","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":1.594,"valueType":"number"},{"id":"2","name":"Area","value":4.069520000000288,"valueType":"number"},{"id":"3","name":"Volume","value":0.5046204800000355,"valueType":"number"}]},{"id":"1xVf4rtVT5zR0gULZ3r1fL","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Finish Floor - Ceramic Tile","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"1xcXYjBMv668Fd2Ow4h2a9","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"1xs$hHHOT6lOSQL9k6E3xH","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:819mm x 759mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"1xtwW$Yhz9Ef1pxniSUYKT","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1yHZaI7Gr3D88naUz8soc7","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":1.662000000000019,"valueType":"number"},{"id":"2","name":"Area","value":2.871216000000071,"valueType":"number"},{"id":"3","name":"Volume","value":0.3560307840000087,"valueType":"number"}]},{"id":"1yLzcsi7z0SuWw_MMBk3lM","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"1yp5qK5qD0hv4ONhPsf$JV","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"1z2GQFntX7T9rZDIpdZyNY","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"NONFIXED","valueType":"string"}]},{"id":"1z61GQeEHAtRt2ZMBzNNa$","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"1z9R2MgJ5CThI0iCYHj5BR","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"1zYUeyDir4jf$vdFaUbfrh","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Handle Material","value":"Cabinets - Handles","valueType":"string"},{"id":"2","name":"Finish","value":"Finish","valueType":"string"}]},{"id":"1ziULTUK5D8hMCaUeabJI8","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2$GkdzjUzBUfkXXzAeX0PM","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":0.0,"valueType":"number"},{"id":"2","name":"Location Line","value":0.0,"valueType":"number"},{"id":"3","name":"Base Constraint","value":"T/FDN","valueType":"string"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"10","name":"Top Constraint","value":"Up to level: Level 1","valueType":"string"},{"id":"11","name":"Unconnected Height","value":1.25,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"21","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2$VqY0pjL1OfDMAw6515$_","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2$gSHW4BjBs8WKLEf0ShAk","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2$iy2dUp924A1GR63Y5aD6","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2$jX5oqcXCXuL$qU13a4Qv","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2$mzFpS494Tg$vHhLzZSuc","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Level 2","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"2$uH_TGcf4ohKOTacqzCaW","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"20KDqUoRH628_VRH7Fw$fj","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"20P1JisgLC1OsL$03ty1$z","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Release","value":3.0,"valueType":"number"},{"id":"2","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"3","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"4","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"5","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"6","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"7","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"8","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"9","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"10","name":"Start My","value":"True","valueType":"boolean"},{"id":"11","name":"Start My","value":"True","valueType":"boolean"},{"id":"12","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"13","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"14","name":"End Release","value":1.0,"valueType":"number"},{"id":"15","name":"End Fx","value":"False","valueType":"boolean"},{"id":"16","name":"End Fx","value":"False","valueType":"boolean"},{"id":"17","name":"End Fy","value":"False","valueType":"boolean"},{"id":"18","name":"End Fy","value":"False","valueType":"boolean"},{"id":"19","name":"End Fz","value":"False","valueType":"boolean"},{"id":"20","name":"End Fz","value":"False","valueType":"boolean"},{"id":"21","name":"End Mx","value":"True","valueType":"boolean"},{"id":"22","name":"End Mx","value":"True","valueType":"boolean"},{"id":"23","name":"End My","value":"True","valueType":"boolean"},{"id":"24","name":"End My","value":"True","valueType":"boolean"},{"id":"25","name":"End Mz","value":"True","valueType":"boolean"},{"id":"26","name":"End Mz","value":"True","valueType":"boolean"},{"id":"27","name":"Analyze As","value":1.0,"valueType":"number"}]},{"id":"20SwhsPJH8ZerXIiBuErkY","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Enable Analytical Model","value":"True","valueType":"boolean"},{"id":"2","name":"Enable Analytical Model","value":"True","valueType":"boolean"}]},{"id":"20uE3md5j9YxeJ8FT65wMM","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Exterior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Interior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"4","name":"Structural Usage","value":1.0,"valueType":"number"}]},{"id":"212VhG8YzDZPaRLEFsNlkL","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"21rgqk9Cj099Lfvd6c3Vbz","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Counter Thickness","value":0.04,"valueType":"number"},{"id":"2","name":"Depth","value":0.625,"valueType":"number"},{"id":"3","name":"Height","value":0.9,"valueType":"number"}]},{"id":"21tVg_hXvCNwlnz4SXUk_P","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"221TYWs7rAAvrOpn6TAPBA","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"221fKV7PbAwRs80rLr5LaW","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"22I5GTcAT2oQpr78ZwvXn3","name":"PSet_Revit_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Beam Material","value":"Metal - Steel - 345 MPa","valueType":"string"}]},{"id":"22_RtiSHf0nv9ZdF29UICJ","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Roof","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"22tatg3zX4$gJhNVjWFT2B","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"238jh$GZz9RRLLR5SFKewS","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"23TvIUaJz1bemN65w5YL4V","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"23_iUXOrXAnw9uHr8FEJzD","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"23nBQYPIX4Iug04yYnLVHB","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"24GVVIdE1BowXIBbuNGOc9","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"24juHcIlXFIPF4T7zVmJQh","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"33","valueType":"string"}]},{"id":"24lhGnKF9EPB27kgBhaxCy","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Finish","value":"Finish","valueType":"string"}]},{"id":"24zRJXC$98jwgVH7Hxg7MT","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"255ElPpHb0Gf2qHvhhME1i","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"25MZhTbtv6Fgk83X2ImFI7","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"25jT0lBonAtBTvTFjYFUZ_","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.032,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"26CGUyF7b058BN_bSTN$1Y","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.191499999999992,"valueType":"number"},{"id":"2","name":"Area","value":5.25062499999999,"valueType":"number"},{"id":"3","name":"Volume","value":2.284021875,"valueType":"number"}]},{"id":"26GgbXS5b8ffxKYPC8hydY","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":13.89750099999979,"valueType":"number"},{"id":"2","name":"Perimeter","value":16.41946079999992,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":3.100000000000196,"valueType":"number"},{"id":"4","name":"Volume","value":33.51217908999949,"valueType":"number"}]},{"id":"26Loru4BHEbfZdaEQMXncW","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"26YcGxlELAEOGqTlBh_PAS","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.42,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"26_5lAMePEsRT1GH_XwYMg","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":3.19500000000004,"valueType":"number"},{"id":"2","name":"Area","value":6.613016000000686,"valueType":"number"},{"id":"3","name":"Volume","value":0.8200139840000846,"valueType":"number"}]},{"id":"26_714ClrCVeocg2FzCsC2","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Base Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Top Level","value":"Level 2","valueType":"string"},{"id":"5","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Top Offset","value":0.0,"valueType":"number"}]},{"id":"26fGFZr1LDR9uL9G4wKwG4","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"27Ibh6e9rAe97yuk2yCnQo","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"27nnbITZr6N8sX6jeye79D","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Name","value":"Level 2","valueType":"string"}]},{"id":"27tYG4QYr61OPmLWDSMDhc","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"A102","valueType":"string"},{"id":"2","name":"Name","value":"Living Room","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-51 24: Living Spaces","valueType":"string"}]},{"id":"27ugzxsr15xwn12yjn2en9","name":"PSet_Revit_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Beam Material","value":"Metal - Steel - 345 MPa","valueType":"string"}]},{"id":"28$z4Wf_H8VQyoX$kQevSd","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Release","value":3.0,"valueType":"number"},{"id":"2","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"3","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"4","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"5","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"6","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"7","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"8","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"9","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"10","name":"Start My","value":"True","valueType":"boolean"},{"id":"11","name":"Start My","value":"True","valueType":"boolean"},{"id":"12","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"13","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"14","name":"End Release","value":1.0,"valueType":"number"},{"id":"15","name":"End Fx","value":"False","valueType":"boolean"},{"id":"16","name":"End Fx","value":"False","valueType":"boolean"},{"id":"17","name":"End Fy","value":"False","valueType":"boolean"},{"id":"18","name":"End Fy","value":"False","valueType":"boolean"},{"id":"19","name":"End Fz","value":"False","valueType":"boolean"},{"id":"20","name":"End Fz","value":"False","valueType":"boolean"},{"id":"21","name":"End Mx","value":"True","valueType":"boolean"},{"id":"22","name":"End Mx","value":"True","valueType":"boolean"},{"id":"23","name":"End My","value":"True","valueType":"boolean"},{"id":"24","name":"End My","value":"True","valueType":"boolean"},{"id":"25","name":"End Mz","value":"True","valueType":"boolean"},{"id":"26","name":"End Mz","value":"True","valueType":"boolean"},{"id":"27","name":"Analyze As","value":1.0,"valueType":"number"}]},{"id":"284RuVz3HC7P5Gag7tbPHY","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"285orToMTBOvW1wAKeW5v1","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"28FbaGe0j1rAOBLGPKdKfI","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"28Jq5DO6v2Ewm$vvnDTQi0","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"28VMrJVfT5tBgMVCtYS_os","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Type Comments","value":"","valueType":"string"},{"id":"2","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"3","name":"Assembly Description","value":"","valueType":"string"},{"id":"4","name":"Assembly Code","value":"","valueType":"string"},{"id":"5","name":"Type Mark","value":"36","valueType":"string"},{"id":"6","name":"OmniClass Number","value":"23.30.20.21.14","valueType":"string"},{"id":"7","name":"OmniClass Title","value":"Roof Windows","valueType":"string"}]},{"id":"28haraqyv4nvaa067eZB94","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":8.382999999999973,"valueType":"number"},{"id":"2","name":"Area","value":12.31914000000158,"valueType":"number"},{"id":"3","name":"Volume","value":5.137081380000661,"valueType":"number"}]},{"id":"293ZjjPo5Dcx9kFuKcg4$d","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":19.91399999999996,"valueType":"number"},{"id":"2","name":"Area","value":22.04323199999998,"valueType":"number"},{"id":"3","name":"Volume","value":1.256464223999999,"valueType":"number"}]},{"id":"296TBv2BrCwQ1n7swI378C","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"29LaTpg9D8VAGG9YOnxP9U","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"29QLVlBfX5uv9wJiJNT8nD","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"29n_CX6yD56vTZDPNLiJ5J","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"29pANHfMf79wajnEjoxrEF","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":17.38299999999997,"valueType":"number"},{"id":"2","name":"Area","value":10.58624699999999,"valueType":"number"},{"id":"3","name":"Volume","value":4.414464998999998,"valueType":"number"}]},{"id":"29rwf09_XBPfs68uIFmb$f","name":"PSet_Revit_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Beam Material","value":"Metal - Steel - 345 MPa","valueType":"string"}]},{"id":"29tkV921v12vbmOaerNRTn","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"2A3RcQonD5$Av48L8WOhxp","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2A7GfeuHTBjQ7Im41mX_xv","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Elevation","value":1.399999999999999,"valueType":"number"}]},{"id":"2AM9AVWfzBIAMK4v7cSXZq","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Work Plane","value":"Level : Level 2","valueType":"string"},{"id":"3","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"5","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"6","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"7","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"8","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"9","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"10","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"11","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"12","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"13","name":"Orientation","value":0.0,"valueType":"number"},{"id":"14","name":"Orientation","value":0.0,"valueType":"number"},{"id":"15","name":"Cross-Section Rotation","value":0.0,"valueType":"number"}]},{"id":"2APfVS7Hr3XR724gOsUC2L","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"2BFjLOPf1COulZePxJxrdk","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"2BL7nIwnD78QQQYDUhaW1e","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1,"valueType":"number"}]},{"id":"2BNnRGM1PBmvTZEVQ4nM3d","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"B204","valueType":"string"}]},{"id":"2BUc9THWb7mhiAOHiwXNzo","name":"Pset_RoofCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Roof:Live Roof over Wood Joist Flat Roof","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"TotalArea","value":132.9260359799997,"valueType":"number"},{"id":"5","name":"ProjectedArea","value":135.1511559999996,"valueType":"number"}]},{"id":"2BxA7GwdjC$PnqBRbd8b3e","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"32","valueType":"string"}]},{"id":"2BxmGiHJ94GBldWBSKNgdB","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"2C24Gi08H1WhLiIE0dC1HQ","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Ceramic Tile","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"2C8rnjT7z9sAwrNRgOgxAh","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Analyze As","value":4.0,"valueType":"number"}]},{"id":"2CFtMYUpL9lhwaFApsLxKN","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"2","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"3","name":"Wrapping at Ends","value":0.0,"valueType":"number"},{"id":"4","name":"Wrapping at Ends","value":0.0,"valueType":"number"},{"id":"5","name":"Width","value":0.435,"valueType":"number"},{"id":"6","name":"Function","value":2.0,"valueType":"number"}]},{"id":"2D0vUE1Tz2geHag9CR3TMU","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2D7o7Tf8DDTxASx3teTwB7","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.019,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2D7uKIujvDdfRwvHBJtzJ7","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Exterior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Interior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"4","name":"Structural Usage","value":1.0,"valueType":"number"}]},{"id":"2DBEp0dw5EbBc71oPLHqHa","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"2DL4NqqwvELhDqNvJBpNOi","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":13.8975009999999,"valueType":"number"},{"id":"2","name":"Perimeter","value":16.41946079999996,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":3.100000000000196,"valueType":"number"},{"id":"4","name":"Volume","value":33.51217908999968,"valueType":"number"}]},{"id":"2DVbpO8hHAdvDd5xq2XGv$","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.032,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2DjHbIEZf9ZhySOo$I48yM","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2Du1Ry1Fr5derasJha1u4e","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"2DzbliGoj5bud_f2aA_$XV","name":"PSet_Revit_Type_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"W","value":0.58,"valueType":"number"},{"id":"2","name":"A","value":0.00753,"valueType":"number"}]},{"id":"2EUZ8PR599JOQ2QR$CfLyh","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Material","value":"Concrete - Cast In Situ","valueType":"string"}]},{"id":"2EiTjiaJf0puAfzKwFx6n3","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2F9Z2ReHvC3fdos7jkFJpL","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"2FRR4F8110GAk2JTVN$3jF","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"2FetXfXiH1Av_C0$agowrM","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2FiDDjBwPEXxpZxZhxj3ar","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2G1sas5WHEZAY6Ky5OL752","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"},{"id":"2","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"2G9Tb6S5z4kxQIxSA$bmWi","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.595000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":-0.3050000000000001,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2GGd3yPUn4bxDFbAKODc6O","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2H1DS8diD4dAJtkEcSaTop","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2HCU4wstf0qhkqp_trYY0X","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"A101","valueType":"string"},{"id":"2","name":"Name","value":"Foyer","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-51 24 11: General Residential Space","valueType":"string"}]},{"id":"2HLVx$FTP4nu262LBwbUMT","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1000000000000048,"valueType":"number"}]},{"id":"2HVMBRocD5jgCtBk7AhA8s","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2HX657r9H4qevvhIAPrEbG","name":"PSet_Revit_Type_Risers","type":"IfcPropertySet","properties":[{"id":"1","name":"Maximum Riser Height","value":0.2,"valueType":"number"},{"id":"2","name":"Begin with Riser","value":"True","valueType":"boolean"},{"id":"3","name":"End with Riser","value":"True","valueType":"boolean"},{"id":"4","name":"Riser Type","value":1.0,"valueType":"number"},{"id":"5","name":"Riser Thickness","value":0.0125,"valueType":"number"},{"id":"6","name":"Riser to Tread Connection","value":0.0,"valueType":"number"}]},{"id":"2HaTzSfVv4$8Um3cF1D7vz","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":16.07799999999991,"valueType":"number"},{"id":"2","name":"Area","value":12.95406999999977,"valueType":"number"},{"id":"3","name":"Volume","value":0.168402909999997,"valueType":"number"},{"id":"4","name":"Thickness","value":0.013,"valueType":"number"}]},{"id":"2HmZPcflr3NeyaH0WCt2bn","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":8.383000000000003,"valueType":"number"},{"id":"2","name":"Area","value":11.0,"valueType":"number"},{"id":"3","name":"Volume","value":4.587000000000002,"valueType":"number"}]},{"id":"2I0S0Hcu5EHu9bCJtkTbXv","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.35.17.47.14","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Bathroom Casework","valueType":"string"}]},{"id":"2I41zfuZbDCen6K06qLNOK","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2ILGhX4zn4TxzLBBhnUI1t","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Wood","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"2JBIeCcXn6reu7ROj3bEDY","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"ConfigurationType","value":"ConfigurationType","valueType":"string"},{"id":"4","name":"ConstructionType","value":"ConstructionType","valueType":"string"},{"id":"5","name":"FireRating","value":"FireRating","valueType":"string"},{"id":"6","name":"GlazingAreaFraction","value":"GlazingAreaFraction","valueType":"string"},{"id":"7","name":"OperationType","value":"OperationType","valueType":"string"},{"id":"8","name":"Area","value":"Area","valueType":"string"},{"id":"9","name":"Color","value":"Color","valueType":"string"},{"id":"10","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"11","name":"Features","value":"Features","valueType":"string"},{"id":"12","name":"Finish","value":"Finish","valueType":"string"},{"id":"13","name":"Grade","value":"Grade","valueType":"string"},{"id":"14","name":"Material","value":"Material","valueType":"string"},{"id":"15","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"16","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"17","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"18","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"19","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"20","name":"Reference","value":"Reference","valueType":"string"},{"id":"21","name":"Shape","value":"Shape","valueType":"string"},{"id":"22","name":"Size","value":"Size","valueType":"string"},{"id":"23","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"24","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"25","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"26","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"27","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"28","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"29","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"30","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"31","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"32","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"2JBas4GYL2_xIqlpdplcJZ","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.52,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2JWU_gL6z7Fv7R71yqN7Bk","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2Jf9JPAHjCLw6EcUg0xszW","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":1.751,"valueType":"number"}]},{"id":"2Jg$1I23DCvPkNZnt7Y0oZ","name":"Pset_BeamCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_W-Wide Flange:W410X60","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"6","name":"Span","value":4.121279928630352,"valueType":"number"},{"id":"7","name":"Slope","value":0.0,"valueType":"number"}]},{"id":"2JkSnOwTL3gAZEFOZ1gnL3","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Release","value":3.0,"valueType":"number"},{"id":"2","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"3","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"4","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"5","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"6","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"7","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"8","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"9","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"10","name":"Start My","value":"True","valueType":"boolean"},{"id":"11","name":"Start My","value":"True","valueType":"boolean"},{"id":"12","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"13","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"14","name":"End Release","value":1.0,"valueType":"number"},{"id":"15","name":"End Fx","value":"False","valueType":"boolean"},{"id":"16","name":"End Fx","value":"False","valueType":"boolean"},{"id":"17","name":"End Fy","value":"False","valueType":"boolean"},{"id":"18","name":"End Fy","value":"False","valueType":"boolean"},{"id":"19","name":"End Fz","value":"False","valueType":"boolean"},{"id":"20","name":"End Fz","value":"False","valueType":"boolean"},{"id":"21","name":"End Mx","value":"True","valueType":"boolean"},{"id":"22","name":"End Mx","value":"True","valueType":"boolean"},{"id":"23","name":"End My","value":"True","valueType":"boolean"},{"id":"24","name":"End My","value":"True","valueType":"boolean"},{"id":"25","name":"End Mz","value":"True","valueType":"boolean"},{"id":"26","name":"End Mz","value":"True","valueType":"boolean"},{"id":"27","name":"Analyze As","value":1.0,"valueType":"number"}]},{"id":"2Jwdc3tY140QP5CF_9TRNX","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":1.751,"valueType":"number"}]},{"id":"2K5esR4wL0NuSaiCTjIa$k","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Function","value":1.0,"valueType":"number"},{"id":"2","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"3","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"4","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"2K7ElVBHbE5h6_YaMb9Leq","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2K8GKt_d56$vEgSYzdpK2N","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension Calculation","value":3.0,"valueType":"number"},{"id":"2","name":"End Extension Calculation","value":3.0,"valueType":"number"},{"id":"3","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"4","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"5","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"6","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"7","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"8","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2K8OYX40X5nA7JttXNVS_W","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Line Weight","value":1.0,"valueType":"number"},{"id":"2","name":"Color","value":0.0,"valueType":"number"},{"id":"3","name":"Line Pattern","value":"Centre","valueType":"string"},{"id":"4","name":"Symbol","value":"M_Level Head - Circle","valueType":"string"},{"id":"5","name":"Symbol at End 1 Default","value":"False","valueType":"boolean"},{"id":"6","name":"Symbol at End 2 Default","value":"True","valueType":"boolean"}]},{"id":"2KB7QjcsDF7vOQ3jDFsy6m","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"T/FDN","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 1","valueType":"string"},{"id":"10","name":"Unconnected Height","value":1.25,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2KNlIfHVr8qRPTLFs5xJlQ","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"2KPETJUCP5yRMjMQojrG2t","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":17.38299999999999,"valueType":"number"},{"id":"2","name":"Width","value":0.9,"valueType":"number"},{"id":"3","name":"Volume","value":4.936409999999995,"valueType":"number"},{"id":"4","name":"Elevation at Bottom","value":-1.55,"valueType":"number"}]},{"id":"2KRiAjCyD6vgVxqZ9d2f_Y","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2Klexyjev0pfFCAVapxqIz","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"Type Mark","value":"03","valueType":"string"},{"id":"5","name":"OmniClass Number","value":"23.30.20.17.21.14","valueType":"string"},{"id":"6","name":"OmniClass Title","value":"Casement Windows","valueType":"string"}]},{"id":"2Ku0TQAOzEGeSsv6EoSp9p","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.20.14.14.14","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Settees, Sofas","valueType":"string"}]},{"id":"2L$i4TS7P3G8lKwyFpHu9G","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Elevation","value":1.399999999999999,"valueType":"number"}]},{"id":"2L32zINGH9bhDmrUaAZuFP","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"2LgeUG5B91efDSveOM26uN","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2Li8$3URzE3vll_JbxjLpb","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:4835mm x 2420mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"2Lq5FAXaXCVgEd1JyLpy16","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2LwYzxHFz2OBHAqFWPrNyi","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":22.85840924999999,"valueType":"number"},{"id":"2","name":"Perimeter","value":24.216,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":3.100000000000196,"valueType":"number"},{"id":"4","name":"Volume","value":51.83001290200067,"valueType":"number"}]},{"id":"2Ly77fCpDAdha4kWx6$DXf","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2M0P93ZGf4qgr2TqraIC4l","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Width","value":1.0,"valueType":"number"},{"id":"2","name":"Width","value":1.0,"valueType":"number"},{"id":"3","name":"Desired Number of Risers","value":16.0,"valueType":"number"},{"id":"4","name":"Actual Number of Risers","value":16.0,"valueType":"number"},{"id":"5","name":"Actual Riser Height","value":0.1937500000000122,"valueType":"number"},{"id":"6","name":"Actual Tread Depth","value":0.25,"valueType":"number"}]},{"id":"2MDEg8eenBb9cT8uCIYuO6","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Eccentricity","value":0.0,"valueType":"number"},{"id":"2","name":"Eccentricity","value":0.0,"valueType":"number"}]},{"id":"2MIPE3JQfBeRCavd_VLSgi","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Depth","value":0.45,"valueType":"number"},{"id":"2","name":"Height","value":0.8199999999999998,"valueType":"number"},{"id":"3","name":"Plinth Depth","value":0.035,"valueType":"number"},{"id":"4","name":"Plinth Height","value":0.1,"valueType":"number"},{"id":"5","name":"Width","value":0.65,"valueType":"number"}]},{"id":"2MoI0iJIX47QaPklmpH2IV","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2MqnUG7YT5hAvILKqZtyE_","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"bf","value":0.178,"valueType":"number"},{"id":"2","name":"d","value":0.407,"valueType":"number"},{"id":"3","name":"k","value":0.03,"valueType":"number"},{"id":"4","name":"kr","value":0.0172,"valueType":"number"},{"id":"5","name":"tf","value":0.0128,"valueType":"number"},{"id":"6","name":"tw","value":0.007700000000000001,"valueType":"number"}]},{"id":"2Mv7DE5af24wbyBoOd0bwS","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Exterior - Brick on Block","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"2Mw$d$csf4ORuK775Vt4MJ","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2MydZ3sLrFlujhYf_l3J8$","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":42.57399999999987,"valueType":"number"},{"id":"2","name":"Area","value":56.45750059999956,"valueType":"number"},{"id":"3","name":"Volume","value":3.218077534199977,"valueType":"number"}]},{"id":"2NGOKOI9TCze7x507$LoX7","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension","value":-0.0127,"valueType":"number"},{"id":"2","name":"End Extension","value":-0.0127,"valueType":"number"}]},{"id":"2NTHhhl3jBjOVBJg9mduzj","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2NY5iLhNjA_wbKyFj0vggS","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Finish Floor - Wood","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"2NdufmIfT1ufixZs2uq1my","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"General Residential Space","valueType":"string"},{"id":"6","name":"Category Code","value":"13-51 24 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit B CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit B FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit B HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit B LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit B OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit B VentilationZoneName","valueType":"string"}]},{"id":"2NegtVUKbFORk1cvGtwkTa","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"2Nk_pomSn0pfDWqPqvb4Rd","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Enable Analytical Model","value":"True","valueType":"boolean"},{"id":"2","name":"Enable Analytical Model","value":"True","valueType":"boolean"}]},{"id":"2OA48Hd5fCxx0U71qxIdnJ","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"2OkBGiF6X0KB63VCO6OUVG","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2OnsLGzpH1B9aqXTrtY8Xx","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":16.07799999999991,"valueType":"number"},{"id":"2","name":"Area","value":12.95406999999974,"valueType":"number"},{"id":"3","name":"Volume","value":0.1684029099999966,"valueType":"number"},{"id":"4","name":"Thickness","value":0.013,"valueType":"number"}]},{"id":"2OqtPWCv97GR5VAu1YQrt_","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Break Symbol in Plan","value":"True","valueType":"boolean"},{"id":"2","name":"Text Size","value":0.008202099737532809,"valueType":"number"},{"id":"3","name":"Text Font","value":"Arial","valueType":"string"}]},{"id":"2Ovg4Hn09CA8FgE$aUVJ7K","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":0.8590000000000001,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2P5BgeWB98eQycO036lJ$U","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2PC1skh2r7UOH5mFzmNMlj","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"A104","valueType":"string"},{"id":"2","name":"Name","value":"Bathroom 1","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-41 11 14 11: Bathroom","valueType":"string"}]},{"id":"2PJ$ik3c17lghn9v2QRXOh","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1,"valueType":"number"}]},{"id":"2PLpsKk5D4fPgAyWk5tdeL","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"B104","valueType":"string"}]},{"id":"2PNmX5bN126e$SJJAPOyay","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1,"valueType":"number"}]},{"id":"2P_1OtK5H5m8ZUiFqvhder","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2PyrTNZ0X8BRUYoKZZfkSg","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2Q4yFwwhPBzgHlUetiORT1","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Work Plane","value":"Level : Level 2","valueType":"string"},{"id":"3","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"5","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"6","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"7","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"8","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"9","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"10","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"11","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"12","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"13","name":"Orientation","value":0.0,"valueType":"number"},{"id":"14","name":"Orientation","value":0.0,"valueType":"number"},{"id":"15","name":"Cross-Section Rotation","value":0.0,"valueType":"number"}]},{"id":"2QQN_hVTP6mezV57D0B0gK","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Analyze As","value":4.0,"valueType":"number"}]},{"id":"2QZoNkBFv7zeG7Gve5CCmH","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2Qs6Fo3G157AXa7tfCq06z","name":"PSet_Revit_Type_Treads","type":"IfcPropertySet","properties":[{"id":"1","name":"Minimum Tread Depth","value":0.25,"valueType":"number"},{"id":"2","name":"Tread Thickness","value":0.05,"valueType":"number"},{"id":"3","name":"Nosing Length","value":0.01,"valueType":"number"},{"id":"4","name":"Nosing Profile","value":"M_Stair Nosing - Radius : 20mm","valueType":"string"},{"id":"5","name":"Apply Nosing Profile","value":0.0,"valueType":"number"}]},{"id":"2RHq5roX9299l6XKTxFChr","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":11.55800000000004,"valueType":"number"},{"id":"2","name":"Area","value":6.735040000000081,"valueType":"number"},{"id":"3","name":"Volume","value":0.3838972800000047,"valueType":"number"}]},{"id":"2RMMuW4pv5qRtv64aUVjRV","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"},{"id":"2","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"2RcJfuTXnE4Q4k72LKrzDZ","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"2RwNHBegfC2xknLYYV8Rax","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Skylight:1180 x 1170mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"2SmnsdG3jAyhzbRkCsW4gq","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"2TkUTGgSr0YOjEHZBMzyT$","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"2TvBwkx9X4iPMfsQItx8CQ","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Furring (152 mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"2TveAhHfnAkR7d4CcnOmid","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"A204","valueType":"string"}]},{"id":"2U5yfEe3P66hGRhADJUIWH","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":1.95599999999999,"valueType":"number"},{"id":"2","name":"Area","value":4.69509999999999,"valueType":"number"},{"id":"3","name":"Volume","value":0.5821923999999986,"valueType":"number"}]},{"id":"2UlilZTMLBkxjDFKrZOGEJ","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension","value":-0.0127,"valueType":"number"},{"id":"2","name":"End Extension","value":-0.0127,"valueType":"number"}]},{"id":"2Un5A1w6j1sf1XB9iWOO4F","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"28","valueType":"string"}]},{"id":"2UwjSM1cTEf9lfEOIp9FcM","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":11.55799999999997,"valueType":"number"},{"id":"2","name":"Area","value":6.735039999999948,"valueType":"number"},{"id":"3","name":"Volume","value":0.3838972799999974,"valueType":"number"}]},{"id":"2VIRXl4N1DRAm9zgqFtLG1","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.013,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2VO221bX5BcxroRQjsBb3S","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2V_bV33TnFGeVM6ao8ovFP","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"2VgjeF9xb04AaYNO4vpvb2","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2Vi3cqovr3PxPb0T5GWdFZ","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2VktvDc396vOiTYddgKLFx","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2VqkBH6eHD$xxCg5Y_8y3p","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"A203","valueType":"string"},{"id":"2","name":"Name","value":"Bedroom 2","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-51 21 11: Bedroom","valueType":"string"}]},{"id":"2W06Oj9zT0HRbZl2SCpEOb","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2W4QGNHa9FqBKHOS9QwiWw","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2WAajOInv1ywM66aT3e8xI","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"2WBG04AHz888DAdsOGtXdS","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.01,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2WCne2wSnAHh2bdPhFQoKs","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"2WUdqd2F15W9DLLVDNCuYt","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference Level","value":"Roof","valueType":"string"},{"id":"2","name":"Work Plane","value":"Level : Roof","valueType":"string"},{"id":"3","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"5","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"6","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"7","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"8","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"9","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"10","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"11","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"12","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"13","name":"Orientation","value":0.0,"valueType":"number"},{"id":"14","name":"Orientation","value":0.0,"valueType":"number"},{"id":"15","name":"Cross-Section Rotation","value":0.0,"valueType":"number"}]},{"id":"2WW7uWmmr69wGc6mnf0nrp","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2WlggRRvn5jPp2VGRbsleK","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2WtCdA65H8UPlAdfK0LVUm","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2XB4cJZNn4q8RmhTeSuQs6","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2XJQovBjvCtvpSqp$4w05I","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1,"valueType":"number"}]},{"id":"2Xb5VHhs98geTfQsmNKofR","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2XhvHqgwH73uWTi_Un0bvE","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2XmxyXDFDB_PAJ0si8m76L","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Roof","valueType":"string"},{"id":"2","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"2Y$Y4GzGb1zvFmJaxZ3LU8","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"Type Mark","value":"33","valueType":"string"},{"id":"5","name":"Fire Rating","value":"Fire Rating","valueType":"string"},{"id":"6","name":"OmniClass Number","value":"23.30.10.00","valueType":"string"},{"id":"7","name":"OmniClass Title","value":"Doors","valueType":"string"}]},{"id":"2Y30jgFzb5IxgHNarXYsYP","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2YFlXPs4f6Uv9OKTYlfQVb","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.013,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2YRl_fzPHDdundsFX4Hbve","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Flush:0864 x 2032mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"2YU4uisdnA_9yySbzkIbHL","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension Calculation","value":3.0,"valueType":"number"},{"id":"2","name":"End Extension Calculation","value":3.0,"valueType":"number"},{"id":"3","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"4","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"5","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"6","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"7","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"8","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2YkYXgeMjDDvOIMFdtvK8s","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2Z0jC7hgH9RhOWE4fOfTP2","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"2Z84Ns5A50hRSeQai8qort","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2ZD4OI1kbDtR6$i2gFUFVc","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"A104","valueType":"string"}]},{"id":"2ZFWb63M15rxYnVtmF9p1j","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2ZRyth50j0DvilUq_TaenE","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.1,"valueType":"number"}]},{"id":"2ZUJ$RBoL1ZR$5i3Ufd1UZ","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"2ZZhYAnOXBVew25BFxwA6V","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"2","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"2ZuOZlOmj5J865$WjGL_U5","name":"PSet_Revit_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Up text","value":"UP","valueType":"string"},{"id":"2","name":"Down text","value":"DN","valueType":"string"},{"id":"3","name":"Up label","value":"True","valueType":"boolean"},{"id":"4","name":"Up label","value":"True","valueType":"boolean"},{"id":"5","name":"Up arrow","value":"True","valueType":"boolean"},{"id":"6","name":"Up arrow","value":"True","valueType":"boolean"},{"id":"7","name":"Down label","value":"True","valueType":"boolean"},{"id":"8","name":"Down label","value":"True","valueType":"boolean"},{"id":"9","name":"Down arrow","value":"True","valueType":"boolean"},{"id":"10","name":"Down arrow","value":"True","valueType":"boolean"},{"id":"11","name":"Show Up arrow in all views","value":"False","valueType":"boolean"},{"id":"12","name":"Show Up arrow in all views","value":"False","valueType":"boolean"}]},{"id":"2_Z1DOznv9VBfumnuceSXK","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"2_c7J0Vcv3V93Oy8DjsqHh","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"},{"id":"2","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"2_e6DflB90_B4cFWKfKdUS","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2_h0tbUUHAMxVk26BoWhHF","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"B203","valueType":"string"}]},{"id":"2_jWSw70L5MOiZjZjAKrAK","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"2_r5an_y18iRonoa$Y2_wQ","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Level : Level 1","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"2_s5lNfnD9YQJ$$P_WYlBj","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2_z7WsfVn7Se7VmnQpR69w","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"2aNaRraHjCyhNjxNCgoZQ$","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"2aYiY4QTL2XeSwbJZOVixb","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2acJcYaCD4GhB1xhHomZtg","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"2aqsdT$NvA9QbcdDc1FL7O","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"Type Mark","value":"05","valueType":"string"},{"id":"5","name":"OmniClass Number","value":"23.30.20.17.11","valueType":"string"},{"id":"6","name":"OmniClass Title","value":"Fixed Windows","valueType":"string"}]},{"id":"2bD7sq7PnC9v2cUzdaWdUI","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2bXGN8hhrCSedmdmsVsxub","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Wood","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"2bcHQxY1T5TB11t$_3xmg_","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"2be$UQNqb6u8x4tYtIqbz9","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Top Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Bottom Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"}]},{"id":"2bhUQxy7fBQfqGPOx4I9Ao","name":"Pset_StairCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Stair:Residential - 200mm Max Riser 250mm Tread","valueType":"string"},{"id":"2","name":"NumberOfRiser","value":16.0,"valueType":"number"},{"id":"3","name":"NumberOfTreads","value":15.0,"valueType":"number"},{"id":"4","name":"RiserHeight","value":0.1937500000000122,"valueType":"number"},{"id":"5","name":"TreadLength","value":0.25,"valueType":"number"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"2bqTpZe$f3YgI_V321PKbU","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Unconnected Height","value":3.100000000000196,"valueType":"number"},{"id":"10","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2bsvBKbfn3dQ4TPVrEgxnY","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.032,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2c3S8drq93K8Auf9Tdg6mS","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Top Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Bottom Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"}]},{"id":"2c6TtusUb1J9SO1FVgZEUV","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Roof","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"2cKdbdWDvCc8RhZ_80CLVK","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2cUf4XcNT7UALExEz6VHx5","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"2cd61mWMbAA9SsviD7ZoHy","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Level 2","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"2cjVAZr5fDvPXjvxc_X4Ki","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"2dKRtetjL7FuCgrYtz6xhY","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension","value":-0.0127,"valueType":"number"},{"id":"2","name":"End Extension","value":-0.0127,"valueType":"number"}]},{"id":"2dNyzZ3Q19YQwklhNaZFHq","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2dRR06xITCmAnCIaUBeDAr","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"2","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"3","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"2dT8TSKs11wOWD0XYaq4a3","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"2dwG8wtgf2Bgm2KF1Ve_Zh","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2e1SxZjzrD3vGiuxZ_DLkU","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"25","valueType":"string"}]},{"id":"2eb32cMiTFwBvyFQwPMyqW","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Exterior - Brick on Block","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"2ebqRValbFBhjjEBdTg9lX","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"2eo5ir2lz2ZOQDj3NhhPuG","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2ewzc3ppbCwBll33LFBCHT","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.51,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2fjdrtiCD948XA2IGuVPLy","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.0,"valueType":"number"},{"id":"3","name":"Height Offset From Level","value":0.0,"valueType":"number"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"7","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2g2s5gacT4O9$2U6HLfXIM","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"2gBilBnbL1dP1H5EBsWeQW","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"2gHnsT0$rEO8VKxYWaT4f8","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.20.17.14.11","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Beds","valueType":"string"}]},{"id":"2gMbKqArj6dRaGZ$hYP$y$","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"2gV2ynJDv4xhARISosIufy","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.013,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2gdnCiBl18sg5W24OVYqap","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":1.66199999999999,"valueType":"number"},{"id":"2","name":"Area","value":2.87121599999999,"valueType":"number"},{"id":"3","name":"Volume","value":0.3560307839999987,"valueType":"number"}]},{"id":"2h0JDpY2T0t9H1uxLBfp5_","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension","value":-0.0127,"valueType":"number"},{"id":"2","name":"End Extension","value":-0.0127,"valueType":"number"}]},{"id":"2h5_ht7YnFQRctwK4i3hSY","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Height","value":0.759,"valueType":"number"},{"id":"2","name":"Default Sill Height","value":0.9149999999999999,"valueType":"number"},{"id":"3","name":"Width","value":0.8190000000000001,"valueType":"number"},{"id":"4","name":"Window Inset","value":0.019,"valueType":"number"}]},{"id":"2hkWpbEFz9BgH_l9M5Kx4J","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.024,"valueType":"number"}]},{"id":"2hsyf7SJ17BewXKpzJQe0e","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:750mm x 2200mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"2i$G_tAfrE3w4ELpAwOcVw","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"2","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"3","name":"Horizontal Projection","value":"Default","valueType":"string"}]},{"id":"2i6Nbpe$13rAyUZVimaxqF","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2itXMak3r7xwrgGEcYphu_","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":3.812000000000002,"valueType":"number"},{"id":"2","name":"Area","value":1.695800000000679,"valueType":"number"},{"id":"3","name":"Volume","value":0.2102792000000842,"valueType":"number"}]},{"id":"2j8lDB2jXEK9rbk1HlJDUd","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Assembly Code","value":"","valueType":"string"},{"id":"2","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"3","name":"Assembly Description","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.25.30.11.14.14","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Beams","valueType":"string"}]},{"id":"2jau$7tsL5whM2BPhVFBX7","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":3.791499999999996,"valueType":"number"},{"id":"2","name":"Area","value":10.01448500000069,"valueType":"number"},{"id":"3","name":"Volume","value":1.241796140000085,"valueType":"number"}]},{"id":"2jk8fb869D8wWAzrfNUxht","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"2jmeLmf_r13vSrFXJx2Aj_","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Flush:0762 x 2032mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"2jplh4jvrDRh0pbqcxjuyk","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"B201","valueType":"string"},{"id":"2","name":"Name","value":"Hallway","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-51 24 11: General Residential Space","valueType":"string"}]},{"id":"2kLoqy4_90vvaGda0hZ$Yi","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":7.198000000000058,"valueType":"number"},{"id":"2","name":"Area","value":3.176448000000047,"valueType":"number"},{"id":"3","name":"Volume","value":0.1810575360000028,"valueType":"number"}]},{"id":"2kula8xtn2$xbtX1g8hURJ","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.191499999999984,"valueType":"number"},{"id":"2","name":"Area","value":11.74179500000078,"valueType":"number"},{"id":"3","name":"Volume","value":5.788704935000469,"valueType":"number"}]},{"id":"2kyAGyz051Ogo2HHnhzySf","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"A203","valueType":"string"}]},{"id":"2lMXpzhPn96BfDhcusjjtw","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Level 2","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"2lTHl$xTr4af_Q2wVbfdvg","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2litlPRcf9dvDN05YXljxI","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Leg Material","value":"Metal - Chrome","valueType":"string"},{"id":"2","name":"Mattress Material","value":"Textile - White","valueType":"string"}]},{"id":"2mEpBD4wHDgf7QeVRnEBkQ","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"2mF3tsBKPCBwhmSrCbRpmZ","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2mHadkJlT9Tx0H5pgjJVqz","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2mPW9z8hv1ZwOHbAjgajnj","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"2mUmINkRL5oPuZwok5DDo9","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2mskqiPpn70BAkYIGXRumF","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"2mtvZkhvL3nQaY3PgMwZ9g","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":17.38299999999997,"valueType":"number"},{"id":"2","name":"Area","value":38.40620000000008,"valueType":"number"},{"id":"3","name":"Volume","value":25.83011720000005,"valueType":"number"}]},{"id":"2mxcPWIkD9IBiYtrRyreeM","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Eccentricity","value":0.0,"valueType":"number"},{"id":"2","name":"Eccentricity","value":0.0,"valueType":"number"}]},{"id":"2n$WFwxwLBNuc9PD2RDEb3","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":0.0,"valueType":"number"},{"id":"2","name":"Location Line","value":0.0,"valueType":"number"},{"id":"3","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"10","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"11","name":"Unconnected Height","value":2.795000000000196,"valueType":"number"},{"id":"12","name":"Top Offset","value":-0.3050000000000001,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2nGIYzMrr0CRthPbudKuLS","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Counter Thickness","value":0.04,"valueType":"number"},{"id":"2","name":"Depth","value":0.625,"valueType":"number"},{"id":"3","name":"Height","value":0.8999999999999999,"valueType":"number"}]},{"id":"2nJJvIXr9FhfKSCVwHNuub","name":"Pset_StairFlightCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Stair:Residential - 200mm Max Riser 250mm Tread","valueType":"string"},{"id":"2","name":"NumberOfRiser","value":16.0,"valueType":"number"},{"id":"3","name":"NumberOfTreads","value":15.0,"valueType":"number"},{"id":"4","name":"RiserHeight","value":0.1937500000000122,"valueType":"number"},{"id":"5","name":"TreadLength","value":0.25,"valueType":"number"},{"id":"6","name":"NosingLength","value":0.01,"valueType":"number"},{"id":"7","name":"TreadLengthAtInnerSide","value":0.25,"valueType":"number"},{"id":"8","name":"TreadLengthAtOffset","value":0.25,"valueType":"number"},{"id":"9","name":"WalkingLineOffset","value":0.4571999999999999,"valueType":"number"},{"id":"10","name":"WaistThickness","value":0.9143999999999999,"valueType":"number"}]},{"id":"2nV$LtKG1ELwZXnN7iF1p5","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.510000000000005,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2nYTWmT9D18P64x1ou1D50","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"2nkwB1d6fDIhpiGMSEjQKr","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"A103","valueType":"string"},{"id":"2","name":"Name","value":"Kitchen","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-11 19 11 11: Kitchen","valueType":"string"}]},{"id":"2nw2UkJY9BPQGjri2aAo2M","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension Calculation","value":3.0,"valueType":"number"},{"id":"2","name":"End Extension Calculation","value":3.0,"valueType":"number"},{"id":"3","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"4","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"5","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"6","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"7","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"8","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2o3gYTfDr1mOrx5j6jSOkL","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"2o3vIZvhjERwg9AXmF8Xmc","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":17.38299999999997,"valueType":"number"},{"id":"2","name":"Area","value":41.35713700000018,"valueType":"number"},{"id":"3","name":"Volume","value":16.74164802900007,"valueType":"number"}]},{"id":"2oH4QamCTFoBTao5BcDOij","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Eccentricity","value":0.0,"valueType":"number"},{"id":"2","name":"Eccentricity","value":0.0,"valueType":"number"}]},{"id":"2oK0OpVp10SelAecEi5aNv","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2oh69zaf95uvVPWfFVj7mE","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Service Distribution Spaces","valueType":"string"},{"id":"6","name":"Category Code","value":"13-81 31","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit A CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit A FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit A HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit A LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit A OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit A VentilationZoneName","valueType":"string"}]},{"id":"2omOjeeyP2gxa7UE0z_s7r","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2oq$fvFxf50h20edfdRClM","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"2p4gHVrqfA0wBhsC$z89$w","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"23","valueType":"string"}]},{"id":"2pDC46u6P6YRL39xsqF4Fh","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Door Material","value":"Door - Panel","valueType":"string"},{"id":"2","name":"Frame Material","value":"Door - Frame","valueType":"string"}]},{"id":"2pfD0NCe976ubfWpODukMb","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Enable Analytical Model","value":"True","valueType":"boolean"},{"id":"2","name":"Enable Analytical Model","value":"True","valueType":"boolean"}]},{"id":"2pfqKVxUXDnfB661DnIWDm","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"13","valueType":"string"}]},{"id":"2q6TVAfqz1RBwldp9yGgYm","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Thickness","value":0.057,"valueType":"number"}]},{"id":"2qv3RPSj5Ebvk0pHB8jRxR","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Frame Exterior Material","value":"Sash","valueType":"string"},{"id":"2","name":"Frame Interior Material","value":"Sash","valueType":"string"},{"id":"3","name":"Glass Pane Material","value":"Glass","valueType":"string"},{"id":"4","name":"Sash","value":"Sash","valueType":"string"}]},{"id":"2r4i1jjDP0ifoGeLnEpo3O","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2r676IXj9CtvRkFvwvGOxr","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2rHbV6A2LFmBUF0bAOfCyD","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2rS3kRE01A09hyYmAdwyrs","name":"PSet_Revit_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Beam Material","value":"Metal - Steel - 345 MPa","valueType":"string"}]},{"id":"2rcKCODjTE3O9$KykhVu15","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.019,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2rlnqs_qj4meLQViXFBMuY","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"2rmSS2cCH1fOj4a5EMohWD","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2s9I2wQ8X7r8n8flgSODAv","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Analyze As","value":4.0,"valueType":"number"}]},{"id":"2sGr5uvyv3GxxdWXDswK$U","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":41.96200000000001,"valueType":"number"},{"id":"2","name":"Area","value":47.15012874054669,"valueType":"number"},{"id":"3","name":"Volume","value":0.8958524460703874,"valueType":"number"},{"id":"4","name":"Thickness","value":0.019,"valueType":"number"}]},{"id":"2sHWRICUHAygdOAP830UEQ","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"2","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"2sSup2ZDnAyR1f5aKiQ$m4","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Level : Level 1","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"2sbbanN45BZPIwZPukgXPD","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Door Material","value":"Door - Panel","valueType":"string"},{"id":"2","name":"Frame Material","value":"Door - Frame","valueType":"string"}]},{"id":"2sglbZXvn2sh0lTvo$SB66","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"Type Mark","value":"28","valueType":"string"},{"id":"5","name":"Fire Rating","value":"Fire Rating","valueType":"string"},{"id":"6","name":"OmniClass Number","value":"23.30.10.00","valueType":"string"},{"id":"7","name":"OmniClass Title","value":"Doors","valueType":"string"}]},{"id":"2skqsja5H6TvN9U_n3$81H","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2srZQjrbD2ZBnR9Jr89_wV","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":19.91399999999999,"valueType":"number"},{"id":"2","name":"Area","value":22.04323199999996,"valueType":"number"},{"id":"3","name":"Volume","value":0.4188214079999995,"valueType":"number"},{"id":"4","name":"Thickness","value":0.019,"valueType":"number"}]},{"id":"2sulX7fVbB7Or1zam81xk7","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":17.38299999999997,"valueType":"number"},{"id":"2","name":"Area","value":41.35713700000017,"valueType":"number"},{"id":"3","name":"Volume","value":16.74164802900009,"valueType":"number"}]},{"id":"2tH$MCLWb9sw2TcT2EmhNG","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"},{"id":"2","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"2tKS5w3O57YfrKHScdY68X","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2u9EU14af4DBvTYdjTmQ0M","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.795000000000196,"valueType":"number"},{"id":"11","name":"Top Offset","value":-0.3050000000000001,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2uPCB6wmj7vuW6P4VpIuQt","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2uRuaEWSjCXg1gs6Dvzw9V","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"2uTHelKaP6OgA8oRYP_8Dq","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Casement:819mm x 759mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"2uU476nZ93zvRQ_U7SL3FO","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"2uUqKqSc52MwcvKYpCvwFF","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":3.791499999999991,"valueType":"number"},{"id":"2","name":"Area","value":10.01448500000068,"valueType":"number"},{"id":"3","name":"Volume","value":1.241796140000083,"valueType":"number"}]},{"id":"2uqzvLRI55thI4WSDll9yu","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.74434284833011,"valueType":"number"}]},{"id":"2v2CmD6R14S9suci2IlKtj","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:819mm x 759mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"2vETF4W29E39o21kPg72mS","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2vGinuHIzD2e1SuJ9pnesw","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":0.0,"valueType":"number"},{"id":"2","name":"Location Line","value":0.0,"valueType":"number"},{"id":"3","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"10","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"11","name":"Unconnected Height","value":2.795000000000196,"valueType":"number"},{"id":"12","name":"Top Offset","value":-0.3050000000000002,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2vGobZfeX2NfemSwKYZzNz","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"2wBqriQVz169QfNcj5YFDA","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2wHo8pLzr9nAANq3s4ysR6","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2wPgChCCHBxBYriCL3Jt4L","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"Type Mark","value":"32","valueType":"string"},{"id":"5","name":"Fire Rating","value":"Fire Rating","valueType":"string"},{"id":"6","name":"OmniClass Number","value":"23.30.10.00","valueType":"string"},{"id":"7","name":"OmniClass Title","value":"Doors","valueType":"string"}]},{"id":"2wZNFXA3HBoxamcc0ItDz1","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Wood","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"2w_jzSQ3b4wx0JtO27S7bf","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"2wq1UPxwrBCR7vlmiprk2R","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"NONFIXED","valueType":"string"}]},{"id":"2x4C6gM617TgKG6LjADy$g","name":"PSet_Revit_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Beam Material","value":"Metal - Steel - 345 MPa","valueType":"string"}]},{"id":"2xFnz_l0P2MPgRUPKDWEl4","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"2xdv1GBTr3KQG$rGaRWwQy","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"2y8Z$8Ci9Eig8aKdONYPGj","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"2yHf4Tzn1FVe09k6qFdrVn","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.795000000000196,"valueType":"number"},{"id":"11","name":"Top Offset","value":-0.3050000000000001,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2yyDeySSr3xRgS1ZzNxmad","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.795000000000196,"valueType":"number"},{"id":"11","name":"Top Offset","value":-0.3050000000000001,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2z$k983KDA0hkQqMXaW49y","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2zAYaCRDn7vR7eUmgxOORQ","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"2zeOl6NF1DxvBtppWgmc05","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"10","name":"Unconnected Height","value":3.100000000000196,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"2ztR25CKf3VPe4RO59MeHG","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"3$Oz8JotX2uBXMJw5ifOaY","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"3$Yet0MQjATOlDMtrdGu_X","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3$ai7p4Lv5FeENOrdB54Oj","name":"Pset_RailingCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Railing:1100mm Guard Rail","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"Height","value":1.1,"valueType":"number"}]},{"id":"3$dvxTby5AkwVGNjAtLRoD","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"30UxBbob57hhngGnLFrUM3","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.485499999999999,"valueType":"number"},{"id":"2","name":"Area","value":11.74179500000082,"valueType":"number"},{"id":"3","name":"Volume","value":1.784752840000126,"valueType":"number"}]},{"id":"30iKU1NlPBNRicyb1FsUQC","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Eccentricity","value":0.0,"valueType":"number"},{"id":"2","name":"Eccentricity","value":0.0,"valueType":"number"}]},{"id":"31$drkS3r7kPenjFa8USE0","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Automatic Room Computation Height","value":"True","valueType":"boolean"}]},{"id":"31RVS$hM5EMudW7sCOtF1h","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":1.72839494131539,"valueType":"number"},{"id":"2","name":"Perimeter","value":5.403897642978801,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":2.900000000000012,"valueType":"number"},{"id":"4","name":"Volume","value":3.611208832218263,"valueType":"number"}]},{"id":"31YSs6mK1ABvdOpqumRO4P","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"31cY$XpW9ApPotBOg2toW8","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Bedroom","valueType":"string"},{"id":"6","name":"Category Code","value":"13-51 21 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit A CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit A FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit A HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit A LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit A OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit A VentilationZoneName","valueType":"string"}]},{"id":"31oc8ALez8nh$Neq0rgW40","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"32_XLRoCL7uQDv52cwU_7R","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"32oWTITZP2SBDJCULH6fL8","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.20.17.14.11","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Beds","valueType":"string"}]},{"id":"32xuOpUer6KxM22x5xQD$G","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"331HYCPdzER9kcqrnQLvGc","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"33A2jmdjbCRO4wkSF$VIoV","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"33Z2A5uGP6BhMJTKqZjMhY","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"33q20cZjbDqvfjoe1zqpUt","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3489mDFJL8FfgUrmZa5Y6R","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"34C5uYewf4ugLBq78r$GnQ","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.35.17.47.14","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Bathroom Casework","valueType":"string"}]},{"id":"34P7uY6sr4Hfsz2zlg$O8_","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":0.0,"valueType":"number"},{"id":"2","name":"Location Line","value":0.0,"valueType":"number"},{"id":"3","name":"Base Constraint","value":"T/FDN","valueType":"string"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"10","name":"Top Constraint","value":"Up to level: Level 1","valueType":"string"},{"id":"11","name":"Unconnected Height","value":1.123,"valueType":"number"},{"id":"12","name":"Top Offset","value":-0.127,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"34cJVVfDDCDekcYY0V5UwB","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Analyze As","value":4.0,"valueType":"number"}]},{"id":"34he9PLU5F9RlfNc3WOLRY","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":43.39679999999991,"valueType":"number"},{"id":"2","name":"Area","value":59.33374759999967,"valueType":"number"},{"id":"3","name":"Volume","value":18.09679301799989,"valueType":"number"},{"id":"4","name":"Thickness","value":0.3050000000000001,"valueType":"number"}]},{"id":"35QATQQLr2jvTt9F9nUWeI","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.51,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"35k76CwiT959LdMZlH9oOk","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"368pPxvP14N8a7FhHe0E3y","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Foundation - Concrete (417mm)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"36DEJvnKzAWPN3DQfhgAjF","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"36I6aGlFP4QxUnrIDooWqf","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Host","value":"Floor : Residential - Wood Joist with Subflooring","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"36dn4d9KjBmvb4xadCUJln","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Category","value":"Floor","valueType":"string"}]},{"id":"36hVNX0OXFBuXN_5EcP6Lj","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"36nb$0tNj5Vh2AKFwLLs2i","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"36qLW5RA9A$9OrIobhK8lg","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Eccentricity","value":0.0,"valueType":"number"},{"id":"2","name":"Eccentricity","value":0.0,"valueType":"number"}]},{"id":"36yAO_C758Tx_4mRcd$1m1","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"36z5G5XajDpPlHwGhLsnkv","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":22.85840924999979,"valueType":"number"},{"id":"2","name":"Perimeter","value":24.21599999999996,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":3.100000000000196,"valueType":"number"},{"id":"4","name":"Volume","value":51.84746790200018,"valueType":"number"}]},{"id":"37B0lHC8fCyRcl2wm6y9i3","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"37Py5gLzD4WuXdn2XRwdih","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"37WtIuW3TA0OX5bIfF9SH7","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":3.812000000000002,"valueType":"number"},{"id":"2","name":"Area","value":1.69580000000068,"valueType":"number"},{"id":"3","name":"Volume","value":0.2102792000000843,"valueType":"number"}]},{"id":"37Y8Ykn0bFSwqyIQUQ9UWu","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Level : Level 1","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"37te6FMU53bvzYTgjYhKug","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"A205","valueType":"string"},{"id":"2","name":"Name","value":"Utility","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-81 31: Service Distribution Spaces","valueType":"string"}]},{"id":"37ufZqmE5DTOjt4YV3pGAB","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"38NdU4LQr0jvfP7OIbJBn2","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"38TDddD757tBmTbmyAQOHN","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":11.36800000000005,"valueType":"number"},{"id":"2","name":"Area","value":6.339840000000071,"valueType":"number"},{"id":"3","name":"Volume","value":0.08241791999999936,"valueType":"number"},{"id":"4","name":"Thickness","value":0.013,"valueType":"number"}]},{"id":"38eDrwUj17sP$RwXLDTK0a","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.35.17.47.11","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Kitchen Casework","valueType":"string"}]},{"id":"38uKGTWSn19wK5CCFXtCp7","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.35.17.47.11","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Kitchen Casework","valueType":"string"}]},{"id":"38yiDyjE96agi5R_U9EOXf","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.51,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"39IxHMEov73ffaJ2t2TM$w","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"39K21YEcz9E9K0dSx5g0ru","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Ceramic Tile","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"39jTRe_CzEmRj1oj_u8EdV","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Backsplash Visibility","value":"False","valueType":"boolean"}]},{"id":"39rOEfTYX4XuIA7KuxRmuu","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Level 2","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"3A6hVqHJTD0f3lVQ3LWQ_5","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Area","value":"Area","valueType":"string"},{"id":"4","name":"Color","value":"Color","valueType":"string"},{"id":"5","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"6","name":"Features","value":"Features","valueType":"string"},{"id":"7","name":"Finish","value":"Finish","valueType":"string"},{"id":"8","name":"Grade","value":"Grade","valueType":"string"},{"id":"9","name":"Material","value":"Material","valueType":"string"},{"id":"10","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"11","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"12","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"13","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"14","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"15","name":"Reference","value":"Reference","valueType":"string"},{"id":"16","name":"Shape","value":"Shape","valueType":"string"},{"id":"17","name":"Size","value":"Size","valueType":"string"},{"id":"18","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"19","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"20","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"21","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"22","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"23","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"24","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"25","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"26","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"27","name":"AssetAccountingType","value":"NONFIXED","valueType":"string"}]},{"id":"3ABqrxcarEvhP8TO1qHGe0","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":3.997752000000053,"valueType":"number"},{"id":"2","name":"Perimeter","value":8.204000000000069,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":3.100000000000196,"valueType":"number"},{"id":"4","name":"Volume","value":8.177444912000123,"valueType":"number"}]},{"id":"3AdGhQKqL8bfZdc5_bEUrZ","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":8.382999999999973,"valueType":"number"},{"id":"2","name":"Area","value":16.90713700000003,"valueType":"number"},{"id":"3","name":"Volume","value":6.54599802900002,"valueType":"number"}]},{"id":"3ApGkUzDzBWuP5s9esvFXt","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":2.007,"valueType":"number"},{"id":"2","name":"Width","value":1.525,"valueType":"number"}]},{"id":"3B0c7k_bf7bhml84UX2wTW","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3B2M9jBDX2FvSslfP2RDGK","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":-0.488,"valueType":"number"},{"id":"4","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"9","name":"Unconnected Height","value":3.388000000000011,"valueType":"number"},{"id":"10","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3BhpdonIXCGOz5OSrvsfQV","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3BwNDHxXj2MQfjwMSctxQR","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Partition (92mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"3CBLfEDP986O8174nwM4ZR","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"3CIe8RuUn1RxHiKCejMsf4","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"3Cf5IwhAzEfgCJTEATNMwh","name":"PSet_Revit_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Beam Material","value":"Metal - Steel - 345 MPa","valueType":"string"}]},{"id":"3Cjn7hogj1BBNH1Oc0VJl3","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Bathroom","valueType":"string"},{"id":"6","name":"Category Code","value":"13-41 11 14 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit A CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit A FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit A HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit A LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit A OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit A VentilationZoneName","valueType":"string"}]},{"id":"3CubpNf3rBIhWv7BxWDCIP","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3D1zFb00vEzwBomv_7S4_A","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Roof","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":0.6090000000000002,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.609,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3DA4cdNbzDSx3tbUR5k0Fh","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Base Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Top Level","value":"Level 2","valueType":"string"},{"id":"5","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Top Offset","value":0.0,"valueType":"number"}]},{"id":"3Dmd6jt5rChAIY3$n$RUXe","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":43.45679999999997,"valueType":"number"},{"id":"2","name":"Area","value":59.22901759999958,"valueType":"number"},{"id":"3","name":"Volume","value":18.06485036799987,"valueType":"number"},{"id":"4","name":"Thickness","value":0.3050000000000001,"valueType":"number"}]},{"id":"3E4N1gKfLE7PC4oQw6MZwS","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Base Level","value":"Roof","valueType":"string"},{"id":"2","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"5","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"6","name":"Base Offset From Level","value":0.0,"valueType":"number"},{"id":"7","name":"Cutoff Offset","value":0.0,"valueType":"number"}]},{"id":"3E6rwjevv8APNLus2QgRj_","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Elevation","value":3.100000000000196,"valueType":"number"}]},{"id":"3ESqAQXcL90PoMrhesDR9M","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"3EbnoT3g11Z9NEM5OFApf7","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3EbuoMQ8H6RPCMUZJf3j2d","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.3,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3F0oKJKMbCH9nMBiR1oALF","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Roof","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":0.6090000000000002,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.609,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3FJZ4tvBn5hwNzIu0bkNga","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"3FZpJW8R5FlB_sOGMonnLQ","name":"PSet_Revit_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Beam Material","value":"Metal - Steel - 345 MPa","valueType":"string"}]},{"id":"3G8UFXwwr32fu9wn9Hho9o","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"2","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"3","name":"Cut Length","value":4.121279928630351,"valueType":"number"},{"id":"4","name":"Structural Usage","value":6.0,"valueType":"number"}]},{"id":"3GM4sfIzH39fnTTAp9_Ztm","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3GaJOaRBrF1glDNZ_rFoi_","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Exterior - Brick on Block","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"3GdTU8k5H9Ovq5Tck7zSvp","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3H44tKo9D6vRXRBgl7q17K","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":3.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3HSwZo0Zv2UQdX0MgZfktK","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Level 2","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"3Hbg6aG654aueMr6SMmUNz","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3Hn02wh11DNPLyUBQPpWRS","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3HrF$kxa53RxyWQIWw20tm","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Top Material","value":"Metal - Chrome","valueType":"string"},{"id":"2","name":"Frame Material","value":"Wood - Teak","valueType":"string"}]},{"id":"3I$l7qhBj0U9XPvGJIo$P8","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Flush:0864 x 2032mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"3I0bCWsYXA$uUZOH4IP0qA","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.1915,"valueType":"number"},{"id":"2","name":"Area","value":11.74179500000083,"valueType":"number"},{"id":"3","name":"Volume","value":5.788704935000408,"valueType":"number"}]},{"id":"3IAJwCRn59DBai4484bCXB","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"3IEt1nONXFwR5oSobfKg4U","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension","value":-0.0127,"valueType":"number"},{"id":"2","name":"End Extension","value":-0.0127,"valueType":"number"}]},{"id":"3IFNCnHJL9Cfky5FM6yB30","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":1.0,"valueType":"number"},{"id":"2","name":"Length","value":1.0,"valueType":"number"}]},{"id":"3IVcAbIqrDfhv90nNz20QK","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Furring (152 mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"3IhT6zOwHE7vIP$JmOl978","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"B104","valueType":"string"},{"id":"2","name":"Name","value":"Bathroom 1","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-41 11 14 11: Bathroom","valueType":"string"}]},{"id":"3Iu8VsbAz3WeB41OPPUn2U","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"3IurLSAGf57xWS9EoA3tBE","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3J2Y0mVW19AhWSrtusc8vr","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Exterior - Brick on Block","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"3J69IB6A9FIhn4pkGTAeYd","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3JLt_8GU18Cg10xqr$ZKlu","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3KDJ$aGVbFZOgT76n11p34","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3KQQOeB1D5deRu$LZeo10a","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Backsplash Visibility","value":"False","valueType":"boolean"},{"id":"2","name":"Backsplash Visibility","value":"False","valueType":"boolean"}]},{"id":"3KYJMSocf7EAw169T4Ks$A","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"},{"id":"2","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"3KgxvVR5DAzgOQrq0OniMT","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Level : Level 1","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"3Ki0SCkeX2XPg_r3O7VvUI","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Flush:0762 x 2032mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"3KucQXYNPCfhzuUaM3$dZi","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"2","name":"Stick Symbol Location","value":0.0,"valueType":"number"},{"id":"3","name":"Cut Length","value":7.421299999999966,"valueType":"number"},{"id":"4","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"3L4hCgfT56u8e34m50Sv$M","name":"Pset_DoorCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Single-Flush:1250mm x 2010mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"Fire Rating","valueType":"string"}]},{"id":"3L9nBCVmPAHvQSvjSGkuZj","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":5.441473058684558,"valueType":"number"},{"id":"2","name":"Perimeter","value":9.872102357021149,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":2.900000000000012,"valueType":"number"},{"id":"4","name":"Volume","value":12.30107633578161,"valueType":"number"}]},{"id":"3LP223XmbBSgtBGW9MAe8d","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":14.52999999999998,"valueType":"number"},{"id":"2","name":"Area","value":10.41449999999997,"valueType":"number"},{"id":"3","name":"Volume","value":0.5936264999999985,"valueType":"number"}]},{"id":"3Ly7zT9PL9m8JaNzXp2Dtl","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":0.0,"valueType":"number"},{"id":"2","name":"Location Line","value":0.0,"valueType":"number"},{"id":"3","name":"Base Constraint","value":"T/FDN","valueType":"string"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"10","name":"Top Constraint","value":"Up to level: Level 1","valueType":"string"},{"id":"11","name":"Unconnected Height","value":1.25,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"21","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3M58moIdv08wp_pljhqtud","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"3MLYX138XEcOfxBGDel6DW","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"3MTKRtKlD8RPLOB9MH28Ru","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3MVzF5gd9F1P1rCJEa_ynN","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3MZyP1fhrCQPi8y44JuxxO","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Release","value":3.0,"valueType":"number"},{"id":"2","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"3","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"4","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"5","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"6","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"7","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"8","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"9","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"10","name":"Start My","value":"True","valueType":"boolean"},{"id":"11","name":"Start My","value":"True","valueType":"boolean"},{"id":"12","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"13","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"14","name":"End Release","value":1.0,"valueType":"number"},{"id":"15","name":"End Fx","value":"False","valueType":"boolean"},{"id":"16","name":"End Fx","value":"False","valueType":"boolean"},{"id":"17","name":"End Fy","value":"False","valueType":"boolean"},{"id":"18","name":"End Fy","value":"False","valueType":"boolean"},{"id":"19","name":"End Fz","value":"False","valueType":"boolean"},{"id":"20","name":"End Fz","value":"False","valueType":"boolean"},{"id":"21","name":"End Mx","value":"True","valueType":"boolean"},{"id":"22","name":"End Mx","value":"True","valueType":"boolean"},{"id":"23","name":"End My","value":"True","valueType":"boolean"},{"id":"24","name":"End My","value":"True","valueType":"boolean"},{"id":"25","name":"End Mz","value":"True","valueType":"boolean"},{"id":"26","name":"End Mz","value":"True","valueType":"boolean"},{"id":"27","name":"Analyze As","value":1.0,"valueType":"number"}]},{"id":"3N8oZ$4xL5SwIC0KB9g24E","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3NAHROjWn88x5UM71J_mhl","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"3NPl3eiOH7eO3Vn6GaH$E9","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"3Ni2vAihXF$eMCDloDunOE","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"3NxHAQ5G54ZPZ2dA944YPY","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"B102","valueType":"string"}]},{"id":"3O57pDRNnB9fmLRYddi72Y","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3OUqCooR5BKx3dBgZ0TLBp","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"3ObeoJXHn9qxxyqlf3ckBN","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3OeR_LXn1729uYER_r8f1V","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3Oh8pteXH1s9UUm8JBRPSV","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Railing Height","value":1.1,"valueType":"number"},{"id":"2","name":"Baluster Offset","value":-0.025,"valueType":"number"},{"id":"3","name":"Use Landing Height Adjustment","value":0.0,"valueType":"number"},{"id":"4","name":"Use Landing Height Adjustment","value":0.0,"valueType":"number"},{"id":"5","name":"Landing Height Adjustment","value":0.0,"valueType":"number"},{"id":"6","name":"Landing Height Adjustment","value":0.0,"valueType":"number"},{"id":"7","name":"Angled Joins","value":0.0,"valueType":"number"},{"id":"8","name":"Angled Joins","value":0.0,"valueType":"number"},{"id":"9","name":"Tangent Joins","value":2.0,"valueType":"number"},{"id":"10","name":"Rail Connections","value":0.0,"valueType":"number"},{"id":"11","name":"Rail Connections","value":0.0,"valueType":"number"}]},{"id":"3OpgVDDRf46vZLSrMWZpFc","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Handle Material","value":"Cabinets - Handles","valueType":"string"},{"id":"2","name":"Finish","value":"Finish","valueType":"string"}]},{"id":"3P06EXNaT6juyZj17UuFfm","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3P4KdLXDjFceP4lo2XadPP","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Service Distribution Spaces","valueType":"string"},{"id":"6","name":"Category Code","value":"13-81 31","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit B CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit B FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit B HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit B LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit B OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit B VentilationZoneName","valueType":"string"}]},{"id":"3PD7czV8P3hgAxB4KkEf37","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"bf","value":0.203,"valueType":"number"},{"id":"2","name":"d","value":0.303,"valueType":"number"},{"id":"3","name":"k","value":0.033,"valueType":"number"},{"id":"4","name":"kr","value":0.0199,"valueType":"number"},{"id":"5","name":"tf","value":0.0131,"valueType":"number"},{"id":"6","name":"tw","value":0.0075,"valueType":"number"}]},{"id":"3PLri_6Cr8HwFa4st5zie6","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"B102","valueType":"string"},{"id":"2","name":"Name","value":"Living Room","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-51 24: Living Spaces","valueType":"string"}]},{"id":"3Pe4_s2AH6886Gz1pVy038","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3QBCwtflf9Aw6lOXf4RMzu","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Elevation","value":6.000000000000207,"valueType":"number"}]},{"id":"3QSktcYG16FQtMLw$RQK7u","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"A202","valueType":"string"},{"id":"2","name":"Name","value":"Bedroom 1","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-51 21 11: Bedroom","valueType":"string"}]},{"id":"3QWDABWQXEnxERtMCfgr4B","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"3QYmzhKgX6ZvHsGly2TAOD","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Default Thickness","value":0.013,"valueType":"number"},{"id":"2","name":"Function","value":0.0,"valueType":"number"},{"id":"3","name":"Function","value":0.0,"valueType":"number"}]},{"id":"3R5eufZxTFDe7yj5qkozue","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"General Residential Space","valueType":"string"},{"id":"6","name":"Category Code","value":"13-51 24 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit A CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit A FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit A HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit A LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit A OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit A VentilationZoneName","valueType":"string"}]},{"id":"3RBmZ40zT3efH7WM5Zj$Hn","name":"Pset_BeamCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_W-Wide Flange:W410X60","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"6","name":"Span","value":4.100000000000001,"valueType":"number"},{"id":"7","name":"Slope","value":0.0,"valueType":"number"}]},{"id":"3RKFlAXKn9JxWx1o8eU6ja","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3RLnu2Ihr0AfqbD33VW64L","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3RSUFpvQv0LPhE7W_qZ_Ao","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.12127992863035,"valueType":"number"},{"id":"2","name":"Volume","value":0.03088314084758592,"valueType":"number"}]},{"id":"3RYQKVnLz2iuGaAXNoTmg$","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"A202","valueType":"string"}]},{"id":"3RxUy8ntX3veOzyE3YEZOK","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Area","value":1.754048598688885,"valueType":"number"},{"id":"2","name":"Perimeter","value":5.434768470143076,"valueType":"number"},{"id":"3","name":"Unbounded Height","value":2.900000000000012,"valueType":"number"},{"id":"4","name":"Volume","value":3.672064308582197,"valueType":"number"}]},{"id":"3SIbFNlTfDRABzWXoYlGGm","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":2.235499999999981,"valueType":"number"},{"id":"2","name":"Area","value":5.321883999999962,"valueType":"number"},{"id":"3","name":"Volume","value":0.659913615999995,"valueType":"number"}]},{"id":"3SVIStAa94LA7BH1fuSuKL","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Top Material","value":"Metal - Chrome","valueType":"string"},{"id":"2","name":"Frame Material","value":"Wood - Teak","valueType":"string"}]},{"id":"3SZL4iFz15je6D6EfBuVGO","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3SeHV5RL13M8NHjY_geoLI","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"10","name":"Unconnected Height","value":3.100000000000196,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3SmwF70onFJfZd3QJ7mroM","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"3Sx$oKjNH9FOS_aK1YU7_C","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3TMTL7qXr6Huu6v_PFIbPx","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Elevation","value":-1.25,"valueType":"number"}]},{"id":"3TW4qTBXzAAg7gwIi8X7Be","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"3Tdu8T2hr1kuAQcM9xCMQs","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":7.198000000000058,"valueType":"number"},{"id":"2","name":"Area","value":3.176448000000047,"valueType":"number"},{"id":"3","name":"Volume","value":0.1810575360000028,"valueType":"number"}]},{"id":"3TsbFW8ir9ohMOKmhbU$RX","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.032,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3UBgW5mOfE9Q5cxWMFoTaX","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"3UXPU$k8T7fexnhNKwkPZ2","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":0.0,"valueType":"number"},{"id":"2","name":"Location Line","value":0.0,"valueType":"number"},{"id":"3","name":"Base Constraint","value":"Level 2","valueType":"string"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"10","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"11","name":"Unconnected Height","value":2.900000000000012,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"21","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3Vvg5dLd17mQwANopsBlRc","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.01,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3WBSzTqGL9$AsrpY0I2Pmf","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3WIZA6lWH8igD9IaB50aHs","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"10","valueType":"string"}]},{"id":"3WJj6CpzbARf2kc9ZXd9O4","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"3WPLsGhj96sBfafCv2AQ1O","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"3WbrW6NND4Cx_usrAiLsW1","name":"Pset_CoveringCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Compound Ceiling:Gypsum Board","valueType":"string"},{"id":"2","name":"TotalThickness","value":0.057,"valueType":"number"}]},{"id":"3WrLFdcBr6JBrBZTT2QZdQ","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":2.2355,"valueType":"number"},{"id":"2","name":"Area","value":5.321884000000435,"valueType":"number"},{"id":"3","name":"Volume","value":0.6599136160000535,"valueType":"number"}]},{"id":"3XUgIgVjP8vQxY2O0aFnMV","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Finish","value":"Finish","valueType":"string"}]},{"id":"3XgmNmXDj9JfGqA93kaaBa","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"3XkiH0S4HEwxIL5QZOx$7y","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"3Xs0v_tk1BnAyM6V7zmZ0e","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"3Y0EjkfaD4pQT8L935Z2rf","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"3YY3SriMzDX80O0f2nPZei","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"3YZDKZ2Hv0iwJR9E24LdI$","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Exterior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Interior Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"4","name":"Structural Usage","value":1.0,"valueType":"number"}]},{"id":"3Yl2NrAcX3xwq9mXNmKOhr","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3Z0MhOvvXDCenHwokiLRWj","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":8.383000000000001,"valueType":"number"},{"id":"2","name":"Area","value":13.61184000000174,"valueType":"number"},{"id":"3","name":"Volume","value":5.676137280000731,"valueType":"number"}]},{"id":"3Z24zi7dL99QUK1PLuYfQ_","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3Ze$SfvKH3H9xcDI86E0n0","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":0.0,"valueType":"number"},{"id":"3","name":"Height Offset From Level","value":0.0,"valueType":"number"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"5","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"6","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"7","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3ZeJ4GCuTDbwpY4cer9IrC","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3Zh$JNdkb49f1HnW6y77hJ","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"},{"id":"2","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"3_Ag15_Pf6d8fYcRd8pIMV","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Wood","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"3_d2iINUTDIetK$F_EFwt0","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"B203","valueType":"string"},{"id":"2","name":"Name","value":"Bedroom 2","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-51 21 11: Bedroom","valueType":"string"}]},{"id":"3_eQsJ4PfErPw6$rZmahJD","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"B205","valueType":"string"},{"id":"2","name":"Name","value":"Utility","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-81 31: Service Distribution Spaces","valueType":"string"}]},{"id":"3_mjb9F3r6PwtlNpfgwlGX","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3_oZEAS45BBxZ1cdo$6JDj","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.3,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3_r5vuyLjBQR17OoxZz9kM","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.12127992863035,"valueType":"number"},{"id":"2","name":"Volume","value":0.03088314084758592,"valueType":"number"}]},{"id":"3a1N3Pcwv3CeOHvB9_j1ss","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Leg Material","value":"Metal - Chrome","valueType":"string"},{"id":"2","name":"Mattress Material","value":"Textile - White","valueType":"string"}]},{"id":"3aLkH1grj53gtkxE4s6Pin","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3acR82xND3DPk3V9j2d3ms","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"3aghO68TX4Wf1AzAe0Q71o","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3ah$c934bD6Q4ITXQcIucc","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3auARDRdPDzvZLjuzxyLCp","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Exterior - Brick on Block","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"3axvFjdOXEbQ8zfUp01OLd","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"2","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"3","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"3b6Wmo9NL4OwVQxrXtBKsL","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3bU2xtk89FzRz1DwtEte81","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"B101","valueType":"string"},{"id":"2","name":"Name","value":"Foyer","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-51 24 11: General Residential Space","valueType":"string"}]},{"id":"3bkLO$xov3SxAoFfUH5OHZ","name":"PSet_Revit_Type_Stringers","type":"IfcPropertySet","properties":[{"id":"1","name":"Trim Stringers at Top","value":1.0,"valueType":"number"},{"id":"2","name":"Right Stringer","value":1.0,"valueType":"number"},{"id":"3","name":"Left Stringer","value":1.0,"valueType":"number"},{"id":"4","name":"Middle Stringers","value":0.0,"valueType":"number"},{"id":"5","name":"Stringer Thickness","value":0.05,"valueType":"number"},{"id":"6","name":"Stringer Height","value":0.4,"valueType":"number"},{"id":"7","name":"Open Stringer Offset","value":0.0,"valueType":"number"},{"id":"8","name":"Stringer Carriage Height","value":0.152,"valueType":"number"},{"id":"9","name":"Landing Carriage Height","value":0.3075634918610404,"valueType":"number"}]},{"id":"3bqIHJnev9Cum1fUE1_lU6","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3bwrkBG9nBj9ysxS0FnDNB","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3cE$Jk$N1FGwLl4eJPIjIv","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:819mm x 759mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"3cSiD15qb6Eg5Uhoa3m93d","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Exterior - Brick on Block","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"3cXuWaga92mvO9k74Ufupb","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"2","name":"Wrapping at Inserts","value":0.0,"valueType":"number"},{"id":"3","name":"Wrapping at Ends","value":0.0,"valueType":"number"},{"id":"4","name":"Wrapping at Ends","value":0.0,"valueType":"number"},{"id":"5","name":"Width","value":0.152,"valueType":"number"},{"id":"6","name":"Function","value":0.0,"valueType":"number"},{"id":"7","name":"Function","value":0.0,"valueType":"number"}]},{"id":"3cXxZMF9nCowCqCuyQmzG7","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"},{"id":"4","name":"OmniClass Number","value":"23.40.35.17.47.11","valueType":"string"},{"id":"5","name":"OmniClass Title","value":"Kitchen Casework","valueType":"string"}]},{"id":"3ccZaAQSL5sRyUOrKwnA6H","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3chp9iWMHEmwqF_C4TAl9M","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3d3CUbBrj17u$pZa6BIz14","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Default Thickness","value":0.019,"valueType":"number"},{"id":"2","name":"Function","value":0.0,"valueType":"number"},{"id":"3","name":"Function","value":0.0,"valueType":"number"}]},{"id":"3d6JrsMor68wlOCd_2B7qE","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":2.032,"valueType":"number"},{"id":"2","name":"Width","value":1.981,"valueType":"number"}]},{"id":"3dLsfeHpr8qRyEiBZ$rXuH","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Level : Level 1","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"3dTjT43$v4MhxHMCSOkquX","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"2","name":"Rigid Links","value":0.0,"valueType":"number"},{"id":"3","name":"Horizontal Projection","value":"Default","valueType":"string"}]},{"id":"3dVGMOzD9BBe$acI10yeXy","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Sill Height","value":0.0,"valueType":"number"},{"id":"3","name":"Sill Height","value":0.0,"valueType":"number"}]},{"id":"3dVdLSDJDDuhfQUjGs60XR","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Level 2","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"3dZ6h9XjbDXPjBjbAa4L3b","name":"Pset_SlabCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Floor:Finish Floor - Wood","valueType":"string"},{"id":"2","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"4","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"5","name":"LoadBearing","value":"True","valueType":"boolean"}]},{"id":"3da1oOrzv7buDm1k09RdxK","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Foundation - Concrete (435mm)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"3dbs3lCLfFdvCt6PwiQqrh","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Bathroom","valueType":"string"},{"id":"6","name":"Category Code","value":"13-41 11 14 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit A CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit A FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit A HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit A LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit A OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit A VentilationZoneName","valueType":"string"}]},{"id":"3deE$MBxX1C88KyYGlQnJa","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"3duFHV2xXASfFn447dT5eJ","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"10","name":"Unconnected Height","value":2.795000000000196,"valueType":"number"},{"id":"11","name":"Top Offset","value":-0.3050000000000001,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3eC03wDYT9mPXkrKPGV_59","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3eIxFPwfP2$851KVFS4y1s","name":"PSet_Revit_Type_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":1.0,"valueType":"number"}]},{"id":"3eT0WPPJD2Gh8opb_2T7S_","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"3enAyhfsTCdQ2XTCUN_ey3","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3evaK1pPv2XgMwQeN1qTjf","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"3fFOTca4nDwugzDJfpf3kt","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"18","valueType":"string"}]},{"id":"3fYR3cSgTFL9Pibwm4ce7l","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"3fsBtmxYX4FRznLeiElMNp","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"3g8kc_vc5AIfWSvEmToW0W","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Release","value":3.0,"valueType":"number"},{"id":"2","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"3","name":"Start Fx","value":"False","valueType":"boolean"},{"id":"4","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"5","name":"Start Fy","value":"False","valueType":"boolean"},{"id":"6","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"7","name":"Start Fz","value":"False","valueType":"boolean"},{"id":"8","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"9","name":"Start Mx","value":"False","valueType":"boolean"},{"id":"10","name":"Start My","value":"True","valueType":"boolean"},{"id":"11","name":"Start My","value":"True","valueType":"boolean"},{"id":"12","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"13","name":"Start Mz","value":"True","valueType":"boolean"},{"id":"14","name":"End Release","value":1.0,"valueType":"number"},{"id":"15","name":"End Fx","value":"False","valueType":"boolean"},{"id":"16","name":"End Fx","value":"False","valueType":"boolean"},{"id":"17","name":"End Fy","value":"False","valueType":"boolean"},{"id":"18","name":"End Fy","value":"False","valueType":"boolean"},{"id":"19","name":"End Fz","value":"False","valueType":"boolean"},{"id":"20","name":"End Fz","value":"False","valueType":"boolean"},{"id":"21","name":"End Mx","value":"True","valueType":"boolean"},{"id":"22","name":"End Mx","value":"True","valueType":"boolean"},{"id":"23","name":"End My","value":"True","valueType":"boolean"},{"id":"24","name":"End My","value":"True","valueType":"boolean"},{"id":"25","name":"End Mz","value":"True","valueType":"boolean"},{"id":"26","name":"End Mz","value":"True","valueType":"boolean"},{"id":"27","name":"Analyze As","value":1.0,"valueType":"number"}]},{"id":"3gI5wBQZLEkQp$YQ1cfbj7","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"3gJ58s3Z575BBy49CtvvSA","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":8.382999999999976,"valueType":"number"},{"id":"2","name":"Width","value":0.9,"valueType":"number"},{"id":"3","name":"Volume","value":2.263409999999996,"valueType":"number"}]},{"id":"3gVLpqshrACRrVL54PanjE","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3gX2TXEAjBmP9M66vrzlQB","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"3gXB$2y6vEBBpKpx_r$U94","name":"Pset_StairFlightCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Stair:Residential - 200mm Max Riser 250mm Tread","valueType":"string"},{"id":"2","name":"NumberOfRiser","value":16.0,"valueType":"number"},{"id":"3","name":"NumberOfTreads","value":15.0,"valueType":"number"},{"id":"4","name":"RiserHeight","value":0.1937500000000122,"valueType":"number"},{"id":"5","name":"TreadLength","value":0.25,"valueType":"number"},{"id":"6","name":"NosingLength","value":0.01,"valueType":"number"},{"id":"7","name":"TreadLengthAtInnerSide","value":0.25,"valueType":"number"},{"id":"8","name":"TreadLengthAtOffset","value":0.25,"valueType":"number"},{"id":"9","name":"WalkingLineOffset","value":0.4572000000000001,"valueType":"number"},{"id":"10","name":"WaistThickness","value":0.9144000000000001,"valueType":"number"}]},{"id":"3gYPVIVuHFPh_Vz9rf72An","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Analyze As","value":4.0,"valueType":"number"}]},{"id":"3gbC49DG10J9jBdwLtAyo8","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3gj1Nx$UD72Pbc2_Qx1kLK","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.032,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3gjfUYZq9DwuASJKvf4DMe","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Roof","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"3gkLfFgUn4LQJjK_BvRq2k","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"3gt4Lmxuv3wfBSRTjFHJ6O","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3h8nA8udDAl8TdLbDZUZl6","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"3hO4RWJETCgBjyMX56lSGl","name":"PSet_Revit_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension","value":-0.0127,"valueType":"number"},{"id":"2","name":"End Extension","value":-0.0127,"valueType":"number"}]},{"id":"3hYDQ147H0C8OC5OZavzRR","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"3i4yjfyaP4EeJtaxFX2ug0","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3iXykSHG15Wg7kN3f8A87m","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Interior - Plumbing (152mm Stud)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"False","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"False","valueType":"boolean"}]},{"id":"3ijge2USbBuOUkjoPE5VGX","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"3iu8N4pPr0AQnsJml4Sv_W","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Enable Analytical Model","value":"True","valueType":"boolean"},{"id":"2","name":"Enable Analytical Model","value":"True","valueType":"boolean"}]},{"id":"3j$RlmNenAiQeF$t8qf2Ct","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3j04sY0EvEOvMZB3JJgasa","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3j9RfcjYTAnhrLBin80pAS","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Rebar Cover - Top Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"2","name":"Rebar Cover - Bottom Face","value":"Rebar Cover 1 <0.025>","valueType":"string"},{"id":"3","name":"Rebar Cover - Other Faces","value":"Rebar Cover 1 <0.025>","valueType":"string"}]},{"id":"3jO0PUICTCcBH1yf3yr5NO","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3jvRCXoNjD0xlDCe0i$3SH","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Thickness","value":0.051,"valueType":"number"},{"id":"2","name":"Height","value":2.01,"valueType":"number"},{"id":"3","name":"Trim Projection Ext","value":0.025,"valueType":"number"},{"id":"4","name":"Trim Projection Int","value":0.025,"valueType":"number"},{"id":"5","name":"Trim Width","value":0.076,"valueType":"number"},{"id":"6","name":"Width","value":1.25,"valueType":"number"}]},{"id":"3jyC8AI$j3rANxSQit8CQm","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"3k4$g56_vCMBD70O1kU3Ph","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3k47lSpQnCl8WO_A1l3P9M","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Category","value":"Site","valueType":"string"}]},{"id":"3kQudvGcDD7g2m4KL7OV2u","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"},{"id":"2","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"3lLboyYivE09eKSC62QNdh","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"3laasWzjP3FPQmOPfMD2nl","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3m2NL6H$HAdx64EEIgGTIi","name":"PSet_Revit_Type_Graphics","type":"IfcPropertySet","properties":[{"id":"1","name":"Coarse Scale Fill Pattern","value":"Concrete","valueType":"string"},{"id":"2","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"},{"id":"3","name":"Coarse Scale Fill Color","value":0.0,"valueType":"number"}]},{"id":"3mHArHTpj3z8i5dvI0fkSR","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"3mPQcW80P1Hx7pA$uIuy8Z","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"2","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"3mXmTdEb18eukGcgq7YQHM","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Level 1","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Level 2","valueType":"string"},{"id":"10","name":"Unconnected Height","value":3.100000000000196,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"12","name":"Top Offset","value":0.0,"valueType":"number"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"20","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3m_GJTMWLCtQUNdI3fu_k_","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"3mwPWj4d93p8pO$lR2sHSu","name":"PSet_Revit_Type_Construction","type":"IfcPropertySet","properties":[{"id":"1","name":"Function","value":1.0,"valueType":"number"},{"id":"2","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"3","name":"Wall Closure","value":0.0,"valueType":"number"},{"id":"4","name":"Construction Type","value":"Construction Type","valueType":"string"}]},{"id":"3n0ZdGOPj1P9VTieMb98aR","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"3n0qsC6Qn5Twn1s3B5jMTX","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3nHXF3hrvEdwkRXV8bZWTA","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"26","valueType":"string"}]},{"id":"3ndNMcysz9s9Y5d3YmM3rl","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3no5ELqnPAAx3pW35E6PlN","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"A102","valueType":"string"}]},{"id":"3npWwZ31P9hv3tqq5TW9SK","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Width","value":0.9,"valueType":"number"},{"id":"2","name":"Foundation Thickness","value":0.3,"valueType":"number"},{"id":"3","name":"Default End Extension Length","value":0.0,"valueType":"number"},{"id":"4","name":"Do Not Break At Inserts","value":"False","valueType":"boolean"}]},{"id":"3o1_2vZ3v4J8tlJR0NTDhU","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3ocS6JMxb1gAqlzltPIrag","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3oiCIpwxXAkuIQ7kgGp41d","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Height","value":0.759,"valueType":"number"},{"id":"2","name":"Default Sill Height","value":0.1,"valueType":"number"},{"id":"3","name":"Width","value":0.8190000000000001,"valueType":"number"},{"id":"4","name":"Window Inset","value":0.019,"valueType":"number"}]},{"id":"3okNp$QP5ANQ8jPUy7df3P","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"12","valueType":"string"}]},{"id":"3p0AajNxX27ehPQoPF$mbz","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3p2OzylWfEL8H3n8QABktP","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"3p6Zvfpiv7_xs5YmyI8aNM","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":6.181887120424957,"valueType":"number"},{"id":"2","name":"Volume","value":0.0463244656878742,"valueType":"number"}]},{"id":"3pLCAjnyfBy8piPlyIT6Hm","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Height Offset From Level","value":2.6,"valueType":"number"},{"id":"3","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"4","name":"Room Bounding","value":"True","valueType":"boolean"}]},{"id":"3pRGIV2yLAlxpKRlAKsQuP","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"3pYLcu4djDMfbo$L92IZ2u","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:819mm x 759mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"3pZNbS9XnEpgtjeGefYIJY","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3pb2tV6XP53QGhRS$354qi","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.74434284833011,"valueType":"number"}]},{"id":"3pbmnBkQbD_OtCI22Imy3F","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3qHBAkcyX7U8FxEv$i2Ezs","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3qMtIvgmnF9xaSMt3NU5l2","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference Level","value":"Level 2","valueType":"string"},{"id":"2","name":"Work Plane","value":"Level : Level 2","valueType":"string"},{"id":"3","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Start Level Offset","value":0.0,"valueType":"number"},{"id":"5","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"6","name":"End Level Offset","value":0.0,"valueType":"number"},{"id":"7","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"8","name":"z-Direction Justification","value":0.0,"valueType":"number"},{"id":"9","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"10","name":"z-Direction Offset Value","value":0.0,"valueType":"number"},{"id":"11","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"12","name":"Lateral Justification","value":0.0,"valueType":"number"},{"id":"13","name":"Orientation","value":0.0,"valueType":"number"},{"id":"14","name":"Orientation","value":0.0,"valueType":"number"},{"id":"15","name":"Cross-Section Rotation","value":0.0,"valueType":"number"}]},{"id":"3qUg1OfM14CAjwHz4Xb4Ra","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"3qfv_kEF58evU0PdP8wj6P","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3qibp2BP110wx$jHBHFO_X","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"3qiqDLnAH92xJJ55HmvSC6","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Party Wall - CMU Residential Unit Dimising Wall","valueType":"string"},{"id":"2","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"False","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"3qj_sptMP2oelmXEgCWp_q","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"3qx7Al0cv79xwmyCrdVM9Y","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3raM8W_SD00PI4ClqcpRF0","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.100000000000001,"valueType":"number"},{"id":"2","name":"Volume","value":0.0307236780000001,"valueType":"number"}]},{"id":"3s1d7RYnfFsRRdcPSy2BZP","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Perimeter","value":19.91399999999998,"valueType":"number"},{"id":"2","name":"Area","value":22.04323199999996,"valueType":"number"},{"id":"3","name":"Volume","value":1.256464223999998,"valueType":"number"}]},{"id":"3sHycTcDT8a80y2KS0rzEK","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3sLWmpDvvBnQp6QOEUhuQ_","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"ConfigurationType","value":"ConfigurationType","valueType":"string"},{"id":"4","name":"ConstructionType","value":"ConstructionType","valueType":"string"},{"id":"5","name":"FireRating","value":"FireRating","valueType":"string"},{"id":"6","name":"GlazingAreaFraction","value":"GlazingAreaFraction","valueType":"string"},{"id":"7","name":"OperationType","value":"OperationType","valueType":"string"},{"id":"8","name":"Area","value":"Area","valueType":"string"},{"id":"9","name":"Color","value":"Color","valueType":"string"},{"id":"10","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"11","name":"Features","value":"Features","valueType":"string"},{"id":"12","name":"Finish","value":"Finish","valueType":"string"},{"id":"13","name":"Grade","value":"Grade","valueType":"string"},{"id":"14","name":"Material","value":"Material","valueType":"string"},{"id":"15","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"16","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"17","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"18","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"19","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"20","name":"Reference","value":"Reference","valueType":"string"},{"id":"21","name":"Shape","value":"Shape","valueType":"string"},{"id":"22","name":"Size","value":"Size","valueType":"string"},{"id":"23","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"24","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"25","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"26","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"27","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"28","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"29","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"30","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"31","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"32","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"3sxi0VqZj1rf839LThsH7b","name":"Pset_WindowCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"M_Fixed:750mm x 2200mm","valueType":"string"},{"id":"2","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"3","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"4","name":"FireRating","value":"FireRating","valueType":"string"}]},{"id":"3tB0CxovT8LPCA8kyDK99W","name":"PSet_Revit_Type_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"AccessibilityPerformance","value":"AccessibilityPerformance","valueType":"string"},{"id":"2","name":"CodePerformance","value":"CodePerformance","valueType":"string"},{"id":"3","name":"Color","value":"Color","valueType":"string"},{"id":"4","name":"Constituents","value":"Constituents","valueType":"string"},{"id":"5","name":"Features","value":"Features","valueType":"string"},{"id":"6","name":"Finish","value":"Finish","valueType":"string"},{"id":"7","name":"Grade","value":"Grade","valueType":"string"},{"id":"8","name":"Material","value":"Material","valueType":"string"},{"id":"9","name":"ModelReference","value":"ModelReference","valueType":"string"},{"id":"10","name":"NominalHeight","value":"NominalHeight","valueType":"string"},{"id":"11","name":"NominalLength","value":"NominalLength","valueType":"string"},{"id":"12","name":"NominalWidth","value":"NominalWidth","valueType":"string"},{"id":"13","name":"ProductionYear","value":"ProductionYear","valueType":"string"},{"id":"14","name":"Reference","value":"Reference","valueType":"string"},{"id":"15","name":"Shape","value":"Shape","valueType":"string"},{"id":"16","name":"Size","value":"Size","valueType":"string"},{"id":"17","name":"SustainabilityPerformance","value":"SustainabilityPerformance","valueType":"string"},{"id":"18","name":"WarrantyDescription","value":"WarrantyDescription","valueType":"string"},{"id":"19","name":"WarrantyDurationLabor","value":"WarrantyDurationLabor","valueType":"string"},{"id":"20","name":"WarrantyDurationParts","value":"WarrantyDurationParts","valueType":"string"},{"id":"21","name":"WarrantyGuarantorLabor","value":"WarrantyGuarantorLabor","valueType":"string"},{"id":"22","name":"WarrantyGuarantorParts","value":"WarrantyGuarantorParts","valueType":"string"},{"id":"23","name":"ModelNumber","value":"ModelNumber","valueType":"string"},{"id":"24","name":"ExpectedLife","value":"ExpectedLife","valueType":"string"},{"id":"25","name":"ReplacementCost","value":"ReplacementCost","valueType":"string"},{"id":"26","name":"AssetAccountingType","value":"FIXED","valueType":"string"}]},{"id":"3tC_xR5Wn8U9a4X0X5oZ13","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3tCkPbuyH0DfiJzcJRg75S","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"3tFDW3gov9se9TXXPnvPve","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":5.423999999999994,"valueType":"number"},{"id":"2","name":"Area","value":13.97395200000005,"valueType":"number"},{"id":"3","name":"Volume","value":1.732770048000005,"valueType":"number"}]},{"id":"3tKjK24xP8D8N_Rm16pIAj","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":16.96599999999998,"valueType":"number"},{"id":"2","name":"Width","value":0.9,"valueType":"number"},{"id":"3","name":"Volume","value":4.693409999999997,"valueType":"number"}]},{"id":"3t_mtKDHv8gugf3dPuul4u","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Eccentricity","value":0.0,"valueType":"number"},{"id":"2","name":"Eccentricity","value":0.0,"valueType":"number"}]},{"id":"3te4gDXlTDdwAHxaLuGesO","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"3tfbBQeY9A9QM$oxwFx4X1","name":"PSet_Revit_Type_Materials and Finishes","type":"IfcPropertySet","properties":[{"id":"1","name":"Frame Exterior Material","value":"Sash","valueType":"string"},{"id":"2","name":"Frame Interior Material","value":"Sash","valueType":"string"},{"id":"3","name":"Glass Pane Material","value":"Glass","valueType":"string"},{"id":"4","name":"Sash","value":"Sash","valueType":"string"}]},{"id":"3tpjGLrODAwPur$dXMAFRS","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Number","value":"B202","valueType":"string"},{"id":"2","name":"Name","value":"Bedroom 1","valueType":"string"},{"id":"3","name":"OmniClass Table 13 Category","value":"13-51 21 11: Bedroom","valueType":"string"}]},{"id":"3tu2wUpG136Qk$XR$usDNE","name":"PSet_Revit_Type_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Manufacturer","value":"Manufacturer","valueType":"string"},{"id":"2","name":"Assembly Description","value":"","valueType":"string"},{"id":"3","name":"Assembly Code","value":"","valueType":"string"}]},{"id":"3tuPDasBD0IfuSuU6Yy9T4","name":"PSet_Revit_Analytical Model","type":"IfcPropertySet","properties":[{"id":"1","name":"Vertical Projection","value":"Default","valueType":"string"}]},{"id":"3u1DeF3z17BR0dgnSsS1$G","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"B101","valueType":"string"}]},{"id":"3uA6AmS8z1NwgYcPgnkdIH","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase","value":"New Construction","valueType":"string"}]},{"id":"3uBbkp5inFJeLgtqoFJFli","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural","value":"False","valueType":"boolean"},{"id":"2","name":"Structural","value":"False","valueType":"boolean"}]},{"id":"3uVKycqHHBWR9P8jhwamoI","name":"Pset_WallCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"Basic Wall:Foundation - Concrete (417mm)","valueType":"string"},{"id":"2","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"3","name":"LoadBearing","value":"True","valueType":"boolean"},{"id":"4","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"5","name":"ExtendToStructure","value":"False","valueType":"boolean"},{"id":"6","name":"IsExternal","value":"True","valueType":"boolean"},{"id":"7","name":"IsExternal","value":"True","valueType":"boolean"}]},{"id":"3ucx2AW6z5X9bkgq4t5q2v","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"2","name":"FloorCovering","value":"FloorCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"LoadCapacity","value":"LoadCapacity","valueType":"string"},{"id":"5","name":"Category Description","value":"Bathroom","valueType":"string"},{"id":"6","name":"Category Code","value":"13-41 11 14 11","valueType":"string"},{"id":"7","name":"CirculationZoneName","value":"Unit B CirculationZoneName","valueType":"string"},{"id":"8","name":"FireAlarmZoneName","value":"Unit B FireAlarmZoneName","valueType":"string"},{"id":"9","name":"HistoricPreservationZoneName","value":"Unit B HistoricPreservationZoneName","valueType":"string"},{"id":"10","name":"LightingZoneName","value":"Unit B LightingZoneName","valueType":"string"},{"id":"11","name":"OccupancyZoneName","value":"Unit B OccupancyZoneName","valueType":"string"},{"id":"12","name":"VentilationZoneName","value":"Unit B VentilationZoneName","valueType":"string"}]},{"id":"3uf$C9G959FAPEZX0XTJgp","name":"Pset_SpaceCommon","type":"IfcPropertySet","properties":[{"id":"1","name":"Reference","value":"","valueType":"string"},{"id":"2","name":"CeilingCovering","value":"CeilingCovering","valueType":"string"},{"id":"3","name":"WallCovering","value":"WallCovering","valueType":"string"},{"id":"4","name":"FloorCovering","value":"FloorCovering","valueType":"string"}]},{"id":"3uh0qhS4vFMPN$0H51yHJo","name":"PSet_Revit_Type_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Height","value":1.17,"valueType":"number"},{"id":"2","name":"Width","value":1.118,"valueType":"number"}]},{"id":"3uqIvlvCH1bBCvy7EL6r9$","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3uszM4eWHDmAbpWKCoAEIn","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.3,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3v2RHNNA53bOIJaEGymbRI","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Upper Limit","value":"Level 2","valueType":"string"},{"id":"3","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Limit Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"6","name":"Base Offset","value":0.0,"valueType":"number"}]},{"id":"3v45H7$tj67uRPxXlFUqs9","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3vmsyYlBbC1Rp$dEPgwDmT","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3vwyGgS$rFNxQOH43lznw3","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Start Extension Calculation","value":3.0,"valueType":"number"},{"id":"2","name":"End Extension Calculation","value":3.0,"valueType":"number"},{"id":"3","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"4","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"5","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"6","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"7","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"8","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3wJJ18RSjF3O04oeJgd2V6","name":"PSet_Revit_Structural Analysis","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":3.0,"valueType":"number"}]},{"id":"3waL9w__r0YhdlcXgJY$1n","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3wbrXcG0D6B9OiZzmeHpO4","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3wcPhAaVH1EhzbxF6PbJXA","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.024,"valueType":"number"}]},{"id":"3wvoEzgu11ye0o75p61Eux","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":8.383000000000001,"valueType":"number"},{"id":"2","name":"Area","value":5.359200000000002,"valueType":"number"},{"id":"3","name":"Volume","value":2.234786400000001,"valueType":"number"}]},{"id":"3xOrabOyTDOgbjLEKtcOqg","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Level : Level 1","valueType":"string"},{"id":"3","name":"Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"6","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"3xfgpDdTv0sAKa9eYkNIwM","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Elevation","value":1.399999999999999,"valueType":"number"}]},{"id":"3yQoi3EKf3gvLBsPgskFgW","name":"PSet_Revit_Identity Data","type":"IfcPropertySet","properties":[{"id":"1","name":"Mark","value":"27","valueType":"string"}]},{"id":"3yvdGLjnP3zQyg$nR4HtLz","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Level","value":"Level 1","valueType":"string"},{"id":"2","name":"Host","value":"Floor : 127mm Slab on Grade","valueType":"string"},{"id":"3","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"},{"id":"4","name":"Moves With Nearby Elements","value":"False","valueType":"boolean"}]},{"id":"3z3fQ2Sb9F8vAKPY4YbWCj","name":"PSet_Revit_Constraints","type":"IfcPropertySet","properties":[{"id":"1","name":"Location Line","value":2.0,"valueType":"number"},{"id":"2","name":"Base Constraint","value":"Roof","valueType":"string"},{"id":"3","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"4","name":"Base Offset","value":0.0,"valueType":"number"},{"id":"5","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"6","name":"Base is Attached","value":"False","valueType":"boolean"},{"id":"7","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"8","name":"Base Extension Distance","value":0.0,"valueType":"number"},{"id":"9","name":"Top Constraint","value":"Up to level: Roof","valueType":"string"},{"id":"10","name":"Unconnected Height","value":0.6090000000000002,"valueType":"number"},{"id":"11","name":"Top Offset","value":0.609,"valueType":"number"},{"id":"12","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"13","name":"Top is Attached","value":"False","valueType":"boolean"},{"id":"14","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"15","name":"Top Extension Distance","value":0.0,"valueType":"number"},{"id":"16","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"17","name":"Room Bounding","value":"True","valueType":"boolean"},{"id":"18","name":"Related to Mass","value":"False","valueType":"boolean"},{"id":"19","name":"Related to Mass","value":"False","valueType":"boolean"}]},{"id":"3z5JpMBMn87huyVH2w2YRn","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3zBmNYW2HCHOzAqlql76m5","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3zKQFDk5DDv8gDMJzcUUO0","name":"PSet_Revit_Phasing","type":"IfcPropertySet","properties":[{"id":"1","name":"Phase Created","value":"New Construction","valueType":"string"}]},{"id":"3zRC_kUWf5GRPAwZaJmt2$","name":"PSet_Revit_Dimensions","type":"IfcPropertySet","properties":[{"id":"1","name":"Length","value":4.313999999999995,"valueType":"number"},{"id":"2","name":"Area","value":10.79520000000004,"valueType":"number"},{"id":"3","name":"Volume","value":1.640870400000006,"valueType":"number"}]},{"id":"3zTGsUrU574vgM5Qz0bx0X","name":"PSet_Revit_Structural","type":"IfcPropertySet","properties":[{"id":"1","name":"Structural Usage","value":0.0,"valueType":"number"},{"id":"2","name":"Structural Usage","value":0.0,"valueType":"number"}]},{"id":"3zWm40QUbCQPVQupUKOv_O","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3zXJ_XwGP35OFSbVEXdQNg","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3ztEwdFZjBBRUvXHE$auNM","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"Head Height","value":2.3,"valueType":"number"},{"id":"2","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"3","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"4","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"5","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"6","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"7","name":"TagNumber","value":"TagNumber","valueType":"string"}]},{"id":"3zyrmU3kX2GecOOCzn4D6D","name":"PSet_Revit_Other","type":"IfcPropertySet","properties":[{"id":"1","name":"InstallationDate","value":"InstallationDate","valueType":"string"},{"id":"2","name":"SerialNumber","value":"SerialNumber","valueType":"string"},{"id":"3","name":"WarrantyStartDate","value":"WarrantyStartDate","valueType":"string"},{"id":"4","name":"BarCode","value":"BarCode","valueType":"string"},{"id":"5","name":"AssetIdentifier","value":"AssetIdentifier","valueType":"string"},{"id":"6","name":"TagNumber","value":"TagNumber","valueType":"string"}]}]} \ No newline at end of file diff --git a/assets/metaModels/Duplex.ifc.xeokit-metadata.json b/assets/metaModels/Duplex.ifc.xeokit-metadata.json new file mode 100644 index 0000000..4285e1b --- /dev/null +++ b/assets/metaModels/Duplex.ifc.xeokit-metadata.json @@ -0,0 +1,1408 @@ +{ + "id": "0001", + "projectId": "1xS3BCk291UvhgP2a6eflL", + "author": "", + "createdAt": "2011-05-05T12:10:27", + "schema": "IFC2X3", + "creatingApplication": "20100326_1700", + "metaObjects": [ + { + "id": "1xS3BCk291UvhgP2a6eflL", + "name": "0001", + "type": "IfcProject", + "parent": null + }, + { + "id": "1xS3BCk291UvhgP2a6eflN", + "name": "Default", + "type": "IfcSite", + "parent": "1xS3BCk291UvhgP2a6eflL" + }, + { + "id": "1xS3BCk291UvhgP2a6eflK", + "name": null, + "type": "IfcBuilding", + "parent": "1xS3BCk291UvhgP2a6eflN" + }, + { + "id": "1xS3BCk291UvhgP2dvNMKI", + "name": "Level 1", + "type": "IfcBuildingStorey", + "parent": "1xS3BCk291UvhgP2a6eflK" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FNtn", + "name": "Basic Wall:Exterior - Brick on Block:138062", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FNqI", + "name": "Basic Wall:Exterior - Brick on Block:138157", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FNr2", + "name": "Basic Wall:Exterior - Brick on Block:138237", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FNhv", + "name": "Basic Wall:Exterior - Brick on Block:138310", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FNld", + "name": "Basic Wall:Interior - Partition (92mm Stud):138584", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FNau", + "name": "Basic Wall:Interior - Partition (92mm Stud):139143", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FNbT", + "name": "Basic Wall:Party Wall - CMU Residential Unit Dimising Wall:139234", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FKRi", + "name": "Basic Wall:Party Wall - CMU Residential Unit Dimising Wall:139347", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FKRH", + "name": "Basic Wall:Party Wall - CMU Residential Unit Dimising Wall:139374", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FKST", + "name": "Basic Wall:Interior - Partition (92mm Stud):139682", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FKIu", + "name": "Basic Wall:Interior - Partition (92mm Stud):139783", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FKGS", + "name": "Basic Wall:Interior - Partition (92mm Stud):139939", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FK4F", + "name": "Floor:127mm Slab on Grade:141232", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FKcz", + "name": "Floor:127mm Slab on Grade:143106", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FLTF", + "name": "Basic Wall:Interior - Partition (92mm Stud):143856", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FL8v", + "name": "Basic Wall:Interior - Partition (92mm Stud):144518", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "1hOSvn6df7F8_7GcBWlR72", + "name": "M_Fixed:4835mm x 2420mm:4835mm x 2420mm:145788", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "1hOSvn6df7F8_7GcBWlRBU", + "name": "M_Fixed:4835mm x 2420mm:4835mm x 2420mm:146016", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "1hOSvn6df7F8_7GcBWlRGQ", + "name": "M_Single-Flush:1250mm x 2010mm:1250mm x 2010mm:146596", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "1hOSvn6df7F8_7GcBWlRH8", + "name": "M_Single-Flush:1250mm x 2010mm:1250mm x 2010mm:146678", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "1hOSvn6df7F8_7GcBWlRLx", + "name": "M_Fixed:750mm x 2200mm:750mm x 2200mm:146885", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "1hOSvn6df7F8_7GcBWlRRL", + "name": "M_Fixed:750mm x 2200mm:750mm x 2200mm:147051", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "1hOSvn6df7F8_7GcBWlS8Z", + "name": "M_Single-Flush:0762 x 2032mm:0762 x 2032mm:150173", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "1hOSvn6df7F8_7GcBWlS9F", + "name": "M_Single-Flush:0762 x 2032mm:0762 x 2032mm:150257", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "0wkEuT1wr1kOyafLY4v_O1", + "name": "Stair:Residential - 200mm Max Riser 250mm Tread:151086", + "type": "IfcStair", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "3AHN05gWr6UPB1K6VN0idp", + "name": "Stair:Residential - 200mm Max Riser 250mm Tread:151086:1", + "type": "IfcStairFlight", + "parent": "0wkEuT1wr1kOyafLY4v_O1" + }, + { + "id": "2kvoSiZl9AyBFq5GcandkO", + "name": "Stair:Residential - 200mm Max Riser 250mm Tread:151086:1", + "type": "IfcMember", + "parent": "0wkEuT1wr1kOyafLY4v_O1" + }, + { + "id": "3oPHcnffTFUPOeoXH3gL9O", + "name": "Stair:Residential - 200mm Max Riser 250mm Tread:151086:2", + "type": "IfcMember", + "parent": "0wkEuT1wr1kOyafLY4v_O1" + }, + { + "id": "0wkEuT1wr1kOyafLY4v_PL", + "name": "Railing:900mm Handrail Only:151162", + "type": "IfcRailing", + "parent": "0wkEuT1wr1kOyafLY4v_O1" + }, + { + "id": "0wkEuT1wr1kOyafLY4v_PH", + "name": "Railing:1100mm Guard Rail:151166", + "type": "IfcRailing", + "parent": "0wkEuT1wr1kOyafLY4v_O1" + }, + { + "id": "2OBrcmyk58NupXoVOHUtxr", + "name": "Floor:Finish Floor - Wood:170352", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2OBrcmyk58NupXoVOHUtoa", + "name": "Floor:Finish Floor - Ceramic Tile:170785", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2OBrcmyk58NupXoVOHUtjR", + "name": "Floor:Finish Floor - Ceramic Tile:171230", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2OBrcmyk58NupXoVOHUtju", + "name": "Floor:Finish Floor - Ceramic Tile:171261", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2OBrcmyk58NupXoVOHUtgP", + "name": "Floor:Finish Floor - Wood:171292", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2OBrcmyk58NupXoVOHUten", + "name": "Floor:Finish Floor - Ceramic Tile:171444", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "1s1jVhK8z0pgKYcr9jt781", + "name": "M_Single-Glass 1:0813 x 2420mm:0813 x 2420mm:171853", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "1s1jVhK8z0pgKYcr9jt7AB", + "name": "M_Single-Glass 1:0813 x 2420mm:0813 x 2420mm:171975", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "3bXiCStxP6Fgxdej$yc5T8", + "name": "Compound Ceiling:Gypsum Board:187149", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "3bXiCStxP6Fgxdej$yc503", + "name": "Compound Ceiling:Gypsum Board:187462", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "3bXiCStxP6Fgxdej$yc50B", + "name": "Compound Ceiling:Gypsum Board:187470", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "3bXiCStxP6Fgxdej$yc50U", + "name": "Compound Ceiling:Gypsum Board:187483", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "3bXiCStxP6Fgxdej$yc50n", + "name": "Compound Ceiling:Gypsum Board:187508", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "0iEHWY1$XA8eQeeULq4jZ1", + "name": "Basic Wall:Interior - Furring (152 mm Stud):189074", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "0iEHWY1$XA8eQeeULq4j_U", + "name": "Basic Wall:Interior - Furring (152 mm Stud):189901", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "0iEHWY1$XA8eQeeULq4jpl", + "name": "Basic Wall:Interior - Partition (92mm Stud):190140", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "0iEHWY1$XA8eQeeULq4jDb", + "name": "Basic Wall:Interior - Furring (152 mm Stud):190774", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "0iEHWY1$XA8eQeeULq4jE6", + "name": "Basic Wall:Interior - Furring (152 mm Stud):190933", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "21ldoMpbP4VfsJ0XGY_34d", + "name": "Stair:Residential - 200mm Max Riser 250mm Tread:198878", + "type": "IfcStair", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "06uoIsbYr35x9JXU7VZ77u", + "name": "Stair:Residential - 200mm Max Riser 250mm Tread:198878:1", + "type": "IfcStairFlight", + "parent": "21ldoMpbP4VfsJ0XGY_34d" + }, + { + "id": "1V7lhQlDX1jg$qhJ_oItPv", + "name": "Stair:Residential - 200mm Max Riser 250mm Tread:198878:1", + "type": "IfcMember", + "parent": "21ldoMpbP4VfsJ0XGY_34d" + }, + { + "id": "3NTjJKhLD9Z9PrfDDNlO7l", + "name": "Stair:Residential - 200mm Max Riser 250mm Tread:198878:2", + "type": "IfcMember", + "parent": "21ldoMpbP4VfsJ0XGY_34d" + }, + { + "id": "21ldoMpbP4VfsJ0XGY_34P", + "name": "Railing:900mm Handrail Only:198880", + "type": "IfcRailing", + "parent": "21ldoMpbP4VfsJ0XGY_34d" + }, + { + "id": "21ldoMpbP4VfsJ0XGY_335", + "name": "Railing:1100mm Guard Rail:198972", + "type": "IfcRailing", + "parent": "21ldoMpbP4VfsJ0XGY_34d" + }, + { + "id": "1aj$VJZFn2TxepZUBcKpee", + "name": "Basic Wall:Interior - Partition (92mm Stud):204300", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "1aj$VJZFn2TxepZUBcKphf", + "name": "Basic Wall:Interior - Partition (92mm Stud):204493", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2OrWItJ6zAwBNp0OUxK_l8", + "name": "M_W-Wide Flange:W310X60:W310X60:207325", + "type": "IfcBeam", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2OrWItJ6zAwBNp0OUxK$8W", + "name": "M_W-Wide Flange:W410X60:W410X60:208949", + "type": "IfcBeam", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2OrWItJ6zAwBNp0OUxK$Dv", + "name": "M_W-Wide Flange:W310X60:W310X60:209260", + "type": "IfcBeam", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2OrWItJ6zAwBNp0OUxK$Du", + "name": "M_W-Wide Flange:W410X60:W410X60:209261", + "type": "IfcBeam", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "0BTBFw6f90Nfh9rP1dlXr2", + "name": "A102", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2OBrcmyk58NupXoVOHUtOy", + "name": "M_Sofa:1830mm:1830mm:168377", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr2" + }, + { + "id": "2OBrcmyk58NupXoVOHUtO$", + "name": "M_Sofa:1830mm:1830mm:168378", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr2" + }, + { + "id": "2OBrcmyk58NupXoVOHUtO_", + "name": "M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168379", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr2" + }, + { + "id": "2OBrcmyk58NupXoVOHUtOv", + "name": "M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:168380", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr2" + }, + { + "id": "2OBrcmyk58NupXoVOHUtOu", + "name": "M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168381", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr2" + }, + { + "id": "0BTBFw6f90Nfh9rP1dlXr$", + "name": "A103", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2OBrcmyk58NupXoVOHUvqp", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162486", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "2OBrcmyk58NupXoVOHUvqo", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162487", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "2OBrcmyk58NupXoVOHUvqz", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162488", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "2OBrcmyk58NupXoVOHUvqy", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162489", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "2OBrcmyk58NupXoVOHUvq$", + "name": "M_Counter Top w Sink Hole:600mm Depth:600mm Depth:162490", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "2OBrcmyk58NupXoVOHUvq_", + "name": "M_Counter Top:600mm Depth:600mm Depth:162491", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "2OBrcmyk58NupXoVOHUvqu", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162493", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "2OBrcmyk58NupXoVOHUvqx", + "name": "M_Counter Top:600mm Depth:600mm Depth:162494", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "2OBrcmyk58NupXoVOHUvqw", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162495", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "2OBrcmyk58NupXoVOHUvr5", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162496", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "2OBrcmyk58NupXoVOHUvr4", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162497", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "0iEHWY1$XA8eQeeULq4j7w", + "name": "M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:191401", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "0iEHWY1$XA8eQeeULq4jOM", + "name": "M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:191557", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "0iEHWY1$XA8eQeeULq4jQJ", + "name": "M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:191680", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "0iEHWY1$XA8eQeeULq4jTB", + "name": "M_Upper Cabinet-Double Door-Wall:1000mm:1000mm:191768", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXr$" + }, + { + "id": "0BTBFw6f90Nfh9rP1dlXru", + "name": "A104", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2gRXFgjRn2HPE$YoDLX0vP", + "name": "M_Vanity Cabinet-Double Door Sink Unit:450 x 450 mm:450 x 450 mm:205548", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXru" + }, + { + "id": "0BTBFw6f90Nfh9rP1dlXrr", + "name": "A101", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "0BTBFw6f90Nfh9rP1dl_CZ", + "name": "B102", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "2OBrcmyk58NupXoVOHUshs", + "name": "M_Sofa:1830mm:1830mm:167283", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_CZ" + }, + { + "id": "2OBrcmyk58NupXoVOHUsc7", + "name": "M_Sofa:1830mm:1830mm:167426", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_CZ" + }, + { + "id": "2OBrcmyk58NupXoVOHUsab", + "name": "M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167584", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_CZ" + }, + { + "id": "2OBrcmyk58NupXoVOHUsbY", + "name": "M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:167655", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_CZ" + }, + { + "id": "2OBrcmyk58NupXoVOHUtVQ", + "name": "M_Table-Coffee:0915 x 1830 x 0457mm:0915 x 1830 x 0457mm:168031", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_CZ" + }, + { + "id": "0BTBFw6f90Nfh9rP1dl_3S", + "name": "B103", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "0wkEuT1wr1kOyafLY4vyMO", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:159159", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "0wkEuT1wr1kOyafLY4vyOn", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:159262", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "2OBrcmyk58NupXoVOHUvGQ", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:160671", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "2OBrcmyk58NupXoVOHUvH8", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:160717", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "2OBrcmyk58NupXoVOHUv88", + "name": "M_Counter Top w Sink Hole:600mm Depth:600mm Depth:161165", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "2OBrcmyk58NupXoVOHUv3h", + "name": "M_Counter Top:600mm Depth:600mm Depth:161646", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "2OBrcmyk58NupXoVOHUvup", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162230", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "2OBrcmyk58NupXoVOHUvuo", + "name": "M_Counter Top:600mm Depth:600mm Depth:162231", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "2OBrcmyk58NupXoVOHUvs2", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162311", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "2OBrcmyk58NupXoVOHUvsm", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162357", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "2OBrcmyk58NupXoVOHUvtA", + "name": "M_Base Cabinet-Double Door & 2 Drawer:1000mm:1000mm:162383", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "0iEHWY1$XA8eQeeULq4jJA", + "name": "M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:192153", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "0iEHWY1$XA8eQeeULq4jKO", + "name": "M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:192331", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "0iEHWY1$XA8eQeeULq4jMl", + "name": "M_Upper Cabinet-Double Door-Wall:1000 mm:1000 mm:192508", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "0iEHWY1$XA8eQeeULq4ien", + "name": "M_Upper Cabinet-Double Door-Wall:1000mm:1000mm:192610", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3S" + }, + { + "id": "0BTBFw6f90Nfh9rP1dl_3P", + "name": "B104", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "0BTBFw6f90Nfh9rP1dl_3Q", + "name": "B101", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMKI" + }, + { + "id": "1xS3BCk291UvhgP2dvNMQJ", + "name": "Level 2", + "type": "IfcBuildingStorey", + "parent": "1xS3BCk291UvhgP2a6eflK" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FKau", + "name": "Basic Wall:Party Wall - CMU Residential Unit Dimising Wall:143239", + "type": "IfcWall", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FLQD", + "name": "Basic Wall:Exterior - Brick on Block:143410", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FLR9", + "name": "Basic Wall:Exterior - Brick on Block:143478", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FLOH", + "name": "Basic Wall:Exterior - Brick on Block:143534", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FLPP", + "name": "Basic Wall:Exterior - Brick on Block:143590", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FLIE", + "name": "Basic Wall:Interior - Partition (92mm Stud):143921", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FLJd", + "name": "Basic Wall:Interior - Partition (92mm Stud):143960", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FLMr", + "name": "Basic Wall:Interior - Plumbing (152mm Stud):144138", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FLKI", + "name": "Basic Wall:Interior - Partition (92mm Stud):144301", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FL9r", + "name": "Basic Wall:Interior - Partition (92mm Stud):144586", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FL96", + "name": "Basic Wall:Interior - Partition (92mm Stud):144633", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FLEJ", + "name": "Basic Wall:Interior - Partition (92mm Stud):144684", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FLCm", + "name": "Basic Wall:Interior - Plumbing (152mm Stud):144783", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1hOSvn6df7F8_7GcBWlRqU", + "name": "Floor:Residential - Wood Joist with Subflooring:144800", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1hOSvn6df7F8_7GcBWlRrM", + "name": "Floor:Residential - Wood Joist with Subflooring:144872", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1hOSvn6df7F8_7GcBWlSXO", + "name": "M_Fixed:2800mm x 2410mm:2800mm x 2410mm:147686", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1hOSvn6df7F8_7GcBWlSga", + "name": "M_Fixed:819mm x 759mm:819mm x 759mm:147994", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1hOSvn6df7F8_7GcBWlSp1", + "name": "M_Casement:819mm x 759mm:819mm x 759mm:148607", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1hOSvn6df7F8_7GcBWlSnC", + "name": "M_Fixed:819mm x 759mm:819mm x 759mm:148722", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1hOSvn6df7F8_7GcBWlS_W", + "name": "M_Fixed:2800mm x 2410mm:2800mm x 2410mm:149278", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1hOSvn6df7F8_7GcBWlS2V", + "name": "M_Fixed:819mm x 759mm:819mm x 759mm:149537", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1hOSvn6df7F8_7GcBWlS1M", + "name": "M_Casement:819mm x 759mm:819mm x 759mm:149736", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1hOSvn6df7F8_7GcBWlS4Q", + "name": "M_Fixed:819mm x 759mm:819mm x 759mm:149924", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1hOSvn6df7F8_7GcBWlSFK", + "name": "M_Single-Flush:0864 x 2032mm:0864 x 2032mm:150378", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1hOSvn6df7F8_7GcBWlSDm", + "name": "M_Single-Flush:0864 x 2032mm:0864 x 2032mm:150478", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OBrcmyk58NupXoVOHUuXp", + "name": "M_Single-Flush:0864 x 2032mm:0864 x 2032mm:159734", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OBrcmyk58NupXoVOHUvVV", + "name": "M_Single-Flush:0864 x 2032mm:0864 x 2032mm:159834", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OBrcmyk58NupXoVOHUvR4", + "name": "M_Single-Flush:0864 x 2032mm:0864 x 2032mm:160065", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OBrcmyk58NupXoVOHUvPL", + "name": "M_Single-Flush:0864 x 2032mm:0864 x 2032mm:160208", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OBrcmyk58NupXoVOHUtC0", + "name": "Floor:Finish Floor - Wood:169093", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OBrcmyk58NupXoVOHUtDX", + "name": "Floor:Finish Floor - Wood:169188", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OBrcmyk58NupXoVOHUtBP", + "name": "Floor:Finish Floor - Wood:169308", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OBrcmyk58NupXoVOHUt8F", + "name": "Floor:Finish Floor - Wood:169354", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OBrcmyk58NupXoVOHUt8s", + "name": "Floor:Finish Floor - Wood:169395", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OBrcmyk58NupXoVOHUt5W", + "name": "Floor:Finish Floor - Wood:169701", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OBrcmyk58NupXoVOHUt2f", + "name": "Floor:Finish Floor - Ceramic Tile:169772", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OBrcmyk58NupXoVOHUt0F", + "name": "Floor:Finish Floor - Ceramic Tile:169866", + "type": "IfcSlab", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1l0GAJtRTFv8$zmKJOH4$e", + "name": "M_Fixed:2800mm x 2410mm:2800mm x 2410mm:180318", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1l0GAJtRTFv8$zmKJOH4u1", + "name": "M_Fixed:819mm x 759mm:819mm x 759mm:180663", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1l0GAJtRTFv8$zmKJOH4qs", + "name": "M_Fixed:819mm x 759mm:819mm x 759mm:180864", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1l0GAJtRTFv8$zmKJOH4oq", + "name": "M_Casement:819mm x 759mm:819mm x 759mm:180994", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1l0GAJtRTFv8$zmKJOH4pU", + "name": "M_Fixed:2800mm x 2410mm:2800mm x 2410mm:181096", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1l0GAJtRTFv8$zmKJOH4kJ", + "name": "M_Fixed:819mm x 759mm:819mm x 759mm:181285", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1l0GAJtRTFv8$zmKJOH4gQ", + "name": "M_Casement:819mm x 759mm:819mm x 759mm:181548", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1l0GAJtRTFv8$zmKJOH4hv", + "name": "M_Fixed:819mm x 759mm:819mm x 759mm:181583", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1l0GAJtRTFv8$zmKJOH4aS", + "name": "M_Fixed:750mm x 2200mm:750mm x 2200mm:181930", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1l0GAJtRTFv8$zmKJOH4ZZ", + "name": "M_Fixed:750mm x 2200mm:750mm x 2200mm:182101", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "3bXiCStxP6Fgxdej$yc52o", + "name": "Compound Ceiling:Gypsum Board:187639", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "3bXiCStxP6Fgxdej$yc554", + "name": "Compound Ceiling:Gypsum Board:187649", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "3bXiCStxP6Fgxdej$yc55E", + "name": "Compound Ceiling:Gypsum Board:187659", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "3bXiCStxP6Fgxdej$yc55M", + "name": "Compound Ceiling:Gypsum Board:187667", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "3bXiCStxP6Fgxdej$yc55U", + "name": "Compound Ceiling:Gypsum Board:187675", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "3bXiCStxP6Fgxdej$yc55c", + "name": "Compound Ceiling:Gypsum Board:187683", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "3bXiCStxP6Fgxdej$yc55k", + "name": "Compound Ceiling:Gypsum Board:187691", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "3bXiCStxP6Fgxdej$yc55m", + "name": "Compound Ceiling:Gypsum Board:187701", + "type": "IfcCovering", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "0dxE1Sy6nDqfpDb5vIMNiA", + "name": "Basic Wall:Interior - Furring (152 mm Stud):193247", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "0dxE1Sy6nDqfpDb5vIMN_Z", + "name": "Basic Wall:Interior - Furring (152 mm Stud):194166", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1aj$VJZFn2TxepZUBcKpvt", + "name": "Basic Wall:Interior - Partition (92mm Stud):203347", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1aj$VJZFn2TxepZUBcKp$i", + "name": "M_Single-Flush:0762 x 2032mm:0762 x 2032mm:203720", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1aj$VJZFn2TxepZUBcKpZw", + "name": "Basic Wall:Interior - Partition (92mm Stud):203998", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1aj$VJZFn2TxepZUBcKpac", + "name": "M_Single-Flush:0762 x 2032mm:0762 x 2032mm:204034", + "type": "IfcDoor", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OrWItJ6zAwBNp0OUxK$Bq", + "name": "M_W-Wide Flange:W410X60:W410X60:209121", + "type": "IfcBeam", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OrWItJ6zAwBNp0OUxK$CR", + "name": "M_W-Wide Flange:W410X60:W410X60:209166", + "type": "IfcBeam", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OrWItJ6zAwBNp0OUxK$Dx", + "name": "M_W-Wide Flange:W410X60:W410X60:209262", + "type": "IfcBeam", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2OrWItJ6zAwBNp0OUxK$Dw", + "name": "M_W-Wide Flange:W410X60:W410X60:209263", + "type": "IfcBeam", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "0BTBFw6f90Nfh9rP1dlXri", + "name": "A201", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "0BTBFw6f90Nfh9rP1dlXre", + "name": "A204", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2gRXFgjRn2HPE$YoDLX0rb", + "name": "M_Vanity Cabinet-Double Door Sink Unit:650 x 450 mm:650 x 450 mm:205264", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXre" + }, + { + "id": "2gRXFgjRn2HPE$YoDLX0ra", + "name": "M_Vanity Cabinet-Double Door Sink Unit:650 x 450 mm:650 x 450 mm:205265", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXre" + }, + { + "id": "0BTBFw6f90Nfh9rP1dlXrb", + "name": "A203", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "0wkEuT1wr1kOyafLY4vy3H", + "name": "M_Tall Cabinet-Single Door(2):800 mm:800 mm:157950", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXrb" + }, + { + "id": "0wkEuT1wr1kOyafLY4vy3G", + "name": "M_Tall Cabinet-Single Door(2):800 mm:800 mm:157951", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXrb" + }, + { + "id": "2OBrcmyk58NupXoVOHUtEr", + "name": "M_Bed-Standard:1525 x 2007mm - Queen:1525 x 2007mm - Queen:169008", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXrb" + }, + { + "id": "2kvhekJrnDjRw0CDkKW$fQ", + "name": "M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206876", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXrb" + }, + { + "id": "0BTBFw6f90Nfh9rP1dlXrc", + "name": "A202", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "0wkEuT1wr1kOyafLY4vy4m", + "name": "M_Tall Cabinet-Single Door(2):800 mm:800 mm:157983", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXrc" + }, + { + "id": "0wkEuT1wr1kOyafLY4vy4F", + "name": "M_Tall Cabinet-Single Door(2):800 mm:800 mm:157984", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXrc" + }, + { + "id": "2OBrcmyk58NupXoVOHUtI8", + "name": "M_Bed-Standard:1981 x 2032mm - King:1981 x 2032mm - King:168717", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXrc" + }, + { + "id": "2kvhekJrnDjRw0CDkKW$JW", + "name": "M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206502", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dlXrc" + }, + { + "id": "0BTBFw6f90Nfh9rP1dl_3G", + "name": "B201", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "0BTBFw6f90Nfh9rP1dl_3C", + "name": "B204", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2gRXFgjRn2HPE$YoDLX0mp", + "name": "M_Vanity Cabinet-Double Door Sink Unit:650 x 450 mm:650 x 450 mm:204934", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3C" + }, + { + "id": "2gRXFgjRn2HPE$YoDLX0q2", + "name": "M_Vanity Cabinet-Double Door Sink Unit:650 x 450 mm:650 x 450 mm:205239", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3C" + }, + { + "id": "0BTBFw6f90Nfh9rP1dl_39", + "name": "B203", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "0wkEuT1wr1kOyafLY4vy6l", + "name": "M_Tall Cabinet-Single Door(2):800 mm:800 mm:158080", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_39" + }, + { + "id": "0wkEuT1wr1kOyafLY4vy6k", + "name": "M_Tall Cabinet-Single Door(2):800 mm:800 mm:158081", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_39" + }, + { + "id": "2OBrcmyk58NupXoVOHUtM4", + "name": "M_Bed-Standard:1525 x 2007mm - Queen:1525 x 2007mm - Queen:168449", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_39" + }, + { + "id": "2kvhekJrnDjRw0CDkKW$UD", + "name": "M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206283", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_39" + }, + { + "id": "0BTBFw6f90Nfh9rP1dl_3A", + "name": "B202", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "0wkEuT1wr1kOyafLY4vyu$", + "name": "M_Tall Cabinet-Single Door(2):800 mm:800 mm:157200", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3A" + }, + { + "id": "0wkEuT1wr1kOyafLY4vy_8", + "name": "M_Tall Cabinet-Single Door(2):800 mm:800 mm:157607", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3A" + }, + { + "id": "2OBrcmyk58NupXoVOHUtHN", + "name": "M_Bed-Standard:1981 x 2032mm - King:1981 x 2032mm - King:168914", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3A" + }, + { + "id": "2kvhekJrnDjRw0CDkKW$KL", + "name": "M_Table-Coffee:0610 x 0610 x 0610mm:0610 x 0610 x 0610mm:206675", + "type": "IfcFurnishingElement", + "parent": "0BTBFw6f90Nfh9rP1dl_3A" + }, + { + "id": "2gRXFgjRn2HPE$YoDLX3FV", + "name": "A205", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "2gRXFgjRn2HPE$YoDLX3FC", + "name": "B205", + "type": "IfcSpace", + "parent": "1xS3BCk291UvhgP2dvNMQJ" + }, + { + "id": "1xS3BCk291UvhgP2dvNsgp", + "name": "T/FDN", + "type": "IfcBuildingStorey", + "parent": "1xS3BCk291UvhgP2a6eflK" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FK80", + "name": "Basic Wall:Foundation - Concrete (417mm):140479", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FK9N", + "name": "Basic Wall:Foundation - Concrete (417mm):140520", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FKEr", + "name": "Basic Wall:Foundation - Concrete (417mm):140554", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FKE5", + "name": "Basic Wall:Foundation - Concrete (417mm):140602", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FK3E", + "name": "Basic Wall:Foundation - Concrete (435mm):140913", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FK04", + "name": "Basic Wall:Foundation - Concrete (435mm):140987", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "2O2Fr$t4X7Zf8NOew3FK1b", + "name": "Basic Wall:Foundation - Concrete (435mm):141018", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "0kF45Qs8L9PAM9kmb1lT5d", + "name": "Wall Foundation:Bearing Footing - 900 x 300:186596", + "type": "IfcFooting", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "0kF45Qs8L9PAM9kmb1lT5l", + "name": "Wall Foundation:Bearing Footing - 900 x 300:186604", + "type": "IfcFooting", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "0kF45Qs8L9PAM9kmb1lT5t", + "name": "Wall Foundation:Bearing Footing - 900 x 300:186612", + "type": "IfcFooting", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "0kF45Qs8L9PAM9kmb1lT5$", + "name": "Wall Foundation:Bearing Footing - 900 x 300:186620", + "type": "IfcFooting", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "0kF45Qs8L9PAM9kmb1lT2B", + "name": "Wall Foundation:Bearing Footing - 900 x 300:186632", + "type": "IfcFooting", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "0kF45Qs8L9PAM9kmb1lT2N", + "name": "Wall Foundation:Bearing Footing - 900 x 300:186644", + "type": "IfcFooting", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "0kF45Qs8L9PAM9kmb1lT2Z", + "name": "Wall Foundation:Bearing Footing - 900 x 300:186656", + "type": "IfcFooting", + "parent": "1xS3BCk291UvhgP2dvNsgp" + }, + { + "id": "1xS3BCk291UvhgP2dvNtSE", + "name": "Roof", + "type": "IfcBuildingStorey", + "parent": "1xS3BCk291UvhgP2a6eflK" + }, + { + "id": "0jf0rYHfX3RAB3bSIRjmxl", + "name": "Basic Roof:Live Roof over Wood Joist Flat Roof:184483", + "type": "IfcRoof", + "parent": "1xS3BCk291UvhgP2dvNtSE" + }, + { + "id": "09g7Eo3WDEihdnsYS1YDoI", + "name": "Basic Roof:Live Roof over Wood Joist Flat Roof:184483", + "type": "IfcSlab", + "parent": "0jf0rYHfX3RAB3bSIRjmxl" + }, + { + "id": "0jf0rYHfX3RAB3bSIRjmmy", + "name": "Basic Wall:Exterior - Brick on Block:184944", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNtSE" + }, + { + "id": "0jf0rYHfX3RAB3bSIRjmpw", + "name": "Basic Wall:Exterior - Brick on Block:185014", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNtSE" + }, + { + "id": "0jf0rYHfX3RAB3bSIRjmoa", + "name": "Basic Wall:Exterior - Brick on Block:185064", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNtSE" + }, + { + "id": "0jf0rYHfX3RAB3bSIRjmr1", + "name": "Basic Wall:Exterior - Brick on Block:185101", + "type": "IfcWallStandardCase", + "parent": "1xS3BCk291UvhgP2dvNtSE" + }, + { + "id": "1Eo2$BaHX42AEkDvQQDocD", + "name": "M_Skylight:1180 x 1170mm:1180 x 1170mm:185337", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNtSE" + }, + { + "id": "1Eo2$BaHX42AEkDvQQDoy2", + "name": "M_Skylight:1180 x 1170mm:1180 x 1170mm:185718", + "type": "IfcWindow", + "parent": "1xS3BCk291UvhgP2dvNtSE" + } + ] +} \ No newline at end of file diff --git a/assets/models/gltf/DamagedHelmet/README.md b/assets/models/gltf/DamagedHelmet/README.md new file mode 100644 index 0000000..7c75445 --- /dev/null +++ b/assets/models/gltf/DamagedHelmet/README.md @@ -0,0 +1,15 @@ +# Damaged Helmet + +## Screenshot + +![screenshot](screenshot/screenshot.png) + +## License Information + +Battle Damaged Sci-fi Helmet - PBR by [theblueturtle_](https://sketchfab.com/theblueturtle_), published under a Creative Commons Attribution-NonCommercial license + +https://sketchfab.com/models/b81008d513954189a063ff901f7abfe4 + +## Modifications + +The original model was built on an early draft of glTF 2.0 that did not become final. This new model has been imported and re-exported from Blender to bring it into alignment with the final release glTF 2.0 specification. diff --git a/assets/models/gltf/DamagedHelmet/glTF-Binary/DamagedHelmet.glb b/assets/models/gltf/DamagedHelmet/glTF-Binary/DamagedHelmet.glb new file mode 100644 index 0000000..2cee76d Binary files /dev/null and b/assets/models/gltf/DamagedHelmet/glTF-Binary/DamagedHelmet.glb differ diff --git a/assets/models/gltf/DamagedHelmet/screenshot/screenshot.png b/assets/models/gltf/DamagedHelmet/screenshot/screenshot.png new file mode 100644 index 0000000..954b2bd Binary files /dev/null and b/assets/models/gltf/DamagedHelmet/screenshot/screenshot.png differ diff --git a/assets/models/gltf/Duplex/glTF-Binary/Duplex.ifc.IfcConvert.glb b/assets/models/gltf/Duplex/glTF-Binary/Duplex.ifc.IfcConvert.glb new file mode 100644 index 0000000..be0f288 Binary files /dev/null and b/assets/models/gltf/Duplex/glTF-Binary/Duplex.ifc.IfcConvert.glb differ diff --git a/assets/models/gltf/Duplex/glTF-Binary/Duplex.ifc.ifc2gltf.glb b/assets/models/gltf/Duplex/glTF-Binary/Duplex.ifc.ifc2gltf.glb new file mode 100644 index 0000000..cd254fb Binary files /dev/null and b/assets/models/gltf/Duplex/glTF-Binary/Duplex.ifc.ifc2gltf.glb differ diff --git a/assets/models/gltf/Roadworks/glTF-Binary/Roadworks.glb b/assets/models/gltf/Roadworks/glTF-Binary/Roadworks.glb new file mode 100644 index 0000000..adbcaf6 Binary files /dev/null and b/assets/models/gltf/Roadworks/glTF-Binary/Roadworks.glb differ diff --git a/assets/models/gltf/Roadworks/glTF/license.txt b/assets/models/gltf/Roadworks/glTF/license.txt new file mode 100644 index 0000000..3d53b75 --- /dev/null +++ b/assets/models/gltf/Roadworks/glTF/license.txt @@ -0,0 +1,11 @@ +Model Information: +* title: Day 140: Roadworks - 1scanaday +* source: https://sketchfab.com/3d-models/day-140-roadworks-1scanaday-1c6169a2abbe495d836e2229a8b03ea0 +* author: emm (https://sketchfab.com/edemaistre) + +Model License: +* license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) +* requirements: Author must be credited. Commercial use is allowed. + +If you use this 3D model in your project be sure to copy paste this credit wherever you share it: +This work is based on "Day 140: Roadworks - 1scanaday" (https://sketchfab.com/3d-models/day-140-roadworks-1scanaday-1c6169a2abbe495d836e2229a8b03ea0) by emm (https://sketchfab.com/edemaistre) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) \ No newline at end of file diff --git a/assets/models/gltf/Roadworks/glTF/scene.bin b/assets/models/gltf/Roadworks/glTF/scene.bin new file mode 100644 index 0000000..7a0a209 Binary files /dev/null and b/assets/models/gltf/Roadworks/glTF/scene.bin differ diff --git a/assets/models/gltf/Roadworks/glTF/scene.gltf b/assets/models/gltf/Roadworks/glTF/scene.gltf new file mode 100644 index 0000000..e50a8ca --- /dev/null +++ b/assets/models/gltf/Roadworks/glTF/scene.gltf @@ -0,0 +1,424 @@ +{ + "accessors": [ + { + "bufferView": 2, + "componentType": 5126, + "count": 65532, + "max": [ + 3.219099998474121, + 8.287599563598633, + 1.488800048828125 + ], + "min": [ + -3.237600088119507, + -8.394100189208984, + -0.13539999723434448 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 786384, + "componentType": 5126, + "count": 65532, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9979249835014343, + 0.9070770144462585 + ], + "min": [ + 0.002136999974027276, + 0.07622399926185608 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "componentType": 5125, + "count": 294291, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 1572768, + "componentType": 5126, + "count": 65532, + "max": [ + 3.2007999420166016, + 8.30620002746582, + 1.5087000131607056 + ], + "min": [ + -2.9976000785827637, + -8.175000190734863, + -0.18539999425411224 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 2359152, + "componentType": 5126, + "count": 65532, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -0.9999564290046692, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 524256, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9677289724349976, + 0.9957910180091858 + ], + "min": [ + 0.0021830000914633274, + 0.1761929988861084 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 1177164, + "componentType": 5125, + "count": 361986, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 3145536, + "componentType": 5126, + "count": 65532, + "max": [ + 3.125, + 8.100000381469727, + 1.5 + ], + "min": [ + -3.2249999046325684, + -8.125, + -0.13740000128746033 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 3931920, + "componentType": 5126, + "count": 65532, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 1048512, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9977570176124573, + 0.9958289861679077 + ], + "min": [ + 0.002111000008881092, + 0.3192780017852783 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 2625108, + "componentType": 5125, + "count": 363723, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 4718304, + "componentType": 5126, + "count": 24892, + "max": [ + 2.5850000381469727, + 7.824999809265137, + 1.4800000190734863 + ], + "min": [ + -3.200000047683716, + -8.394100189208984, + -0.18080000579357147 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 5017008, + "componentType": 5126, + "count": 24892, + "max": [ + 1.0, + 0.9991532564163208, + 0.999998927116394 + ], + "min": [ + -1.0, + -0.9903380274772644, + -0.8494688272476196 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 1572768, + "componentType": 5126, + "count": 24892, + "max": [ + 0.9958109855651855, + 0.6689450144767761 + ], + "min": [ + 0.0021550001110881567, + 0.1762319952249527 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 4080000, + "componentType": 5125, + "count": 138123, + "type": "SCALAR" + } + ], + "asset": { + "extras": { + "author": "emm (https://sketchfab.com/edemaistre)", + "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", + "source": "https://sketchfab.com/3d-models/day-140-roadworks-1scanaday-1c6169a2abbe495d836e2229a8b03ea0", + "title": "Day 140: Roadworks - 1scanaday" + }, + "generator": "Sketchfab-12.66.0", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 4632492, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 1771904, + "byteOffset": 4632492, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 5315712, + "byteOffset": 6404396, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + } + ], + "buffers": [ + { + "byteLength": 11720108, + "uri": "scene.bin" + } + ], + "extensionsUsed": [ + "KHR_materials_unlit" + ], + "images": [ + { + "uri": "textures/main_baseColor.jpeg" + } + ], + "materials": [ + { + "doubleSided": true, + "extensions": { + "KHR_materials_unlit": {} + }, + "name": "main", + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0 + }, + "metallicFactor": 0.0 + } + } + ], + "meshes": [ + { + "name": "Object_0", + "primitives": [ + { + "attributes": { + "NORMAL": 1, + "POSITION": 0, + "TEXCOORD_0": 2 + }, + "indices": 3, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_1", + "primitives": [ + { + "attributes": { + "NORMAL": 5, + "POSITION": 4, + "TEXCOORD_0": 6 + }, + "indices": 7, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_2", + "primitives": [ + { + "attributes": { + "NORMAL": 9, + "POSITION": 8, + "TEXCOORD_0": 10 + }, + "indices": 11, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_3", + "primitives": [ + { + "attributes": { + "NORMAL": 13, + "POSITION": 12, + "TEXCOORD_0": 14 + }, + "indices": 15, + "material": 0, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "matrix": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 2.220446049250313e-16, + -1.0, + 0.0, + 0.0, + 1.0, + 2.220446049250313e-16, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ], + "name": "Sketchfab_model" + }, + { + "children": [ + 2, + 3, + 4, + 5 + ], + "name": "scaniverse-20210520-010537.obj.cleaner.materialmerger.gles" + }, + { + "mesh": 0, + "name": "Object_2" + }, + { + "mesh": 1, + "name": "Object_3" + }, + { + "mesh": 2, + "name": "Object_4" + }, + { + "mesh": 3, + "name": "Object_5" + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9987, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scene": 0, + "scenes": [ + { + "name": "Sketchfab_Scene", + "nodes": [ + 0 + ] + } + ], + "textures": [ + { + "sampler": 0, + "source": 0 + } + ] +} diff --git a/assets/models/gltf/Roadworks/glTF/textures/main_baseColor.jpeg b/assets/models/gltf/Roadworks/glTF/textures/main_baseColor.jpeg new file mode 100644 index 0000000..448eba8 Binary files /dev/null and b/assets/models/gltf/Roadworks/glTF/textures/main_baseColor.jpeg differ diff --git a/assets/models/gltf/Roadworks/license.txt b/assets/models/gltf/Roadworks/license.txt new file mode 100644 index 0000000..3d53b75 --- /dev/null +++ b/assets/models/gltf/Roadworks/license.txt @@ -0,0 +1,11 @@ +Model Information: +* title: Day 140: Roadworks - 1scanaday +* source: https://sketchfab.com/3d-models/day-140-roadworks-1scanaday-1c6169a2abbe495d836e2229a8b03ea0 +* author: emm (https://sketchfab.com/edemaistre) + +Model License: +* license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) +* requirements: Author must be credited. Commercial use is allowed. + +If you use this 3D model in your project be sure to copy paste this credit wherever you share it: +This work is based on "Day 140: Roadworks - 1scanaday" (https://sketchfab.com/3d-models/day-140-roadworks-1scanaday-1c6169a2abbe495d836e2229a8b03ea0) by emm (https://sketchfab.com/edemaistre) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) \ No newline at end of file diff --git a/dist/convert2xkt.cjs.js.LICENSE.txt b/dist/convert2xkt.cjs.js.LICENSE.txt deleted file mode 100644 index d9be85a..0000000 --- a/dist/convert2xkt.cjs.js.LICENSE.txt +++ /dev/null @@ -1,27 +0,0 @@ -/*! - -loaders.gl -https://loaders.gl/ -Copyright (C) 2015 Uber Technologies, Inc. -MIT License [http://www.opensource.org/licenses/mit-license.php] - -Pako -https://github.com/nodeca/pako -Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei Tuputcyn -MIT License [http://www.opensource.org/licenses/mit-license.php] - -zip.js -https://github.com/gildas-lormeau/zip.js -Copyright (C) 2021 Gildas Lormeau -BSD 3-Clause License [https://opensource.org/licenses/BSD-3-Clause] - -earcut -https://github.com/mapbox/earcut -Copyright (c) 2016, Mapbox -ISC License [https://opensource.org/licenses/ISC] - -web-ifc -https://github.com/tomvandig/web-ifc -Copyright (c) 2020-2021 web-ifc contributors -Mozilla Public License Version 2.0 -*/ diff --git a/dist/xeokit-convert.cjs.js.map b/dist/xeokit-convert.cjs.js.map new file mode 100644 index 0000000..bcea218 --- /dev/null +++ b/dist/xeokit-convert.cjs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"xeokit-convert.cjs.js","mappings":"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","sources":["webpack://convert2xkt/webpack/universalModuleDefinition","webpack://convert2xkt/external commonjs \"fs\"","webpack://convert2xkt/webpack/bootstrap","webpack://convert2xkt/webpack/runtime/define property getters","webpack://convert2xkt/webpack/runtime/hasOwnProperty shorthand","webpack://convert2xkt/webpack/runtime/make namespace object","webpack://convert2xkt/external commonjs \"@loaders.gl/polyfills\"","webpack://convert2xkt/./src/XKT_INFO.js","webpack://convert2xkt/./src/lib/math.js","webpack://convert2xkt/./src/XKTModel/lib/geometryCompression.js","webpack://convert2xkt/./src/constants.js","webpack://convert2xkt/./src/XKTModel/lib/buildEdgeIndices.js","webpack://convert2xkt/./src/XKTModel/lib/isTriangleMeshSolid.js","webpack://convert2xkt/./src/XKTModel/XKTMesh.js","webpack://convert2xkt/./src/XKTModel/XKTGeometry.js","webpack://convert2xkt/./src/XKTModel/XKTEntity.js","webpack://convert2xkt/./src/XKTModel/XKTTile.js","webpack://convert2xkt/./src/XKTModel/KDNode.js","webpack://convert2xkt/./src/XKTModel/XKTMetaObject.js","webpack://convert2xkt/./src/XKTModel/XKTPropertySet.js","webpack://convert2xkt/./src/XKTModel/XKTTexture.js","webpack://convert2xkt/./src/XKTModel/XKTTextureSet.js","webpack://convert2xkt/external commonjs \"@loaders.gl/core\"","webpack://convert2xkt/external commonjs \"@loaders.gl/textures\"","webpack://convert2xkt/external commonjs \"@loaders.gl/images\"","webpack://convert2xkt/./src/XKTModel/XKTModel.js","webpack://convert2xkt/./src/lib/mergeVertices.js","webpack://convert2xkt/external commonjs \"pako\"","webpack://convert2xkt/./src/XKTModel/writeXKTModelToArrayBuffer.js","webpack://convert2xkt/./src/lib/earcut.js","webpack://convert2xkt/./src/parsers/parseCityJSONIntoXKTModel.js","webpack://convert2xkt/./src/XKTModel/lib/utils.js","webpack://convert2xkt/external commonjs \"@loaders.gl/gltf\"","webpack://convert2xkt/./src/parsers/parseGLTFIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseGLTFJSONIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseIFCIntoXKTModel.js","webpack://convert2xkt/external commonjs \"@loaders.gl/las\"","webpack://convert2xkt/./src/parsers/parseLASIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseMetaModelIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parsePCDIntoXKTModel.js","webpack://convert2xkt/external commonjs \"@loaders.gl/ply\"","webpack://convert2xkt/./src/parsers/parsePLYIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseSTLIntoXKTModel.js","webpack://convert2xkt/./src/lib/faceToVertexNormals.js","webpack://convert2xkt/./src/geometryBuilders/buildBoxGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildBoxLinesGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildCylinderGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildGridGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildPlaneGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildSphereGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildTorusGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildVectorTextGeometry.js","webpack://convert2xkt/./src/XKTModel/lib/toArraybuffer.js","webpack://convert2xkt/./src/convert2xkt.js","webpack://convert2xkt/./index.dist.node.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"convert2xkt\"] = factory();\n\telse\n\t\troot[\"convert2xkt\"] = factory();\n})(global, () => {\nreturn ","module.exports = require(\"fs\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@loaders.gl/polyfills\");","/**\n * @desc Provides info on the XKT generated by xeokit-convert.\n */\nconst XKT_INFO = {\n\n /**\n * The XKT version generated by xeokit-convert.\n *\n * This is the XKT version that's modeled by {@link XKTModel}, serialized\n * by {@link writeXKTModelToArrayBuffer}, and written by {@link convert2xkt}.\n *\n * * Current XKT version: **10**\n * * [XKT format specs](https://github.com/xeokit/xeokit-convert/blob/main/specs/index.md)\n *\n * @property xktVersion\n * @type {number}\n */\n xktVersion: 10\n};\n\nexport {XKT_INFO};","// Some temporary vars to help avoid garbage collection\n\nconst doublePrecision = true;\nconst FloatArrayType = doublePrecision ? Float64Array : Float32Array;\n\nconst tempMat1 = new FloatArrayType(16);\nconst tempMat2 = new FloatArrayType(16);\nconst tempVec4 = new FloatArrayType(4);\n\n/**\n * @private\n */\nconst math = {\n\n MIN_DOUBLE: -Number.MAX_SAFE_INTEGER,\n MAX_DOUBLE: Number.MAX_SAFE_INTEGER,\n\n /**\n * The number of radiians in a degree (0.0174532925).\n * @property DEGTORAD\n * @type {Number}\n */\n DEGTORAD: 0.0174532925,\n\n /**\n * The number of degrees in a radian.\n * @property RADTODEG\n * @type {Number}\n */\n RADTODEG: 57.295779513,\n\n /**\n * Returns a new, uninitialized two-element vector.\n * @method vec2\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n vec2(values) {\n return new FloatArrayType(values || 2);\n },\n\n /**\n * Returns a new, uninitialized three-element vector.\n * @method vec3\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n vec3(values) {\n return new FloatArrayType(values || 3);\n },\n\n /**\n * Returns a new, uninitialized four-element vector.\n * @method vec4\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n vec4(values) {\n return new FloatArrayType(values || 4);\n },\n\n /**\n * Returns a new, uninitialized 3x3 matrix.\n * @method mat3\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n mat3(values) {\n return new FloatArrayType(values || 9);\n },\n\n /**\n * Converts a 3x3 matrix to 4x4\n * @method mat3ToMat4\n * @param mat3 3x3 matrix.\n * @param mat4 4x4 matrix\n * @static\n * @returns {Number[]}\n */\n mat3ToMat4(mat3, mat4 = new FloatArrayType(16)) {\n mat4[0] = mat3[0];\n mat4[1] = mat3[1];\n mat4[2] = mat3[2];\n mat4[3] = 0;\n mat4[4] = mat3[3];\n mat4[5] = mat3[4];\n mat4[6] = mat3[5];\n mat4[7] = 0;\n mat4[8] = mat3[6];\n mat4[9] = mat3[7];\n mat4[10] = mat3[8];\n mat4[11] = 0;\n mat4[12] = 0;\n mat4[13] = 0;\n mat4[14] = 0;\n mat4[15] = 1;\n return mat4;\n },\n\n /**\n * Returns a new, uninitialized 4x4 matrix.\n * @method mat4\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n mat4(values) {\n return new FloatArrayType(values || 16);\n },\n\n /**\n * Converts a 4x4 matrix to 3x3\n * @method mat4ToMat3\n * @param mat4 4x4 matrix.\n * @param mat3 3x3 matrix\n * @static\n * @returns {Number[]}\n */\n mat4ToMat3(mat4, mat3) { // TODO\n //return new FloatArrayType(values || 9);\n },\n\n /**\n * Returns a new UUID.\n * @method createUUID\n * @static\n * @return string The new UUID\n */\n createUUID: ((() => {\n const self = {};\n const lut = [];\n for (let i = 0; i < 256; i++) {\n lut[i] = (i < 16 ? '0' : '') + (i).toString(16);\n }\n return () => {\n const d0 = Math.random() * 0xffffffff | 0;\n const d1 = Math.random() * 0xffffffff | 0;\n const d2 = Math.random() * 0xffffffff | 0;\n const d3 = Math.random() * 0xffffffff | 0;\n return `${lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 0xff] + lut[d0 >> 24 & 0xff]}-${lut[d1 & 0xff]}${lut[d1 >> 8 & 0xff]}-${lut[d1 >> 16 & 0x0f | 0x40]}${lut[d1 >> 24 & 0xff]}-${lut[d2 & 0x3f | 0x80]}${lut[d2 >> 8 & 0xff]}-${lut[d2 >> 16 & 0xff]}${lut[d2 >> 24 & 0xff]}${lut[d3 & 0xff]}${lut[d3 >> 8 & 0xff]}${lut[d3 >> 16 & 0xff]}${lut[d3 >> 24 & 0xff]}`;\n };\n }))(),\n\n /**\n * Clamps a value to the given range.\n * @param {Number} value Value to clamp.\n * @param {Number} min Lower bound.\n * @param {Number} max Upper bound.\n * @returns {Number} Clamped result.\n */\n clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n },\n\n /**\n * Floating-point modulus\n * @method fmod\n * @static\n * @param {Number} a\n * @param {Number} b\n * @returns {*}\n */\n fmod(a, b) {\n if (a < b) {\n console.error(\"math.fmod : Attempting to find modulus within negative range - would be infinite loop - ignoring\");\n return a;\n }\n while (b <= a) {\n a -= b;\n }\n return a;\n },\n\n /**\n * Negates a four-element vector.\n * @method negateVec4\n * @static\n * @param {Array(Number)} v Vector to negate\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n negateVec4(v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = -v[0];\n dest[1] = -v[1];\n dest[2] = -v[2];\n dest[3] = -v[3];\n return dest;\n },\n\n /**\n * Adds one four-element vector to another.\n * @method addVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n addVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] + v[0];\n dest[1] = u[1] + v[1];\n dest[2] = u[2] + v[2];\n dest[3] = u[3] + v[3];\n return dest;\n },\n\n /**\n * Adds a scalar value to each element of a four-element vector.\n * @method addVec4Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n addVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] + s;\n dest[1] = v[1] + s;\n dest[2] = v[2] + s;\n dest[3] = v[3] + s;\n return dest;\n },\n\n /**\n * Adds one three-element vector to another.\n * @method addVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n addVec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] + v[0];\n dest[1] = u[1] + v[1];\n dest[2] = u[2] + v[2];\n return dest;\n },\n\n /**\n * Adds a scalar value to each element of a three-element vector.\n * @method addVec4Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n addVec3Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] + s;\n dest[1] = v[1] + s;\n dest[2] = v[2] + s;\n return dest;\n },\n\n /**\n * Subtracts one four-element vector from another.\n * @method subVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Vector to subtract\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n subVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] - v[0];\n dest[1] = u[1] - v[1];\n dest[2] = u[2] - v[2];\n dest[3] = u[3] - v[3];\n return dest;\n },\n\n /**\n * Subtracts one three-element vector from another.\n * @method subVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Vector to subtract\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n subVec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] - v[0];\n dest[1] = u[1] - v[1];\n dest[2] = u[2] - v[2];\n return dest;\n },\n\n /**\n * Subtracts one two-element vector from another.\n * @method subVec2\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Vector to subtract\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n subVec2(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] - v[0];\n dest[1] = u[1] - v[1];\n return dest;\n },\n\n /**\n * Subtracts a scalar value from each element of a four-element vector.\n * @method subVec4Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n subVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] - s;\n dest[1] = v[1] - s;\n dest[2] = v[2] - s;\n dest[3] = v[3] - s;\n return dest;\n },\n\n /**\n * Sets each element of a 4-element vector to a scalar value minus the value of that element.\n * @method subScalarVec4\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n subScalarVec4(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = s - v[0];\n dest[1] = s - v[1];\n dest[2] = s - v[2];\n dest[3] = s - v[3];\n return dest;\n },\n\n /**\n * Multiplies one three-element vector by another.\n * @method mulVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n mulVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] * v[0];\n dest[1] = u[1] * v[1];\n dest[2] = u[2] * v[2];\n dest[3] = u[3] * v[3];\n return dest;\n },\n\n /**\n * Multiplies each element of a four-element vector by a scalar.\n * @method mulVec34calar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n mulVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] * s;\n dest[1] = v[1] * s;\n dest[2] = v[2] * s;\n dest[3] = v[3] * s;\n return dest;\n },\n\n /**\n * Multiplies each element of a three-element vector by a scalar.\n * @method mulVec3Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n mulVec3Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] * s;\n dest[1] = v[1] * s;\n dest[2] = v[2] * s;\n return dest;\n },\n\n /**\n * Multiplies each element of a two-element vector by a scalar.\n * @method mulVec2Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n mulVec2Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] * s;\n dest[1] = v[1] * s;\n return dest;\n },\n\n /**\n * Divides one three-element vector by another.\n * @method divVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n divVec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] / v[0];\n dest[1] = u[1] / v[1];\n dest[2] = u[2] / v[2];\n return dest;\n },\n\n /**\n * Divides one four-element vector by another.\n * @method divVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n divVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] / v[0];\n dest[1] = u[1] / v[1];\n dest[2] = u[2] / v[2];\n dest[3] = u[3] / v[3];\n return dest;\n },\n\n /**\n * Divides a scalar by a three-element vector, returning a new vector.\n * @method divScalarVec3\n * @static\n * @param v vec3\n * @param s scalar\n * @param dest vec3 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divScalarVec3(s, v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = s / v[0];\n dest[1] = s / v[1];\n dest[2] = s / v[2];\n return dest;\n },\n\n /**\n * Divides a three-element vector by a scalar.\n * @method divVec3Scalar\n * @static\n * @param v vec3\n * @param s scalar\n * @param dest vec3 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divVec3Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] / s;\n dest[1] = v[1] / s;\n dest[2] = v[2] / s;\n return dest;\n },\n\n /**\n * Divides a four-element vector by a scalar.\n * @method divVec4Scalar\n * @static\n * @param v vec4\n * @param s scalar\n * @param dest vec4 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] / s;\n dest[1] = v[1] / s;\n dest[2] = v[2] / s;\n dest[3] = v[3] / s;\n return dest;\n },\n\n\n /**\n * Divides a scalar by a four-element vector, returning a new vector.\n * @method divScalarVec4\n * @static\n * @param s scalar\n * @param v vec4\n * @param dest vec4 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divScalarVec4(s, v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = s / v[0];\n dest[1] = s / v[1];\n dest[2] = s / v[2];\n dest[3] = s / v[3];\n return dest;\n },\n\n /**\n * Returns the dot product of two four-element vectors.\n * @method dotVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The dot product\n */\n dotVec4(u, v) {\n return (u[0] * v[0] + u[1] * v[1] + u[2] * v[2] + u[3] * v[3]);\n },\n\n /**\n * Returns the cross product of two four-element vectors.\n * @method cross3Vec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The cross product\n */\n cross3Vec4(u, v) {\n const u0 = u[0];\n const u1 = u[1];\n const u2 = u[2];\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n return [\n u1 * v2 - u2 * v1,\n u2 * v0 - u0 * v2,\n u0 * v1 - u1 * v0,\n 0.0];\n },\n\n /**\n * Returns the cross product of two three-element vectors.\n * @method cross3Vec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The cross product\n */\n cross3Vec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n const x = u[0];\n const y = u[1];\n const z = u[2];\n const x2 = v[0];\n const y2 = v[1];\n const z2 = v[2];\n dest[0] = y * z2 - z * y2;\n dest[1] = z * x2 - x * z2;\n dest[2] = x * y2 - y * x2;\n return dest;\n },\n\n\n sqLenVec4(v) { // TODO\n return math.dotVec4(v, v);\n },\n\n /**\n * Returns the length of a four-element vector.\n * @method lenVec4\n * @static\n * @param {Array(Number)} v The vector\n * @return The length\n */\n lenVec4(v) {\n return Math.sqrt(math.sqLenVec4(v));\n },\n\n /**\n * Returns the dot product of two three-element vectors.\n * @method dotVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The dot product\n */\n dotVec3(u, v) {\n return (u[0] * v[0] + u[1] * v[1] + u[2] * v[2]);\n },\n\n /**\n * Returns the dot product of two two-element vectors.\n * @method dotVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The dot product\n */\n dotVec2(u, v) {\n return (u[0] * v[0] + u[1] * v[1]);\n },\n\n\n sqLenVec3(v) {\n return math.dotVec3(v, v);\n },\n\n\n sqLenVec2(v) {\n return math.dotVec2(v, v);\n },\n\n /**\n * Returns the length of a three-element vector.\n * @method lenVec3\n * @static\n * @param {Array(Number)} v The vector\n * @return The length\n */\n lenVec3(v) {\n return Math.sqrt(math.sqLenVec3(v));\n },\n\n distVec3: ((() => {\n const vec = new FloatArrayType(3);\n return (v, w) => math.lenVec3(math.subVec3(v, w, vec));\n }))(),\n\n /**\n * Returns the length of a two-element vector.\n * @method lenVec2\n * @static\n * @param {Array(Number)} v The vector\n * @return The length\n */\n lenVec2(v) {\n return Math.sqrt(math.sqLenVec2(v));\n },\n\n distVec2: ((() => {\n const vec = new FloatArrayType(2);\n return (v, w) => math.lenVec2(math.subVec2(v, w, vec));\n }))(),\n\n /**\n * @method rcpVec3\n * @static\n * @param v vec3\n * @param dest vec3 - optional destination\n * @return [] dest if specified, v otherwise\n *\n */\n rcpVec3(v, dest) {\n return math.divScalarVec3(1.0, v, dest);\n },\n\n /**\n * Normalizes a four-element vector\n * @method normalizeVec4\n * @static\n * @param v vec4\n * @param dest vec4 - optional destination\n * @return [] dest if specified, v otherwise\n *\n */\n normalizeVec4(v, dest) {\n const f = 1.0 / math.lenVec4(v);\n return math.mulVec4Scalar(v, f, dest);\n },\n\n /**\n * Normalizes a three-element vector\n * @method normalizeVec4\n * @static\n */\n normalizeVec3(v, dest) {\n const f = 1.0 / math.lenVec3(v);\n return math.mulVec3Scalar(v, f, dest);\n },\n\n /**\n * Normalizes a two-element vector\n * @method normalizeVec2\n * @static\n */\n normalizeVec2(v, dest) {\n const f = 1.0 / math.lenVec2(v);\n return math.mulVec2Scalar(v, f, dest);\n },\n\n /**\n * Gets the angle between two vectors\n * @method angleVec3\n * @param v\n * @param w\n * @returns {number}\n */\n angleVec3(v, w) {\n let theta = math.dotVec3(v, w) / (Math.sqrt(math.sqLenVec3(v) * math.sqLenVec3(w)));\n theta = theta < -1 ? -1 : (theta > 1 ? 1 : theta); // Clamp to handle numerical problems\n return Math.acos(theta);\n },\n\n /**\n * Creates a three-element vector from the rotation part of a sixteen-element matrix.\n * @param m\n * @param dest\n */\n vec3FromMat4Scale: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n\n return (m, dest) => {\n\n tempVec3[0] = m[0];\n tempVec3[1] = m[1];\n tempVec3[2] = m[2];\n\n dest[0] = math.lenVec3(tempVec3);\n\n tempVec3[0] = m[4];\n tempVec3[1] = m[5];\n tempVec3[2] = m[6];\n\n dest[1] = math.lenVec3(tempVec3);\n\n tempVec3[0] = m[8];\n tempVec3[1] = m[9];\n tempVec3[2] = m[10];\n\n dest[2] = math.lenVec3(tempVec3);\n\n return dest;\n };\n }))(),\n\n /**\n * Converts an n-element vector to a JSON-serializable\n * array with values rounded to two decimal places.\n */\n vecToArray: ((() => {\n function trunc(v) {\n return Math.round(v * 100000) / 100000\n }\n\n return v => {\n v = Array.prototype.slice.call(v);\n for (let i = 0, len = v.length; i < len; i++) {\n v[i] = trunc(v[i]);\n }\n return v;\n };\n }))(),\n\n /**\n * Converts a 3-element vector from an array to an object of the form ````{x:999, y:999, z:999}````.\n * @param arr\n * @returns {{x: *, y: *, z: *}}\n */\n xyzArrayToObject(arr) {\n return {\"x\": arr[0], \"y\": arr[1], \"z\": arr[2]};\n },\n\n /**\n * Converts a 3-element vector object of the form ````{x:999, y:999, z:999}```` to an array.\n * @param xyz\n * @param [arry]\n * @returns {*[]}\n */\n xyzObjectToArray(xyz, arry) {\n arry = arry || new FloatArrayType(3);\n arry[0] = xyz.x;\n arry[1] = xyz.y;\n arry[2] = xyz.z;\n return arry;\n },\n\n /**\n * Duplicates a 4x4 identity matrix.\n * @method dupMat4\n * @static\n */\n dupMat4(m) {\n return m.slice(0, 16);\n },\n\n /**\n * Extracts a 3x3 matrix from a 4x4 matrix.\n * @method mat4To3\n * @static\n */\n mat4To3(m) {\n return [\n m[0], m[1], m[2],\n m[4], m[5], m[6],\n m[8], m[9], m[10]\n ];\n },\n\n /**\n * Returns a 4x4 matrix with each element set to the given scalar value.\n * @method m4s\n * @static\n */\n m4s(s) {\n return [\n s, s, s, s,\n s, s, s, s,\n s, s, s, s,\n s, s, s, s\n ];\n },\n\n /**\n * Returns a 4x4 matrix with each element set to zero.\n * @method setMat4ToZeroes\n * @static\n */\n setMat4ToZeroes() {\n return math.m4s(0.0);\n },\n\n /**\n * Returns a 4x4 matrix with each element set to 1.0.\n * @method setMat4ToOnes\n * @static\n */\n setMat4ToOnes() {\n return math.m4s(1.0);\n },\n\n /**\n * Returns a 4x4 matrix with each element set to 1.0.\n * @method setMat4ToOnes\n * @static\n */\n diagonalMat4v(v) {\n return new FloatArrayType([\n v[0], 0.0, 0.0, 0.0,\n 0.0, v[1], 0.0, 0.0,\n 0.0, 0.0, v[2], 0.0,\n 0.0, 0.0, 0.0, v[3]\n ]);\n },\n\n /**\n * Returns a 4x4 matrix with diagonal elements set to the given vector.\n * @method diagonalMat4c\n * @static\n */\n diagonalMat4c(x, y, z, w) {\n return math.diagonalMat4v([x, y, z, w]);\n },\n\n /**\n * Returns a 4x4 matrix with diagonal elements set to the given scalar.\n * @method diagonalMat4s\n * @static\n */\n diagonalMat4s(s) {\n return math.diagonalMat4c(s, s, s, s);\n },\n\n /**\n * Returns a 4x4 identity matrix.\n * @method identityMat4\n * @static\n */\n identityMat4(mat = new FloatArrayType(16)) {\n mat[0] = 1.0;\n mat[1] = 0.0;\n mat[2] = 0.0;\n mat[3] = 0.0;\n\n mat[4] = 0.0;\n mat[5] = 1.0;\n mat[6] = 0.0;\n mat[7] = 0.0;\n\n mat[8] = 0.0;\n mat[9] = 0.0;\n mat[10] = 1.0;\n mat[11] = 0.0;\n\n mat[12] = 0.0;\n mat[13] = 0.0;\n mat[14] = 0.0;\n mat[15] = 1.0;\n\n return mat;\n },\n\n /**\n * Returns a 3x3 identity matrix.\n * @method identityMat3\n * @static\n */\n identityMat3(mat = new FloatArrayType(9)) {\n mat[0] = 1.0;\n mat[1] = 0.0;\n mat[2] = 0.0;\n\n mat[3] = 0.0;\n mat[4] = 1.0;\n mat[5] = 0.0;\n\n mat[6] = 0.0;\n mat[7] = 0.0;\n mat[8] = 1.0;\n\n return mat;\n },\n\n /**\n * Tests if the given 4x4 matrix is the identity matrix.\n * @method isIdentityMat4\n * @static\n */\n isIdentityMat4(m) {\n if (m[0] !== 1.0 || m[1] !== 0.0 || m[2] !== 0.0 || m[3] !== 0.0 ||\n m[4] !== 0.0 || m[5] !== 1.0 || m[6] !== 0.0 || m[7] !== 0.0 ||\n m[8] !== 0.0 || m[9] !== 0.0 || m[10] !== 1.0 || m[11] !== 0.0 ||\n m[12] !== 0.0 || m[13] !== 0.0 || m[14] !== 0.0 || m[15] !== 1.0) {\n return false;\n }\n return true;\n },\n\n /**\n * Negates the given 4x4 matrix.\n * @method negateMat4\n * @static\n */\n negateMat4(m, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = -m[0];\n dest[1] = -m[1];\n dest[2] = -m[2];\n dest[3] = -m[3];\n dest[4] = -m[4];\n dest[5] = -m[5];\n dest[6] = -m[6];\n dest[7] = -m[7];\n dest[8] = -m[8];\n dest[9] = -m[9];\n dest[10] = -m[10];\n dest[11] = -m[11];\n dest[12] = -m[12];\n dest[13] = -m[13];\n dest[14] = -m[14];\n dest[15] = -m[15];\n return dest;\n },\n\n /**\n * Adds the given 4x4 matrices together.\n * @method addMat4\n * @static\n */\n addMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n dest[0] = a[0] + b[0];\n dest[1] = a[1] + b[1];\n dest[2] = a[2] + b[2];\n dest[3] = a[3] + b[3];\n dest[4] = a[4] + b[4];\n dest[5] = a[5] + b[5];\n dest[6] = a[6] + b[6];\n dest[7] = a[7] + b[7];\n dest[8] = a[8] + b[8];\n dest[9] = a[9] + b[9];\n dest[10] = a[10] + b[10];\n dest[11] = a[11] + b[11];\n dest[12] = a[12] + b[12];\n dest[13] = a[13] + b[13];\n dest[14] = a[14] + b[14];\n dest[15] = a[15] + b[15];\n return dest;\n },\n\n /**\n * Adds the given scalar to each element of the given 4x4 matrix.\n * @method addMat4Scalar\n * @static\n */\n addMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] + s;\n dest[1] = m[1] + s;\n dest[2] = m[2] + s;\n dest[3] = m[3] + s;\n dest[4] = m[4] + s;\n dest[5] = m[5] + s;\n dest[6] = m[6] + s;\n dest[7] = m[7] + s;\n dest[8] = m[8] + s;\n dest[9] = m[9] + s;\n dest[10] = m[10] + s;\n dest[11] = m[11] + s;\n dest[12] = m[12] + s;\n dest[13] = m[13] + s;\n dest[14] = m[14] + s;\n dest[15] = m[15] + s;\n return dest;\n },\n\n /**\n * Adds the given scalar to each element of the given 4x4 matrix.\n * @method addScalarMat4\n * @static\n */\n addScalarMat4(s, m, dest) {\n return math.addMat4Scalar(m, s, dest);\n },\n\n /**\n * Subtracts the second 4x4 matrix from the first.\n * @method subMat4\n * @static\n */\n subMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n dest[0] = a[0] - b[0];\n dest[1] = a[1] - b[1];\n dest[2] = a[2] - b[2];\n dest[3] = a[3] - b[3];\n dest[4] = a[4] - b[4];\n dest[5] = a[5] - b[5];\n dest[6] = a[6] - b[6];\n dest[7] = a[7] - b[7];\n dest[8] = a[8] - b[8];\n dest[9] = a[9] - b[9];\n dest[10] = a[10] - b[10];\n dest[11] = a[11] - b[11];\n dest[12] = a[12] - b[12];\n dest[13] = a[13] - b[13];\n dest[14] = a[14] - b[14];\n dest[15] = a[15] - b[15];\n return dest;\n },\n\n /**\n * Subtracts the given scalar from each element of the given 4x4 matrix.\n * @method subMat4Scalar\n * @static\n */\n subMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] - s;\n dest[1] = m[1] - s;\n dest[2] = m[2] - s;\n dest[3] = m[3] - s;\n dest[4] = m[4] - s;\n dest[5] = m[5] - s;\n dest[6] = m[6] - s;\n dest[7] = m[7] - s;\n dest[8] = m[8] - s;\n dest[9] = m[9] - s;\n dest[10] = m[10] - s;\n dest[11] = m[11] - s;\n dest[12] = m[12] - s;\n dest[13] = m[13] - s;\n dest[14] = m[14] - s;\n dest[15] = m[15] - s;\n return dest;\n },\n\n /**\n * Subtracts the given scalar from each element of the given 4x4 matrix.\n * @method subScalarMat4\n * @static\n */\n subScalarMat4(s, m, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = s - m[0];\n dest[1] = s - m[1];\n dest[2] = s - m[2];\n dest[3] = s - m[3];\n dest[4] = s - m[4];\n dest[5] = s - m[5];\n dest[6] = s - m[6];\n dest[7] = s - m[7];\n dest[8] = s - m[8];\n dest[9] = s - m[9];\n dest[10] = s - m[10];\n dest[11] = s - m[11];\n dest[12] = s - m[12];\n dest[13] = s - m[13];\n dest[14] = s - m[14];\n dest[15] = s - m[15];\n return dest;\n },\n\n /**\n * Multiplies the two given 4x4 matrix by each other.\n * @method mulMat4\n * @static\n */\n mulMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = a[0];\n\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n const a30 = a[12];\n const a31 = a[13];\n const a32 = a[14];\n const a33 = a[15];\n const b00 = b[0];\n const b01 = b[1];\n const b02 = b[2];\n const b03 = b[3];\n const b10 = b[4];\n const b11 = b[5];\n const b12 = b[6];\n const b13 = b[7];\n const b20 = b[8];\n const b21 = b[9];\n const b22 = b[10];\n const b23 = b[11];\n const b30 = b[12];\n const b31 = b[13];\n const b32 = b[14];\n const b33 = b[15];\n\n dest[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30;\n dest[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31;\n dest[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32;\n dest[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33;\n dest[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30;\n dest[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31;\n dest[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32;\n dest[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33;\n dest[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30;\n dest[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31;\n dest[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32;\n dest[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33;\n dest[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30;\n dest[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31;\n dest[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32;\n dest[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33;\n\n return dest;\n },\n\n /**\n * Multiplies the two given 3x3 matrices by each other.\n * @method mulMat4\n * @static\n */\n mulMat3(a, b, dest) {\n if (!dest) {\n dest = new FloatArrayType(9);\n }\n\n const a11 = a[0];\n const a12 = a[3];\n const a13 = a[6];\n const a21 = a[1];\n const a22 = a[4];\n const a23 = a[7];\n const a31 = a[2];\n const a32 = a[5];\n const a33 = a[8];\n const b11 = b[0];\n const b12 = b[3];\n const b13 = b[6];\n const b21 = b[1];\n const b22 = b[4];\n const b23 = b[7];\n const b31 = b[2];\n const b32 = b[5];\n const b33 = b[8];\n\n dest[0] = a11 * b11 + a12 * b21 + a13 * b31;\n dest[3] = a11 * b12 + a12 * b22 + a13 * b32;\n dest[6] = a11 * b13 + a12 * b23 + a13 * b33;\n\n dest[1] = a21 * b11 + a22 * b21 + a23 * b31;\n dest[4] = a21 * b12 + a22 * b22 + a23 * b32;\n dest[7] = a21 * b13 + a22 * b23 + a23 * b33;\n\n dest[2] = a31 * b11 + a32 * b21 + a33 * b31;\n dest[5] = a31 * b12 + a32 * b22 + a33 * b32;\n dest[8] = a31 * b13 + a32 * b23 + a33 * b33;\n\n return dest;\n },\n\n /**\n * Multiplies each element of the given 4x4 matrix by the given scalar.\n * @method mulMat4Scalar\n * @static\n */\n mulMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] * s;\n dest[1] = m[1] * s;\n dest[2] = m[2] * s;\n dest[3] = m[3] * s;\n dest[4] = m[4] * s;\n dest[5] = m[5] * s;\n dest[6] = m[6] * s;\n dest[7] = m[7] * s;\n dest[8] = m[8] * s;\n dest[9] = m[9] * s;\n dest[10] = m[10] * s;\n dest[11] = m[11] * s;\n dest[12] = m[12] * s;\n dest[13] = m[13] * s;\n dest[14] = m[14] * s;\n dest[15] = m[15] * s;\n return dest;\n },\n\n /**\n * Multiplies the given 4x4 matrix by the given four-element vector.\n * @method mulMat4v4\n * @static\n */\n mulMat4v4(m, v, dest = math.vec4()) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n const v3 = v[3];\n dest[0] = m[0] * v0 + m[4] * v1 + m[8] * v2 + m[12] * v3;\n dest[1] = m[1] * v0 + m[5] * v1 + m[9] * v2 + m[13] * v3;\n dest[2] = m[2] * v0 + m[6] * v1 + m[10] * v2 + m[14] * v3;\n dest[3] = m[3] * v0 + m[7] * v1 + m[11] * v2 + m[15] * v3;\n return dest;\n },\n\n /**\n * Transposes the given 4x4 matrix.\n * @method transposeMat4\n * @static\n */\n transposeMat4(mat, dest) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n const m4 = mat[4];\n\n const m14 = mat[14];\n const m8 = mat[8];\n const m13 = mat[13];\n const m12 = mat[12];\n const m9 = mat[9];\n if (!dest || mat === dest) {\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a12 = mat[6];\n const a13 = mat[7];\n const a23 = mat[11];\n mat[1] = m4;\n mat[2] = m8;\n mat[3] = m12;\n mat[4] = a01;\n mat[6] = m9;\n mat[7] = m13;\n mat[8] = a02;\n mat[9] = a12;\n mat[11] = m14;\n mat[12] = a03;\n mat[13] = a13;\n mat[14] = a23;\n return mat;\n }\n dest[0] = mat[0];\n dest[1] = m4;\n dest[2] = m8;\n dest[3] = m12;\n dest[4] = mat[1];\n dest[5] = mat[5];\n dest[6] = m9;\n dest[7] = m13;\n dest[8] = mat[2];\n dest[9] = mat[6];\n dest[10] = mat[10];\n dest[11] = m14;\n dest[12] = mat[3];\n dest[13] = mat[7];\n dest[14] = mat[11];\n dest[15] = mat[15];\n return dest;\n },\n\n /**\n * Transposes the given 3x3 matrix.\n *\n * @method transposeMat3\n * @static\n */\n transposeMat3(mat, dest) {\n if (dest === mat) {\n const a01 = mat[1];\n const a02 = mat[2];\n const a12 = mat[5];\n dest[1] = mat[3];\n dest[2] = mat[6];\n dest[3] = a01;\n dest[5] = mat[7];\n dest[6] = a02;\n dest[7] = a12;\n } else {\n dest[0] = mat[0];\n dest[1] = mat[3];\n dest[2] = mat[6];\n dest[3] = mat[1];\n dest[4] = mat[4];\n dest[5] = mat[7];\n dest[6] = mat[2];\n dest[7] = mat[5];\n dest[8] = mat[8];\n }\n return dest;\n },\n\n /**\n * Returns the determinant of the given 4x4 matrix.\n * @method determinantMat4\n * @static\n */\n determinantMat4(mat) {\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = mat[0];\n\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a10 = mat[4];\n const a11 = mat[5];\n const a12 = mat[6];\n const a13 = mat[7];\n const a20 = mat[8];\n const a21 = mat[9];\n const a22 = mat[10];\n const a23 = mat[11];\n const a30 = mat[12];\n const a31 = mat[13];\n const a32 = mat[14];\n const a33 = mat[15];\n return a30 * a21 * a12 * a03 - a20 * a31 * a12 * a03 - a30 * a11 * a22 * a03 + a10 * a31 * a22 * a03 +\n a20 * a11 * a32 * a03 - a10 * a21 * a32 * a03 - a30 * a21 * a02 * a13 + a20 * a31 * a02 * a13 +\n a30 * a01 * a22 * a13 - a00 * a31 * a22 * a13 - a20 * a01 * a32 * a13 + a00 * a21 * a32 * a13 +\n a30 * a11 * a02 * a23 - a10 * a31 * a02 * a23 - a30 * a01 * a12 * a23 + a00 * a31 * a12 * a23 +\n a10 * a01 * a32 * a23 - a00 * a11 * a32 * a23 - a20 * a11 * a02 * a33 + a10 * a21 * a02 * a33 +\n a20 * a01 * a12 * a33 - a00 * a21 * a12 * a33 - a10 * a01 * a22 * a33 + a00 * a11 * a22 * a33;\n },\n\n /**\n * Returns the inverse of the given 4x4 matrix.\n * @method inverseMat4\n * @static\n */\n inverseMat4(mat, dest) {\n if (!dest) {\n dest = mat;\n }\n\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = mat[0];\n\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a10 = mat[4];\n const a11 = mat[5];\n const a12 = mat[6];\n const a13 = mat[7];\n const a20 = mat[8];\n const a21 = mat[9];\n const a22 = mat[10];\n const a23 = mat[11];\n const a30 = mat[12];\n const a31 = mat[13];\n const a32 = mat[14];\n const a33 = mat[15];\n const b00 = a00 * a11 - a01 * a10;\n const b01 = a00 * a12 - a02 * a10;\n const b02 = a00 * a13 - a03 * a10;\n const b03 = a01 * a12 - a02 * a11;\n const b04 = a01 * a13 - a03 * a11;\n const b05 = a02 * a13 - a03 * a12;\n const b06 = a20 * a31 - a21 * a30;\n const b07 = a20 * a32 - a22 * a30;\n const b08 = a20 * a33 - a23 * a30;\n const b09 = a21 * a32 - a22 * a31;\n const b10 = a21 * a33 - a23 * a31;\n const b11 = a22 * a33 - a23 * a32;\n\n // Calculate the determinant (inlined to avoid double-caching)\n const invDet = 1 / (b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06);\n\n dest[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet;\n dest[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet;\n dest[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet;\n dest[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet;\n dest[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet;\n dest[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet;\n dest[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet;\n dest[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet;\n dest[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet;\n dest[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet;\n dest[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet;\n dest[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet;\n dest[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet;\n dest[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet;\n dest[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet;\n dest[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet;\n\n return dest;\n },\n\n /**\n * Returns the trace of the given 4x4 matrix.\n * @method traceMat4\n * @static\n */\n traceMat4(m) {\n return (m[0] + m[5] + m[10] + m[15]);\n },\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4\n * @static\n */\n translationMat4v(v, dest) {\n const m = dest || math.identityMat4();\n m[12] = v[0];\n m[13] = v[1];\n m[14] = v[2];\n return m;\n },\n\n /**\n * Returns 3x3 translation matrix.\n * @method translationMat3\n * @static\n */\n translationMat3v(v, dest) {\n const m = dest || math.identityMat3();\n m[6] = v[0];\n m[7] = v[1];\n return m;\n },\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4c\n * @static\n */\n translationMat4c: ((() => {\n const xyz = new FloatArrayType(3);\n return (x, y, z, dest) => {\n xyz[0] = x;\n xyz[1] = y;\n xyz[2] = z;\n return math.translationMat4v(xyz, dest);\n };\n }))(),\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4s\n * @static\n */\n translationMat4s(s, dest) {\n return math.translationMat4c(s, s, s, dest);\n },\n\n /**\n * Efficiently post-concatenates a translation to the given matrix.\n * @param v\n * @param m\n */\n translateMat4v(xyz, m) {\n return math.translateMat4c(xyz[0], xyz[1], xyz[2], m);\n },\n\n /**\n * Efficiently post-concatenates a translation to the given matrix.\n * @param x\n * @param y\n * @param z\n * @param m\n */\n OLDtranslateMat4c(x, y, z, m) {\n\n const m12 = m[12];\n m[0] += m12 * x;\n m[4] += m12 * y;\n m[8] += m12 * z;\n\n const m13 = m[13];\n m[1] += m13 * x;\n m[5] += m13 * y;\n m[9] += m13 * z;\n\n const m14 = m[14];\n m[2] += m14 * x;\n m[6] += m14 * y;\n m[10] += m14 * z;\n\n const m15 = m[15];\n m[3] += m15 * x;\n m[7] += m15 * y;\n m[11] += m15 * z;\n\n return m;\n },\n\n translateMat4c(x, y, z, m) {\n\n const m3 = m[3];\n m[0] += m3 * x;\n m[1] += m3 * y;\n m[2] += m3 * z;\n\n const m7 = m[7];\n m[4] += m7 * x;\n m[5] += m7 * y;\n m[6] += m7 * z;\n\n const m11 = m[11];\n m[8] += m11 * x;\n m[9] += m11 * y;\n m[10] += m11 * z;\n\n const m15 = m[15];\n m[12] += m15 * x;\n m[13] += m15 * y;\n m[14] += m15 * z;\n\n return m;\n },\n /**\n * Returns 4x4 rotation matrix.\n * @method rotationMat4v\n * @static\n */\n rotationMat4v(anglerad, axis, m) {\n const ax = math.normalizeVec4([axis[0], axis[1], axis[2], 0.0], []);\n const s = Math.sin(anglerad);\n const c = Math.cos(anglerad);\n const q = 1.0 - c;\n\n const x = ax[0];\n const y = ax[1];\n const z = ax[2];\n\n let xy;\n let yz;\n let zx;\n let xs;\n let ys;\n let zs;\n\n //xx = x * x; used once\n //yy = y * y; used once\n //zz = z * z; used once\n xy = x * y;\n yz = y * z;\n zx = z * x;\n xs = x * s;\n ys = y * s;\n zs = z * s;\n\n m = m || math.mat4();\n\n m[0] = (q * x * x) + c;\n m[1] = (q * xy) + zs;\n m[2] = (q * zx) - ys;\n m[3] = 0.0;\n\n m[4] = (q * xy) - zs;\n m[5] = (q * y * y) + c;\n m[6] = (q * yz) + xs;\n m[7] = 0.0;\n\n m[8] = (q * zx) + ys;\n m[9] = (q * yz) - xs;\n m[10] = (q * z * z) + c;\n m[11] = 0.0;\n\n m[12] = 0.0;\n m[13] = 0.0;\n m[14] = 0.0;\n m[15] = 1.0;\n\n return m;\n },\n\n /**\n * Returns 4x4 rotation matrix.\n * @method rotationMat4c\n * @static\n */\n rotationMat4c(anglerad, x, y, z, mat) {\n return math.rotationMat4v(anglerad, [x, y, z], mat);\n },\n\n /**\n * Returns 4x4 scale matrix.\n * @method scalingMat4v\n * @static\n */\n scalingMat4v(v, m = math.identityMat4()) {\n m[0] = v[0];\n m[5] = v[1];\n m[10] = v[2];\n return m;\n },\n\n /**\n * Returns 3x3 scale matrix.\n * @method scalingMat3v\n * @static\n */\n scalingMat3v(v, m = math.identityMat3()) {\n m[0] = v[0];\n m[4] = v[1];\n return m;\n },\n\n /**\n * Returns 4x4 scale matrix.\n * @method scalingMat4c\n * @static\n */\n scalingMat4c: ((() => {\n const xyz = new FloatArrayType(3);\n return (x, y, z, dest) => {\n xyz[0] = x;\n xyz[1] = y;\n xyz[2] = z;\n return math.scalingMat4v(xyz, dest);\n };\n }))(),\n\n /**\n * Efficiently post-concatenates a scaling to the given matrix.\n * @method scaleMat4c\n * @param x\n * @param y\n * @param z\n * @param m\n */\n scaleMat4c(x, y, z, m) {\n\n m[0] *= x;\n m[4] *= y;\n m[8] *= z;\n\n m[1] *= x;\n m[5] *= y;\n m[9] *= z;\n\n m[2] *= x;\n m[6] *= y;\n m[10] *= z;\n\n m[3] *= x;\n m[7] *= y;\n m[11] *= z;\n return m;\n },\n\n /**\n * Efficiently post-concatenates a scaling to the given matrix.\n * @method scaleMat4c\n * @param xyz\n * @param m\n */\n scaleMat4v(xyz, m) {\n\n const x = xyz[0];\n const y = xyz[1];\n const z = xyz[2];\n\n m[0] *= x;\n m[4] *= y;\n m[8] *= z;\n m[1] *= x;\n m[5] *= y;\n m[9] *= z;\n m[2] *= x;\n m[6] *= y;\n m[10] *= z;\n m[3] *= x;\n m[7] *= y;\n m[11] *= z;\n\n return m;\n },\n\n /**\n * Returns 4x4 scale matrix.\n * @method scalingMat4s\n * @static\n */\n scalingMat4s(s) {\n return math.scalingMat4c(s, s, s);\n },\n\n /**\n * Creates a matrix from a quaternion rotation and vector translation\n *\n * @param {Number[]} q Rotation quaternion\n * @param {Number[]} v Translation vector\n * @param {Number[]} dest Destination matrix\n * @returns {Number[]} dest\n */\n rotationTranslationMat4(q, v, dest = math.mat4()) {\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n dest[0] = 1 - (yy + zz);\n dest[1] = xy + wz;\n dest[2] = xz - wy;\n dest[3] = 0;\n dest[4] = xy - wz;\n dest[5] = 1 - (xx + zz);\n dest[6] = yz + wx;\n dest[7] = 0;\n dest[8] = xz + wy;\n dest[9] = yz - wx;\n dest[10] = 1 - (xx + yy);\n dest[11] = 0;\n dest[12] = v[0];\n dest[13] = v[1];\n dest[14] = v[2];\n dest[15] = 1;\n\n return dest;\n },\n\n /**\n * Gets Euler angles from a 4x4 matrix.\n *\n * @param {Number[]} mat The 4x4 matrix.\n * @param {String} order Desired Euler angle order: \"XYZ\", \"YXZ\", \"ZXY\" etc.\n * @param {Number[]} [dest] Destination Euler angles, created by default.\n * @returns {Number[]} The Euler angles.\n */\n mat4ToEuler(mat, order, dest = math.vec4()) {\n const clamp = math.clamp;\n\n // Assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const m11 = mat[0];\n\n const m12 = mat[4];\n const m13 = mat[8];\n const m21 = mat[1];\n const m22 = mat[5];\n const m23 = mat[9];\n const m31 = mat[2];\n const m32 = mat[6];\n const m33 = mat[10];\n\n if (order === 'XYZ') {\n\n dest[1] = Math.asin(clamp(m13, -1, 1));\n\n if (Math.abs(m13) < 0.99999) {\n dest[0] = Math.atan2(-m23, m33);\n dest[2] = Math.atan2(-m12, m11);\n } else {\n dest[0] = Math.atan2(m32, m22);\n dest[2] = 0;\n\n }\n\n } else if (order === 'YXZ') {\n\n dest[0] = Math.asin(-clamp(m23, -1, 1));\n\n if (Math.abs(m23) < 0.99999) {\n dest[1] = Math.atan2(m13, m33);\n dest[2] = Math.atan2(m21, m22);\n } else {\n dest[1] = Math.atan2(-m31, m11);\n dest[2] = 0;\n }\n\n } else if (order === 'ZXY') {\n\n dest[0] = Math.asin(clamp(m32, -1, 1));\n\n if (Math.abs(m32) < 0.99999) {\n dest[1] = Math.atan2(-m31, m33);\n dest[2] = Math.atan2(-m12, m22);\n } else {\n dest[1] = 0;\n dest[2] = Math.atan2(m21, m11);\n }\n\n } else if (order === 'ZYX') {\n\n dest[1] = Math.asin(-clamp(m31, -1, 1));\n\n if (Math.abs(m31) < 0.99999) {\n dest[0] = Math.atan2(m32, m33);\n dest[2] = Math.atan2(m21, m11);\n } else {\n dest[0] = 0;\n dest[2] = Math.atan2(-m12, m22);\n }\n\n } else if (order === 'YZX') {\n\n dest[2] = Math.asin(clamp(m21, -1, 1));\n\n if (Math.abs(m21) < 0.99999) {\n dest[0] = Math.atan2(-m23, m22);\n dest[1] = Math.atan2(-m31, m11);\n } else {\n dest[0] = 0;\n dest[1] = Math.atan2(m13, m33);\n }\n\n } else if (order === 'XZY') {\n\n dest[2] = Math.asin(-clamp(m12, -1, 1));\n\n if (Math.abs(m12) < 0.99999) {\n dest[0] = Math.atan2(m32, m22);\n dest[1] = Math.atan2(m13, m11);\n } else {\n dest[0] = Math.atan2(-m23, m33);\n dest[1] = 0;\n }\n }\n\n return dest;\n },\n\n composeMat4(position, quaternion, scale, mat = math.mat4()) {\n math.quaternionToRotationMat4(quaternion, mat);\n math.scaleMat4v(scale, mat);\n math.translateMat4v(position, mat);\n\n return mat;\n },\n\n decomposeMat4: (() => {\n\n const vec = new FloatArrayType(3);\n const matrix = new FloatArrayType(16);\n\n return function decompose(mat, position, quaternion, scale) {\n\n vec[0] = mat[0];\n vec[1] = mat[1];\n vec[2] = mat[2];\n\n let sx = math.lenVec3(vec);\n\n vec[0] = mat[4];\n vec[1] = mat[5];\n vec[2] = mat[6];\n\n const sy = math.lenVec3(vec);\n\n vec[8] = mat[8];\n vec[9] = mat[9];\n vec[10] = mat[10];\n\n const sz = math.lenVec3(vec);\n\n // if determine is negative, we need to invert one scale\n const det = math.determinantMat4(mat);\n\n if (det < 0) {\n sx = -sx;\n }\n\n position[0] = mat[12];\n position[1] = mat[13];\n position[2] = mat[14];\n\n // scale the rotation part\n matrix.set(mat);\n\n const invSX = 1 / sx;\n const invSY = 1 / sy;\n const invSZ = 1 / sz;\n\n matrix[0] *= invSX;\n matrix[1] *= invSX;\n matrix[2] *= invSX;\n\n matrix[4] *= invSY;\n matrix[5] *= invSY;\n matrix[6] *= invSY;\n\n matrix[8] *= invSZ;\n matrix[9] *= invSZ;\n matrix[10] *= invSZ;\n\n math.mat4ToQuaternion(matrix, quaternion);\n\n scale[0] = sx;\n scale[1] = sy;\n scale[2] = sz;\n\n return this;\n\n };\n\n })(),\n\n /**\n * Returns a 4x4 'lookat' viewing transform matrix.\n * @method lookAtMat4v\n * @param pos vec3 position of the viewer\n * @param target vec3 point the viewer is looking at\n * @param up vec3 pointing \"up\"\n * @param dest mat4 Optional, mat4 matrix will be written into\n *\n * @return {mat4} dest if specified, a new mat4 otherwise\n */\n lookAtMat4v(pos, target, up, dest) {\n if (!dest) {\n dest = math.mat4();\n }\n\n const posx = pos[0];\n const posy = pos[1];\n const posz = pos[2];\n const upx = up[0];\n const upy = up[1];\n const upz = up[2];\n const targetx = target[0];\n const targety = target[1];\n const targetz = target[2];\n\n if (posx === targetx && posy === targety && posz === targetz) {\n return math.identityMat4();\n }\n\n let z0;\n let z1;\n let z2;\n let x0;\n let x1;\n let x2;\n let y0;\n let y1;\n let y2;\n let len;\n\n //vec3.direction(eye, center, z);\n z0 = posx - targetx;\n z1 = posy - targety;\n z2 = posz - targetz;\n\n // normalize (no check needed for 0 because of early return)\n len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n\n //vec3.normalize(vec3.cross(up, z, x));\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n //vec3.normalize(vec3.cross(z, x, y));\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n\n len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n dest[0] = x0;\n dest[1] = y0;\n dest[2] = z0;\n dest[3] = 0;\n dest[4] = x1;\n dest[5] = y1;\n dest[6] = z1;\n dest[7] = 0;\n dest[8] = x2;\n dest[9] = y2;\n dest[10] = z2;\n dest[11] = 0;\n dest[12] = -(x0 * posx + x1 * posy + x2 * posz);\n dest[13] = -(y0 * posx + y1 * posy + y2 * posz);\n dest[14] = -(z0 * posx + z1 * posy + z2 * posz);\n dest[15] = 1;\n\n return dest;\n },\n\n /**\n * Returns a 4x4 'lookat' viewing transform matrix.\n * @method lookAtMat4c\n * @static\n */\n lookAtMat4c(posx, posy, posz, targetx, targety, targetz, upx, upy, upz) {\n return math.lookAtMat4v([posx, posy, posz], [targetx, targety, targetz], [upx, upy, upz], []);\n },\n\n /**\n * Returns a 4x4 orthographic projection matrix.\n * @method orthoMat4c\n * @static\n */\n orthoMat4c(left, right, bottom, top, near, far, dest) {\n if (!dest) {\n dest = math.mat4();\n }\n const rl = (right - left);\n const tb = (top - bottom);\n const fn = (far - near);\n\n dest[0] = 2.0 / rl;\n dest[1] = 0.0;\n dest[2] = 0.0;\n dest[3] = 0.0;\n\n dest[4] = 0.0;\n dest[5] = 2.0 / tb;\n dest[6] = 0.0;\n dest[7] = 0.0;\n\n dest[8] = 0.0;\n dest[9] = 0.0;\n dest[10] = -2.0 / fn;\n dest[11] = 0.0;\n\n dest[12] = -(left + right) / rl;\n dest[13] = -(top + bottom) / tb;\n dest[14] = -(far + near) / fn;\n dest[15] = 1.0;\n\n return dest;\n },\n\n /**\n * Returns a 4x4 perspective projection matrix.\n * @method frustumMat4v\n * @static\n */\n frustumMat4v(fmin, fmax, m) {\n if (!m) {\n m = math.mat4();\n }\n\n const fmin4 = [fmin[0], fmin[1], fmin[2], 0.0];\n const fmax4 = [fmax[0], fmax[1], fmax[2], 0.0];\n\n math.addVec4(fmax4, fmin4, tempMat1);\n math.subVec4(fmax4, fmin4, tempMat2);\n\n const t = 2.0 * fmin4[2];\n\n const tempMat20 = tempMat2[0];\n const tempMat21 = tempMat2[1];\n const tempMat22 = tempMat2[2];\n\n m[0] = t / tempMat20;\n m[1] = 0.0;\n m[2] = 0.0;\n m[3] = 0.0;\n\n m[4] = 0.0;\n m[5] = t / tempMat21;\n m[6] = 0.0;\n m[7] = 0.0;\n\n m[8] = tempMat1[0] / tempMat20;\n m[9] = tempMat1[1] / tempMat21;\n m[10] = -tempMat1[2] / tempMat22;\n m[11] = -1.0;\n\n m[12] = 0.0;\n m[13] = 0.0;\n m[14] = -t * fmax4[2] / tempMat22;\n m[15] = 0.0;\n\n return m;\n },\n\n /**\n * Returns a 4x4 perspective projection matrix.\n * @method frustumMat4v\n * @static\n */\n frustumMat4(left, right, bottom, top, near, far, dest) {\n if (!dest) {\n dest = math.mat4();\n }\n const rl = (right - left);\n const tb = (top - bottom);\n const fn = (far - near);\n dest[0] = (near * 2) / rl;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n dest[4] = 0;\n dest[5] = (near * 2) / tb;\n dest[6] = 0;\n dest[7] = 0;\n dest[8] = (right + left) / rl;\n dest[9] = (top + bottom) / tb;\n dest[10] = -(far + near) / fn;\n dest[11] = -1;\n dest[12] = 0;\n dest[13] = 0;\n dest[14] = -(far * near * 2) / fn;\n dest[15] = 0;\n return dest;\n },\n\n /**\n * Returns a 4x4 perspective projection matrix.\n * @method perspectiveMat4v\n * @static\n */\n perspectiveMat4(fovyrad, aspectratio, znear, zfar, m) {\n const pmin = [];\n const pmax = [];\n\n pmin[2] = znear;\n pmax[2] = zfar;\n\n pmax[1] = pmin[2] * Math.tan(fovyrad / 2.0);\n pmin[1] = -pmax[1];\n\n pmax[0] = pmax[1] * aspectratio;\n pmin[0] = -pmax[0];\n\n return math.frustumMat4v(pmin, pmax, m);\n },\n\n /**\n * Transforms a three-element position by a 4x4 matrix.\n * @method transformPoint3\n * @static\n */\n transformPoint3(m, p, dest = math.vec3()) {\n\n const x = p[0];\n const y = p[1];\n const z = p[2];\n\n dest[0] = (m[0] * x) + (m[4] * y) + (m[8] * z) + m[12];\n dest[1] = (m[1] * x) + (m[5] * y) + (m[9] * z) + m[13];\n dest[2] = (m[2] * x) + (m[6] * y) + (m[10] * z) + m[14];\n\n return dest;\n },\n\n /**\n * Transforms a homogeneous coordinate by a 4x4 matrix.\n * @method transformPoint3\n * @static\n */\n transformPoint4(m, v, dest = math.vec4()) {\n dest[0] = m[0] * v[0] + m[4] * v[1] + m[8] * v[2] + m[12] * v[3];\n dest[1] = m[1] * v[0] + m[5] * v[1] + m[9] * v[2] + m[13] * v[3];\n dest[2] = m[2] * v[0] + m[6] * v[1] + m[10] * v[2] + m[14] * v[3];\n dest[3] = m[3] * v[0] + m[7] * v[1] + m[11] * v[2] + m[15] * v[3];\n\n return dest;\n },\n\n\n /**\n * Transforms an array of three-element positions by a 4x4 matrix.\n * @method transformPoints3\n * @static\n */\n transformPoints3(m, points, points2) {\n const result = points2 || [];\n const len = points.length;\n let p0;\n let p1;\n let p2;\n let pi;\n\n // cache values\n const m0 = m[0];\n\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n let r;\n\n for (let i = 0; i < len; ++i) {\n\n // cache values\n pi = points[i];\n\n p0 = pi[0];\n p1 = pi[1];\n p2 = pi[2];\n\n r = result[i] || (result[i] = [0, 0, 0]);\n\n r[0] = (m0 * p0) + (m4 * p1) + (m8 * p2) + m12;\n r[1] = (m1 * p0) + (m5 * p1) + (m9 * p2) + m13;\n r[2] = (m2 * p0) + (m6 * p1) + (m10 * p2) + m14;\n r[3] = (m3 * p0) + (m7 * p1) + (m11 * p2) + m15;\n }\n\n result.length = len;\n\n return result;\n },\n\n /**\n * Transforms an array of positions by a 4x4 matrix.\n * @method transformPositions3\n * @static\n */\n transformPositions3(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 3) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /**\n * Transforms an array of positions by a 4x4 matrix.\n * @method transformPositions4\n * @static\n */\n transformPositions4(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 4) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /**\n * Transforms a three-element vector by a 4x4 matrix.\n * @method transformVec3\n * @static\n */\n transformVec3(m, v, dest) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n dest = dest || this.vec3();\n dest[0] = (m[0] * v0) + (m[4] * v1) + (m[8] * v2);\n dest[1] = (m[1] * v0) + (m[5] * v1) + (m[9] * v2);\n dest[2] = (m[2] * v0) + (m[6] * v1) + (m[10] * v2);\n return dest;\n },\n\n /**\n * Transforms a four-element vector by a 4x4 matrix.\n * @method transformVec4\n * @static\n */\n transformVec4(m, v, dest) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n const v3 = v[3];\n dest = dest || math.vec4();\n dest[0] = m[0] * v0 + m[4] * v1 + m[8] * v2 + m[12] * v3;\n dest[1] = m[1] * v0 + m[5] * v1 + m[9] * v2 + m[13] * v3;\n dest[2] = m[2] * v0 + m[6] * v1 + m[10] * v2 + m[14] * v3;\n dest[3] = m[3] * v0 + m[7] * v1 + m[11] * v2 + m[15] * v3;\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the x-axis\n *\n * @method rotateVec3X\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3X(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[0];\n r[1] = p[1] * Math.cos(c) - p[2] * Math.sin(c);\n r[2] = p[1] * Math.sin(c) + p[2] * Math.cos(c);\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the y-axis\n *\n * @method rotateVec3Y\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3Y(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[2] * Math.sin(c) + p[0] * Math.cos(c);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(c) - p[0] * Math.sin(c);\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the z-axis\n *\n * @method rotateVec3Z\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3Z(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[0] * Math.cos(c) - p[1] * Math.sin(c);\n r[1] = p[0] * Math.sin(c) + p[1] * Math.cos(c);\n r[2] = p[2];\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Transforms a four-element vector by a 4x4 projection matrix.\n *\n * @method projectVec4\n * @param {Number[]} p 3D View-space coordinate\n * @param {Number[]} q 2D Projected coordinate\n * @returns {Number[]} 2D Projected coordinate\n * @static\n */\n projectVec4(p, q) {\n const f = 1.0 / p[3];\n q = q || math.vec2();\n q[0] = v[0] * f;\n q[1] = v[1] * f;\n return q;\n },\n\n /**\n * Unprojects a three-element vector.\n *\n * @method unprojectVec3\n * @param {Number[]} p 3D Projected coordinate\n * @param {Number[]} viewMat View matrix\n * @returns {Number[]} projMat Projection matrix\n * @static\n */\n unprojectVec3: ((() => {\n const mat = new FloatArrayType(16);\n const mat2 = new FloatArrayType(16);\n const mat3 = new FloatArrayType(16);\n return function (p, viewMat, projMat, q) {\n return this.transformVec3(this.mulMat4(this.inverseMat4(viewMat, mat), this.inverseMat4(projMat, mat2), mat3), p, q)\n };\n }))(),\n\n /**\n * Linearly interpolates between two 3D vectors.\n * @method lerpVec3\n * @static\n */\n lerpVec3(t, t1, t2, p1, p2, dest) {\n const result = dest || math.vec3();\n const f = (t - t1) / (t2 - t1);\n result[0] = p1[0] + (f * (p2[0] - p1[0]));\n result[1] = p1[1] + (f * (p2[1] - p1[1]));\n result[2] = p1[2] + (f * (p2[2] - p1[2]));\n return result;\n },\n\n\n /**\n * Flattens a two-dimensional array into a one-dimensional array.\n *\n * @method flatten\n * @static\n * @param {Array of Arrays} a A 2D array\n * @returns Flattened 1D array\n */\n flatten(a) {\n\n const result = [];\n\n let i;\n let leni;\n let j;\n let lenj;\n let item;\n\n for (i = 0, leni = a.length; i < leni; i++) {\n item = a[i];\n for (j = 0, lenj = item.length; j < lenj; j++) {\n result.push(item[j]);\n }\n }\n\n return result;\n },\n\n\n identityQuaternion(dest = math.vec4()) {\n dest[0] = 0.0;\n dest[1] = 0.0;\n dest[2] = 0.0;\n dest[3] = 1.0;\n return dest;\n },\n\n /**\n * Initializes a quaternion from Euler angles.\n *\n * @param {Number[]} euler The Euler angles.\n * @param {String} order Euler angle order: \"XYZ\", \"YXZ\", \"ZXY\" etc.\n * @param {Number[]} [dest] Destination quaternion, created by default.\n * @returns {Number[]} The quaternion.\n */\n eulerToQuaternion(euler, order, dest = math.vec4()) {\n // http://www.mathworks.com/matlabcentral/fileexchange/\n // \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n //\tcontent/SpinCalc.m\n\n const a = (euler[0] * math.DEGTORAD) / 2;\n const b = (euler[1] * math.DEGTORAD) / 2;\n const c = (euler[2] * math.DEGTORAD) / 2;\n\n const c1 = Math.cos(a);\n const c2 = Math.cos(b);\n const c3 = Math.cos(c);\n const s1 = Math.sin(a);\n const s2 = Math.sin(b);\n const s3 = Math.sin(c);\n\n if (order === 'XYZ') {\n\n dest[0] = s1 * c2 * c3 + c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 - s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 + s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n } else if (order === 'YXZ') {\n\n dest[0] = s1 * c2 * c3 + c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 - s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 - s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 + s1 * s2 * s3;\n\n } else if (order === 'ZXY') {\n\n dest[0] = s1 * c2 * c3 - c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 + s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 + s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n } else if (order === 'ZYX') {\n\n dest[0] = s1 * c2 * c3 - c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 + s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 - s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 + s1 * s2 * s3;\n\n } else if (order === 'YZX') {\n\n dest[0] = s1 * c2 * c3 + c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 + s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 - s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n } else if (order === 'XZY') {\n\n dest[0] = s1 * c2 * c3 - c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 - s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 + s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 + s1 * s2 * s3;\n }\n\n return dest;\n },\n\n mat4ToQuaternion(m, dest = math.vec4()) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n // Assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const m11 = m[0];\n const m12 = m[4];\n const m13 = m[8];\n const m21 = m[1];\n const m22 = m[5];\n const m23 = m[9];\n const m31 = m[2];\n const m32 = m[6];\n const m33 = m[10];\n let s;\n\n const trace = m11 + m22 + m33;\n\n if (trace > 0) {\n\n s = 0.5 / Math.sqrt(trace + 1.0);\n\n dest[3] = 0.25 / s;\n dest[0] = (m32 - m23) * s;\n dest[1] = (m13 - m31) * s;\n dest[2] = (m21 - m12) * s;\n\n } else if (m11 > m22 && m11 > m33) {\n\n s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n\n dest[3] = (m32 - m23) / s;\n dest[0] = 0.25 * s;\n dest[1] = (m12 + m21) / s;\n dest[2] = (m13 + m31) / s;\n\n } else if (m22 > m33) {\n\n s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n\n dest[3] = (m13 - m31) / s;\n dest[0] = (m12 + m21) / s;\n dest[1] = 0.25 * s;\n dest[2] = (m23 + m32) / s;\n\n } else {\n\n s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n\n dest[3] = (m21 - m12) / s;\n dest[0] = (m13 + m31) / s;\n dest[1] = (m23 + m32) / s;\n dest[2] = 0.25 * s;\n }\n\n return dest;\n },\n\n vec3PairToQuaternion(u, v, dest = math.vec4()) {\n const norm_u_norm_v = Math.sqrt(math.dotVec3(u, u) * math.dotVec3(v, v));\n let real_part = norm_u_norm_v + math.dotVec3(u, v);\n\n if (real_part < 0.00000001 * norm_u_norm_v) {\n\n // If u and v are exactly opposite, rotate 180 degrees\n // around an arbitrary orthogonal axis. Axis normalisation\n // can happen later, when we normalise the quaternion.\n\n real_part = 0.0;\n\n if (Math.abs(u[0]) > Math.abs(u[2])) {\n\n dest[0] = -u[1];\n dest[1] = u[0];\n dest[2] = 0;\n\n } else {\n dest[0] = 0;\n dest[1] = -u[2];\n dest[2] = u[1]\n }\n\n } else {\n\n // Otherwise, build quaternion the standard way.\n math.cross3Vec3(u, v, dest);\n }\n\n dest[3] = real_part;\n\n return math.normalizeQuaternion(dest);\n },\n\n angleAxisToQuaternion(angleAxis, dest = math.vec4()) {\n const halfAngle = angleAxis[3] / 2.0;\n const fsin = Math.sin(halfAngle);\n dest[0] = fsin * angleAxis[0];\n dest[1] = fsin * angleAxis[1];\n dest[2] = fsin * angleAxis[2];\n dest[3] = Math.cos(halfAngle);\n return dest;\n },\n\n quaternionToEuler: ((() => {\n const mat = new FloatArrayType(16);\n return (q, order, dest) => {\n dest = dest || math.vec3();\n math.quaternionToRotationMat4(q, mat);\n math.mat4ToEuler(mat, order, dest);\n return dest;\n };\n }))(),\n\n mulQuaternions(p, q, dest = math.vec4()) {\n const p0 = p[0];\n const p1 = p[1];\n const p2 = p[2];\n const p3 = p[3];\n const q0 = q[0];\n const q1 = q[1];\n const q2 = q[2];\n const q3 = q[3];\n dest[0] = p3 * q0 + p0 * q3 + p1 * q2 - p2 * q1;\n dest[1] = p3 * q1 + p1 * q3 + p2 * q0 - p0 * q2;\n dest[2] = p3 * q2 + p2 * q3 + p0 * q1 - p1 * q0;\n dest[3] = p3 * q3 - p0 * q0 - p1 * q1 - p2 * q2;\n return dest;\n },\n\n vec3ApplyQuaternion(q, vec, dest = math.vec3()) {\n const x = vec[0];\n const y = vec[1];\n const z = vec[2];\n\n const qx = q[0];\n const qy = q[1];\n const qz = q[2];\n const qw = q[3];\n\n // calculate quat * vector\n\n const ix = qw * x + qy * z - qz * y;\n const iy = qw * y + qz * x - qx * z;\n const iz = qw * z + qx * y - qy * x;\n const iw = -qx * x - qy * y - qz * z;\n\n // calculate result * inverse quat\n\n dest[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n dest[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n dest[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\n return dest;\n },\n\n quaternionToMat4(q, dest) {\n\n dest = math.identityMat4(dest);\n\n const q0 = q[0]; //x\n const q1 = q[1]; //y\n const q2 = q[2]; //z\n const q3 = q[3]; //w\n\n const tx = 2.0 * q0;\n const ty = 2.0 * q1;\n const tz = 2.0 * q2;\n\n const twx = tx * q3;\n const twy = ty * q3;\n const twz = tz * q3;\n\n const txx = tx * q0;\n const txy = ty * q0;\n const txz = tz * q0;\n\n const tyy = ty * q1;\n const tyz = tz * q1;\n const tzz = tz * q2;\n\n dest[0] = 1.0 - (tyy + tzz);\n dest[1] = txy + twz;\n dest[2] = txz - twy;\n\n dest[4] = txy - twz;\n dest[5] = 1.0 - (txx + tzz);\n dest[6] = tyz + twx;\n\n dest[8] = txz + twy;\n dest[9] = tyz - twx;\n\n dest[10] = 1.0 - (txx + tyy);\n\n return dest;\n },\n\n quaternionToRotationMat4(q, m) {\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n m[0] = 1 - (yy + zz);\n m[4] = xy - wz;\n m[8] = xz + wy;\n\n m[1] = xy + wz;\n m[5] = 1 - (xx + zz);\n m[9] = yz - wx;\n\n m[2] = xz - wy;\n m[6] = yz + wx;\n m[10] = 1 - (xx + yy);\n\n // last column\n m[3] = 0;\n m[7] = 0;\n m[11] = 0;\n\n // bottom row\n m[12] = 0;\n m[13] = 0;\n m[14] = 0;\n m[15] = 1;\n\n return m;\n },\n\n normalizeQuaternion(q, dest = q) {\n const len = math.lenVec4([q[0], q[1], q[2], q[3]]);\n dest[0] = q[0] / len;\n dest[1] = q[1] / len;\n dest[2] = q[2] / len;\n dest[3] = q[3] / len;\n return dest;\n },\n\n conjugateQuaternion(q, dest = q) {\n dest[0] = -q[0];\n dest[1] = -q[1];\n dest[2] = -q[2];\n dest[3] = q[3];\n return dest;\n },\n\n inverseQuaternion(q, dest) {\n return math.normalizeQuaternion(math.conjugateQuaternion(q, dest));\n },\n\n quaternionToAngleAxis(q, angleAxis = math.vec4()) {\n q = math.normalizeQuaternion(q, tempVec4);\n const q3 = q[3];\n const angle = 2 * Math.acos(q3);\n const s = Math.sqrt(1 - q3 * q3);\n if (s < 0.001) { // test to avoid divide by zero, s is always positive due to sqrt\n angleAxis[0] = q[0];\n angleAxis[1] = q[1];\n angleAxis[2] = q[2];\n } else {\n angleAxis[0] = q[0] / s;\n angleAxis[1] = q[1] / s;\n angleAxis[2] = q[2] / s;\n }\n angleAxis[3] = angle; // * 57.295779579;\n return angleAxis;\n },\n\n //------------------------------------------------------------------------------------------------------------------\n // Boundaries\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns a new, uninitialized 3D axis-aligned bounding box.\n *\n * @private\n */\n AABB3(values) {\n return new FloatArrayType(values || 6);\n },\n\n /**\n * Returns a new, uninitialized 2D axis-aligned bounding box.\n *\n * @private\n */\n AABB2(values) {\n return new FloatArrayType(values || 4);\n },\n\n /**\n * Returns a new, uninitialized 3D oriented bounding box (OBB).\n *\n * @private\n */\n OBB3(values) {\n return new FloatArrayType(values || 32);\n },\n\n /**\n * Returns a new, uninitialized 2D oriented bounding box (OBB).\n *\n * @private\n */\n OBB2(values) {\n return new FloatArrayType(values || 16);\n },\n\n /** Returns a new 3D bounding sphere */\n Sphere3(x, y, z, r) {\n return new FloatArrayType([x, y, z, r]);\n },\n\n /**\n * Transforms an OBB3 by a 4x4 matrix.\n *\n * @private\n */\n transformOBB3(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 4) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /** Returns true if the first AABB contains the second AABB.\n * @param aabb1\n * @param aabb2\n * @returns {boolean}\n */\n containsAABB3: function (aabb1, aabb2) {\n const result = (\n aabb1[0] <= aabb2[0] && aabb2[3] <= aabb1[3] &&\n aabb1[1] <= aabb2[1] && aabb2[4] <= aabb1[4] &&\n aabb1[2] <= aabb2[2] && aabb2[5] <= aabb1[5]);\n return result;\n },\n\n /**\n * Gets the diagonal size of an AABB3 given as minima and maxima.\n *\n * @private\n */\n getAABB3Diag: ((() => {\n\n const min = new FloatArrayType(3);\n const max = new FloatArrayType(3);\n const tempVec3 = new FloatArrayType(3);\n\n return aabb => {\n\n min[0] = aabb[0];\n min[1] = aabb[1];\n min[2] = aabb[2];\n\n max[0] = aabb[3];\n max[1] = aabb[4];\n max[2] = aabb[5];\n\n math.subVec3(max, min, tempVec3);\n\n return Math.abs(math.lenVec3(tempVec3));\n };\n }))(),\n\n /**\n * Get a diagonal boundary size that is symmetrical about the given point.\n *\n * @private\n */\n getAABB3DiagPoint: ((() => {\n\n const min = new FloatArrayType(3);\n const max = new FloatArrayType(3);\n const tempVec3 = new FloatArrayType(3);\n\n return (aabb, p) => {\n\n min[0] = aabb[0];\n min[1] = aabb[1];\n min[2] = aabb[2];\n\n max[0] = aabb[3];\n max[1] = aabb[4];\n max[2] = aabb[5];\n\n const diagVec = math.subVec3(max, min, tempVec3);\n\n const xneg = p[0] - aabb[0];\n const xpos = aabb[3] - p[0];\n const yneg = p[1] - aabb[1];\n const ypos = aabb[4] - p[1];\n const zneg = p[2] - aabb[2];\n const zpos = aabb[5] - p[2];\n\n diagVec[0] += (xneg > xpos) ? xneg : xpos;\n diagVec[1] += (yneg > ypos) ? yneg : ypos;\n diagVec[2] += (zneg > zpos) ? zneg : zpos;\n\n return Math.abs(math.lenVec3(diagVec));\n };\n }))(),\n\n /**\n * Gets the center of an AABB.\n *\n * @private\n */\n getAABB3Center(aabb, dest) {\n const r = dest || math.vec3();\n\n r[0] = (aabb[0] + aabb[3]) / 2;\n r[1] = (aabb[1] + aabb[4]) / 2;\n r[2] = (aabb[2] + aabb[5]) / 2;\n\n return r;\n },\n\n /**\n * Gets the center of a 2D AABB.\n *\n * @private\n */\n getAABB2Center(aabb, dest) {\n const r = dest || math.vec2();\n\n r[0] = (aabb[2] + aabb[0]) / 2;\n r[1] = (aabb[3] + aabb[1]) / 2;\n\n return r;\n },\n\n /**\n * Collapses a 3D axis-aligned boundary, ready to expand to fit 3D points.\n * Creates new AABB if none supplied.\n *\n * @private\n */\n collapseAABB3(aabb = math.AABB3()) {\n aabb[0] = math.MAX_DOUBLE;\n aabb[1] = math.MAX_DOUBLE;\n aabb[2] = math.MAX_DOUBLE;\n aabb[3] = -math.MAX_DOUBLE;\n aabb[4] = -math.MAX_DOUBLE;\n aabb[5] = -math.MAX_DOUBLE;\n\n return aabb;\n },\n\n /**\n * Converts an axis-aligned 3D boundary into an oriented boundary consisting of\n * an array of eight 3D positions, one for each corner of the boundary.\n *\n * @private\n */\n AABB3ToOBB3(aabb, obb = math.OBB3()) {\n obb[0] = aabb[0];\n obb[1] = aabb[1];\n obb[2] = aabb[2];\n obb[3] = 1;\n\n obb[4] = aabb[3];\n obb[5] = aabb[1];\n obb[6] = aabb[2];\n obb[7] = 1;\n\n obb[8] = aabb[3];\n obb[9] = aabb[4];\n obb[10] = aabb[2];\n obb[11] = 1;\n\n obb[12] = aabb[0];\n obb[13] = aabb[4];\n obb[14] = aabb[2];\n obb[15] = 1;\n\n obb[16] = aabb[0];\n obb[17] = aabb[1];\n obb[18] = aabb[5];\n obb[19] = 1;\n\n obb[20] = aabb[3];\n obb[21] = aabb[1];\n obb[22] = aabb[5];\n obb[23] = 1;\n\n obb[24] = aabb[3];\n obb[25] = aabb[4];\n obb[26] = aabb[5];\n obb[27] = 1;\n\n obb[28] = aabb[0];\n obb[29] = aabb[4];\n obb[30] = aabb[5];\n obb[31] = 1;\n\n return obb;\n },\n\n /**\n * Finds the minimum axis-aligned 3D boundary enclosing the homogeneous 3D points (x,y,z,w) given in a flattened array.\n *\n * @private\n */\n positions3ToAABB3: ((() => {\n\n const p = new FloatArrayType(3);\n\n return (positions, aabb, positionsDecodeMatrix) => {\n aabb = aabb || math.AABB3();\n\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = -math.MAX_DOUBLE;\n let ymax = -math.MAX_DOUBLE;\n let zmax = -math.MAX_DOUBLE;\n\n let x;\n let y;\n let z;\n\n for (let i = 0, len = positions.length; i < len; i += 3) {\n\n if (positionsDecodeMatrix) {\n\n p[0] = positions[i + 0];\n p[1] = positions[i + 1];\n p[2] = positions[i + 2];\n\n math.decompressPosition(p, positionsDecodeMatrix, p);\n\n x = p[0];\n y = p[1];\n z = p[2];\n\n } else {\n x = positions[i + 0];\n y = positions[i + 1];\n z = positions[i + 2];\n }\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (z < zmin) {\n zmin = z;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n\n if (z > zmax) {\n zmax = z;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = zmin;\n aabb[3] = xmax;\n aabb[4] = ymax;\n aabb[5] = zmax;\n\n return aabb;\n };\n }))(),\n\n /**\n * Finds the minimum axis-aligned 3D boundary enclosing the homogeneous 3D points (x,y,z,w) given in a flattened array.\n *\n * @private\n */\n OBB3ToAABB3(obb, aabb = math.AABB3()) {\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = -math.MAX_DOUBLE;\n let ymax = -math.MAX_DOUBLE;\n let zmax = -math.MAX_DOUBLE;\n\n let x;\n let y;\n let z;\n\n for (let i = 0, len = obb.length; i < len; i += 4) {\n\n x = obb[i + 0];\n y = obb[i + 1];\n z = obb[i + 2];\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (z < zmin) {\n zmin = z;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n\n if (z > zmax) {\n zmax = z;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = zmin;\n aabb[3] = xmax;\n aabb[4] = ymax;\n aabb[5] = zmax;\n\n return aabb;\n },\n\n /**\n * Finds the minimum axis-aligned 3D boundary enclosing the given 3D points.\n *\n * @private\n */\n points3ToAABB3(points, aabb = math.AABB3()) {\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = -math.MAX_DOUBLE;\n let ymax = -math.MAX_DOUBLE;\n let zmax = -math.MAX_DOUBLE;\n\n let x;\n let y;\n let z;\n\n for (let i = 0, len = points.length; i < len; i++) {\n\n x = points[i][0];\n y = points[i][1];\n z = points[i][2];\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (z < zmin) {\n zmin = z;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n\n if (z > zmax) {\n zmax = z;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = zmin;\n aabb[3] = xmax;\n aabb[4] = ymax;\n aabb[5] = zmax;\n\n return aabb;\n },\n\n /**\n * Finds the minimum boundary sphere enclosing the given 3D points.\n *\n * @private\n */\n points3ToSphere3: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n\n return (points, sphere) => {\n\n sphere = sphere || math.vec4();\n\n let x = 0;\n let y = 0;\n let z = 0;\n\n let i;\n const numPoints = points.length;\n\n for (i = 0; i < numPoints; i++) {\n x += points[i][0];\n y += points[i][1];\n z += points[i][2];\n }\n\n sphere[0] = x / numPoints;\n sphere[1] = y / numPoints;\n sphere[2] = z / numPoints;\n\n let radius = 0;\n let dist;\n\n for (i = 0; i < numPoints; i++) {\n\n dist = Math.abs(math.lenVec3(math.subVec3(points[i], sphere, tempVec3)));\n\n if (dist > radius) {\n radius = dist;\n }\n }\n\n sphere[3] = radius;\n\n return sphere;\n };\n }))(),\n\n /**\n * Finds the minimum boundary sphere enclosing the given 3D positions.\n *\n * @private\n */\n positions3ToSphere3: ((() => {\n\n const tempVec3a = new FloatArrayType(3);\n const tempVec3b = new FloatArrayType(3);\n\n return (positions, sphere) => {\n\n sphere = sphere || math.vec4();\n\n let x = 0;\n let y = 0;\n let z = 0;\n\n let i;\n const lenPositions = positions.length;\n let radius = 0;\n\n for (i = 0; i < lenPositions; i += 3) {\n x += positions[i];\n y += positions[i + 1];\n z += positions[i + 2];\n }\n\n const numPositions = lenPositions / 3;\n\n sphere[0] = x / numPositions;\n sphere[1] = y / numPositions;\n sphere[2] = z / numPositions;\n\n let dist;\n\n for (i = 0; i < lenPositions; i += 3) {\n\n tempVec3a[0] = positions[i];\n tempVec3a[1] = positions[i + 1];\n tempVec3a[2] = positions[i + 2];\n\n dist = Math.abs(math.lenVec3(math.subVec3(tempVec3a, sphere, tempVec3b)));\n\n if (dist > radius) {\n radius = dist;\n }\n }\n\n sphere[3] = radius;\n\n return sphere;\n };\n }))(),\n\n /**\n * Finds the minimum boundary sphere enclosing the given 3D points.\n *\n * @private\n */\n OBB3ToSphere3: ((() => {\n\n const point = new FloatArrayType(3);\n const tempVec3 = new FloatArrayType(3);\n\n return (points, sphere) => {\n\n sphere = sphere || math.vec4();\n\n let x = 0;\n let y = 0;\n let z = 0;\n\n let i;\n const lenPoints = points.length;\n const numPoints = lenPoints / 4;\n\n for (i = 0; i < lenPoints; i += 4) {\n x += points[i + 0];\n y += points[i + 1];\n z += points[i + 2];\n }\n\n sphere[0] = x / numPoints;\n sphere[1] = y / numPoints;\n sphere[2] = z / numPoints;\n\n let radius = 0;\n let dist;\n\n for (i = 0; i < lenPoints; i += 4) {\n\n point[0] = points[i + 0];\n point[1] = points[i + 1];\n point[2] = points[i + 2];\n\n dist = Math.abs(math.lenVec3(math.subVec3(point, sphere, tempVec3)));\n\n if (dist > radius) {\n radius = dist;\n }\n }\n\n sphere[3] = radius;\n\n return sphere;\n };\n }))(),\n\n /**\n * Gets the center of a bounding sphere.\n *\n * @private\n */\n getSphere3Center(sphere, dest = math.vec3()) {\n dest[0] = sphere[0];\n dest[1] = sphere[1];\n dest[2] = sphere[2];\n\n return dest;\n },\n\n /**\n * Expands the first axis-aligned 3D boundary to enclose the second, if required.\n *\n * @private\n */\n expandAABB3(aabb1, aabb2) {\n\n if (aabb1[0] > aabb2[0]) {\n aabb1[0] = aabb2[0];\n }\n\n if (aabb1[1] > aabb2[1]) {\n aabb1[1] = aabb2[1];\n }\n\n if (aabb1[2] > aabb2[2]) {\n aabb1[2] = aabb2[2];\n }\n\n if (aabb1[3] < aabb2[3]) {\n aabb1[3] = aabb2[3];\n }\n\n if (aabb1[4] < aabb2[4]) {\n aabb1[4] = aabb2[4];\n }\n\n if (aabb1[5] < aabb2[5]) {\n aabb1[5] = aabb2[5];\n }\n\n return aabb1;\n },\n\n /**\n * Expands an axis-aligned 3D boundary to enclose the given point, if needed.\n *\n * @private\n */\n expandAABB3Point3(aabb, p) {\n\n if (aabb[0] > p[0]) {\n aabb[0] = p[0];\n }\n\n if (aabb[1] > p[1]) {\n aabb[1] = p[1];\n }\n\n if (aabb[2] > p[2]) {\n aabb[2] = p[2];\n }\n\n if (aabb[3] < p[0]) {\n aabb[3] = p[0];\n }\n\n if (aabb[4] < p[1]) {\n aabb[4] = p[1];\n }\n\n if (aabb[5] < p[2]) {\n aabb[5] = p[2];\n }\n\n return aabb;\n },\n\n /**\n * Calculates the normal vector of a triangle.\n *\n * @private\n */\n triangleNormal(a, b, c, normal = math.vec3()) {\n const p1x = b[0] - a[0];\n const p1y = b[1] - a[1];\n const p1z = b[2] - a[2];\n\n const p2x = c[0] - a[0];\n const p2y = c[1] - a[1];\n const p2z = c[2] - a[2];\n\n const p3x = p1y * p2z - p1z * p2y;\n const p3y = p1z * p2x - p1x * p2z;\n const p3z = p1x * p2y - p1y * p2x;\n\n const mag = Math.sqrt(p3x * p3x + p3y * p3y + p3z * p3z);\n if (mag === 0) {\n normal[0] = 0;\n normal[1] = 0;\n normal[2] = 0;\n } else {\n normal[0] = p3x / mag;\n normal[1] = p3y / mag;\n normal[2] = p3z / mag;\n }\n\n return normal\n }\n};\n\nexport {math};","import {math} from \"../../lib/math.js\";\n\nfunction quantizePositions (positions, lenPositions, aabb, quantizedPositions) {\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n const xwid = aabb[3] - xmin;\n const ywid = aabb[4] - ymin;\n const zwid = aabb[5] - zmin;\n const maxInt = 65535;\n const xMultiplier = maxInt / xwid;\n const yMultiplier = maxInt / ywid;\n const zMultiplier = maxInt / zwid;\n const verify = (num) => num >= 0 ? num : 0;\n for (let i = 0; i < lenPositions; i += 3) {\n quantizedPositions[i + 0] = Math.floor(verify(positions[i + 0] - xmin) * xMultiplier);\n quantizedPositions[i + 1] = Math.floor(verify(positions[i + 1] - ymin) * yMultiplier);\n quantizedPositions[i + 2] = Math.floor(verify(positions[i + 2] - zmin) * zMultiplier);\n }\n}\n\nfunction compressPosition(p, aabb, q) {\n const multiplier = new Float32Array([\n aabb[3] !== aabb[0] ? 65535 / (aabb[3] - aabb[0]) : 0,\n aabb[4] !== aabb[1] ? 65535 / (aabb[4] - aabb[1]) : 0,\n aabb[5] !== aabb[2] ? 65535 / (aabb[5] - aabb[2]) : 0\n ]);\n q[0] = Math.floor((p[0] - aabb[0]) * multiplier[0]);\n q[1] = Math.floor((p[1] - aabb[1]) * multiplier[1]);\n q[2] = Math.floor((p[2] - aabb[2]) * multiplier[2]);\n}\n\nvar createPositionsDecodeMatrix = (function () {\n const translate = math.mat4();\n const scale = math.mat4();\n return function (aabb, positionsDecodeMatrix) {\n positionsDecodeMatrix = positionsDecodeMatrix || math.mat4();\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n const xwid = aabb[3] - xmin;\n const ywid = aabb[4] - ymin;\n const zwid = aabb[5] - zmin;\n const maxInt = 65535;\n math.identityMat4(translate);\n math.translationMat4v(aabb, translate);\n math.identityMat4(scale);\n math.scalingMat4v([xwid / maxInt, ywid / maxInt, zwid / maxInt], scale);\n math.mulMat4(translate, scale, positionsDecodeMatrix);\n return positionsDecodeMatrix;\n };\n})();\n\nfunction transformAndOctEncodeNormals(modelNormalMatrix, normals, lenNormals, compressedNormals, lenCompressedNormals) {\n // http://jcgt.org/published/0003/02/01/\n let oct, dec, best, currentCos, bestCos;\n let i, ei;\n let localNormal = math.vec3();\n let worldNormal = math.vec3();\n for (i = 0; i < lenNormals; i += 3) {\n localNormal[0] = normals[i];\n localNormal[1] = normals[i + 1];\n localNormal[2] = normals[i + 2];\n\n math.transformVec3(modelNormalMatrix, localNormal, worldNormal);\n math.normalizeVec3(worldNormal, worldNormal);\n\n // Test various combinations of ceil and floor to minimize rounding errors\n best = oct = octEncodeVec3(worldNormal, 0, \"floor\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = bestCos = dot(worldNormal, 0, dec);\n oct = octEncodeVec3(worldNormal, 0, \"ceil\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, 0, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(worldNormal, 0, \"floor\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, 0, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(worldNormal, 0, \"ceil\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, 0, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n compressedNormals[lenCompressedNormals + i + 0] = best[0];\n compressedNormals[lenCompressedNormals + i + 1] = best[1];\n compressedNormals[lenCompressedNormals + i + 2] = 0.0; // Unused\n }\n lenCompressedNormals += lenNormals;\n return lenCompressedNormals;\n}\n\nfunction octEncodeNormals(normals, lenNormals, compressedNormals, lenCompressedNormals) { // http://jcgt.org/published/0003/02/01/\n let oct, dec, best, currentCos, bestCos;\n for (let i = 0; i < lenNormals; i += 3) {\n // Test various combinations of ceil and floor to minimize rounding errors\n best = oct = octEncodeVec3(normals, i, \"floor\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = bestCos = dot(normals, i, dec);\n oct = octEncodeVec3(normals, i, \"ceil\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = dot(normals, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(normals, i, \"floor\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(normals, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(normals, i, \"ceil\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(normals, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n compressedNormals[lenCompressedNormals + i + 0] = best[0];\n compressedNormals[lenCompressedNormals + i + 1] = best[1];\n compressedNormals[lenCompressedNormals + i + 2] = 0.0; // Unused\n }\n lenCompressedNormals += lenNormals;\n return lenCompressedNormals;\n}\n\n/**\n * @private\n */\nfunction octEncodeVec3(array, i, xfunc, yfunc) { // Oct-encode single normal vector in 2 bytes\n let x = array[i] / (Math.abs(array[i]) + Math.abs(array[i + 1]) + Math.abs(array[i + 2]));\n let y = array[i + 1] / (Math.abs(array[i]) + Math.abs(array[i + 1]) + Math.abs(array[i + 2]));\n if (array[i + 2] < 0) {\n let tempx = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n let tempy = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n x = tempx;\n y = tempy;\n }\n return new Int8Array([\n Math[xfunc](x * 127.5 + (x < 0 ? -1 : 0)),\n Math[yfunc](y * 127.5 + (y < 0 ? -1 : 0))\n ]);\n}\n\n/**\n * Decode an oct-encoded normal\n */\nfunction octDecodeVec2(oct) {\n let x = oct[0];\n let y = oct[1];\n x /= x < 0 ? 127 : 128;\n y /= y < 0 ? 127 : 128;\n const z = 1 - Math.abs(x) - Math.abs(y);\n if (z < 0) {\n x = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n y = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n }\n const length = Math.sqrt(x * x + y * y + z * z);\n return [\n x / length,\n y / length,\n z / length\n ];\n}\n\n/**\n * Dot product of a normal in an array against a candidate decoding\n * @private\n */\nfunction dot(array, i, vec3) {\n return array[i] * vec3[0] + array[i + 1] * vec3[1] + array[i + 2] * vec3[2];\n}\n\n/**\n * @private\n */\nconst geometryCompression = {\n quantizePositions,\n compressPosition,\n createPositionsDecodeMatrix,\n transformAndOctEncodeNormals,\n octEncodeNormals,\n};\n\nexport {geometryCompression}","/*----------------------------------------------------------------------------------------------------------------------\n * NOTE: The values of these constants must match those within xeokit-sdk\n *--------------------------------------------------------------------------------------------------------------------*/\n\n/**\n * Texture wrapping mode in which the texture repeats to infinity.\n */\nexport const RepeatWrapping = 1000;\n\n/**\n * Texture wrapping mode in which the last pixel of the texture stretches to the edge of the mesh.\n */\nexport const ClampToEdgeWrapping = 1001;\n\n/**\n * Texture wrapping mode in which the texture repeats to infinity, mirroring on each repeat.\n */\nexport const MirroredRepeatWrapping = 1002;\n\n/**\n * Texture magnification and minification filter that returns the nearest texel to the given sample coordinates.\n */\nexport const NearestFilter = 1003;\n\n/**\n * Texture minification filter that chooses the mipmap that most closely matches the size of the pixel being textured and returns the nearest texel to the given sample coordinates.\n */\nexport const NearestMipMapNearestFilter = 1004;\n\n/**\n * Texture minification filter that chooses the mipmap that most closely matches the size of the pixel being textured\n * and returns the nearest texel to the given sample coordinates.\n */\nexport const NearestMipmapNearestFilter = 1004;\n\n/**\n * Texture minification filter that chooses two mipmaps that most closely match the size of the pixel being textured\n * and returns the nearest texel to the center of the pixel at the given sample coordinates.\n */\nexport const NearestMipmapLinearFilter = 1005;\n\n/**\n * Texture minification filter that chooses two mipmaps that most closely match the size of the pixel being textured\n * and returns the nearest texel to the center of the pixel at the given sample coordinates.\n */\nexport const NearestMipMapLinearFilter = 1005;\n\n/**\n * Texture magnification and minification filter that returns the weighted average of the four nearest texels to the given sample coordinates.\n */\nexport const LinearFilter = 1006;\n\n/**\n * Texture minification filter that chooses the mipmap that most closely matches the size of the pixel being textured and\n * returns the weighted average of the four nearest texels to the given sample coordinates.\n */\nexport const LinearMipmapNearestFilter = 1007;\n\n/**\n * Texture minification filter that chooses the mipmap that most closely matches the size of the pixel being textured and\n * returns the weighted average of the four nearest texels to the given sample coordinates.\n */\nexport const LinearMipMapNearestFilter = 1007;\n\n/**\n * Texture minification filter that chooses two mipmaps that most closely match the size of the pixel being textured,\n * finds within each mipmap the weighted average of the nearest texel to the center of the pixel, then returns the\n * weighted average of those two values.\n */\nexport const LinearMipmapLinearFilter = 1008;\n\n/**\n * Texture minification filter that chooses two mipmaps that most closely match the size of the pixel being textured,\n * finds within each mipmap the weighted average of the nearest texel to the center of the pixel, then returns the\n * weighted average of those two values.\n */\nexport const LinearMipMapLinearFilter = 1008;\n\n/**\n * Media type for GIF images.\n */\nexport const GIFMediaType = 10000;\n\n/**\n * Media type for JPEG images.\n */\nexport const JPEGMediaType = 10001;\n\n/**\n * Media type for PNG images.\n */\nexport const PNGMediaType = 10002;","import {math} from \"../../lib/math.js\";\n\n/**\n * @private\n */\nconst buildEdgeIndices = (function () {\n\n const uniquePositions = [];\n const indicesLookup = [];\n const indicesReverseLookup = [];\n const weldedIndices = [];\n\n// TODO: Optimize with caching, but need to cater to both compressed and uncompressed positions\n\n const faces = [];\n let numFaces = 0;\n const compa = new Uint16Array(3);\n const compb = new Uint16Array(3);\n const compc = new Uint16Array(3);\n const a = math.vec3();\n const b = math.vec3();\n const c = math.vec3();\n const cb = math.vec3();\n const ab = math.vec3();\n const cross = math.vec3();\n const normal = math.vec3();\n const inverseNormal = math.vec3();\n\n function weldVertices(positions, indices) {\n const positionsMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n let vx;\n let vy;\n let vz;\n let key;\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = Math.pow(10, precisionPoints);\n let i;\n let len;\n let lenUniquePositions = 0;\n for (i = 0, len = positions.length; i < len; i += 3) {\n vx = positions[i];\n vy = positions[i + 1];\n vz = positions[i + 2];\n key = Math.round(vx * precision) + '_' + Math.round(vy * precision) + '_' + Math.round(vz * precision);\n if (positionsMap[key] === undefined) {\n positionsMap[key] = lenUniquePositions / 3;\n uniquePositions[lenUniquePositions++] = vx;\n uniquePositions[lenUniquePositions++] = vy;\n uniquePositions[lenUniquePositions++] = vz;\n }\n indicesLookup[i / 3] = positionsMap[key];\n }\n for (i = 0, len = indices.length; i < len; i++) {\n weldedIndices[i] = indicesLookup[indices[i]];\n indicesReverseLookup[weldedIndices[i]] = indices[i];\n }\n }\n\n function buildFaces(numIndices, positionsDecodeMatrix) {\n numFaces = 0;\n for (let i = 0, len = numIndices; i < len; i += 3) {\n const ia = ((weldedIndices[i]) * 3);\n const ib = ((weldedIndices[i + 1]) * 3);\n const ic = ((weldedIndices[i + 2]) * 3);\n if (positionsDecodeMatrix) {\n compa[0] = uniquePositions[ia];\n compa[1] = uniquePositions[ia + 1];\n compa[2] = uniquePositions[ia + 2];\n compb[0] = uniquePositions[ib];\n compb[1] = uniquePositions[ib + 1];\n compb[2] = uniquePositions[ib + 2];\n compc[0] = uniquePositions[ic];\n compc[1] = uniquePositions[ic + 1];\n compc[2] = uniquePositions[ic + 2];\n // Decode\n math.decompressPosition(compa, positionsDecodeMatrix, a);\n math.decompressPosition(compb, positionsDecodeMatrix, b);\n math.decompressPosition(compc, positionsDecodeMatrix, c);\n } else {\n a[0] = uniquePositions[ia];\n a[1] = uniquePositions[ia + 1];\n a[2] = uniquePositions[ia + 2];\n b[0] = uniquePositions[ib];\n b[1] = uniquePositions[ib + 1];\n b[2] = uniquePositions[ib + 2];\n c[0] = uniquePositions[ic];\n c[1] = uniquePositions[ic + 1];\n c[2] = uniquePositions[ic + 2];\n }\n math.subVec3(c, b, cb);\n math.subVec3(a, b, ab);\n math.cross3Vec3(cb, ab, cross);\n math.normalizeVec3(cross, normal);\n const face = faces[numFaces] || (faces[numFaces] = {normal: math.vec3()});\n face.normal[0] = normal[0];\n face.normal[1] = normal[1];\n face.normal[2] = normal[2];\n numFaces++;\n }\n }\n\n return function (positions, indices, positionsDecodeMatrix, edgeThreshold) {\n weldVertices(positions, indices);\n buildFaces(indices.length, positionsDecodeMatrix);\n const edgeIndices = [];\n const thresholdDot = Math.cos(math.DEGTORAD * edgeThreshold);\n const edges = {};\n let edge1;\n let edge2;\n let index1;\n let index2;\n let key;\n let largeIndex = false;\n let edge;\n let normal1;\n let normal2;\n let dot;\n let ia;\n let ib;\n for (let i = 0, len = indices.length; i < len; i += 3) {\n const faceIndex = i / 3;\n for (let j = 0; j < 3; j++) {\n edge1 = weldedIndices[i + j];\n edge2 = weldedIndices[i + ((j + 1) % 3)];\n index1 = Math.min(edge1, edge2);\n index2 = Math.max(edge1, edge2);\n key = index1 + ',' + index2;\n if (edges[key] === undefined) {\n edges[key] = {\n index1: index1,\n index2: index2,\n face1: faceIndex,\n face2: undefined,\n };\n } else {\n edges[key].face2 = faceIndex;\n }\n }\n }\n for (key in edges) {\n edge = edges[key];\n // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n if (edge.face2 !== undefined) {\n normal1 = faces[edge.face1].normal;\n normal2 = faces[edge.face2].normal;\n inverseNormal[0] = -normal2[0];\n inverseNormal[1] = -normal2[1];\n inverseNormal[2] = -normal2[2];\n dot = Math.abs(math.dotVec3(normal1, normal2));\n const dot2 = Math.abs(math.dotVec3(normal1, inverseNormal));\n if (dot > thresholdDot && dot2 > thresholdDot) {\n continue;\n }\n }\n ia = indicesReverseLookup[edge.index1];\n ib = indicesReverseLookup[edge.index2];\n if (!largeIndex && ia > 65535 || ib > 65535) {\n largeIndex = true;\n }\n edgeIndices.push(ia);\n edgeIndices.push(ib);\n }\n return (largeIndex) ? new Uint32Array(edgeIndices) : new Uint16Array(edgeIndices);\n };\n})();\n\n\nexport {buildEdgeIndices};","/**\n * Uses edge adjacency counts to identify if the given triangle mesh can be rendered with backface culling enabled.\n *\n * If all edges are connected to exactly two triangles, then the mesh will likely be a closed solid, and we can safely\n * render it with backface culling enabled.\n *\n * Otherwise, the mesh is a surface, and we must render it with backface culling disabled.\n *\n * @private\n */\nconst isTriangleMeshSolid = (indices, positions, vertexIndexMapping, edges) => {\n\n function compareIndexPositions(a, b)\n {\n let posA, posB;\n\n for (let i = 0; i < 3; i++) {\n posA = positions [a*3+i];\n posB = positions [b*3+i];\n\n if (posA !== posB) {\n return posB - posA;\n }\n }\n\n return 0;\n };\n\n // Group together indices corresponding to same position coordinates\n let newIndices = indices.slice ().sort (compareIndexPositions);\n\n // Calculate the mapping:\n // - from original index in indices array\n // - to indices-for-unique-positions\n let uniqueVertexIndex = null;\n\n for (let i = 0, len = newIndices.length; i < len; i++) {\n if (i == 0 || 0 != compareIndexPositions (\n newIndices[i],\n newIndices[i-1],\n )) {\n // different position\n uniqueVertexIndex = newIndices [i];\n }\n\n vertexIndexMapping [\n newIndices[i]\n ] = uniqueVertexIndex;\n }\n\n // Generate the list of edges\n for (let i = 0, len = indices.length; i < len; i += 3) {\n\n const a = vertexIndexMapping[indices[i]];\n const b = vertexIndexMapping[indices[i+1]];\n const c = vertexIndexMapping[indices[i+2]];\n\n let a2 = a;\n let b2 = b;\n let c2 = c;\n\n if (a > b && a > c) {\n if (b > c) {\n a2 = a;\n b2 = b;\n c2 = c;\n } else {\n a2 = a;\n b2 = c;\n c2 = b;\n }\n } else if (b > a && b > c) {\n if (a > c) {\n a2 = b;\n b2 = a;\n c2 = c;\n } else {\n a2 = b;\n b2 = c;\n c2 = a;\n }\n } else if (c > a && c > b) {\n if (a > b) {\n a2 = c;\n b2 = a;\n c2 = b;\n } else {\n a2 = c;\n b2 = b;\n c2 = a;\n }\n }\n\n edges[i+0] = [\n a2, b2\n ];\n edges[i+1] = [\n b2, c2\n ];\n\n if (a2 > c2) {\n const temp = c2;\n c2 = a2;\n a2 = temp;\n }\n\n edges[i+2] = [\n c2, a2\n ];\n }\n\n // Group semantically equivalent edgdes together\n function compareEdges (e1, e2) {\n let a, b;\n\n for (let i = 0; i < 2; i++) {\n a = e1[i];\n b = e2[i];\n\n if (b !== a) {\n return b - a;\n }\n }\n\n return 0;\n }\n\n edges = edges.slice(0, indices.length);\n\n edges.sort (compareEdges);\n\n // Make sure each edge is used exactly twice\n let sameEdgeCount = 0;\n\n for (let i = 0; i < edges.length; i++)\n {\n if (i === 0 || 0 !== compareEdges (\n edges[i], edges[i-1]\n )) {\n // different edge\n if (0 !== i && sameEdgeCount !== 2)\n {\n return false;\n }\n\n sameEdgeCount = 1;\n }\n else\n {\n // same edge\n sameEdgeCount++;\n }\n }\n\n if (edges.length > 0 && sameEdgeCount !== 2)\n {\n return false;\n }\n\n // Each edge is used exactly twice, this is a\n // watertight surface and hence a solid geometry.\n return true;\n};\n\nexport {isTriangleMeshSolid};","/**\n * Represents the usage of a {@link XKTGeometry} by an {@link XKTEntity}.\n *\n * * Created by {@link XKTModel#createEntity}\n * * Stored in {@link XKTEntity#meshes} and {@link XKTModel#meshesList}\n * * Has an {@link XKTGeometry}, and an optional {@link XKTTextureSet}, both of which it can share with other {@link XKTMesh}es\n * * Has {@link XKTMesh#color}, {@link XKTMesh#opacity}, {@link XKTMesh#metallic} and {@link XKTMesh#roughness} PBR attributes\n * @class XKTMesh\n */\nclass XKTMesh {\n\n /**\n * @private\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this XKTMesh in {@link XKTModel#meshes}.\n *\n * @type {Number}\n */\n this.meshId = cfg.meshId;\n\n /**\n * Index of this XKTMesh in {@link XKTModel#meshesList};\n *\n * @type {Number}\n */\n this.meshIndex = cfg.meshIndex;\n\n /**\n * The 4x4 modeling transform matrix.\n *\n * Transform is relative to the center of the {@link XKTTile} that contains this XKTMesh's {@link XKTEntity},\n * which is given in {@link XKTMesh#entity}.\n *\n * When the ````XKTEntity```` shares its {@link XKTGeometry}s with other ````XKTEntity````s, this matrix is used\n * to transform this XKTMesh's XKTGeometry into World-space. When this XKTMesh does not share its ````XKTGeometry````,\n * then this matrix is ignored.\n *\n * @type {Number[]}\n */\n this.matrix = cfg.matrix;\n\n /**\n * The instanced {@link XKTGeometry}.\n *\n * @type {XKTGeometry}\n */\n this.geometry = cfg.geometry;\n\n /**\n * RGB color of this XKTMesh.\n *\n * @type {Float32Array}\n */\n this.color = cfg.color || new Float32Array([1, 1, 1]);\n\n /**\n * PBR metallness of this XKTMesh.\n *\n * @type {Number}\n */\n this.metallic = (cfg.metallic !== null && cfg.metallic !== undefined) ? cfg.metallic : 0;\n\n /**\n * PBR roughness of this XKTMesh.\n * The {@link XKTTextureSet} that defines the appearance of this XKTMesh.\n *\n * @type {Number}\n * @type {XKTTextureSet}\n */\n this.roughness = (cfg.roughness !== null && cfg.roughness !== undefined) ? cfg.roughness : 1;\n\n /**\n * Opacity of this XKTMesh.\n *\n * @type {Number}\n */\n this.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? cfg.opacity : 1.0;\n\n /**\n * The {@link XKTTextureSet} that defines the appearance of this XKTMesh.\n *\n * @type {XKTTextureSet}\n */\n this.textureSet = cfg.textureSet;\n\n /**\n * The owner {@link XKTEntity}.\n *\n * Set by {@link XKTModel#createEntity}.\n *\n * @type {XKTEntity}\n */\n this.entity = null; // Set after instantiation, when the Entity is known\n }\n}\n\nexport {XKTMesh};","/**\n * An element of reusable geometry within an {@link XKTModel}.\n *\n * * Created by {@link XKTModel#createGeometry}\n * * Stored in {@link XKTModel#geometries} and {@link XKTModel#geometriesList}\n * * Referenced by {@link XKTMesh}s, which belong to {@link XKTEntity}s\n *\n * @class XKTGeometry\n */\nclass XKTGeometry {\n\n /**\n * @private\n * @param {*} cfg Configuration for the XKTGeometry.\n * @param {Number} cfg.geometryId Unique ID of the geometry in {@link XKTModel#geometries}.\n * @param {String} cfg.primitiveType Type of this geometry - \"triangles\", \"points\" or \"lines\" so far.\n * @param {Number} cfg.geometryIndex Index of this XKTGeometry in {@link XKTModel#geometriesList}.\n * @param {Float64Array} cfg.positions Non-quantized 3D vertex positions.\n * @param {Float32Array} cfg.normals Non-compressed vertex normals.\n * @param {Uint8Array} cfg.colorsCompressed Unsigned 8-bit integer RGBA vertex colors.\n * @param {Float32Array} cfg.uvs Non-compressed vertex UV coordinates.\n * @param {Uint32Array} cfg.indices Indices to organize the vertex positions and normals into triangles.\n * @param {Uint32Array} cfg.edgeIndices Indices to organize the vertex positions into edges.\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this XKTGeometry in {@link XKTModel#geometries}.\n *\n * @type {Number}\n */\n this.geometryId = cfg.geometryId;\n\n /**\n * The type of primitive - \"triangles\" | \"points\" | \"lines\".\n *\n * @type {String}\n */\n this.primitiveType = cfg.primitiveType;\n\n /**\n * Index of this XKTGeometry in {@link XKTModel#geometriesList}.\n *\n * @type {Number}\n */\n this.geometryIndex = cfg.geometryIndex;\n\n /**\n * The number of {@link XKTMesh}s that reference this XKTGeometry.\n *\n * @type {Number}\n */\n this.numInstances = 0;\n\n /**\n * Non-quantized 3D vertex positions.\n *\n * Defined for all primitive types.\n *\n * @type {Float64Array}\n */\n this.positions = cfg.positions;\n\n /**\n * Quantized vertex positions.\n *\n * Defined for all primitive types.\n *\n * This array is later created from {@link XKTGeometry#positions} by {@link XKTModel#finalize}.\n *\n * @type {Uint16Array}\n */\n this.positionsQuantized = new Uint16Array(cfg.positions.length);\n\n /**\n * Non-compressed 3D vertex normals.\n *\n * Defined only for triangle primitives. Can be null if we want xeokit to auto-generate them. Ignored for points and lines.\n *\n * @type {Float32Array}\n */\n this.normals = cfg.normals;\n\n /**\n * Compressed vertex normals.\n *\n * Defined only for triangle primitives. Ignored for points and lines.\n *\n * This array is later created from {@link XKTGeometry#normals} by {@link XKTModel#finalize}.\n *\n * Will be null if {@link XKTGeometry#normals} is also null.\n *\n * @type {Int8Array}\n */\n this.normalsOctEncoded = null;\n\n /**\n * Compressed RGBA vertex colors.\n *\n * Defined only for point primitives. Ignored for triangles and lines.\n *\n * @type {Uint8Array}\n */\n this.colorsCompressed = cfg.colorsCompressed;\n\n /**\n * Non-compressed vertex UVs.\n *\n * @type {Float32Array}\n */\n this.uvs = cfg.uvs;\n\n /**\n * Compressed vertex UVs.\n *\n * @type {Uint16Array}\n */\n this.uvsCompressed = cfg.uvsCompressed;\n\n /**\n * Indices that organize the vertex positions and normals as triangles.\n *\n * Defined only for triangle and lines primitives. Ignored for points.\n *\n * @type {Uint32Array}\n */\n this.indices = cfg.indices;\n\n /**\n * Indices that organize the vertex positions as edges.\n *\n * Defined only for triangle primitives. Ignored for points and lines.\n *\n * @type {Uint32Array}\n */\n this.edgeIndices = cfg.edgeIndices;\n\n /**\n * When {@link XKTGeometry#primitiveType} is \"triangles\", this is ````true```` when this geometry is a watertight mesh.\n *\n * Defined only for triangle primitives. Ignored for points and lines.\n *\n * Set by {@link XKTModel#finalize}.\n *\n * @type {boolean}\n */\n this.solid = false;\n }\n\n /**\n * Convenience property that is ````true```` when {@link XKTGeometry#numInstances} is greater that one.\n * @returns {boolean}\n */\n get reused() {\n return (this.numInstances > 1);\n }\n}\n\nexport {XKTGeometry};","import {math} from \"../lib/math.js\";\n\n/**\n * An object within an {@link XKTModel}.\n *\n * * Created by {@link XKTModel#createEntity}\n * * Stored in {@link XKTModel#entities} and {@link XKTModel#entitiesList}\n * * Has one or more {@link XKTMesh}s, each having an {@link XKTGeometry}\n *\n * @class XKTEntity\n */\nclass XKTEntity {\n\n /**\n * @private\n * @param entityId\n * @param meshes\n */\n constructor(entityId, meshes) {\n\n /**\n * Unique ID of this ````XKTEntity```` in {@link XKTModel#entities}.\n *\n * For a BIM model, this will be an IFC product ID.\n *\n * We can also use {@link XKTModel#createMetaObject} to create an {@link XKTMetaObject} to specify metadata for\n * this ````XKTEntity````. To associate the {@link XKTMetaObject} with our {@link XKTEntity}, we give\n * {@link XKTMetaObject#metaObjectId} the same value as {@link XKTEntity#entityId}.\n *\n * @type {String}\n */\n this.entityId = entityId;\n\n /**\n * Index of this ````XKTEntity```` in {@link XKTModel#entitiesList}.\n *\n * Set by {@link XKTModel#finalize}.\n *\n * @type {Number}\n */\n this.entityIndex = null;\n\n /**\n * A list of {@link XKTMesh}s that indicate which {@link XKTGeometry}s are used by this Entity.\n *\n * @type {XKTMesh[]}\n */\n this.meshes = meshes;\n\n /**\n * World-space axis-aligned bounding box (AABB) that encloses the {@link XKTGeometry#positions} of\n * the {@link XKTGeometry}s that are used by this ````XKTEntity````.\n *\n * Set by {@link XKTModel#finalize}.\n *\n * @type {Float32Array}\n */\n this.aabb = math.AABB3();\n\n /**\n * Indicates if this ````XKTEntity```` shares {@link XKTGeometry}s with other {@link XKTEntity}'s.\n *\n * Set by {@link XKTModel#finalize}.\n *\n * Note that when an ````XKTEntity```` shares ````XKTGeometrys````, it shares **all** of its ````XKTGeometrys````. An ````XKTEntity````\n * never shares only some of its ````XKTGeometrys```` - it always shares either the whole set or none at all.\n *\n * @type {Boolean}\n */\n this.hasReusedGeometries = false;\n }\n}\n\nexport {XKTEntity};","/**\n * @desc A box-shaped 3D region within an {@link XKTModel} that contains {@link XKTEntity}s.\n *\n * * Created by {@link XKTModel#finalize}\n * * Stored in {@link XKTModel#tilesList}\n *\n * @class XKTTile\n */\nclass XKTTile {\n\n /**\n * Creates a new XKTTile.\n *\n * @private\n * @param aabb\n * @param entities\n */\n constructor(aabb, entities) {\n\n /**\n * Axis-aligned World-space bounding box that encloses the {@link XKTEntity}'s within this Tile.\n *\n * @type {Float64Array}\n */\n this.aabb = aabb;\n\n /**\n * The {@link XKTEntity}'s within this XKTTile.\n *\n * @type {XKTEntity[]}\n */\n this.entities = entities;\n }\n}\n\nexport {XKTTile};","/**\n * A kd-Tree node, used internally by {@link XKTModel}.\n *\n * @private\n */\nclass KDNode {\n\n /**\n * Create a KDNode with an axis-aligned 3D World-space boundary.\n */\n constructor(aabb) {\n\n /**\n * The axis-aligned 3D World-space boundary of this KDNode.\n *\n * @type {Float64Array}\n */\n this.aabb = aabb;\n\n /**\n * The {@link XKTEntity}s within this KDNode.\n */\n this.entities = null;\n\n /**\n * The left child KDNode.\n */\n this.left = null;\n\n /**\n * The right child KDNode.\n */\n this.right = null;\n }\n}\n\nexport {KDNode};","/**\n * A meta object within an {@link XKTModel}.\n *\n * These are plugged together into a parent-child hierarchy to represent structural\n * metadata for the {@link XKTModel}.\n *\n * The leaf XKTMetaObjects are usually associated with\n * an {@link XKTEntity}, which they do so by sharing the same ID,\n * ie. where {@link XKTMetaObject#metaObjectId} == {@link XKTEntity#entityId}.\n *\n * * Created by {@link XKTModel#createMetaObject}\n * * Stored in {@link XKTModel#metaObjects} and {@link XKTModel#metaObjectsList}\n * * Has an ID, a type, and a human-readable name\n * * May have a parent {@link XKTMetaObject}\n * * When no children, is usually associated with an {@link XKTEntity}\n *\n * @class XKTMetaObject\n */\nclass XKTMetaObject {\n\n /**\n * @private\n * @param metaObjectId\n * @param propertySetIds\n * @param metaObjectType\n * @param metaObjectName\n * @param parentMetaObjectId\n */\n constructor(metaObjectId, propertySetIds, metaObjectType, metaObjectName, parentMetaObjectId) {\n\n /**\n * Unique ID of this ````XKTMetaObject```` in {@link XKTModel#metaObjects}.\n *\n * For a BIM model, this will be an IFC product ID.\n *\n * If this is a leaf XKTMetaObject, where it is not a parent to any other XKTMetaObject,\n * then this will be equal to the ID of an {@link XKTEntity} in {@link XKTModel#entities},\n * ie. where {@link XKTMetaObject#metaObjectId} == {@link XKTEntity#entityId}.\n *\n * @type {String}\n */\n this.metaObjectId = metaObjectId;\n\n /**\n * Unique ID of one or more property sets that contains additional metadata about this\n * {@link XKTMetaObject}. The property sets can be stored in an external system, or\n * within the {@link XKTModel}, as {@link XKTPropertySet}s within {@link XKTModel#propertySets}.\n *\n * @type {String[]}\n */\n this.propertySetIds = propertySetIds;\n\n /**\n * Indicates the XKTMetaObject meta object type.\n *\n * This defaults to \"default\".\n *\n * @type {string}\n */\n this.metaObjectType = metaObjectType;\n\n /**\n * Indicates the XKTMetaObject meta object name.\n *\n * This defaults to {@link XKTMetaObject#metaObjectId}.\n *\n * @type {string}\n */\n this.metaObjectName = metaObjectName;\n\n /**\n * The parent XKTMetaObject, if any.\n *\n * Will be null if there is no parent.\n *\n * @type {String}\n */\n this.parentMetaObjectId = parentMetaObjectId;\n }\n}\n\nexport {XKTMetaObject};","/**\n * A property set within an {@link XKTModel}.\n *\n * These are shared among {@link XKTMetaObject}s.\n *\n * * Created by {@link XKTModel#createPropertySet}\n * * Stored in {@link XKTModel#propertySets} and {@link XKTModel#propertySetsList}\n * * Has an ID, a type, and a human-readable name\n *\n * @class XKTPropertySet\n */\nclass XKTPropertySet {\n\n /**\n * @private\n */\n constructor(propertySetId, propertySetType, propertySetName, properties) {\n\n /**\n * Unique ID of this ````XKTPropertySet```` in {@link XKTModel#propertySets}.\n *\n * @type {String}\n */\n this.propertySetId = propertySetId;\n\n /**\n * Indicates the ````XKTPropertySet````'s type.\n *\n * This defaults to \"default\".\n *\n * @type {string}\n */\n this.propertySetType = propertySetType;\n\n /**\n * Indicates the XKTPropertySet meta object name.\n *\n * This defaults to {@link XKTPropertySet#propertySetId}.\n *\n * @type {string}\n */\n this.propertySetName = propertySetName;\n\n /**\n * The properties within this ````XKTPropertySet````.\n *\n * @type {*[]}\n */\n this.properties = properties;\n }\n}\n\nexport {XKTPropertySet};","/**\n * A texture shared by {@link XKTTextureSet}s.\n *\n * * Created by {@link XKTModel#createTexture}\n * * Stored in {@link XKTTextureSet#textures}, {@link XKTModel#textures} and {@link XKTModel#texturesList}\n *\n * @class XKTTexture\n */\nimport {RepeatWrapping, LinearMipMapNearestFilter} from \"../constants\";\n\nclass XKTTexture {\n\n /**\n * @private\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this XKTTexture in {@link XKTModel#textures}.\n *\n * @type {Number}\n */\n this.textureId = cfg.textureId;\n\n /**\n * Index of this XKTTexture in {@link XKTModel#texturesList};\n *\n * @type {Number}\n */\n this.textureIndex = cfg.textureIndex;\n\n /**\n * Texture image data.\n *\n * @type {Buffer}\n */\n this.imageData = cfg.imageData;\n\n /**\n * Which material channel this texture is applied to, as determined by its {@link XKTTextureSet}s.\n *\n * @type {Number}\n */\n this.channel = null;\n\n /**\n * Width of this XKTTexture.\n *\n * @type {Number}\n */\n this.width = cfg.width;\n\n /**\n * Height of this XKTTexture.\n *\n * @type {Number}\n */\n this.height = cfg.height;\n\n /**\n * Texture file source.\n *\n * @type {String}\n */\n this.src = cfg.src;\n\n /**\n * Whether this XKTTexture is to be compressed.\n *\n * @type {Boolean}\n */\n this.compressed = (!!cfg.compressed);\n\n /**\n * Media type of this XKTTexture.\n *\n * Supported values are {@link GIFMediaType}, {@link PNGMediaType} and {@link JPEGMediaType}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.mediaType = cfg.mediaType;\n\n /**\n * How the texture is sampled when a texel covers less than one pixel. Supported values\n * are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter},\n * {@link NearestMipMapNearestFilter}, {@link NearestMipMapLinearFilter}\n * and {@link LinearMipMapLinearFilter}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.minFilter = cfg.minFilter || LinearMipMapNearestFilter;\n\n /**\n * How the texture is sampled when a texel covers more than one pixel. Supported values\n * are {@link LinearFilter} and {@link NearestFilter}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.magFilter = cfg.magFilter || LinearMipMapNearestFilter;\n\n /**\n * S wrapping mode.\n *\n * Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.wrapS = cfg.wrapS || RepeatWrapping;\n\n /**\n * T wrapping mode.\n *\n * Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.wrapT = cfg.wrapT || RepeatWrapping;\n\n /**\n * R wrapping mode.\n *\n * Ignored for compressed textures.\n *\n * Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n *\n * @type {*|number}\n */\n this.wrapR = cfg.wrapR || RepeatWrapping\n }\n}\n\nexport {XKTTexture};","/**\n * A set of textures shared by {@link XKTMesh}es.\n *\n * * Created by {@link XKTModel#createTextureSet}\n * * Registered in {@link XKTMesh#material}, {@link XKTModel#materials} and {@link XKTModel#.textureSetsList}\n *\n * @class XKTMetalRoughMaterial\n */\nclass XKTTextureSet {\n\n /**\n * @private\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this XKTTextureSet in {@link XKTModel#materials}.\n *\n * @type {Number}\n */\n this.textureSetId = cfg.textureSetId;\n\n /**\n * Index of this XKTTexture in {@link XKTModel#texturesList};\n *\n * @type {Number}\n */\n this.textureSetIndex = cfg.textureSetIndex;\n\n /**\n * Identifies the material type.\n *\n * @type {Number}\n */\n this.materialType = cfg.materialType;\n\n /**\n * Index of this XKTTextureSet in {@link XKTModel#meshesList};\n *\n * @type {Number}\n */\n this.materialIndex = cfg.materialIndex;\n\n /**\n * The number of {@link XKTMesh}s that reference this XKTTextureSet.\n *\n * @type {Number}\n */\n this.numInstances = 0;\n\n /**\n * RGBA {@link XKTTexture} containing base color in RGB and opacity in A.\n *\n * @type {XKTTexture}\n */\n this.colorTexture = cfg.colorTexture;\n\n /**\n * RGBA {@link XKTTexture} containing metallic and roughness factors in R and G.\n *\n * @type {XKTTexture}\n */\n this.metallicRoughnessTexture = cfg.metallicRoughnessTexture;\n\n /**\n * RGBA {@link XKTTexture} with surface normals in RGB.\n *\n * @type {XKTTexture}\n */\n this.normalsTexture = cfg.normalsTexture;\n\n /**\n * RGBA {@link XKTTexture} with emissive color in RGB.\n *\n * @type {XKTTexture}\n */\n this.emissiveTexture = cfg.emissiveTexture;\n\n /**\n * RGBA {@link XKTTexture} with ambient occlusion factors in RGB.\n *\n * @type {XKTTexture}\n */\n this.occlusionTexture = cfg.occlusionTexture;\n }\n}\n\nexport {XKTTextureSet};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@loaders.gl/core\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@loaders.gl/textures\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@loaders.gl/images\");","import {math} from \"../lib/math.js\";\nimport {geometryCompression} from \"./lib/geometryCompression.js\";\nimport {buildEdgeIndices} from \"./lib/buildEdgeIndices.js\";\nimport {isTriangleMeshSolid} from \"./lib/isTriangleMeshSolid.js\";\n\nimport {XKTMesh} from './XKTMesh.js';\nimport {XKTGeometry} from './XKTGeometry.js';\nimport {XKTEntity} from './XKTEntity.js';\nimport {XKTTile} from './XKTTile.js';\nimport {KDNode} from \"./KDNode.js\";\nimport {XKTMetaObject} from \"./XKTMetaObject.js\";\nimport {XKTPropertySet} from \"./XKTPropertySet.js\";\nimport {mergeVertices} from \"../lib/mergeVertices.js\";\nimport {XKT_INFO} from \"../XKT_INFO.js\";\nimport {XKTTexture} from \"./XKTTexture\";\nimport {XKTTextureSet} from \"./XKTTextureSet\";\nimport {encode} from \"@loaders.gl/core\";\nimport {KTX2BasisWriter} from \"@loaders.gl/textures\";\nimport {ImageLoader} from '@loaders.gl/images';\nimport {load} from '@loaders.gl/core';\n\nconst tempVec4a = math.vec4([0, 0, 0, 1]);\nconst tempVec4b = math.vec4([0, 0, 0, 1]);\n\nconst tempMat4 = math.mat4();\nconst tempMat4b = math.mat4();\n\nconst kdTreeDimLength = new Float64Array(3);\n\n// XKT texture types\n\nconst COLOR_TEXTURE = 0;\nconst METALLIC_ROUGHNESS_TEXTURE = 1;\nconst NORMALS_TEXTURE = 2;\nconst EMISSIVE_TEXTURE = 3;\nconst OCCLUSION_TEXTURE = 4;\n\n// KTX2 encoding options for each texture type\n\nconst TEXTURE_ENCODING_OPTIONS = {}\nTEXTURE_ENCODING_OPTIONS[COLOR_TEXTURE] = {\n useSRGB: true,\n qualityLevel: 50,\n encodeUASTC: true,\n mipmaps: true\n};\nTEXTURE_ENCODING_OPTIONS[EMISSIVE_TEXTURE] = {\n useSRGB: true,\n encodeUASTC: true,\n qualityLevel: 10,\n mipmaps: false\n};\nTEXTURE_ENCODING_OPTIONS[METALLIC_ROUGHNESS_TEXTURE] = {\n useSRGB: false,\n encodeUASTC: true,\n qualityLevel: 50,\n mipmaps: true // Needed for GGX roughness shading\n};\nTEXTURE_ENCODING_OPTIONS[NORMALS_TEXTURE] = {\n useSRGB: false,\n encodeUASTC: true,\n qualityLevel: 10,\n mipmaps: false\n};\nTEXTURE_ENCODING_OPTIONS[OCCLUSION_TEXTURE] = {\n useSRGB: false,\n encodeUASTC: true,\n qualityLevel: 10,\n mipmaps: false\n};\n\n/**\n * A document model that represents the contents of an .XKT file.\n *\n * * An XKTModel contains {@link XKTTile}s, which spatially subdivide the model into axis-aligned, box-shaped regions.\n * * Each {@link XKTTile} contains {@link XKTEntity}s, which represent the objects within its region.\n * * Each {@link XKTEntity} has {@link XKTMesh}s, which each have a {@link XKTGeometry}. Each {@link XKTGeometry} can be shared by multiple {@link XKTMesh}s.\n * * Import models into an XKTModel using {@link parseGLTFJSONIntoXKTModel}, {@link parseIFCIntoXKTModel}, {@link parseCityJSONIntoXKTModel} etc.\n * * Build an XKTModel programmatically using {@link XKTModel#createGeometry}, {@link XKTModel#createMesh} and {@link XKTModel#createEntity}.\n * * Serialize an XKTModel to an ArrayBuffer using {@link writeXKTModelToArrayBuffer}.\n *\n * ## Usage\n *\n * See [main docs page](/docs/#javascript-api) for usage examples.\n *\n * @class XKTModel\n */\nclass XKTModel {\n\n /**\n * Constructs a new XKTModel.\n *\n * @param {*} [cfg] Configuration\n * @param {Number} [cfg.edgeThreshold=10]\n * @param {Number} [cfg.minTileSize=500]\n */\n constructor(cfg = {}) {\n\n /**\n * The model's ID, if available.\n *\n * Will be \"default\" by default.\n *\n * @type {String}\n */\n this.modelId = cfg.modelId || \"default\";\n\n /**\n * The project ID, if available.\n *\n * Will be an empty string by default.\n *\n * @type {String}\n */\n this.projectId = cfg.projectId || \"\";\n\n /**\n * The revision ID, if available.\n *\n * Will be an empty string by default.\n *\n * @type {String}\n */\n this.revisionId = cfg.revisionId || \"\";\n\n /**\n * The model author, if available.\n *\n * Will be an empty string by default.\n *\n * @property author\n * @type {String}\n */\n this.author = cfg.author || \"\";\n\n /**\n * The date the model was created, if available.\n *\n * Will be an empty string by default.\n *\n * @property createdAt\n * @type {String}\n */\n this.createdAt = cfg.createdAt || \"\";\n\n /**\n * The application that created the model, if available.\n *\n * Will be an empty string by default.\n *\n * @property creatingApplication\n * @type {String}\n */\n this.creatingApplication = cfg.creatingApplication || \"\";\n\n /**\n * The model schema version, if available.\n *\n * In the case of IFC, this could be \"IFC2x3\" or \"IFC4\", for example.\n *\n * Will be an empty string by default.\n *\n * @property schema\n * @type {String}\n */\n this.schema = cfg.schema || \"\";\n\n /**\n * The XKT format version.\n *\n * @property xktVersion;\n * @type {number}\n */\n this.xktVersion = XKT_INFO.xktVersion;\n\n /**\n *\n * @type {Number|number}\n */\n this.edgeThreshold = cfg.edgeThreshold || 10;\n\n /**\n * Minimum diagonal size of the boundary of an {@link XKTTile}.\n *\n * @type {Number|number}\n */\n this.minTileSize = cfg.minTileSize || 500;\n\n /**\n * Map of {@link XKTPropertySet}s within this XKTModel, each mapped to {@link XKTPropertySet#propertySetId}.\n *\n * Created by {@link XKTModel#createPropertySet}.\n *\n * @type {{String:XKTPropertySet}}\n */\n this.propertySets = {};\n\n /**\n * {@link XKTPropertySet}s within this XKTModel.\n *\n * Each XKTPropertySet holds its position in this list in {@link XKTPropertySet#propertySetIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTPropertySet[]}\n */\n this.propertySetsList = [];\n\n /**\n * Map of {@link XKTMetaObject}s within this XKTModel, each mapped to {@link XKTMetaObject#metaObjectId}.\n *\n * Created by {@link XKTModel#createMetaObject}.\n *\n * @type {{String:XKTMetaObject}}\n */\n this.metaObjects = {};\n\n /**\n * {@link XKTMetaObject}s within this XKTModel.\n *\n * Each XKTMetaObject holds its position in this list in {@link XKTMetaObject#metaObjectIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTMetaObject[]}\n */\n this.metaObjectsList = [];\n\n /**\n * The positions of all shared {@link XKTGeometry}s are de-quantized using this singular\n * de-quantization matrix.\n *\n * This de-quantization matrix is generated from the collective Local-space boundary of the\n * positions of all shared {@link XKTGeometry}s.\n *\n * @type {Float32Array}\n */\n this.reusedGeometriesDecodeMatrix = new Float32Array(16);\n\n /**\n * Map of {@link XKTGeometry}s within this XKTModel, each mapped to {@link XKTGeometry#geometryId}.\n *\n * Created by {@link XKTModel#createGeometry}.\n *\n * @type {{Number:XKTGeometry}}\n */\n this.geometries = {};\n\n /**\n * List of {@link XKTGeometry}s within this XKTModel, in the order they were created.\n *\n * Each XKTGeometry holds its position in this list in {@link XKTGeometry#geometryIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTGeometry[]}\n */\n this.geometriesList = [];\n\n /**\n * Map of {@link XKTTexture}s within this XKTModel, each mapped to {@link XKTTexture#textureId}.\n *\n * Created by {@link XKTModel#createTexture}.\n *\n * @type {{Number:XKTTexture}}\n */\n this.textures = {};\n\n /**\n * List of {@link XKTTexture}s within this XKTModel, in the order they were created.\n *\n * Each XKTTexture holds its position in this list in {@link XKTTexture#textureIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTTexture[]}\n */\n this.texturesList = [];\n\n /**\n * Map of {@link XKTTextureSet}s within this XKTModel, each mapped to {@link XKTTextureSet#textureSetId}.\n *\n * Created by {@link XKTModel#createTextureSet}.\n *\n * @type {{Number:XKTTextureSet}}\n */\n this.textureSets = {};\n\n /**\n * List of {@link XKTTextureSet}s within this XKTModel, in the order they were created.\n *\n * Each XKTTextureSet holds its position in this list in {@link XKTTextureSet#textureSetIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTTextureSet[]}\n */\n this.textureSetsList = [];\n\n /**\n * Map of {@link XKTMesh}s within this XKTModel, each mapped to {@link XKTMesh#meshId}.\n *\n * Created by {@link XKTModel#createMesh}.\n *\n * @type {{Number:XKTMesh}}\n */\n this.meshes = {};\n\n /**\n * List of {@link XKTMesh}s within this XKTModel, in the order they were created.\n *\n * Each XKTMesh holds its position in this list in {@link XKTMesh#meshIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTMesh[]}\n */\n this.meshesList = [];\n\n /**\n * Map of {@link XKTEntity}s within this XKTModel, each mapped to {@link XKTEntity#entityId}.\n *\n * Created by {@link XKTModel#createEntity}.\n *\n * @type {{String:XKTEntity}}\n */\n this.entities = {};\n\n /**\n * {@link XKTEntity}s within this XKTModel.\n *\n * Each XKTEntity holds its position in this list in {@link XKTEntity#entityIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTEntity[]}\n */\n this.entitiesList = [];\n\n /**\n * {@link XKTTile}s within this XKTModel.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTTile[]}\n */\n this.tilesList = [];\n\n /**\n * The axis-aligned 3D World-space boundary of this XKTModel.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {Float64Array}\n */\n this.aabb = math.AABB3();\n\n /**\n * Indicates if this XKTModel has been finalized.\n *\n * Set ````true```` by {@link XKTModel#finalize}.\n *\n * @type {boolean}\n */\n this.finalized = false;\n }\n\n /**\n * Creates an {@link XKTPropertySet} within this XKTModel.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {String} params.propertySetId Unique ID for the {@link XKTPropertySet}.\n * @param {String} [params.propertySetType=\"default\"] A meta type for the {@link XKTPropertySet}.\n * @param {String} [params.propertySetName] Human-readable name for the {@link XKTPropertySet}. Defaults to the ````propertySetId```` parameter.\n * @param {String[]} params.properties Properties for the {@link XKTPropertySet}.\n * @returns {XKTPropertySet} The new {@link XKTPropertySet}.\n */\n createPropertySet(params) {\n\n if (!params) {\n throw \"Parameters expected: params\";\n }\n\n if (params.propertySetId === null || params.propertySetId === undefined) {\n throw \"Parameter expected: params.propertySetId\";\n }\n\n if (params.properties === null || params.properties === undefined) {\n throw \"Parameter expected: params.properties\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more property sets\");\n return;\n }\n\n if (this.propertySets[params.propertySetId]) {\n // console.error(\"XKTPropertySet already exists with this ID: \" + params.propertySetId);\n return;\n }\n\n const propertySetId = params.propertySetId;\n const propertySetType = params.propertySetType || \"Default\";\n const propertySetName = params.propertySetName || params.propertySetId;\n const properties = params.properties || [];\n\n const propertySet = new XKTPropertySet(propertySetId, propertySetType, propertySetName, properties);\n\n this.propertySets[propertySetId] = propertySet;\n this.propertySetsList.push(propertySet);\n\n return propertySet;\n }\n\n /**\n * Creates an {@link XKTMetaObject} within this XKTModel.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {String} params.metaObjectId Unique ID for the {@link XKTMetaObject}.\n * @param {String} params.propertySetIds ID of one or more property sets that contains additional metadata about\n * this {@link XKTMetaObject}. The property sets could be stored externally (ie not managed at all by the XKT file),\n * or could be {@link XKTPropertySet}s within {@link XKTModel#propertySets}.\n * @param {String} [params.metaObjectType=\"default\"] A meta type for the {@link XKTMetaObject}. Can be anything,\n * but is usually an IFC type, such as \"IfcSite\" or \"IfcWall\".\n * @param {String} [params.metaObjectName] Human-readable name for the {@link XKTMetaObject}. Defaults to the ````metaObjectId```` parameter.\n * @param {String} [params.parentMetaObjectId] ID of the parent {@link XKTMetaObject}, if any. Defaults to the ````metaObjectId```` parameter.\n * @returns {XKTMetaObject} The new {@link XKTMetaObject}.\n */\n createMetaObject(params) {\n\n if (!params) {\n throw \"Parameters expected: params\";\n }\n\n if (params.metaObjectId === null || params.metaObjectId === undefined) {\n throw \"Parameter expected: params.metaObjectId\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more meta objects\");\n return;\n }\n\n if (this.metaObjects[params.metaObjectId]) {\n // console.error(\"XKTMetaObject already exists with this ID: \" + params.metaObjectId);\n return;\n }\n\n const metaObjectId = params.metaObjectId;\n const propertySetIds = params.propertySetIds;\n const metaObjectType = params.metaObjectType || \"Default\";\n const metaObjectName = params.metaObjectName || params.metaObjectId;\n const parentMetaObjectId = params.parentMetaObjectId;\n\n const metaObject = new XKTMetaObject(metaObjectId, propertySetIds, metaObjectType, metaObjectName, parentMetaObjectId);\n\n this.metaObjects[metaObjectId] = metaObject;\n this.metaObjectsList.push(metaObject);\n\n if (!parentMetaObjectId) {\n if (!this._rootMetaObject) {\n this._rootMetaObject = metaObject;\n }\n }\n\n return metaObject;\n }\n\n /**\n * Creates an {@link XKTTexture} within this XKTModel.\n *\n * Registers the new {@link XKTTexture} in {@link XKTModel#textures} and {@link XKTModel#texturesList}.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {Number} params.textureId Unique ID for the {@link XKTTexture}.\n * @param {String} [params.src] Source of an image file for the texture.\n * @param {Buffer} [params.imageData] Image data for the texture.\n * @param {Number} [params.mediaType] Media type (ie. MIME type) of ````imageData````. Supported values are {@link GIFMediaType}, {@link PNGMediaType} and {@link JPEGMediaType}.\n * @param {Number} [params.width] Texture width, used with ````imageData````. Ignored for compressed textures.\n * @param {Number} [params.height] Texture height, used with ````imageData````. Ignored for compressed textures.\n * @param {Boolean} [params.compressed=true] Whether to compress the texture.\n * @param {Number} [params.minFilter=LinearMipMapNearestFilter] How the texture is sampled when a texel covers less than one pixel. Supported\n * values are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter}, {@link NearestMipMapNearestFilter},\n * {@link NearestMipMapLinearFilter} and {@link LinearMipMapLinearFilter}. Ignored for compressed textures.\n * @param {Number} [params.magFilter=LinearMipMapNearestFilter] How the texture is sampled when a texel covers more than one pixel. Supported values\n * are {@link LinearFilter} and {@link NearestFilter}. Ignored for compressed textures.\n * @param {Number} [params.wrapS=RepeatWrapping] Wrap parameter for texture coordinate *S*. Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}. Ignored for compressed textures.\n * @param {Number} [params.wrapT=RepeatWrapping] Wrap parameter for texture coordinate *T*. Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}. Ignored for compressed textures.\n * {@param {Number} [params.wrapR=RepeatWrapping] Wrap parameter for texture coordinate *R*. Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}. Ignored for compressed textures.\n * @returns {XKTTexture} The new {@link XKTTexture}.\n */\n createTexture(params) {\n\n if (!params) {\n throw \"Parameters expected: params\";\n }\n\n if (params.textureId === null || params.textureId === undefined) {\n throw \"Parameter expected: params.textureId\";\n }\n\n if (!params.imageData && !params.src) {\n throw \"Parameter expected: params.imageData or params.src\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more textures\");\n return;\n }\n\n if (this.textures[params.textureId]) {\n console.error(\"XKTTexture already exists with this ID: \" + params.textureId);\n return;\n }\n\n if (params.src) {\n const fileExt = params.src.split('.').pop();\n if (fileExt !== \"jpg\" && fileExt !== \"jpeg\" && fileExt !== \"png\") {\n console.error(`XKTModel does not support image files with extension '${fileExt}' - won't create texture '${params.textureId}`);\n return;\n }\n }\n\n const textureId = params.textureId;\n\n const texture = new XKTTexture({\n textureId,\n imageData: params.imageData,\n mediaType: params.mediaType,\n minFilter: params.minFilter,\n magFilter: params.magFilter,\n wrapS: params.wrapS,\n wrapT: params.wrapT,\n wrapR: params.wrapR,\n width: params.width,\n height: params.height,\n compressed: (params.compressed !== false),\n src: params.src\n });\n\n this.textures[textureId] = texture;\n this.texturesList.push(texture);\n\n return texture;\n }\n\n /**\n * Creates an {@link XKTTextureSet} within this XKTModel.\n *\n * Registers the new {@link XKTTextureSet} in {@link XKTModel#textureSets} and {@link XKTModel#.textureSetsList}.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {Number} params.textureSetId Unique ID for the {@link XKTTextureSet}.\n * @param {*} [params.colorTextureId] ID of *RGBA* base color {@link XKTTexture}, with color in *RGB* and alpha in *A*.\n * @param {*} [params.metallicRoughnessTextureId] ID of *RGBA* metal-roughness {@link XKTTexture}, with the metallic factor in *R*, and roughness factor in *G*.\n * @param {*} [params.normalsTextureId] ID of *RGBA* normal {@link XKTTexture}, with normal map vectors in *RGB*.\n * @param {*} [params.emissiveTextureId] ID of *RGBA* emissive {@link XKTTexture}, with emissive color in *RGB*.\n * @param {*} [params.occlusionTextureId] ID of *RGBA* occlusion {@link XKTTexture}, with occlusion factor in *R*.\n * @returns {XKTTextureSet} The new {@link XKTTextureSet}.\n */\n createTextureSet(params) {\n\n if (!params) {\n throw \"Parameters expected: params\";\n }\n\n if (params.textureSetId === null || params.textureSetId === undefined) {\n throw \"Parameter expected: params.textureSetId\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more textureSets\");\n return;\n }\n\n if (this.textureSets[params.textureSetId]) {\n console.error(\"XKTTextureSet already exists with this ID: \" + params.textureSetId);\n return;\n }\n\n let colorTexture;\n if (params.colorTextureId !== undefined && params.colorTextureId !== null) {\n colorTexture = this.textures[params.colorTextureId];\n if (!colorTexture) {\n console.error(`Texture not found: ${params.colorTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n colorTexture.channel = COLOR_TEXTURE;\n }\n\n let metallicRoughnessTexture;\n if (params.metallicRoughnessTextureId !== undefined && params.metallicRoughnessTextureId !== null) {\n metallicRoughnessTexture = this.textures[params.metallicRoughnessTextureId];\n if (!metallicRoughnessTexture) {\n console.error(`Texture not found: ${params.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n metallicRoughnessTexture.channel = METALLIC_ROUGHNESS_TEXTURE;\n }\n\n let normalsTexture;\n if (params.normalsTextureId !== undefined && params.normalsTextureId !== null) {\n normalsTexture = this.textures[params.normalsTextureId];\n if (!normalsTexture) {\n console.error(`Texture not found: ${params.normalsTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n normalsTexture.channel = NORMALS_TEXTURE;\n }\n\n let emissiveTexture;\n if (params.emissiveTextureId !== undefined && params.emissiveTextureId !== null) {\n emissiveTexture = this.textures[params.emissiveTextureId];\n if (!emissiveTexture) {\n console.error(`Texture not found: ${params.emissiveTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n emissiveTexture.channel = EMISSIVE_TEXTURE;\n }\n\n let occlusionTexture;\n if (params.occlusionTextureId !== undefined && params.occlusionTextureId !== null) {\n occlusionTexture = this.textures[params.occlusionTextureId];\n if (!occlusionTexture) {\n console.error(`Texture not found: ${params.occlusionTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n occlusionTexture.channel = OCCLUSION_TEXTURE;\n }\n\n const textureSet = new XKTTextureSet({\n textureSetId: params.textureSetId,\n textureSetIndex: this.textureSetsList.length,\n colorTexture,\n metallicRoughnessTexture,\n normalsTexture,\n emissiveTexture,\n occlusionTexture\n });\n\n this.textureSets[params.textureSetId] = textureSet;\n this.textureSetsList.push(textureSet);\n\n return textureSet;\n }\n\n /**\n * Creates an {@link XKTGeometry} within this XKTModel.\n *\n * Registers the new {@link XKTGeometry} in {@link XKTModel#geometries} and {@link XKTModel#geometriesList}.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {Number} params.geometryId Unique ID for the {@link XKTGeometry}.\n * @param {String} params.primitiveType The type of {@link XKTGeometry}: \"triangles\", \"lines\" or \"points\".\n * @param {Float64Array} params.positions Floating-point Local-space vertex positions for the {@link XKTGeometry}. Required for all primitive types.\n * @param {Number[]} [params.normals] Floating-point vertex normals for the {@link XKTGeometry}. Only used with triangles primitives. Ignored for points and lines.\n * @param {Number[]} [params.colors] Floating-point RGBA vertex colors for the {@link XKTGeometry}. Required for points primitives. Ignored for lines and triangles.\n * @param {Number[]} [params.colorsCompressed] Integer RGBA vertex colors for the {@link XKTGeometry}. Required for points primitives. Ignored for lines and triangles.\n * @param {Number[]} [params.uvs] Floating-point vertex UV coordinates for the {@link XKTGeometry}. Alias for ````uv````.\n * @param {Number[]} [params.uv] Floating-point vertex UV coordinates for the {@link XKTGeometry}. Alias for ````uvs````.\n * @param {Number[]} [params.colorsCompressed] Integer RGBA vertex colors for the {@link XKTGeometry}. Required for points primitives. Ignored for lines and triangles.\n * @param {Uint32Array} [params.indices] Indices for the {@link XKTGeometry}. Required for triangles and lines primitives. Ignored for points.\n * @param {Number} [params.edgeThreshold=10]\n * @returns {XKTGeometry} The new {@link XKTGeometry}.\n */\n createGeometry(params) {\n\n if (!params) {\n throw \"Parameters expected: params\";\n }\n\n if (params.geometryId === null || params.geometryId === undefined) {\n throw \"Parameter expected: params.geometryId\";\n }\n\n if (!params.primitiveType) {\n throw \"Parameter expected: params.primitiveType\";\n }\n\n if (!params.positions) {\n throw \"Parameter expected: params.positions\";\n }\n\n const triangles = params.primitiveType === \"triangles\";\n const points = params.primitiveType === \"points\";\n const lines = params.primitiveType === \"lines\";\n\n if (!triangles && !points && !lines) {\n throw \"Unsupported value for params.primitiveType: \" + params.primitiveType + \"' - supported values are 'triangles', 'points' and 'lines'\";\n }\n\n if (triangles) {\n if (!params.indices) {\n throw \"Parameter expected for 'triangles' primitive: params.indices\";\n }\n }\n\n if (points) {\n if (!params.colors && !params.colorsCompressed) {\n throw \"Parameter expected for 'points' primitive: params.colors or params.colorsCompressed\";\n }\n }\n\n if (lines) {\n if (!params.indices) {\n throw \"Parameter expected for 'lines' primitive: params.indices\";\n }\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more geometries\");\n return;\n }\n\n if (this.geometries[params.geometryId]) {\n console.error(\"XKTGeometry already exists with this ID: \" + params.geometryId);\n return;\n }\n\n const geometryId = params.geometryId;\n const primitiveType = params.primitiveType;\n const positions = new Float64Array(params.positions); // May modify in #finalize\n\n const xktGeometryCfg = {\n geometryId: geometryId,\n geometryIndex: this.geometriesList.length,\n primitiveType: primitiveType,\n positions: positions,\n uvs: params.uvs || params.uv\n }\n\n if (triangles) {\n if (params.normals) {\n xktGeometryCfg.normals = new Float32Array(params.normals);\n }\n xktGeometryCfg.indices = params.indices;\n }\n\n if (points) {\n if (params.colorsCompressed) {\n xktGeometryCfg.colorsCompressed = new Uint8Array(params.colorsCompressed);\n\n } else {\n const colors = params.colors;\n const colorsCompressed = new Uint8Array(colors.length);\n for (let i = 0, len = colors.length; i < len; i++) {\n colorsCompressed[i] = Math.floor(colors[i] * 255);\n }\n xktGeometryCfg.colorsCompressed = colorsCompressed;\n }\n }\n\n if (lines) {\n xktGeometryCfg.indices = params.indices;\n }\n\n if (triangles) {\n\n if (!params.normals && !params.uv && !params.uvs) {\n\n // Building models often duplicate positions to allow face-aligned vertex normals; when we're not\n // providing normals for a geometry, it becomes possible to merge duplicate vertex positions within it.\n\n // TODO: Make vertex merging also merge normals?\n\n const mergedPositions = [];\n const mergedIndices = [];\n mergeVertices(xktGeometryCfg.positions, xktGeometryCfg.indices, mergedPositions, mergedIndices);\n xktGeometryCfg.positions = new Float64Array(mergedPositions);\n xktGeometryCfg.indices = mergedIndices;\n }\n\n xktGeometryCfg.edgeIndices = buildEdgeIndices(xktGeometryCfg.positions, xktGeometryCfg.indices, null, params.edgeThreshold || this.edgeThreshold || 10);\n }\n\n const geometry = new XKTGeometry(xktGeometryCfg);\n\n this.geometries[geometryId] = geometry;\n this.geometriesList.push(geometry);\n\n return geometry;\n }\n\n /**\n * Creates an {@link XKTMesh} within this XKTModel.\n *\n * An {@link XKTMesh} can be owned by one {@link XKTEntity}, which can own multiple {@link XKTMesh}es.\n *\n * Registers the new {@link XKTMesh} in {@link XKTModel#meshes} and {@link XKTModel#meshesList}.\n *\n * @param {*} params Method parameters.\n * @param {Number} params.meshId Unique ID for the {@link XKTMesh}.\n * @param {Number} params.geometryId ID of an existing {@link XKTGeometry} in {@link XKTModel#geometries}.\n * @param {Number} [params.textureSetId] Unique ID of an {@link XKTTextureSet} in {@link XKTModel#textureSets}.\n * @param {Float32Array} params.color RGB color for the {@link XKTMesh}, with each color component in range [0..1].\n * @param {Number} [params.metallic=0] How metallic the {@link XKTMesh} is, in range [0..1]. A value of ````0```` indicates fully dielectric material, while ````1```` indicates fully metallic.\n * @param {Number} [params.roughness=1] How rough the {@link XKTMesh} is, in range [0..1]. A value of ````0```` indicates fully smooth, while ````1```` indicates fully rough.\n * @param {Number} params.opacity Opacity factor for the {@link XKTMesh}, in range [0..1].\n * @param {Float64Array} [params.matrix] Modeling matrix for the {@link XKTMesh}. Overrides ````position````, ````scale```` and ````rotation```` parameters.\n * @param {Number[]} [params.position=[0,0,0]] Position of the {@link XKTMesh}. Overridden by the ````matrix```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] Scale of the {@link XKTMesh}. Overridden by the ````matrix```` parameter.\n * @param {Number[]} [params.rotation=[0,0,0]] Rotation of the {@link XKTMesh} as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by the ````matrix```` parameter.\n * @returns {XKTMesh} The new {@link XKTMesh}.\n */\n createMesh(params) {\n\n if (params.meshId === null || params.meshId === undefined) {\n throw \"Parameter expected: params.meshId\";\n }\n\n if (params.geometryId === null || params.geometryId === undefined) {\n throw \"Parameter expected: params.geometryId\";\n }\n\n if (this.finalized) {\n throw \"XKTModel has been finalized, can't add more meshes\";\n }\n\n if (this.meshes[params.meshId]) {\n console.error(\"XKTMesh already exists with this ID: \" + params.meshId);\n return;\n }\n\n const geometry = this.geometries[params.geometryId];\n\n if (!geometry) {\n console.error(\"XKTGeometry not found: \" + params.geometryId);\n return;\n }\n\n geometry.numInstances++;\n\n let textureSet = null;\n if (params.textureSetId) {\n textureSet = this.textureSets[params.textureSetId];\n if (!textureSet) {\n console.error(\"XKTTextureSet not found: \" + params.textureSetId);\n return;\n }\n textureSet.numInstances++;\n }\n\n let matrix = params.matrix;\n\n if (!matrix) {\n\n const position = params.position;\n const scale = params.scale;\n const rotation = params.rotation;\n\n if (position || scale || rotation) {\n matrix = math.identityMat4();\n const quaternion = math.eulerToQuaternion(rotation || [0, 0, 0], \"XYZ\", math.identityQuaternion());\n math.composeMat4(position || [0, 0, 0], quaternion, scale || [1, 1, 1], matrix)\n\n } else {\n matrix = math.identityMat4();\n }\n }\n\n const meshIndex = this.meshesList.length;\n\n const mesh = new XKTMesh({\n meshId: params.meshId,\n meshIndex,\n matrix,\n geometry,\n color: params.color,\n metallic: params.metallic,\n roughness: params.roughness,\n opacity: params.opacity,\n textureSet\n });\n\n this.meshes[mesh.meshId] = mesh;\n this.meshesList.push(mesh);\n\n return mesh;\n }\n\n /**\n * Creates an {@link XKTEntity} within this XKTModel.\n *\n * Registers the new {@link XKTEntity} in {@link XKTModel#entities} and {@link XKTModel#entitiesList}.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {String} params.entityId Unique ID for the {@link XKTEntity}.\n * @param {String[]} params.meshIds IDs of {@link XKTMesh}es used by the {@link XKTEntity}. Note that each {@link XKTMesh} can only be used by one {@link XKTEntity}.\n * @returns {XKTEntity} The new {@link XKTEntity}.\n */\n createEntity(params) {\n\n if (!params) {\n throw \"Parameters expected: params\";\n }\n\n if (params.entityId === null || params.entityId === undefined) {\n throw \"Parameter expected: params.entityId\";\n }\n\n if (!params.meshIds) {\n throw \"Parameter expected: params.meshIds\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more entities\");\n return;\n }\n\n if (params.meshIds.length === 0) {\n console.warn(\"XKTEntity has no meshes - won't create: \" + params.entityId);\n return;\n }\n\n let entityId = params.entityId;\n\n if (this.entities[entityId]) {\n while (this.entities[entityId]) {\n entityId = math.createUUID();\n }\n console.error(\"XKTEntity already exists with this ID: \" + params.entityId + \" - substituting random ID instead: \" + entityId);\n }\n\n const meshIds = params.meshIds;\n const meshes = [];\n\n for (let meshIdIdx = 0, meshIdLen = meshIds.length; meshIdIdx < meshIdLen; meshIdIdx++) {\n\n const meshId = meshIds[meshIdIdx];\n const mesh = this.meshes[meshId];\n\n if (!mesh) {\n console.error(\"XKTMesh found: \" + meshId);\n continue;\n }\n\n if (mesh.entity) {\n console.error(\"XKTMesh \" + meshId + \" already used by XKTEntity \" + mesh.entity.entityId);\n continue;\n }\n\n meshes.push(mesh);\n }\n\n const entity = new XKTEntity(entityId, meshes);\n\n for (let i = 0, len = meshes.length; i < len; i++) {\n const mesh = meshes[i];\n mesh.entity = entity;\n }\n\n this.entities[entityId] = entity;\n this.entitiesList.push(entity);\n\n return entity;\n }\n\n /**\n * Creates a default {@link XKTMetaObject} for each {@link XKTEntity} that does not already have one.\n */\n createDefaultMetaObjects() {\n\n for (let i = 0, len = this.entitiesList.length; i < len; i++) {\n\n const entity = this.entitiesList[i];\n const metaObjectId = entity.entityId;\n const metaObject = this.metaObjects[metaObjectId];\n\n if (!metaObject) {\n\n if (!this._rootMetaObject) {\n this._rootMetaObject = this.createMetaObject({\n metaObjectId: this.modelId,\n metaObjectType: \"Default\",\n metaObjectName: this.modelId\n });\n }\n\n this.createMetaObject({\n metaObjectId: metaObjectId,\n metaObjectType: \"Default\",\n metaObjectName: \"\" + metaObjectId,\n parentMetaObjectId: this._rootMetaObject.metaObjectId\n });\n }\n }\n }\n\n /**\n * Finalizes this XKTModel.\n *\n * After finalizing, we may then serialize the model to an array buffer using {@link writeXKTModelToArrayBuffer}.\n *\n * Logs error and does nothing if this XKTModel has already been finalized.\n *\n * Internally, this method:\n *\n * * for each {@link XKTEntity} that doesn't already have a {@link XKTMetaObject}, creates one with {@link XKTMetaObject#metaObjectType} set to \"default\"\n * * sets each {@link XKTEntity}'s {@link XKTEntity#hasReusedGeometries} true if it shares its {@link XKTGeometry}s with other {@link XKTEntity}s,\n * * creates each {@link XKTEntity}'s {@link XKTEntity#aabb},\n * * creates {@link XKTTile}s in {@link XKTModel#tilesList}, and\n * * sets {@link XKTModel#finalized} ````true````.\n */\n async finalize() {\n\n if (this.finalized) {\n console.log(\"XKTModel already finalized\");\n return;\n }\n\n this._removeUnusedTextures();\n\n await this._compressTextures();\n\n this._bakeSingleUseGeometryPositions();\n\n this._bakeAndOctEncodeNormals();\n\n this._createEntityAABBs();\n\n const rootKDNode = this._createKDTree();\n\n this.entitiesList = [];\n\n this._createTilesFromKDTree(rootKDNode);\n\n this._createReusedGeometriesDecodeMatrix();\n\n this._flagSolidGeometries();\n\n this.aabb.set(rootKDNode.aabb);\n\n this.finalized = true;\n }\n\n _removeUnusedTextures() {\n let texturesList = [];\n const textures = {};\n for (let i = 0, leni = this.texturesList.length; i < leni; i++) {\n const texture = this.texturesList[i];\n if (texture.channel !== null) {\n texture.textureIndex = texturesList.length;\n texturesList.push(texture);\n textures[texture.textureId] = texture;\n }\n }\n this.texturesList = texturesList;\n this.textures = textures;\n }\n\n _compressTextures() {\n let countTextures = this.texturesList.length;\n return new Promise((resolve) => {\n if (countTextures === 0) {\n resolve();\n return;\n }\n for (let i = 0, leni = this.texturesList.length; i < leni; i++) {\n const texture = this.texturesList[i];\n const encodingOptions = TEXTURE_ENCODING_OPTIONS[texture.channel] || {};\n\n if (texture.src) {\n\n // XKTTexture created with XKTModel#createTexture({ src: ... })\n\n const src = texture.src;\n const fileExt = src.split('.').pop();\n switch (fileExt) {\n case \"jpeg\":\n case \"jpg\":\n case \"png\":\n load(src, ImageLoader, {\n image: {\n type: \"data\"\n }\n }).then((imageData) => {\n if (texture.compressed) {\n encode(imageData, KTX2BasisWriter, encodingOptions).then((encodedData) => {\n const encodedImageData = new Uint8Array(encodedData);\n texture.imageData = encodedImageData;\n if (--countTextures <= 0) {\n resolve();\n }\n }).catch((err) => {\n console.error(\"[XKTModel.finalize] Failed to encode image: \" + err);\n if (--countTextures <= 0) {\n resolve();\n }\n });\n } else {\n texture.imageData = new Uint8Array(1);\n if (--countTextures <= 0) {\n resolve();\n }\n }\n }).catch((err) => {\n console.error(\"[XKTModel.finalize] Failed to load image: \" + err);\n if (--countTextures <= 0) {\n resolve();\n }\n });\n break;\n default:\n if (--countTextures <= 0) {\n resolve();\n }\n break;\n }\n }\n\n if (texture.imageData) {\n\n // XKTTexture created with XKTModel#createTexture({ imageData: ... })\n\n if (texture.compressed) {\n encode(texture.imageData, KTX2BasisWriter, encodingOptions)\n .then((encodedImageData) => {\n texture.imageData = new Uint8Array(encodedImageData);\n if (--countTextures <= 0) {\n resolve();\n }\n }).catch((err) => {\n console.error(\"[XKTModel.finalize] Failed to encode image: \" + err);\n if (--countTextures <= 0) {\n resolve();\n }\n });\n } else {\n texture.imageData = new Uint8Array(1);\n if (--countTextures <= 0) {\n resolve();\n }\n }\n }\n }\n });\n }\n\n _bakeSingleUseGeometryPositions() {\n\n for (let j = 0, lenj = this.meshesList.length; j < lenj; j++) {\n\n const mesh = this.meshesList[j];\n\n const geometry = mesh.geometry;\n\n if (geometry.numInstances === 1) {\n\n const matrix = mesh.matrix;\n\n if (matrix && (!math.isIdentityMat4(matrix))) {\n\n const positions = geometry.positions;\n\n for (let i = 0, len = positions.length; i < len; i += 3) {\n\n tempVec4a[0] = positions[i + 0];\n tempVec4a[1] = positions[i + 1];\n tempVec4a[2] = positions[i + 2];\n tempVec4a[3] = 1;\n\n math.transformPoint4(matrix, tempVec4a, tempVec4b);\n\n positions[i + 0] = tempVec4b[0];\n positions[i + 1] = tempVec4b[1];\n positions[i + 2] = tempVec4b[2];\n }\n }\n }\n }\n }\n\n _bakeAndOctEncodeNormals() {\n\n for (let i = 0, len = this.meshesList.length; i < len; i++) {\n\n const mesh = this.meshesList[i];\n const geometry = mesh.geometry;\n\n if (geometry.normals && !geometry.normalsOctEncoded) {\n\n geometry.normalsOctEncoded = new Int8Array(geometry.normals.length);\n\n if (geometry.numInstances > 1) {\n geometryCompression.octEncodeNormals(geometry.normals, geometry.normals.length, geometry.normalsOctEncoded, 0);\n\n } else {\n const modelNormalMatrix = math.inverseMat4(math.transposeMat4(mesh.matrix, tempMat4), tempMat4b);\n geometryCompression.transformAndOctEncodeNormals(modelNormalMatrix, geometry.normals, geometry.normals.length, geometry.normalsOctEncoded, 0);\n }\n }\n }\n }\n\n _createEntityAABBs() {\n\n for (let i = 0, len = this.entitiesList.length; i < len; i++) {\n\n const entity = this.entitiesList[i];\n const entityAABB = entity.aabb;\n const meshes = entity.meshes;\n\n math.collapseAABB3(entityAABB);\n\n for (let j = 0, lenj = meshes.length; j < lenj; j++) {\n\n const mesh = meshes[j];\n const geometry = mesh.geometry;\n const matrix = mesh.matrix;\n\n if (geometry.numInstances > 1) {\n\n const positions = geometry.positions;\n for (let i = 0, len = positions.length; i < len; i += 3) {\n tempVec4a[0] = positions[i + 0];\n tempVec4a[1] = positions[i + 1];\n tempVec4a[2] = positions[i + 2];\n tempVec4a[3] = 1;\n math.transformPoint4(matrix, tempVec4a, tempVec4b);\n math.expandAABB3Point3(entityAABB, tempVec4b);\n }\n\n } else {\n\n const positions = geometry.positions;\n for (let i = 0, len = positions.length; i < len; i += 3) {\n tempVec4a[0] = positions[i + 0];\n tempVec4a[1] = positions[i + 1];\n tempVec4a[2] = positions[i + 2];\n math.expandAABB3Point3(entityAABB, tempVec4a);\n }\n }\n }\n }\n }\n\n _createKDTree() {\n\n const aabb = math.collapseAABB3();\n\n for (let i = 0, len = this.entitiesList.length; i < len; i++) {\n const entity = this.entitiesList[i];\n math.expandAABB3(aabb, entity.aabb);\n }\n\n const rootKDNode = new KDNode(aabb);\n\n for (let i = 0, len = this.entitiesList.length; i < len; i++) {\n const entity = this.entitiesList[i];\n this._insertEntityIntoKDTree(rootKDNode, entity);\n }\n\n return rootKDNode;\n }\n\n _insertEntityIntoKDTree(kdNode, entity) {\n\n const nodeAABB = kdNode.aabb;\n const entityAABB = entity.aabb;\n\n const nodeAABBDiag = math.getAABB3Diag(nodeAABB);\n\n if (nodeAABBDiag < this.minTileSize) {\n kdNode.entities = kdNode.entities || [];\n kdNode.entities.push(entity);\n math.expandAABB3(nodeAABB, entityAABB);\n return;\n }\n\n if (kdNode.left) {\n if (math.containsAABB3(kdNode.left.aabb, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.left, entity);\n return;\n }\n }\n\n if (kdNode.right) {\n if (math.containsAABB3(kdNode.right.aabb, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.right, entity);\n return;\n }\n }\n\n kdTreeDimLength[0] = nodeAABB[3] - nodeAABB[0];\n kdTreeDimLength[1] = nodeAABB[4] - nodeAABB[1];\n kdTreeDimLength[2] = nodeAABB[5] - nodeAABB[2];\n\n let dim = 0;\n\n if (kdTreeDimLength[1] > kdTreeDimLength[dim]) {\n dim = 1;\n }\n\n if (kdTreeDimLength[2] > kdTreeDimLength[dim]) {\n dim = 2;\n }\n\n if (!kdNode.left) {\n const aabbLeft = nodeAABB.slice();\n aabbLeft[dim + 3] = ((nodeAABB[dim] + nodeAABB[dim + 3]) / 2.0);\n kdNode.left = new KDNode(aabbLeft);\n if (math.containsAABB3(aabbLeft, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.left, entity);\n return;\n }\n }\n\n if (!kdNode.right) {\n const aabbRight = nodeAABB.slice();\n aabbRight[dim] = ((nodeAABB[dim] + nodeAABB[dim + 3]) / 2.0);\n kdNode.right = new KDNode(aabbRight);\n if (math.containsAABB3(aabbRight, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.right, entity);\n return;\n }\n }\n\n kdNode.entities = kdNode.entities || [];\n kdNode.entities.push(entity);\n\n math.expandAABB3(nodeAABB, entityAABB);\n }\n\n _createTilesFromKDTree(rootKDNode) {\n this._createTilesFromKDNode(rootKDNode);\n }\n\n _createTilesFromKDNode(kdNode) {\n if (kdNode.entities && kdNode.entities.length > 0) {\n this._createTileFromEntities(kdNode.entities);\n }\n if (kdNode.left) {\n this._createTilesFromKDNode(kdNode.left);\n }\n if (kdNode.right) {\n this._createTilesFromKDNode(kdNode.right);\n }\n }\n\n /**\n * Creates a tile from the given entities.\n *\n * For each single-use {@link XKTGeometry}, this method centers {@link XKTGeometry#positions} to make them relative to the\n * tile's center, then quantizes the positions to unsigned 16-bit integers, relative to the tile's boundary.\n *\n * @param entities\n */\n _createTileFromEntities(entities) {\n\n const tileAABB = math.AABB3(); // A tighter World-space AABB around the entities\n math.collapseAABB3(tileAABB);\n\n for (let i = 0; i < entities.length; i++) {\n const entity = entities [i];\n math.expandAABB3(tileAABB, entity.aabb);\n }\n\n const tileCenter = math.getAABB3Center(tileAABB);\n const tileCenterNeg = math.mulVec3Scalar(tileCenter, -1, math.vec3());\n\n const rtcAABB = math.AABB3(); // AABB centered at the RTC origin\n\n rtcAABB[0] = tileAABB[0] - tileCenter[0];\n rtcAABB[1] = tileAABB[1] - tileCenter[1];\n rtcAABB[2] = tileAABB[2] - tileCenter[2];\n rtcAABB[3] = tileAABB[3] - tileCenter[0];\n rtcAABB[4] = tileAABB[4] - tileCenter[1];\n rtcAABB[5] = tileAABB[5] - tileCenter[2];\n\n for (let i = 0; i < entities.length; i++) {\n\n const entity = entities [i];\n\n const meshes = entity.meshes;\n\n for (let j = 0, lenj = meshes.length; j < lenj; j++) {\n\n const mesh = meshes[j];\n const geometry = mesh.geometry;\n\n if (!geometry.reused) { // Batched geometry\n\n const positions = geometry.positions;\n\n // Center positions relative to their tile's World-space center\n\n for (let k = 0, lenk = positions.length; k < lenk; k += 3) {\n\n positions[k + 0] -= tileCenter[0];\n positions[k + 1] -= tileCenter[1];\n positions[k + 2] -= tileCenter[2];\n }\n\n // Quantize positions relative to tile's RTC-space boundary\n\n geometryCompression.quantizePositions(positions, positions.length, rtcAABB, geometry.positionsQuantized);\n\n } else { // Instanced geometry\n\n // Post-multiply a translation to the mesh's modeling matrix\n // to center the entity's geometry instances to the tile RTC center\n\n //////////////////////////////\n // Why do we do this?\n // Seems to break various models\n /////////////////////////////////\n\n math.translateMat4v(tileCenterNeg, mesh.matrix);\n }\n }\n\n entity.entityIndex = this.entitiesList.length;\n\n this.entitiesList.push(entity);\n }\n\n const tile = new XKTTile(tileAABB, entities);\n\n this.tilesList.push(tile);\n }\n\n _createReusedGeometriesDecodeMatrix() {\n\n const tempVec3a = math.vec3();\n const reusedGeometriesAABB = math.collapseAABB3(math.AABB3());\n let countReusedGeometries = 0;\n\n for (let geometryIndex = 0, numGeometries = this.geometriesList.length; geometryIndex < numGeometries; geometryIndex++) {\n\n const geometry = this.geometriesList [geometryIndex];\n\n if (geometry.reused) { // Instanced geometry\n\n const positions = geometry.positions;\n\n for (let i = 0, len = positions.length; i < len; i += 3) {\n\n tempVec3a[0] = positions[i];\n tempVec3a[1] = positions[i + 1];\n tempVec3a[2] = positions[i + 2];\n\n math.expandAABB3Point3(reusedGeometriesAABB, tempVec3a);\n }\n\n countReusedGeometries++;\n }\n }\n\n if (countReusedGeometries > 0) {\n\n geometryCompression.createPositionsDecodeMatrix(reusedGeometriesAABB, this.reusedGeometriesDecodeMatrix);\n\n for (let geometryIndex = 0, numGeometries = this.geometriesList.length; geometryIndex < numGeometries; geometryIndex++) {\n\n const geometry = this.geometriesList [geometryIndex];\n\n if (geometry.reused) {\n geometryCompression.quantizePositions(geometry.positions, geometry.positions.length, reusedGeometriesAABB, geometry.positionsQuantized);\n }\n }\n\n } else {\n math.identityMat4(this.reusedGeometriesDecodeMatrix); // No need for this matrix, but we'll be tidy and set it to identity\n }\n }\n\n _flagSolidGeometries() {\n let maxNumPositions = 0;\n let maxNumIndices = 0;\n for (let i = 0, len = this.geometriesList.length; i < len; i++) {\n const geometry = this.geometriesList[i];\n if (geometry.primitiveType === \"triangles\") {\n if (geometry.positionsQuantized.length > maxNumPositions) {\n maxNumPositions = geometry.positionsQuantized.length;\n }\n if (geometry.indices.length > maxNumIndices) {\n maxNumIndices = geometry.indices.length;\n }\n }\n }\n let vertexIndexMapping = new Array(maxNumPositions / 3);\n let edges = new Array(maxNumIndices);\n for (let i = 0, len = this.geometriesList.length; i < len; i++) {\n const geometry = this.geometriesList[i];\n if (geometry.primitiveType === \"triangles\") {\n geometry.solid = isTriangleMeshSolid(geometry.indices, geometry.positionsQuantized, vertexIndexMapping, edges);\n }\n }\n }\n}\n\nexport {\n XKTModel\n}","/**\n * Given geometry defined as an array of positions, optional normals, option uv and an array of indices, returns\n * modified arrays that have duplicate vertices removed.\n *\n * @private\n */\nfunction mergeVertices(positions, indices, mergedPositions, mergedIndices) {\n const positionsMap = {};\n const indicesLookup = [];\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = 10 ** precisionPoints;\n let uvi = 0;\n for (let i = 0, len = positions.length; i < len; i += 3) {\n const vx = positions[i];\n const vy = positions[i + 1];\n const vz = positions[i + 2];\n const key = `${Math.round(vx * precision)}_${Math.round(vy * precision)}_${Math.round(vz * precision)}`;\n if (positionsMap[key] === undefined) {\n positionsMap[key] = mergedPositions.length / 3;\n mergedPositions.push(vx);\n mergedPositions.push(vy);\n mergedPositions.push(vz);\n }\n indicesLookup[i / 3] = positionsMap[key];\n uvi += 2;\n }\n for (let i = 0, len = indices.length; i < len; i++) {\n mergedIndices[i] = indicesLookup[indices[i]];\n }\n}\n\nexport {mergeVertices};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"pako\");","import {XKT_INFO} from \"../XKT_INFO.js\";\nimport * as pako from 'pako';\n\nconst XKT_VERSION = XKT_INFO.xktVersion;\nconst NUM_TEXTURE_ATTRIBUTES = 9;\nconst NUM_MATERIAL_ATTRIBUTES = 6;\n\n/**\n * Writes an {@link XKTModel} to an {@link ArrayBuffer}.\n *\n * @param {XKTModel} xktModel The {@link XKTModel}.\n * @param {Object} [stats] Collects statistics.\n * @returns {ArrayBuffer} The {@link ArrayBuffer}.\n */\nfunction writeXKTModelToArrayBuffer(xktModel, stats = {}) {\n const data = getModelData(xktModel, stats);\n const deflatedData = deflateData(data);\n stats.texturesSize += deflatedData.textureData.byteLength;\n const arrayBuffer = createArrayBuffer(deflatedData);\n return arrayBuffer;\n}\n\nfunction getModelData(xktModel, stats) {\n\n //------------------------------------------------------------------------------------------------------------------\n // Allocate data\n //------------------------------------------------------------------------------------------------------------------\n\n const propertySetsList = xktModel.propertySetsList;\n const metaObjectsList = xktModel.metaObjectsList;\n const geometriesList = xktModel.geometriesList;\n const texturesList = xktModel.texturesList;\n const textureSetsList = xktModel.textureSetsList;\n const meshesList = xktModel.meshesList;\n const entitiesList = xktModel.entitiesList;\n const tilesList = xktModel.tilesList;\n\n const numPropertySets = propertySetsList.length;\n const numMetaObjects = metaObjectsList.length;\n const numGeometries = geometriesList.length;\n const numTextures = texturesList.length;\n const numTextureSets = textureSetsList.length;\n const numMeshes = meshesList.length;\n const numEntities = entitiesList.length;\n const numTiles = tilesList.length;\n\n let lenPositions = 0;\n let lenNormals = 0;\n let lenColors = 0;\n let lenUVs = 0;\n let lenIndices = 0;\n let lenEdgeIndices = 0;\n let lenMatrices = 0;\n let lenTextures = 0;\n\n for (let geometryIndex = 0; geometryIndex < numGeometries; geometryIndex++) {\n const geometry = geometriesList [geometryIndex];\n if (geometry.positionsQuantized) {\n lenPositions += geometry.positionsQuantized.length;\n }\n if (geometry.normalsOctEncoded) {\n lenNormals += geometry.normalsOctEncoded.length;\n }\n if (geometry.colorsCompressed) {\n lenColors += geometry.colorsCompressed.length;\n }\n if (geometry.uvs) {\n lenUVs += geometry.uvs.length;\n }\n if (geometry.indices) {\n lenIndices += geometry.indices.length;\n }\n if (geometry.edgeIndices) {\n lenEdgeIndices += geometry.edgeIndices.length;\n }\n }\n\n for (let textureIndex = 0; textureIndex < numTextures; textureIndex++) {\n const xktTexture = texturesList[textureIndex];\n const imageData = xktTexture.imageData;\n lenTextures += imageData.byteLength;\n\n if (xktTexture.compressed) {\n stats.numCompressedTextures++;\n }\n }\n\n for (let meshIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const mesh = meshesList[meshIndex];\n if (mesh.geometry.numInstances > 1) {\n lenMatrices += 16;\n }\n }\n\n const data = {\n metadata: {},\n textureData: new Uint8Array(lenTextures), // All textures\n eachTextureDataPortion: new Uint32Array(numTextures), // For each texture, an index to its first element in textureData\n eachTextureAttributes: new Uint16Array(numTextures * NUM_TEXTURE_ATTRIBUTES),\n positions: new Uint16Array(lenPositions), // All geometry arrays\n normals: new Int8Array(lenNormals),\n colors: new Uint8Array(lenColors),\n uvs: new Float32Array(lenUVs),\n indices: new Uint32Array(lenIndices),\n edgeIndices: new Uint32Array(lenEdgeIndices),\n eachTextureSetTextures: new Int32Array(numTextureSets * 5), // For each texture set, a set of five Texture indices [color, metal/roughness,normals,emissive,occlusion]; each index has value -1 if no texture\n matrices: new Float32Array(lenMatrices), // Modeling matrices for entities that share geometries. Each entity either shares all it's geometries, or owns all its geometries exclusively. Exclusively-owned geometries are pre-transformed into World-space, and so their entities don't have modeling matrices in this array.\n reusedGeometriesDecodeMatrix: new Float32Array(xktModel.reusedGeometriesDecodeMatrix), // A single, global vertex position de-quantization matrix for all reused geometries. Reused geometries are quantized to their collective Local-space AABB, and this matrix is derived from that AABB.\n eachGeometryPrimitiveType: new Uint8Array(numGeometries), // Primitive type for each geometry (0=solid triangles, 1=surface triangles, 2=lines, 3=points)\n eachGeometryPositionsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.positions. Every primitive type has positions.\n eachGeometryNormalsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.normals. If the next geometry has the same index, then this geometry has no normals.\n eachGeometryColorsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.colors. If the next geometry has the same index, then this geometry has no colors.\n eachGeometryUVsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.uvs. If the next geometry has the same index, then this geometry has no UVs.\n eachGeometryIndicesPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.indices. If the next geometry has the same index, then this geometry has no indices.\n eachGeometryEdgeIndicesPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.edgeIndices. If the next geometry has the same index, then this geometry has no edge indices.\n eachMeshGeometriesPortion: new Uint32Array(numMeshes), // For each mesh, an index into the eachGeometry* arrays\n eachMeshMatricesPortion: new Uint32Array(numMeshes), // For each mesh that shares its geometry, an index to its first element in data.matrices, to indicate the modeling matrix that transforms the shared geometry Local-space vertex positions. This is ignored for meshes that don't share geometries, because the vertex positions of non-shared geometries are pre-transformed into World-space.\n eachMeshTextureSet: new Int32Array(numMeshes), // For each mesh, the index of its texture set in data.eachTextureSetTextures; this array contains signed integers so that we can use -1 to indicate when a mesh has no texture set\n eachMeshMaterialAttributes: new Uint8Array(numMeshes * NUM_MATERIAL_ATTRIBUTES), // For each mesh, an RGBA integer color of format [0..255, 0..255, 0..255, 0..255], and PBR metallic and roughness factors, of format [0..255, 0..255]\n eachEntityId: [], // For each entity, an ID string\n eachEntityMeshesPortion: new Uint32Array(numEntities), // For each entity, the index of the first element of meshes used by the entity\n eachTileAABB: new Float64Array(numTiles * 6), // For each tile, an axis-aligned bounding box\n eachTileEntitiesPortion: new Uint32Array(numTiles) // For each tile, the index of the the first element of eachEntityId, eachEntityMeshesPortion and eachEntityMatricesPortion used by the tile\n };\n\n let countPositions = 0;\n let countNormals = 0;\n let countColors = 0;\n let countUVs = 0;\n let countIndices = 0;\n let countEdgeIndices = 0;\n\n // Metadata\n\n data.metadata = {\n id: xktModel.modelId,\n projectId: xktModel.projectId,\n revisionId: xktModel.revisionId,\n author: xktModel.author,\n createdAt: xktModel.createdAt,\n creatingApplication: xktModel.creatingApplication,\n schema: xktModel.schema,\n propertySets: [],\n metaObjects: []\n };\n\n // Property sets\n\n for (let propertySetsIndex = 0; propertySetsIndex < numPropertySets; propertySetsIndex++) {\n const propertySet = propertySetsList[propertySetsIndex];\n const propertySetJSON = {\n id: \"\" + propertySet.propertySetId,\n name: propertySet.propertySetName,\n type: propertySet.propertySetType,\n properties: propertySet.properties\n };\n data.metadata.propertySets.push(propertySetJSON);\n }\n\n // Metaobjects\n\n for (let metaObjectsIndex = 0; metaObjectsIndex < numMetaObjects; metaObjectsIndex++) {\n const metaObject = metaObjectsList[metaObjectsIndex];\n const metaObjectJSON = {\n name: metaObject.metaObjectName,\n type: metaObject.metaObjectType,\n id: \"\" + metaObject.metaObjectId\n };\n if (metaObject.parentMetaObjectId !== undefined && metaObject.parentMetaObjectId !== null) {\n metaObjectJSON.parent = \"\" + metaObject.parentMetaObjectId;\n }\n if (metaObject.propertySetIds && metaObject.propertySetIds.length > 0) {\n metaObjectJSON.propertySetIds = metaObject.propertySetIds;\n }\n if (metaObject.external) {\n metaObjectJSON.external = metaObject.external;\n }\n data.metadata.metaObjects.push(metaObjectJSON);\n }\n\n // console.log(JSON.stringify(data.metadata, null, \"\\t\"))\n\n // Geometries\n\n for (let geometryIndex = 0; geometryIndex < numGeometries; geometryIndex++) {\n const geometry = geometriesList [geometryIndex];\n const primitiveType = (geometry.primitiveType === \"triangles\") ? (geometry.solid ? 0 : 1) : (geometry.primitiveType === \"points\" ? 2 : 3)\n data.eachGeometryPrimitiveType [geometryIndex] = primitiveType;\n data.eachGeometryPositionsPortion [geometryIndex] = countPositions;\n data.eachGeometryNormalsPortion [geometryIndex] = countNormals;\n data.eachGeometryColorsPortion [geometryIndex] = countColors;\n data.eachGeometryUVsPortion [geometryIndex] = countUVs;\n data.eachGeometryIndicesPortion [geometryIndex] = countIndices;\n data.eachGeometryEdgeIndicesPortion [geometryIndex] = countEdgeIndices;\n if (geometry.positionsQuantized) {\n data.positions.set(geometry.positionsQuantized, countPositions);\n countPositions += geometry.positionsQuantized.length;\n }\n if (geometry.normalsOctEncoded) {\n data.normals.set(geometry.normalsOctEncoded, countNormals);\n countNormals += geometry.normalsOctEncoded.length;\n }\n if (geometry.colorsCompressed) {\n data.colors.set(geometry.colorsCompressed, countColors);\n countColors += geometry.colorsCompressed.length;\n }\n if (geometry.uvs) {\n data.uvs.set(geometry.uvs, countUVs);\n countUVs += geometry.uvs.length;\n }\n if (geometry.indices) {\n data.indices.set(geometry.indices, countIndices);\n countIndices += geometry.indices.length;\n }\n if (geometry.edgeIndices) {\n data.edgeIndices.set(geometry.edgeIndices, countEdgeIndices);\n countEdgeIndices += geometry.edgeIndices.length;\n }\n }\n\n // Textures\n\n for (let textureIndex = 0, numTextures = xktModel.texturesList.length, portionIdx = 0; textureIndex < numTextures; textureIndex++) {\n const xktTexture = xktModel.texturesList[textureIndex];\n const imageData = xktTexture.imageData;\n data.textureData.set(imageData, portionIdx);\n data.eachTextureDataPortion[textureIndex] = portionIdx;\n\n portionIdx += imageData.byteLength;\n\n let textureAttrIdx = textureIndex * NUM_TEXTURE_ATTRIBUTES;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.compressed ? 1 : 0;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.mediaType; // GIFMediaType | PNGMediaType | JPEGMediaType\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.width;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.height;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.minFilter; // LinearMipmapLinearFilter | LinearMipMapNearestFilter | NearestMipMapNearestFilter | NearestMipMapLinearFilter | LinearMipMapLinearFilter\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.magFilter; // LinearFilter | NearestFilter\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapS; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapT; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapR; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n }\n\n // Texture sets\n\n for (let textureSetIndex = 0, numTextureSets = xktModel.textureSetsList.length, eachTextureSetTexturesIndex = 0; textureSetIndex < numTextureSets; textureSetIndex++) {\n const textureSet = textureSetsList[textureSetIndex];\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.colorTexture ? textureSet.colorTexture.textureIndex : -1; // Color map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.metallicRoughnessTexture ? textureSet.metallicRoughnessTexture.textureIndex : -1; // Metal/rough map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.normalsTexture ? textureSet.normalsTexture.textureIndex : -1; // Normal map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.emissiveTexture ? textureSet.emissiveTexture.textureIndex : -1; // Emissive map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.occlusionTexture ? textureSet.occlusionTexture.textureIndex : -1; // Occlusion map\n }\n\n // Tiles -> Entities -> Meshes\n\n let entityIndex = 0;\n let countEntityMeshesPortion = 0;\n let eachMeshMaterialAttributesIndex = 0;\n let matricesIndex = 0;\n let meshIndex= 0;\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const tile = tilesList [tileIndex];\n const tileEntities = tile.entities;\n const numTileEntities = tileEntities.length;\n\n if (numTileEntities === 0) {\n continue;\n }\n\n data.eachTileEntitiesPortion[tileIndex] = entityIndex;\n\n const tileAABB = tile.aabb;\n\n for (let j = 0; j < numTileEntities; j++) {\n\n const entity = tileEntities[j];\n const entityMeshes = entity.meshes;\n const numEntityMeshes = entityMeshes.length;\n\n for (let k = 0; k < numEntityMeshes; k++) {\n\n const mesh = entityMeshes[k];\n const geometry = mesh.geometry;\n const geometryIndex = geometry.geometryIndex;\n\n data.eachMeshGeometriesPortion [countEntityMeshesPortion + k] = geometryIndex;\n\n if (mesh.geometry.numInstances > 1) {\n data.matrices.set(mesh.matrix, matricesIndex);\n data.eachMeshMatricesPortion [meshIndex] = matricesIndex;\n matricesIndex += 16;\n }\n\n data.eachMeshTextureSet[meshIndex] = mesh.textureSet ? mesh.textureSet.textureSetIndex : -1;\n\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[0] * 255); // Color RGB\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[1] * 255);\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[2] * 255);\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.opacity * 255); // Opacity\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.metallic * 255); // Metallic\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.roughness * 255); // Roughness\n\n meshIndex++;\n }\n\n data.eachEntityId [entityIndex] = entity.entityId;\n data.eachEntityMeshesPortion[entityIndex] = countEntityMeshesPortion; // <<<<<<<<<<<<<<<<<<<< Error here? Order/value of countEntityMeshesPortion correct?\n\n entityIndex++;\n countEntityMeshesPortion += numEntityMeshes;\n }\n\n const tileAABBIndex = tileIndex * 6;\n\n data.eachTileAABB.set(tileAABB, tileAABBIndex);\n }\n\n return data;\n}\n\nfunction deflateData(data) {\n return {\n metadata: pako.deflate(deflateJSON(data.metadata)),\n textureData: pako.deflate(data.textureData.buffer),\n eachTextureDataPortion: pako.deflate(data.eachTextureDataPortion.buffer),\n eachTextureAttributes: pako.deflate(data.eachTextureAttributes.buffer),\n positions: pako.deflate(data.positions.buffer),\n normals: pako.deflate(data.normals.buffer),\n colors: pako.deflate(data.colors.buffer),\n uvs: pako.deflate(data.uvs.buffer),\n indices: pako.deflate(data.indices.buffer),\n edgeIndices: pako.deflate(data.edgeIndices.buffer),\n eachTextureSetTextures: pako.deflate(data.eachTextureSetTextures.buffer),\n matrices: pako.deflate(data.matrices.buffer),\n reusedGeometriesDecodeMatrix: pako.deflate(data.reusedGeometriesDecodeMatrix.buffer),\n eachGeometryPrimitiveType: pako.deflate(data.eachGeometryPrimitiveType.buffer),\n eachGeometryPositionsPortion: pako.deflate(data.eachGeometryPositionsPortion.buffer),\n eachGeometryNormalsPortion: pako.deflate(data.eachGeometryNormalsPortion.buffer),\n eachGeometryColorsPortion: pako.deflate(data.eachGeometryColorsPortion.buffer),\n eachGeometryUVsPortion: pako.deflate(data.eachGeometryUVsPortion.buffer),\n eachGeometryIndicesPortion: pako.deflate(data.eachGeometryIndicesPortion.buffer),\n eachGeometryEdgeIndicesPortion: pako.deflate(data.eachGeometryEdgeIndicesPortion.buffer),\n eachMeshGeometriesPortion: pako.deflate(data.eachMeshGeometriesPortion.buffer),\n eachMeshMatricesPortion: pako.deflate(data.eachMeshMatricesPortion.buffer),\n eachMeshTextureSet: pako.deflate(data.eachMeshTextureSet.buffer),\n eachMeshMaterialAttributes: pako.deflate(data.eachMeshMaterialAttributes.buffer),\n eachEntityId: pako.deflate(JSON.stringify(data.eachEntityId)\n .replace(/[\\u007F-\\uFFFF]/g, function (chr) { // Produce only ASCII-chars, so that the data can be inflated later\n return \"\\\\u\" + (\"0000\" + chr.charCodeAt(0).toString(16)).substr(-4)\n })),\n eachEntityMeshesPortion: pako.deflate(data.eachEntityMeshesPortion.buffer),\n eachTileAABB: pako.deflate(data.eachTileAABB.buffer),\n eachTileEntitiesPortion: pako.deflate(data.eachTileEntitiesPortion.buffer)\n };\n}\n\nfunction deflateJSON(strings) {\n return JSON.stringify(strings)\n .replace(/[\\u007F-\\uFFFF]/g, function (chr) { // Produce only ASCII-chars, so that the data can be inflated later\n return \"\\\\u\" + (\"0000\" + chr.charCodeAt(0).toString(16)).substr(-4)\n });\n}\n\nfunction createArrayBuffer(deflatedData) {\n return toArrayBuffer([\n deflatedData.metadata,\n deflatedData.textureData,\n deflatedData.eachTextureDataPortion,\n deflatedData.eachTextureAttributes,\n deflatedData.positions,\n deflatedData.normals,\n deflatedData.colors,\n deflatedData.uvs,\n deflatedData.indices,\n deflatedData.edgeIndices,\n deflatedData.eachTextureSetTextures,\n deflatedData.matrices,\n deflatedData.reusedGeometriesDecodeMatrix,\n deflatedData.eachGeometryPrimitiveType,\n deflatedData.eachGeometryPositionsPortion,\n deflatedData.eachGeometryNormalsPortion,\n deflatedData.eachGeometryColorsPortion,\n deflatedData.eachGeometryUVsPortion,\n deflatedData.eachGeometryIndicesPortion,\n deflatedData.eachGeometryEdgeIndicesPortion,\n deflatedData.eachMeshGeometriesPortion,\n deflatedData.eachMeshMatricesPortion,\n deflatedData.eachMeshTextureSet,\n deflatedData.eachMeshMaterialAttributes,\n deflatedData.eachEntityId,\n deflatedData.eachEntityMeshesPortion,\n deflatedData.eachTileAABB,\n deflatedData.eachTileEntitiesPortion\n ]);\n}\n\nfunction toArrayBuffer(elements) {\n const indexData = new Uint32Array(elements.length + 2);\n indexData[0] = XKT_VERSION;\n indexData [1] = elements.length; // Stored Data 1.1: number of stored elements\n let dataLen = 0; // Stored Data 1.2: length of stored elements\n for (let i = 0, len = elements.length; i < len; i++) {\n const element = elements[i];\n const elementsize = element.length;\n indexData[i + 2] = elementsize;\n dataLen += elementsize;\n }\n const indexBuf = new Uint8Array(indexData.buffer);\n const dataArray = new Uint8Array(indexBuf.length + dataLen);\n dataArray.set(indexBuf);\n let offset = indexBuf.length;\n for (let i = 0, len = elements.length; i < len; i++) { // Stored Data 2: the elements themselves\n const element = elements[i];\n dataArray.set(element, offset);\n offset += element.length;\n }\n return dataArray.buffer;\n}\n\nexport {writeXKTModelToArrayBuffer};","/** @private */\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n var b = splitPolygon(outerNode, hole);\n\n // filter collinear points around the cuts\n filterPoints(outerNode, outerNode.next);\n filterPoints(b, b.next);\n }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n\nexport {earcut};","import {earcut} from './../lib/earcut';\nimport {math} from \"./../lib/math.js\";\n\nconst tempVec2a = math.vec2();\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\n\n/**\n * @desc Parses a CityJSON model into an {@link XKTModel}.\n *\n * [CityJSON](https://www.cityjson.org) is a JSON-based encoding for a subset of the CityGML data model (version 2.0.0),\n * which is an open standardised data model and exchange format to store digital 3D models of cities and\n * landscapes. CityGML is an official standard of the [Open Geospatial Consortium](https://www.ogc.org/).\n *\n * This converter function supports most of the [CityJSON 1.0.2 Specification](https://www.cityjson.org/specs/1.0.2),\n * with the following limitations:\n *\n * * Does not (yet) support CityJSON semantics for geometry primitives.\n * * Does not (yet) support textured geometries.\n * * Does not (yet) support geometry templates.\n * * When the CityJSON file provides multiple *themes* for a geometry, then we parse only the first of the provided themes for that geometry.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a CityJSON model into it.\n *\n * ````javascript\n * utils.loadJSON(\"./models/cityjson/DenHaag.json\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseCityJSONIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {Object} params.data CityJSON data.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when CityJSON has been parsed.\n */\nfunction parseCityJSONIntoXKTModel({data, xktModel, stats = {}, log}) {\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (data.type !== \"CityJSON\") {\n reject(\"Invalid argument: data is not a CityJSON file\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n const vertices = data.transform // Avoid side effects - don't modify the CityJSON data\n ? transformVertices(data.vertices, data.transform)\n : data.vertices;\n\n stats.sourceFormat = data.type || \"\";\n stats.schemaVersion = data.version || \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 0;\n stats.numPropertySets = 0;\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n\n const rootMetaObjectId = math.createUUID();\n\n xktModel.createMetaObject({\n metaObjectId: rootMetaObjectId,\n metaObjectType: \"Model\",\n metaObjectName: \"Model\"\n });\n\n stats.numMetaObjects++;\n\n const modelMetaObjectId = math.createUUID();\n\n xktModel.createMetaObject({\n metaObjectId: modelMetaObjectId,\n metaObjectType: \"CityJSON\",\n metaObjectName: \"CityJSON\",\n parentMetaObjectId: rootMetaObjectId\n });\n\n stats.numMetaObjects++;\n\n const ctx = {\n data,\n vertices,\n xktModel,\n rootMetaObjectId: modelMetaObjectId,\n log: (log || function (msg) {\n }),\n nextId: 0,\n stats\n };\n\n ctx.log(\"Using parser: parseCityJSONIntoXKTModel\");\n\n ctx.xktModel.schema = data.type + \" \" + data.version;\n\n ctx.log(\"Converting \" + ctx.xktModel.schema);\n\n parseCityJSON(ctx);\n\n resolve();\n });\n}\n\nfunction transformVertices(vertices, transform) {\n const transformedVertices = [];\n const scale = transform.scale || math.vec3([1, 1, 1]);\n const translate = transform.translate || math.vec3([0, 0, 0]);\n for (let i = 0, j = 0; i < vertices.length; i++, j += 3) {\n const x = (vertices[i][0] * scale[0]) + translate[0];\n const y = (vertices[i][1] * scale[1]) + translate[1];\n const z = (vertices[i][2] * scale[2]) + translate[2];\n transformedVertices.push([x, y, z]);\n }\n return transformedVertices;\n}\n\nfunction parseCityJSON(ctx) {\n\n const data = ctx.data;\n const cityObjects = data.CityObjects;\n\n for (const objectId in cityObjects) {\n if (cityObjects.hasOwnProperty(objectId)) {\n const cityObject = cityObjects[objectId];\n parseCityObject(ctx, cityObject, objectId);\n }\n }\n}\n\nfunction parseCityObject(ctx, cityObject, objectId) {\n\n const xktModel = ctx.xktModel;\n const data = ctx.data;\n const metaObjectId = objectId;\n const metaObjectType = cityObject.type;\n const metaObjectName = metaObjectType + \" : \" + objectId;\n\n const parentMetaObjectId = cityObject.parents ? cityObject.parents[0] : ctx.rootMetaObjectId;\n\n xktModel.createMetaObject({\n metaObjectId,\n metaObjectName,\n metaObjectType,\n parentMetaObjectId\n });\n\n ctx.stats.numMetaObjects++;\n\n if (!(cityObject.geometry && cityObject.geometry.length > 0)) {\n return;\n }\n\n const meshIds = [];\n\n for (let i = 0, len = cityObject.geometry.length; i < len; i++) {\n\n const geometry = cityObject.geometry[i];\n\n let objectMaterial;\n let surfaceMaterials;\n\n const appearance = data.appearance;\n if (appearance) {\n const materials = appearance.materials;\n if (materials) {\n const geometryMaterial = geometry.material;\n if (geometryMaterial) {\n const themeIds = Object.keys(geometryMaterial);\n if (themeIds.length > 0) {\n const themeId = themeIds[0];\n const theme = geometryMaterial[themeId];\n if (theme.value !== undefined) {\n objectMaterial = materials[theme.value];\n } else {\n const values = theme.values;\n if (values) {\n surfaceMaterials = [];\n for (let j = 0, lenj = values.length; j < lenj; j++) {\n const value = values[i];\n const surfaceMaterial = materials[value];\n surfaceMaterials.push(surfaceMaterial);\n }\n }\n }\n }\n }\n }\n }\n\n if (surfaceMaterials) {\n parseGeometrySurfacesWithOwnMaterials(ctx, geometry, surfaceMaterials, meshIds);\n\n } else {\n parseGeometrySurfacesWithSharedMaterial(ctx, geometry, objectMaterial, meshIds);\n }\n }\n\n if (meshIds.length > 0) {\n xktModel.createEntity({\n entityId: objectId,\n meshIds: meshIds\n });\n\n ctx.stats.numObjects++;\n }\n}\n\nfunction parseGeometrySurfacesWithOwnMaterials(ctx, geometry, surfaceMaterials, meshIds) {\n\n const geomType = geometry.type;\n\n switch (geomType) {\n\n case \"MultiPoint\":\n break;\n\n case \"MultiLineString\":\n break;\n\n case \"MultiSurface\":\n\n case \"CompositeSurface\":\n const surfaces = geometry.boundaries;\n parseSurfacesWithOwnMaterials(ctx, surfaceMaterials, surfaces, meshIds);\n break;\n\n case \"Solid\":\n const shells = geometry.boundaries;\n for (let j = 0; j < shells.length; j++) {\n const surfaces = shells[j];\n parseSurfacesWithOwnMaterials(ctx, surfaceMaterials, surfaces, meshIds);\n }\n break;\n\n case \"MultiSolid\":\n\n case \"CompositeSolid\":\n const solids = geometry.boundaries;\n for (let j = 0; j < solids.length; j++) {\n for (let k = 0; k < solids[j].length; k++) {\n const surfaces = solids[j][k];\n parseSurfacesWithOwnMaterials(ctx, surfaceMaterials, surfaces, meshIds);\n }\n }\n break;\n\n case \"GeometryInstance\":\n break;\n }\n}\n\nfunction parseSurfacesWithOwnMaterials(ctx, surfaceMaterials, surfaces, meshIds) {\n\n const vertices = ctx.vertices;\n const xktModel = ctx.xktModel;\n\n for (let i = 0; i < surfaces.length; i++) {\n\n const surface = surfaces[i];\n const surfaceMaterial = surfaceMaterials[i] || {diffuseColor: [0.8, 0.8, 0.8], transparency: 1.0};\n\n const face = [];\n const holes = [];\n\n const sharedIndices = [];\n\n const geometryCfg = {\n positions: [],\n indices: []\n };\n\n for (let j = 0; j < surface.length; j++) {\n\n if (face.length > 0) {\n holes.push(face.length);\n }\n\n const newFace = extractLocalIndices(ctx, surface[j], sharedIndices, geometryCfg);\n\n face.push(...newFace);\n }\n\n if (face.length === 3) { // Triangle\n\n geometryCfg.indices.push(face[0]);\n geometryCfg.indices.push(face[1]);\n geometryCfg.indices.push(face[2]);\n\n } else if (face.length > 3) { // Polygon\n\n // Prepare to triangulate\n\n const pList = [];\n\n for (let k = 0; k < face.length; k++) {\n pList.push({\n x: vertices[sharedIndices[face[k]]][0],\n y: vertices[sharedIndices[face[k]]][1],\n z: vertices[sharedIndices[face[k]]][2]\n });\n }\n\n const normal = getNormalOfPositions(pList, math.vec3());\n\n // Convert to 2D\n\n let pv = [];\n\n for (let k = 0; k < pList.length; k++) {\n\n to2D(pList[k], normal, tempVec2a);\n\n pv.unshift(tempVec2a[0]);\n pv.unshift(tempVec2a[1]);\n }\n\n // Triangulate\n\n const tr = earcut(pv, holes, 2);\n\n // Create triangles\n\n for (let k = 0; k < tr.length; k += 3) {\n geometryCfg.indices.unshift(face[tr[k]]);\n geometryCfg.indices.unshift(face[tr[k + 1]]);\n geometryCfg.indices.unshift(face[tr[k + 2]]);\n }\n }\n\n const geometryId = \"\" + ctx.nextId++;\n const meshId = \"\" + ctx.nextId++;\n\n xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: geometryCfg.positions,\n indices: geometryCfg.indices\n });\n\n xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n color: (surfaceMaterial && surfaceMaterial.diffuseColor) ? surfaceMaterial.diffuseColor : [0.8, 0.8, 0.8],\n opacity: 1.0\n //opacity: (surfaceMaterial && surfaceMaterial.transparency !== undefined) ? (1.0 - surfaceMaterial.transparency) : 1.0\n });\n\n meshIds.push(meshId);\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += geometryCfg.positions.length / 3;\n ctx.stats.numTriangles += geometryCfg.indices.length / 3;\n }\n}\n\nfunction parseGeometrySurfacesWithSharedMaterial(ctx, geometry, objectMaterial, meshIds) {\n\n const xktModel = ctx.xktModel;\n const sharedIndices = [];\n const geometryCfg = {\n positions: [],\n indices: []\n };\n\n const geomType = geometry.type;\n\n switch (geomType) {\n case \"MultiPoint\":\n break;\n\n case \"MultiLineString\":\n break;\n\n case \"MultiSurface\":\n case \"CompositeSurface\":\n const surfaces = geometry.boundaries;\n parseSurfacesWithSharedMaterial(ctx, surfaces, sharedIndices, geometryCfg);\n break;\n\n case \"Solid\":\n const shells = geometry.boundaries;\n for (let j = 0; j < shells.length; j++) {\n const surfaces = shells[j];\n parseSurfacesWithSharedMaterial(ctx, surfaces, sharedIndices, geometryCfg);\n }\n break;\n\n case \"MultiSolid\":\n case \"CompositeSolid\":\n const solids = geometry.boundaries;\n for (let j = 0; j < solids.length; j++) {\n for (let k = 0; k < solids[j].length; k++) {\n const surfaces = solids[j][k];\n parseSurfacesWithSharedMaterial(ctx, surfaces, sharedIndices, geometryCfg);\n }\n }\n break;\n\n case \"GeometryInstance\":\n break;\n }\n\n const geometryId = \"\" + ctx.nextId++;\n const meshId = \"\" + ctx.nextId++;\n\n xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: geometryCfg.positions,\n indices: geometryCfg.indices\n });\n\n xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n color: (objectMaterial && objectMaterial.diffuseColor) ? objectMaterial.diffuseColor : [0.8, 0.8, 0.8],\n opacity: 1.0\n //opacity: (objectMaterial && objectMaterial.transparency !== undefined) ? (1.0 - objectMaterial.transparency) : 1.0\n });\n\n meshIds.push(meshId);\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += geometryCfg.positions.length / 3;\n ctx.stats.numTriangles += geometryCfg.indices.length / 3;\n}\n\nfunction parseSurfacesWithSharedMaterial(ctx, surfaces, sharedIndices, primitiveCfg) {\n\n const vertices = ctx.vertices;\n\n for (let i = 0; i < surfaces.length; i++) {\n\n let boundary = [];\n let holes = [];\n\n for (let j = 0; j < surfaces[i].length; j++) {\n if (boundary.length > 0) {\n holes.push(boundary.length);\n }\n const newBoundary = extractLocalIndices(ctx, surfaces[i][j], sharedIndices, primitiveCfg);\n boundary.push(...newBoundary);\n }\n\n if (boundary.length === 3) { // Triangle\n\n primitiveCfg.indices.push(boundary[0]);\n primitiveCfg.indices.push(boundary[1]);\n primitiveCfg.indices.push(boundary[2]);\n\n } else if (boundary.length > 3) { // Polygon\n\n let pList = [];\n\n for (let k = 0; k < boundary.length; k++) {\n pList.push({\n x: vertices[sharedIndices[boundary[k]]][0],\n y: vertices[sharedIndices[boundary[k]]][1],\n z: vertices[sharedIndices[boundary[k]]][2]\n });\n }\n\n const normal = getNormalOfPositions(pList, math.vec3());\n let pv = [];\n\n for (let k = 0; k < pList.length; k++) {\n to2D(pList[k], normal, tempVec2a);\n pv.unshift(tempVec2a[0]);\n pv.unshift(tempVec2a[1]);\n }\n\n const tr = earcut(pv, holes, 2);\n\n for (let k = 0; k < tr.length; k += 3) {\n primitiveCfg.indices.unshift(boundary[tr[k]]);\n primitiveCfg.indices.unshift(boundary[tr[k + 1]]);\n primitiveCfg.indices.unshift(boundary[tr[k + 2]]);\n }\n }\n }\n}\n\nfunction extractLocalIndices(ctx, boundary, sharedIndices, geometryCfg) {\n\n const vertices = ctx.vertices;\n const newBoundary = []\n\n for (let i = 0, len = boundary.length; i < len; i++) {\n\n const index = boundary[i];\n\n if (sharedIndices.includes(index)) {\n const vertexIndex = sharedIndices.indexOf(index);\n newBoundary.push(vertexIndex);\n\n } else {\n geometryCfg.positions.push(vertices[index][0]);\n geometryCfg.positions.push(vertices[index][1]);\n geometryCfg.positions.push(vertices[index][2]);\n\n newBoundary.push(sharedIndices.length);\n\n sharedIndices.push(index);\n }\n }\n\n return newBoundary\n}\n\nfunction getNormalOfPositions(positions, normal) {\n\n for (let i = 0; i < positions.length; i++) {\n\n let nexti = i + 1;\n if (nexti === positions.length) {\n nexti = 0;\n }\n\n normal[0] += ((positions[i].y - positions[nexti].y) * (positions[i].z + positions[nexti].z));\n normal[1] += ((positions[i].z - positions[nexti].z) * (positions[i].x + positions[nexti].x));\n normal[2] += ((positions[i].x - positions[nexti].x) * (positions[i].y + positions[nexti].y));\n }\n\n return math.normalizeVec3(normal);\n}\n\nfunction to2D(_p, _n, re) {\n\n const p = tempVec3a;\n const n = tempVec3b;\n const x3 = tempVec3c;\n\n p[0] = _p.x;\n p[1] = _p.y;\n p[2] = _p.z;\n\n n[0] = _n.x;\n n[1] = _n.y;\n n[2] = _n.z;\n\n x3[0] = 1.1;\n x3[1] = 1.1;\n x3[2] = 1.1;\n\n const dist = math.lenVec3(math.subVec3(x3, n));\n\n if (dist < 0.01) {\n x3[0] += 1.0;\n x3[1] += 2.0;\n x3[2] += 3.0;\n }\n\n const dot = math.dotVec3(x3, n);\n const tmp2 = math.mulVec3Scalar(n, dot, math.vec3());\n\n x3[0] -= tmp2[0];\n x3[1] -= tmp2[1];\n x3[2] -= tmp2[2];\n\n math.normalizeVec3(x3);\n\n const y3 = math.cross3Vec3(n, x3, math.vec3());\n const x = math.dotVec3(p, x3);\n const y = math.dotVec3(p, y3);\n\n re[0] = x;\n re[1] = y;\n}\n\nexport {parseCityJSONIntoXKTModel};","function isString(value) {\n return (typeof value === 'string' || value instanceof String);\n}\n\nfunction apply(o, o2) {\n for (const name in o) {\n if (o.hasOwnProperty(name)) {\n o2[name] = o[name];\n }\n }\n return o2;\n}\n\n/**\n * @private\n */\nconst utils = {\n isString,\n apply\n};\n\nexport {utils};\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@loaders.gl/gltf\");","import {utils} from \"../XKTModel/lib/utils.js\";\nimport {math} from \"../lib/math.js\";\n\nimport {parse} from '@loaders.gl/core';\nimport {GLTFLoader} from '@loaders.gl/gltf';\nimport {\n ClampToEdgeWrapping,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearMipMapNearestFilter,\n MirroredRepeatWrapping,\n NearestFilter,\n NearestMipMapLinearFilter,\n NearestMipMapNearestFilter,\n RepeatWrapping\n} from \"../constants.js\";\n\n/**\n * @desc Parses glTF into an {@link XKTModel}, supporting ````.glb```` and textures.\n *\n * * Supports ````.glb```` and textures\n * * For a lightweight glTF JSON parser that ignores textures, see {@link parseGLTFJSONIntoXKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a binary glTF model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"../assets/models/gltf/HousePlan/glTF-Binary/HousePlan.glb\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {ArrayBuffer} params.data The glTF.\n * @param {String} [params.baseUri] The base URI used to load this glTF, if any. For resolving relative uris to linked resources.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeTextures=true] Whether to parse textures.\n * @param {Boolean} [params.includeNormals=true] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded non-PBR representation of the glTF.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when glTF has been parsed.\n */\nfunction parseGLTFIntoXKTModel({\n data,\n baseUri,\n xktModel,\n metaModelData,\n includeTextures = true,\n includeNormals = true,\n getAttachment,\n stats = {},\n log\n }) {\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n stats.sourceFormat = \"glTF\";\n stats.schemaVersion = \"2.0\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numNormals = 0;\n stats.numUVs = 0;\n stats.numTextures = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n\n parse(data, GLTFLoader, {\n baseUri\n }).then((gltfData) => {\n\n const ctx = {\n gltfData,\n metaModelCorrections: metaModelData ? getMetaModelCorrections(metaModelData) : null,\n getAttachment: getAttachment || (() => {\n throw new Error('You must define getAttachment() method to convert glTF with external resources')\n }),\n log: (log || function (msg) {\n }),\n error: function (msg) {\n console.error(msg);\n },\n xktModel,\n includeNormals: (includeNormals !== false),\n includeTextures: (includeTextures !== false),\n geometryCreated: {},\n nextId: 0,\n stats\n };\n\n ctx.log(\"Using parser: parseGLTFIntoXKTModel\");\n ctx.log(`Parsing normals: ${ctx.includeNormals ? \"enabled\" : \"disabled\"}`);\n ctx.log(`Parsing textures: ${ctx.includeTextures ? \"enabled\" : \"disabled\"}`);\n\n if (ctx.includeTextures) {\n parseTextures(ctx);\n }\n parseMaterials(ctx);\n parseDefaultScene(ctx);\n\n resolve();\n\n }, (errMsg) => {\n reject(errMsg);\n });\n });\n}\n\nfunction getMetaModelCorrections(metaModelData) {\n const eachRootStats = {};\n const eachChildRoot = {};\n const metaObjects = metaModelData.metaObjects || [];\n const metaObjectsMap = {};\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const metaObject = metaObjects[i];\n metaObjectsMap[metaObject.id] = metaObject;\n }\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const metaObject = metaObjects[i];\n if (metaObject.parent !== undefined && metaObject.parent !== null) {\n const metaObjectParent = metaObjectsMap[metaObject.parent];\n if (metaObject.type === metaObjectParent.type) {\n let rootMetaObject = metaObjectParent;\n while (rootMetaObject.parent && metaObjectsMap[rootMetaObject.parent].type === rootMetaObject.type) {\n rootMetaObject = metaObjectsMap[rootMetaObject.parent];\n }\n const rootStats = eachRootStats[rootMetaObject.id] || (eachRootStats[rootMetaObject.id] = {\n numChildren: 0,\n countChildren: 0\n });\n rootStats.numChildren++;\n eachChildRoot[metaObject.id] = rootMetaObject;\n } else {\n\n }\n }\n }\n return {\n metaObjectsMap,\n eachRootStats,\n eachChildRoot\n };\n}\n\nfunction parseTextures(ctx) {\n const gltfData = ctx.gltfData;\n const textures = gltfData.textures;\n if (textures) {\n for (let i = 0, len = textures.length; i < len; i++) {\n parseTexture(ctx, textures[i]);\n ctx.stats.numTextures++;\n }\n }\n}\n\nfunction parseTexture(ctx, texture) {\n if (!texture.source || !texture.source.image) {\n return;\n }\n const textureId = `texture-${ctx.nextId++}`;\n\n let minFilter = NearestMipMapLinearFilter;\n switch (texture.sampler.minFilter) {\n case 9728:\n minFilter = NearestFilter;\n break;\n case 9729:\n minFilter = LinearFilter;\n break;\n case 9984:\n minFilter = NearestMipMapNearestFilter;\n break;\n case 9985:\n minFilter = LinearMipMapNearestFilter;\n break;\n case 9986:\n minFilter = NearestMipMapLinearFilter;\n break;\n case 9987:\n minFilter = LinearMipMapLinearFilter;\n break;\n }\n\n let magFilter = LinearFilter;\n switch (texture.sampler.magFilter) {\n case 9728:\n magFilter = NearestFilter;\n break;\n case 9729:\n magFilter = LinearFilter;\n break;\n }\n\n let wrapS = RepeatWrapping;\n switch (texture.sampler.wrapS) {\n case 33071:\n wrapS = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapS = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapS = RepeatWrapping;\n break;\n }\n\n let wrapT = RepeatWrapping;\n switch (texture.sampler.wrapT) {\n case 33071:\n wrapT = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapT = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapT = RepeatWrapping;\n break;\n }\n\n let wrapR = RepeatWrapping;\n switch (texture.sampler.wrapR) {\n case 33071:\n wrapR = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapR = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapR = RepeatWrapping;\n break;\n }\n\n ctx.xktModel.createTexture({\n textureId: textureId,\n imageData: texture.source.image,\n mediaType: texture.source.mediaType,\n compressed: true,\n width: texture.source.image.width,\n height: texture.source.image.height,\n minFilter,\n magFilter,\n wrapS,\n wrapT,\n wrapR,\n flipY: !!texture.flipY,\n // encoding: \"sRGB\"\n });\n texture._textureId = textureId;\n}\n\nfunction parseMaterials(ctx) {\n const gltfData = ctx.gltfData;\n const materials = gltfData.materials;\n if (materials) {\n for (let i = 0, len = materials.length; i < len; i++) {\n const material = materials[i];\n material._textureSetId = ctx.includeTextures ? parseTextureSet(ctx, material) : null;\n material._attributes = parseMaterialAttributes(ctx, material);\n }\n }\n}\n\nfunction parseTextureSet(ctx, material) {\n const textureSetCfg = {};\n if (material.normalTexture) {\n textureSetCfg.normalTextureId = material.normalTexture.texture._textureId;\n }\n if (material.occlusionTexture) {\n textureSetCfg.occlusionTextureId = material.occlusionTexture.texture._textureId;\n }\n if (material.emissiveTexture) {\n textureSetCfg.emissiveTextureId = material.emissiveTexture.texture._textureId;\n }\n // const alphaMode = material.alphaMode;\n // switch (alphaMode) {\n // case \"NORMAL_OPAQUE\":\n // materialCfg.alphaMode = \"opaque\";\n // break;\n // case \"MASK\":\n // materialCfg.alphaMode = \"mask\";\n // break;\n // case \"BLEND\":\n // materialCfg.alphaMode = \"blend\";\n // break;\n // default:\n // }\n // const alphaCutoff = material.alphaCutoff;\n // if (alphaCutoff !== undefined) {\n // materialCfg.alphaCutoff = alphaCutoff;\n // }\n const metallicPBR = material.pbrMetallicRoughness;\n if (material.pbrMetallicRoughness) {\n const pbrMetallicRoughness = material.pbrMetallicRoughness;\n const baseColorTexture = pbrMetallicRoughness.baseColorTexture || pbrMetallicRoughness.colorTexture;\n if (baseColorTexture) {\n if (baseColorTexture.texture) {\n textureSetCfg.colorTextureId = baseColorTexture.texture._textureId;\n } else {\n textureSetCfg.colorTextureId = ctx.gltfData.textures[baseColorTexture.index]._textureId;\n }\n }\n if (metallicPBR.metallicRoughnessTexture) {\n textureSetCfg.metallicRoughnessTextureId = metallicPBR.metallicRoughnessTexture.texture._textureId;\n }\n }\n const extensions = material.extensions;\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const specularTexture = specularPBR.specularTexture;\n if (specularTexture !== null && specularTexture !== undefined) {\n // textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;\n }\n const specularColorTexture = specularPBR.specularColorTexture;\n if (specularColorTexture !== null && specularColorTexture !== undefined) {\n textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;\n }\n }\n }\n if (textureSetCfg.normalTextureId !== undefined ||\n textureSetCfg.occlusionTextureId !== undefined ||\n textureSetCfg.emissiveTextureId !== undefined ||\n textureSetCfg.colorTextureId !== undefined ||\n textureSetCfg.metallicRoughnessTextureId !== undefined) {\n textureSetCfg.textureSetId = `textureSet-${ctx.nextId++};`\n ctx.xktModel.createTextureSet(textureSetCfg);\n ctx.stats.numTextureSets++;\n return textureSetCfg.textureSetId;\n }\n return null;\n}\n\nfunction parseMaterialAttributes(ctx, material) { // Substitute RGBA for material, to use fast flat shading instead\n const extensions = material.extensions;\n const materialAttributes = {\n color: new Float32Array([1, 1, 1, 1]),\n opacity: 1,\n metallic: 0,\n roughness: 1\n };\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n materialAttributes.color.set(diffuseFactor);\n }\n }\n const common = extensions[\"KHR_materials_common\"];\n if (common) {\n const technique = common.technique;\n const values = common.values || {};\n const blinn = technique === \"BLINN\";\n const phong = technique === \"PHONG\";\n const lambert = technique === \"LAMBERT\";\n const diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (!utils.isString(diffuse)) {\n materialAttributes.color.set(diffuse);\n }\n }\n const transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n materialAttributes.opacity = transparency;\n }\n const transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n materialAttributes.opacity = transparent;\n }\n }\n }\n const metallicPBR = material.pbrMetallicRoughness;\n if (metallicPBR) {\n const baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n materialAttributes.color[0] = baseColorFactor[0];\n materialAttributes.color[1] = baseColorFactor[1];\n materialAttributes.color[2] = baseColorFactor[2];\n materialAttributes.opacity = baseColorFactor[3];\n }\n const metallicFactor = metallicPBR.metallicFactor;\n if (metallicFactor !== null && metallicFactor !== undefined) {\n materialAttributes.metallic = metallicFactor;\n }\n const roughnessFactor = metallicPBR.roughnessFactor;\n if (roughnessFactor !== null && roughnessFactor !== undefined) {\n materialAttributes.roughness = roughnessFactor;\n }\n }\n return materialAttributes;\n}\n\nfunction parseDefaultScene(ctx) {\n const gltfData = ctx.gltfData;\n const scene = gltfData.scene || gltfData.scenes[0];\n if (!scene) {\n ctx.error(\"glTF has no default scene\");\n return;\n }\n parseScene(ctx, scene);\n}\n\nfunction parseScene(ctx, scene) {\n const nodes = scene.nodes;\n if (!nodes) {\n return;\n }\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n countMeshUsage(ctx, node);\n }\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n parseNode(ctx, node, 0, null);\n }\n}\n\nfunction countMeshUsage(ctx, node) {\n const mesh = node.mesh;\n if (mesh) {\n mesh.instances = mesh.instances ? mesh.instances + 1 : 1;\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n if (!childNode) {\n ctx.error(\"Node not found: \" + i);\n continue;\n }\n countMeshUsage(ctx, childNode);\n }\n }\n}\n\nconst deferredMeshIds = [];\n\nfunction parseNode(ctx, node, depth, matrix) {\n\n const xktModel = ctx.xktModel;\n\n // Pre-order visit scene node\n\n let localMatrix;\n if (node.matrix) {\n localMatrix = node.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.translation) {\n localMatrix = math.translationMat4v(node.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.rotation) {\n localMatrix = math.quaternionToMat4(node.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.scale) {\n localMatrix = math.scalingMat4v(node.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (node.mesh) {\n\n const mesh = node.mesh;\n const numPrimitives = mesh.primitives.length;\n\n if (numPrimitives > 0) {\n for (let i = 0; i < numPrimitives; i++) {\n const primitive = mesh.primitives[i];\n if (!primitive._xktGeometryId) {\n const xktGeometryId = \"geometry-\" + ctx.nextId++;\n const geometryCfg = {\n geometryId: xktGeometryId\n };\n switch (primitive.mode) {\n case 0: // POINTS\n geometryCfg.primitiveType = \"points\";\n break;\n case 1: // LINES\n geometryCfg.primitiveType = \"lines\";\n break;\n case 2: // LINE_LOOP\n geometryCfg.primitiveType = \"lines\";\n break;\n case 3: // LINE_STRIP\n geometryCfg.primitiveType = \"lines\";\n break;\n case 4: // TRIANGLES\n geometryCfg.primitiveType = \"triangles\";\n break;\n case 5: // TRIANGLE_STRIP\n geometryCfg.primitiveType = \"triangles\";\n break;\n case 6: // TRIANGLE_FAN\n geometryCfg.primitiveType = \"triangles\";\n break;\n default:\n geometryCfg.primitiveType = \"triangles\";\n }\n const POSITION = primitive.attributes.POSITION;\n if (!POSITION) {\n continue;\n }\n geometryCfg.positions = primitive.attributes.POSITION.value;\n ctx.stats.numVertices += geometryCfg.positions.length / 3;\n if (ctx.includeNormals) {\n if (primitive.attributes.NORMAL) {\n geometryCfg.normals = primitive.attributes.NORMAL.value;\n ctx.stats.numNormals += geometryCfg.normals.length / 3;\n }\n }\n if (primitive.attributes.COLOR_0) {\n geometryCfg.colorsCompressed = primitive.attributes.COLOR_0.value;\n }\n if (ctx.includeTextures) {\n if (primitive.attributes.TEXCOORD_0) {\n geometryCfg.uvs = primitive.attributes.TEXCOORD_0.value;\n ctx.stats.numUVs += geometryCfg.uvs.length / 2;\n }\n }\n if (primitive.indices) {\n geometryCfg.indices = primitive.indices.value;\n if (primitive.mode === 4) {\n ctx.stats.numTriangles += geometryCfg.indices.length / 3;\n }\n }\n xktModel.createGeometry(geometryCfg);\n primitive._xktGeometryId = xktGeometryId;\n ctx.stats.numGeometries++;\n }\n\n const xktMeshId = ctx.nextId++;\n const meshCfg = {\n meshId: xktMeshId,\n geometryId: primitive._xktGeometryId,\n matrix: matrix ? matrix.slice() : math.identityMat4()\n };\n const material = primitive.material;\n if (material) {\n meshCfg.textureSetId = material._textureSetId;\n meshCfg.color = material._attributes.color;\n meshCfg.opacity = material._attributes.opacity;\n meshCfg.metallic = material._attributes.metallic;\n meshCfg.roughness = material._attributes.roughness;\n } else {\n meshCfg.color = [1.0, 1.0, 1.0];\n meshCfg.opacity = 1.0;\n }\n xktModel.createMesh(meshCfg);\n deferredMeshIds.push(xktMeshId);\n }\n }\n }\n\n // Visit child scene nodes\n\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n parseNode(ctx, childNode, depth + 1, matrix);\n }\n }\n\n // Post-order visit scene node\n\n const nodeName = node.name;\n if (((nodeName !== undefined && nodeName !== null) || depth === 0) && deferredMeshIds.length > 0) {\n let xktEntityId = nodeName || math.createUUID();\n if (xktModel.entities[xktEntityId]) {\n ctx.error(\"Two or more glTF nodes found with same 'name' attribute: '\" + nodeName + \"'\");\n }\n while (!xktEntityId || xktModel.entities[xktEntityId]) {\n xktEntityId = \"entity-\" + ctx.nextId++;\n }\n if (ctx.metaModelCorrections) {\n // Merging meshes into XKTObjects that map to metaobjects\n const rootMetaObject = ctx.metaModelCorrections.eachChildRoot[xktEntityId];\n if (rootMetaObject) {\n const rootMetaObjectStats = ctx.metaModelCorrections.eachRootStats[rootMetaObject.id];\n rootMetaObjectStats.countChildren++;\n if (rootMetaObjectStats.countChildren >= rootMetaObjectStats.numChildren) {\n xktModel.createEntity({\n entityId: rootMetaObject.id,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds.length = 0;\n }\n } else {\n const metaObject = ctx.metaModelCorrections.metaObjectsMap[xktEntityId];\n if (metaObject) {\n xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds.length = 0;\n }\n }\n } else {\n // Create an XKTObject from the meshes at each named glTF node, don't care about metaobjects\n xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds.length = 0;\n }\n }\n}\n\nexport {parseGLTFIntoXKTModel};\n","import {utils} from \"../XKTModel/lib/utils.js\";\nimport {math} from \"../lib/math.js\";\n\nconst atob2 = (typeof atob !== 'undefined') ? atob : a => Buffer.from(a, 'base64').toString('binary');\n\nconst WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n};\n\nconst WEBGL_TYPE_SIZES = {\n 'SCALAR': 1,\n 'VEC2': 2,\n 'VEC3': 3,\n 'VEC4': 4,\n 'MAT2': 4,\n 'MAT3': 9,\n 'MAT4': 16\n};\n\n/**\n * @desc Parses glTF JSON into an {@link XKTModel}, without ````.glb```` and textures.\n *\n * * Lightweight JSON-based glTF parser which ignores textures\n * * For texture and ````.glb```` support, see {@link parseGLTFIntoXKTModel}\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a glTF model into it.\n *\n * ````javascript\n * utils.loadJSON(\"./models/gltf/duplex/scene.gltf\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFJSONIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {Object} params.data The glTF JSON.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeNormals=false] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded representation of the glTF.\n * @param {Boolean} [params.reuseGeometries=true] When true, the parser will enable geometry reuse within the XKTModel. When false,\n * will automatically \"expand\" all reused geometries into duplicate copies. This has the drawback of increasing the XKT\n * file size (~10-30% for typical models), but can make the model more responsive in the xeokit Viewer, especially if the model\n * has excessive geometry reuse. An example of excessive geometry reuse would be if we have 4000 geometries that are\n * shared amongst 2000 objects, ie. a large number of geometries with a low amount of reuse, which can present a\n * pathological performance case for xeokit's underlying graphics APIs (WebGL, WebGPU etc).\n * @param {function} [params.getAttachment] Callback through which to fetch attachments, if the glTF has them.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n * @returns {Promise}\n */\nfunction parseGLTFJSONIntoXKTModel({\n data,\n xktModel,\n metaModelData,\n includeNormals,\n reuseGeometries,\n getAttachment,\n stats = {},\n log\n }) {\n\n if (log) {\n log(\"Using parser: parseGLTFJSONIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n stats.sourceFormat = \"glTF\";\n stats.schemaVersion = \"2.0\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numNormals = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n\n const ctx = {\n gltf: data,\n metaModelCorrections: metaModelData ? getMetaModelCorrections(metaModelData) : null,\n getAttachment: getAttachment || (() => {\n throw new Error('You must define getAttachment() method to convert glTF with external resources')\n }),\n log: (log || function (msg) {\n }),\n xktModel,\n includeNormals,\n createXKTGeometryIds: {},\n nextMeshId: 0,\n reuseGeometries: (reuseGeometries !== false),\n stats\n };\n\n ctx.log(`Parsing normals: ${ctx.includeNormals ? \"enabled\" : \"disabled\"}`);\n\n parseBuffers(ctx).then(() => {\n\n parseBufferViews(ctx);\n freeBuffers(ctx);\n parseMaterials(ctx);\n parseDefaultScene(ctx);\n\n resolve();\n\n }, (errMsg) => {\n reject(errMsg);\n });\n });\n}\n\nfunction getMetaModelCorrections(metaModelData) {\n const eachRootStats = {};\n const eachChildRoot = {};\n const metaObjects = metaModelData.metaObjects || [];\n const metaObjectsMap = {};\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const metaObject = metaObjects[i];\n metaObjectsMap[metaObject.id] = metaObject;\n }\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const metaObject = metaObjects[i];\n if (metaObject.parent !== undefined && metaObject.parent !== null) {\n const metaObjectParent = metaObjectsMap[metaObject.parent];\n if (metaObject.type === metaObjectParent.type) {\n let rootMetaObject = metaObjectParent;\n while (rootMetaObject.parent && metaObjectsMap[rootMetaObject.parent].type === rootMetaObject.type) {\n rootMetaObject = metaObjectsMap[rootMetaObject.parent];\n }\n const rootStats = eachRootStats[rootMetaObject.id] || (eachRootStats[rootMetaObject.id] = {\n numChildren: 0,\n countChildren: 0\n });\n rootStats.numChildren++;\n eachChildRoot[metaObject.id] = rootMetaObject;\n } else {\n\n }\n }\n }\n const metaModelCorrections = {\n metaObjectsMap,\n eachRootStats,\n eachChildRoot\n };\n return metaModelCorrections;\n}\n\nfunction parseBuffers(ctx) { // Parses geometry buffers into temporary \"_buffer\" Unit8Array properties on the glTF \"buffer\" elements\n const buffers = ctx.gltf.buffers;\n if (buffers) {\n return Promise.all(buffers.map(buffer => parseBuffer(ctx, buffer)));\n } else {\n return new Promise(function (resolve, reject) {\n resolve();\n });\n }\n}\n\nfunction parseBuffer(ctx, bufferInfo) {\n return new Promise(function (resolve, reject) {\n // Allow a shortcut where the glTF buffer is \"enrichened\" with direct\n // access to the data-arrayBuffer, w/out needing to either:\n // - read the file indicated by the \".uri\" component of the buffer\n // - base64-decode the encoded data in the \".uri\" component\n if (bufferInfo._arrayBuffer) {\n bufferInfo._buffer = bufferInfo._arrayBuffer;\n resolve(bufferInfo);\n return;\n }\n // Otherwise, proceed with \"standard-glTF\" .uri component.\n const uri = bufferInfo.uri;\n if (!uri) {\n reject('gltf/handleBuffer missing uri in ' + JSON.stringify(bufferInfo));\n return;\n }\n parseArrayBuffer(ctx, uri).then((arrayBuffer) => {\n bufferInfo._buffer = arrayBuffer;\n resolve(arrayBuffer);\n }, (errMsg) => {\n reject(errMsg);\n })\n });\n}\n\nfunction parseArrayBuffer(ctx, uri) {\n return new Promise(function (resolve, reject) {\n const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/; // Check for data: URI\n const dataUriRegexResult = uri.match(dataUriRegex);\n if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest\n const isBase64 = !!dataUriRegexResult[2];\n let data = dataUriRegexResult[3];\n data = decodeURIComponent(data);\n if (isBase64) {\n data = atob2(data);\n }\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n for (let i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n resolve(buffer);\n } else { // Uri is a path to a file\n ctx.getAttachment(uri).then(\n (arrayBuffer) => {\n resolve(arrayBuffer);\n },\n (errMsg) => {\n reject(errMsg);\n });\n }\n });\n}\n\nfunction parseBufferViews(ctx) { // Parses our temporary \"_buffer\" properties into \"_buffer\" properties on glTF \"bufferView\" elements\n const bufferViewsInfo = ctx.gltf.bufferViews;\n if (bufferViewsInfo) {\n for (let i = 0, len = bufferViewsInfo.length; i < len; i++) {\n parseBufferView(ctx, bufferViewsInfo[i]);\n }\n }\n}\n\nfunction parseBufferView(ctx, bufferViewInfo) {\n const buffer = ctx.gltf.buffers[bufferViewInfo.buffer];\n bufferViewInfo._typedArray = null;\n const byteLength = bufferViewInfo.byteLength || 0;\n const byteOffset = bufferViewInfo.byteOffset || 0;\n bufferViewInfo._buffer = buffer._buffer.slice(byteOffset, byteOffset + byteLength);\n}\n\nfunction freeBuffers(ctx) { // Deletes the \"_buffer\" properties from the glTF \"buffer\" elements, to save memory\n const buffers = ctx.gltf.buffers;\n if (buffers) {\n for (let i = 0, len = buffers.length; i < len; i++) {\n buffers[i]._buffer = null;\n }\n }\n}\n\nfunction parseMaterials(ctx) {\n const materialsInfo = ctx.gltf.materials;\n if (materialsInfo) {\n for (let i = 0, len = materialsInfo.length; i < len; i++) {\n const materialInfo = materialsInfo[i];\n const material = parseMaterial(ctx, materialInfo);\n materialInfo._materialData = material;\n }\n }\n}\n\nfunction parseMaterial(ctx, materialInfo) { // Attempts to extract an RGBA color for a glTF material\n const material = {\n color: new Float32Array([1, 1, 1]),\n opacity: 1.0,\n metallic: 0,\n roughness: 1\n };\n const extensions = materialInfo.extensions;\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n material.color[0] = diffuseFactor[0];\n material.color[1] = diffuseFactor[1];\n material.color[2] = diffuseFactor[2];\n }\n }\n const common = extensions[\"KHR_materials_common\"];\n if (common) {\n const technique = common.technique;\n const values = common.values || {};\n const blinn = technique === \"BLINN\";\n const phong = technique === \"PHONG\";\n const lambert = technique === \"LAMBERT\";\n const diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (!utils.isString(diffuse)) {\n material.color[0] = diffuse[0];\n material.color[1] = diffuse[1];\n material.color[2] = diffuse[2];\n }\n }\n const transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n material.opacity = transparency;\n }\n const transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n material.opacity = transparent;\n }\n }\n }\n const metallicPBR = materialInfo.pbrMetallicRoughness;\n if (metallicPBR) {\n const baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n material.color[0] = baseColorFactor[0];\n material.color[1] = baseColorFactor[1];\n material.color[2] = baseColorFactor[2];\n material.opacity = baseColorFactor[3];\n }\n const metallicFactor = metallicPBR.metallicFactor;\n if (metallicFactor !== null && metallicFactor !== undefined) {\n material.metallic = metallicFactor;\n }\n const roughnessFactor = metallicPBR.roughnessFactor;\n if (roughnessFactor !== null && roughnessFactor !== undefined) {\n material.roughness = roughnessFactor;\n }\n }\n return material;\n}\n\nfunction parseDefaultScene(ctx) {\n const scene = ctx.gltf.scene || 0;\n const defaultSceneInfo = ctx.gltf.scenes[scene];\n if (!defaultSceneInfo) {\n throw new Error(\"glTF has no default scene\");\n }\n parseScene(ctx, defaultSceneInfo);\n}\n\n\nfunction parseScene(ctx, sceneInfo) {\n const nodes = sceneInfo.nodes;\n if (!nodes) {\n return;\n }\n for (let i = 0, len = nodes.length; i < len; i++) {\n const glTFNode = ctx.gltf.nodes[nodes[i]];\n if (glTFNode) {\n parseNode(ctx, glTFNode, 0, null);\n }\n }\n}\n\nlet deferredMeshIds = [];\n\nfunction parseNode(ctx, glTFNode, depth, matrix) {\n\n const gltf = ctx.gltf;\n const xktModel = ctx.xktModel;\n\n let localMatrix;\n\n if (glTFNode.matrix) {\n localMatrix = glTFNode.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.translation) {\n localMatrix = math.translationMat4v(glTFNode.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.rotation) {\n localMatrix = math.quaternionToMat4(glTFNode.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.scale) {\n localMatrix = math.scalingMat4v(glTFNode.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n const gltfMeshId = glTFNode.mesh;\n\n if (gltfMeshId !== undefined) {\n\n const meshInfo = gltf.meshes[gltfMeshId];\n\n if (meshInfo) {\n\n const numPrimitivesInMesh = meshInfo.primitives.length;\n\n if (numPrimitivesInMesh > 0) {\n\n for (let i = 0; i < numPrimitivesInMesh; i++) {\n\n const primitiveInfo = meshInfo.primitives[i];\n\n const geometryHash = createPrimitiveGeometryHash(primitiveInfo);\n\n let xktGeometryId = ctx.createXKTGeometryIds[geometryHash];\n\n if ((!ctx.reuseGeometries) || !xktGeometryId) {\n\n xktGeometryId = \"geometry-\" + ctx.nextMeshId++\n\n const geometryArrays = {};\n\n parsePrimitiveGeometry(ctx, primitiveInfo, geometryArrays);\n\n const colors = geometryArrays.colors;\n\n let colorsCompressed;\n\n if (geometryArrays.colors) {\n colorsCompressed = [];\n for (let j = 0, lenj = colors.length; j < lenj; j += 4) {\n colorsCompressed.push(colors[j + 0]);\n colorsCompressed.push(colors[j + 1]);\n colorsCompressed.push(colors[j + 2]);\n colorsCompressed.push(255);\n }\n }\n\n xktModel.createGeometry({\n geometryId: xktGeometryId,\n primitiveType: geometryArrays.primitive,\n positions: geometryArrays.positions,\n normals: ctx.includeNormals ? geometryArrays.normals : null,\n colorsCompressed: colorsCompressed,\n indices: geometryArrays.indices\n });\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += geometryArrays.positions ? geometryArrays.positions.length / 3 : 0;\n ctx.stats.numNormals += (ctx.includeNormals && geometryArrays.normals) ? geometryArrays.normals.length / 3 : 0;\n ctx.stats.numTriangles += geometryArrays.indices ? geometryArrays.indices.length / 3 : 0;\n\n ctx.createXKTGeometryIds[geometryHash] = xktGeometryId;\n } else {\n// Geometry reused\n }\n\n const materialIndex = primitiveInfo.material;\n const materialInfo = (materialIndex !== null && materialIndex !== undefined) ? gltf.materials[materialIndex] : null;\n const color = materialInfo ? materialInfo._materialData.color : new Float32Array([1.0, 1.0, 1.0, 1.0]);\n const opacity = materialInfo ? materialInfo._materialData.opacity : 1.0;\n const metallic = materialInfo ? materialInfo._materialData.metallic : 0.0;\n const roughness = materialInfo ? materialInfo._materialData.roughness : 1.0;\n\n const xktMeshId = \"mesh-\" + ctx.nextMeshId++;\n\n xktModel.createMesh({\n meshId: xktMeshId,\n geometryId: xktGeometryId,\n matrix: matrix ? matrix.slice() : math.identityMat4(),\n color: color,\n opacity: opacity,\n metallic: metallic,\n roughness: roughness\n });\n\n deferredMeshIds.push(xktMeshId);\n }\n }\n }\n }\n\n\n if (glTFNode.children) {\n const children = glTFNode.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNodeIdx = children[i];\n const childGLTFNode = gltf.nodes[childNodeIdx];\n if (!childGLTFNode) {\n console.warn('Node not found: ' + i);\n continue;\n }\n parseNode(ctx, childGLTFNode, depth + 1, matrix);\n }\n }\n\n // Post-order visit scene node\n\n const nodeName = glTFNode.name;\n if (((nodeName !== undefined && nodeName !== null) || depth === 0) && deferredMeshIds.length > 0) {\n const xktEntityId = nodeName;\n if (ctx.metaModelCorrections) { // Merging meshes into XKTObjects that map to metaobjects\n const rootMetaObject = ctx.metaModelCorrections.eachChildRoot[xktEntityId];\n if (rootMetaObject) {\n const rootMetaObjectStats = ctx.metaModelCorrections.eachRootStats[rootMetaObject.id];\n rootMetaObjectStats.countChildren++;\n if (rootMetaObjectStats.countChildren >= rootMetaObjectStats.numChildren) {\n xktModel.createEntity({\n entityId: rootMetaObject.id,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds = [];\n }\n } else {\n const metaObject = ctx.metaModelCorrections.metaObjectsMap[xktEntityId];\n if (metaObject) {\n xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds = [];\n }\n }\n } else { // Create an XKTObject from the meshes at each named glTF node, don't care about metaobjects\n xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds = [];\n }\n }\n}\n\nfunction createPrimitiveGeometryHash(primitiveInfo) {\n const attributes = primitiveInfo.attributes;\n if (!attributes) {\n return \"empty\";\n }\n const mode = primitiveInfo.mode;\n const material = primitiveInfo.material;\n const indices = primitiveInfo.indices;\n const positions = primitiveInfo.attributes.POSITION;\n const normals = primitiveInfo.attributes.NORMAL;\n const colors = primitiveInfo.attributes.COLOR_0;\n const uv = primitiveInfo.attributes.TEXCOORD_0;\n return [\n mode,\n // material,\n (indices !== null && indices !== undefined) ? indices : \"-\",\n (positions !== null && positions !== undefined) ? positions : \"-\",\n (normals !== null && normals !== undefined) ? normals : \"-\",\n (colors !== null && colors !== undefined) ? colors : \"-\",\n (uv !== null && uv !== undefined) ? uv : \"-\"\n ].join(\";\");\n}\n\nfunction parsePrimitiveGeometry(ctx, primitiveInfo, geometryArrays) {\n const attributes = primitiveInfo.attributes;\n if (!attributes) {\n return;\n }\n switch (primitiveInfo.mode) {\n case 0: // POINTS\n geometryArrays.primitive = \"points\";\n break;\n case 1: // LINES\n geometryArrays.primitive = \"lines\";\n break;\n case 2: // LINE_LOOP\n // TODO: convert\n geometryArrays.primitive = \"lines\";\n break;\n case 3: // LINE_STRIP\n // TODO: convert\n geometryArrays.primitive = \"lines\";\n break;\n case 4: // TRIANGLES\n geometryArrays.primitive = \"triangles\";\n break;\n case 5: // TRIANGLE_STRIP\n // TODO: convert\n console.log(\"TRIANGLE_STRIP\");\n geometryArrays.primitive = \"triangles\";\n break;\n case 6: // TRIANGLE_FAN\n // TODO: convert\n console.log(\"TRIANGLE_FAN\");\n geometryArrays.primitive = \"triangles\";\n break;\n default:\n geometryArrays.primitive = \"triangles\";\n }\n const accessors = ctx.gltf.accessors;\n const indicesIndex = primitiveInfo.indices;\n if (indicesIndex !== null && indicesIndex !== undefined) {\n const accessorInfo = accessors[indicesIndex];\n geometryArrays.indices = parseAccessorTypedArray(ctx, accessorInfo);\n }\n const positionsIndex = attributes.POSITION;\n if (positionsIndex !== null && positionsIndex !== undefined) {\n const accessorInfo = accessors[positionsIndex];\n geometryArrays.positions = parseAccessorTypedArray(ctx, accessorInfo);\n }\n const normalsIndex = attributes.NORMAL;\n if (normalsIndex !== null && normalsIndex !== undefined) {\n const accessorInfo = accessors[normalsIndex];\n geometryArrays.normals = parseAccessorTypedArray(ctx, accessorInfo);\n }\n const colorsIndex = attributes.COLOR_0;\n if (colorsIndex !== null && colorsIndex !== undefined) {\n const accessorInfo = accessors[colorsIndex];\n geometryArrays.colors = parseAccessorTypedArray(ctx, accessorInfo);\n }\n}\n\nfunction parseAccessorTypedArray(ctx, accessorInfo) {\n const bufferView = ctx.gltf.bufferViews[accessorInfo.bufferView];\n const itemSize = WEBGL_TYPE_SIZES[accessorInfo.type];\n const TypedArray = WEBGL_COMPONENT_TYPES[accessorInfo.componentType];\n const elementBytes = TypedArray.BYTES_PER_ELEMENT; // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n const itemBytes = elementBytes * itemSize;\n if (accessorInfo.byteStride && accessorInfo.byteStride !== itemBytes) { // The buffer is not interleaved if the stride is the item size in bytes.\n throw new Error(\"interleaved buffer!\"); // TODO\n } else {\n return new TypedArray(bufferView._buffer, accessorInfo.byteOffset || 0, accessorInfo.count * itemSize);\n }\n}\n\nexport {parseGLTFJSONIntoXKTModel};\n","//import * as WebIFC from \"web-ifc/web-ifc-api-node.js\";\n\n/**\n * @desc Parses IFC STEP file data into an {@link XKTModel}.\n *\n * This function uses [web-ifc](https://github.com/tomvandig/web-ifc) to parse the IFC, which relies on a\n * WASM file to do the parsing.\n *\n * Depending on how we use this function, we may need to provide it with a path to the directory where that WASM file is stored.\n *\n * This function is tested with web-ifc version 0.0.34.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an IFC model into it.\n *\n * ````javascript\n * import {XKTModel, parseIFCIntoXKTModel, writeXKTModelToArrayBuffer} from \"xeokit-convert.es.js\";\n *\n * import * as WebIFC from \"web-ifc-api.js\";\n *\n * utils.loadArraybuffer(\"rac_advanced_sample_project.ifc\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseIFCIntoXKTModel({\n * WebIFC,\n * data,\n * xktModel,\n * wasmPath: \"../dist/\",\n * autoNormals: true,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {Object} params.WebIFC The WebIFC library. We pass this in as an external dependency, in order to give the\n * caller the choice of whether to use the Browser or NodeJS version.\n * @param {ArrayBuffer} [params.data] IFC file data.\n * @param {XKTModel} [params.xktModel] XKTModel to parse into.\n * @param {Boolean} [params.autoNormals=true] When true, the parser will ignore the IFC geometry normals, and the IFC\n * data will rely on the xeokit ````Viewer```` to automatically generate them. This has the limitation that the\n * normals will be face-aligned, and therefore the ````Viewer```` will only be able to render a flat-shaded representation\n * of the IFC model. This is ````true```` by default, because IFC models tend to look acceptable with flat-shading,\n * and we always want to minimize IFC model size wherever possible.\n * @param {String[]} [params.includeTypes] Option to only convert objects of these types.\n * @param {String[]} [params.excludeTypes] Option to never convert objects of these types.\n * @param {String} params.wasmPath Path to ````web-ifc.wasm````, required by this function.\n * @param {Object} [params.stats={}] Collects statistics.\n * @param {function} [params.log] Logging callback.\n * @returns {Promise} Resolves when IFC has been parsed.\n */\nfunction parseIFCIntoXKTModel({\n WebIFC,\n data,\n xktModel,\n autoNormals = true,\n includeTypes,\n excludeTypes,\n wasmPath,\n stats = {},\n log\n }) {\n\n if (log) {\n log(\"Using parser: parseIFCIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n if (!wasmPath) {\n reject(\"Argument expected: wasmPath\");\n return;\n }\n\n const ifcAPI = new WebIFC.IfcAPI();\n\n if (wasmPath) {\n ifcAPI.SetWasmPath(wasmPath);\n }\n\n ifcAPI.Init().then(() => {\n\n const dataArray = new Uint8Array(data);\n\n const modelID = ifcAPI.OpenModel(dataArray);\n\n stats.sourceFormat = \"IFC\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 0;\n stats.numPropertySets = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n stats.numTriangles = 0;\n stats.numVertices = 0;\n\n const ctx = {\n WebIFC,\n modelID,\n ifcAPI,\n xktModel,\n autoNormals,\n log: (log || function (msg) {\n }),\n nextId: 0,\n stats\n };\n\n if (includeTypes) {\n ctx.includeTypes = {};\n for (let i = 0, len = includeTypes.length; i < len; i++) {\n ctx.includeTypes[includeTypes[i]] = true;\n }\n }\n\n if (excludeTypes) {\n ctx.excludeTypes = {};\n for (let i = 0, len = excludeTypes.length; i < len; i++) {\n ctx.excludeTypes[excludeTypes[i]] = true;\n }\n }\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(modelID, WebIFC.IFCPROJECT);\n const ifcProjectId = lines.get(0);\n const ifcProject = ctx.ifcAPI.GetLine(modelID, ifcProjectId);\n\n ctx.xktModel.schema = \"\";\n ctx.xktModel.modelId = \"\" + modelID;\n ctx.xktModel.projectId = \"\" + ifcProjectId;\n\n parseMetadata(ctx);\n parseGeometry(ctx);\n parsePropertySets(ctx);\n\n resolve();\n\n }).catch((e) => {\n\n reject(e);\n })\n });\n}\n\nfunction parsePropertySets(ctx) {\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, ctx.WebIFC.IFCRELDEFINESBYPROPERTIES);\n\n for (let i = 0; i < lines.size(); i++) {\n\n let relID = lines.get(i);\n\n let rel = ctx.ifcAPI.GetLine(ctx.modelID, relID, true);\n\n if (rel) {\n\n const relatingPropertyDefinition = rel.RelatingPropertyDefinition;\n if (!relatingPropertyDefinition) {\n continue;\n }\n\n const propertySetId = relatingPropertyDefinition.GlobalId.value;\n\n const relatedObjects = rel.RelatedObjects;\n if (relatedObjects) {\n for (let i = 0, len = relatedObjects.length; i < len; i++) {\n const relatedObject = relatedObjects[i];\n const metaObjectId = relatedObject.GlobalId.value;\n const metaObject = ctx.xktModel.metaObjects[metaObjectId];\n if (metaObject) {\n if (!metaObject.propertySetIds) {\n metaObject.propertySetIds = [];\n }\n metaObject.propertySetIds.push(propertySetId);\n }\n }\n }\n\n const props = relatingPropertyDefinition.HasProperties;\n if (props && props.length > 0) {\n const propertySetType = \"Default\";\n const propertySetName = relatingPropertyDefinition.Name.value;\n const properties = [];\n for (let i = 0, len = props.length; i < len; i++) {\n const prop = props[i];\n const name = prop.Name;\n const nominalValue = prop.NominalValue;\n if (name && nominalValue) {\n const property = {\n name: name.value,\n type: nominalValue.type,\n value: nominalValue.value,\n valueType: nominalValue.valueType\n };\n if (prop.Description) {\n property.description = prop.Description.value;\n } else if (nominalValue.description) {\n property.description = nominalValue.description;\n }\n properties.push(property);\n }\n }\n ctx.xktModel.createPropertySet({propertySetId, propertySetType, propertySetName, properties});\n ctx.stats.numPropertySets++;\n }\n }\n }\n}\n\nfunction parseMetadata(ctx) {\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, ctx.WebIFC.IFCPROJECT);\n const ifcProjectId = lines.get(0);\n const ifcProject = ctx.ifcAPI.GetLine(ctx.modelID, ifcProjectId);\n\n parseSpatialChildren(ctx, ifcProject);\n}\n\nfunction parseSpatialChildren(ctx, ifcElement, parentMetaObjectId) {\n\n const metaObjectType = ifcElement.__proto__.constructor.name;\n\n if (ctx.includeTypes && (!ctx.includeTypes[metaObjectType])) {\n return;\n }\n\n if (ctx.excludeTypes && ctx.excludeTypes[metaObjectType]) {\n return;\n }\n\n createMetaObject(ctx, ifcElement, parentMetaObjectId);\n\n const metaObjectId = ifcElement.GlobalId.value;\n\n parseRelatedItemsOfType(\n ctx,\n ifcElement.expressID,\n 'RelatingObject',\n 'RelatedObjects',\n ctx.WebIFC.IFCRELAGGREGATES,\n metaObjectId);\n\n parseRelatedItemsOfType(\n ctx,\n ifcElement.expressID,\n 'RelatingStructure',\n 'RelatedElements',\n ctx.WebIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE,\n metaObjectId);\n}\n\nfunction createMetaObject(ctx, ifcElement, parentMetaObjectId) {\n\n const metaObjectId = ifcElement.GlobalId.value;\n const propertySetIds = null;\n const metaObjectType = ifcElement.__proto__.constructor.name;\n const metaObjectName = (ifcElement.Name && ifcElement.Name.value !== \"\") ? ifcElement.Name.value : metaObjectType;\n\n ctx.xktModel.createMetaObject({metaObjectId, propertySetIds, metaObjectType, metaObjectName, parentMetaObjectId});\n ctx.stats.numMetaObjects++;\n}\n\nfunction parseRelatedItemsOfType(ctx, id, relation, related, type, parentMetaObjectId) {\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, type);\n\n for (let i = 0; i < lines.size(); i++) {\n\n const relID = lines.get(i);\n const rel = ctx.ifcAPI.GetLine(ctx.modelID, relID);\n const relatedItems = rel[relation];\n\n let foundElement = false;\n\n if (Array.isArray(relatedItems)) {\n const values = relatedItems.map((item) => item.value);\n foundElement = values.includes(id);\n\n } else {\n foundElement = (relatedItems.value === id);\n }\n\n if (foundElement) {\n\n const element = rel[related];\n\n if (!Array.isArray(element)) {\n\n const ifcElement = ctx.ifcAPI.GetLine(ctx.modelID, element.value);\n\n parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);\n\n } else {\n\n element.forEach((element2) => {\n\n const ifcElement = ctx.ifcAPI.GetLine(ctx.modelID, element2.value);\n\n parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);\n });\n }\n }\n }\n}\n\nfunction parseGeometry(ctx) {\n\n // Parses the geometry and materials in the IFC, creates\n // XKTEntity, XKTMesh and XKTGeometry components within the XKTModel.\n\n const flatMeshes = ctx.ifcAPI.LoadAllGeometry(ctx.modelID);\n\n for (let i = 0, len = flatMeshes.size(); i < len; i++) {\n\n const flatMesh = flatMeshes.get(i);\n const flatMeshExpressID = flatMesh.expressID;\n const placedGeometries = flatMesh.geometries;\n\n const meshIds = [];\n\n const properties = ctx.ifcAPI.GetLine(ctx.modelID, flatMeshExpressID);\n const entityId = properties.GlobalId.value;\n\n const metaObjectId = entityId;\n const metaObject = ctx.xktModel.metaObjects[metaObjectId];\n\n if (ctx.includeTypes && (!metaObject || (!ctx.includeTypes[metaObject.metaObjectType]))) {\n return;\n }\n\n if (ctx.excludeTypes && (!metaObject || ctx.excludeTypes[metaObject.metaObjectType])) {\n console.log(\"excluding: \" + metaObjectId)\n return;\n }\n\n for (let j = 0, lenj = placedGeometries.size(); j < lenj; j++) {\n\n const placedGeometry = placedGeometries.get(j);\n const geometryId = \"\" + placedGeometry.geometryExpressID;\n\n if (!ctx.xktModel.geometries[geometryId]) {\n\n const geometry = ctx.ifcAPI.GetGeometry(ctx.modelID, placedGeometry.geometryExpressID);\n const vertexData = ctx.ifcAPI.GetVertexArray(geometry.GetVertexData(), geometry.GetVertexDataSize());\n const indices = ctx.ifcAPI.GetIndexArray(geometry.GetIndexData(), geometry.GetIndexDataSize());\n\n // De-interleave vertex arrays\n\n const positions = [];\n const normals = [];\n\n for (let k = 0, lenk = vertexData.length / 6; k < lenk; k++) {\n positions.push(vertexData[k * 6 + 0]);\n positions.push(vertexData[k * 6 + 1]);\n positions.push(vertexData[k * 6 + 2]);\n }\n\n if (!ctx.autoNormals) {\n for (let k = 0, lenk = vertexData.length / 6; k < lenk; k++) {\n normals.push(vertexData[k * 6 + 3]);\n normals.push(vertexData[k * 6 + 4]);\n normals.push(vertexData[k * 6 + 5]);\n }\n }\n\n ctx.xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: positions,\n normals: ctx.autoNormals ? null : normals,\n indices: indices\n });\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += (positions.length / 3);\n ctx.stats.numTriangles += (indices.length / 3);\n }\n\n const meshId = (\"mesh\" + ctx.nextId++);\n\n ctx.xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n matrix: new Float32Array(placedGeometry.flatTransformation),\n color: [placedGeometry.color.x, placedGeometry.color.y, placedGeometry.color.z],\n opacity: placedGeometry.color.w\n });\n\n meshIds.push(meshId);\n }\n\n ctx.xktModel.createEntity({\n entityId: entityId,\n meshIds: meshIds\n });\n\n ctx.stats.numObjects++;\n }\n}\n\nexport {parseIFCIntoXKTModel};\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@loaders.gl/las\");","\nimport {parse} from '@loaders.gl/core';\nimport {LASLoader} from '@loaders.gl/las';\n\nimport {math} from \"../lib/math.js\";\n\n\n\n/**\n * @desc Parses LAS and LAZ point cloud data into an {@link XKTModel}.\n *\n * This parser handles both the LASER file format (LAS) and its compressed version (LAZ),\n * a public format for the interchange of 3-dimensional point cloud data data, developed\n * for LIDAR mapping purposes.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an LAZ point cloud model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"./models/laz/autzen.laz\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * await parseLASIntoXKTModel({\n * data,\n * xktModel,\n * rotateX: true,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer} params.data LAS/LAZ file data.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.rotateX=false] Whether to rotate the model 90 degrees about the X axis to make the Y axis \"up\", if necessary.\n * @param {Number|String} [params.colorDepth=8] Whether colors encoded using 8 or 16 bits. Can be set to 'auto'. LAS specification recommends 16 bits.\n * @param {Number} [params.skip=1] Read one from every n points.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n * @returns {Promise} Resolves when LAS has been parsed.\n */\nfunction parseLASIntoXKTModel({\n data,\n xktModel,\n rotateX = false,\n colorDepth = 8,\n skip = 1,\n stats,\n log = () => {\n }\n }) {\n\n if (log) {\n log(\"Using parser: parseLASIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n if (log) {\n log(\"Converting LAZ/LAS\");\n if (rotateX) {\n log(\"Rotating model 90 degrees about X-axis\");\n }\n }\n\n parse(data, LASLoader, {\n las: {\n colorDepth,\n skip\n }\n }).then((parsedData) => {\n\n const attributes = parsedData.attributes;\n\n const loaderData = parsedData.loaderData;\n const pointsFormatId = loaderData.pointsFormatId !== undefined ? loaderData.pointsFormatId : -1;\n\n if (!attributes.POSITION) {\n log(\"No positions found in file (expected for all LAS point formats)\");\n return;\n }\n\n let positionsValue\n let colorsCompressed;\n\n switch (pointsFormatId) {\n case 0:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 0)\");\n return;\n }\n positionsValue = readPositions(attributes.POSITION, rotateX);\n colorsCompressed = readIntensities(attributes.intensity);\n break;\n case 1:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 1)\");\n return;\n }\n positionsValue = readPositions(attributes.POSITION, rotateX);\n colorsCompressed = readIntensities(attributes.intensity);\n break;\n case 2:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 2)\");\n return;\n }\n positionsValue = readPositions(attributes.POSITION, rotateX);\n colorsCompressed = readColorsAndIntensities(attributes.COLOR_0, attributes.intensity);\n break;\n case 3:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 3)\");\n return;\n }\n positionsValue = readPositions(attributes.POSITION, rotateX);\n colorsCompressed = readColorsAndIntensities(attributes.COLOR_0, attributes.intensity);\n break;\n }\n\n xktModel.createGeometry({\n geometryId: \"pointsGeometry\",\n primitiveType: \"points\",\n positions: positionsValue,\n colorsCompressed: colorsCompressed\n });\n\n xktModel.createMesh({\n meshId: \"pointsMesh\",\n geometryId: \"pointsGeometry\"\n });\n\n const entityId = math.createUUID();\n\n xktModel.createEntity({\n entityId: entityId,\n meshIds: [\"pointsMesh\"]\n });\n\n const rootMetaObjectId = math.createUUID();\n\n xktModel.createMetaObject({\n metaObjectId: rootMetaObjectId,\n metaObjectType: \"Model\",\n metaObjectName: \"Model\"\n });\n\n xktModel.createMetaObject({\n metaObjectId: entityId,\n metaObjectType: \"PointCloud\",\n metaObjectName: \"PointCloud (LAZ)\",\n parentMetaObjectId: rootMetaObjectId\n });\n\n if (stats) {\n stats.sourceFormat = \"LAS\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 2;\n stats.numPropertySets = 0;\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numVertices = positionsValue.length / 3;\n }\n\n resolve();\n\n }, (errMsg) => {\n reject(errMsg);\n });\n });\n}\n\nfunction readPositions(attributesPosition, rotateX) {\n const positionsValue = attributesPosition.value;\n if (rotateX) {\n if (positionsValue) {\n for (let i = 0, len = positionsValue.length; i < len; i += 3) {\n const temp = positionsValue[i + 1];\n positionsValue[i + 1] = positionsValue[i + 2];\n positionsValue[i + 2] = temp;\n }\n }\n }\n return positionsValue;\n}\n\nfunction readColorsAndIntensities(attributesColor, attributesIntensity) {\n const colors = attributesColor.value;\n const colorSize = attributesColor.size;\n const intensities = attributesIntensity.value;\n const colorsCompressedSize = intensities.length * 4;\n const colorsCompressed = new Uint8Array(colorsCompressedSize);\n for (let i = 0, j = 0, k = 0, len = intensities.length; i < len; i++, k += colorSize, j += 4) {\n colorsCompressed[j + 0] = colors[k + 0];\n colorsCompressed[j + 1] = colors[k + 1];\n colorsCompressed[j + 2] = colors[k + 2];\n colorsCompressed[j + 3] = Math.round((intensities[i] / 65536) * 255);\n }\n return colorsCompressed;\n}\n\nfunction readIntensities(attributesIntensity) {\n const intensities = attributesIntensity.intensity;\n const colorsCompressedSize = intensities.length * 4;\n const colorsCompressed = new Uint8Array(colorsCompressedSize);\n for (let i = 0, j = 0, k = 0, len = intensities.length; i < len; i++, k += 3, j += 4) {\n colorsCompressed[j + 0] = 0;\n colorsCompressed[j + 1] = 0;\n colorsCompressed[j + 2] = 0;\n colorsCompressed[j + 3] = Math.round((intensities[i] / 65536) * 255);\n }\n return colorsCompressed;\n}\n\nexport {parseLASIntoXKTModel};","/**\n * @desc Parses JSON metamodel into an {@link XKTModel}.\n *\n * @param {Object} params Parsing parameters.\n * @param {JSON} params.metaModelData Metamodel data.\n * @param {String[]} [params.excludeTypes] Types to exclude from parsing.\n * @param {String[]} [params.includeTypes] Types to include in parsing.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when JSON has been parsed.\n */\nfunction parseMetaModelIntoXKTModel({metaModelData, xktModel, includeTypes, excludeTypes, log}) {\n\n if (log) {\n log(\"Using parser: parseMetaModelIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n const metaObjects = metaModelData.metaObjects || [];\n const propertySets = metaModelData.propertySets || [];\n\n xktModel.modelId = metaModelData.revisionId || \"\"; // HACK\n xktModel.projectId = metaModelData.projectId || \"\";\n xktModel.revisionId = metaModelData.revisionId || \"\";\n xktModel.author = metaModelData.author || \"\";\n xktModel.createdAt = metaModelData.createdAt || \"\";\n xktModel.creatingApplication = metaModelData.creatingApplication || \"\";\n xktModel.schema = metaModelData.schema || \"\";\n\n for (let i = 0, len = propertySets.length; i < len; i++) {\n\n const propertySet = propertySets[i];\n\n xktModel.createPropertySet({\n propertySetId: propertySet.id,\n propertySetName: propertySet.name,\n propertySetType: propertySet.type,\n properties: propertySet.properties\n });\n }\n\n let includeTypesMap;\n if (includeTypes) {\n includeTypesMap = {};\n for (let i = 0, len = includeTypes.length; i < len; i++) {\n includeTypesMap[includeTypes[i]] = true;\n }\n }\n\n let excludeTypesMap;\n if (excludeTypes) {\n excludeTypesMap = {};\n for (let i = 0, len = excludeTypes.length; i < len; i++) {\n excludeTypesMap[excludeTypes[i]] = true;\n }\n }\n\n const metaObjectsMap = {};\n\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const newObject = metaObjects[i];\n metaObjectsMap[newObject.id] = newObject;\n }\n\n let countMetaObjects = 0;\n\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n\n const metaObject = metaObjects[i];\n const type = metaObject.type;\n\n if (excludeTypesMap && excludeTypesMap[type]) {\n continue;\n }\n\n if (includeTypesMap && !includeTypesMap[type]) {\n continue;\n }\n\n if (metaObject.parent !== undefined && metaObject.parent !== null) {\n const metaObjectParent = metaObjectsMap[metaObject.parent];\n if (metaObject.type === metaObjectParent.type) { // Don't create redundant sub-objects\n continue\n }\n }\n\n const propertySetIds = [];\n if (metaObject.propertySetIds) {\n for (let j = 0, lenj = metaObject.propertySetIds.length; j < lenj; j++) {\n const propertySetId = metaObject.propertySetIds[j];\n if (propertySetId !== undefined && propertySetId !== null && propertySetId !== \"\") {\n propertySetIds.push(propertySetId);\n }\n }\n }\n if (metaObject.propertySetId !== undefined && metaObject.propertySetId !== null && metaObject.propertySetId !== \"\") {\n propertySetIds.push(metaObject.propertySetId);\n }\n\n xktModel.createMetaObject({\n metaObjectId: metaObject.id,\n metaObjectType: metaObject.type,\n metaObjectName: metaObject.name,\n parentMetaObjectId: metaObject.parent,\n propertySetIds: propertySetIds.length > 0 ? propertySetIds : null\n });\n\n countMetaObjects++;\n }\n\n if (log) {\n log(\"Converted meta objects: \" + countMetaObjects);\n }\n\n resolve();\n });\n}\n\nexport {parseMetaModelIntoXKTModel};\n","/**\n * @desc Parses PCD point cloud data into an {@link XKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an LAZ point cloud model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"\"./models/pcd/ism_test_cat.pcd\"\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * await parsePCDIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer} params.data PCD file data.\n * @param {Boolean} [params.littleEndian=true] Whether PCD binary data is Little-Endian or Big-Endian.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when PCD has been parsed.\n */\nfunction parsePCDIntoXKTModel({data, xktModel, littleEndian = true, stats, log}) {\n\n if (log) {\n log(\"Using parser: parsePCDIntoXKTModel\");\n }\n\n return new Promise(function(resolve, reject) {\n\n const textData = decodeText(new Uint8Array(data));\n\n const header = parseHeader(textData);\n\n const positions = [];\n const normals = [];\n const colors = [];\n\n if (header.data === 'ascii') {\n\n const offset = header.offset;\n const data = textData.substr(header.headerLen);\n const lines = data.split('\\n');\n\n for (let i = 0, l = lines.length; i < l; i++) {\n\n if (lines[i] === '') {\n continue;\n }\n\n const line = lines[i].split(' ');\n\n if (offset.x !== undefined) {\n positions.push(parseFloat(line[offset.x]));\n positions.push(parseFloat(line[offset.y]));\n positions.push(parseFloat(line[offset.z]));\n }\n\n if (offset.rgb !== undefined) {\n const rgb = parseFloat(line[offset.rgb]);\n const r = (rgb >> 16) & 0x0000ff;\n const g = (rgb >> 8) & 0x0000ff;\n const b = (rgb >> 0) & 0x0000ff;\n colors.push(r, g, b, 255);\n } else {\n colors.push(255);\n colors.push(255);\n colors.push(255);\n }\n }\n }\n\n if (header.data === 'binary_compressed') {\n\n const sizes = new Uint32Array(data.slice(header.headerLen, header.headerLen + 8));\n const compressedSize = sizes[0];\n const decompressedSize = sizes[1];\n const decompressed = decompressLZF(new Uint8Array(data, header.headerLen + 8, compressedSize), decompressedSize);\n const dataview = new DataView(decompressed.buffer);\n const offset = header.offset;\n\n for (let i = 0; i < header.points; i++) {\n\n if (offset.x !== undefined) {\n positions.push(dataview.getFloat32((header.points * offset.x) + header.size[0] * i, littleEndian));\n positions.push(dataview.getFloat32((header.points * offset.y) + header.size[1] * i, littleEndian));\n positions.push(dataview.getFloat32((header.points * offset.z) + header.size[2] * i, littleEndian));\n }\n\n if (offset.rgb !== undefined) {\n colors.push(dataview.getUint8((header.points * offset.rgb) + header.size[3] * i + 0));\n colors.push(dataview.getUint8((header.points * offset.rgb) + header.size[3] * i + 1));\n colors.push(dataview.getUint8((header.points * offset.rgb) + header.size[3] * i + 2));\n // colors.push(255);\n } else {\n colors.push(1);\n colors.push(1);\n colors.push(1);\n }\n }\n }\n\n if (header.data === 'binary') {\n\n const dataview = new DataView(data, header.headerLen);\n const offset = header.offset;\n\n for (let i = 0, row = 0; i < header.points; i++, row += header.rowSize) {\n if (offset.x !== undefined) {\n positions.push(dataview.getFloat32(row + offset.x, littleEndian));\n positions.push(dataview.getFloat32(row + offset.y, littleEndian));\n positions.push(dataview.getFloat32(row + offset.z, littleEndian));\n }\n\n if (offset.rgb !== undefined) {\n colors.push(dataview.getUint8(row + offset.rgb + 2));\n colors.push(dataview.getUint8(row + offset.rgb + 1));\n colors.push(dataview.getUint8(row + offset.rgb + 0));\n } else {\n colors.push(255);\n colors.push(255);\n colors.push(255);\n }\n }\n }\n\n xktModel.createGeometry({\n geometryId: \"pointsGeometry\",\n primitiveType: \"points\",\n positions: positions,\n colors: colors && colors.length > 0 ? colors : null\n });\n\n xktModel.createMesh({\n meshId: \"pointsMesh\",\n geometryId: \"pointsGeometry\"\n });\n\n xktModel.createEntity({\n entityId: \"geometries\",\n meshIds: [\"pointsMesh\"]\n });\n\n if (log) {\n log(\"Converted drawable objects: 1\");\n log(\"Converted geometries: 1\");\n log(\"Converted vertices: \" + positions.length / 3);\n }\n\n if (stats) {\n stats.sourceFormat = \"PCD\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numVertices = positions.length / 3;\n }\n\n resolve();\n });\n}\n\nfunction parseHeader(data) {\n const header = {};\n const result1 = data.search(/[\\r\\n]DATA\\s(\\S*)\\s/i);\n const result2 = /[\\r\\n]DATA\\s(\\S*)\\s/i.exec(data.substr(result1 - 1));\n header.data = result2[1];\n header.headerLen = result2[0].length + result1;\n header.str = data.substr(0, header.headerLen);\n header.str = header.str.replace(/\\#.*/gi, ''); // Strip comments\n header.version = /VERSION (.*)/i.exec(header.str); // Parse\n header.fields = /FIELDS (.*)/i.exec(header.str);\n header.size = /SIZE (.*)/i.exec(header.str);\n header.type = /TYPE (.*)/i.exec(header.str);\n header.count = /COUNT (.*)/i.exec(header.str);\n header.width = /WIDTH (.*)/i.exec(header.str);\n header.height = /HEIGHT (.*)/i.exec(header.str);\n header.viewpoint = /VIEWPOINT (.*)/i.exec(header.str);\n header.points = /POINTS (.*)/i.exec(header.str);\n if (header.version !== null) {\n header.version = parseFloat(header.version[1]);\n }\n if (header.fields !== null) {\n header.fields = header.fields[1].split(' ');\n }\n if (header.type !== null) {\n header.type = header.type[1].split(' ');\n }\n if (header.width !== null) {\n header.width = parseInt(header.width[1]);\n }\n if (header.height !== null) {\n header.height = parseInt(header.height[1]);\n }\n if (header.viewpoint !== null) {\n header.viewpoint = header.viewpoint[1];\n }\n if (header.points !== null) {\n header.points = parseInt(header.points[1], 10);\n }\n if (header.points === null) {\n header.points = header.width * header.height;\n }\n if (header.size !== null) {\n header.size = header.size[1].split(' ').map(function (x) {\n return parseInt(x, 10);\n });\n }\n if (header.count !== null) {\n header.count = header.count[1].split(' ').map(function (x) {\n return parseInt(x, 10);\n });\n } else {\n header.count = [];\n for (let i = 0, l = header.fields.length; i < l; i++) {\n header.count.push(1);\n }\n }\n header.offset = {};\n let sizeSum = 0;\n for (let i = 0, l = header.fields.length; i < l; i++) {\n if (header.data === 'ascii') {\n header.offset[header.fields[i]] = i;\n } else {\n header.offset[header.fields[i]] = sizeSum;\n sizeSum += header.size[i] * header.count[i];\n }\n }\n header.rowSize = sizeSum; // For binary only\n return header;\n}\n\nfunction decodeText(array) {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder().decode(array);\n }\n let s = '';\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]);\n }\n try {\n return decodeURIComponent(escape(s));\n } catch (e) {\n return s;\n }\n}\n\nfunction decompressLZF(inData, outLength) { // https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js\n const inLength = inData.length;\n const outData = new Uint8Array(outLength);\n let inPtr = 0;\n let outPtr = 0;\n let ctrl;\n let len;\n let ref;\n do {\n ctrl = inData[inPtr++];\n if (ctrl < (1 << 5)) {\n ctrl++;\n if (outPtr + ctrl > outLength) throw new Error('Output buffer is not large enough');\n if (inPtr + ctrl > inLength) throw new Error('Invalid compressed data');\n do {\n outData[outPtr++] = inData[inPtr++];\n } while (--ctrl);\n } else {\n len = ctrl >> 5;\n ref = outPtr - ((ctrl & 0x1f) << 8) - 1;\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n if (len === 7) {\n len += inData[inPtr++];\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n }\n ref -= inData[inPtr++];\n if (outPtr + len + 2 > outLength) throw new Error('Output buffer is not large enough');\n if (ref < 0) throw new Error('Invalid compressed data');\n if (ref >= outPtr) throw new Error('Invalid compressed data');\n do {\n outData[outPtr++] = outData[ref++];\n } while (--len + 2);\n }\n } while (inPtr < inLength);\n return outData;\n}\n\nexport {parsePCDIntoXKTModel};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@loaders.gl/ply\");","import {parse} from '@loaders.gl/core';\nimport {PLYLoader} from '@loaders.gl/ply';\n\n/**\n * @desc Parses PLY file data into an {@link XKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a PLY model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"./models/ply/test.ply\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parsePLYIntoXKTModel({data, xktModel}).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer} params.data PLY file data.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when PLY has been parsed.\n */\nasync function parsePLYIntoXKTModel({data, xktModel, stats, log}) {\n\n if (log) {\n log(\"Using parser: parsePLYIntoXKTModel\");\n }\n\n if (!data) {\n throw \"Argument expected: data\";\n }\n\n if (!xktModel) {\n throw \"Argument expected: xktModel\";\n }\n\n let parsedData;\n try {\n parsedData = await parse(data, PLYLoader);\n } catch (e) {\n if (log) {\n log(\"Error: \" + e);\n }\n return;\n }\n\n const attributes = parsedData.attributes;\n const hasColors = !!attributes.COLOR_0;\n\n if (hasColors) {\n const colorsValue = hasColors ? attributes.COLOR_0.value : null;\n const colorsCompressed = [];\n for (let i = 0, len = colorsValue.length; i < len; i += 4) {\n colorsCompressed.push(colorsValue[i]);\n colorsCompressed.push(colorsValue[i + 1]);\n colorsCompressed.push(colorsValue[i + 2]);\n }\n xktModel.createGeometry({\n geometryId: \"plyGeometry\",\n primitiveType: \"triangles\",\n positions: attributes.POSITION.value,\n indices: parsedData.indices ? parsedData.indices.value : [],\n colorsCompressed: colorsCompressed\n });\n } else {\n xktModel.createGeometry({\n geometryId: \"plyGeometry\",\n primitiveType: \"triangles\",\n positions: attributes.POSITION.value,\n indices: parsedData.indices ? parsedData.indices.value : []\n });\n }\n\n xktModel.createMesh({\n meshId: \"plyMesh\",\n geometryId: \"plyGeometry\",\n color: (!hasColors) ? [1, 1, 1] : null\n });\n\n xktModel.createEntity({\n entityId: \"ply\",\n meshIds: [\"plyMesh\"]\n });\n\n if (stats) {\n stats.sourceFormat = \"PLY\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 2;\n stats.numPropertySets = 0;\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numVertices = attributes.POSITION.value.length / 3;\n }\n}\n\nexport {parsePLYIntoXKTModel};\n","import {faceToVertexNormals} from \"../lib/faceToVertexNormals.js\";\nimport {math} from \"../lib/math.js\";\n\n/**\n * @desc Parses STL file data into an {@link XKTModel}.\n *\n * * Supports binary and ASCII STL formats.\n * * Option to create a separate {@link XKTEntity} for each group of faces that share the same vertex colors.\n * * Option to smooth face-aligned normals loaded from STL.\n * * Option to reduce XKT file size by ignoring STL normals and relying on xeokit to auto-generate them.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an STL model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"./models/stl/binary/spurGear.stl\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseSTLIntoXKTModel({data, xktModel});\n *\n * xktModel.finalize();\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer|String} [params.data] STL file data. Can be binary or string.\n * @param {Boolean} [params.autoNormals=false] When true, the parser will ignore the STL geometry normals, and the STL\n * data will rely on the xeokit ````Viewer```` to automatically generate them. This has the limitation that the\n * normals will be face-aligned, and therefore the ````Viewer```` will only be able to render a flat-shaded representation\n * of the STL.\n * Overrides ````smoothNormals```` when ````true````. This ignores the normals in the STL, and loads no\n * normals from the STL into the {@link XKTModel}, resulting in the XKT file storing no normals for the STL model. The\n * xeokit-sdk will then automatically generate the normals within its shaders. The disadvantages are that auto-normals\n * may slow rendering down a little bit, and that the normals can only be face-aligned (and thus rendered using flat\n * shading). The advantages, however, are a smaller XKT file size, and the ability to apply certain geometry optimizations\n * during parsing, such as removing duplicated STL vertex positions, that are not possible when normals are loaded\n * for the STL vertices.\n * @param {Boolean} [params.smoothNormals=true] When true, automatically converts face-oriented STL normals to vertex normals, for a smooth appearance. Ignored if ````autoNormals```` is ````true````.\n * @param {Number} [params.smoothNormalsAngleThreshold=20] This is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.splitMeshes=true] When true, creates a separate {@link XKTEntity} for each group of faces that share the same vertex colors. Only works with binary STL (ie. when ````data```` is an ArrayBuffer).\n * @param {XKTModel} [params.xktModel] XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when STL has been parsed.\n */\nasync function parseSTLIntoXKTModel({\n data,\n splitMeshes,\n autoNormals,\n smoothNormals,\n smoothNormalsAngleThreshold,\n xktModel,\n stats,\n log\n }) {\n\n if (log) {\n log(\"Using parser: parseSTLIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n const rootMetaObjectId = math.createUUID();\n\n const rootMetaObject = xktModel.createMetaObject({\n metaObjectId: rootMetaObjectId,\n metaObjectType: \"Model\",\n metaObjectName: \"Model\"\n });\n\n const ctx = {\n data,\n splitMeshes,\n autoNormals,\n smoothNormals,\n smoothNormalsAngleThreshold,\n xktModel,\n rootMetaObject,\n nextId: 0,\n log: (log || function (msg) {\n }),\n stats: {\n numObjects: 0,\n numGeometries: 0,\n numTriangles: 0,\n numVertices: 0\n }\n };\n\n const binData = ensureBinary(data);\n\n if (isBinary(binData)) {\n parseBinary(ctx, binData);\n } else {\n parseASCII(ctx, ensureString(data));\n }\n\n if (stats) {\n stats.sourceFormat = \"STL\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 2;\n stats.numPropertySets = 0;\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numTriangles = ctx.stats.numTriangles;\n stats.numVertices = ctx.stats.numVertices;\n }\n\n resolve();\n });\n}\n\nfunction isBinary(data) {\n const reader = new DataView(data);\n const numFaces = reader.getUint32(80, true);\n const faceSize = (32 / 8 * 3) + ((32 / 8 * 3) * 3) + (16 / 8);\n const numExpectedBytes = 80 + (32 / 8) + (numFaces * faceSize);\n if (numExpectedBytes === reader.byteLength) {\n return true;\n }\n const solid = [115, 111, 108, 105, 100];\n for (let i = 0; i < 5; i++) {\n if (solid[i] !== reader.getUint8(i, false)) {\n return true;\n }\n }\n return false;\n}\n\nfunction parseBinary(ctx, data) {\n const reader = new DataView(data);\n const faces = reader.getUint32(80, true);\n let r;\n let g;\n let b;\n let hasColors = false;\n let colors;\n let defaultR;\n let defaultG;\n let defaultB;\n let lastR = null;\n let lastG = null;\n let lastB = null;\n let newMesh = false;\n let alpha;\n for (let index = 0; index < 80 - 10; index++) {\n if ((reader.getUint32(index, false) === 0x434F4C4F /*COLO*/) &&\n (reader.getUint8(index + 4) === 0x52 /*'R'*/) &&\n (reader.getUint8(index + 5) === 0x3D /*'='*/)) {\n hasColors = true;\n colors = [];\n defaultR = reader.getUint8(index + 6) / 255;\n defaultG = reader.getUint8(index + 7) / 255;\n defaultB = reader.getUint8(index + 8) / 255;\n alpha = reader.getUint8(index + 9) / 255;\n }\n }\n let dataOffset = 84;\n let faceLength = 12 * 4 + 2;\n let positions = [];\n let normals = [];\n let splitMeshes = ctx.splitMeshes;\n for (let face = 0; face < faces; face++) {\n let start = dataOffset + face * faceLength;\n let normalX = reader.getFloat32(start, true);\n let normalY = reader.getFloat32(start + 4, true);\n let normalZ = reader.getFloat32(start + 8, true);\n if (hasColors) {\n let packedColor = reader.getUint16(start + 48, true);\n if ((packedColor & 0x8000) === 0) {\n r = (packedColor & 0x1F) / 31;\n g = ((packedColor >> 5) & 0x1F) / 31;\n b = ((packedColor >> 10) & 0x1F) / 31;\n } else {\n r = defaultR;\n g = defaultG;\n b = defaultB;\n }\n if (splitMeshes && r !== lastR || g !== lastG || b !== lastB) {\n if (lastR !== null) {\n newMesh = true;\n }\n lastR = r;\n lastG = g;\n lastB = b;\n }\n }\n for (let i = 1; i <= 3; i++) {\n let vertexstart = start + i * 12;\n positions.push(reader.getFloat32(vertexstart, true));\n positions.push(reader.getFloat32(vertexstart + 4, true));\n positions.push(reader.getFloat32(vertexstart + 8, true));\n if (!ctx.autoNormals) {\n normals.push(normalX, normalY, normalZ);\n }\n if (hasColors) {\n colors.push(r, g, b, 1); // TODO: handle alpha\n }\n }\n if (splitMeshes && newMesh) {\n addMesh(ctx, positions, normals, colors);\n positions = [];\n normals = [];\n colors = colors ? [] : null;\n newMesh = false;\n }\n }\n if (positions.length > 0) {\n addMesh(ctx, positions, normals, colors);\n }\n}\n\nfunction parseASCII(ctx, data) {\n const faceRegex = /facet([\\s\\S]*?)endfacet/g;\n let faceCounter = 0;\n const floatRegex = /[\\s]+([+-]?(?:\\d+.\\d+|\\d+.|\\d+|.\\d+)(?:[eE][+-]?\\d+)?)/.source;\n const vertexRegex = new RegExp('vertex' + floatRegex + floatRegex + floatRegex, 'g');\n const normalRegex = new RegExp('normal' + floatRegex + floatRegex + floatRegex, 'g');\n const positions = [];\n const normals = [];\n const colors = null;\n let normalx;\n let normaly;\n let normalz;\n let result;\n let verticesPerFace;\n let normalsPerFace;\n let text;\n while ((result = faceRegex.exec(data)) !== null) {\n verticesPerFace = 0;\n normalsPerFace = 0;\n text = result[0];\n while ((result = normalRegex.exec(text)) !== null) {\n normalx = parseFloat(result[1]);\n normaly = parseFloat(result[2]);\n normalz = parseFloat(result[3]);\n normalsPerFace++;\n }\n while ((result = vertexRegex.exec(text)) !== null) {\n positions.push(parseFloat(result[1]), parseFloat(result[2]), parseFloat(result[3]));\n normals.push(normalx, normaly, normalz);\n verticesPerFace++;\n }\n if (normalsPerFace !== 1) {\n ctx.log(\"Error in normal of face \" + faceCounter);\n return -1;\n }\n if (verticesPerFace !== 3) {\n ctx.log(\"Error in positions of face \" + faceCounter);\n return -1;\n }\n faceCounter++;\n }\n addMesh(ctx, positions, normals, colors);\n}\n\nlet nextGeometryId = 0;\n\nfunction addMesh(ctx, positions, normals, colors) {\n\n const indices = new Int32Array(positions.length / 3);\n for (let ni = 0, len = indices.length; ni < len; ni++) {\n indices[ni] = ni;\n }\n\n normals = normals && normals.length > 0 ? normals : null;\n colors = colors && colors.length > 0 ? colors : null;\n\n if (!ctx.autoNormals && ctx.smoothNormals) {\n faceToVertexNormals(positions, normals, {smoothNormalsAngleThreshold: ctx.smoothNormalsAngleThreshold});\n }\n\n const geometryId = \"\" + nextGeometryId++;\n const meshId = \"\" + nextGeometryId++;\n const entityId = \"\" + nextGeometryId++;\n\n ctx.xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: positions,\n normals: (!ctx.autoNormals) ? normals : null,\n colors: colors,\n indices: indices\n });\n\n ctx.xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n color: colors ? null : [1, 1, 1],\n metallic: 0.9,\n roughness: 0.1\n });\n\n ctx.xktModel.createEntity({\n entityId: entityId,\n meshIds: [meshId]\n });\n\n ctx.xktModel.createMetaObject({\n metaObjectId: entityId,\n metaObjectType: \"Default\",\n metaObjectName: \"STL Mesh\",\n parentMetaObjectId: ctx.rootMetaObject.metaObjectId\n });\n\n ctx.stats.numGeometries++;\n ctx.stats.numObjects++;\n ctx.stats.numVertices += positions.length / 3;\n ctx.stats.numTriangles += indices.length / 3;\n}\n\nfunction ensureString(buffer) {\n if (typeof buffer !== 'string') {\n return decodeText(new Uint8Array(buffer));\n }\n return buffer;\n}\n\nfunction ensureBinary(buffer) {\n if (typeof buffer === 'string') {\n const arrayBuffer = new Uint8Array(buffer.length);\n for (let i = 0; i < buffer.length; i++) {\n arrayBuffer[i] = buffer.charCodeAt(i) & 0xff; // implicitly assumes little-endian\n }\n return arrayBuffer.buffer || arrayBuffer;\n } else {\n return buffer;\n }\n}\n\nfunction decodeText(array) {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder().decode(array);\n }\n let s = '';\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]); // Implicitly assumes little-endian.\n }\n return decodeURIComponent(escape(s));\n}\n\nexport {parseSTLIntoXKTModel};\n","import {math} from \"./math.js\";\n\n/**\n * Converts surface-perpendicular face normals to vertex normals. Assumes that the mesh contains disjoint triangles\n * that don't share vertex array elements. Works by finding groups of vertices that have the same location and\n * averaging their normal vectors.\n *\n * @returns {{positions: Array, normals: *}}\n * @private\n */\nfunction faceToVertexNormals(positions, normals, options = {}) {\n const smoothNormalsAngleThreshold = options.smoothNormalsAngleThreshold || 20;\n const vertexMap = {};\n const vertexNormals = [];\n const vertexNormalAccum = {};\n let acc;\n let vx;\n let vy;\n let vz;\n let key;\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = 10 ** precisionPoints;\n let posi;\n let i;\n let j;\n let len;\n let a;\n let b;\n let c;\n\n for (i = 0, len = positions.length; i < len; i += 3) {\n\n posi = i / 3;\n\n vx = positions[i];\n vy = positions[i + 1];\n vz = positions[i + 2];\n\n key = `${Math.round(vx * precision)}_${Math.round(vy * precision)}_${Math.round(vz * precision)}`;\n\n if (vertexMap[key] === undefined) {\n vertexMap[key] = [posi];\n } else {\n vertexMap[key].push(posi);\n }\n\n const normal = math.normalizeVec3([normals[i], normals[i + 1], normals[i + 2]]);\n\n vertexNormals[posi] = normal;\n\n acc = math.vec4([normal[0], normal[1], normal[2], 1]);\n\n vertexNormalAccum[posi] = acc;\n }\n\n for (key in vertexMap) {\n\n if (vertexMap.hasOwnProperty(key)) {\n\n const vertices = vertexMap[key];\n const numVerts = vertices.length;\n\n for (i = 0; i < numVerts; i++) {\n\n const ii = vertices[i];\n\n acc = vertexNormalAccum[ii];\n\n for (j = 0; j < numVerts; j++) {\n\n if (i === j) {\n continue;\n }\n\n const jj = vertices[j];\n\n a = vertexNormals[ii];\n b = vertexNormals[jj];\n\n const angle = Math.abs(math.angleVec3(a, b) / math.DEGTORAD);\n\n if (angle < smoothNormalsAngleThreshold) {\n\n acc[0] += b[0];\n acc[1] += b[1];\n acc[2] += b[2];\n acc[3] += 1.0;\n }\n }\n }\n }\n }\n\n for (i = 0, len = normals.length; i < len; i += 3) {\n\n acc = vertexNormalAccum[i / 3];\n\n normals[i + 0] = acc[0] / acc[3];\n normals[i + 1] = acc[1] / acc[3];\n normals[i + 2] = acc[2] / acc[3];\n\n }\n}\n\nexport {faceToVertexNormals};","/**\n * @desc Creates box-shaped triangle mesh geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a box-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildBoxGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const box = buildBoxGeometry({\n * primitiveType: \"triangles\" // or \"lines\"\n * center: [0,0,0],\n * xSize: 1, // Half-size on each axis\n * ySize: 1,\n * zSize: 1\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"boxGeometry\",\n * primitiveType: box.primitiveType,\n * positions: box.positions,\n * normals: box.normals,\n * indices: box.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redBoxMesh\",\n * geometryId: \"boxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redBox\",\n * meshIds: [\"redBoxMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildBoxGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.xSize=1.0] Half-size on the X-axis.\n * @param {Number} [cfg.ySize=1.0] Half-size on the Y-axis.\n * @param {Number} [cfg.zSize=1.0] Half-size on the Z-axis.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildBoxGeometry(cfg = {}) {\n\n let xSize = cfg.xSize || 1;\n if (xSize < 0) {\n console.error(\"negative xSize not allowed - will invert\");\n xSize *= -1;\n }\n\n let ySize = cfg.ySize || 1;\n if (ySize < 0) {\n console.error(\"negative ySize not allowed - will invert\");\n ySize *= -1;\n }\n\n let zSize = cfg.zSize || 1;\n if (zSize < 0) {\n console.error(\"negative zSize not allowed - will invert\");\n zSize *= -1;\n }\n\n const center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const xmin = -xSize + centerX;\n const ymin = -ySize + centerY;\n const zmin = -zSize + centerZ;\n const xmax = xSize + centerX;\n const ymax = ySize + centerY;\n const zmax = zSize + centerZ;\n\n return {\n\n primitiveType: \"triangles\",\n\n // The vertices - eight for our cube, each\n // one spanning three array elements for X,Y and Z\n\n positions: [\n\n // v0-v1-v2-v3 front\n xmax, ymax, zmax,\n xmin, ymax, zmax,\n xmin, ymin, zmax,\n xmax, ymin, zmax,\n\n // v0-v3-v4-v1 right\n xmax, ymax, zmax,\n xmax, ymin, zmax,\n xmax, ymin, zmin,\n xmax, ymax, zmin,\n\n // v0-v1-v6-v1 top\n xmax, ymax, zmax,\n xmax, ymax, zmin,\n xmin, ymax, zmin,\n xmin, ymax, zmax,\n\n // v1-v6-v7-v2 left\n xmin, ymax, zmax,\n xmin, ymax, zmin,\n xmin, ymin, zmin,\n xmin, ymin, zmax,\n\n // v7-v4-v3-v2 bottom\n xmin, ymin, zmin,\n xmax, ymin, zmin,\n xmax, ymin, zmax,\n xmin, ymin, zmax,\n\n // v4-v7-v6-v1 back\n xmax, ymin, zmin,\n xmin, ymin, zmin,\n xmin, ymax, zmin,\n xmax, ymax, zmin\n ],\n\n // Normal vectors, one for each vertex\n normals: [\n\n // v0-v1-v2-v3 front\n 0, 0, 1,\n 0, 0, 1,\n 0, 0, 1,\n 0, 0, 1,\n\n // v0-v3-v4-v5 right\n 1, 0, 0,\n 1, 0, 0,\n 1, 0, 0,\n 1, 0, 0,\n\n // v0-v5-v6-v1 top\n 0, 1, 0,\n 0, 1, 0,\n 0, 1, 0,\n 0, 1, 0,\n\n // v1-v6-v7-v2 left\n -1, 0, 0,\n -1, 0, 0,\n -1, 0, 0,\n -1, 0, 0,\n\n // v7-v4-v3-v2 bottom\n 0, -1, 0,\n 0, -1, 0,\n 0, -1, 0,\n 0, -1, 0,\n\n // v4-v7-v6-v5 back\n 0, 0, -1,\n 0, 0, -1,\n 0, 0, -1,\n 0, 0, -1\n ],\n\n // UV coords\n uv: [\n\n // v0-v1-v2-v3 front\n 1, 0,\n 0, 0,\n 0, 1,\n 1, 1,\n\n // v0-v3-v4-v1 right\n 0, 0,\n 0, 1,\n 1, 1,\n 1, 0,\n\n // v0-v1-v6-v1 top\n 1, 1,\n 1, 0,\n 0, 0,\n 0, 1,\n\n // v1-v6-v7-v2 left\n 1, 0,\n 0, 0,\n 0, 1,\n 1, 1,\n\n // v7-v4-v3-v2 bottom\n 0, 1,\n 1, 1,\n 1, 0,\n 0, 0,\n\n // v4-v7-v6-v1 back\n 0, 1,\n 1, 1,\n 1, 0,\n 0, 0\n ],\n\n // Indices - these organise the\n // positions and uv texture coordinates\n // into geometric primitives in accordance\n // with the \"primitive\" parameter,\n // in this case a set of three indices\n // for each triangle.\n //\n // Note that each triangle is specified\n // in counter-clockwise winding order.\n //\n // You can specify them in clockwise\n // order if you configure the Modes\n // node's frontFace flag as \"cw\", instead of\n // the default \"ccw\".\n indices: [\n 0, 1, 2,\n 0, 2, 3,\n // front\n 4, 5, 6,\n 4, 6, 7,\n // right\n 8, 9, 10,\n 8, 10, 11,\n // top\n 12, 13, 14,\n 12, 14, 15,\n // left\n 16, 17, 18,\n 16, 18, 19,\n // bottom\n 20, 21, 22,\n 20, 22, 23\n ]\n };\n}\n\nexport {buildBoxGeometry};\n","/**\n * @desc Creates box-shaped line segment geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a box-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildBoxLinesGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const box = buildBoxLinesGeometry({\n * center: [0,0,0],\n * xSize: 1, // Half-size on each axis\n * ySize: 1,\n * zSize: 1\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"boxGeometry\",\n * primitiveType: box.primitiveType, // \"lines\"\n * positions: box.positions,\n * normals: box.normals,\n * indices: box.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redBoxMesh\",\n * geometryId: \"boxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redBox\",\n * meshIds: [\"redBoxMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildBoxLinesGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.xSize=1.0] Half-size on the X-axis.\n * @param {Number} [cfg.ySize=1.0] Half-size on the Y-axis.\n * @param {Number} [cfg.zSize=1.0] Half-size on the Z-axis.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildBoxLinesGeometry(cfg = {}) {\n\n let xSize = cfg.xSize || 1;\n if (xSize < 0) {\n console.error(\"negative xSize not allowed - will invert\");\n xSize *= -1;\n }\n\n let ySize = cfg.ySize || 1;\n if (ySize < 0) {\n console.error(\"negative ySize not allowed - will invert\");\n ySize *= -1;\n }\n\n let zSize = cfg.zSize || 1;\n if (zSize < 0) {\n console.error(\"negative zSize not allowed - will invert\");\n zSize *= -1;\n }\n\n const center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const xmin = -xSize + centerX;\n const ymin = -ySize + centerY;\n const zmin = -zSize + centerZ;\n const xmax = xSize + centerX;\n const ymax = ySize + centerY;\n const zmax = zSize + centerZ;\n\n return {\n primitiveType: \"lines\",\n positions: [\n xmin, ymin, zmin,\n xmin, ymin, zmax,\n xmin, ymax, zmin,\n xmin, ymax, zmax,\n xmax, ymin, zmin,\n xmax, ymin, zmax,\n xmax, ymax, zmin,\n xmax, ymax, zmax\n ],\n indices: [\n 0, 1,\n 1, 3,\n 3, 2,\n 2, 0,\n 4, 5,\n 5, 7,\n 7, 6,\n 6, 4,\n 0, 4,\n 1, 5,\n 2, 6,\n 3, 7\n ]\n }\n}\n\nexport {buildBoxLinesGeometry};\n","/**\n * @desc Creates cylinder-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a cylinder-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildCylinderGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const cylinder = buildCylinderGeometry({\n * center: [0,0,0],\n * radiusTop: 2.0,\n * radiusBottom: 2.0,\n * height: 5.0,\n * radialSegments: 20,\n * heightSegments: 1,\n * openEnded: false\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"cylinderGeometry\",\n * primitiveType: cylinder.primitiveType,\n * positions: cylinder.positions,\n * normals: cylinder.normals,\n * indices: cylinder.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redCylinderMesh\",\n * geometryId: \"cylinderGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redCylinder\",\n * meshIds: [\"redCylinderMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildCylinderGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.radiusTop=1] Radius of top.\n * @param {Number} [cfg.radiusBottom=1] Radius of bottom.\n * @param {Number} [cfg.height=1] Height.\n * @param {Number} [cfg.radialSegments=60] Number of horizontal segments.\n * @param {Number} [cfg.heightSegments=1] Number of vertical segments.\n * @param {Boolean} [cfg.openEnded=false] Whether or not the cylinder has solid caps on the ends.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildCylinderGeometry(cfg = {}) {\n\n let radiusTop = cfg.radiusTop || 1;\n if (radiusTop < 0) {\n console.error(\"negative radiusTop not allowed - will invert\");\n radiusTop *= -1;\n }\n\n let radiusBottom = cfg.radiusBottom || 1;\n if (radiusBottom < 0) {\n console.error(\"negative radiusBottom not allowed - will invert\");\n radiusBottom *= -1;\n }\n\n let height = cfg.height || 1;\n if (height < 0) {\n console.error(\"negative height not allowed - will invert\");\n height *= -1;\n }\n\n let radialSegments = cfg.radialSegments || 32;\n if (radialSegments < 0) {\n console.error(\"negative radialSegments not allowed - will invert\");\n radialSegments *= -1;\n }\n if (radialSegments < 3) {\n radialSegments = 3;\n }\n\n let heightSegments = cfg.heightSegments || 1;\n if (heightSegments < 0) {\n console.error(\"negative heightSegments not allowed - will invert\");\n heightSegments *= -1;\n }\n if (heightSegments < 1) {\n heightSegments = 1;\n }\n\n const openEnded = !!cfg.openEnded;\n\n let center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const heightHalf = height / 2;\n const heightLength = height / heightSegments;\n const radialAngle = (2.0 * Math.PI / radialSegments);\n const radialLength = 1.0 / radialSegments;\n //var nextRadius = this._radiusBottom;\n const radiusChange = (radiusTop - radiusBottom) / heightSegments;\n\n const positions = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n\n let h;\n let i;\n\n let x;\n let z;\n\n let currentRadius;\n let currentHeight;\n\n let first;\n let second;\n\n let startIndex;\n let tu;\n let tv;\n\n // create vertices\n const normalY = (90.0 - (Math.atan(height / (radiusBottom - radiusTop))) * 180 / Math.PI) / 90.0;\n\n for (h = 0; h <= heightSegments; h++) {\n currentRadius = radiusTop - h * radiusChange;\n currentHeight = heightHalf - h * heightLength;\n\n for (i = 0; i <= radialSegments; i++) {\n x = Math.sin(i * radialAngle);\n z = Math.cos(i * radialAngle);\n\n normals.push(currentRadius * x);\n normals.push(normalY); //todo\n normals.push(currentRadius * z);\n\n uvs.push((i * radialLength));\n uvs.push(h * 1 / heightSegments);\n\n positions.push((currentRadius * x) + centerX);\n positions.push((currentHeight) + centerY);\n positions.push((currentRadius * z) + centerZ);\n }\n }\n\n // create faces\n for (h = 0; h < heightSegments; h++) {\n for (i = 0; i <= radialSegments; i++) {\n\n first = h * (radialSegments + 1) + i;\n second = first + radialSegments;\n\n indices.push(first);\n indices.push(second);\n indices.push(second + 1);\n\n indices.push(first);\n indices.push(second + 1);\n indices.push(first + 1);\n }\n }\n\n // create top cap\n if (!openEnded && radiusTop > 0) {\n startIndex = (positions.length / 3);\n\n // top center\n normals.push(0.0);\n normals.push(1.0);\n normals.push(0.0);\n\n uvs.push(0.5);\n uvs.push(0.5);\n\n positions.push(0 + centerX);\n positions.push(heightHalf + centerY);\n positions.push(0 + centerZ);\n\n // top triangle fan\n for (i = 0; i <= radialSegments; i++) {\n x = Math.sin(i * radialAngle);\n z = Math.cos(i * radialAngle);\n tu = (0.5 * Math.sin(i * radialAngle)) + 0.5;\n tv = (0.5 * Math.cos(i * radialAngle)) + 0.5;\n\n normals.push(radiusTop * x);\n normals.push(1.0);\n normals.push(radiusTop * z);\n\n uvs.push(tu);\n uvs.push(tv);\n\n positions.push((radiusTop * x) + centerX);\n positions.push((heightHalf) + centerY);\n positions.push((radiusTop * z) + centerZ);\n }\n\n for (i = 0; i < radialSegments; i++) {\n center = startIndex;\n first = startIndex + 1 + i;\n\n indices.push(first);\n indices.push(first + 1);\n indices.push(center);\n }\n }\n\n // create bottom cap\n if (!openEnded && radiusBottom > 0) {\n\n startIndex = (positions.length / 3);\n\n // top center\n normals.push(0.0);\n normals.push(-1.0);\n normals.push(0.0);\n\n uvs.push(0.5);\n uvs.push(0.5);\n\n positions.push(0 + centerX);\n positions.push(0 - heightHalf + centerY);\n positions.push(0 + centerZ);\n\n // top triangle fan\n for (i = 0; i <= radialSegments; i++) {\n\n x = Math.sin(i * radialAngle);\n z = Math.cos(i * radialAngle);\n\n tu = (0.5 * Math.sin(i * radialAngle)) + 0.5;\n tv = (0.5 * Math.cos(i * radialAngle)) + 0.5;\n\n normals.push(radiusBottom * x);\n normals.push(-1.0);\n normals.push(radiusBottom * z);\n\n uvs.push(tu);\n uvs.push(tv);\n\n positions.push((radiusBottom * x) + centerX);\n positions.push((0 - heightHalf) + centerY);\n positions.push((radiusBottom * z) + centerZ);\n }\n\n for (i = 0; i < radialSegments; i++) {\n\n center = startIndex;\n first = startIndex + 1 + i;\n\n indices.push(center);\n indices.push(first + 1);\n indices.push(first);\n }\n }\n\n return {\n primitiveType: \"triangles\",\n positions: positions,\n normals: normals,\n uv: uvs,\n uvs: uvs,\n indices: indices\n };\n}\n\n\nexport {buildCylinderGeometry};\n","/**\n * @desc Creates grid-shaped geometry arrays..\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a grid-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildGridGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const grid = buildGridGeometry({\n * size: 1000,\n * divisions: 500\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"gridGeometry\",\n * primitiveType: grid.primitiveType, // Will be \"lines\"\n * positions: grid.positions,\n * indices: grid.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redGridMesh\",\n * geometryId: \"gridGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redGrid\",\n * meshIds: [\"redGridMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildGridGeometry\n * @param {*} [cfg] Configs\n * @param {Number} [cfg.size=1] Dimension on the X and Z-axis.\n * @param {Number} [cfg.divisions=1] Number of divisions on X and Z axis..\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildGridGeometry(cfg = {}) {\n\n let size = cfg.size || 1;\n if (size < 0) {\n console.error(\"negative size not allowed - will invert\");\n size *= -1;\n }\n\n let divisions = cfg.divisions || 1;\n if (divisions < 0) {\n console.error(\"negative divisions not allowed - will invert\");\n divisions *= -1;\n }\n if (divisions < 1) {\n divisions = 1;\n }\n\n size = size || 10;\n divisions = divisions || 10;\n\n const step = size / divisions;\n const halfSize = size / 2;\n\n const positions = [];\n const indices = [];\n let l = 0;\n\n for (let i = 0, j = 0, k = -halfSize; i <= divisions; i++, k += step) {\n\n positions.push(-halfSize);\n positions.push(0);\n positions.push(k);\n\n positions.push(halfSize);\n positions.push(0);\n positions.push(k);\n\n positions.push(k);\n positions.push(0);\n positions.push(-halfSize);\n\n positions.push(k);\n positions.push(0);\n positions.push(halfSize);\n\n indices.push(l++);\n indices.push(l++);\n indices.push(l++);\n indices.push(l++);\n }\n\n return {\n primitiveType: \"lines\",\n positions: positions,\n indices: indices\n };\n}\n\n\nexport {buildGridGeometry};\n","/**\n * @desc Creates plane-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a plane-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildPlaneGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const plane = buildPlaneGeometry({\n * center: [0,0,0],\n * xSize: 2,\n * zSize: 2,\n * xSegments: 10,\n * zSegments: 10\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"planeGeometry\",\n * primitiveType: plane.primitiveType, // Will be \"triangles\"\n * positions: plane.positions,\n * normals: plane.normals,\n * indices: plane.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redPlaneMesh\",\n * geometryId: \"planeGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redPlane\",\n * meshIds: [\"redPlaneMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildPlaneGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.xSize=1] Dimension on the X-axis.\n * @param {Number} [cfg.zSize=1] Dimension on the Z-axis.\n * @param {Number} [cfg.xSegments=1] Number of segments on the X-axis.\n * @param {Number} [cfg.zSegments=1] Number of segments on the Z-axis.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildPlaneGeometry(cfg = {}) {\n\n let xSize = cfg.xSize || 1;\n if (xSize < 0) {\n console.error(\"negative xSize not allowed - will invert\");\n xSize *= -1;\n }\n\n let zSize = cfg.zSize || 1;\n if (zSize < 0) {\n console.error(\"negative zSize not allowed - will invert\");\n zSize *= -1;\n }\n\n let xSegments = cfg.xSegments || 1;\n if (xSegments < 0) {\n console.error(\"negative xSegments not allowed - will invert\");\n xSegments *= -1;\n }\n if (xSegments < 1) {\n xSegments = 1;\n }\n\n let zSegments = cfg.xSegments || 1;\n if (zSegments < 0) {\n console.error(\"negative zSegments not allowed - will invert\");\n zSegments *= -1;\n }\n if (zSegments < 1) {\n zSegments = 1;\n }\n\n const center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const halfWidth = xSize / 2;\n const halfHeight = zSize / 2;\n\n const planeX = Math.floor(xSegments) || 1;\n const planeZ = Math.floor(zSegments) || 1;\n\n const planeX1 = planeX + 1;\n const planeZ1 = planeZ + 1;\n\n const segmentWidth = xSize / planeX;\n const segmentHeight = zSize / planeZ;\n\n const positions = new Float32Array(planeX1 * planeZ1 * 3);\n const normals = new Float32Array(planeX1 * planeZ1 * 3);\n const uvs = new Float32Array(planeX1 * planeZ1 * 2);\n\n let offset = 0;\n let offset2 = 0;\n\n let iz;\n let ix;\n let x;\n let a;\n let b;\n let c;\n let d;\n\n for (iz = 0; iz < planeZ1; iz++) {\n\n const z = iz * segmentHeight - halfHeight;\n\n for (ix = 0; ix < planeX1; ix++) {\n\n x = ix * segmentWidth - halfWidth;\n\n positions[offset] = x + centerX;\n positions[offset + 1] = centerY;\n positions[offset + 2] = -z + centerZ;\n\n normals[offset + 2] = -1;\n\n uvs[offset2] = (ix) / planeX;\n uvs[offset2 + 1] = ((planeZ - iz) / planeZ);\n\n offset += 3;\n offset2 += 2;\n }\n }\n\n offset = 0;\n\n const indices = new ((positions.length / 3) > 65535 ? Uint32Array : Uint16Array)(planeX * planeZ * 6);\n\n for (iz = 0; iz < planeZ; iz++) {\n\n for (ix = 0; ix < planeX; ix++) {\n\n a = ix + planeX1 * iz;\n b = ix + planeX1 * (iz + 1);\n c = (ix + 1) + planeX1 * (iz + 1);\n d = (ix + 1) + planeX1 * iz;\n\n indices[offset] = d;\n indices[offset + 1] = b;\n indices[offset + 2] = a;\n\n indices[offset + 3] = d;\n indices[offset + 4] = c;\n indices[offset + 5] = b;\n\n offset += 6;\n }\n }\n\n return {\n primitiveType: \"triangles\",\n positions: positions,\n normals: normals,\n uv: uvs,\n uvs: uvs,\n indices: indices\n };\n}\n\nexport {buildPlaneGeometry};\n","/**\n * @desc Creates sphere-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a sphere-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildSphereGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const sphere = buildSphereGeometry({\n * center: [0,0,0],\n * radius: 1.5,\n * heightSegments: 60,\n * widthSegments: 60\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"sphereGeometry\",\n * primitiveType: sphere.primitiveType, // Will be \"triangles\"\n * positions: sphere.positions,\n * normals: sphere.normals,\n * indices: sphere.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redSphereMesh\",\n * geometryId: \"sphereGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n *const xktEntity = xktModel.createEntity({\n * entityId: \"redSphere\",\n * meshIds: [\"redSphereMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildSphereGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.radius=1] Radius.\n * @param {Number} [cfg.heightSegments=24] Number of latitudinal bands.\n * @param {Number} [cfg.widthSegments=18] Number of longitudinal bands.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildSphereGeometry(cfg = {}) {\n\n const lod = cfg.lod || 1;\n\n const centerX = cfg.center ? cfg.center[0] : 0;\n const centerY = cfg.center ? cfg.center[1] : 0;\n const centerZ = cfg.center ? cfg.center[2] : 0;\n\n let radius = cfg.radius || 1;\n if (radius < 0) {\n console.error(\"negative radius not allowed - will invert\");\n radius *= -1;\n }\n\n let heightSegments = cfg.heightSegments || 18;\n if (heightSegments < 0) {\n console.error(\"negative heightSegments not allowed - will invert\");\n heightSegments *= -1;\n }\n heightSegments = Math.floor(lod * heightSegments);\n if (heightSegments < 18) {\n heightSegments = 18;\n }\n\n let widthSegments = cfg.widthSegments || 18;\n if (widthSegments < 0) {\n console.error(\"negative widthSegments not allowed - will invert\");\n widthSegments *= -1;\n }\n widthSegments = Math.floor(lod * widthSegments);\n if (widthSegments < 18) {\n widthSegments = 18;\n }\n\n const positions = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n\n let i;\n let j;\n\n let theta;\n let sinTheta;\n let cosTheta;\n\n let phi;\n let sinPhi;\n let cosPhi;\n\n let x;\n let y;\n let z;\n\n let u;\n let v;\n\n let first;\n let second;\n\n for (i = 0; i <= heightSegments; i++) {\n\n theta = i * Math.PI / heightSegments;\n sinTheta = Math.sin(theta);\n cosTheta = Math.cos(theta);\n\n for (j = 0; j <= widthSegments; j++) {\n\n phi = j * 2 * Math.PI / widthSegments;\n sinPhi = Math.sin(phi);\n cosPhi = Math.cos(phi);\n\n x = cosPhi * sinTheta;\n y = cosTheta;\n z = sinPhi * sinTheta;\n u = 1.0 - j / widthSegments;\n v = i / heightSegments;\n\n normals.push(x);\n normals.push(y);\n normals.push(z);\n\n uvs.push(u);\n uvs.push(v);\n\n positions.push(centerX + radius * x);\n positions.push(centerY + radius * y);\n positions.push(centerZ + radius * z);\n }\n }\n\n for (i = 0; i < heightSegments; i++) {\n for (j = 0; j < widthSegments; j++) {\n\n first = (i * (widthSegments + 1)) + j;\n second = first + widthSegments + 1;\n\n indices.push(first + 1);\n indices.push(second + 1);\n indices.push(second);\n indices.push(first + 1);\n indices.push(second);\n indices.push(first);\n }\n }\n\n return {\n primitiveType: \"triangles\",\n positions: positions,\n normals: normals,\n uv: uvs,\n uvs: uvs,\n indices: indices\n };\n}\n\nexport {buildSphereGeometry};\n","import {math} from '../lib/math.js';\n\n/**\n * @desc Creates torus-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a torus-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildTorusGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const torus = buildTorusGeometry({\n * center: [0,0,0],\n * radius: 1.0,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"torusGeometry\",\n * primitiveType: torus.primitiveType, // Will be \"triangles\"\n * positions: torus.positions,\n * normals: torus.normals,\n * indices: torus.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redTorusMesh\",\n * geometryId: \"torusGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redTorus\",\n * meshIds: [\"redTorusMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildTorusGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.radius=1] The overall radius.\n * @param {Number} [cfg.tube=0.3] The tube radius.\n * @param {Number} [cfg.radialSegments=32] The number of radial segments.\n * @param {Number} [cfg.tubeSegments=24] The number of tubular segments.\n * @param {Number} [cfg.arc=Math.PI*0.5] The length of the arc in radians, where Math.PI*2 is a closed torus.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildTorusGeometry(cfg = {}) {\n\n let radius = cfg.radius || 1;\n if (radius < 0) {\n console.error(\"negative radius not allowed - will invert\");\n radius *= -1;\n }\n radius *= 0.5;\n\n let tube = cfg.tube || 0.3;\n if (tube < 0) {\n console.error(\"negative tube not allowed - will invert\");\n tube *= -1;\n }\n\n let radialSegments = cfg.radialSegments || 32;\n if (radialSegments < 0) {\n console.error(\"negative radialSegments not allowed - will invert\");\n radialSegments *= -1;\n }\n if (radialSegments < 4) {\n radialSegments = 4;\n }\n\n let tubeSegments = cfg.tubeSegments || 24;\n if (tubeSegments < 0) {\n console.error(\"negative tubeSegments not allowed - will invert\");\n tubeSegments *= -1;\n }\n if (tubeSegments < 4) {\n tubeSegments = 4;\n }\n\n let arc = cfg.arc || Math.PI * 2;\n if (arc < 0) {\n console.warn(\"negative arc not allowed - will invert\");\n arc *= -1;\n }\n if (arc > 360) {\n arc = 360;\n }\n\n const center = cfg.center;\n let centerX = center ? center[0] : 0;\n let centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const positions = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n\n let u;\n let v;\n let x;\n let y;\n let z;\n let vec;\n\n let i;\n let j;\n\n for (j = 0; j <= tubeSegments; j++) {\n for (i = 0; i <= radialSegments; i++) {\n\n u = i / radialSegments * arc;\n v = 0.785398 + (j / tubeSegments * Math.PI * 2);\n\n centerX = radius * Math.cos(u);\n centerY = radius * Math.sin(u);\n\n x = (radius + tube * Math.cos(v)) * Math.cos(u);\n y = (radius + tube * Math.cos(v)) * Math.sin(u);\n z = tube * Math.sin(v);\n\n positions.push(x + centerX);\n positions.push(y + centerY);\n positions.push(z + centerZ);\n\n uvs.push(1 - (i / radialSegments));\n uvs.push((j / tubeSegments));\n\n vec = math.normalizeVec3(math.subVec3([x, y, z], [centerX, centerY, centerZ], []), []);\n\n normals.push(vec[0]);\n normals.push(vec[1]);\n normals.push(vec[2]);\n }\n }\n\n let a;\n let b;\n let c;\n let d;\n\n for (j = 1; j <= tubeSegments; j++) {\n for (i = 1; i <= radialSegments; i++) {\n\n a = (radialSegments + 1) * j + i - 1;\n b = (radialSegments + 1) * (j - 1) + i - 1;\n c = (radialSegments + 1) * (j - 1) + i;\n d = (radialSegments + 1) * j + i;\n\n indices.push(a);\n indices.push(b);\n indices.push(c);\n\n indices.push(c);\n indices.push(d);\n indices.push(a);\n }\n }\n\n return {\n primitiveType: \"triangles\",\n positions: positions,\n normals: normals,\n uv: uvs,\n uvs: uvs,\n indices: indices\n };\n}\n\nexport {buildTorusGeometry};\n","const letters = {\n ' ': {width: 16, points: []},\n '!': {\n width: 10, points: [\n [5, 21],\n [5, 7],\n [-1, -1],\n [5, 2],\n [4, 1],\n [5, 0],\n [6, 1],\n [5, 2]\n ]\n },\n '\"': {\n width: 16, points: [\n [4, 21],\n [4, 14],\n [-1, -1],\n [12, 21],\n [12, 14]\n ]\n },\n '#': {\n width: 21, points: [\n [11, 25],\n [4, -7],\n [-1, -1],\n [17, 25],\n [10, -7],\n [-1, -1],\n [4, 12],\n [18, 12],\n [-1, -1],\n [3, 6],\n [17, 6]\n ]\n },\n '$': {\n width: 20, points: [\n [8, 25],\n [8, -4],\n [-1, -1],\n [12, 25],\n [12, -4],\n [-1, -1],\n [17, 18],\n [15, 20],\n [12, 21],\n [8, 21],\n [5, 20],\n [3, 18],\n [3, 16],\n [4, 14],\n [5, 13],\n [7, 12],\n [13, 10],\n [15, 9],\n [16, 8],\n [17, 6],\n [17, 3],\n [15, 1],\n [12, 0],\n [8, 0],\n [5, 1],\n [3, 3]\n ]\n },\n '%': {\n width: 24, points: [\n [21, 21],\n [3, 0],\n [-1, -1],\n [8, 21],\n [10, 19],\n [10, 17],\n [9, 15],\n [7, 14],\n [5, 14],\n [3, 16],\n [3, 18],\n [4, 20],\n [6, 21],\n [8, 21],\n [10, 20],\n [13, 19],\n [16, 19],\n [19, 20],\n [21, 21],\n [-1, -1],\n [17, 7],\n [15, 6],\n [14, 4],\n [14, 2],\n [16, 0],\n [18, 0],\n [20, 1],\n [21, 3],\n [21, 5],\n [19, 7],\n [17, 7]\n ]\n },\n '&': {\n width: 26, points: [\n [23, 12],\n [23, 13],\n [22, 14],\n [21, 14],\n [20, 13],\n [19, 11],\n [17, 6],\n [15, 3],\n [13, 1],\n [11, 0],\n [7, 0],\n [5, 1],\n [4, 2],\n [3, 4],\n [3, 6],\n [4, 8],\n [5, 9],\n [12, 13],\n [13, 14],\n [14, 16],\n [14, 18],\n [13, 20],\n [11, 21],\n [9, 20],\n [8, 18],\n [8, 16],\n [9, 13],\n [11, 10],\n [16, 3],\n [18, 1],\n [20, 0],\n [22, 0],\n [23, 1],\n [23, 2]\n ]\n },\n '\\'': {\n width: 10, points: [\n [5, 19],\n [4, 20],\n [5, 21],\n [6, 20],\n [6, 18],\n [5, 16],\n [4, 15]\n ]\n },\n '(': {\n width: 14, points: [\n [11, 25],\n [9, 23],\n [7, 20],\n [5, 16],\n [4, 11],\n [4, 7],\n [5, 2],\n [7, -2],\n [9, -5],\n [11, -7]\n ]\n },\n ')': {\n width: 14, points: [\n [3, 25],\n [5, 23],\n [7, 20],\n [9, 16],\n [10, 11],\n [10, 7],\n [9, 2],\n [7, -2],\n [5, -5],\n [3, -7]\n ]\n },\n '*': {\n width: 16, points: [\n [8, 21],\n [8, 9],\n [-1, -1],\n [3, 18],\n [13, 12],\n [-1, -1],\n [13, 18],\n [3, 12]\n ]\n },\n '+': {\n width: 26, points: [\n [13, 18],\n [13, 0],\n [-1, -1],\n [4, 9],\n [22, 9]\n ]\n },\n ',': {\n width: 10, points: [\n [6, 1],\n [5, 0],\n [4, 1],\n [5, 2],\n [6, 1],\n [6, -1],\n [5, -3],\n [4, -4]\n ]\n },\n '-': {\n width: 26, points: [\n [4, 9],\n [22, 9]\n ]\n },\n '.': {\n width: 10, points: [\n [5, 2],\n [4, 1],\n [5, 0],\n [6, 1],\n [5, 2]\n ]\n },\n '/': {\n width: 22, points: [\n [20, 25],\n [2, -7]\n ]\n },\n '0': {\n width: 20, points: [\n [9, 21],\n [6, 20],\n [4, 17],\n [3, 12],\n [3, 9],\n [4, 4],\n [6, 1],\n [9, 0],\n [11, 0],\n [14, 1],\n [16, 4],\n [17, 9],\n [17, 12],\n [16, 17],\n [14, 20],\n [11, 21],\n [9, 21]\n ]\n },\n '1': {\n width: 20, points: [\n [6, 17],\n [8, 18],\n [11, 21],\n [11, 0]\n ]\n },\n '2': {\n width: 20, points: [\n [4, 16],\n [4, 17],\n [5, 19],\n [6, 20],\n [8, 21],\n [12, 21],\n [14, 20],\n [15, 19],\n [16, 17],\n [16, 15],\n [15, 13],\n [13, 10],\n [3, 0],\n [17, 0]\n ]\n },\n '3': {\n width: 20, points: [\n [5, 21],\n [16, 21],\n [10, 13],\n [13, 13],\n [15, 12],\n [16, 11],\n [17, 8],\n [17, 6],\n [16, 3],\n [14, 1],\n [11, 0],\n [8, 0],\n [5, 1],\n [4, 2],\n [3, 4]\n ]\n },\n '4': {\n width: 20, points: [\n [13, 21],\n [3, 7],\n [18, 7],\n [-1, -1],\n [13, 21],\n [13, 0]\n ]\n },\n '5': {\n width: 20, points: [\n [15, 21],\n [5, 21],\n [4, 12],\n [5, 13],\n [8, 14],\n [11, 14],\n [14, 13],\n [16, 11],\n [17, 8],\n [17, 6],\n [16, 3],\n [14, 1],\n [11, 0],\n [8, 0],\n [5, 1],\n [4, 2],\n [3, 4]\n ]\n },\n '6': {\n width: 20, points: [\n [16, 18],\n [15, 20],\n [12, 21],\n [10, 21],\n [7, 20],\n [5, 17],\n [4, 12],\n [4, 7],\n [5, 3],\n [7, 1],\n [10, 0],\n [11, 0],\n [14, 1],\n [16, 3],\n [17, 6],\n [17, 7],\n [16, 10],\n [14, 12],\n [11, 13],\n [10, 13],\n [7, 12],\n [5, 10],\n [4, 7]\n ]\n },\n '7': {\n width: 20, points: [\n [17, 21],\n [7, 0],\n [-1, -1],\n [3, 21],\n [17, 21]\n ]\n },\n '8': {\n width: 20, points: [\n [8, 21],\n [5, 20],\n [4, 18],\n [4, 16],\n [5, 14],\n [7, 13],\n [11, 12],\n [14, 11],\n [16, 9],\n [17, 7],\n [17, 4],\n [16, 2],\n [15, 1],\n [12, 0],\n [8, 0],\n [5, 1],\n [4, 2],\n [3, 4],\n [3, 7],\n [4, 9],\n [6, 11],\n [9, 12],\n [13, 13],\n [15, 14],\n [16, 16],\n [16, 18],\n [15, 20],\n [12, 21],\n [8, 21]\n ]\n },\n '9': {\n width: 20, points: [\n [16, 14],\n [15, 11],\n [13, 9],\n [10, 8],\n [9, 8],\n [6, 9],\n [4, 11],\n [3, 14],\n [3, 15],\n [4, 18],\n [6, 20],\n [9, 21],\n [10, 21],\n [13, 20],\n [15, 18],\n [16, 14],\n [16, 9],\n [15, 4],\n [13, 1],\n [10, 0],\n [8, 0],\n [5, 1],\n [4, 3]\n ]\n },\n ':': {\n width: 10, points: [\n [5, 14],\n [4, 13],\n [5, 12],\n [6, 13],\n [5, 14],\n [-1, -1],\n [5, 2],\n [4, 1],\n [5, 0],\n [6, 1],\n [5, 2]\n ]\n },\n ';': {\n width: 10, points: [\n [5, 14],\n [4, 13],\n [5, 12],\n [6, 13],\n [5, 14],\n [-1, -1],\n [6, 1],\n [5, 0],\n [4, 1],\n [5, 2],\n [6, 1],\n [6, -1],\n [5, -3],\n [4, -4]\n ]\n },\n '<': {\n width: 24, points: [\n [20, 18],\n [4, 9],\n [20, 0]\n ]\n },\n '=': {\n width: 26, points: [\n [4, 12],\n [22, 12],\n [-1, -1],\n [4, 6],\n [22, 6]\n ]\n },\n '>': {\n width: 24, points: [\n [4, 18],\n [20, 9],\n [4, 0]\n ]\n },\n '?': {\n width: 18, points: [\n [3, 16],\n [3, 17],\n [4, 19],\n [5, 20],\n [7, 21],\n [11, 21],\n [13, 20],\n [14, 19],\n [15, 17],\n [15, 15],\n [14, 13],\n [13, 12],\n [9, 10],\n [9, 7],\n [-1, -1],\n [9, 2],\n [8, 1],\n [9, 0],\n [10, 1],\n [9, 2]\n ]\n },\n '@': {\n width: 27, points: [\n [18, 13],\n [17, 15],\n [15, 16],\n [12, 16],\n [10, 15],\n [9, 14],\n [8, 11],\n [8, 8],\n [9, 6],\n [11, 5],\n [14, 5],\n [16, 6],\n [17, 8],\n [-1, -1],\n [12, 16],\n [10, 14],\n [9, 11],\n [9, 8],\n [10, 6],\n [11, 5],\n [-1, -1],\n [18, 16],\n [17, 8],\n [17, 6],\n [19, 5],\n [21, 5],\n [23, 7],\n [24, 10],\n [24, 12],\n [23, 15],\n [22, 17],\n [20, 19],\n [18, 20],\n [15, 21],\n [12, 21],\n [9, 20],\n [7, 19],\n [5, 17],\n [4, 15],\n [3, 12],\n [3, 9],\n [4, 6],\n [5, 4],\n [7, 2],\n [9, 1],\n [12, 0],\n [15, 0],\n [18, 1],\n [20, 2],\n [21, 3],\n [-1, -1],\n [19, 16],\n [18, 8],\n [18, 6],\n [19, 5]\n ]\n },\n 'A': {\n width: 18, points: [\n [9, 21],\n [1, 0],\n [-1, -1],\n [9, 21],\n [17, 0],\n [-1, -1],\n [4, 7],\n [14, 7]\n ]\n },\n 'B': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [13, 21],\n [16, 20],\n [17, 19],\n [18, 17],\n [18, 15],\n [17, 13],\n [16, 12],\n [13, 11],\n [-1, -1],\n [4, 11],\n [13, 11],\n [16, 10],\n [17, 9],\n [18, 7],\n [18, 4],\n [17, 2],\n [16, 1],\n [13, 0],\n [4, 0]\n ]\n },\n 'C': {\n width: 21, points: [\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5]\n ]\n },\n 'D': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [11, 21],\n [14, 20],\n [16, 18],\n [17, 16],\n [18, 13],\n [18, 8],\n [17, 5],\n [16, 3],\n [14, 1],\n [11, 0],\n [4, 0]\n ]\n },\n 'E': {\n width: 19, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [17, 21],\n [-1, -1],\n [4, 11],\n [12, 11],\n [-1, -1],\n [4, 0],\n [17, 0]\n ]\n },\n 'F': {\n width: 18, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [17, 21],\n [-1, -1],\n [4, 11],\n [12, 11]\n ]\n },\n 'G': {\n width: 21, points: [\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5],\n [18, 8],\n [-1, -1],\n [13, 8],\n [18, 8]\n ]\n },\n 'H': {\n width: 22, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [18, 21],\n [18, 0],\n [-1, -1],\n [4, 11],\n [18, 11]\n ]\n },\n 'I': {\n width: 8, points: [\n [4, 21],\n [4, 0]\n ]\n },\n 'J': {\n width: 16, points: [\n [12, 21],\n [12, 5],\n [11, 2],\n [10, 1],\n [8, 0],\n [6, 0],\n [4, 1],\n [3, 2],\n [2, 5],\n [2, 7]\n ]\n },\n 'K': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [18, 21],\n [4, 7],\n [-1, -1],\n [9, 12],\n [18, 0]\n ]\n },\n 'L': {\n width: 17, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 0],\n [16, 0]\n ]\n },\n 'M': {\n width: 24, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [12, 0],\n [-1, -1],\n [20, 21],\n [12, 0],\n [-1, -1],\n [20, 21],\n [20, 0]\n ]\n },\n 'N': {\n width: 22, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [18, 0],\n [-1, -1],\n [18, 21],\n [18, 0]\n ]\n },\n 'O': {\n width: 22, points: [\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5],\n [19, 8],\n [19, 13],\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21]\n ]\n },\n 'P': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [13, 21],\n [16, 20],\n [17, 19],\n [18, 17],\n [18, 14],\n [17, 12],\n [16, 11],\n [13, 10],\n [4, 10]\n ]\n },\n 'Q': {\n width: 22, points: [\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5],\n [19, 8],\n [19, 13],\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21],\n [-1, -1],\n [12, 4],\n [18, -2]\n ]\n },\n 'R': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [13, 21],\n [16, 20],\n [17, 19],\n [18, 17],\n [18, 15],\n [17, 13],\n [16, 12],\n [13, 11],\n [4, 11],\n [-1, -1],\n [11, 11],\n [18, 0]\n ]\n },\n 'S': {\n width: 20, points: [\n [17, 18],\n [15, 20],\n [12, 21],\n [8, 21],\n [5, 20],\n [3, 18],\n [3, 16],\n [4, 14],\n [5, 13],\n [7, 12],\n [13, 10],\n [15, 9],\n [16, 8],\n [17, 6],\n [17, 3],\n [15, 1],\n [12, 0],\n [8, 0],\n [5, 1],\n [3, 3]\n ]\n },\n 'T': {\n width: 16, points: [\n [8, 21],\n [8, 0],\n [-1, -1],\n [1, 21],\n [15, 21]\n ]\n },\n 'U': {\n width: 22, points: [\n [4, 21],\n [4, 6],\n [5, 3],\n [7, 1],\n [10, 0],\n [12, 0],\n [15, 1],\n [17, 3],\n [18, 6],\n [18, 21]\n ]\n },\n 'V': {\n width: 18, points: [\n [1, 21],\n [9, 0],\n [-1, -1],\n [17, 21],\n [9, 0]\n ]\n },\n 'W': {\n width: 24, points: [\n [2, 21],\n [7, 0],\n [-1, -1],\n [12, 21],\n [7, 0],\n [-1, -1],\n [12, 21],\n [17, 0],\n [-1, -1],\n [22, 21],\n [17, 0]\n ]\n },\n 'X': {\n width: 20, points: [\n [3, 21],\n [17, 0],\n [-1, -1],\n [17, 21],\n [3, 0]\n ]\n },\n 'Y': {\n width: 18, points: [\n [1, 21],\n [9, 11],\n [9, 0],\n [-1, -1],\n [17, 21],\n [9, 11]\n ]\n },\n 'Z': {\n width: 20, points: [\n [17, 21],\n [3, 0],\n [-1, -1],\n [3, 21],\n [17, 21],\n [-1, -1],\n [3, 0],\n [17, 0]\n ]\n },\n '[': {\n width: 14, points: [\n [4, 25],\n [4, -7],\n [-1, -1],\n [5, 25],\n [5, -7],\n [-1, -1],\n [4, 25],\n [11, 25],\n [-1, -1],\n [4, -7],\n [11, -7]\n ]\n },\n '\\\\': {\n width: 14, points: [\n [0, 21],\n [14, -3]\n ]\n },\n ']': {\n width: 14, points: [\n [9, 25],\n [9, -7],\n [-1, -1],\n [10, 25],\n [10, -7],\n [-1, -1],\n [3, 25],\n [10, 25],\n [-1, -1],\n [3, -7],\n [10, -7]\n ]\n },\n '^': {\n width: 16, points: [\n [6, 15],\n [8, 18],\n [10, 15],\n [-1, -1],\n [3, 12],\n [8, 17],\n [13, 12],\n [-1, -1],\n [8, 17],\n [8, 0]\n ]\n },\n '_': {\n width: 16, points: [\n [0, -2],\n [16, -2]\n ]\n },\n '`': {\n width: 10, points: [\n [6, 21],\n [5, 20],\n [4, 18],\n [4, 16],\n [5, 15],\n [6, 16],\n [5, 17]\n ]\n },\n 'a': {\n width: 19, points: [\n [15, 14],\n [15, 0],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'b': {\n width: 19, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 11],\n [6, 13],\n [8, 14],\n [11, 14],\n [13, 13],\n [15, 11],\n [16, 8],\n [16, 6],\n [15, 3],\n [13, 1],\n [11, 0],\n [8, 0],\n [6, 1],\n [4, 3]\n ]\n },\n 'c': {\n width: 18, points: [\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'd': {\n width: 19, points: [\n [15, 21],\n [15, 0],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'e': {\n width: 18, points: [\n [3, 8],\n [15, 8],\n [15, 10],\n [14, 12],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'f': {\n width: 12, points: [\n [10, 21],\n [8, 21],\n [6, 20],\n [5, 17],\n [5, 0],\n [-1, -1],\n [2, 14],\n [9, 14]\n ]\n },\n 'g': {\n width: 19, points: [\n [15, 14],\n [15, -2],\n [14, -5],\n [13, -6],\n [11, -7],\n [8, -7],\n [6, -6],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'h': {\n width: 19, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 10],\n [7, 13],\n [9, 14],\n [12, 14],\n [14, 13],\n [15, 10],\n [15, 0]\n ]\n },\n 'i': {\n width: 8, points: [\n [3, 21],\n [4, 20],\n [5, 21],\n [4, 22],\n [3, 21],\n [-1, -1],\n [4, 14],\n [4, 0]\n ]\n },\n 'j': {\n width: 10, points: [\n [5, 21],\n [6, 20],\n [7, 21],\n [6, 22],\n [5, 21],\n [-1, -1],\n [6, 14],\n [6, -3],\n [5, -6],\n [3, -7],\n [1, -7]\n ]\n },\n 'k': {\n width: 17, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [14, 14],\n [4, 4],\n [-1, -1],\n [8, 8],\n [15, 0]\n ]\n },\n 'l': {\n width: 8, points: [\n [4, 21],\n [4, 0]\n ]\n },\n 'm': {\n width: 30, points: [\n [4, 14],\n [4, 0],\n [-1, -1],\n [4, 10],\n [7, 13],\n [9, 14],\n [12, 14],\n [14, 13],\n [15, 10],\n [15, 0],\n [-1, -1],\n [15, 10],\n [18, 13],\n [20, 14],\n [23, 14],\n [25, 13],\n [26, 10],\n [26, 0]\n ]\n },\n 'n': {\n width: 19, points: [\n [4, 14],\n [4, 0],\n [-1, -1],\n [4, 10],\n [7, 13],\n [9, 14],\n [12, 14],\n [14, 13],\n [15, 10],\n [15, 0]\n ]\n },\n 'o': {\n width: 19, points: [\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3],\n [16, 6],\n [16, 8],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14]\n ]\n },\n 'p': {\n width: 19, points: [\n [4, 14],\n [4, -7],\n [-1, -1],\n [4, 11],\n [6, 13],\n [8, 14],\n [11, 14],\n [13, 13],\n [15, 11],\n [16, 8],\n [16, 6],\n [15, 3],\n [13, 1],\n [11, 0],\n [8, 0],\n [6, 1],\n [4, 3]\n ]\n },\n 'q': {\n width: 19, points: [\n [15, 14],\n [15, -7],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'r': {\n width: 13, points: [\n [4, 14],\n [4, 0],\n [-1, -1],\n [4, 8],\n [5, 11],\n [7, 13],\n [9, 14],\n [12, 14]\n ]\n },\n 's': {\n width: 17, points: [\n [14, 11],\n [13, 13],\n [10, 14],\n [7, 14],\n [4, 13],\n [3, 11],\n [4, 9],\n [6, 8],\n [11, 7],\n [13, 6],\n [14, 4],\n [14, 3],\n [13, 1],\n [10, 0],\n [7, 0],\n [4, 1],\n [3, 3]\n ]\n },\n 't': {\n width: 12, points: [\n [5, 21],\n [5, 4],\n [6, 1],\n [8, 0],\n [10, 0],\n [-1, -1],\n [2, 14],\n [9, 14]\n ]\n },\n 'u': {\n width: 19, points: [\n [4, 14],\n [4, 4],\n [5, 1],\n [7, 0],\n [10, 0],\n [12, 1],\n [15, 4],\n [-1, -1],\n [15, 14],\n [15, 0]\n ]\n },\n 'v': {\n width: 16, points: [\n [2, 14],\n [8, 0],\n [-1, -1],\n [14, 14],\n [8, 0]\n ]\n },\n 'w': {\n width: 22, points: [\n [3, 14],\n [7, 0],\n [-1, -1],\n [11, 14],\n [7, 0],\n [-1, -1],\n [11, 14],\n [15, 0],\n [-1, -1],\n [19, 14],\n [15, 0]\n ]\n },\n 'x': {\n width: 17, points: [\n [3, 14],\n [14, 0],\n [-1, -1],\n [14, 14],\n [3, 0]\n ]\n },\n 'y': {\n width: 16, points: [\n [2, 14],\n [8, 0],\n [-1, -1],\n [14, 14],\n [8, 0],\n [6, -4],\n [4, -6],\n [2, -7],\n [1, -7]\n ]\n },\n 'z': {\n width: 17, points: [\n [14, 14],\n [3, 0],\n [-1, -1],\n [3, 14],\n [14, 14],\n [-1, -1],\n [3, 0],\n [14, 0]\n ]\n },\n '{': {\n width: 14, points: [\n [9, 25],\n [7, 24],\n [6, 23],\n [5, 21],\n [5, 19],\n [6, 17],\n [7, 16],\n [8, 14],\n [8, 12],\n [6, 10],\n [-1, -1],\n [7, 24],\n [6, 22],\n [6, 20],\n [7, 18],\n [8, 17],\n [9, 15],\n [9, 13],\n [8, 11],\n [4, 9],\n [8, 7],\n [9, 5],\n [9, 3],\n [8, 1],\n [7, 0],\n [6, -2],\n [6, -4],\n [7, -6],\n [-1, -1],\n [6, 8],\n [8, 6],\n [8, 4],\n [7, 2],\n [6, 1],\n [5, -1],\n [5, -3],\n [6, -5],\n [7, -6],\n [9, -7]\n ]\n },\n '|': {\n width: 8, points: [\n [4, 25],\n [4, -7]\n ]\n },\n '}': {\n width: 14, points: [\n [5, 25],\n [7, 24],\n [8, 23],\n [9, 21],\n [9, 19],\n [8, 17],\n [7, 16],\n [6, 14],\n [6, 12],\n [8, 10],\n [-1, -1],\n [7, 24],\n [8, 22],\n [8, 20],\n [7, 18],\n [6, 17],\n [5, 15],\n [5, 13],\n [6, 11],\n [10, 9],\n [6, 7],\n [5, 5],\n [5, 3],\n [6, 1],\n [7, 0],\n [8, -2],\n [8, -4],\n [7, -6],\n [-1, -1],\n [8, 8],\n [6, 6],\n [6, 4],\n [7, 2],\n [8, 1],\n [9, -1],\n [9, -3],\n [8, -5],\n [7, -6],\n [5, -7]\n ]\n },\n '~': {\n width: 24, points: [\n [3, 6],\n [3, 8],\n [4, 11],\n [6, 12],\n [8, 12],\n [10, 11],\n [14, 8],\n [16, 7],\n [18, 7],\n [20, 8],\n [21, 10],\n [-1, -1],\n [3, 8],\n [4, 10],\n [6, 11],\n [8, 11],\n [10, 10],\n [14, 7],\n [16, 6],\n [18, 6],\n [20, 7],\n [21, 10],\n [21, 12]\n ]\n }\n};\n\n/**\n * @desc Creates wireframe text-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a text-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildVectorTextGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const text = buildVectorTextGeometry({\n * origin: [0,0,0],\n * text: \"On the other side of the screen, it all looked so easy\"\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"textGeometry\",\n * primitiveType: text.primitiveType, // Will be \"lines\"\n * positions: text.positions,\n * indices: text.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redTextMesh\",\n * geometryId: \"textGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redText\",\n * meshIds: [\"redTextMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildVectorTextGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number[]} [cfg.origin] 3D point indicating the top left corner.\n * @param {Number} [cfg.size=1] Size of each character.\n * @param {String} [cfg.text=\"\"] The text.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildVectorTextGeometry(cfg = {}) {\n\n var origin = cfg.origin || [0, 0, 0];\n var xOrigin = origin[0];\n var yOrigin = origin[1];\n var zOrigin = origin[2];\n var size = cfg.size || 1;\n\n var positions = [];\n var indices = [];\n var text = (\"\" + cfg.text).trim();\n var lines = (text || \"\").split(\"\\n\");\n var countVerts = 0;\n var y = 0;\n var x;\n var str;\n var len;\n var c;\n var mag = 1.0 / 25.0;\n var penUp;\n var p1;\n var p2;\n var needLine;\n var pointsLen;\n var a;\n\n for (var iLine = 0; iLine < lines.length; iLine++) {\n\n x = 0;\n str = lines[iLine];\n len = str.length;\n\n for (var i = 0; i < len; i++) {\n\n c = letters[str.charAt(i)];\n\n if (c === '\\n') {\n //alert(\"newline\");\n }\n\n if (!c) {\n continue;\n }\n\n penUp = 1;\n p1 = -1;\n p2 = -1;\n needLine = false;\n\n pointsLen = c.points.length;\n\n for (var j = 0; j < pointsLen; j++) {\n a = c.points[j];\n\n if (a[0] === -1 && a[1] === -1) {\n penUp = 1;\n needLine = false;\n continue;\n }\n\n positions.push((x + (a[0] * size) * mag) + xOrigin);\n positions.push((y + (a[1] * size) * mag) + yOrigin);\n positions.push(0 + zOrigin);\n\n if (p1 === -1) {\n p1 = countVerts;\n } else if (p2 === -1) {\n p2 = countVerts;\n } else {\n p1 = p2;\n p2 = countVerts;\n }\n countVerts++;\n\n if (penUp) {\n penUp = false;\n\n } else {\n indices.push(p1);\n indices.push(p2);\n }\n\n needLine = true;\n }\n x += c.width * mag * size;\n\n }\n y -= 35 * mag * size;\n }\n\n return {\n primitiveType: \"lines\",\n positions: positions,\n indices: indices\n };\n}\n\n\nexport {buildVectorTextGeometry}\n","/**\n * @private\n * @param buf\n * @returns {ArrayBuffer}\n */\nexport function toArrayBuffer(buf) {\n const ab = new ArrayBuffer(buf.length);\n const view = new Uint8Array(ab);\n for (let i = 0; i < buf.length; ++i) {\n view[i] = buf[i];\n }\n return ab;\n}","import {XKT_INFO} from \"./XKT_INFO.js\";\nimport {XKTModel} from \"./XKTModel/XKTModel.js\";\nimport {parseMetaModelIntoXKTModel} from \"./parsers/parseMetaModelIntoXKTModel.js\";\nimport {parseCityJSONIntoXKTModel} from \"./parsers/parseCityJSONIntoXKTModel.js\";\nimport {parseGLTFIntoXKTModel} from \"./parsers/parseGLTFIntoXKTModel.js\";\nimport {parseIFCIntoXKTModel} from \"./parsers/parseIFCIntoXKTModel.js\";\nimport {parseLASIntoXKTModel} from \"./parsers/parseLASIntoXKTModel.js\";\nimport {parsePCDIntoXKTModel} from \"./parsers/parsePCDIntoXKTModel.js\";\nimport {parsePLYIntoXKTModel} from \"./parsers/parsePLYIntoXKTModel.js\";\nimport {parseSTLIntoXKTModel} from \"./parsers/parseSTLIntoXKTModel.js\";\nimport {writeXKTModelToArrayBuffer} from \"./XKTModel/writeXKTModelToArrayBuffer.js\";\n\nimport {toArrayBuffer} from \"./XKTModel/lib/toArraybuffer\";\nimport {parseGLTFJSONIntoXKTModel} from \"./parsers/parseGLTFJSONIntoXKTModel\";\n\nconst fs = require('fs');\n\n/**\n * Converts model files into xeokit's native XKT format.\n *\n * Supported source formats are: IFC, CityJSON, glTF, LAZ and LAS.\n *\n * **Only bundled in xeokit-convert.cjs.js.**\n *\n * ## Usage\n *\n * ````javascript\n * const convert2xkt = require(\"@xeokit/xeokit-convert/dist/convert2xkt.cjs.js\");\n * const fs = require('fs');\n *\n * convert2xkt({\n * sourceData: fs.readFileSync(\"rme_advanced_sample_project.ifc\"),\n * outputXKT: (xtkArrayBuffer) => {\n * fs.writeFileSync(\"rme_advanced_sample_project.ifc.xkt\", xtkArrayBuffer);\n * }\n * }).then(() => {\n * console.log(\"Converted.\");\n * }, (errMsg) => {\n * console.error(\"Conversion failed: \" + errMsg)\n * });\n ````\n * @param {Object} params Conversion parameters.\n * @param {Object} params.WebIFC The WebIFC library. We pass this in as an external dependency, in order to give the\n * caller the choice of whether to use the Browser or NodeJS version.\n * @param {String} [params.source] Path to source file. Alternative to ````sourceData````.\n * @param {ArrayBuffer|JSON} [params.sourceData] Source file data. Alternative to ````source````.\n * @param {String} [params.sourceFormat] Format of source file/data. Always needed with ````sourceData````, but not normally needed with ````source````, because convert2xkt will determine the format automatically from the file extension of ````source````.\n * @param {ArrayBuffer|JSON} [params.metaModelData] Source file data. Overrides metadata from ````metaModelSource````, ````sourceData```` and ````source````.\n * @param {String} [params.metaModelSource] Path to source metaModel file. Overrides metadata from ````sourceData```` and ````source````. Overridden by ````metaModelData````.\n * @param {String} [params.output] Path to destination XKT file. Directories on this path are automatically created if not existing.\n * @param {Function} [params.outputXKTModel] Callback to collect the ````XKTModel```` that is internally build by this method.\n * @param {Function} [params.outputXKT] Callback to collect XKT file data.\n * @param {String[]} [params.includeTypes] Option to only convert objects of these types.\n * @param {String[]} [params.excludeTypes] Option to never convert objects of these types.\n * @param {Object} [stats] Collects conversion statistics. Statistics are attached to this object if provided.\n * @param {Function} [params.outputStats] Callback to collect statistics.\n * @param {Boolean} [params.rotateX=false] Whether to rotate the model 90 degrees about the X axis to make the Y axis \"up\", if necessary. Applies to CityJSON and LAS/LAZ models.\n * @param {Boolean} [params.reuseGeometries=true] When true, will enable geometry reuse within the XKT. When false,\n * will automatically \"expand\" all reused geometries into duplicate copies. This has the drawback of increasing the XKT\n * file size (~10-30% for typical models), but can make the model more responsive in the xeokit Viewer, especially if the model\n * has excessive geometry reuse. An example of excessive geometry reuse would be when a model (eg. glTF) has 4000 geometries that are\n * shared amongst 2000 objects, ie. a large number of geometries with a low amount of reuse, which can present a\n * pathological performance case for xeokit's underlying graphics APIs (WebGL, WebGPU etc).\n * @param {Boolean} [params.includeTextures=true] Whether to convert textures. Only works for ````glTF```` models.\n * @param {Boolean} [params.includeNormals=true] Whether to convert normals. When false, the parser will ignore\n * geometry normals, and the modelwill rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded non-PBR representation of the model.\n * @param {Number} [params.minTileSize=200] Minimum RTC coordinate tile size. Set this to a value between 100 and 10000,\n * depending on how far from the coordinate origin the model's vertex positions are; specify larger tile sizes when close\n * to the origin, and smaller sizes when distant. This compensates for decreasing precision as floats get bigger.\n * @param {Function} [params.log] Logging callback.\n * @return {Promise}\n */\nfunction convert2xkt({\n WebIFC,\n source,\n sourceData,\n sourceFormat,\n metaModelSource,\n metaModelData,\n output,\n outputXKTModel,\n outputXKT,\n includeTypes,\n excludeTypes,\n reuseGeometries = true,\n minTileSize = 200,\n stats = {},\n outputStats,\n rotateX = false,\n includeTextures = true,\n includeNormals = true,\n log = function (msg) {\n }\n }) {\n\n stats.sourceFormat = \"\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 0;\n stats.numPropertySets = 0;\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numNormals = 0;\n stats.numUVs = 0;\n stats.numTextures = 0;\n stats.numTextureSets = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n stats.sourceSize = 0;\n stats.xktSize = 0;\n stats.texturesSize = 0;\n stats.xktVersion = \"\";\n stats.compressionRatio = 0;\n stats.conversionTime = 0;\n stats.aabb = null;\n stats.minTileSize = minTileSize || 200;\n\n return new Promise(function (resolve, reject) {\n const _log = log;\n log = (msg) => {\n _log(`[convert2xkt] ${msg}`)\n }\n\n if (!source && !sourceData) {\n reject(\"Argument expected: source or sourceData\");\n return;\n }\n\n if (!sourceFormat && sourceData) {\n reject(\"Argument expected: sourceFormat is required with sourceData\");\n return;\n }\n\n if (!output && !outputXKTModel && !outputXKT) {\n reject(\"Argument expected: output, outputXKTModel or outputXKT\");\n return;\n }\n\n if (source) {\n log('Reading input file: ' + source);\n }\n\n const startTime = new Date();\n\n const ext = sourceFormat || source.split('.').pop();\n\n if (!sourceData) {\n try {\n sourceData = fs.readFileSync(source);\n } catch (err) {\n reject(err);\n return;\n }\n }\n\n const sourceFileSizeBytes = sourceData.byteLength;\n\n log(\"Input file size: \" + (sourceFileSizeBytes / 1000).toFixed(2) + \" kB\");\n\n if (!metaModelData && metaModelSource) {\n log('Reading input metadata file: ' + metaModelSource);\n try {\n const metaModelFileData = fs.readFileSync(metaModelSource);\n metaModelData = JSON.parse(metaModelFileData);\n } catch (err) {\n reject(err);\n return;\n }\n }\n\n if (reuseGeometries === false) {\n log(\"Geometry reuse is disabled\");\n }\n\n const xktModel = new XKTModel({\n minTileSize\n });\n\n if (metaModelData) {\n\n parseMetaModelIntoXKTModel({metaModelData, xktModel}).then(\n () => {\n convertForFormat();\n },\n (errMsg) => {\n reject(errMsg);\n });\n } else {\n convertForFormat();\n }\n\n function convertForFormat() {\n\n switch (ext) {\n case \"json\":\n convert(parseCityJSONIntoXKTModel, {\n data: JSON.parse(sourceData),\n xktModel,\n stats,\n rotateX,\n log\n });\n break;\n\n case \"glb\":\n case \"gltf\":\n const gltfBasePath = source ? getBasePath(source) : \"\";\n const useGLTFLegacyParser = (ext !== \"glb\") && (!includeTextures);\n const glTFParser = useGLTFLegacyParser ? parseGLTFJSONIntoXKTModel : parseGLTFIntoXKTModel;\n convert(glTFParser, {\n data: useGLTFLegacyParser ? JSON.parse(sourceData) : sourceData, // JSON for old parser, ArrayBuffer for new parser\n reuseGeometries,\n includeTextures,\n includeNormals,\n metaModelData,\n xktModel,\n getAttachment: async (name) => {\n const filePath = gltfBasePath + name;\n log(`Reading attachment file: ${filePath}`);\n return toArrayBuffer(fs.readFileSync(filePath));\n },\n stats,\n log\n });\n break;\n\n case \"ifc\":\n convert(parseIFCIntoXKTModel, {\n WebIFC,\n data: sourceData,\n xktModel,\n wasmPath: \"./\",\n includeTypes,\n excludeTypes,\n stats,\n log\n });\n break;\n\n case \"laz\":\n convert(parseLASIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n rotateX,\n log\n });\n break;\n\n case \"las\":\n convert(parseLASIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n log\n });\n break;\n\n case \"pcd\":\n convert(parsePCDIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n log\n });\n break;\n\n case \"ply\":\n convert(parsePLYIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n log\n });\n break;\n\n case \"stl\":\n convert(parseSTLIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n log\n });\n break;\n\n default:\n reject(`Error: unsupported source format: \"${ext}\".`);\n return;\n }\n }\n\n function convert(parser, converterParams) {\n\n parser(converterParams).then(() => {\n\n xktModel.createDefaultMetaObjects();\n\n log(\"Input file parsed OK. Building XKT document...\");\n\n xktModel.finalize().then(() => {\n\n log(\"XKT document built OK. Writing to XKT file...\");\n\n const xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel, stats);\n\n const xktContent = Buffer.from(xktArrayBuffer);\n\n const targetFileSizeBytes = xktArrayBuffer.byteLength;\n\n stats.sourceSize = (sourceFileSizeBytes / 1000).toFixed(2);\n stats.xktSize = (targetFileSizeBytes / 1000).toFixed(2);\n stats.xktVersion = XKT_INFO.xktVersion;\n stats.compressionRatio = (sourceFileSizeBytes / targetFileSizeBytes).toFixed(2);\n stats.conversionTime = ((new Date() - startTime) / 1000.0).toFixed(2);\n stats.aabb = xktModel.aabb;\n log(`Converted to: XKT v${stats.xktVersion}`);\n if (includeTypes) {\n log(\"Include types: \" + (includeTypes ? includeTypes : \"(include all)\"));\n }\n if (excludeTypes) {\n log(\"Exclude types: \" + (excludeTypes ? excludeTypes : \"(exclude none)\"));\n }\n log(\"XKT size: \" + stats.xktSize + \" kB\");\n log(\"XKT textures size: \" + (stats.texturesSize / 1000).toFixed(2) + \"kB\");\n log(\"Compression ratio: \" + stats.compressionRatio);\n log(\"Conversion time: \" + stats.conversionTime + \" s\");\n log(\"Converted metaobjects: \" + stats.numMetaObjects);\n log(\"Converted property sets: \" + stats.numPropertySets);\n log(\"Converted drawable objects: \" + stats.numObjects);\n log(\"Converted geometries: \" + stats.numGeometries);\n log(\"Converted textures: \" + stats.numTextures);\n log(\"Converted textureSets: \" + stats.numTextureSets);\n log(\"Converted triangles: \" + stats.numTriangles);\n log(\"Converted vertices: \" + stats.numVertices);\n log(\"Converted UVs: \" + stats.numUVs);\n log(\"Converted normals: \" + stats.numNormals);\n log(\"minTileSize: \" + stats.minTileSize);\n\n if (output) {\n const outputDir = getBasePath(output).trim();\n if (outputDir !== \"\" && !fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, {recursive: true});\n }\n log('Writing XKT file: ' + output);\n fs.writeFileSync(output, xktContent);\n }\n\n if (outputXKTModel) {\n outputXKTModel(xktModel);\n }\n\n if (outputXKT) {\n outputXKT(xktContent);\n }\n\n if (outputStats) {\n outputStats(stats);\n }\n\n resolve();\n });\n }, (err) => {\n reject(err);\n });\n }\n });\n}\n\nfunction getBasePath(src) {\n const i = src.lastIndexOf(\"/\");\n return (i !== 0) ? src.substring(0, i + 1) : \"\";\n}\n\nexport {convert2xkt};","import '@loaders.gl/polyfills';\nimport {installFilePolyfills} from '@loaders.gl/polyfills';\n\ninstallFilePolyfills();\n\nexport * from \"./src/index.js\";\nexport {convert2xkt} from \"./src/convert2xkt.js\"; // convert2xkt is only bundled for Node.js\n"],"names":["root","factory","exports","module","define","amd","global","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","p","mat","mat2","mat3","xyz","tempVec3","vec","translate","scale","XKT_INFO","xktVersion","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipMapNearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipMapNearestFilter","LinearMipmapLinearFilter","LinearMipMapLinearFilter","GIFMediaType","JPEGMediaType","PNGMediaType","FloatArrayType","Float64Array","tempMat1","tempMat2","tempVec4","math","MIN_DOUBLE","Number","MAX_SAFE_INTEGER","MAX_DOUBLE","DEGTORAD","RADTODEG","vec2","values","vec3","vec4","mat3ToMat4","mat4","mat4ToMat3","createUUID","lut","i","toString","d0","Math","random","d1","d2","d3","clamp","min","max","fmod","a","b","console","error","negateVec4","v","dest","addVec4","u","addVec4Scalar","s","addVec3","addVec3Scalar","subVec4","subVec3","subVec2","subVec4Scalar","subScalarVec4","mulVec4","mulVec4Scalar","mulVec3Scalar","mulVec2Scalar","divVec3","divVec4","divScalarVec3","divVec3Scalar","divVec4Scalar","divScalarVec4","dotVec4","cross3Vec4","u0","u1","u2","v0","v1","v2","cross3Vec3","x","y","z","x2","y2","z2","sqLenVec4","lenVec4","sqrt","dotVec3","dotVec2","sqLenVec3","sqLenVec2","lenVec3","distVec3","w","lenVec2","distVec2","rcpVec3","normalizeVec4","f","normalizeVec3","normalizeVec2","angleVec3","theta","acos","vec3FromMat4Scale","m","vecToArray","trunc","round","len","Array","slice","length","xyzArrayToObject","arr","xyzObjectToArray","arry","dupMat4","mat4To3","m4s","setMat4ToZeroes","setMat4ToOnes","diagonalMat4v","diagonalMat4c","diagonalMat4s","identityMat4","identityMat3","isIdentityMat4","negateMat4","addMat4","addMat4Scalar","addScalarMat4","subMat4","subMat4Scalar","subScalarMat4","mulMat4","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","mulMat3","mulMat4Scalar","mulMat4v4","v3","transposeMat4","m4","m14","m8","m13","m12","m9","transposeMat3","determinantMat4","inverseMat4","b04","b05","b06","b07","b08","b09","invDet","traceMat4","translationMat4v","translationMat3v","translationMat4c","translationMat4s","translateMat4v","translateMat4c","OLDtranslateMat4c","m15","m3","m7","m11","rotationMat4v","anglerad","axis","xy","yz","zx","xs","ys","zs","ax","sin","c","cos","q","rotationMat4c","scalingMat4v","scalingMat3v","scalingMat4c","scaleMat4c","scaleMat4v","scalingMat4s","rotationTranslationMat4","xx","xz","yy","zz","wx","wy","wz","mat4ToEuler","order","m21","m22","m23","m31","m32","m33","asin","abs","atan2","composeMat4","position","quaternion","quaternionToRotationMat4","decomposeMat4","matrix","sx","sy","sz","set","invSX","invSY","invSZ","mat4ToQuaternion","this","lookAtMat4v","pos","target","up","z0","z1","x0","x1","y0","y1","posx","posy","posz","upx","upy","upz","targetx","targety","targetz","lookAtMat4c","orthoMat4c","left","right","bottom","top","near","far","rl","tb","fn","frustumMat4v","fmin","fmax","fmin4","fmax4","t","tempMat20","tempMat21","tempMat22","frustumMat4","perspectiveMat4","fovyrad","aspectratio","znear","zfar","pmin","pmax","tan","transformPoint3","transformPoint4","transformPoints3","points","points2","p0","p1","p2","pi","result","m0","m1","m2","m5","m6","m10","transformPositions3","transformPositions4","transformVec3","transformVec4","rotateVec3X","rotateVec3Y","rotateVec3Z","projectVec4","unprojectVec3","viewMat","projMat","lerpVec3","t1","t2","flatten","leni","j","lenj","item","push","identityQuaternion","eulerToQuaternion","euler","c1","c2","c3","s1","s2","s3","trace","vec3PairToQuaternion","norm_u_norm_v","real_part","normalizeQuaternion","angleAxisToQuaternion","angleAxis","halfAngle","fsin","quaternionToEuler","mulQuaternions","p3","q0","q1","q2","q3","vec3ApplyQuaternion","qx","qy","qz","qw","ix","iy","iz","iw","quaternionToMat4","tx","ty","tz","twx","twy","twz","txx","txy","txz","tyy","tyz","tzz","conjugateQuaternion","inverseQuaternion","quaternionToAngleAxis","angle","AABB3","AABB2","OBB3","OBB2","Sphere3","transformOBB3","containsAABB3","aabb1","aabb2","getAABB3Diag","aabb","getAABB3DiagPoint","diagVec","xneg","xpos","yneg","ypos","zneg","zpos","getAABB3Center","getAABB2Center","collapseAABB3","AABB3ToOBB3","obb","positions3ToAABB3","positions","positionsDecodeMatrix","xmin","ymin","zmin","xmax","ymax","zmax","decompressPosition","OBB3ToAABB3","points3ToAABB3","points3ToSphere3","sphere","numPoints","dist","radius","positions3ToSphere3","tempVec3a","tempVec3b","lenPositions","numPositions","OBB3ToSphere3","point","lenPoints","getSphere3Center","expandAABB3","expandAABB3Point3","triangleNormal","normal","p1x","p1y","p1z","p2x","p2y","p2z","p3x","p3y","p3z","mag","octEncodeVec3","array","xfunc","yfunc","tempx","tempy","Int8Array","octDecodeVec2","oct","dot","uniquePositions","indicesLookup","indicesReverseLookup","weldedIndices","faces","numFaces","compa","compb","compc","cb","ab","cross","inverseNormal","geometryCompression","quantizePositions","quantizedPositions","maxInt","xMultiplier","yMultiplier","zMultiplier","verify","num","floor","compressPosition","multiplier","Float32Array","createPositionsDecodeMatrix","xwid","ywid","zwid","transformAndOctEncodeNormals","modelNormalMatrix","normals","lenNormals","compressedNormals","lenCompressedNormals","best","currentCos","bestCos","localNormal","worldNormal","octEncodeNormals","buildEdgeIndices","Uint16Array","indices","edgeThreshold","vx","vy","vz","positionsMap","precision","pow","lenUniquePositions","weldVertices","numIndices","ia","ib","ic","face","buildFaces","edge1","edge2","index1","index2","edge","normal1","normal2","edgeIndices","thresholdDot","edges","largeIndex","faceIndex","face1","face2","dot2","Uint32Array","isTriangleMeshSolid","vertexIndexMapping","compareIndexPositions","posA","posB","newIndices","sort","uniqueVertexIndex","a2","b2","temp","compareEdges","e1","e2","sameEdgeCount","XKTMesh","cfg","meshId","meshIndex","geometry","color","metallic","roughness","opacity","textureSet","entity","XKTGeometry","geometryId","primitiveType","geometryIndex","numInstances","positionsQuantized","normalsOctEncoded","colorsCompressed","uvs","uvsCompressed","solid","XKTEntity","entityId","meshes","entityIndex","hasReusedGeometries","XKTTile","entities","KDNode","XKTMetaObject","metaObjectId","propertySetIds","metaObjectType","metaObjectName","parentMetaObjectId","XKTPropertySet","propertySetId","propertySetType","propertySetName","properties","XKTTexture","textureId","textureIndex","imageData","channel","width","height","src","compressed","mediaType","minFilter","magFilter","wrapS","wrapT","wrapR","XKTTextureSet","textureSetId","textureSetIndex","materialType","materialIndex","colorTexture","metallicRoughnessTexture","normalsTexture","emissiveTexture","occlusionTexture","tempVec4a","tempVec4b","tempMat4","tempMat4b","kdTreeDimLength","TEXTURE_ENCODING_OPTIONS","useSRGB","qualityLevel","encodeUASTC","mipmaps","XKTModel","modelId","projectId","revisionId","author","createdAt","creatingApplication","schema","minTileSize","propertySets","propertySetsList","metaObjects","metaObjectsList","reusedGeometriesDecodeMatrix","geometries","geometriesList","textures","texturesList","textureSets","textureSetsList","meshesList","entitiesList","tilesList","finalized","params","propertySet","metaObject","_rootMetaObject","fileExt","split","pop","texture","colorTextureId","metallicRoughnessTextureId","normalsTextureId","emissiveTextureId","occlusionTextureId","triangles","lines","colors","xktGeometryCfg","uv","Uint8Array","mergedPositions","mergedIndices","mergeVertices","rotation","mesh","meshIds","meshIdIdx","meshIdLen","warn","createMetaObject","log","_removeUnusedTextures","_compressTextures","_bakeSingleUseGeometryPositions","_bakeAndOctEncodeNormals","_createEntityAABBs","rootKDNode","_createKDTree","_createTilesFromKDTree","_createReusedGeometriesDecodeMatrix","_flagSolidGeometries","countTextures","Promise","resolve","encodingOptions","load","ImageLoader","image","type","then","encode","KTX2BasisWriter","encodedData","encodedImageData","err","entityAABB","_insertEntityIntoKDTree","kdNode","nodeAABB","dim","aabbLeft","aabbRight","_createTilesFromKDNode","_createTileFromEntities","tileAABB","tileCenter","tileCenterNeg","rtcAABB","reused","k","lenk","tile","reusedGeometriesAABB","countReusedGeometries","numGeometries","maxNumPositions","maxNumIndices","XKT_VERSION","writeXKTModelToArrayBuffer","xktModel","stats","data","getModelData","deflatedData","deflateData","texturesSize","textureData","byteLength","arrayBuffer","createArrayBuffer","numPropertySets","numMetaObjects","numTextures","numTextureSets","numMeshes","numEntities","numTiles","lenColors","lenUVs","lenIndices","lenEdgeIndices","lenMatrices","lenTextures","xktTexture","numCompressedTextures","metadata","eachTextureDataPortion","eachTextureAttributes","eachTextureSetTextures","Int32Array","matrices","eachGeometryPrimitiveType","eachGeometryPositionsPortion","eachGeometryNormalsPortion","eachGeometryColorsPortion","eachGeometryUVsPortion","eachGeometryIndicesPortion","eachGeometryEdgeIndicesPortion","eachMeshGeometriesPortion","eachMeshMatricesPortion","eachMeshTextureSet","eachMeshMaterialAttributes","eachEntityId","eachEntityMeshesPortion","eachTileAABB","eachTileEntitiesPortion","countPositions","countNormals","countColors","countUVs","countIndices","countEdgeIndices","id","propertySetsIndex","propertySetJSON","name","metaObjectsIndex","metaObjectJSON","parent","external","portionIdx","textureAttrIdx","eachTextureSetTexturesIndex","countEntityMeshesPortion","eachMeshMaterialAttributesIndex","matricesIndex","tileIndex","tileEntities","numTileEntities","entityMeshes","numEntityMeshes","tileAABBIndex","pako","strings","JSON","stringify","replace","chr","charCodeAt","substr","buffer","elements","indexData","dataLen","elementsize","indexBuf","dataArray","offset","element","toArrayBuffer","earcut","holeIndices","minX","minY","maxX","maxY","invSize","hasHoles","outerLen","outerNode","linkedList","next","prev","list","queue","steiner","getLeftmost","compareX","eliminateHole","filterPoints","eliminateHoles","earcutLinked","start","end","clockwise","last","signedArea","insertNode","equals","removeNode","again","area","ear","pass","zOrder","prevZ","nextZ","e","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","stop","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","maxZ","n","intersects","locallyInside","isValidDiagonal","splitPolygon","hole","hx","hy","mx","my","tanMin","Infinity","sectorContainsSector","findHoleBridge","leftmost","ay","bx","by","cx","cy","px","py","intersectsPolygon","inside","middleInside","o1","sign","o2","o3","o4","onSegment","Node","an","bp","sum","deviation","polygonArea","trianglesArea","vertices","holes","dimensions","holeIndex","tempVec2a","tempVec3c","parseCityJSONIntoXKTModel","reject","transform","transformedVertices","transformVertices","sourceFormat","schemaVersion","version","title","created","numTriangles","numVertices","numObjects","rootMetaObjectId","modelMetaObjectId","ctx","msg","nextId","cityObjects","CityObjects","objectId","parseCityObject","parseCityJSON","cityObject","parents","objectMaterial","surfaceMaterials","appearance","materials","geometryMaterial","material","themeIds","keys","theme","surfaceMaterial","parseGeometrySurfacesWithOwnMaterials","parseGeometrySurfacesWithSharedMaterial","createEntity","parseSurfacesWithOwnMaterials","boundaries","shells","solids","surfaces","surface","diffuseColor","transparency","sharedIndices","geometryCfg","newFace","extractLocalIndices","pList","getNormalOfPositions","pv","to2D","unshift","tr","createGeometry","createMesh","parseSurfacesWithSharedMaterial","primitiveCfg","boundary","newBoundary","index","includes","vertexIndex","indexOf","nexti","_p","_n","re","x3","tmp2","y3","utils","String","parseGLTFIntoXKTModel","baseUri","metaModelData","includeTextures","includeNormals","getAttachment","numNormals","numUVs","parse","GLTFLoader","gltfData","metaModelCorrections","getMetaModelCorrections","Error","geometryCreated","parseTexture","parseTextures","_textureSetId","parseTextureSet","_attributes","parseMaterialAttributes","parseMaterials","scene","scenes","nodes","countMeshUsage","parseNode","parseScene","parseDefaultScene","errMsg","eachRootStats","eachChildRoot","metaObjectsMap","metaObjectParent","rootMetaObject","numChildren","countChildren","source","sampler","createTexture","flipY","_textureId","textureSetCfg","normalTexture","normalTextureId","metallicPBR","pbrMetallicRoughness","baseColorTexture","extensions","specularPBR","specularTexture","specularColorTexture","createTextureSet","materialAttributes","diffuseFactor","common","technique","blinn","phong","lambert","diffuse","transparent","baseColorFactor","metallicFactor","roughnessFactor","node","instances","children","childNode","deferredMeshIds","depth","localMatrix","translation","numPrimitives","primitives","primitive","_xktGeometryId","xktGeometryId","mode","attributes","POSITION","NORMAL","COLOR_0","TEXCOORD_0","xktMeshId","meshCfg","nodeName","xktEntityId","rootMetaObjectStats","atob2","atob","Buffer","from","WEBGL_COMPONENT_TYPES","Int16Array","WEBGL_TYPE_SIZES","parseGLTFJSONIntoXKTModel","reuseGeometries","gltf","createXKTGeometryIds","nextMeshId","buffers","all","map","bufferInfo","_arrayBuffer","_buffer","uri","dataUriRegexResult","match","isBase64","decodeURIComponent","ArrayBuffer","view","parseArrayBuffer","parseBuffer","parseBuffers","bufferViewsInfo","bufferViews","parseBufferView","parseBufferViews","freeBuffers","materialsInfo","materialInfo","parseMaterial","_materialData","defaultSceneInfo","sceneInfo","glTFNode","bufferViewInfo","_typedArray","byteOffset","gltfMeshId","meshInfo","numPrimitivesInMesh","primitiveInfo","geometryHash","createPrimitiveGeometryHash","geometryArrays","parsePrimitiveGeometry","childNodeIdx","childGLTFNode","join","accessors","indicesIndex","accessorInfo","parseAccessorTypedArray","positionsIndex","normalsIndex","colorsIndex","bufferView","itemSize","TypedArray","componentType","itemBytes","BYTES_PER_ELEMENT","byteStride","count","parseIFCIntoXKTModel","WebIFC","autoNormals","includeTypes","excludeTypes","wasmPath","ifcAPI","IfcAPI","SetWasmPath","Init","modelID","OpenModel","ifcProjectId","GetLineIDsWithType","IFCPROJECT","GetLine","ifcProject","parseSpatialChildren","parseMetadata","flatMeshes","LoadAllGeometry","size","flatMesh","flatMeshExpressID","expressID","placedGeometries","GlobalId","placedGeometry","geometryExpressID","GetGeometry","vertexData","GetVertexArray","GetVertexData","GetVertexDataSize","GetIndexArray","GetIndexData","GetIndexDataSize","flatTransformation","parseGeometry","IFCRELDEFINESBYPROPERTIES","relID","rel","relatingPropertyDefinition","RelatingPropertyDefinition","relatedObjects","RelatedObjects","props","HasProperties","Name","nominalValue","NominalValue","property","valueType","Description","description","createPropertySet","parsePropertySets","ifcElement","__proto__","constructor","parseRelatedItemsOfType","IFCRELAGGREGATES","IFCRELCONTAINEDINSPATIALSTRUCTURE","relation","related","relatedItems","isArray","forEach","element2","parseLASIntoXKTModel","rotateX","colorDepth","skip","LASLoader","las","parsedData","loaderData","pointsFormatId","positionsValue","intensity","readPositions","readIntensities","readColorsAndIntensities","attributesPosition","attributesColor","attributesIntensity","colorSize","intensities","colorsCompressedSize","parseMetaModelIntoXKTModel","includeTypesMap","excludeTypesMap","newObject","countMetaObjects","parsePCDIntoXKTModel","littleEndian","textData","TextDecoder","decode","il","fromCharCode","escape","decodeText","header","result1","search","result2","exec","headerLen","str","fields","viewpoint","parseFloat","parseInt","l","sizeSum","rowSize","parseHeader","line","rgb","g","sizes","compressedSize","decompressedSize","decompressed","inData","outLength","ctrl","ref","inLength","outData","inPtr","outPtr","decompressLZF","dataview","DataView","getFloat32","getUint8","row","parsePLYIntoXKTModel","PLYLoader","hasColors","colorsValue","parseSTLIntoXKTModel","splitMeshes","smoothNormals","smoothNormalsAngleThreshold","binData","ensureBinary","isBinary","parseBinary","parseASCII","ensureString","reader","getUint32","defaultR","defaultG","defaultB","lastR","lastG","lastB","newMesh","normalX","normalY","normalZ","packedColor","getUint16","vertexstart","addMesh","normalx","normaly","normalz","verticesPerFace","normalsPerFace","text","faceRegex","faceCounter","floatRegex","vertexRegex","RegExp","normalRegex","nextGeometryId","ni","acc","posi","vertexMap","vertexNormals","vertexNormalAccum","precisionPoints","numVerts","ii","jj","faceToVertexNormals","buildBoxGeometry","xSize","ySize","zSize","center","centerX","centerY","centerZ","buildBoxLinesGeometry","buildCylinderGeometry","radiusTop","radiusBottom","radialSegments","heightSegments","h","currentRadius","currentHeight","first","second","startIndex","tu","tv","openEnded","heightHalf","heightLength","radialAngle","PI","radialLength","radiusChange","atan","buildGridGeometry","divisions","step","halfSize","buildPlaneGeometry","xSegments","zSegments","halfWidth","halfHeight","planeX","planeZ","planeX1","planeZ1","segmentWidth","segmentHeight","offset2","buildSphereGeometry","lod","widthSegments","sinTheta","cosTheta","phi","sinPhi","buildTorusGeometry","tube","tubeSegments","arc","letters","buildVectorTextGeometry","penUp","pointsLen","origin","xOrigin","yOrigin","zOrigin","trim","countVerts","iLine","charAt","buf","fs","convert2xkt","sourceData","metaModelSource","output","outputXKTModel","outputXKT","outputStats","sourceSize","xktSize","compressionRatio","conversionTime","_log","startTime","Date","ext","readFileSync","sourceFileSizeBytes","toFixed","metaModelFileData","convertForFormat","convert","gltfBasePath","getBasePath","useGLTFLegacyParser","filePath","parser","converterParams","createDefaultMetaObjects","finalize","xktArrayBuffer","xktContent","targetFileSizeBytes","outputDir","existsSync","mkdirSync","recursive","writeFileSync","lastIndexOf","substring","installFilePolyfills"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/ast/source/XKTModel/writeXKTModelToArrayBuffer.js.json b/docs/ast/source/XKTModel/writeXKTModelToArrayBuffer.js.json index c95a5d1..d32255f 100644 --- a/docs/ast/source/XKTModel/writeXKTModelToArrayBuffer.js.json +++ b/docs/ast/source/XKTModel/writeXKTModelToArrayBuffer.js.json @@ -1,28 +1,28 @@ { "type": "File", "start": 0, - "end": 21579, + "end": 21601, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 420, + "line": 422, "column": 36 } }, "program": { "type": "Program", "start": 0, - "end": 21579, + "end": 21601, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 420, + "line": 422, "column": 36 } }, @@ -1084,14 +1084,14 @@ { "type": "FunctionDeclaration", "start": 701, - "end": 16721, + "end": 16743, "loc": { "start": { "line": 23, "column": 0 }, "end": { - "line": 319, + "line": 321, "column": 1 } }, @@ -1154,14 +1154,14 @@ "body": { "type": "BlockStatement", "start": 740, - "end": 16721, + "end": 16743, "loc": { "start": { "line": 23, "column": 39 }, "end": { - "line": 319, + "line": 321, "column": 1 } }, @@ -22417,9 +22417,9 @@ "trailingComments": [ { "type": "CommentLine", - "value": " Meshes", + "value": " Tiles -> Entities -> Meshes", "start": 14097, - "end": 14106, + "end": 14127, "loc": { "start": { "line": 254, @@ -22427,190 +22427,454 @@ }, "end": { "line": 254, - "column": 13 + "column": 34 } } } ] }, { - "type": "ForStatement", - "start": 14112, - "end": 15248, + "type": "VariableDeclaration", + "start": 14133, + "end": 14153, "loc": { "start": { "line": 256, "column": 4 }, "end": { - "line": 270, - "column": 5 + "line": 256, + "column": 24 } }, - "init": { - "type": "VariableDeclaration", - "start": 14117, - "end": 14190, - "loc": { - "start": { - "line": 256, - "column": 9 + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14137, + "end": 14152, + "loc": { + "start": { + "line": 256, + "column": 8 + }, + "end": { + "line": 256, + "column": 23 + } }, - "end": { - "line": 256, - "column": 82 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 14121, - "end": 14134, + "id": { + "type": "Identifier", + "start": 14137, + "end": 14148, "loc": { "start": { "line": 256, - "column": 13 + "column": 8 }, "end": { "line": 256, - "column": 26 - } + "column": 19 + }, + "identifierName": "entityIndex" }, - "id": { - "type": "Identifier", - "start": 14121, - "end": 14130, - "loc": { - "start": { - "line": 256, - "column": 13 - }, - "end": { - "line": 256, - "column": 22 - }, - "identifierName": "meshIndex" + "name": "entityIndex", + "leadingComments": null + }, + "init": { + "type": "NumericLiteral", + "start": 14151, + "end": 14152, + "loc": { + "start": { + "line": 256, + "column": 22 }, - "name": "meshIndex", - "leadingComments": null + "end": { + "line": 256, + "column": 23 + } }, - "init": { - "type": "NumericLiteral", - "start": 14133, - "end": 14134, - "loc": { - "start": { - "line": 256, - "column": 25 - }, - "end": { - "line": 256, - "column": 26 - } + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "leadingComments": null + } + ], + "kind": "let", + "leadingComments": [ + { + "type": "CommentLine", + "value": " Tiles -> Entities -> Meshes", + "start": 14097, + "end": 14127, + "loc": { + "start": { + "line": 254, + "column": 4 + }, + "end": { + "line": 254, + "column": 34 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 14158, + "end": 14191, + "loc": { + "start": { + "line": 257, + "column": 4 + }, + "end": { + "line": 257, + "column": 37 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14162, + "end": 14190, + "loc": { + "start": { + "line": 257, + "column": 8 + }, + "end": { + "line": 257, + "column": 36 + } + }, + "id": { + "type": "Identifier", + "start": 14162, + "end": 14186, + "loc": { + "start": { + "line": 257, + "column": 8 }, - "extra": { - "rawValue": 0, - "raw": "0" + "end": { + "line": 257, + "column": 32 }, - "value": 0 + "identifierName": "countEntityMeshesPortion" }, - "leadingComments": null + "name": "countEntityMeshesPortion" }, - { - "type": "VariableDeclarator", - "start": 14136, - "end": 14153, + "init": { + "type": "NumericLiteral", + "start": 14189, + "end": 14190, "loc": { "start": { - "line": 256, - "column": 28 + "line": 257, + "column": 35 }, "end": { - "line": 256, - "column": 45 + "line": 257, + "column": 36 } }, - "id": { - "type": "Identifier", - "start": 14136, - "end": 14149, - "loc": { - "start": { - "line": 256, - "column": 28 - }, - "end": { - "line": 256, - "column": 41 - }, - "identifierName": "matricesIndex" + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + ], + "kind": "let" + }, + { + "type": "VariableDeclaration", + "start": 14196, + "end": 14236, + "loc": { + "start": { + "line": 258, + "column": 4 + }, + "end": { + "line": 258, + "column": 44 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14200, + "end": 14235, + "loc": { + "start": { + "line": 258, + "column": 8 + }, + "end": { + "line": 258, + "column": 43 + } + }, + "id": { + "type": "Identifier", + "start": 14200, + "end": 14231, + "loc": { + "start": { + "line": 258, + "column": 8 + }, + "end": { + "line": 258, + "column": 39 }, - "name": "matricesIndex" + "identifierName": "eachMeshMaterialAttributesIndex" }, - "init": { - "type": "NumericLiteral", - "start": 14152, - "end": 14153, - "loc": { - "start": { - "line": 256, - "column": 44 - }, - "end": { - "line": 256, - "column": 45 - } + "name": "eachMeshMaterialAttributesIndex" + }, + "init": { + "type": "NumericLiteral", + "start": 14234, + "end": 14235, + "loc": { + "start": { + "line": 258, + "column": 42 }, - "extra": { - "rawValue": 0, - "raw": "0" + "end": { + "line": 258, + "column": 43 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + ], + "kind": "let" + }, + { + "type": "VariableDeclaration", + "start": 14241, + "end": 14263, + "loc": { + "start": { + "line": 259, + "column": 4 + }, + "end": { + "line": 259, + "column": 26 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14245, + "end": 14262, + "loc": { + "start": { + "line": 259, + "column": 8 + }, + "end": { + "line": 259, + "column": 25 + } + }, + "id": { + "type": "Identifier", + "start": 14245, + "end": 14258, + "loc": { + "start": { + "line": 259, + "column": 8 }, - "value": 0 + "end": { + "line": 259, + "column": 21 + }, + "identifierName": "matricesIndex" + }, + "name": "matricesIndex" + }, + "init": { + "type": "NumericLiteral", + "start": 14261, + "end": 14262, + "loc": { + "start": { + "line": 259, + "column": 24 + }, + "end": { + "line": 259, + "column": 25 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + ], + "kind": "let" + }, + { + "type": "VariableDeclaration", + "start": 14268, + "end": 14285, + "loc": { + "start": { + "line": 260, + "column": 4 + }, + "end": { + "line": 260, + "column": 21 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14272, + "end": 14284, + "loc": { + "start": { + "line": 260, + "column": 8 + }, + "end": { + "line": 260, + "column": 20 } }, + "id": { + "type": "Identifier", + "start": 14272, + "end": 14281, + "loc": { + "start": { + "line": 260, + "column": 8 + }, + "end": { + "line": 260, + "column": 17 + }, + "identifierName": "meshIndex" + }, + "name": "meshIndex" + }, + "init": { + "type": "NumericLiteral", + "start": 14283, + "end": 14284, + "loc": { + "start": { + "line": 260, + "column": 19 + }, + "end": { + "line": 260, + "column": 20 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + ], + "kind": "let" + }, + { + "type": "ForStatement", + "start": 14291, + "end": 16723, + "loc": { + "start": { + "line": 262, + "column": 4 + }, + "end": { + "line": 318, + "column": 5 + } + }, + "init": { + "type": "VariableDeclaration", + "start": 14296, + "end": 14313, + "loc": { + "start": { + "line": 262, + "column": 9 + }, + "end": { + "line": 262, + "column": 26 + } + }, + "declarations": [ { "type": "VariableDeclarator", - "start": 14155, - "end": 14190, + "start": 14300, + "end": 14313, "loc": { "start": { - "line": 256, - "column": 47 + "line": 262, + "column": 13 }, "end": { - "line": 256, - "column": 82 + "line": 262, + "column": 26 } }, "id": { "type": "Identifier", - "start": 14155, - "end": 14186, + "start": 14300, + "end": 14309, "loc": { "start": { - "line": 256, - "column": 47 + "line": 262, + "column": 13 }, "end": { - "line": 256, - "column": 78 + "line": 262, + "column": 22 }, - "identifierName": "eachMeshMaterialAttributesIndex" + "identifierName": "tileIndex" }, - "name": "eachMeshMaterialAttributesIndex" + "name": "tileIndex" }, "init": { "type": "NumericLiteral", - "start": 14189, - "end": 14190, + "start": 14312, + "end": 14313, "loc": { "start": { - "line": 256, - "column": 81 + "line": 262, + "column": 25 }, "end": { - "line": 256, - "column": 82 + "line": 262, + "column": 26 } }, "extra": { @@ -22621,201 +22885,200 @@ } } ], - "kind": "let", - "leadingComments": null + "kind": "let" }, "test": { "type": "BinaryExpression", - "start": 14192, - "end": 14213, + "start": 14315, + "end": 14335, "loc": { "start": { - "line": 256, - "column": 84 + "line": 262, + "column": 28 }, "end": { - "line": 256, - "column": 105 + "line": 262, + "column": 48 } }, "left": { "type": "Identifier", - "start": 14192, - "end": 14201, + "start": 14315, + "end": 14324, "loc": { "start": { - "line": 256, - "column": 84 + "line": 262, + "column": 28 }, "end": { - "line": 256, - "column": 93 + "line": 262, + "column": 37 }, - "identifierName": "meshIndex" + "identifierName": "tileIndex" }, - "name": "meshIndex" + "name": "tileIndex" }, "operator": "<", "right": { "type": "Identifier", - "start": 14204, - "end": 14213, + "start": 14327, + "end": 14335, "loc": { "start": { - "line": 256, - "column": 96 + "line": 262, + "column": 40 }, "end": { - "line": 256, - "column": 105 + "line": 262, + "column": 48 }, - "identifierName": "numMeshes" + "identifierName": "numTiles" }, - "name": "numMeshes" + "name": "numTiles" } }, "update": { "type": "UpdateExpression", - "start": 14215, - "end": 14226, + "start": 14337, + "end": 14348, "loc": { "start": { - "line": 256, - "column": 107 + "line": 262, + "column": 50 }, "end": { - "line": 256, - "column": 118 + "line": 262, + "column": 61 } }, "operator": "++", "prefix": false, "argument": { "type": "Identifier", - "start": 14215, - "end": 14224, + "start": 14337, + "end": 14346, "loc": { "start": { - "line": 256, - "column": 107 + "line": 262, + "column": 50 }, "end": { - "line": 256, - "column": 116 + "line": 262, + "column": 59 }, - "identifierName": "meshIndex" + "identifierName": "tileIndex" }, - "name": "meshIndex" + "name": "tileIndex" } }, "body": { "type": "BlockStatement", - "start": 14228, - "end": 15248, + "start": 14350, + "end": 16723, "loc": { "start": { - "line": 256, - "column": 120 + "line": 262, + "column": 63 }, "end": { - "line": 270, + "line": 318, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 14238, - "end": 14274, + "start": 14361, + "end": 14396, "loc": { "start": { - "line": 257, + "line": 264, "column": 8 }, "end": { - "line": 257, - "column": 44 + "line": 264, + "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14244, - "end": 14273, + "start": 14367, + "end": 14395, "loc": { "start": { - "line": 257, + "line": 264, "column": 14 }, "end": { - "line": 257, - "column": 43 + "line": 264, + "column": 42 } }, "id": { "type": "Identifier", - "start": 14244, - "end": 14248, + "start": 14367, + "end": 14371, "loc": { "start": { - "line": 257, + "line": 264, "column": 14 }, "end": { - "line": 257, + "line": 264, "column": 18 }, - "identifierName": "mesh" + "identifierName": "tile" }, - "name": "mesh" + "name": "tile" }, "init": { "type": "MemberExpression", - "start": 14251, - "end": 14273, + "start": 14374, + "end": 14395, "loc": { "start": { - "line": 257, + "line": 264, "column": 21 }, "end": { - "line": 257, - "column": 43 + "line": 264, + "column": 42 } }, "object": { "type": "Identifier", - "start": 14251, - "end": 14261, + "start": 14374, + "end": 14383, "loc": { "start": { - "line": 257, + "line": 264, "column": 21 }, "end": { - "line": 257, - "column": 31 + "line": 264, + "column": 30 }, - "identifierName": "meshesList" + "identifierName": "tilesList" }, - "name": "meshesList" + "name": "tilesList" }, "property": { "type": "Identifier", - "start": 14263, - "end": 14272, + "start": 14385, + "end": 14394, "loc": { "start": { - "line": 257, - "column": 33 + "line": 264, + "column": 32 }, "end": { - "line": 257, - "column": 42 + "line": 264, + "column": 41 }, - "identifierName": "meshIndex" + "identifierName": "tileIndex" }, - "name": "meshIndex" + "name": "tileIndex" }, "computed": true } @@ -22824,533 +23087,302 @@ "kind": "const" }, { - "type": "IfStatement", - "start": 14283, - "end": 14492, + "type": "VariableDeclaration", + "start": 14405, + "end": 14440, "loc": { "start": { - "line": 258, + "line": 265, "column": 8 }, "end": { - "line": 262, - "column": 9 + "line": 265, + "column": 43 } }, - "test": { - "type": "BinaryExpression", - "start": 14287, - "end": 14317, - "loc": { - "start": { - "line": 258, - "column": 12 - }, - "end": { - "line": 258, - "column": 42 - } - }, - "left": { - "type": "MemberExpression", - "start": 14287, - "end": 14313, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14411, + "end": 14439, "loc": { "start": { - "line": 258, - "column": 12 + "line": 265, + "column": 14 }, "end": { - "line": 258, - "column": 38 + "line": 265, + "column": 42 } }, - "object": { + "id": { + "type": "Identifier", + "start": 14411, + "end": 14423, + "loc": { + "start": { + "line": 265, + "column": 14 + }, + "end": { + "line": 265, + "column": 26 + }, + "identifierName": "tileEntities" + }, + "name": "tileEntities" + }, + "init": { "type": "MemberExpression", - "start": 14287, - "end": 14300, + "start": 14426, + "end": 14439, "loc": { "start": { - "line": 258, - "column": 12 + "line": 265, + "column": 29 }, "end": { - "line": 258, - "column": 25 + "line": 265, + "column": 42 } }, "object": { "type": "Identifier", - "start": 14287, - "end": 14291, + "start": 14426, + "end": 14430, "loc": { "start": { - "line": 258, - "column": 12 + "line": 265, + "column": 29 }, "end": { - "line": 258, - "column": 16 + "line": 265, + "column": 33 }, - "identifierName": "mesh" + "identifierName": "tile" }, - "name": "mesh" + "name": "tile" }, "property": { "type": "Identifier", - "start": 14292, - "end": 14300, + "start": 14431, + "end": 14439, "loc": { "start": { - "line": 258, - "column": 17 + "line": 265, + "column": 34 }, "end": { - "line": 258, - "column": 25 + "line": 265, + "column": 42 }, - "identifierName": "geometry" + "identifierName": "entities" }, - "name": "geometry" + "name": "entities" }, "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 14449, + "end": 14493, + "loc": { + "start": { + "line": 266, + "column": 8 + }, + "end": { + "line": 266, + "column": 52 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14455, + "end": 14492, + "loc": { + "start": { + "line": 266, + "column": 14 + }, + "end": { + "line": 266, + "column": 51 + } }, - "property": { + "id": { "type": "Identifier", - "start": 14301, - "end": 14313, + "start": 14455, + "end": 14470, "loc": { "start": { - "line": 258, - "column": 26 + "line": 266, + "column": 14 }, "end": { - "line": 258, - "column": 38 + "line": 266, + "column": 29 }, - "identifierName": "numInstances" + "identifierName": "numTileEntities" }, - "name": "numInstances" + "name": "numTileEntities" }, - "computed": false + "init": { + "type": "MemberExpression", + "start": 14473, + "end": 14492, + "loc": { + "start": { + "line": 266, + "column": 32 + }, + "end": { + "line": 266, + "column": 51 + } + }, + "object": { + "type": "Identifier", + "start": 14473, + "end": 14485, + "loc": { + "start": { + "line": 266, + "column": 32 + }, + "end": { + "line": 266, + "column": 44 + }, + "identifierName": "tileEntities" + }, + "name": "tileEntities" + }, + "property": { + "type": "Identifier", + "start": 14486, + "end": 14492, + "loc": { + "start": { + "line": 266, + "column": 45 + }, + "end": { + "line": 266, + "column": 51 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "IfStatement", + "start": 14503, + "end": 14563, + "loc": { + "start": { + "line": 268, + "column": 8 }, - "operator": ">", + "end": { + "line": 270, + "column": 9 + } + }, + "test": { + "type": "BinaryExpression", + "start": 14507, + "end": 14528, + "loc": { + "start": { + "line": 268, + "column": 12 + }, + "end": { + "line": 268, + "column": 33 + } + }, + "left": { + "type": "Identifier", + "start": 14507, + "end": 14522, + "loc": { + "start": { + "line": 268, + "column": 12 + }, + "end": { + "line": 268, + "column": 27 + }, + "identifierName": "numTileEntities" + }, + "name": "numTileEntities" + }, + "operator": "===", "right": { "type": "NumericLiteral", - "start": 14316, - "end": 14317, + "start": 14527, + "end": 14528, "loc": { "start": { - "line": 258, - "column": 41 + "line": 268, + "column": 32 }, "end": { - "line": 258, - "column": 42 + "line": 268, + "column": 33 } }, "extra": { - "rawValue": 1, - "raw": "1" + "rawValue": 0, + "raw": "0" }, - "value": 1 + "value": 0 } }, "consequent": { "type": "BlockStatement", - "start": 14319, - "end": 14492, + "start": 14530, + "end": 14563, "loc": { "start": { - "line": 258, - "column": 44 + "line": 268, + "column": 35 }, "end": { - "line": 262, + "line": 270, "column": 9 } }, "body": [ { - "type": "ExpressionStatement", - "start": 14333, - "end": 14379, - "loc": { - "start": { - "line": 259, - "column": 12 - }, - "end": { - "line": 259, - "column": 58 - } - }, - "expression": { - "type": "CallExpression", - "start": 14333, - "end": 14378, - "loc": { - "start": { - "line": 259, - "column": 12 - }, - "end": { - "line": 259, - "column": 57 - } - }, - "callee": { - "type": "MemberExpression", - "start": 14333, - "end": 14350, - "loc": { - "start": { - "line": 259, - "column": 12 - }, - "end": { - "line": 259, - "column": 29 - } - }, - "object": { - "type": "MemberExpression", - "start": 14333, - "end": 14346, - "loc": { - "start": { - "line": 259, - "column": 12 - }, - "end": { - "line": 259, - "column": 25 - } - }, - "object": { - "type": "Identifier", - "start": 14333, - "end": 14337, - "loc": { - "start": { - "line": 259, - "column": 12 - }, - "end": { - "line": 259, - "column": 16 - }, - "identifierName": "data" - }, - "name": "data" - }, - "property": { - "type": "Identifier", - "start": 14338, - "end": 14346, - "loc": { - "start": { - "line": 259, - "column": 17 - }, - "end": { - "line": 259, - "column": 25 - }, - "identifierName": "matrices" - }, - "name": "matrices" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 14347, - "end": 14350, - "loc": { - "start": { - "line": 259, - "column": 26 - }, - "end": { - "line": 259, - "column": 29 - }, - "identifierName": "set" - }, - "name": "set" - }, - "computed": false - }, - "arguments": [ - { - "type": "MemberExpression", - "start": 14351, - "end": 14362, - "loc": { - "start": { - "line": 259, - "column": 30 - }, - "end": { - "line": 259, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 14351, - "end": 14355, - "loc": { - "start": { - "line": 259, - "column": 30 - }, - "end": { - "line": 259, - "column": 34 - }, - "identifierName": "mesh" - }, - "name": "mesh" - }, - "property": { - "type": "Identifier", - "start": 14356, - "end": 14362, - "loc": { - "start": { - "line": 259, - "column": 35 - }, - "end": { - "line": 259, - "column": 41 - }, - "identifierName": "matrix" - }, - "name": "matrix" - }, - "computed": false - }, - { - "type": "Identifier", - "start": 14364, - "end": 14377, - "loc": { - "start": { - "line": 259, - "column": 43 - }, - "end": { - "line": 259, - "column": 56 - }, - "identifierName": "matricesIndex" - }, - "name": "matricesIndex" - } - ] - } - }, - { - "type": "ExpressionStatement", - "start": 14392, - "end": 14449, - "loc": { - "start": { - "line": 260, - "column": 12 - }, - "end": { - "line": 260, - "column": 69 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 14392, - "end": 14448, - "loc": { - "start": { - "line": 260, - "column": 12 - }, - "end": { - "line": 260, - "column": 68 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 14392, - "end": 14432, - "loc": { - "start": { - "line": 260, - "column": 12 - }, - "end": { - "line": 260, - "column": 52 - } - }, - "object": { - "type": "MemberExpression", - "start": 14392, - "end": 14420, - "loc": { - "start": { - "line": 260, - "column": 12 - }, - "end": { - "line": 260, - "column": 40 - } - }, - "object": { - "type": "Identifier", - "start": 14392, - "end": 14396, - "loc": { - "start": { - "line": 260, - "column": 12 - }, - "end": { - "line": 260, - "column": 16 - }, - "identifierName": "data" - }, - "name": "data" - }, - "property": { - "type": "Identifier", - "start": 14397, - "end": 14420, - "loc": { - "start": { - "line": 260, - "column": 17 - }, - "end": { - "line": 260, - "column": 40 - }, - "identifierName": "eachMeshMatricesPortion" - }, - "name": "eachMeshMatricesPortion" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 14422, - "end": 14431, - "loc": { - "start": { - "line": 260, - "column": 42 - }, - "end": { - "line": 260, - "column": 51 - }, - "identifierName": "meshIndex" - }, - "name": "meshIndex" - }, - "computed": true - }, - "right": { - "type": "Identifier", - "start": 14435, - "end": 14448, - "loc": { - "start": { - "line": 260, - "column": 55 - }, - "end": { - "line": 260, - "column": 68 - }, - "identifierName": "matricesIndex" - }, - "name": "matricesIndex" - } - } - }, - { - "type": "ExpressionStatement", - "start": 14462, - "end": 14482, + "type": "ContinueStatement", + "start": 14544, + "end": 14553, "loc": { "start": { - "line": 261, + "line": 269, "column": 12 }, "end": { - "line": 261, - "column": 32 + "line": 269, + "column": 21 } }, - "expression": { - "type": "AssignmentExpression", - "start": 14462, - "end": 14481, - "loc": { - "start": { - "line": 261, - "column": 12 - }, - "end": { - "line": 261, - "column": 31 - } - }, - "operator": "+=", - "left": { - "type": "Identifier", - "start": 14462, - "end": 14475, - "loc": { - "start": { - "line": 261, - "column": 12 - }, - "end": { - "line": 261, - "column": 25 - }, - "identifierName": "matricesIndex" - }, - "name": "matricesIndex" - }, - "right": { - "type": "NumericLiteral", - "start": 14479, - "end": 14481, - "loc": { - "start": { - "line": 261, - "column": 29 - }, - "end": { - "line": 261, - "column": 31 - } - }, - "extra": { - "rawValue": 16, - "raw": "16" - }, - "value": 16 - } - } + "label": null } ], "directives": [] @@ -23359,72 +23391,72 @@ }, { "type": "ExpressionStatement", - "start": 14501, - "end": 14593, + "start": 14573, + "end": 14627, "loc": { "start": { - "line": 263, + "line": 272, "column": 8 }, "end": { - "line": 263, - "column": 100 + "line": 272, + "column": 62 } }, "expression": { "type": "AssignmentExpression", - "start": 14501, - "end": 14592, + "start": 14573, + "end": 14626, "loc": { "start": { - "line": 263, + "line": 272, "column": 8 }, "end": { - "line": 263, - "column": 99 + "line": 272, + "column": 61 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14501, - "end": 14535, + "start": 14573, + "end": 14612, "loc": { "start": { - "line": 263, + "line": 272, "column": 8 }, "end": { - "line": 263, - "column": 42 + "line": 272, + "column": 47 } }, "object": { "type": "MemberExpression", - "start": 14501, - "end": 14524, + "start": 14573, + "end": 14601, "loc": { "start": { - "line": 263, + "line": 272, "column": 8 }, "end": { - "line": 263, - "column": 31 + "line": 272, + "column": 36 } }, "object": { "type": "Identifier", - "start": 14501, - "end": 14505, + "start": 14573, + "end": 14577, "loc": { "start": { - "line": 263, + "line": 272, "column": 8 }, "end": { - "line": 263, + "line": 272, "column": 12 }, "identifierName": "data" @@ -23433,451 +23465,233 @@ }, "property": { "type": "Identifier", - "start": 14506, - "end": 14524, + "start": 14578, + "end": 14601, "loc": { "start": { - "line": 263, + "line": 272, "column": 13 }, "end": { - "line": 263, - "column": 31 + "line": 272, + "column": 36 }, - "identifierName": "eachMeshTextureSet" + "identifierName": "eachTileEntitiesPortion" }, - "name": "eachMeshTextureSet" + "name": "eachTileEntitiesPortion" }, "computed": false }, "property": { "type": "Identifier", - "start": 14525, - "end": 14534, + "start": 14602, + "end": 14611, "loc": { "start": { - "line": 263, - "column": 32 + "line": 272, + "column": 37 }, "end": { - "line": 263, - "column": 41 + "line": 272, + "column": 46 }, - "identifierName": "meshIndex" + "identifierName": "tileIndex" }, - "name": "meshIndex" + "name": "tileIndex" }, "computed": true }, "right": { - "type": "ConditionalExpression", - "start": 14538, - "end": 14592, + "type": "Identifier", + "start": 14615, + "end": 14626, "loc": { "start": { - "line": 263, - "column": 45 + "line": 272, + "column": 50 + }, + "end": { + "line": 272, + "column": 61 + }, + "identifierName": "entityIndex" + }, + "name": "entityIndex" + } + } + }, + { + "type": "VariableDeclaration", + "start": 14637, + "end": 14664, + "loc": { + "start": { + "line": 274, + "column": 8 + }, + "end": { + "line": 274, + "column": 35 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14643, + "end": 14663, + "loc": { + "start": { + "line": 274, + "column": 14 }, "end": { - "line": 263, - "column": 99 + "line": 274, + "column": 34 } }, - "test": { + "id": { + "type": "Identifier", + "start": 14643, + "end": 14651, + "loc": { + "start": { + "line": 274, + "column": 14 + }, + "end": { + "line": 274, + "column": 22 + }, + "identifierName": "tileAABB" + }, + "name": "tileAABB" + }, + "init": { "type": "MemberExpression", - "start": 14538, - "end": 14553, + "start": 14654, + "end": 14663, "loc": { "start": { - "line": 263, - "column": 45 + "line": 274, + "column": 25 }, "end": { - "line": 263, - "column": 60 + "line": 274, + "column": 34 } }, "object": { "type": "Identifier", - "start": 14538, - "end": 14542, + "start": 14654, + "end": 14658, "loc": { "start": { - "line": 263, - "column": 45 + "line": 274, + "column": 25 }, "end": { - "line": 263, - "column": 49 + "line": 274, + "column": 29 }, - "identifierName": "mesh" + "identifierName": "tile" }, - "name": "mesh" + "name": "tile" }, "property": { "type": "Identifier", - "start": 14543, - "end": 14553, + "start": 14659, + "end": 14663, "loc": { "start": { - "line": 263, - "column": 50 + "line": 274, + "column": 30 }, "end": { - "line": 263, - "column": 60 + "line": 274, + "column": 34 }, - "identifierName": "textureSet" + "identifierName": "aabb" }, - "name": "textureSet" + "name": "aabb" }, "computed": false - }, - "consequent": { - "type": "MemberExpression", - "start": 14556, - "end": 14587, - "loc": { - "start": { - "line": 263, - "column": 63 - }, - "end": { - "line": 263, - "column": 94 - } - }, - "object": { - "type": "MemberExpression", - "start": 14556, - "end": 14571, - "loc": { - "start": { - "line": 263, - "column": 63 - }, - "end": { - "line": 263, - "column": 78 - } - }, - "object": { - "type": "Identifier", - "start": 14556, - "end": 14560, - "loc": { - "start": { - "line": 263, - "column": 63 - }, - "end": { - "line": 263, - "column": 67 - }, - "identifierName": "mesh" - }, - "name": "mesh" - }, - "property": { - "type": "Identifier", - "start": 14561, - "end": 14571, - "loc": { - "start": { - "line": 263, - "column": 68 - }, - "end": { - "line": 263, - "column": 78 - }, - "identifierName": "textureSet" - }, - "name": "textureSet" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 14572, - "end": 14587, - "loc": { - "start": { - "line": 263, - "column": 79 - }, - "end": { - "line": 263, - "column": 94 - }, - "identifierName": "textureSetIndex" - }, - "name": "textureSetIndex" - }, - "computed": false - }, - "alternate": { - "type": "UnaryExpression", - "start": 14590, - "end": 14592, - "loc": { - "start": { - "line": 263, - "column": 97 - }, - "end": { - "line": 263, - "column": 99 - } - }, - "operator": "-", - "prefix": true, - "argument": { - "type": "NumericLiteral", - "start": 14591, - "end": 14592, - "loc": { - "start": { - "line": 263, - "column": 98 - }, - "end": { - "line": 263, - "column": 99 - } - }, - "extra": { - "rawValue": 1, - "raw": "1" - }, - "value": 1 - }, - "extra": { - "parenthesizedArgument": false - } } } - } + ], + "kind": "const" }, { - "type": "ExpressionStatement", - "start": 14602, - "end": 14693, + "type": "ForStatement", + "start": 14674, + "end": 16614, "loc": { "start": { - "line": 264, + "line": 276, "column": 8 }, "end": { - "line": 264, - "column": 99 + "line": 313, + "column": 9 } }, - "expression": { - "type": "AssignmentExpression", - "start": 14602, - "end": 14692, + "init": { + "type": "VariableDeclaration", + "start": 14679, + "end": 14688, "loc": { "start": { - "line": 264, - "column": 8 + "line": 276, + "column": 13 }, "end": { - "line": 264, - "column": 98 + "line": 276, + "column": 22 } }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 14602, - "end": 14668, - "loc": { - "start": { - "line": 264, - "column": 8 - }, - "end": { - "line": 264, - "column": 74 - } - }, - "object": { - "type": "MemberExpression", - "start": 14602, - "end": 14633, - "loc": { - "start": { - "line": 264, - "column": 8 - }, - "end": { - "line": 264, - "column": 39 - } - }, - "object": { - "type": "Identifier", - "start": 14602, - "end": 14606, - "loc": { - "start": { - "line": 264, - "column": 8 - }, - "end": { - "line": 264, - "column": 12 - }, - "identifierName": "data" - }, - "name": "data" - }, - "property": { - "type": "Identifier", - "start": 14607, - "end": 14633, - "loc": { - "start": { - "line": 264, - "column": 13 - }, - "end": { - "line": 264, - "column": 39 - }, - "identifierName": "eachMeshMaterialAttributes" - }, - "name": "eachMeshMaterialAttributes" - }, - "computed": false - }, - "property": { - "type": "UpdateExpression", - "start": 14634, - "end": 14667, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14683, + "end": 14688, "loc": { "start": { - "line": 264, - "column": 40 + "line": 276, + "column": 17 }, "end": { - "line": 264, - "column": 73 + "line": 276, + "column": 22 } }, - "operator": "++", - "prefix": false, - "argument": { + "id": { "type": "Identifier", - "start": 14634, - "end": 14665, - "loc": { - "start": { - "line": 264, - "column": 40 - }, - "end": { - "line": 264, - "column": 71 - }, - "identifierName": "eachMeshMaterialAttributesIndex" - }, - "name": "eachMeshMaterialAttributesIndex" - } - }, - "computed": true - }, - "right": { - "type": "BinaryExpression", - "start": 14672, - "end": 14691, - "loc": { - "start": { - "line": 264, - "column": 78 - }, - "end": { - "line": 264, - "column": 97 - } - }, - "left": { - "type": "MemberExpression", - "start": 14672, - "end": 14685, - "loc": { - "start": { - "line": 264, - "column": 78 - }, - "end": { - "line": 264, - "column": 91 - } - }, - "object": { - "type": "MemberExpression", - "start": 14672, - "end": 14682, + "start": 14683, + "end": 14684, "loc": { "start": { - "line": 264, - "column": 78 + "line": 276, + "column": 17 }, "end": { - "line": 264, - "column": 88 - } - }, - "object": { - "type": "Identifier", - "start": 14672, - "end": 14676, - "loc": { - "start": { - "line": 264, - "column": 78 - }, - "end": { - "line": 264, - "column": 82 - }, - "identifierName": "mesh" - }, - "name": "mesh" - }, - "property": { - "type": "Identifier", - "start": 14677, - "end": 14682, - "loc": { - "start": { - "line": 264, - "column": 83 - }, - "end": { - "line": 264, - "column": 88 - }, - "identifierName": "color" + "line": 276, + "column": 18 }, - "name": "color" + "identifierName": "j" }, - "computed": false + "name": "j" }, - "property": { + "init": { "type": "NumericLiteral", - "start": 14683, - "end": 14684, + "start": 14687, + "end": 14688, "loc": { "start": { - "line": 264, - "column": 89 + "line": 276, + "column": 21 }, "end": { - "line": 264, - "column": 90 + "line": 276, + "column": 22 } }, "extra": { @@ -23885,3208 +23699,2873 @@ "raw": "0" }, "value": 0 - }, - "computed": true - }, - "operator": "*", - "right": { - "type": "NumericLiteral", - "start": 14688, - "end": 14691, - "loc": { - "start": { - "line": 264, - "column": 94 - }, - "end": { - "line": 264, - "column": 97 - } - }, - "extra": { - "rawValue": 255, - "raw": "255" - }, - "value": 255 - }, - "extra": { - "parenthesized": true, - "parenStart": 14671 - } - } - }, - "trailingComments": [ - { - "type": "CommentLine", - "value": " Color RGB", - "start": 14694, - "end": 14706, - "loc": { - "start": { - "line": 264, - "column": 100 - }, - "end": { - "line": 264, - "column": 112 } } - } - ] - }, - { - "type": "ExpressionStatement", - "start": 14715, - "end": 14806, - "loc": { - "start": { - "line": 265, - "column": 8 - }, - "end": { - "line": 265, - "column": 99 - } + ], + "kind": "let" }, - "expression": { - "type": "AssignmentExpression", - "start": 14715, - "end": 14805, + "test": { + "type": "BinaryExpression", + "start": 14690, + "end": 14709, "loc": { "start": { - "line": 265, - "column": 8 + "line": 276, + "column": 24 }, "end": { - "line": 265, - "column": 98 + "line": 276, + "column": 43 } }, - "operator": "=", "left": { - "type": "MemberExpression", - "start": 14715, - "end": 14781, + "type": "Identifier", + "start": 14690, + "end": 14691, "loc": { "start": { - "line": 265, - "column": 8 + "line": 276, + "column": 24 }, "end": { - "line": 265, - "column": 74 - } - }, - "object": { - "type": "MemberExpression", - "start": 14715, - "end": 14746, - "loc": { - "start": { - "line": 265, - "column": 8 - }, - "end": { - "line": 265, - "column": 39 - } + "line": 276, + "column": 25 }, - "object": { - "type": "Identifier", - "start": 14715, - "end": 14719, - "loc": { - "start": { - "line": 265, - "column": 8 - }, - "end": { - "line": 265, - "column": 12 - }, - "identifierName": "data" - }, - "name": "data", - "leadingComments": null + "identifierName": "j" + }, + "name": "j" + }, + "operator": "<", + "right": { + "type": "Identifier", + "start": 14694, + "end": 14709, + "loc": { + "start": { + "line": 276, + "column": 28 }, - "property": { - "type": "Identifier", - "start": 14720, - "end": 14746, - "loc": { - "start": { - "line": 265, - "column": 13 - }, - "end": { - "line": 265, - "column": 39 - }, - "identifierName": "eachMeshMaterialAttributes" - }, - "name": "eachMeshMaterialAttributes" + "end": { + "line": 276, + "column": 43 }, - "computed": false, - "leadingComments": null + "identifierName": "numTileEntities" }, - "property": { - "type": "UpdateExpression", - "start": 14747, - "end": 14780, - "loc": { - "start": { - "line": 265, - "column": 40 - }, - "end": { - "line": 265, - "column": 73 - } - }, - "operator": "++", - "prefix": false, - "argument": { - "type": "Identifier", - "start": 14747, - "end": 14778, - "loc": { - "start": { - "line": 265, - "column": 40 - }, - "end": { - "line": 265, - "column": 71 - }, - "identifierName": "eachMeshMaterialAttributesIndex" - }, - "name": "eachMeshMaterialAttributesIndex" - } + "name": "numTileEntities" + } + }, + "update": { + "type": "UpdateExpression", + "start": 14711, + "end": 14714, + "loc": { + "start": { + "line": 276, + "column": 45 }, - "computed": true, - "leadingComments": null + "end": { + "line": 276, + "column": 48 + } }, - "right": { - "type": "BinaryExpression", - "start": 14785, - "end": 14804, + "operator": "++", + "prefix": false, + "argument": { + "type": "Identifier", + "start": 14711, + "end": 14712, "loc": { "start": { - "line": 265, - "column": 78 + "line": 276, + "column": 45 }, "end": { - "line": 265, - "column": 97 - } + "line": 276, + "column": 46 + }, + "identifierName": "j" }, - "left": { - "type": "MemberExpression", - "start": 14785, - "end": 14798, + "name": "j" + } + }, + "body": { + "type": "BlockStatement", + "start": 14716, + "end": 16614, + "loc": { + "start": { + "line": 276, + "column": 50 + }, + "end": { + "line": 313, + "column": 9 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 14731, + "end": 14762, "loc": { "start": { - "line": 265, - "column": 78 + "line": 278, + "column": 12 }, "end": { - "line": 265, - "column": 91 + "line": 278, + "column": 43 } }, - "object": { - "type": "MemberExpression", - "start": 14785, - "end": 14795, - "loc": { - "start": { - "line": 265, - "column": 78 - }, - "end": { - "line": 265, - "column": 88 - } - }, - "object": { - "type": "Identifier", - "start": 14785, - "end": 14789, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14737, + "end": 14761, "loc": { "start": { - "line": 265, - "column": 78 + "line": 278, + "column": 18 }, "end": { - "line": 265, - "column": 82 - }, - "identifierName": "mesh" + "line": 278, + "column": 42 + } }, - "name": "mesh" - }, - "property": { - "type": "Identifier", - "start": 14790, - "end": 14795, - "loc": { - "start": { - "line": 265, - "column": 83 - }, - "end": { - "line": 265, - "column": 88 + "id": { + "type": "Identifier", + "start": 14737, + "end": 14743, + "loc": { + "start": { + "line": 278, + "column": 18 + }, + "end": { + "line": 278, + "column": 24 + }, + "identifierName": "entity" }, - "identifierName": "color" - }, - "name": "color" - }, - "computed": false - }, - "property": { - "type": "NumericLiteral", - "start": 14796, - "end": 14797, - "loc": { - "start": { - "line": 265, - "column": 89 + "name": "entity" }, - "end": { - "line": 265, - "column": 90 + "init": { + "type": "MemberExpression", + "start": 14746, + "end": 14761, + "loc": { + "start": { + "line": 278, + "column": 27 + }, + "end": { + "line": 278, + "column": 42 + } + }, + "object": { + "type": "Identifier", + "start": 14746, + "end": 14758, + "loc": { + "start": { + "line": 278, + "column": 27 + }, + "end": { + "line": 278, + "column": 39 + }, + "identifierName": "tileEntities" + }, + "name": "tileEntities" + }, + "property": { + "type": "Identifier", + "start": 14759, + "end": 14760, + "loc": { + "start": { + "line": 278, + "column": 40 + }, + "end": { + "line": 278, + "column": 41 + }, + "identifierName": "j" + }, + "name": "j" + }, + "computed": true } - }, - "extra": { - "rawValue": 1, - "raw": "1" - }, - "value": 1 - }, - "computed": true + } + ], + "kind": "const" }, - "operator": "*", - "right": { - "type": "NumericLiteral", - "start": 14801, - "end": 14804, + { + "type": "VariableDeclaration", + "start": 14775, + "end": 14810, "loc": { "start": { - "line": 265, - "column": 94 + "line": 279, + "column": 12 }, "end": { - "line": 265, - "column": 97 + "line": 279, + "column": 47 } }, - "extra": { - "rawValue": 255, - "raw": "255" - }, - "value": 255 - }, - "extra": { - "parenthesized": true, - "parenStart": 14784 - } - }, - "leadingComments": null - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " Color RGB", - "start": 14694, - "end": 14706, - "loc": { - "start": { - "line": 264, - "column": 100 - }, - "end": { - "line": 264, - "column": 112 - } - } - } - ] - }, - { - "type": "ExpressionStatement", - "start": 14815, - "end": 14906, - "loc": { - "start": { - "line": 266, - "column": 8 - }, - "end": { - "line": 266, - "column": 99 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 14815, - "end": 14905, - "loc": { - "start": { - "line": 266, - "column": 8 - }, - "end": { - "line": 266, - "column": 98 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 14815, - "end": 14881, - "loc": { - "start": { - "line": 266, - "column": 8 - }, - "end": { - "line": 266, - "column": 74 - } + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14781, + "end": 14809, + "loc": { + "start": { + "line": 279, + "column": 18 + }, + "end": { + "line": 279, + "column": 46 + } + }, + "id": { + "type": "Identifier", + "start": 14781, + "end": 14793, + "loc": { + "start": { + "line": 279, + "column": 18 + }, + "end": { + "line": 279, + "column": 30 + }, + "identifierName": "entityMeshes" + }, + "name": "entityMeshes" + }, + "init": { + "type": "MemberExpression", + "start": 14796, + "end": 14809, + "loc": { + "start": { + "line": 279, + "column": 33 + }, + "end": { + "line": 279, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 14796, + "end": 14802, + "loc": { + "start": { + "line": 279, + "column": 33 + }, + "end": { + "line": 279, + "column": 39 + }, + "identifierName": "entity" + }, + "name": "entity" + }, + "property": { + "type": "Identifier", + "start": 14803, + "end": 14809, + "loc": { + "start": { + "line": 279, + "column": 40 + }, + "end": { + "line": 279, + "column": 46 + }, + "identifierName": "meshes" + }, + "name": "meshes" + }, + "computed": false + } + } + ], + "kind": "const" }, - "object": { - "type": "MemberExpression", - "start": 14815, - "end": 14846, + { + "type": "VariableDeclaration", + "start": 14823, + "end": 14867, "loc": { "start": { - "line": 266, - "column": 8 + "line": 280, + "column": 12 }, "end": { - "line": 266, - "column": 39 + "line": 280, + "column": 56 } }, - "object": { - "type": "Identifier", - "start": 14815, - "end": 14819, - "loc": { - "start": { - "line": 266, - "column": 8 - }, - "end": { - "line": 266, - "column": 12 - }, - "identifierName": "data" - }, - "name": "data" - }, - "property": { - "type": "Identifier", - "start": 14820, - "end": 14846, - "loc": { - "start": { - "line": 266, - "column": 13 + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14829, + "end": 14866, + "loc": { + "start": { + "line": 280, + "column": 18 + }, + "end": { + "line": 280, + "column": 55 + } }, - "end": { - "line": 266, - "column": 39 + "id": { + "type": "Identifier", + "start": 14829, + "end": 14844, + "loc": { + "start": { + "line": 280, + "column": 18 + }, + "end": { + "line": 280, + "column": 33 + }, + "identifierName": "numEntityMeshes" + }, + "name": "numEntityMeshes" }, - "identifierName": "eachMeshMaterialAttributes" - }, - "name": "eachMeshMaterialAttributes" - }, - "computed": false + "init": { + "type": "MemberExpression", + "start": 14847, + "end": 14866, + "loc": { + "start": { + "line": 280, + "column": 36 + }, + "end": { + "line": 280, + "column": 55 + } + }, + "object": { + "type": "Identifier", + "start": 14847, + "end": 14859, + "loc": { + "start": { + "line": 280, + "column": 36 + }, + "end": { + "line": 280, + "column": 48 + }, + "identifierName": "entityMeshes" + }, + "name": "entityMeshes" + }, + "property": { + "type": "Identifier", + "start": 14860, + "end": 14866, + "loc": { + "start": { + "line": 280, + "column": 49 + }, + "end": { + "line": 280, + "column": 55 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + } + ], + "kind": "const" }, - "property": { - "type": "UpdateExpression", - "start": 14847, - "end": 14880, + { + "type": "ForStatement", + "start": 14881, + "end": 16288, "loc": { "start": { - "line": 266, - "column": 40 + "line": 282, + "column": 12 }, "end": { - "line": 266, - "column": 73 + "line": 306, + "column": 13 } }, - "operator": "++", - "prefix": false, - "argument": { - "type": "Identifier", - "start": 14847, - "end": 14878, + "init": { + "type": "VariableDeclaration", + "start": 14886, + "end": 14895, "loc": { "start": { - "line": 266, - "column": 40 + "line": 282, + "column": 17 }, "end": { - "line": 266, - "column": 71 - }, - "identifierName": "eachMeshMaterialAttributesIndex" - }, - "name": "eachMeshMaterialAttributesIndex" - } - }, - "computed": true - }, - "right": { - "type": "BinaryExpression", - "start": 14885, - "end": 14904, - "loc": { - "start": { - "line": 266, - "column": 78 - }, - "end": { - "line": 266, - "column": 97 - } - }, - "left": { - "type": "MemberExpression", - "start": 14885, - "end": 14898, - "loc": { - "start": { - "line": 266, - "column": 78 + "line": 282, + "column": 26 + } }, - "end": { - "line": 266, - "column": 91 - } + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14890, + "end": 14895, + "loc": { + "start": { + "line": 282, + "column": 21 + }, + "end": { + "line": 282, + "column": 26 + } + }, + "id": { + "type": "Identifier", + "start": 14890, + "end": 14891, + "loc": { + "start": { + "line": 282, + "column": 21 + }, + "end": { + "line": 282, + "column": 22 + }, + "identifierName": "k" + }, + "name": "k" + }, + "init": { + "type": "NumericLiteral", + "start": 14894, + "end": 14895, + "loc": { + "start": { + "line": 282, + "column": 25 + }, + "end": { + "line": 282, + "column": 26 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + ], + "kind": "let" }, - "object": { - "type": "MemberExpression", - "start": 14885, - "end": 14895, + "test": { + "type": "BinaryExpression", + "start": 14897, + "end": 14916, "loc": { "start": { - "line": 266, - "column": 78 + "line": 282, + "column": 28 }, "end": { - "line": 266, - "column": 88 + "line": 282, + "column": 47 } }, - "object": { + "left": { "type": "Identifier", - "start": 14885, - "end": 14889, + "start": 14897, + "end": 14898, "loc": { "start": { - "line": 266, - "column": 78 + "line": 282, + "column": 28 }, "end": { - "line": 266, - "column": 82 + "line": 282, + "column": 29 }, - "identifierName": "mesh" + "identifierName": "k" }, - "name": "mesh" + "name": "k" }, - "property": { + "operator": "<", + "right": { "type": "Identifier", - "start": 14890, - "end": 14895, + "start": 14901, + "end": 14916, "loc": { "start": { - "line": 266, - "column": 83 + "line": 282, + "column": 32 }, "end": { - "line": 266, - "column": 88 + "line": 282, + "column": 47 }, - "identifierName": "color" + "identifierName": "numEntityMeshes" }, - "name": "color" - }, - "computed": false + "name": "numEntityMeshes" + } }, - "property": { - "type": "NumericLiteral", - "start": 14896, - "end": 14897, + "update": { + "type": "UpdateExpression", + "start": 14918, + "end": 14921, "loc": { "start": { - "line": 266, - "column": 89 + "line": 282, + "column": 49 }, "end": { - "line": 266, - "column": 90 + "line": 282, + "column": 52 } }, - "extra": { - "rawValue": 2, - "raw": "2" - }, - "value": 2 - }, - "computed": true - }, - "operator": "*", - "right": { - "type": "NumericLiteral", - "start": 14901, - "end": 14904, - "loc": { - "start": { - "line": 266, - "column": 94 - }, - "end": { - "line": 266, - "column": 97 - } - }, - "extra": { - "rawValue": 255, - "raw": "255" - }, - "value": 255 - }, - "extra": { - "parenthesized": true, - "parenStart": 14884 - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 14915, - "end": 15005, - "loc": { - "start": { - "line": 267, - "column": 8 - }, - "end": { - "line": 267, - "column": 98 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 14915, - "end": 15004, - "loc": { - "start": { - "line": 267, - "column": 8 - }, - "end": { - "line": 267, - "column": 97 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 14915, - "end": 14981, - "loc": { - "start": { - "line": 267, - "column": 8 - }, - "end": { - "line": 267, - "column": 74 - } - }, - "object": { - "type": "MemberExpression", - "start": 14915, - "end": 14946, - "loc": { - "start": { - "line": 267, - "column": 8 - }, - "end": { - "line": 267, - "column": 39 + "operator": "++", + "prefix": false, + "argument": { + "type": "Identifier", + "start": 14918, + "end": 14919, + "loc": { + "start": { + "line": 282, + "column": 49 + }, + "end": { + "line": 282, + "column": 50 + }, + "identifierName": "k" + }, + "name": "k" } }, - "object": { - "type": "Identifier", - "start": 14915, - "end": 14919, + "body": { + "type": "BlockStatement", + "start": 14923, + "end": 16288, "loc": { "start": { - "line": 267, - "column": 8 + "line": 282, + "column": 54 }, "end": { - "line": 267, - "column": 12 - }, - "identifierName": "data" + "line": 306, + "column": 13 + } }, - "name": "data" - }, - "property": { - "type": "Identifier", - "start": 14920, - "end": 14946, - "loc": { - "start": { - "line": 267, - "column": 13 - }, - "end": { - "line": 267, - "column": 39 - }, - "identifierName": "eachMeshMaterialAttributes" - }, - "name": "eachMeshMaterialAttributes" - }, - "computed": false - }, - "property": { - "type": "UpdateExpression", - "start": 14947, - "end": 14980, - "loc": { - "start": { - "line": 267, - "column": 40 - }, - "end": { - "line": 267, - "column": 73 - } - }, - "operator": "++", - "prefix": false, - "argument": { - "type": "Identifier", - "start": 14947, - "end": 14978, - "loc": { - "start": { - "line": 267, - "column": 40 - }, - "end": { - "line": 267, - "column": 71 - }, - "identifierName": "eachMeshMaterialAttributesIndex" - }, - "name": "eachMeshMaterialAttributesIndex" - } - }, - "computed": true - }, - "right": { - "type": "BinaryExpression", - "start": 14985, - "end": 15003, - "loc": { - "start": { - "line": 267, - "column": 78 - }, - "end": { - "line": 267, - "column": 96 - } - }, - "left": { - "type": "MemberExpression", - "start": 14985, - "end": 14997, - "loc": { - "start": { - "line": 267, - "column": 78 - }, - "end": { - "line": 267, - "column": 90 - } - }, - "object": { - "type": "Identifier", - "start": 14985, - "end": 14989, - "loc": { - "start": { - "line": 267, - "column": 78 - }, - "end": { - "line": 267, - "column": 82 - }, - "identifierName": "mesh" - }, - "name": "mesh" - }, - "property": { - "type": "Identifier", - "start": 14990, - "end": 14997, - "loc": { - "start": { - "line": 267, - "column": 83 - }, - "end": { - "line": 267, - "column": 90 - }, - "identifierName": "opacity" - }, - "name": "opacity" - }, - "computed": false - }, - "operator": "*", - "right": { - "type": "NumericLiteral", - "start": 15000, - "end": 15003, - "loc": { - "start": { - "line": 267, - "column": 93 - }, - "end": { - "line": 267, - "column": 96 - } - }, - "extra": { - "rawValue": 255, - "raw": "255" - }, - "value": 255 - }, - "extra": { - "parenthesized": true, - "parenStart": 14984 - } - } - }, - "trailingComments": [ - { - "type": "CommentLine", - "value": " Opacity", - "start": 15006, - "end": 15016, - "loc": { - "start": { - "line": 267, - "column": 99 - }, - "end": { - "line": 267, - "column": 109 - } - } - } - ] - }, - { - "type": "ExpressionStatement", - "start": 15025, - "end": 15116, - "loc": { - "start": { - "line": 268, - "column": 8 - }, - "end": { - "line": 268, - "column": 99 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 15025, - "end": 15115, - "loc": { - "start": { - "line": 268, - "column": 8 - }, - "end": { - "line": 268, - "column": 98 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 15025, - "end": 15091, - "loc": { - "start": { - "line": 268, - "column": 8 - }, - "end": { - "line": 268, - "column": 74 - } - }, - "object": { - "type": "MemberExpression", - "start": 15025, - "end": 15056, - "loc": { - "start": { - "line": 268, - "column": 8 - }, - "end": { - "line": 268, - "column": 39 - } - }, - "object": { - "type": "Identifier", - "start": 15025, - "end": 15029, - "loc": { - "start": { - "line": 268, - "column": 8 - }, - "end": { - "line": 268, - "column": 12 - }, - "identifierName": "data" - }, - "name": "data", - "leadingComments": null - }, - "property": { - "type": "Identifier", - "start": 15030, - "end": 15056, - "loc": { - "start": { - "line": 268, - "column": 13 - }, - "end": { - "line": 268, - "column": 39 - }, - "identifierName": "eachMeshMaterialAttributes" - }, - "name": "eachMeshMaterialAttributes" - }, - "computed": false, - "leadingComments": null - }, - "property": { - "type": "UpdateExpression", - "start": 15057, - "end": 15090, - "loc": { - "start": { - "line": 268, - "column": 40 - }, - "end": { - "line": 268, - "column": 73 - } - }, - "operator": "++", - "prefix": false, - "argument": { - "type": "Identifier", - "start": 15057, - "end": 15088, - "loc": { - "start": { - "line": 268, - "column": 40 - }, - "end": { - "line": 268, - "column": 71 - }, - "identifierName": "eachMeshMaterialAttributesIndex" - }, - "name": "eachMeshMaterialAttributesIndex" - } - }, - "computed": true, - "leadingComments": null - }, - "right": { - "type": "BinaryExpression", - "start": 15095, - "end": 15114, - "loc": { - "start": { - "line": 268, - "column": 78 - }, - "end": { - "line": 268, - "column": 97 - } - }, - "left": { - "type": "MemberExpression", - "start": 15095, - "end": 15108, - "loc": { - "start": { - "line": 268, - "column": 78 - }, - "end": { - "line": 268, - "column": 91 - } - }, - "object": { - "type": "Identifier", - "start": 15095, - "end": 15099, - "loc": { - "start": { - "line": 268, - "column": 78 - }, - "end": { - "line": 268, - "column": 82 - }, - "identifierName": "mesh" - }, - "name": "mesh" - }, - "property": { - "type": "Identifier", - "start": 15100, - "end": 15108, - "loc": { - "start": { - "line": 268, - "column": 83 - }, - "end": { - "line": 268, - "column": 91 - }, - "identifierName": "metallic" - }, - "name": "metallic" - }, - "computed": false - }, - "operator": "*", - "right": { - "type": "NumericLiteral", - "start": 15111, - "end": 15114, - "loc": { - "start": { - "line": 268, - "column": 94 - }, - "end": { - "line": 268, - "column": 97 - } - }, - "extra": { - "rawValue": 255, - "raw": "255" - }, - "value": 255 - }, - "extra": { - "parenthesized": true, - "parenStart": 15094 - } - }, - "leadingComments": null - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " Opacity", - "start": 15006, - "end": 15016, - "loc": { - "start": { - "line": 267, - "column": 99 - }, - "end": { - "line": 267, - "column": 109 - } - } - } - ], - "trailingComments": [ - { - "type": "CommentLine", - "value": " Metallic", - "start": 15117, - "end": 15128, - "loc": { - "start": { - "line": 268, - "column": 100 - }, - "end": { - "line": 268, - "column": 111 - } - } - } - ] - }, - { - "type": "ExpressionStatement", - "start": 15137, - "end": 15229, - "loc": { - "start": { - "line": 269, - "column": 8 - }, - "end": { - "line": 269, - "column": 100 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 15137, - "end": 15228, - "loc": { - "start": { - "line": 269, - "column": 8 - }, - "end": { - "line": 269, - "column": 99 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 15137, - "end": 15203, - "loc": { - "start": { - "line": 269, - "column": 8 - }, - "end": { - "line": 269, - "column": 74 - } - }, - "object": { - "type": "MemberExpression", - "start": 15137, - "end": 15168, - "loc": { - "start": { - "line": 269, - "column": 8 - }, - "end": { - "line": 269, - "column": 39 - } - }, - "object": { - "type": "Identifier", - "start": 15137, - "end": 15141, - "loc": { - "start": { - "line": 269, - "column": 8 - }, - "end": { - "line": 269, - "column": 12 - }, - "identifierName": "data" - }, - "name": "data", - "leadingComments": null - }, - "property": { - "type": "Identifier", - "start": 15142, - "end": 15168, - "loc": { - "start": { - "line": 269, - "column": 13 - }, - "end": { - "line": 269, - "column": 39 - }, - "identifierName": "eachMeshMaterialAttributes" - }, - "name": "eachMeshMaterialAttributes" - }, - "computed": false, - "leadingComments": null - }, - "property": { - "type": "UpdateExpression", - "start": 15169, - "end": 15202, - "loc": { - "start": { - "line": 269, - "column": 40 - }, - "end": { - "line": 269, - "column": 73 - } - }, - "operator": "++", - "prefix": false, - "argument": { - "type": "Identifier", - "start": 15169, - "end": 15200, - "loc": { - "start": { - "line": 269, - "column": 40 - }, - "end": { - "line": 269, - "column": 71 - }, - "identifierName": "eachMeshMaterialAttributesIndex" - }, - "name": "eachMeshMaterialAttributesIndex" - } - }, - "computed": true, - "leadingComments": null - }, - "right": { - "type": "BinaryExpression", - "start": 15207, - "end": 15227, - "loc": { - "start": { - "line": 269, - "column": 78 - }, - "end": { - "line": 269, - "column": 98 - } - }, - "left": { - "type": "MemberExpression", - "start": 15207, - "end": 15221, - "loc": { - "start": { - "line": 269, - "column": 78 - }, - "end": { - "line": 269, - "column": 92 - } - }, - "object": { - "type": "Identifier", - "start": 15207, - "end": 15211, - "loc": { - "start": { - "line": 269, - "column": 78 - }, - "end": { - "line": 269, - "column": 82 - }, - "identifierName": "mesh" - }, - "name": "mesh" - }, - "property": { - "type": "Identifier", - "start": 15212, - "end": 15221, - "loc": { - "start": { - "line": 269, - "column": 83 - }, - "end": { - "line": 269, - "column": 92 - }, - "identifierName": "roughness" - }, - "name": "roughness" - }, - "computed": false - }, - "operator": "*", - "right": { - "type": "NumericLiteral", - "start": 15224, - "end": 15227, - "loc": { - "start": { - "line": 269, - "column": 95 - }, - "end": { - "line": 269, - "column": 98 - } - }, - "extra": { - "rawValue": 255, - "raw": "255" - }, - "value": 255 - }, - "extra": { - "parenthesized": true, - "parenStart": 15206 - } - }, - "leadingComments": null - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " Metallic", - "start": 15117, - "end": 15128, - "loc": { - "start": { - "line": 268, - "column": 100 - }, - "end": { - "line": 268, - "column": 111 - } - } - } - ], - "trailingComments": [ - { - "type": "CommentLine", - "value": " Roughness", - "start": 15230, - "end": 15242, - "loc": { - "start": { - "line": 269, - "column": 101 - }, - "end": { - "line": 269, - "column": 113 - } - } - } - ] - } - ], - "directives": [], - "trailingComments": null - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " Meshes", - "start": 14097, - "end": 14106, - "loc": { - "start": { - "line": 254, - "column": 4 - }, - "end": { - "line": 254, - "column": 13 - } - } - } - ], - "trailingComments": [ - { - "type": "CommentLine", - "value": " Entities, geometry instances, and tiles", - "start": 15254, - "end": 15296, - "loc": { - "start": { - "line": 272, - "column": 4 - }, - "end": { - "line": 272, - "column": 46 - } - } - } - ] - }, - { - "type": "VariableDeclaration", - "start": 15302, - "end": 15322, - "loc": { - "start": { - "line": 274, - "column": 4 - }, - "end": { - "line": 274, - "column": 24 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 15306, - "end": 15321, - "loc": { - "start": { - "line": 274, - "column": 8 - }, - "end": { - "line": 274, - "column": 23 - } - }, - "id": { - "type": "Identifier", - "start": 15306, - "end": 15317, - "loc": { - "start": { - "line": 274, - "column": 8 - }, - "end": { - "line": 274, - "column": 19 - }, - "identifierName": "entityIndex" - }, - "name": "entityIndex", - "leadingComments": null - }, - "init": { - "type": "NumericLiteral", - "start": 15320, - "end": 15321, - "loc": { - "start": { - "line": 274, - "column": 22 - }, - "end": { - "line": 274, - "column": 23 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - }, - "leadingComments": null - } - ], - "kind": "let", - "leadingComments": [ - { - "type": "CommentLine", - "value": " Entities, geometry instances, and tiles", - "start": 15254, - "end": 15296, - "loc": { - "start": { - "line": 272, - "column": 4 - }, - "end": { - "line": 272, - "column": 46 - } - } - } - ] - }, - { - "type": "VariableDeclaration", - "start": 15327, - "end": 15360, - "loc": { - "start": { - "line": 275, - "column": 4 - }, - "end": { - "line": 275, - "column": 37 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 15331, - "end": 15359, - "loc": { - "start": { - "line": 275, - "column": 8 - }, - "end": { - "line": 275, - "column": 36 - } - }, - "id": { - "type": "Identifier", - "start": 15331, - "end": 15355, - "loc": { - "start": { - "line": 275, - "column": 8 - }, - "end": { - "line": 275, - "column": 32 - }, - "identifierName": "countEntityMeshesPortion" - }, - "name": "countEntityMeshesPortion" - }, - "init": { - "type": "NumericLiteral", - "start": 15358, - "end": 15359, - "loc": { - "start": { - "line": 275, - "column": 35 - }, - "end": { - "line": 275, - "column": 36 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } - } - ], - "kind": "let" - }, - { - "type": "ForStatement", - "start": 15366, - "end": 16701, - "loc": { - "start": { - "line": 277, - "column": 4 - }, - "end": { - "line": 316, - "column": 5 - } - }, - "init": { - "type": "VariableDeclaration", - "start": 15371, - "end": 15388, - "loc": { - "start": { - "line": 277, - "column": 9 - }, - "end": { - "line": 277, - "column": 26 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 15375, - "end": 15388, - "loc": { - "start": { - "line": 277, - "column": 13 - }, - "end": { - "line": 277, - "column": 26 - } - }, - "id": { - "type": "Identifier", - "start": 15375, - "end": 15384, - "loc": { - "start": { - "line": 277, - "column": 13 - }, - "end": { - "line": 277, - "column": 22 - }, - "identifierName": "tileIndex" - }, - "name": "tileIndex" - }, - "init": { - "type": "NumericLiteral", - "start": 15387, - "end": 15388, - "loc": { - "start": { - "line": 277, - "column": 25 - }, - "end": { - "line": 277, - "column": 26 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } - } - ], - "kind": "let" - }, - "test": { - "type": "BinaryExpression", - "start": 15390, - "end": 15410, - "loc": { - "start": { - "line": 277, - "column": 28 - }, - "end": { - "line": 277, - "column": 48 - } - }, - "left": { - "type": "Identifier", - "start": 15390, - "end": 15399, - "loc": { - "start": { - "line": 277, - "column": 28 - }, - "end": { - "line": 277, - "column": 37 - }, - "identifierName": "tileIndex" - }, - "name": "tileIndex" - }, - "operator": "<", - "right": { - "type": "Identifier", - "start": 15402, - "end": 15410, - "loc": { - "start": { - "line": 277, - "column": 40 - }, - "end": { - "line": 277, - "column": 48 - }, - "identifierName": "numTiles" - }, - "name": "numTiles" - } - }, - "update": { - "type": "UpdateExpression", - "start": 15412, - "end": 15423, - "loc": { - "start": { - "line": 277, - "column": 50 - }, - "end": { - "line": 277, - "column": 61 - } - }, - "operator": "++", - "prefix": false, - "argument": { - "type": "Identifier", - "start": 15412, - "end": 15421, - "loc": { - "start": { - "line": 277, - "column": 50 - }, - "end": { - "line": 277, - "column": 59 - }, - "identifierName": "tileIndex" - }, - "name": "tileIndex" - } - }, - "body": { - "type": "BlockStatement", - "start": 15425, - "end": 16701, - "loc": { - "start": { - "line": 277, - "column": 63 - }, - "end": { - "line": 316, - "column": 5 - } - }, - "body": [ - { - "type": "VariableDeclaration", - "start": 15436, - "end": 15471, - "loc": { - "start": { - "line": 279, - "column": 8 - }, - "end": { - "line": 279, - "column": 43 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 15442, - "end": 15470, - "loc": { - "start": { - "line": 279, - "column": 14 - }, - "end": { - "line": 279, - "column": 42 - } - }, - "id": { - "type": "Identifier", - "start": 15442, - "end": 15446, - "loc": { - "start": { - "line": 279, - "column": 14 - }, - "end": { - "line": 279, - "column": 18 - }, - "identifierName": "tile" - }, - "name": "tile" - }, - "init": { - "type": "MemberExpression", - "start": 15449, - "end": 15470, - "loc": { - "start": { - "line": 279, - "column": 21 - }, - "end": { - "line": 279, - "column": 42 - } - }, - "object": { - "type": "Identifier", - "start": 15449, - "end": 15458, - "loc": { - "start": { - "line": 279, - "column": 21 - }, - "end": { - "line": 279, - "column": 30 - }, - "identifierName": "tilesList" - }, - "name": "tilesList" - }, - "property": { - "type": "Identifier", - "start": 15460, - "end": 15469, - "loc": { - "start": { - "line": 279, - "column": 32 - }, - "end": { - "line": 279, - "column": 41 - }, - "identifierName": "tileIndex" - }, - "name": "tileIndex" - }, - "computed": true - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 15480, - "end": 15515, - "loc": { - "start": { - "line": 280, - "column": 8 - }, - "end": { - "line": 280, - "column": 43 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 15486, - "end": 15514, - "loc": { - "start": { - "line": 280, - "column": 14 - }, - "end": { - "line": 280, - "column": 42 - } - }, - "id": { - "type": "Identifier", - "start": 15486, - "end": 15498, - "loc": { - "start": { - "line": 280, - "column": 14 - }, - "end": { - "line": 280, - "column": 26 - }, - "identifierName": "tileEntities" - }, - "name": "tileEntities" - }, - "init": { - "type": "MemberExpression", - "start": 15501, - "end": 15514, - "loc": { - "start": { - "line": 280, - "column": 29 - }, - "end": { - "line": 280, - "column": 42 - } - }, - "object": { - "type": "Identifier", - "start": 15501, - "end": 15505, - "loc": { - "start": { - "line": 280, - "column": 29 - }, - "end": { - "line": 280, - "column": 33 - }, - "identifierName": "tile" - }, - "name": "tile" - }, - "property": { - "type": "Identifier", - "start": 15506, - "end": 15514, - "loc": { - "start": { - "line": 280, - "column": 34 - }, - "end": { - "line": 280, - "column": 42 - }, - "identifierName": "entities" - }, - "name": "entities" - }, - "computed": false - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 15524, - "end": 15568, - "loc": { - "start": { - "line": 281, - "column": 8 - }, - "end": { - "line": 281, - "column": 52 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 15530, - "end": 15567, - "loc": { - "start": { - "line": 281, - "column": 14 - }, - "end": { - "line": 281, - "column": 51 - } - }, - "id": { - "type": "Identifier", - "start": 15530, - "end": 15545, - "loc": { - "start": { - "line": 281, - "column": 14 - }, - "end": { - "line": 281, - "column": 29 - }, - "identifierName": "numTileEntities" - }, - "name": "numTileEntities" - }, - "init": { - "type": "MemberExpression", - "start": 15548, - "end": 15567, - "loc": { - "start": { - "line": 281, - "column": 32 - }, - "end": { - "line": 281, - "column": 51 - } - }, - "object": { - "type": "Identifier", - "start": 15548, - "end": 15560, - "loc": { - "start": { - "line": 281, - "column": 32 - }, - "end": { - "line": 281, - "column": 44 - }, - "identifierName": "tileEntities" - }, - "name": "tileEntities" - }, - "property": { - "type": "Identifier", - "start": 15561, - "end": 15567, - "loc": { - "start": { - "line": 281, - "column": 45 - }, - "end": { - "line": 281, - "column": 51 - }, - "identifierName": "length" - }, - "name": "length" - }, - "computed": false - } - } - ], - "kind": "const" - }, - { - "type": "IfStatement", - "start": 15578, - "end": 15638, - "loc": { - "start": { - "line": 283, - "column": 8 - }, - "end": { - "line": 285, - "column": 9 - } - }, - "test": { - "type": "BinaryExpression", - "start": 15582, - "end": 15603, - "loc": { - "start": { - "line": 283, - "column": 12 - }, - "end": { - "line": 283, - "column": 33 - } - }, - "left": { - "type": "Identifier", - "start": 15582, - "end": 15597, - "loc": { - "start": { - "line": 283, - "column": 12 - }, - "end": { - "line": 283, - "column": 27 - }, - "identifierName": "numTileEntities" - }, - "name": "numTileEntities" - }, - "operator": "===", - "right": { - "type": "NumericLiteral", - "start": 15602, - "end": 15603, - "loc": { - "start": { - "line": 283, - "column": 32 - }, - "end": { - "line": 283, - "column": 33 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } - }, - "consequent": { - "type": "BlockStatement", - "start": 15605, - "end": 15638, - "loc": { - "start": { - "line": 283, - "column": 35 - }, - "end": { - "line": 285, - "column": 9 - } - }, - "body": [ - { - "type": "ContinueStatement", - "start": 15619, - "end": 15628, - "loc": { - "start": { - "line": 284, - "column": 12 - }, - "end": { - "line": 284, - "column": 21 - } - }, - "label": null - } - ], - "directives": [] - }, - "alternate": null - }, - { - "type": "ExpressionStatement", - "start": 15648, - "end": 15702, - "loc": { - "start": { - "line": 287, - "column": 8 - }, - "end": { - "line": 287, - "column": 62 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 15648, - "end": 15701, - "loc": { - "start": { - "line": 287, - "column": 8 - }, - "end": { - "line": 287, - "column": 61 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 15648, - "end": 15687, - "loc": { - "start": { - "line": 287, - "column": 8 - }, - "end": { - "line": 287, - "column": 47 - } - }, - "object": { - "type": "MemberExpression", - "start": 15648, - "end": 15676, - "loc": { - "start": { - "line": 287, - "column": 8 - }, - "end": { - "line": 287, - "column": 36 - } - }, - "object": { - "type": "Identifier", - "start": 15648, - "end": 15652, - "loc": { - "start": { - "line": 287, - "column": 8 - }, - "end": { - "line": 287, - "column": 12 - }, - "identifierName": "data" - }, - "name": "data" - }, - "property": { - "type": "Identifier", - "start": 15653, - "end": 15676, - "loc": { - "start": { - "line": 287, - "column": 13 - }, - "end": { - "line": 287, - "column": 36 - }, - "identifierName": "eachTileEntitiesPortion" - }, - "name": "eachTileEntitiesPortion" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 15677, - "end": 15686, - "loc": { - "start": { - "line": 287, - "column": 37 - }, - "end": { - "line": 287, - "column": 46 - }, - "identifierName": "tileIndex" - }, - "name": "tileIndex" - }, - "computed": true - }, - "right": { - "type": "Identifier", - "start": 15690, - "end": 15701, - "loc": { - "start": { - "line": 287, - "column": 50 - }, - "end": { - "line": 287, - "column": 61 - }, - "identifierName": "entityIndex" - }, - "name": "entityIndex" - } - } - }, - { - "type": "VariableDeclaration", - "start": 15712, - "end": 15739, - "loc": { - "start": { - "line": 289, - "column": 8 - }, - "end": { - "line": 289, - "column": 35 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 15718, - "end": 15738, - "loc": { - "start": { - "line": 289, - "column": 14 - }, - "end": { - "line": 289, - "column": 34 - } - }, - "id": { - "type": "Identifier", - "start": 15718, - "end": 15726, - "loc": { - "start": { - "line": 289, - "column": 14 - }, - "end": { - "line": 289, - "column": 22 - }, - "identifierName": "tileAABB" - }, - "name": "tileAABB" - }, - "init": { - "type": "MemberExpression", - "start": 15729, - "end": 15738, - "loc": { - "start": { - "line": 289, - "column": 25 - }, - "end": { - "line": 289, - "column": 34 - } - }, - "object": { - "type": "Identifier", - "start": 15729, - "end": 15733, - "loc": { - "start": { - "line": 289, - "column": 25 - }, - "end": { - "line": 289, - "column": 29 - }, - "identifierName": "tile" - }, - "name": "tile" - }, - "property": { - "type": "Identifier", - "start": 15734, - "end": 15738, - "loc": { - "start": { - "line": 289, - "column": 30 - }, - "end": { - "line": 289, - "column": 34 - }, - "identifierName": "aabb" - }, - "name": "aabb" - }, - "computed": false - } - } - ], - "kind": "const" - }, - { - "type": "ForStatement", - "start": 15749, - "end": 16592, - "loc": { - "start": { - "line": 291, - "column": 8 - }, - "end": { - "line": 311, - "column": 9 - } - }, - "init": { - "type": "VariableDeclaration", - "start": 15754, - "end": 15763, - "loc": { - "start": { - "line": 291, - "column": 13 - }, - "end": { - "line": 291, - "column": 22 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 15758, - "end": 15763, - "loc": { - "start": { - "line": 291, - "column": 17 - }, - "end": { - "line": 291, - "column": 22 - } - }, - "id": { - "type": "Identifier", - "start": 15758, - "end": 15759, - "loc": { - "start": { - "line": 291, - "column": 17 + "body": [ + { + "type": "VariableDeclaration", + "start": 14942, + "end": 14971, + "loc": { + "start": { + "line": 284, + "column": 16 + }, + "end": { + "line": 284, + "column": 45 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14948, + "end": 14970, + "loc": { + "start": { + "line": 284, + "column": 22 + }, + "end": { + "line": 284, + "column": 44 + } + }, + "id": { + "type": "Identifier", + "start": 14948, + "end": 14952, + "loc": { + "start": { + "line": 284, + "column": 22 + }, + "end": { + "line": 284, + "column": 26 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "init": { + "type": "MemberExpression", + "start": 14955, + "end": 14970, + "loc": { + "start": { + "line": 284, + "column": 29 + }, + "end": { + "line": 284, + "column": 44 + } + }, + "object": { + "type": "Identifier", + "start": 14955, + "end": 14967, + "loc": { + "start": { + "line": 284, + "column": 29 + }, + "end": { + "line": 284, + "column": 41 + }, + "identifierName": "entityMeshes" + }, + "name": "entityMeshes" + }, + "property": { + "type": "Identifier", + "start": 14968, + "end": 14969, + "loc": { + "start": { + "line": 284, + "column": 42 + }, + "end": { + "line": 284, + "column": 43 + }, + "identifierName": "k" + }, + "name": "k" + }, + "computed": true + } + } + ], + "kind": "const" }, - "end": { - "line": 291, - "column": 18 + { + "type": "VariableDeclaration", + "start": 14988, + "end": 15019, + "loc": { + "start": { + "line": 285, + "column": 16 + }, + "end": { + "line": 285, + "column": 47 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 14994, + "end": 15018, + "loc": { + "start": { + "line": 285, + "column": 22 + }, + "end": { + "line": 285, + "column": 46 + } + }, + "id": { + "type": "Identifier", + "start": 14994, + "end": 15002, + "loc": { + "start": { + "line": 285, + "column": 22 + }, + "end": { + "line": 285, + "column": 30 + }, + "identifierName": "geometry" + }, + "name": "geometry" + }, + "init": { + "type": "MemberExpression", + "start": 15005, + "end": 15018, + "loc": { + "start": { + "line": 285, + "column": 33 + }, + "end": { + "line": 285, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 15005, + "end": 15009, + "loc": { + "start": { + "line": 285, + "column": 33 + }, + "end": { + "line": 285, + "column": 37 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "property": { + "type": "Identifier", + "start": 15010, + "end": 15018, + "loc": { + "start": { + "line": 285, + "column": 38 + }, + "end": { + "line": 285, + "column": 46 + }, + "identifierName": "geometry" + }, + "name": "geometry" + }, + "computed": false + } + } + ], + "kind": "const" }, - "identifierName": "j" - }, - "name": "j" - }, - "init": { - "type": "NumericLiteral", - "start": 15762, - "end": 15763, - "loc": { - "start": { - "line": 291, - "column": 21 + { + "type": "VariableDeclaration", + "start": 15036, + "end": 15081, + "loc": { + "start": { + "line": 286, + "column": 16 + }, + "end": { + "line": 286, + "column": 61 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 15042, + "end": 15080, + "loc": { + "start": { + "line": 286, + "column": 22 + }, + "end": { + "line": 286, + "column": 60 + } + }, + "id": { + "type": "Identifier", + "start": 15042, + "end": 15055, + "loc": { + "start": { + "line": 286, + "column": 22 + }, + "end": { + "line": 286, + "column": 35 + }, + "identifierName": "geometryIndex" + }, + "name": "geometryIndex" + }, + "init": { + "type": "MemberExpression", + "start": 15058, + "end": 15080, + "loc": { + "start": { + "line": 286, + "column": 38 + }, + "end": { + "line": 286, + "column": 60 + } + }, + "object": { + "type": "Identifier", + "start": 15058, + "end": 15066, + "loc": { + "start": { + "line": 286, + "column": 38 + }, + "end": { + "line": 286, + "column": 46 + }, + "identifierName": "geometry" + }, + "name": "geometry" + }, + "property": { + "type": "Identifier", + "start": 15067, + "end": 15080, + "loc": { + "start": { + "line": 286, + "column": 47 + }, + "end": { + "line": 286, + "column": 60 + }, + "identifierName": "geometryIndex" + }, + "name": "geometryIndex" + }, + "computed": false + } + } + ], + "kind": "const" }, - "end": { - "line": 291, - "column": 22 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } - } - ], - "kind": "let" - }, - "test": { - "type": "BinaryExpression", - "start": 15765, - "end": 15784, - "loc": { - "start": { - "line": 291, - "column": 24 - }, - "end": { - "line": 291, - "column": 43 - } - }, - "left": { - "type": "Identifier", - "start": 15765, - "end": 15766, - "loc": { - "start": { - "line": 291, - "column": 24 - }, - "end": { - "line": 291, - "column": 25 - }, - "identifierName": "j" - }, - "name": "j" - }, - "operator": "<", - "right": { - "type": "Identifier", - "start": 15769, - "end": 15784, - "loc": { - "start": { - "line": 291, - "column": 28 - }, - "end": { - "line": 291, - "column": 43 - }, - "identifierName": "numTileEntities" - }, - "name": "numTileEntities" - } - }, - "update": { - "type": "UpdateExpression", - "start": 15786, - "end": 15789, - "loc": { - "start": { - "line": 291, - "column": 45 - }, - "end": { - "line": 291, - "column": 48 - } - }, - "operator": "++", - "prefix": false, - "argument": { - "type": "Identifier", - "start": 15786, - "end": 15787, - "loc": { - "start": { - "line": 291, - "column": 45 - }, - "end": { - "line": 291, - "column": 46 - }, - "identifierName": "j" - }, - "name": "j" - } - }, - "body": { - "type": "BlockStatement", - "start": 15791, - "end": 16592, - "loc": { - "start": { - "line": 291, - "column": 50 - }, - "end": { - "line": 311, - "column": 9 - } - }, - "body": [ - { - "type": "VariableDeclaration", - "start": 15806, - "end": 15837, - "loc": { - "start": { - "line": 293, - "column": 12 - }, - "end": { - "line": 293, - "column": 43 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 15812, - "end": 15836, - "loc": { - "start": { - "line": 293, - "column": 18 + { + "type": "ExpressionStatement", + "start": 15099, + "end": 15177, + "loc": { + "start": { + "line": 288, + "column": 16 + }, + "end": { + "line": 288, + "column": 94 + } }, - "end": { - "line": 293, - "column": 42 + "expression": { + "type": "AssignmentExpression", + "start": 15099, + "end": 15176, + "loc": { + "start": { + "line": 288, + "column": 16 + }, + "end": { + "line": 288, + "column": 93 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 15099, + "end": 15160, + "loc": { + "start": { + "line": 288, + "column": 16 + }, + "end": { + "line": 288, + "column": 77 + } + }, + "object": { + "type": "MemberExpression", + "start": 15099, + "end": 15129, + "loc": { + "start": { + "line": 288, + "column": 16 + }, + "end": { + "line": 288, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 15099, + "end": 15103, + "loc": { + "start": { + "line": 288, + "column": 16 + }, + "end": { + "line": 288, + "column": 20 + }, + "identifierName": "data" + }, + "name": "data" + }, + "property": { + "type": "Identifier", + "start": 15104, + "end": 15129, + "loc": { + "start": { + "line": 288, + "column": 21 + }, + "end": { + "line": 288, + "column": 46 + }, + "identifierName": "eachMeshGeometriesPortion" + }, + "name": "eachMeshGeometriesPortion" + }, + "computed": false + }, + "property": { + "type": "BinaryExpression", + "start": 15131, + "end": 15159, + "loc": { + "start": { + "line": 288, + "column": 48 + }, + "end": { + "line": 288, + "column": 76 + } + }, + "left": { + "type": "Identifier", + "start": 15131, + "end": 15155, + "loc": { + "start": { + "line": 288, + "column": 48 + }, + "end": { + "line": 288, + "column": 72 + }, + "identifierName": "countEntityMeshesPortion" + }, + "name": "countEntityMeshesPortion" + }, + "operator": "+", + "right": { + "type": "Identifier", + "start": 15158, + "end": 15159, + "loc": { + "start": { + "line": 288, + "column": 75 + }, + "end": { + "line": 288, + "column": 76 + }, + "identifierName": "k" + }, + "name": "k" + } + }, + "computed": true + }, + "right": { + "type": "Identifier", + "start": 15163, + "end": 15176, + "loc": { + "start": { + "line": 288, + "column": 80 + }, + "end": { + "line": 288, + "column": 93 + }, + "identifierName": "geometryIndex" + }, + "name": "geometryIndex" + } } }, - "id": { - "type": "Identifier", - "start": 15812, - "end": 15818, + { + "type": "IfStatement", + "start": 15195, + "end": 15436, "loc": { "start": { - "line": 293, - "column": 18 + "line": 290, + "column": 16 }, "end": { - "line": 293, - "column": 24 + "line": 294, + "column": 17 + } + }, + "test": { + "type": "BinaryExpression", + "start": 15199, + "end": 15229, + "loc": { + "start": { + "line": 290, + "column": 20 + }, + "end": { + "line": 290, + "column": 50 + } }, - "identifierName": "entity" + "left": { + "type": "MemberExpression", + "start": 15199, + "end": 15225, + "loc": { + "start": { + "line": 290, + "column": 20 + }, + "end": { + "line": 290, + "column": 46 + } + }, + "object": { + "type": "MemberExpression", + "start": 15199, + "end": 15212, + "loc": { + "start": { + "line": 290, + "column": 20 + }, + "end": { + "line": 290, + "column": 33 + } + }, + "object": { + "type": "Identifier", + "start": 15199, + "end": 15203, + "loc": { + "start": { + "line": 290, + "column": 20 + }, + "end": { + "line": 290, + "column": 24 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "property": { + "type": "Identifier", + "start": 15204, + "end": 15212, + "loc": { + "start": { + "line": 290, + "column": 25 + }, + "end": { + "line": 290, + "column": 33 + }, + "identifierName": "geometry" + }, + "name": "geometry" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 15213, + "end": 15225, + "loc": { + "start": { + "line": 290, + "column": 34 + }, + "end": { + "line": 290, + "column": 46 + }, + "identifierName": "numInstances" + }, + "name": "numInstances" + }, + "computed": false + }, + "operator": ">", + "right": { + "type": "NumericLiteral", + "start": 15228, + "end": 15229, + "loc": { + "start": { + "line": 290, + "column": 49 + }, + "end": { + "line": 290, + "column": 50 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + }, + "consequent": { + "type": "BlockStatement", + "start": 15231, + "end": 15436, + "loc": { + "start": { + "line": 290, + "column": 52 + }, + "end": { + "line": 294, + "column": 17 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 15253, + "end": 15299, + "loc": { + "start": { + "line": 291, + "column": 20 + }, + "end": { + "line": 291, + "column": 66 + } + }, + "expression": { + "type": "CallExpression", + "start": 15253, + "end": 15298, + "loc": { + "start": { + "line": 291, + "column": 20 + }, + "end": { + "line": 291, + "column": 65 + } + }, + "callee": { + "type": "MemberExpression", + "start": 15253, + "end": 15270, + "loc": { + "start": { + "line": 291, + "column": 20 + }, + "end": { + "line": 291, + "column": 37 + } + }, + "object": { + "type": "MemberExpression", + "start": 15253, + "end": 15266, + "loc": { + "start": { + "line": 291, + "column": 20 + }, + "end": { + "line": 291, + "column": 33 + } + }, + "object": { + "type": "Identifier", + "start": 15253, + "end": 15257, + "loc": { + "start": { + "line": 291, + "column": 20 + }, + "end": { + "line": 291, + "column": 24 + }, + "identifierName": "data" + }, + "name": "data" + }, + "property": { + "type": "Identifier", + "start": 15258, + "end": 15266, + "loc": { + "start": { + "line": 291, + "column": 25 + }, + "end": { + "line": 291, + "column": 33 + }, + "identifierName": "matrices" + }, + "name": "matrices" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 15267, + "end": 15270, + "loc": { + "start": { + "line": 291, + "column": 34 + }, + "end": { + "line": 291, + "column": 37 + }, + "identifierName": "set" + }, + "name": "set" + }, + "computed": false + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 15271, + "end": 15282, + "loc": { + "start": { + "line": 291, + "column": 38 + }, + "end": { + "line": 291, + "column": 49 + } + }, + "object": { + "type": "Identifier", + "start": 15271, + "end": 15275, + "loc": { + "start": { + "line": 291, + "column": 38 + }, + "end": { + "line": 291, + "column": 42 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "property": { + "type": "Identifier", + "start": 15276, + "end": 15282, + "loc": { + "start": { + "line": 291, + "column": 43 + }, + "end": { + "line": 291, + "column": 49 + }, + "identifierName": "matrix" + }, + "name": "matrix" + }, + "computed": false + }, + { + "type": "Identifier", + "start": 15284, + "end": 15297, + "loc": { + "start": { + "line": 291, + "column": 51 + }, + "end": { + "line": 291, + "column": 64 + }, + "identifierName": "matricesIndex" + }, + "name": "matricesIndex" + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 15320, + "end": 15377, + "loc": { + "start": { + "line": 292, + "column": 20 + }, + "end": { + "line": 292, + "column": 77 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 15320, + "end": 15376, + "loc": { + "start": { + "line": 292, + "column": 20 + }, + "end": { + "line": 292, + "column": 76 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 15320, + "end": 15360, + "loc": { + "start": { + "line": 292, + "column": 20 + }, + "end": { + "line": 292, + "column": 60 + } + }, + "object": { + "type": "MemberExpression", + "start": 15320, + "end": 15348, + "loc": { + "start": { + "line": 292, + "column": 20 + }, + "end": { + "line": 292, + "column": 48 + } + }, + "object": { + "type": "Identifier", + "start": 15320, + "end": 15324, + "loc": { + "start": { + "line": 292, + "column": 20 + }, + "end": { + "line": 292, + "column": 24 + }, + "identifierName": "data" + }, + "name": "data" + }, + "property": { + "type": "Identifier", + "start": 15325, + "end": 15348, + "loc": { + "start": { + "line": 292, + "column": 25 + }, + "end": { + "line": 292, + "column": 48 + }, + "identifierName": "eachMeshMatricesPortion" + }, + "name": "eachMeshMatricesPortion" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 15350, + "end": 15359, + "loc": { + "start": { + "line": 292, + "column": 50 + }, + "end": { + "line": 292, + "column": 59 + }, + "identifierName": "meshIndex" + }, + "name": "meshIndex" + }, + "computed": true + }, + "right": { + "type": "Identifier", + "start": 15363, + "end": 15376, + "loc": { + "start": { + "line": 292, + "column": 63 + }, + "end": { + "line": 292, + "column": 76 + }, + "identifierName": "matricesIndex" + }, + "name": "matricesIndex" + } + } + }, + { + "type": "ExpressionStatement", + "start": 15398, + "end": 15418, + "loc": { + "start": { + "line": 293, + "column": 20 + }, + "end": { + "line": 293, + "column": 40 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 15398, + "end": 15417, + "loc": { + "start": { + "line": 293, + "column": 20 + }, + "end": { + "line": 293, + "column": 39 + } + }, + "operator": "+=", + "left": { + "type": "Identifier", + "start": 15398, + "end": 15411, + "loc": { + "start": { + "line": 293, + "column": 20 + }, + "end": { + "line": 293, + "column": 33 + }, + "identifierName": "matricesIndex" + }, + "name": "matricesIndex" + }, + "right": { + "type": "NumericLiteral", + "start": 15415, + "end": 15417, + "loc": { + "start": { + "line": 293, + "column": 37 + }, + "end": { + "line": 293, + "column": 39 + } + }, + "extra": { + "rawValue": 16, + "raw": "16" + }, + "value": 16 + } + } + } + ], + "directives": [] }, - "name": "entity" + "alternate": null }, - "init": { - "type": "MemberExpression", - "start": 15821, - "end": 15836, + { + "type": "ExpressionStatement", + "start": 15454, + "end": 15546, "loc": { "start": { - "line": 293, - "column": 27 + "line": 296, + "column": 16 }, "end": { - "line": 293, - "column": 42 + "line": 296, + "column": 108 } }, - "object": { - "type": "Identifier", - "start": 15821, - "end": 15833, + "expression": { + "type": "AssignmentExpression", + "start": 15454, + "end": 15545, "loc": { "start": { - "line": 293, - "column": 27 + "line": 296, + "column": 16 }, "end": { - "line": 293, - "column": 39 - }, - "identifierName": "tileEntities" + "line": 296, + "column": 107 + } }, - "name": "tileEntities" - }, - "property": { - "type": "Identifier", - "start": 15834, - "end": 15835, - "loc": { - "start": { - "line": 293, - "column": 40 + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 15454, + "end": 15488, + "loc": { + "start": { + "line": 296, + "column": 16 + }, + "end": { + "line": 296, + "column": 50 + } }, - "end": { - "line": 293, - "column": 41 + "object": { + "type": "MemberExpression", + "start": 15454, + "end": 15477, + "loc": { + "start": { + "line": 296, + "column": 16 + }, + "end": { + "line": 296, + "column": 39 + } + }, + "object": { + "type": "Identifier", + "start": 15454, + "end": 15458, + "loc": { + "start": { + "line": 296, + "column": 16 + }, + "end": { + "line": 296, + "column": 20 + }, + "identifierName": "data" + }, + "name": "data" + }, + "property": { + "type": "Identifier", + "start": 15459, + "end": 15477, + "loc": { + "start": { + "line": 296, + "column": 21 + }, + "end": { + "line": 296, + "column": 39 + }, + "identifierName": "eachMeshTextureSet" + }, + "name": "eachMeshTextureSet" + }, + "computed": false }, - "identifierName": "j" + "property": { + "type": "Identifier", + "start": 15478, + "end": 15487, + "loc": { + "start": { + "line": 296, + "column": 40 + }, + "end": { + "line": 296, + "column": 49 + }, + "identifierName": "meshIndex" + }, + "name": "meshIndex" + }, + "computed": true }, - "name": "j" - }, - "computed": true - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 15850, - "end": 15885, - "loc": { - "start": { - "line": 294, - "column": 12 - }, - "end": { - "line": 294, - "column": 47 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 15856, - "end": 15884, - "loc": { - "start": { - "line": 294, - "column": 18 - }, - "end": { - "line": 294, - "column": 46 + "right": { + "type": "ConditionalExpression", + "start": 15491, + "end": 15545, + "loc": { + "start": { + "line": 296, + "column": 53 + }, + "end": { + "line": 296, + "column": 107 + } + }, + "test": { + "type": "MemberExpression", + "start": 15491, + "end": 15506, + "loc": { + "start": { + "line": 296, + "column": 53 + }, + "end": { + "line": 296, + "column": 68 + } + }, + "object": { + "type": "Identifier", + "start": 15491, + "end": 15495, + "loc": { + "start": { + "line": 296, + "column": 53 + }, + "end": { + "line": 296, + "column": 57 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "property": { + "type": "Identifier", + "start": 15496, + "end": 15506, + "loc": { + "start": { + "line": 296, + "column": 58 + }, + "end": { + "line": 296, + "column": 68 + }, + "identifierName": "textureSet" + }, + "name": "textureSet" + }, + "computed": false + }, + "consequent": { + "type": "MemberExpression", + "start": 15509, + "end": 15540, + "loc": { + "start": { + "line": 296, + "column": 71 + }, + "end": { + "line": 296, + "column": 102 + } + }, + "object": { + "type": "MemberExpression", + "start": 15509, + "end": 15524, + "loc": { + "start": { + "line": 296, + "column": 71 + }, + "end": { + "line": 296, + "column": 86 + } + }, + "object": { + "type": "Identifier", + "start": 15509, + "end": 15513, + "loc": { + "start": { + "line": 296, + "column": 71 + }, + "end": { + "line": 296, + "column": 75 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "property": { + "type": "Identifier", + "start": 15514, + "end": 15524, + "loc": { + "start": { + "line": 296, + "column": 76 + }, + "end": { + "line": 296, + "column": 86 + }, + "identifierName": "textureSet" + }, + "name": "textureSet" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 15525, + "end": 15540, + "loc": { + "start": { + "line": 296, + "column": 87 + }, + "end": { + "line": 296, + "column": 102 + }, + "identifierName": "textureSetIndex" + }, + "name": "textureSetIndex" + }, + "computed": false + }, + "alternate": { + "type": "UnaryExpression", + "start": 15543, + "end": 15545, + "loc": { + "start": { + "line": 296, + "column": 105 + }, + "end": { + "line": 296, + "column": 107 + } + }, + "operator": "-", + "prefix": true, + "argument": { + "type": "NumericLiteral", + "start": 15544, + "end": 15545, + "loc": { + "start": { + "line": 296, + "column": 106 + }, + "end": { + "line": 296, + "column": 107 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "extra": { + "parenthesizedArgument": false + } + } + } } }, - "id": { - "type": "Identifier", - "start": 15856, - "end": 15868, - "loc": { - "start": { - "line": 294, - "column": 18 - }, - "end": { - "line": 294, - "column": 30 - }, - "identifierName": "entityMeshes" - }, - "name": "entityMeshes" - }, - "init": { - "type": "MemberExpression", - "start": 15871, - "end": 15884, + { + "type": "ExpressionStatement", + "start": 15564, + "end": 15655, "loc": { "start": { - "line": 294, - "column": 33 + "line": 298, + "column": 16 }, "end": { - "line": 294, - "column": 46 + "line": 298, + "column": 107 } }, - "object": { - "type": "Identifier", - "start": 15871, - "end": 15877, + "expression": { + "type": "AssignmentExpression", + "start": 15564, + "end": 15654, "loc": { "start": { - "line": 294, - "column": 33 + "line": 298, + "column": 16 }, "end": { - "line": 294, - "column": 39 - }, - "identifierName": "entity" + "line": 298, + "column": 106 + } }, - "name": "entity" - }, - "property": { - "type": "Identifier", - "start": 15878, - "end": 15884, - "loc": { - "start": { - "line": 294, - "column": 40 + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 15564, + "end": 15630, + "loc": { + "start": { + "line": 298, + "column": 16 + }, + "end": { + "line": 298, + "column": 82 + } }, - "end": { - "line": 294, - "column": 46 + "object": { + "type": "MemberExpression", + "start": 15564, + "end": 15595, + "loc": { + "start": { + "line": 298, + "column": 16 + }, + "end": { + "line": 298, + "column": 47 + } + }, + "object": { + "type": "Identifier", + "start": 15564, + "end": 15568, + "loc": { + "start": { + "line": 298, + "column": 16 + }, + "end": { + "line": 298, + "column": 20 + }, + "identifierName": "data" + }, + "name": "data" + }, + "property": { + "type": "Identifier", + "start": 15569, + "end": 15595, + "loc": { + "start": { + "line": 298, + "column": 21 + }, + "end": { + "line": 298, + "column": 47 + }, + "identifierName": "eachMeshMaterialAttributes" + }, + "name": "eachMeshMaterialAttributes" + }, + "computed": false }, - "identifierName": "meshes" - }, - "name": "meshes" - }, - "computed": false - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 15898, - "end": 15942, - "loc": { - "start": { - "line": 295, - "column": 12 - }, - "end": { - "line": 295, - "column": 56 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 15904, - "end": 15941, - "loc": { - "start": { - "line": 295, - "column": 18 - }, - "end": { - "line": 295, - "column": 55 - } - }, - "id": { - "type": "Identifier", - "start": 15904, - "end": 15919, - "loc": { - "start": { - "line": 295, - "column": 18 - }, - "end": { - "line": 295, - "column": 33 + "property": { + "type": "UpdateExpression", + "start": 15596, + "end": 15629, + "loc": { + "start": { + "line": 298, + "column": 48 + }, + "end": { + "line": 298, + "column": 81 + } + }, + "operator": "++", + "prefix": false, + "argument": { + "type": "Identifier", + "start": 15596, + "end": 15627, + "loc": { + "start": { + "line": 298, + "column": 48 + }, + "end": { + "line": 298, + "column": 79 + }, + "identifierName": "eachMeshMaterialAttributesIndex" + }, + "name": "eachMeshMaterialAttributesIndex" + } + }, + "computed": true }, - "identifierName": "numEntityMeshes" + "right": { + "type": "BinaryExpression", + "start": 15634, + "end": 15653, + "loc": { + "start": { + "line": 298, + "column": 86 + }, + "end": { + "line": 298, + "column": 105 + } + }, + "left": { + "type": "MemberExpression", + "start": 15634, + "end": 15647, + "loc": { + "start": { + "line": 298, + "column": 86 + }, + "end": { + "line": 298, + "column": 99 + } + }, + "object": { + "type": "MemberExpression", + "start": 15634, + "end": 15644, + "loc": { + "start": { + "line": 298, + "column": 86 + }, + "end": { + "line": 298, + "column": 96 + } + }, + "object": { + "type": "Identifier", + "start": 15634, + "end": 15638, + "loc": { + "start": { + "line": 298, + "column": 86 + }, + "end": { + "line": 298, + "column": 90 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "property": { + "type": "Identifier", + "start": 15639, + "end": 15644, + "loc": { + "start": { + "line": 298, + "column": 91 + }, + "end": { + "line": 298, + "column": 96 + }, + "identifierName": "color" + }, + "name": "color" + }, + "computed": false + }, + "property": { + "type": "NumericLiteral", + "start": 15645, + "end": 15646, + "loc": { + "start": { + "line": 298, + "column": 97 + }, + "end": { + "line": 298, + "column": 98 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "computed": true + }, + "operator": "*", + "right": { + "type": "NumericLiteral", + "start": 15650, + "end": 15653, + "loc": { + "start": { + "line": 298, + "column": 102 + }, + "end": { + "line": 298, + "column": 105 + } + }, + "extra": { + "rawValue": 255, + "raw": "255" + }, + "value": 255 + }, + "extra": { + "parenthesized": true, + "parenStart": 15633 + } + } }, - "name": "numEntityMeshes" + "trailingComments": [ + { + "type": "CommentLine", + "value": " Color RGB", + "start": 15656, + "end": 15668, + "loc": { + "start": { + "line": 298, + "column": 108 + }, + "end": { + "line": 298, + "column": 120 + } + } + } + ] }, - "init": { - "type": "MemberExpression", - "start": 15922, - "end": 15941, + { + "type": "ExpressionStatement", + "start": 15685, + "end": 15776, "loc": { "start": { - "line": 295, - "column": 36 + "line": 299, + "column": 16 }, "end": { - "line": 295, - "column": 55 + "line": 299, + "column": 107 } }, - "object": { - "type": "Identifier", - "start": 15922, - "end": 15934, + "expression": { + "type": "AssignmentExpression", + "start": 15685, + "end": 15775, "loc": { "start": { - "line": 295, - "column": 36 + "line": 299, + "column": 16 }, "end": { - "line": 295, - "column": 48 + "line": 299, + "column": 106 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 15685, + "end": 15751, + "loc": { + "start": { + "line": 299, + "column": 16 + }, + "end": { + "line": 299, + "column": 82 + } }, - "identifierName": "entityMeshes" + "object": { + "type": "MemberExpression", + "start": 15685, + "end": 15716, + "loc": { + "start": { + "line": 299, + "column": 16 + }, + "end": { + "line": 299, + "column": 47 + } + }, + "object": { + "type": "Identifier", + "start": 15685, + "end": 15689, + "loc": { + "start": { + "line": 299, + "column": 16 + }, + "end": { + "line": 299, + "column": 20 + }, + "identifierName": "data" + }, + "name": "data", + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 15690, + "end": 15716, + "loc": { + "start": { + "line": 299, + "column": 21 + }, + "end": { + "line": 299, + "column": 47 + }, + "identifierName": "eachMeshMaterialAttributes" + }, + "name": "eachMeshMaterialAttributes" + }, + "computed": false, + "leadingComments": null + }, + "property": { + "type": "UpdateExpression", + "start": 15717, + "end": 15750, + "loc": { + "start": { + "line": 299, + "column": 48 + }, + "end": { + "line": 299, + "column": 81 + } + }, + "operator": "++", + "prefix": false, + "argument": { + "type": "Identifier", + "start": 15717, + "end": 15748, + "loc": { + "start": { + "line": 299, + "column": 48 + }, + "end": { + "line": 299, + "column": 79 + }, + "identifierName": "eachMeshMaterialAttributesIndex" + }, + "name": "eachMeshMaterialAttributesIndex" + } + }, + "computed": true, + "leadingComments": null }, - "name": "entityMeshes" - }, - "property": { - "type": "Identifier", - "start": 15935, - "end": 15941, - "loc": { - "start": { - "line": 295, - "column": 49 + "right": { + "type": "BinaryExpression", + "start": 15755, + "end": 15774, + "loc": { + "start": { + "line": 299, + "column": 86 + }, + "end": { + "line": 299, + "column": 105 + } }, - "end": { - "line": 295, - "column": 55 + "left": { + "type": "MemberExpression", + "start": 15755, + "end": 15768, + "loc": { + "start": { + "line": 299, + "column": 86 + }, + "end": { + "line": 299, + "column": 99 + } + }, + "object": { + "type": "MemberExpression", + "start": 15755, + "end": 15765, + "loc": { + "start": { + "line": 299, + "column": 86 + }, + "end": { + "line": 299, + "column": 96 + } + }, + "object": { + "type": "Identifier", + "start": 15755, + "end": 15759, + "loc": { + "start": { + "line": 299, + "column": 86 + }, + "end": { + "line": 299, + "column": 90 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "property": { + "type": "Identifier", + "start": 15760, + "end": 15765, + "loc": { + "start": { + "line": 299, + "column": 91 + }, + "end": { + "line": 299, + "column": 96 + }, + "identifierName": "color" + }, + "name": "color" + }, + "computed": false + }, + "property": { + "type": "NumericLiteral", + "start": 15766, + "end": 15767, + "loc": { + "start": { + "line": 299, + "column": 97 + }, + "end": { + "line": 299, + "column": 98 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "computed": true }, - "identifierName": "length" + "operator": "*", + "right": { + "type": "NumericLiteral", + "start": 15771, + "end": 15774, + "loc": { + "start": { + "line": 299, + "column": 102 + }, + "end": { + "line": 299, + "column": 105 + } + }, + "extra": { + "rawValue": 255, + "raw": "255" + }, + "value": 255 + }, + "extra": { + "parenthesized": true, + "parenStart": 15754 + } }, - "name": "length" + "leadingComments": null }, - "computed": false - } - } - ], - "kind": "const" - }, - { - "type": "ForStatement", - "start": 15956, - "end": 16266, - "loc": { - "start": { - "line": 297, - "column": 12 - }, - "end": { - "line": 304, - "column": 13 - } - }, - "init": { - "type": "VariableDeclaration", - "start": 15961, - "end": 15970, - "loc": { - "start": { - "line": 297, - "column": 17 + "leadingComments": [ + { + "type": "CommentLine", + "value": " Color RGB", + "start": 15656, + "end": 15668, + "loc": { + "start": { + "line": 298, + "column": 108 + }, + "end": { + "line": 298, + "column": 120 + } + } + } + ] }, - "end": { - "line": 297, - "column": 26 - } - }, - "declarations": [ { - "type": "VariableDeclarator", - "start": 15965, - "end": 15970, + "type": "ExpressionStatement", + "start": 15793, + "end": 15884, "loc": { "start": { - "line": 297, - "column": 21 + "line": 300, + "column": 16 }, "end": { - "line": 297, - "column": 26 + "line": 300, + "column": 107 } }, - "id": { - "type": "Identifier", - "start": 15965, - "end": 15966, + "expression": { + "type": "AssignmentExpression", + "start": 15793, + "end": 15883, "loc": { "start": { - "line": 297, - "column": 21 + "line": 300, + "column": 16 }, "end": { - "line": 297, - "column": 22 + "line": 300, + "column": 106 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 15793, + "end": 15859, + "loc": { + "start": { + "line": 300, + "column": 16 + }, + "end": { + "line": 300, + "column": 82 + } }, - "identifierName": "k" + "object": { + "type": "MemberExpression", + "start": 15793, + "end": 15824, + "loc": { + "start": { + "line": 300, + "column": 16 + }, + "end": { + "line": 300, + "column": 47 + } + }, + "object": { + "type": "Identifier", + "start": 15793, + "end": 15797, + "loc": { + "start": { + "line": 300, + "column": 16 + }, + "end": { + "line": 300, + "column": 20 + }, + "identifierName": "data" + }, + "name": "data" + }, + "property": { + "type": "Identifier", + "start": 15798, + "end": 15824, + "loc": { + "start": { + "line": 300, + "column": 21 + }, + "end": { + "line": 300, + "column": 47 + }, + "identifierName": "eachMeshMaterialAttributes" + }, + "name": "eachMeshMaterialAttributes" + }, + "computed": false + }, + "property": { + "type": "UpdateExpression", + "start": 15825, + "end": 15858, + "loc": { + "start": { + "line": 300, + "column": 48 + }, + "end": { + "line": 300, + "column": 81 + } + }, + "operator": "++", + "prefix": false, + "argument": { + "type": "Identifier", + "start": 15825, + "end": 15856, + "loc": { + "start": { + "line": 300, + "column": 48 + }, + "end": { + "line": 300, + "column": 79 + }, + "identifierName": "eachMeshMaterialAttributesIndex" + }, + "name": "eachMeshMaterialAttributesIndex" + } + }, + "computed": true }, - "name": "k" - }, - "init": { - "type": "NumericLiteral", - "start": 15969, - "end": 15970, - "loc": { - "start": { - "line": 297, - "column": 25 + "right": { + "type": "BinaryExpression", + "start": 15863, + "end": 15882, + "loc": { + "start": { + "line": 300, + "column": 86 + }, + "end": { + "line": 300, + "column": 105 + } }, - "end": { - "line": 297, - "column": 26 + "left": { + "type": "MemberExpression", + "start": 15863, + "end": 15876, + "loc": { + "start": { + "line": 300, + "column": 86 + }, + "end": { + "line": 300, + "column": 99 + } + }, + "object": { + "type": "MemberExpression", + "start": 15863, + "end": 15873, + "loc": { + "start": { + "line": 300, + "column": 86 + }, + "end": { + "line": 300, + "column": 96 + } + }, + "object": { + "type": "Identifier", + "start": 15863, + "end": 15867, + "loc": { + "start": { + "line": 300, + "column": 86 + }, + "end": { + "line": 300, + "column": 90 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "property": { + "type": "Identifier", + "start": 15868, + "end": 15873, + "loc": { + "start": { + "line": 300, + "column": 91 + }, + "end": { + "line": 300, + "column": 96 + }, + "identifierName": "color" + }, + "name": "color" + }, + "computed": false + }, + "property": { + "type": "NumericLiteral", + "start": 15874, + "end": 15875, + "loc": { + "start": { + "line": 300, + "column": 97 + }, + "end": { + "line": 300, + "column": 98 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + }, + "computed": true + }, + "operator": "*", + "right": { + "type": "NumericLiteral", + "start": 15879, + "end": 15882, + "loc": { + "start": { + "line": 300, + "column": 102 + }, + "end": { + "line": 300, + "column": 105 + } + }, + "extra": { + "rawValue": 255, + "raw": "255" + }, + "value": 255 + }, + "extra": { + "parenthesized": true, + "parenStart": 15862 } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 + } } - } - ], - "kind": "let" - }, - "test": { - "type": "BinaryExpression", - "start": 15972, - "end": 15991, - "loc": { - "start": { - "line": 297, - "column": 28 - }, - "end": { - "line": 297, - "column": 47 - } - }, - "left": { - "type": "Identifier", - "start": 15972, - "end": 15973, - "loc": { - "start": { - "line": 297, - "column": 28 - }, - "end": { - "line": 297, - "column": 29 - }, - "identifierName": "k" - }, - "name": "k" - }, - "operator": "<", - "right": { - "type": "Identifier", - "start": 15976, - "end": 15991, - "loc": { - "start": { - "line": 297, - "column": 32 - }, - "end": { - "line": 297, - "column": 47 - }, - "identifierName": "numEntityMeshes" - }, - "name": "numEntityMeshes" - } - }, - "update": { - "type": "UpdateExpression", - "start": 15993, - "end": 15996, - "loc": { - "start": { - "line": 297, - "column": 49 - }, - "end": { - "line": 297, - "column": 52 - } - }, - "operator": "++", - "prefix": false, - "argument": { - "type": "Identifier", - "start": 15993, - "end": 15994, - "loc": { - "start": { - "line": 297, - "column": 49 - }, - "end": { - "line": 297, - "column": 50 - }, - "identifierName": "k" - }, - "name": "k" - } - }, - "body": { - "type": "BlockStatement", - "start": 15998, - "end": 16266, - "loc": { - "start": { - "line": 297, - "column": 54 }, - "end": { - "line": 304, - "column": 13 - } - }, - "body": [ { - "type": "VariableDeclaration", - "start": 16017, - "end": 16046, + "type": "ExpressionStatement", + "start": 15901, + "end": 15991, "loc": { "start": { - "line": 299, + "line": 301, "column": 16 }, "end": { - "line": 299, - "column": 45 + "line": 301, + "column": 106 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 16023, - "end": 16045, - "loc": { - "start": { - "line": 299, - "column": 22 - }, - "end": { - "line": 299, - "column": 44 - } + "expression": { + "type": "AssignmentExpression", + "start": 15901, + "end": 15990, + "loc": { + "start": { + "line": 301, + "column": 16 }, - "id": { - "type": "Identifier", - "start": 16023, - "end": 16027, - "loc": { - "start": { - "line": 299, - "column": 22 - }, - "end": { - "line": 299, - "column": 26 - }, - "identifierName": "mesh" + "end": { + "line": 301, + "column": 105 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 15901, + "end": 15967, + "loc": { + "start": { + "line": 301, + "column": 16 }, - "name": "mesh" + "end": { + "line": 301, + "column": 82 + } }, - "init": { + "object": { "type": "MemberExpression", - "start": 16030, - "end": 16045, + "start": 15901, + "end": 15932, "loc": { "start": { - "line": 299, - "column": 29 + "line": 301, + "column": 16 }, "end": { - "line": 299, - "column": 44 + "line": 301, + "column": 47 } }, "object": { "type": "Identifier", - "start": 16030, - "end": 16042, + "start": 15901, + "end": 15905, "loc": { "start": { - "line": 299, - "column": 29 + "line": 301, + "column": 16 }, "end": { - "line": 299, - "column": 41 + "line": 301, + "column": 20 }, - "identifierName": "entityMeshes" + "identifierName": "data" }, - "name": "entityMeshes" + "name": "data" }, "property": { "type": "Identifier", - "start": 16043, - "end": 16044, + "start": 15906, + "end": 15932, "loc": { "start": { - "line": 299, - "column": 42 + "line": 301, + "column": 21 }, "end": { - "line": 299, - "column": 43 + "line": 301, + "column": 47 }, - "identifierName": "k" + "identifierName": "eachMeshMaterialAttributes" }, - "name": "k" - }, - "computed": true - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 16063, - "end": 16094, - "loc": { - "start": { - "line": 300, - "column": 16 - }, - "end": { - "line": 300, - "column": 47 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 16069, - "end": 16093, - "loc": { - "start": { - "line": 300, - "column": 22 + "name": "eachMeshMaterialAttributes" }, - "end": { - "line": 300, - "column": 46 - } + "computed": false }, - "id": { - "type": "Identifier", - "start": 16069, - "end": 16077, + "property": { + "type": "UpdateExpression", + "start": 15933, + "end": 15966, "loc": { "start": { - "line": 300, - "column": 22 + "line": 301, + "column": 48 }, "end": { - "line": 300, - "column": 30 + "line": 301, + "column": 81 + } + }, + "operator": "++", + "prefix": false, + "argument": { + "type": "Identifier", + "start": 15933, + "end": 15964, + "loc": { + "start": { + "line": 301, + "column": 48 + }, + "end": { + "line": 301, + "column": 79 + }, + "identifierName": "eachMeshMaterialAttributesIndex" }, - "identifierName": "geometry" + "name": "eachMeshMaterialAttributesIndex" + } + }, + "computed": true + }, + "right": { + "type": "BinaryExpression", + "start": 15971, + "end": 15989, + "loc": { + "start": { + "line": 301, + "column": 86 }, - "name": "geometry" + "end": { + "line": 301, + "column": 104 + } }, - "init": { + "left": { "type": "MemberExpression", - "start": 16080, - "end": 16093, + "start": 15971, + "end": 15983, "loc": { "start": { - "line": 300, - "column": 33 + "line": 301, + "column": 86 }, "end": { - "line": 300, - "column": 46 + "line": 301, + "column": 98 } }, "object": { "type": "Identifier", - "start": 16080, - "end": 16084, + "start": 15971, + "end": 15975, "loc": { "start": { - "line": 300, - "column": 33 + "line": 301, + "column": 86 }, "end": { - "line": 300, - "column": 37 + "line": 301, + "column": 90 }, "identifierName": "mesh" }, @@ -27094,131 +26573,334 @@ }, "property": { "type": "Identifier", - "start": 16085, - "end": 16093, + "start": 15976, + "end": 15983, "loc": { "start": { - "line": 300, - "column": 38 + "line": 301, + "column": 91 }, "end": { - "line": 300, - "column": 46 + "line": 301, + "column": 98 }, - "identifierName": "geometry" + "identifierName": "opacity" }, - "name": "geometry" + "name": "opacity" }, "computed": false + }, + "operator": "*", + "right": { + "type": "NumericLiteral", + "start": 15986, + "end": 15989, + "loc": { + "start": { + "line": 301, + "column": 101 + }, + "end": { + "line": 301, + "column": 104 + } + }, + "extra": { + "rawValue": 255, + "raw": "255" + }, + "value": 255 + }, + "extra": { + "parenthesized": true, + "parenStart": 15970 } } - ], - "kind": "const" + }, + "trailingComments": [ + { + "type": "CommentLine", + "value": " Opacity", + "start": 15992, + "end": 16002, + "loc": { + "start": { + "line": 301, + "column": 107 + }, + "end": { + "line": 301, + "column": 117 + } + } + } + ] }, { - "type": "VariableDeclaration", - "start": 16111, - "end": 16156, + "type": "ExpressionStatement", + "start": 16019, + "end": 16110, "loc": { "start": { - "line": 301, + "line": 302, "column": 16 }, "end": { - "line": 301, - "column": 61 + "line": 302, + "column": 107 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 16117, - "end": 16155, + "expression": { + "type": "AssignmentExpression", + "start": 16019, + "end": 16109, + "loc": { + "start": { + "line": 302, + "column": 16 + }, + "end": { + "line": 302, + "column": 106 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 16019, + "end": 16085, "loc": { "start": { - "line": 301, - "column": 22 + "line": 302, + "column": 16 }, "end": { - "line": 301, - "column": 60 + "line": 302, + "column": 82 } }, - "id": { - "type": "Identifier", - "start": 16117, - "end": 16130, + "object": { + "type": "MemberExpression", + "start": 16019, + "end": 16050, "loc": { "start": { - "line": 301, - "column": 22 + "line": 302, + "column": 16 }, "end": { - "line": 301, - "column": 35 + "line": 302, + "column": 47 + } + }, + "object": { + "type": "Identifier", + "start": 16019, + "end": 16023, + "loc": { + "start": { + "line": 302, + "column": 16 + }, + "end": { + "line": 302, + "column": 20 + }, + "identifierName": "data" }, - "identifierName": "geometryIndex" + "name": "data", + "leadingComments": null }, - "name": "geometryIndex" + "property": { + "type": "Identifier", + "start": 16024, + "end": 16050, + "loc": { + "start": { + "line": 302, + "column": 21 + }, + "end": { + "line": 302, + "column": 47 + }, + "identifierName": "eachMeshMaterialAttributes" + }, + "name": "eachMeshMaterialAttributes" + }, + "computed": false, + "leadingComments": null }, - "init": { + "property": { + "type": "UpdateExpression", + "start": 16051, + "end": 16084, + "loc": { + "start": { + "line": 302, + "column": 48 + }, + "end": { + "line": 302, + "column": 81 + } + }, + "operator": "++", + "prefix": false, + "argument": { + "type": "Identifier", + "start": 16051, + "end": 16082, + "loc": { + "start": { + "line": 302, + "column": 48 + }, + "end": { + "line": 302, + "column": 79 + }, + "identifierName": "eachMeshMaterialAttributesIndex" + }, + "name": "eachMeshMaterialAttributesIndex" + } + }, + "computed": true, + "leadingComments": null + }, + "right": { + "type": "BinaryExpression", + "start": 16089, + "end": 16108, + "loc": { + "start": { + "line": 302, + "column": 86 + }, + "end": { + "line": 302, + "column": 105 + } + }, + "left": { "type": "MemberExpression", - "start": 16133, - "end": 16155, + "start": 16089, + "end": 16102, "loc": { "start": { - "line": 301, - "column": 38 + "line": 302, + "column": 86 }, "end": { - "line": 301, - "column": 60 + "line": 302, + "column": 99 } }, "object": { "type": "Identifier", - "start": 16133, - "end": 16141, + "start": 16089, + "end": 16093, "loc": { "start": { - "line": 301, - "column": 38 + "line": 302, + "column": 86 }, "end": { - "line": 301, - "column": 46 + "line": 302, + "column": 90 }, - "identifierName": "geometry" + "identifierName": "mesh" }, - "name": "geometry" + "name": "mesh" }, "property": { "type": "Identifier", - "start": 16142, - "end": 16155, + "start": 16094, + "end": 16102, "loc": { "start": { - "line": 301, - "column": 47 + "line": 302, + "column": 91 }, "end": { - "line": 301, - "column": 60 + "line": 302, + "column": 99 }, - "identifierName": "geometryIndex" + "identifierName": "metallic" }, - "name": "geometryIndex" + "name": "metallic" }, "computed": false + }, + "operator": "*", + "right": { + "type": "NumericLiteral", + "start": 16105, + "end": 16108, + "loc": { + "start": { + "line": 302, + "column": 102 + }, + "end": { + "line": 302, + "column": 105 + } + }, + "extra": { + "rawValue": 255, + "raw": "255" + }, + "value": 255 + }, + "extra": { + "parenthesized": true, + "parenStart": 16088 + } + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Opacity", + "start": 15992, + "end": 16002, + "loc": { + "start": { + "line": 301, + "column": 107 + }, + "end": { + "line": 301, + "column": 117 + } } } ], - "kind": "const" + "trailingComments": [ + { + "type": "CommentLine", + "value": " Metallic", + "start": 16111, + "end": 16122, + "loc": { + "start": { + "line": 302, + "column": 108 + }, + "end": { + "line": 302, + "column": 119 + } + } + } + ] }, { "type": "ExpressionStatement", - "start": 16174, - "end": 16252, + "start": 16139, + "end": 16231, "loc": { "start": { "line": 303, @@ -27226,13 +26908,13 @@ }, "end": { "line": 303, - "column": 94 + "column": 108 } }, "expression": { "type": "AssignmentExpression", - "start": 16174, - "end": 16251, + "start": 16139, + "end": 16230, "loc": { "start": { "line": 303, @@ -27240,14 +26922,14 @@ }, "end": { "line": 303, - "column": 93 + "column": 107 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 16174, - "end": 16235, + "start": 16139, + "end": 16205, "loc": { "start": { "line": 303, @@ -27255,13 +26937,13 @@ }, "end": { "line": 303, - "column": 77 + "column": 82 } }, "object": { "type": "MemberExpression", - "start": 16174, - "end": 16204, + "start": 16139, + "end": 16170, "loc": { "start": { "line": 303, @@ -27269,13 +26951,13 @@ }, "end": { "line": 303, - "column": 46 + "column": 47 } }, "object": { "type": "Identifier", - "start": 16174, - "end": 16178, + "start": 16139, + "end": 16143, "loc": { "start": { "line": 303, @@ -27287,12 +26969,13 @@ }, "identifierName": "data" }, - "name": "data" + "name": "data", + "leadingComments": null }, "property": { "type": "Identifier", - "start": 16179, - "end": 16204, + "start": 16144, + "end": 16170, "loc": { "start": { "line": 303, @@ -27300,18 +26983,19 @@ }, "end": { "line": 303, - "column": 46 + "column": 47 }, - "identifierName": "eachMeshGeometriesPortion" + "identifierName": "eachMeshMaterialAttributes" }, - "name": "eachMeshGeometriesPortion" + "name": "eachMeshMaterialAttributes" }, - "computed": false + "computed": false, + "leadingComments": null }, "property": { - "type": "BinaryExpression", - "start": 16206, - "end": 16234, + "type": "UpdateExpression", + "start": 16171, + "end": 16204, "loc": { "start": { "line": 303, @@ -27319,13 +27003,15 @@ }, "end": { "line": 303, - "column": 76 + "column": 81 } }, - "left": { + "operator": "++", + "prefix": false, + "argument": { "type": "Identifier", - "start": 16206, - "end": 16230, + "start": 16171, + "end": 16202, "loc": { "start": { "line": 303, @@ -27333,51 +27019,213 @@ }, "end": { "line": 303, - "column": 72 + "column": 79 }, - "identifierName": "countEntityMeshesPortion" + "identifierName": "eachMeshMaterialAttributesIndex" }, - "name": "countEntityMeshesPortion" + "name": "eachMeshMaterialAttributesIndex" + } + }, + "computed": true, + "leadingComments": null + }, + "right": { + "type": "BinaryExpression", + "start": 16209, + "end": 16229, + "loc": { + "start": { + "line": 303, + "column": 86 }, - "operator": "+", - "right": { + "end": { + "line": 303, + "column": 106 + } + }, + "left": { + "type": "MemberExpression", + "start": 16209, + "end": 16223, + "loc": { + "start": { + "line": 303, + "column": 86 + }, + "end": { + "line": 303, + "column": 100 + } + }, + "object": { "type": "Identifier", - "start": 16233, - "end": 16234, + "start": 16209, + "end": 16213, "loc": { "start": { "line": 303, - "column": 75 + "column": 86 }, "end": { "line": 303, - "column": 76 + "column": 90 }, - "identifierName": "k" + "identifierName": "mesh" }, - "name": "k" - } + "name": "mesh" + }, + "property": { + "type": "Identifier", + "start": 16214, + "end": 16223, + "loc": { + "start": { + "line": 303, + "column": 91 + }, + "end": { + "line": 303, + "column": 100 + }, + "identifierName": "roughness" + }, + "name": "roughness" + }, + "computed": false }, - "computed": true + "operator": "*", + "right": { + "type": "NumericLiteral", + "start": 16226, + "end": 16229, + "loc": { + "start": { + "line": 303, + "column": 103 + }, + "end": { + "line": 303, + "column": 106 + } + }, + "extra": { + "rawValue": 255, + "raw": "255" + }, + "value": 255 + }, + "extra": { + "parenthesized": true, + "parenStart": 16208 + } }, - "right": { - "type": "Identifier", - "start": 16238, - "end": 16251, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Metallic", + "start": 16111, + "end": 16122, + "loc": { + "start": { + "line": 302, + "column": 108 + }, + "end": { + "line": 302, + "column": 119 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentLine", + "value": " Roughness", + "start": 16232, + "end": 16244, "loc": { "start": { "line": 303, - "column": 80 + "column": 109 }, "end": { "line": 303, - "column": 93 + "column": 121 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 16262, + "end": 16274, + "loc": { + "start": { + "line": 305, + "column": 16 + }, + "end": { + "line": 305, + "column": 28 + } + }, + "expression": { + "type": "UpdateExpression", + "start": 16262, + "end": 16273, + "loc": { + "start": { + "line": 305, + "column": 16 + }, + "end": { + "line": 305, + "column": 27 + } + }, + "operator": "++", + "prefix": false, + "argument": { + "type": "Identifier", + "start": 16262, + "end": 16271, + "loc": { + "start": { + "line": 305, + "column": 16 }, - "identifierName": "geometryIndex" + "end": { + "line": 305, + "column": 25 + }, + "identifierName": "meshIndex" }, - "name": "geometryIndex" + "name": "meshIndex", + "leadingComments": null + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Roughness", + "start": 16232, + "end": 16244, + "loc": { + "start": { + "line": 303, + "column": 109 + }, + "end": { + "line": 303, + "column": 121 + } + } } - } + ] } ], "directives": [] @@ -27385,72 +27233,72 @@ }, { "type": "ExpressionStatement", - "start": 16280, - "end": 16330, + "start": 16302, + "end": 16352, "loc": { "start": { - "line": 306, + "line": 308, "column": 12 }, "end": { - "line": 306, + "line": 308, "column": 62 } }, "expression": { "type": "AssignmentExpression", - "start": 16280, - "end": 16329, + "start": 16302, + "end": 16351, "loc": { "start": { - "line": 306, + "line": 308, "column": 12 }, "end": { - "line": 306, + "line": 308, "column": 61 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 16280, - "end": 16311, + "start": 16302, + "end": 16333, "loc": { "start": { - "line": 306, + "line": 308, "column": 12 }, "end": { - "line": 306, + "line": 308, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 16280, - "end": 16297, + "start": 16302, + "end": 16319, "loc": { "start": { - "line": 306, + "line": 308, "column": 12 }, "end": { - "line": 306, + "line": 308, "column": 29 } }, "object": { "type": "Identifier", - "start": 16280, - "end": 16284, + "start": 16302, + "end": 16306, "loc": { "start": { - "line": 306, + "line": 308, "column": 12 }, "end": { - "line": 306, + "line": 308, "column": 16 }, "identifierName": "data" @@ -27459,15 +27307,15 @@ }, "property": { "type": "Identifier", - "start": 16285, - "end": 16297, + "start": 16307, + "end": 16319, "loc": { "start": { - "line": 306, + "line": 308, "column": 17 }, "end": { - "line": 306, + "line": 308, "column": 29 }, "identifierName": "eachEntityId" @@ -27478,15 +27326,15 @@ }, "property": { "type": "Identifier", - "start": 16299, - "end": 16310, + "start": 16321, + "end": 16332, "loc": { "start": { - "line": 306, + "line": 308, "column": 31 }, "end": { - "line": 306, + "line": 308, "column": 42 }, "identifierName": "entityIndex" @@ -27497,29 +27345,29 @@ }, "right": { "type": "MemberExpression", - "start": 16314, - "end": 16329, + "start": 16336, + "end": 16351, "loc": { "start": { - "line": 306, + "line": 308, "column": 46 }, "end": { - "line": 306, + "line": 308, "column": 61 } }, "object": { "type": "Identifier", - "start": 16314, - "end": 16320, + "start": 16336, + "end": 16342, "loc": { "start": { - "line": 306, + "line": 308, "column": 46 }, "end": { - "line": 306, + "line": 308, "column": 52 }, "identifierName": "entity" @@ -27528,15 +27376,15 @@ }, "property": { "type": "Identifier", - "start": 16321, - "end": 16329, + "start": 16343, + "end": 16351, "loc": { "start": { - "line": 306, + "line": 308, "column": 53 }, "end": { - "line": 306, + "line": 308, "column": 61 }, "identifierName": "entityId" @@ -27549,72 +27397,72 @@ }, { "type": "ExpressionStatement", - "start": 16343, - "end": 16412, + "start": 16365, + "end": 16434, "loc": { "start": { - "line": 307, + "line": 309, "column": 12 }, "end": { - "line": 307, + "line": 309, "column": 81 } }, "expression": { "type": "AssignmentExpression", - "start": 16343, - "end": 16411, + "start": 16365, + "end": 16433, "loc": { "start": { - "line": 307, + "line": 309, "column": 12 }, "end": { - "line": 307, + "line": 309, "column": 80 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 16343, - "end": 16384, + "start": 16365, + "end": 16406, "loc": { "start": { - "line": 307, + "line": 309, "column": 12 }, "end": { - "line": 307, + "line": 309, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 16343, - "end": 16371, + "start": 16365, + "end": 16393, "loc": { "start": { - "line": 307, + "line": 309, "column": 12 }, "end": { - "line": 307, + "line": 309, "column": 40 } }, "object": { "type": "Identifier", - "start": 16343, - "end": 16347, + "start": 16365, + "end": 16369, "loc": { "start": { - "line": 307, + "line": 309, "column": 12 }, "end": { - "line": 307, + "line": 309, "column": 16 }, "identifierName": "data" @@ -27623,15 +27471,15 @@ }, "property": { "type": "Identifier", - "start": 16348, - "end": 16371, + "start": 16370, + "end": 16393, "loc": { "start": { - "line": 307, + "line": 309, "column": 17 }, "end": { - "line": 307, + "line": 309, "column": 40 }, "identifierName": "eachEntityMeshesPortion" @@ -27642,15 +27490,15 @@ }, "property": { "type": "Identifier", - "start": 16372, - "end": 16383, + "start": 16394, + "end": 16405, "loc": { "start": { - "line": 307, + "line": 309, "column": 41 }, "end": { - "line": 307, + "line": 309, "column": 52 }, "identifierName": "entityIndex" @@ -27661,15 +27509,15 @@ }, "right": { "type": "Identifier", - "start": 16387, - "end": 16411, + "start": 16409, + "end": 16433, "loc": { "start": { - "line": 307, + "line": 309, "column": 56 }, "end": { - "line": 307, + "line": 309, "column": 80 }, "identifierName": "countEntityMeshesPortion" @@ -27681,15 +27529,15 @@ { "type": "CommentLine", "value": " <<<<<<<<<<<<<<<<<<<< Error here? Order/value of countEntityMeshesPortion correct?", - "start": 16413, - "end": 16497, + "start": 16435, + "end": 16519, "loc": { "start": { - "line": 307, + "line": 309, "column": 82 }, "end": { - "line": 307, + "line": 309, "column": 166 } } @@ -27698,29 +27546,29 @@ }, { "type": "ExpressionStatement", - "start": 16511, - "end": 16525, + "start": 16533, + "end": 16547, "loc": { "start": { - "line": 309, + "line": 311, "column": 12 }, "end": { - "line": 309, + "line": 311, "column": 26 } }, "expression": { "type": "UpdateExpression", - "start": 16511, - "end": 16524, + "start": 16533, + "end": 16546, "loc": { "start": { - "line": 309, + "line": 311, "column": 12 }, "end": { - "line": 309, + "line": 311, "column": 25 } }, @@ -27728,15 +27576,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 16511, - "end": 16522, + "start": 16533, + "end": 16544, "loc": { "start": { - "line": 309, + "line": 311, "column": 12 }, "end": { - "line": 309, + "line": 311, "column": 23 }, "identifierName": "entityIndex" @@ -27750,15 +27598,15 @@ { "type": "CommentLine", "value": " <<<<<<<<<<<<<<<<<<<< Error here? Order/value of countEntityMeshesPortion correct?", - "start": 16413, - "end": 16497, + "start": 16435, + "end": 16519, "loc": { "start": { - "line": 307, + "line": 309, "column": 82 }, "end": { - "line": 307, + "line": 309, "column": 166 } } @@ -27767,44 +27615,44 @@ }, { "type": "ExpressionStatement", - "start": 16538, - "end": 16582, + "start": 16560, + "end": 16604, "loc": { "start": { - "line": 310, + "line": 312, "column": 12 }, "end": { - "line": 310, + "line": 312, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 16538, - "end": 16581, + "start": 16560, + "end": 16603, "loc": { "start": { - "line": 310, + "line": 312, "column": 12 }, "end": { - "line": 310, + "line": 312, "column": 55 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 16538, - "end": 16562, + "start": 16560, + "end": 16584, "loc": { "start": { - "line": 310, + "line": 312, "column": 12 }, "end": { - "line": 310, + "line": 312, "column": 36 }, "identifierName": "countEntityMeshesPortion" @@ -27813,15 +27661,15 @@ }, "right": { "type": "Identifier", - "start": 16566, - "end": 16581, + "start": 16588, + "end": 16603, "loc": { "start": { - "line": 310, + "line": 312, "column": 40 }, "end": { - "line": 310, + "line": 312, "column": 55 }, "identifierName": "numEntityMeshes" @@ -27836,44 +27684,44 @@ }, { "type": "VariableDeclaration", - "start": 16602, - "end": 16638, + "start": 16624, + "end": 16660, "loc": { "start": { - "line": 313, + "line": 315, "column": 8 }, "end": { - "line": 313, + "line": 315, "column": 44 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16608, - "end": 16637, + "start": 16630, + "end": 16659, "loc": { "start": { - "line": 313, + "line": 315, "column": 14 }, "end": { - "line": 313, + "line": 315, "column": 43 } }, "id": { "type": "Identifier", - "start": 16608, - "end": 16621, + "start": 16630, + "end": 16643, "loc": { "start": { - "line": 313, + "line": 315, "column": 14 }, "end": { - "line": 313, + "line": 315, "column": 27 }, "identifierName": "tileAABBIndex" @@ -27882,29 +27730,29 @@ }, "init": { "type": "BinaryExpression", - "start": 16624, - "end": 16637, + "start": 16646, + "end": 16659, "loc": { "start": { - "line": 313, + "line": 315, "column": 30 }, "end": { - "line": 313, + "line": 315, "column": 43 } }, "left": { "type": "Identifier", - "start": 16624, - "end": 16633, + "start": 16646, + "end": 16655, "loc": { "start": { - "line": 313, + "line": 315, "column": 30 }, "end": { - "line": 313, + "line": 315, "column": 39 }, "identifierName": "tileIndex" @@ -27914,15 +27762,15 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 16636, - "end": 16637, + "start": 16658, + "end": 16659, "loc": { "start": { - "line": 313, + "line": 315, "column": 42 }, "end": { - "line": 313, + "line": 315, "column": 43 } }, @@ -27939,71 +27787,71 @@ }, { "type": "ExpressionStatement", - "start": 16648, - "end": 16695, + "start": 16670, + "end": 16717, "loc": { "start": { - "line": 315, + "line": 317, "column": 8 }, "end": { - "line": 315, + "line": 317, "column": 55 } }, "expression": { "type": "CallExpression", - "start": 16648, - "end": 16694, + "start": 16670, + "end": 16716, "loc": { "start": { - "line": 315, + "line": 317, "column": 8 }, "end": { - "line": 315, + "line": 317, "column": 54 } }, "callee": { "type": "MemberExpression", - "start": 16648, - "end": 16669, + "start": 16670, + "end": 16691, "loc": { "start": { - "line": 315, + "line": 317, "column": 8 }, "end": { - "line": 315, + "line": 317, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 16648, - "end": 16665, + "start": 16670, + "end": 16687, "loc": { "start": { - "line": 315, + "line": 317, "column": 8 }, "end": { - "line": 315, + "line": 317, "column": 25 } }, "object": { "type": "Identifier", - "start": 16648, - "end": 16652, + "start": 16670, + "end": 16674, "loc": { "start": { - "line": 315, + "line": 317, "column": 8 }, "end": { - "line": 315, + "line": 317, "column": 12 }, "identifierName": "data" @@ -28012,15 +27860,15 @@ }, "property": { "type": "Identifier", - "start": 16653, - "end": 16665, + "start": 16675, + "end": 16687, "loc": { "start": { - "line": 315, + "line": 317, "column": 13 }, "end": { - "line": 315, + "line": 317, "column": 25 }, "identifierName": "eachTileAABB" @@ -28031,15 +27879,15 @@ }, "property": { "type": "Identifier", - "start": 16666, - "end": 16669, + "start": 16688, + "end": 16691, "loc": { "start": { - "line": 315, + "line": 317, "column": 26 }, "end": { - "line": 315, + "line": 317, "column": 29 }, "identifierName": "set" @@ -28051,15 +27899,15 @@ "arguments": [ { "type": "Identifier", - "start": 16670, - "end": 16678, + "start": 16692, + "end": 16700, "loc": { "start": { - "line": 315, + "line": 317, "column": 30 }, "end": { - "line": 315, + "line": 317, "column": 38 }, "identifierName": "tileAABB" @@ -28068,15 +27916,15 @@ }, { "type": "Identifier", - "start": 16680, - "end": 16693, + "start": 16702, + "end": 16715, "loc": { "start": { - "line": 315, + "line": 317, "column": 40 }, "end": { - "line": 315, + "line": 317, "column": 53 }, "identifierName": "tileAABBIndex" @@ -28092,29 +27940,29 @@ }, { "type": "ReturnStatement", - "start": 16707, - "end": 16719, + "start": 16729, + "end": 16741, "loc": { "start": { - "line": 318, + "line": 320, "column": 4 }, "end": { - "line": 318, + "line": 320, "column": 16 } }, "argument": { "type": "Identifier", - "start": 16714, - "end": 16718, + "start": 16736, + "end": 16740, "loc": { "start": { - "line": 318, + "line": 320, "column": 11 }, "end": { - "line": 318, + "line": 320, "column": 15 }, "identifierName": "data" @@ -28128,29 +27976,29 @@ }, { "type": "FunctionDeclaration", - "start": 16723, - "end": 19090, + "start": 16745, + "end": 19112, "loc": { "start": { - "line": 321, + "line": 323, "column": 0 }, "end": { - "line": 355, + "line": 357, "column": 1 } }, "id": { "type": "Identifier", - "start": 16732, - "end": 16743, + "start": 16754, + "end": 16765, "loc": { "start": { - "line": 321, + "line": 323, "column": 9 }, "end": { - "line": 321, + "line": 323, "column": 20 }, "identifierName": "deflateData" @@ -28163,15 +28011,15 @@ "params": [ { "type": "Identifier", - "start": 16744, - "end": 16748, + "start": 16766, + "end": 16770, "loc": { "start": { - "line": 321, + "line": 323, "column": 21 }, "end": { - "line": 321, + "line": 323, "column": 25 }, "identifierName": "data" @@ -28181,59 +28029,59 @@ ], "body": { "type": "BlockStatement", - "start": 16750, - "end": 19090, + "start": 16772, + "end": 19112, "loc": { "start": { - "line": 321, + "line": 323, "column": 27 }, "end": { - "line": 355, + "line": 357, "column": 1 } }, "body": [ { "type": "ReturnStatement", - "start": 16756, - "end": 19088, + "start": 16778, + "end": 19110, "loc": { "start": { - "line": 322, + "line": 324, "column": 4 }, "end": { - "line": 354, + "line": 356, "column": 6 } }, "argument": { "type": "ObjectExpression", - "start": 16763, - "end": 19087, + "start": 16785, + "end": 19109, "loc": { "start": { - "line": 322, + "line": 324, "column": 11 }, "end": { - "line": 354, + "line": 356, "column": 5 } }, "properties": [ { "type": "ObjectProperty", - "start": 16773, - "end": 16823, + "start": 16795, + "end": 16845, "loc": { "start": { - "line": 323, + "line": 325, "column": 8 }, "end": { - "line": 323, + "line": 325, "column": 58 } }, @@ -28242,15 +28090,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 16773, - "end": 16781, + "start": 16795, + "end": 16803, "loc": { "start": { - "line": 323, + "line": 325, "column": 8 }, "end": { - "line": 323, + "line": 325, "column": 16 }, "identifierName": "metadata" @@ -28259,43 +28107,43 @@ }, "value": { "type": "CallExpression", - "start": 16783, - "end": 16823, + "start": 16805, + "end": 16845, "loc": { "start": { - "line": 323, + "line": 325, "column": 18 }, "end": { - "line": 323, + "line": 325, "column": 58 } }, "callee": { "type": "MemberExpression", - "start": 16783, - "end": 16795, + "start": 16805, + "end": 16817, "loc": { "start": { - "line": 323, + "line": 325, "column": 18 }, "end": { - "line": 323, + "line": 325, "column": 30 } }, "object": { "type": "Identifier", - "start": 16783, - "end": 16787, + "start": 16805, + "end": 16809, "loc": { "start": { - "line": 323, + "line": 325, "column": 18 }, "end": { - "line": 323, + "line": 325, "column": 22 }, "identifierName": "pako" @@ -28304,15 +28152,15 @@ }, "property": { "type": "Identifier", - "start": 16788, - "end": 16795, + "start": 16810, + "end": 16817, "loc": { "start": { - "line": 323, + "line": 325, "column": 23 }, "end": { - "line": 323, + "line": 325, "column": 30 }, "identifierName": "deflate" @@ -28324,29 +28172,29 @@ "arguments": [ { "type": "CallExpression", - "start": 16796, - "end": 16822, + "start": 16818, + "end": 16844, "loc": { "start": { - "line": 323, + "line": 325, "column": 31 }, "end": { - "line": 323, + "line": 325, "column": 57 } }, "callee": { "type": "Identifier", - "start": 16796, - "end": 16807, + "start": 16818, + "end": 16829, "loc": { "start": { - "line": 323, + "line": 325, "column": 31 }, "end": { - "line": 323, + "line": 325, "column": 42 }, "identifierName": "deflateJSON" @@ -28356,29 +28204,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 16808, - "end": 16821, + "start": 16830, + "end": 16843, "loc": { "start": { - "line": 323, + "line": 325, "column": 43 }, "end": { - "line": 323, + "line": 325, "column": 56 } }, "object": { "type": "Identifier", - "start": 16808, - "end": 16812, + "start": 16830, + "end": 16834, "loc": { "start": { - "line": 323, + "line": 325, "column": 43 }, "end": { - "line": 323, + "line": 325, "column": 47 }, "identifierName": "data" @@ -28387,15 +28235,15 @@ }, "property": { "type": "Identifier", - "start": 16813, - "end": 16821, + "start": 16835, + "end": 16843, "loc": { "start": { - "line": 323, + "line": 325, "column": 48 }, "end": { - "line": 323, + "line": 325, "column": 56 }, "identifierName": "metadata" @@ -28411,15 +28259,15 @@ }, { "type": "ObjectProperty", - "start": 16833, - "end": 16883, + "start": 16855, + "end": 16905, "loc": { "start": { - "line": 324, + "line": 326, "column": 8 }, "end": { - "line": 324, + "line": 326, "column": 58 } }, @@ -28428,15 +28276,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 16833, - "end": 16844, + "start": 16855, + "end": 16866, "loc": { "start": { - "line": 324, + "line": 326, "column": 8 }, "end": { - "line": 324, + "line": 326, "column": 19 }, "identifierName": "textureData" @@ -28445,43 +28293,43 @@ }, "value": { "type": "CallExpression", - "start": 16846, - "end": 16883, + "start": 16868, + "end": 16905, "loc": { "start": { - "line": 324, + "line": 326, "column": 21 }, "end": { - "line": 324, + "line": 326, "column": 58 } }, "callee": { "type": "MemberExpression", - "start": 16846, - "end": 16858, + "start": 16868, + "end": 16880, "loc": { "start": { - "line": 324, + "line": 326, "column": 21 }, "end": { - "line": 324, + "line": 326, "column": 33 } }, "object": { "type": "Identifier", - "start": 16846, - "end": 16850, + "start": 16868, + "end": 16872, "loc": { "start": { - "line": 324, + "line": 326, "column": 21 }, "end": { - "line": 324, + "line": 326, "column": 25 }, "identifierName": "pako" @@ -28490,15 +28338,15 @@ }, "property": { "type": "Identifier", - "start": 16851, - "end": 16858, + "start": 16873, + "end": 16880, "loc": { "start": { - "line": 324, + "line": 326, "column": 26 }, "end": { - "line": 324, + "line": 326, "column": 33 }, "identifierName": "deflate" @@ -28510,43 +28358,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 16859, - "end": 16882, + "start": 16881, + "end": 16904, "loc": { "start": { - "line": 324, + "line": 326, "column": 34 }, "end": { - "line": 324, + "line": 326, "column": 57 } }, "object": { "type": "MemberExpression", - "start": 16859, - "end": 16875, + "start": 16881, + "end": 16897, "loc": { "start": { - "line": 324, + "line": 326, "column": 34 }, "end": { - "line": 324, + "line": 326, "column": 50 } }, "object": { "type": "Identifier", - "start": 16859, - "end": 16863, + "start": 16881, + "end": 16885, "loc": { "start": { - "line": 324, + "line": 326, "column": 34 }, "end": { - "line": 324, + "line": 326, "column": 38 }, "identifierName": "data" @@ -28555,15 +28403,15 @@ }, "property": { "type": "Identifier", - "start": 16864, - "end": 16875, + "start": 16886, + "end": 16897, "loc": { "start": { - "line": 324, + "line": 326, "column": 39 }, "end": { - "line": 324, + "line": 326, "column": 50 }, "identifierName": "textureData" @@ -28574,15 +28422,15 @@ }, "property": { "type": "Identifier", - "start": 16876, - "end": 16882, + "start": 16898, + "end": 16904, "loc": { "start": { - "line": 324, + "line": 326, "column": 51 }, "end": { - "line": 324, + "line": 326, "column": 57 }, "identifierName": "buffer" @@ -28596,15 +28444,15 @@ }, { "type": "ObjectProperty", - "start": 16893, - "end": 16965, + "start": 16915, + "end": 16987, "loc": { "start": { - "line": 325, + "line": 327, "column": 8 }, "end": { - "line": 325, + "line": 327, "column": 80 } }, @@ -28613,15 +28461,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 16893, - "end": 16915, + "start": 16915, + "end": 16937, "loc": { "start": { - "line": 325, + "line": 327, "column": 8 }, "end": { - "line": 325, + "line": 327, "column": 30 }, "identifierName": "eachTextureDataPortion" @@ -28630,43 +28478,43 @@ }, "value": { "type": "CallExpression", - "start": 16917, - "end": 16965, + "start": 16939, + "end": 16987, "loc": { "start": { - "line": 325, + "line": 327, "column": 32 }, "end": { - "line": 325, + "line": 327, "column": 80 } }, "callee": { "type": "MemberExpression", - "start": 16917, - "end": 16929, + "start": 16939, + "end": 16951, "loc": { "start": { - "line": 325, + "line": 327, "column": 32 }, "end": { - "line": 325, + "line": 327, "column": 44 } }, "object": { "type": "Identifier", - "start": 16917, - "end": 16921, + "start": 16939, + "end": 16943, "loc": { "start": { - "line": 325, + "line": 327, "column": 32 }, "end": { - "line": 325, + "line": 327, "column": 36 }, "identifierName": "pako" @@ -28675,15 +28523,15 @@ }, "property": { "type": "Identifier", - "start": 16922, - "end": 16929, + "start": 16944, + "end": 16951, "loc": { "start": { - "line": 325, + "line": 327, "column": 37 }, "end": { - "line": 325, + "line": 327, "column": 44 }, "identifierName": "deflate" @@ -28695,43 +28543,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 16930, - "end": 16964, + "start": 16952, + "end": 16986, "loc": { "start": { - "line": 325, + "line": 327, "column": 45 }, "end": { - "line": 325, + "line": 327, "column": 79 } }, "object": { "type": "MemberExpression", - "start": 16930, - "end": 16957, + "start": 16952, + "end": 16979, "loc": { "start": { - "line": 325, + "line": 327, "column": 45 }, "end": { - "line": 325, + "line": 327, "column": 72 } }, "object": { "type": "Identifier", - "start": 16930, - "end": 16934, + "start": 16952, + "end": 16956, "loc": { "start": { - "line": 325, + "line": 327, "column": 45 }, "end": { - "line": 325, + "line": 327, "column": 49 }, "identifierName": "data" @@ -28740,15 +28588,15 @@ }, "property": { "type": "Identifier", - "start": 16935, - "end": 16957, + "start": 16957, + "end": 16979, "loc": { "start": { - "line": 325, + "line": 327, "column": 50 }, "end": { - "line": 325, + "line": 327, "column": 72 }, "identifierName": "eachTextureDataPortion" @@ -28759,15 +28607,15 @@ }, "property": { "type": "Identifier", - "start": 16958, - "end": 16964, + "start": 16980, + "end": 16986, "loc": { "start": { - "line": 325, + "line": 327, "column": 73 }, "end": { - "line": 325, + "line": 327, "column": 79 }, "identifierName": "buffer" @@ -28781,15 +28629,15 @@ }, { "type": "ObjectProperty", - "start": 16975, - "end": 17045, + "start": 16997, + "end": 17067, "loc": { "start": { - "line": 326, + "line": 328, "column": 8 }, "end": { - "line": 326, + "line": 328, "column": 78 } }, @@ -28798,15 +28646,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 16975, - "end": 16996, + "start": 16997, + "end": 17018, "loc": { "start": { - "line": 326, + "line": 328, "column": 8 }, "end": { - "line": 326, + "line": 328, "column": 29 }, "identifierName": "eachTextureAttributes" @@ -28815,43 +28663,43 @@ }, "value": { "type": "CallExpression", - "start": 16998, - "end": 17045, + "start": 17020, + "end": 17067, "loc": { "start": { - "line": 326, + "line": 328, "column": 31 }, "end": { - "line": 326, + "line": 328, "column": 78 } }, "callee": { "type": "MemberExpression", - "start": 16998, - "end": 17010, + "start": 17020, + "end": 17032, "loc": { "start": { - "line": 326, + "line": 328, "column": 31 }, "end": { - "line": 326, + "line": 328, "column": 43 } }, "object": { "type": "Identifier", - "start": 16998, - "end": 17002, + "start": 17020, + "end": 17024, "loc": { "start": { - "line": 326, + "line": 328, "column": 31 }, "end": { - "line": 326, + "line": 328, "column": 35 }, "identifierName": "pako" @@ -28860,15 +28708,15 @@ }, "property": { "type": "Identifier", - "start": 17003, - "end": 17010, + "start": 17025, + "end": 17032, "loc": { "start": { - "line": 326, + "line": 328, "column": 36 }, "end": { - "line": 326, + "line": 328, "column": 43 }, "identifierName": "deflate" @@ -28880,43 +28728,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17011, - "end": 17044, + "start": 17033, + "end": 17066, "loc": { "start": { - "line": 326, + "line": 328, "column": 44 }, "end": { - "line": 326, + "line": 328, "column": 77 } }, "object": { "type": "MemberExpression", - "start": 17011, - "end": 17037, + "start": 17033, + "end": 17059, "loc": { "start": { - "line": 326, + "line": 328, "column": 44 }, "end": { - "line": 326, + "line": 328, "column": 70 } }, "object": { "type": "Identifier", - "start": 17011, - "end": 17015, + "start": 17033, + "end": 17037, "loc": { "start": { - "line": 326, + "line": 328, "column": 44 }, "end": { - "line": 326, + "line": 328, "column": 48 }, "identifierName": "data" @@ -28925,15 +28773,15 @@ }, "property": { "type": "Identifier", - "start": 17016, - "end": 17037, + "start": 17038, + "end": 17059, "loc": { "start": { - "line": 326, + "line": 328, "column": 49 }, "end": { - "line": 326, + "line": 328, "column": 70 }, "identifierName": "eachTextureAttributes" @@ -28944,15 +28792,15 @@ }, "property": { "type": "Identifier", - "start": 17038, - "end": 17044, + "start": 17060, + "end": 17066, "loc": { "start": { - "line": 326, + "line": 328, "column": 71 }, "end": { - "line": 326, + "line": 328, "column": 77 }, "identifierName": "buffer" @@ -28966,15 +28814,15 @@ }, { "type": "ObjectProperty", - "start": 17055, - "end": 17101, + "start": 17077, + "end": 17123, "loc": { "start": { - "line": 327, + "line": 329, "column": 8 }, "end": { - "line": 327, + "line": 329, "column": 54 } }, @@ -28983,15 +28831,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17055, - "end": 17064, + "start": 17077, + "end": 17086, "loc": { "start": { - "line": 327, + "line": 329, "column": 8 }, "end": { - "line": 327, + "line": 329, "column": 17 }, "identifierName": "positions" @@ -29000,43 +28848,43 @@ }, "value": { "type": "CallExpression", - "start": 17066, - "end": 17101, + "start": 17088, + "end": 17123, "loc": { "start": { - "line": 327, + "line": 329, "column": 19 }, "end": { - "line": 327, + "line": 329, "column": 54 } }, "callee": { "type": "MemberExpression", - "start": 17066, - "end": 17078, + "start": 17088, + "end": 17100, "loc": { "start": { - "line": 327, + "line": 329, "column": 19 }, "end": { - "line": 327, + "line": 329, "column": 31 } }, "object": { "type": "Identifier", - "start": 17066, - "end": 17070, + "start": 17088, + "end": 17092, "loc": { "start": { - "line": 327, + "line": 329, "column": 19 }, "end": { - "line": 327, + "line": 329, "column": 23 }, "identifierName": "pako" @@ -29045,15 +28893,15 @@ }, "property": { "type": "Identifier", - "start": 17071, - "end": 17078, + "start": 17093, + "end": 17100, "loc": { "start": { - "line": 327, + "line": 329, "column": 24 }, "end": { - "line": 327, + "line": 329, "column": 31 }, "identifierName": "deflate" @@ -29065,43 +28913,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17079, - "end": 17100, + "start": 17101, + "end": 17122, "loc": { "start": { - "line": 327, + "line": 329, "column": 32 }, "end": { - "line": 327, + "line": 329, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 17079, - "end": 17093, + "start": 17101, + "end": 17115, "loc": { "start": { - "line": 327, + "line": 329, "column": 32 }, "end": { - "line": 327, + "line": 329, "column": 46 } }, "object": { "type": "Identifier", - "start": 17079, - "end": 17083, + "start": 17101, + "end": 17105, "loc": { "start": { - "line": 327, + "line": 329, "column": 32 }, "end": { - "line": 327, + "line": 329, "column": 36 }, "identifierName": "data" @@ -29110,15 +28958,15 @@ }, "property": { "type": "Identifier", - "start": 17084, - "end": 17093, + "start": 17106, + "end": 17115, "loc": { "start": { - "line": 327, + "line": 329, "column": 37 }, "end": { - "line": 327, + "line": 329, "column": 46 }, "identifierName": "positions" @@ -29129,15 +28977,15 @@ }, "property": { "type": "Identifier", - "start": 17094, - "end": 17100, + "start": 17116, + "end": 17122, "loc": { "start": { - "line": 327, + "line": 329, "column": 47 }, "end": { - "line": 327, + "line": 329, "column": 53 }, "identifierName": "buffer" @@ -29151,15 +28999,15 @@ }, { "type": "ObjectProperty", - "start": 17111, - "end": 17153, + "start": 17133, + "end": 17175, "loc": { "start": { - "line": 328, + "line": 330, "column": 8 }, "end": { - "line": 328, + "line": 330, "column": 50 } }, @@ -29168,15 +29016,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17111, - "end": 17118, + "start": 17133, + "end": 17140, "loc": { "start": { - "line": 328, + "line": 330, "column": 8 }, "end": { - "line": 328, + "line": 330, "column": 15 }, "identifierName": "normals" @@ -29185,43 +29033,43 @@ }, "value": { "type": "CallExpression", - "start": 17120, - "end": 17153, + "start": 17142, + "end": 17175, "loc": { "start": { - "line": 328, + "line": 330, "column": 17 }, "end": { - "line": 328, + "line": 330, "column": 50 } }, "callee": { "type": "MemberExpression", - "start": 17120, - "end": 17132, + "start": 17142, + "end": 17154, "loc": { "start": { - "line": 328, + "line": 330, "column": 17 }, "end": { - "line": 328, + "line": 330, "column": 29 } }, "object": { "type": "Identifier", - "start": 17120, - "end": 17124, + "start": 17142, + "end": 17146, "loc": { "start": { - "line": 328, + "line": 330, "column": 17 }, "end": { - "line": 328, + "line": 330, "column": 21 }, "identifierName": "pako" @@ -29230,15 +29078,15 @@ }, "property": { "type": "Identifier", - "start": 17125, - "end": 17132, + "start": 17147, + "end": 17154, "loc": { "start": { - "line": 328, + "line": 330, "column": 22 }, "end": { - "line": 328, + "line": 330, "column": 29 }, "identifierName": "deflate" @@ -29250,43 +29098,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17133, - "end": 17152, + "start": 17155, + "end": 17174, "loc": { "start": { - "line": 328, + "line": 330, "column": 30 }, "end": { - "line": 328, + "line": 330, "column": 49 } }, "object": { "type": "MemberExpression", - "start": 17133, - "end": 17145, + "start": 17155, + "end": 17167, "loc": { "start": { - "line": 328, + "line": 330, "column": 30 }, "end": { - "line": 328, + "line": 330, "column": 42 } }, "object": { "type": "Identifier", - "start": 17133, - "end": 17137, + "start": 17155, + "end": 17159, "loc": { "start": { - "line": 328, + "line": 330, "column": 30 }, "end": { - "line": 328, + "line": 330, "column": 34 }, "identifierName": "data" @@ -29295,15 +29143,15 @@ }, "property": { "type": "Identifier", - "start": 17138, - "end": 17145, + "start": 17160, + "end": 17167, "loc": { "start": { - "line": 328, + "line": 330, "column": 35 }, "end": { - "line": 328, + "line": 330, "column": 42 }, "identifierName": "normals" @@ -29314,15 +29162,15 @@ }, "property": { "type": "Identifier", - "start": 17146, - "end": 17152, + "start": 17168, + "end": 17174, "loc": { "start": { - "line": 328, + "line": 330, "column": 43 }, "end": { - "line": 328, + "line": 330, "column": 49 }, "identifierName": "buffer" @@ -29336,15 +29184,15 @@ }, { "type": "ObjectProperty", - "start": 17163, - "end": 17203, + "start": 17185, + "end": 17225, "loc": { "start": { - "line": 329, + "line": 331, "column": 8 }, "end": { - "line": 329, + "line": 331, "column": 48 } }, @@ -29353,15 +29201,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17163, - "end": 17169, + "start": 17185, + "end": 17191, "loc": { "start": { - "line": 329, + "line": 331, "column": 8 }, "end": { - "line": 329, + "line": 331, "column": 14 }, "identifierName": "colors" @@ -29370,43 +29218,43 @@ }, "value": { "type": "CallExpression", - "start": 17171, - "end": 17203, + "start": 17193, + "end": 17225, "loc": { "start": { - "line": 329, + "line": 331, "column": 16 }, "end": { - "line": 329, + "line": 331, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 17171, - "end": 17183, + "start": 17193, + "end": 17205, "loc": { "start": { - "line": 329, + "line": 331, "column": 16 }, "end": { - "line": 329, + "line": 331, "column": 28 } }, "object": { "type": "Identifier", - "start": 17171, - "end": 17175, + "start": 17193, + "end": 17197, "loc": { "start": { - "line": 329, + "line": 331, "column": 16 }, "end": { - "line": 329, + "line": 331, "column": 20 }, "identifierName": "pako" @@ -29415,15 +29263,15 @@ }, "property": { "type": "Identifier", - "start": 17176, - "end": 17183, + "start": 17198, + "end": 17205, "loc": { "start": { - "line": 329, + "line": 331, "column": 21 }, "end": { - "line": 329, + "line": 331, "column": 28 }, "identifierName": "deflate" @@ -29435,43 +29283,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17184, - "end": 17202, + "start": 17206, + "end": 17224, "loc": { "start": { - "line": 329, + "line": 331, "column": 29 }, "end": { - "line": 329, + "line": 331, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 17184, - "end": 17195, + "start": 17206, + "end": 17217, "loc": { "start": { - "line": 329, + "line": 331, "column": 29 }, "end": { - "line": 329, + "line": 331, "column": 40 } }, "object": { "type": "Identifier", - "start": 17184, - "end": 17188, + "start": 17206, + "end": 17210, "loc": { "start": { - "line": 329, + "line": 331, "column": 29 }, "end": { - "line": 329, + "line": 331, "column": 33 }, "identifierName": "data" @@ -29480,15 +29328,15 @@ }, "property": { "type": "Identifier", - "start": 17189, - "end": 17195, + "start": 17211, + "end": 17217, "loc": { "start": { - "line": 329, + "line": 331, "column": 34 }, "end": { - "line": 329, + "line": 331, "column": 40 }, "identifierName": "colors" @@ -29499,15 +29347,15 @@ }, "property": { "type": "Identifier", - "start": 17196, - "end": 17202, + "start": 17218, + "end": 17224, "loc": { "start": { - "line": 329, + "line": 331, "column": 41 }, "end": { - "line": 329, + "line": 331, "column": 47 }, "identifierName": "buffer" @@ -29521,15 +29369,15 @@ }, { "type": "ObjectProperty", - "start": 17213, - "end": 17247, + "start": 17235, + "end": 17269, "loc": { "start": { - "line": 330, + "line": 332, "column": 8 }, "end": { - "line": 330, + "line": 332, "column": 42 } }, @@ -29538,15 +29386,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17213, - "end": 17216, + "start": 17235, + "end": 17238, "loc": { "start": { - "line": 330, + "line": 332, "column": 8 }, "end": { - "line": 330, + "line": 332, "column": 11 }, "identifierName": "uvs" @@ -29555,43 +29403,43 @@ }, "value": { "type": "CallExpression", - "start": 17218, - "end": 17247, + "start": 17240, + "end": 17269, "loc": { "start": { - "line": 330, + "line": 332, "column": 13 }, "end": { - "line": 330, + "line": 332, "column": 42 } }, "callee": { "type": "MemberExpression", - "start": 17218, - "end": 17230, + "start": 17240, + "end": 17252, "loc": { "start": { - "line": 330, + "line": 332, "column": 13 }, "end": { - "line": 330, + "line": 332, "column": 25 } }, "object": { "type": "Identifier", - "start": 17218, - "end": 17222, + "start": 17240, + "end": 17244, "loc": { "start": { - "line": 330, + "line": 332, "column": 13 }, "end": { - "line": 330, + "line": 332, "column": 17 }, "identifierName": "pako" @@ -29600,15 +29448,15 @@ }, "property": { "type": "Identifier", - "start": 17223, - "end": 17230, + "start": 17245, + "end": 17252, "loc": { "start": { - "line": 330, + "line": 332, "column": 18 }, "end": { - "line": 330, + "line": 332, "column": 25 }, "identifierName": "deflate" @@ -29620,43 +29468,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17231, - "end": 17246, + "start": 17253, + "end": 17268, "loc": { "start": { - "line": 330, + "line": 332, "column": 26 }, "end": { - "line": 330, + "line": 332, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 17231, - "end": 17239, + "start": 17253, + "end": 17261, "loc": { "start": { - "line": 330, + "line": 332, "column": 26 }, "end": { - "line": 330, + "line": 332, "column": 34 } }, "object": { "type": "Identifier", - "start": 17231, - "end": 17235, + "start": 17253, + "end": 17257, "loc": { "start": { - "line": 330, + "line": 332, "column": 26 }, "end": { - "line": 330, + "line": 332, "column": 30 }, "identifierName": "data" @@ -29665,15 +29513,15 @@ }, "property": { "type": "Identifier", - "start": 17236, - "end": 17239, + "start": 17258, + "end": 17261, "loc": { "start": { - "line": 330, + "line": 332, "column": 31 }, "end": { - "line": 330, + "line": 332, "column": 34 }, "identifierName": "uvs" @@ -29684,15 +29532,15 @@ }, "property": { "type": "Identifier", - "start": 17240, - "end": 17246, + "start": 17262, + "end": 17268, "loc": { "start": { - "line": 330, + "line": 332, "column": 35 }, "end": { - "line": 330, + "line": 332, "column": 41 }, "identifierName": "buffer" @@ -29706,15 +29554,15 @@ }, { "type": "ObjectProperty", - "start": 17257, - "end": 17299, + "start": 17279, + "end": 17321, "loc": { "start": { - "line": 331, + "line": 333, "column": 8 }, "end": { - "line": 331, + "line": 333, "column": 50 } }, @@ -29723,15 +29571,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17257, - "end": 17264, + "start": 17279, + "end": 17286, "loc": { "start": { - "line": 331, + "line": 333, "column": 8 }, "end": { - "line": 331, + "line": 333, "column": 15 }, "identifierName": "indices" @@ -29740,43 +29588,43 @@ }, "value": { "type": "CallExpression", - "start": 17266, - "end": 17299, + "start": 17288, + "end": 17321, "loc": { "start": { - "line": 331, + "line": 333, "column": 17 }, "end": { - "line": 331, + "line": 333, "column": 50 } }, "callee": { "type": "MemberExpression", - "start": 17266, - "end": 17278, + "start": 17288, + "end": 17300, "loc": { "start": { - "line": 331, + "line": 333, "column": 17 }, "end": { - "line": 331, + "line": 333, "column": 29 } }, "object": { "type": "Identifier", - "start": 17266, - "end": 17270, + "start": 17288, + "end": 17292, "loc": { "start": { - "line": 331, + "line": 333, "column": 17 }, "end": { - "line": 331, + "line": 333, "column": 21 }, "identifierName": "pako" @@ -29785,15 +29633,15 @@ }, "property": { "type": "Identifier", - "start": 17271, - "end": 17278, + "start": 17293, + "end": 17300, "loc": { "start": { - "line": 331, + "line": 333, "column": 22 }, "end": { - "line": 331, + "line": 333, "column": 29 }, "identifierName": "deflate" @@ -29805,43 +29653,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17279, - "end": 17298, + "start": 17301, + "end": 17320, "loc": { "start": { - "line": 331, + "line": 333, "column": 30 }, "end": { - "line": 331, + "line": 333, "column": 49 } }, "object": { "type": "MemberExpression", - "start": 17279, - "end": 17291, + "start": 17301, + "end": 17313, "loc": { "start": { - "line": 331, + "line": 333, "column": 30 }, "end": { - "line": 331, + "line": 333, "column": 42 } }, "object": { "type": "Identifier", - "start": 17279, - "end": 17283, + "start": 17301, + "end": 17305, "loc": { "start": { - "line": 331, + "line": 333, "column": 30 }, "end": { - "line": 331, + "line": 333, "column": 34 }, "identifierName": "data" @@ -29850,15 +29698,15 @@ }, "property": { "type": "Identifier", - "start": 17284, - "end": 17291, + "start": 17306, + "end": 17313, "loc": { "start": { - "line": 331, + "line": 333, "column": 35 }, "end": { - "line": 331, + "line": 333, "column": 42 }, "identifierName": "indices" @@ -29869,15 +29717,15 @@ }, "property": { "type": "Identifier", - "start": 17292, - "end": 17298, + "start": 17314, + "end": 17320, "loc": { "start": { - "line": 331, + "line": 333, "column": 43 }, "end": { - "line": 331, + "line": 333, "column": 49 }, "identifierName": "buffer" @@ -29891,15 +29739,15 @@ }, { "type": "ObjectProperty", - "start": 17309, - "end": 17359, + "start": 17331, + "end": 17381, "loc": { "start": { - "line": 332, + "line": 334, "column": 8 }, "end": { - "line": 332, + "line": 334, "column": 58 } }, @@ -29908,15 +29756,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17309, - "end": 17320, + "start": 17331, + "end": 17342, "loc": { "start": { - "line": 332, + "line": 334, "column": 8 }, "end": { - "line": 332, + "line": 334, "column": 19 }, "identifierName": "edgeIndices" @@ -29925,43 +29773,43 @@ }, "value": { "type": "CallExpression", - "start": 17322, - "end": 17359, + "start": 17344, + "end": 17381, "loc": { "start": { - "line": 332, + "line": 334, "column": 21 }, "end": { - "line": 332, + "line": 334, "column": 58 } }, "callee": { "type": "MemberExpression", - "start": 17322, - "end": 17334, + "start": 17344, + "end": 17356, "loc": { "start": { - "line": 332, + "line": 334, "column": 21 }, "end": { - "line": 332, + "line": 334, "column": 33 } }, "object": { "type": "Identifier", - "start": 17322, - "end": 17326, + "start": 17344, + "end": 17348, "loc": { "start": { - "line": 332, + "line": 334, "column": 21 }, "end": { - "line": 332, + "line": 334, "column": 25 }, "identifierName": "pako" @@ -29970,15 +29818,15 @@ }, "property": { "type": "Identifier", - "start": 17327, - "end": 17334, + "start": 17349, + "end": 17356, "loc": { "start": { - "line": 332, + "line": 334, "column": 26 }, "end": { - "line": 332, + "line": 334, "column": 33 }, "identifierName": "deflate" @@ -29990,43 +29838,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17335, - "end": 17358, + "start": 17357, + "end": 17380, "loc": { "start": { - "line": 332, + "line": 334, "column": 34 }, "end": { - "line": 332, + "line": 334, "column": 57 } }, "object": { "type": "MemberExpression", - "start": 17335, - "end": 17351, + "start": 17357, + "end": 17373, "loc": { "start": { - "line": 332, + "line": 334, "column": 34 }, "end": { - "line": 332, + "line": 334, "column": 50 } }, "object": { "type": "Identifier", - "start": 17335, - "end": 17339, + "start": 17357, + "end": 17361, "loc": { "start": { - "line": 332, + "line": 334, "column": 34 }, "end": { - "line": 332, + "line": 334, "column": 38 }, "identifierName": "data" @@ -30035,15 +29883,15 @@ }, "property": { "type": "Identifier", - "start": 17340, - "end": 17351, + "start": 17362, + "end": 17373, "loc": { "start": { - "line": 332, + "line": 334, "column": 39 }, "end": { - "line": 332, + "line": 334, "column": 50 }, "identifierName": "edgeIndices" @@ -30054,15 +29902,15 @@ }, "property": { "type": "Identifier", - "start": 17352, - "end": 17358, + "start": 17374, + "end": 17380, "loc": { "start": { - "line": 332, + "line": 334, "column": 51 }, "end": { - "line": 332, + "line": 334, "column": 57 }, "identifierName": "buffer" @@ -30076,15 +29924,15 @@ }, { "type": "ObjectProperty", - "start": 17369, - "end": 17441, + "start": 17391, + "end": 17463, "loc": { "start": { - "line": 333, + "line": 335, "column": 8 }, "end": { - "line": 333, + "line": 335, "column": 80 } }, @@ -30093,15 +29941,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17369, - "end": 17391, + "start": 17391, + "end": 17413, "loc": { "start": { - "line": 333, + "line": 335, "column": 8 }, "end": { - "line": 333, + "line": 335, "column": 30 }, "identifierName": "eachTextureSetTextures" @@ -30110,43 +29958,43 @@ }, "value": { "type": "CallExpression", - "start": 17393, - "end": 17441, + "start": 17415, + "end": 17463, "loc": { "start": { - "line": 333, + "line": 335, "column": 32 }, "end": { - "line": 333, + "line": 335, "column": 80 } }, "callee": { "type": "MemberExpression", - "start": 17393, - "end": 17405, + "start": 17415, + "end": 17427, "loc": { "start": { - "line": 333, + "line": 335, "column": 32 }, "end": { - "line": 333, + "line": 335, "column": 44 } }, "object": { "type": "Identifier", - "start": 17393, - "end": 17397, + "start": 17415, + "end": 17419, "loc": { "start": { - "line": 333, + "line": 335, "column": 32 }, "end": { - "line": 333, + "line": 335, "column": 36 }, "identifierName": "pako" @@ -30155,15 +30003,15 @@ }, "property": { "type": "Identifier", - "start": 17398, - "end": 17405, + "start": 17420, + "end": 17427, "loc": { "start": { - "line": 333, + "line": 335, "column": 37 }, "end": { - "line": 333, + "line": 335, "column": 44 }, "identifierName": "deflate" @@ -30175,43 +30023,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17406, - "end": 17440, + "start": 17428, + "end": 17462, "loc": { "start": { - "line": 333, + "line": 335, "column": 45 }, "end": { - "line": 333, + "line": 335, "column": 79 } }, "object": { "type": "MemberExpression", - "start": 17406, - "end": 17433, + "start": 17428, + "end": 17455, "loc": { "start": { - "line": 333, + "line": 335, "column": 45 }, "end": { - "line": 333, + "line": 335, "column": 72 } }, "object": { "type": "Identifier", - "start": 17406, - "end": 17410, + "start": 17428, + "end": 17432, "loc": { "start": { - "line": 333, + "line": 335, "column": 45 }, "end": { - "line": 333, + "line": 335, "column": 49 }, "identifierName": "data" @@ -30220,15 +30068,15 @@ }, "property": { "type": "Identifier", - "start": 17411, - "end": 17433, + "start": 17433, + "end": 17455, "loc": { "start": { - "line": 333, + "line": 335, "column": 50 }, "end": { - "line": 333, + "line": 335, "column": 72 }, "identifierName": "eachTextureSetTextures" @@ -30239,15 +30087,15 @@ }, "property": { "type": "Identifier", - "start": 17434, - "end": 17440, + "start": 17456, + "end": 17462, "loc": { "start": { - "line": 333, + "line": 335, "column": 73 }, "end": { - "line": 333, + "line": 335, "column": 79 }, "identifierName": "buffer" @@ -30261,15 +30109,15 @@ }, { "type": "ObjectProperty", - "start": 17451, - "end": 17495, + "start": 17473, + "end": 17517, "loc": { "start": { - "line": 334, + "line": 336, "column": 8 }, "end": { - "line": 334, + "line": 336, "column": 52 } }, @@ -30278,15 +30126,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17451, - "end": 17459, + "start": 17473, + "end": 17481, "loc": { "start": { - "line": 334, + "line": 336, "column": 8 }, "end": { - "line": 334, + "line": 336, "column": 16 }, "identifierName": "matrices" @@ -30295,43 +30143,43 @@ }, "value": { "type": "CallExpression", - "start": 17461, - "end": 17495, + "start": 17483, + "end": 17517, "loc": { "start": { - "line": 334, + "line": 336, "column": 18 }, "end": { - "line": 334, + "line": 336, "column": 52 } }, "callee": { "type": "MemberExpression", - "start": 17461, - "end": 17473, + "start": 17483, + "end": 17495, "loc": { "start": { - "line": 334, + "line": 336, "column": 18 }, "end": { - "line": 334, + "line": 336, "column": 30 } }, "object": { "type": "Identifier", - "start": 17461, - "end": 17465, + "start": 17483, + "end": 17487, "loc": { "start": { - "line": 334, + "line": 336, "column": 18 }, "end": { - "line": 334, + "line": 336, "column": 22 }, "identifierName": "pako" @@ -30340,15 +30188,15 @@ }, "property": { "type": "Identifier", - "start": 17466, - "end": 17473, + "start": 17488, + "end": 17495, "loc": { "start": { - "line": 334, + "line": 336, "column": 23 }, "end": { - "line": 334, + "line": 336, "column": 30 }, "identifierName": "deflate" @@ -30360,43 +30208,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17474, - "end": 17494, + "start": 17496, + "end": 17516, "loc": { "start": { - "line": 334, + "line": 336, "column": 31 }, "end": { - "line": 334, + "line": 336, "column": 51 } }, "object": { "type": "MemberExpression", - "start": 17474, - "end": 17487, + "start": 17496, + "end": 17509, "loc": { "start": { - "line": 334, + "line": 336, "column": 31 }, "end": { - "line": 334, + "line": 336, "column": 44 } }, "object": { "type": "Identifier", - "start": 17474, - "end": 17478, + "start": 17496, + "end": 17500, "loc": { "start": { - "line": 334, + "line": 336, "column": 31 }, "end": { - "line": 334, + "line": 336, "column": 35 }, "identifierName": "data" @@ -30405,15 +30253,15 @@ }, "property": { "type": "Identifier", - "start": 17479, - "end": 17487, + "start": 17501, + "end": 17509, "loc": { "start": { - "line": 334, + "line": 336, "column": 36 }, "end": { - "line": 334, + "line": 336, "column": 44 }, "identifierName": "matrices" @@ -30424,15 +30272,15 @@ }, "property": { "type": "Identifier", - "start": 17488, - "end": 17494, + "start": 17510, + "end": 17516, "loc": { "start": { - "line": 334, + "line": 336, "column": 45 }, "end": { - "line": 334, + "line": 336, "column": 51 }, "identifierName": "buffer" @@ -30446,15 +30294,15 @@ }, { "type": "ObjectProperty", - "start": 17505, - "end": 17589, + "start": 17527, + "end": 17611, "loc": { "start": { - "line": 335, + "line": 337, "column": 8 }, "end": { - "line": 335, + "line": 337, "column": 92 } }, @@ -30463,15 +30311,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17505, - "end": 17533, + "start": 17527, + "end": 17555, "loc": { "start": { - "line": 335, + "line": 337, "column": 8 }, "end": { - "line": 335, + "line": 337, "column": 36 }, "identifierName": "reusedGeometriesDecodeMatrix" @@ -30480,43 +30328,43 @@ }, "value": { "type": "CallExpression", - "start": 17535, - "end": 17589, + "start": 17557, + "end": 17611, "loc": { "start": { - "line": 335, + "line": 337, "column": 38 }, "end": { - "line": 335, + "line": 337, "column": 92 } }, "callee": { "type": "MemberExpression", - "start": 17535, - "end": 17547, + "start": 17557, + "end": 17569, "loc": { "start": { - "line": 335, + "line": 337, "column": 38 }, "end": { - "line": 335, + "line": 337, "column": 50 } }, "object": { "type": "Identifier", - "start": 17535, - "end": 17539, + "start": 17557, + "end": 17561, "loc": { "start": { - "line": 335, + "line": 337, "column": 38 }, "end": { - "line": 335, + "line": 337, "column": 42 }, "identifierName": "pako" @@ -30525,15 +30373,15 @@ }, "property": { "type": "Identifier", - "start": 17540, - "end": 17547, + "start": 17562, + "end": 17569, "loc": { "start": { - "line": 335, + "line": 337, "column": 43 }, "end": { - "line": 335, + "line": 337, "column": 50 }, "identifierName": "deflate" @@ -30545,43 +30393,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17548, - "end": 17588, + "start": 17570, + "end": 17610, "loc": { "start": { - "line": 335, + "line": 337, "column": 51 }, "end": { - "line": 335, + "line": 337, "column": 91 } }, "object": { "type": "MemberExpression", - "start": 17548, - "end": 17581, + "start": 17570, + "end": 17603, "loc": { "start": { - "line": 335, + "line": 337, "column": 51 }, "end": { - "line": 335, + "line": 337, "column": 84 } }, "object": { "type": "Identifier", - "start": 17548, - "end": 17552, + "start": 17570, + "end": 17574, "loc": { "start": { - "line": 335, + "line": 337, "column": 51 }, "end": { - "line": 335, + "line": 337, "column": 55 }, "identifierName": "data" @@ -30590,15 +30438,15 @@ }, "property": { "type": "Identifier", - "start": 17553, - "end": 17581, + "start": 17575, + "end": 17603, "loc": { "start": { - "line": 335, + "line": 337, "column": 56 }, "end": { - "line": 335, + "line": 337, "column": 84 }, "identifierName": "reusedGeometriesDecodeMatrix" @@ -30609,15 +30457,15 @@ }, "property": { "type": "Identifier", - "start": 17582, - "end": 17588, + "start": 17604, + "end": 17610, "loc": { "start": { - "line": 335, + "line": 337, "column": 85 }, "end": { - "line": 335, + "line": 337, "column": 91 }, "identifierName": "buffer" @@ -30631,15 +30479,15 @@ }, { "type": "ObjectProperty", - "start": 17599, - "end": 17677, + "start": 17621, + "end": 17699, "loc": { "start": { - "line": 336, + "line": 338, "column": 8 }, "end": { - "line": 336, + "line": 338, "column": 86 } }, @@ -30648,15 +30496,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17599, - "end": 17624, + "start": 17621, + "end": 17646, "loc": { "start": { - "line": 336, + "line": 338, "column": 8 }, "end": { - "line": 336, + "line": 338, "column": 33 }, "identifierName": "eachGeometryPrimitiveType" @@ -30665,43 +30513,43 @@ }, "value": { "type": "CallExpression", - "start": 17626, - "end": 17677, + "start": 17648, + "end": 17699, "loc": { "start": { - "line": 336, + "line": 338, "column": 35 }, "end": { - "line": 336, + "line": 338, "column": 86 } }, "callee": { "type": "MemberExpression", - "start": 17626, - "end": 17638, + "start": 17648, + "end": 17660, "loc": { "start": { - "line": 336, + "line": 338, "column": 35 }, "end": { - "line": 336, + "line": 338, "column": 47 } }, "object": { "type": "Identifier", - "start": 17626, - "end": 17630, + "start": 17648, + "end": 17652, "loc": { "start": { - "line": 336, + "line": 338, "column": 35 }, "end": { - "line": 336, + "line": 338, "column": 39 }, "identifierName": "pako" @@ -30710,15 +30558,15 @@ }, "property": { "type": "Identifier", - "start": 17631, - "end": 17638, + "start": 17653, + "end": 17660, "loc": { "start": { - "line": 336, + "line": 338, "column": 40 }, "end": { - "line": 336, + "line": 338, "column": 47 }, "identifierName": "deflate" @@ -30730,43 +30578,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17639, - "end": 17676, + "start": 17661, + "end": 17698, "loc": { "start": { - "line": 336, + "line": 338, "column": 48 }, "end": { - "line": 336, + "line": 338, "column": 85 } }, "object": { "type": "MemberExpression", - "start": 17639, - "end": 17669, + "start": 17661, + "end": 17691, "loc": { "start": { - "line": 336, + "line": 338, "column": 48 }, "end": { - "line": 336, + "line": 338, "column": 78 } }, "object": { "type": "Identifier", - "start": 17639, - "end": 17643, + "start": 17661, + "end": 17665, "loc": { "start": { - "line": 336, + "line": 338, "column": 48 }, "end": { - "line": 336, + "line": 338, "column": 52 }, "identifierName": "data" @@ -30775,15 +30623,15 @@ }, "property": { "type": "Identifier", - "start": 17644, - "end": 17669, + "start": 17666, + "end": 17691, "loc": { "start": { - "line": 336, + "line": 338, "column": 53 }, "end": { - "line": 336, + "line": 338, "column": 78 }, "identifierName": "eachGeometryPrimitiveType" @@ -30794,15 +30642,15 @@ }, "property": { "type": "Identifier", - "start": 17670, - "end": 17676, + "start": 17692, + "end": 17698, "loc": { "start": { - "line": 336, + "line": 338, "column": 79 }, "end": { - "line": 336, + "line": 338, "column": 85 }, "identifierName": "buffer" @@ -30816,15 +30664,15 @@ }, { "type": "ObjectProperty", - "start": 17687, - "end": 17771, + "start": 17709, + "end": 17793, "loc": { "start": { - "line": 337, + "line": 339, "column": 8 }, "end": { - "line": 337, + "line": 339, "column": 92 } }, @@ -30833,15 +30681,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17687, - "end": 17715, + "start": 17709, + "end": 17737, "loc": { "start": { - "line": 337, + "line": 339, "column": 8 }, "end": { - "line": 337, + "line": 339, "column": 36 }, "identifierName": "eachGeometryPositionsPortion" @@ -30850,43 +30698,43 @@ }, "value": { "type": "CallExpression", - "start": 17717, - "end": 17771, + "start": 17739, + "end": 17793, "loc": { "start": { - "line": 337, + "line": 339, "column": 38 }, "end": { - "line": 337, + "line": 339, "column": 92 } }, "callee": { "type": "MemberExpression", - "start": 17717, - "end": 17729, + "start": 17739, + "end": 17751, "loc": { "start": { - "line": 337, + "line": 339, "column": 38 }, "end": { - "line": 337, + "line": 339, "column": 50 } }, "object": { "type": "Identifier", - "start": 17717, - "end": 17721, + "start": 17739, + "end": 17743, "loc": { "start": { - "line": 337, + "line": 339, "column": 38 }, "end": { - "line": 337, + "line": 339, "column": 42 }, "identifierName": "pako" @@ -30895,15 +30743,15 @@ }, "property": { "type": "Identifier", - "start": 17722, - "end": 17729, + "start": 17744, + "end": 17751, "loc": { "start": { - "line": 337, + "line": 339, "column": 43 }, "end": { - "line": 337, + "line": 339, "column": 50 }, "identifierName": "deflate" @@ -30915,43 +30763,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17730, - "end": 17770, + "start": 17752, + "end": 17792, "loc": { "start": { - "line": 337, + "line": 339, "column": 51 }, "end": { - "line": 337, + "line": 339, "column": 91 } }, "object": { "type": "MemberExpression", - "start": 17730, - "end": 17763, + "start": 17752, + "end": 17785, "loc": { "start": { - "line": 337, + "line": 339, "column": 51 }, "end": { - "line": 337, + "line": 339, "column": 84 } }, "object": { "type": "Identifier", - "start": 17730, - "end": 17734, + "start": 17752, + "end": 17756, "loc": { "start": { - "line": 337, + "line": 339, "column": 51 }, "end": { - "line": 337, + "line": 339, "column": 55 }, "identifierName": "data" @@ -30960,15 +30808,15 @@ }, "property": { "type": "Identifier", - "start": 17735, - "end": 17763, + "start": 17757, + "end": 17785, "loc": { "start": { - "line": 337, + "line": 339, "column": 56 }, "end": { - "line": 337, + "line": 339, "column": 84 }, "identifierName": "eachGeometryPositionsPortion" @@ -30979,15 +30827,15 @@ }, "property": { "type": "Identifier", - "start": 17764, - "end": 17770, + "start": 17786, + "end": 17792, "loc": { "start": { - "line": 337, + "line": 339, "column": 85 }, "end": { - "line": 337, + "line": 339, "column": 91 }, "identifierName": "buffer" @@ -31001,15 +30849,15 @@ }, { "type": "ObjectProperty", - "start": 17781, - "end": 17861, + "start": 17803, + "end": 17883, "loc": { "start": { - "line": 338, + "line": 340, "column": 8 }, "end": { - "line": 338, + "line": 340, "column": 88 } }, @@ -31018,15 +30866,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17781, - "end": 17807, + "start": 17803, + "end": 17829, "loc": { "start": { - "line": 338, + "line": 340, "column": 8 }, "end": { - "line": 338, + "line": 340, "column": 34 }, "identifierName": "eachGeometryNormalsPortion" @@ -31035,43 +30883,43 @@ }, "value": { "type": "CallExpression", - "start": 17809, - "end": 17861, + "start": 17831, + "end": 17883, "loc": { "start": { - "line": 338, + "line": 340, "column": 36 }, "end": { - "line": 338, + "line": 340, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 17809, - "end": 17821, + "start": 17831, + "end": 17843, "loc": { "start": { - "line": 338, + "line": 340, "column": 36 }, "end": { - "line": 338, + "line": 340, "column": 48 } }, "object": { "type": "Identifier", - "start": 17809, - "end": 17813, + "start": 17831, + "end": 17835, "loc": { "start": { - "line": 338, + "line": 340, "column": 36 }, "end": { - "line": 338, + "line": 340, "column": 40 }, "identifierName": "pako" @@ -31080,15 +30928,15 @@ }, "property": { "type": "Identifier", - "start": 17814, - "end": 17821, + "start": 17836, + "end": 17843, "loc": { "start": { - "line": 338, + "line": 340, "column": 41 }, "end": { - "line": 338, + "line": 340, "column": 48 }, "identifierName": "deflate" @@ -31100,43 +30948,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17822, - "end": 17860, + "start": 17844, + "end": 17882, "loc": { "start": { - "line": 338, + "line": 340, "column": 49 }, "end": { - "line": 338, + "line": 340, "column": 87 } }, "object": { "type": "MemberExpression", - "start": 17822, - "end": 17853, + "start": 17844, + "end": 17875, "loc": { "start": { - "line": 338, + "line": 340, "column": 49 }, "end": { - "line": 338, + "line": 340, "column": 80 } }, "object": { "type": "Identifier", - "start": 17822, - "end": 17826, + "start": 17844, + "end": 17848, "loc": { "start": { - "line": 338, + "line": 340, "column": 49 }, "end": { - "line": 338, + "line": 340, "column": 53 }, "identifierName": "data" @@ -31145,15 +30993,15 @@ }, "property": { "type": "Identifier", - "start": 17827, - "end": 17853, + "start": 17849, + "end": 17875, "loc": { "start": { - "line": 338, + "line": 340, "column": 54 }, "end": { - "line": 338, + "line": 340, "column": 80 }, "identifierName": "eachGeometryNormalsPortion" @@ -31164,15 +31012,15 @@ }, "property": { "type": "Identifier", - "start": 17854, - "end": 17860, + "start": 17876, + "end": 17882, "loc": { "start": { - "line": 338, + "line": 340, "column": 81 }, "end": { - "line": 338, + "line": 340, "column": 87 }, "identifierName": "buffer" @@ -31186,15 +31034,15 @@ }, { "type": "ObjectProperty", - "start": 17871, - "end": 17949, + "start": 17893, + "end": 17971, "loc": { "start": { - "line": 339, + "line": 341, "column": 8 }, "end": { - "line": 339, + "line": 341, "column": 86 } }, @@ -31203,15 +31051,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17871, - "end": 17896, + "start": 17893, + "end": 17918, "loc": { "start": { - "line": 339, + "line": 341, "column": 8 }, "end": { - "line": 339, + "line": 341, "column": 33 }, "identifierName": "eachGeometryColorsPortion" @@ -31220,43 +31068,43 @@ }, "value": { "type": "CallExpression", - "start": 17898, - "end": 17949, + "start": 17920, + "end": 17971, "loc": { "start": { - "line": 339, + "line": 341, "column": 35 }, "end": { - "line": 339, + "line": 341, "column": 86 } }, "callee": { "type": "MemberExpression", - "start": 17898, - "end": 17910, + "start": 17920, + "end": 17932, "loc": { "start": { - "line": 339, + "line": 341, "column": 35 }, "end": { - "line": 339, + "line": 341, "column": 47 } }, "object": { "type": "Identifier", - "start": 17898, - "end": 17902, + "start": 17920, + "end": 17924, "loc": { "start": { - "line": 339, + "line": 341, "column": 35 }, "end": { - "line": 339, + "line": 341, "column": 39 }, "identifierName": "pako" @@ -31265,15 +31113,15 @@ }, "property": { "type": "Identifier", - "start": 17903, - "end": 17910, + "start": 17925, + "end": 17932, "loc": { "start": { - "line": 339, + "line": 341, "column": 40 }, "end": { - "line": 339, + "line": 341, "column": 47 }, "identifierName": "deflate" @@ -31285,43 +31133,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17911, - "end": 17948, + "start": 17933, + "end": 17970, "loc": { "start": { - "line": 339, + "line": 341, "column": 48 }, "end": { - "line": 339, + "line": 341, "column": 85 } }, "object": { "type": "MemberExpression", - "start": 17911, - "end": 17941, + "start": 17933, + "end": 17963, "loc": { "start": { - "line": 339, + "line": 341, "column": 48 }, "end": { - "line": 339, + "line": 341, "column": 78 } }, "object": { "type": "Identifier", - "start": 17911, - "end": 17915, + "start": 17933, + "end": 17937, "loc": { "start": { - "line": 339, + "line": 341, "column": 48 }, "end": { - "line": 339, + "line": 341, "column": 52 }, "identifierName": "data" @@ -31330,15 +31178,15 @@ }, "property": { "type": "Identifier", - "start": 17916, - "end": 17941, + "start": 17938, + "end": 17963, "loc": { "start": { - "line": 339, + "line": 341, "column": 53 }, "end": { - "line": 339, + "line": 341, "column": 78 }, "identifierName": "eachGeometryColorsPortion" @@ -31349,15 +31197,15 @@ }, "property": { "type": "Identifier", - "start": 17942, - "end": 17948, + "start": 17964, + "end": 17970, "loc": { "start": { - "line": 339, + "line": 341, "column": 79 }, "end": { - "line": 339, + "line": 341, "column": 85 }, "identifierName": "buffer" @@ -31371,15 +31219,15 @@ }, { "type": "ObjectProperty", - "start": 17959, - "end": 18031, + "start": 17981, + "end": 18053, "loc": { "start": { - "line": 340, + "line": 342, "column": 8 }, "end": { - "line": 340, + "line": 342, "column": 80 } }, @@ -31388,15 +31236,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 17959, - "end": 17981, + "start": 17981, + "end": 18003, "loc": { "start": { - "line": 340, + "line": 342, "column": 8 }, "end": { - "line": 340, + "line": 342, "column": 30 }, "identifierName": "eachGeometryUVsPortion" @@ -31405,43 +31253,43 @@ }, "value": { "type": "CallExpression", - "start": 17983, - "end": 18031, + "start": 18005, + "end": 18053, "loc": { "start": { - "line": 340, + "line": 342, "column": 32 }, "end": { - "line": 340, + "line": 342, "column": 80 } }, "callee": { "type": "MemberExpression", - "start": 17983, - "end": 17995, + "start": 18005, + "end": 18017, "loc": { "start": { - "line": 340, + "line": 342, "column": 32 }, "end": { - "line": 340, + "line": 342, "column": 44 } }, "object": { "type": "Identifier", - "start": 17983, - "end": 17987, + "start": 18005, + "end": 18009, "loc": { "start": { - "line": 340, + "line": 342, "column": 32 }, "end": { - "line": 340, + "line": 342, "column": 36 }, "identifierName": "pako" @@ -31450,15 +31298,15 @@ }, "property": { "type": "Identifier", - "start": 17988, - "end": 17995, + "start": 18010, + "end": 18017, "loc": { "start": { - "line": 340, + "line": 342, "column": 37 }, "end": { - "line": 340, + "line": 342, "column": 44 }, "identifierName": "deflate" @@ -31470,43 +31318,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 17996, - "end": 18030, + "start": 18018, + "end": 18052, "loc": { "start": { - "line": 340, + "line": 342, "column": 45 }, "end": { - "line": 340, + "line": 342, "column": 79 } }, "object": { "type": "MemberExpression", - "start": 17996, - "end": 18023, + "start": 18018, + "end": 18045, "loc": { "start": { - "line": 340, + "line": 342, "column": 45 }, "end": { - "line": 340, + "line": 342, "column": 72 } }, "object": { "type": "Identifier", - "start": 17996, - "end": 18000, + "start": 18018, + "end": 18022, "loc": { "start": { - "line": 340, + "line": 342, "column": 45 }, "end": { - "line": 340, + "line": 342, "column": 49 }, "identifierName": "data" @@ -31515,15 +31363,15 @@ }, "property": { "type": "Identifier", - "start": 18001, - "end": 18023, + "start": 18023, + "end": 18045, "loc": { "start": { - "line": 340, + "line": 342, "column": 50 }, "end": { - "line": 340, + "line": 342, "column": 72 }, "identifierName": "eachGeometryUVsPortion" @@ -31534,15 +31382,15 @@ }, "property": { "type": "Identifier", - "start": 18024, - "end": 18030, + "start": 18046, + "end": 18052, "loc": { "start": { - "line": 340, + "line": 342, "column": 73 }, "end": { - "line": 340, + "line": 342, "column": 79 }, "identifierName": "buffer" @@ -31556,15 +31404,15 @@ }, { "type": "ObjectProperty", - "start": 18041, - "end": 18121, + "start": 18063, + "end": 18143, "loc": { "start": { - "line": 341, + "line": 343, "column": 8 }, "end": { - "line": 341, + "line": 343, "column": 88 } }, @@ -31573,15 +31421,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18041, - "end": 18067, + "start": 18063, + "end": 18089, "loc": { "start": { - "line": 341, + "line": 343, "column": 8 }, "end": { - "line": 341, + "line": 343, "column": 34 }, "identifierName": "eachGeometryIndicesPortion" @@ -31590,43 +31438,43 @@ }, "value": { "type": "CallExpression", - "start": 18069, - "end": 18121, + "start": 18091, + "end": 18143, "loc": { "start": { - "line": 341, + "line": 343, "column": 36 }, "end": { - "line": 341, + "line": 343, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 18069, - "end": 18081, + "start": 18091, + "end": 18103, "loc": { "start": { - "line": 341, + "line": 343, "column": 36 }, "end": { - "line": 341, + "line": 343, "column": 48 } }, "object": { "type": "Identifier", - "start": 18069, - "end": 18073, + "start": 18091, + "end": 18095, "loc": { "start": { - "line": 341, + "line": 343, "column": 36 }, "end": { - "line": 341, + "line": 343, "column": 40 }, "identifierName": "pako" @@ -31635,15 +31483,15 @@ }, "property": { "type": "Identifier", - "start": 18074, - "end": 18081, + "start": 18096, + "end": 18103, "loc": { "start": { - "line": 341, + "line": 343, "column": 41 }, "end": { - "line": 341, + "line": 343, "column": 48 }, "identifierName": "deflate" @@ -31655,43 +31503,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 18082, - "end": 18120, + "start": 18104, + "end": 18142, "loc": { "start": { - "line": 341, + "line": 343, "column": 49 }, "end": { - "line": 341, + "line": 343, "column": 87 } }, "object": { "type": "MemberExpression", - "start": 18082, - "end": 18113, + "start": 18104, + "end": 18135, "loc": { "start": { - "line": 341, + "line": 343, "column": 49 }, "end": { - "line": 341, + "line": 343, "column": 80 } }, "object": { "type": "Identifier", - "start": 18082, - "end": 18086, + "start": 18104, + "end": 18108, "loc": { "start": { - "line": 341, + "line": 343, "column": 49 }, "end": { - "line": 341, + "line": 343, "column": 53 }, "identifierName": "data" @@ -31700,15 +31548,15 @@ }, "property": { "type": "Identifier", - "start": 18087, - "end": 18113, + "start": 18109, + "end": 18135, "loc": { "start": { - "line": 341, + "line": 343, "column": 54 }, "end": { - "line": 341, + "line": 343, "column": 80 }, "identifierName": "eachGeometryIndicesPortion" @@ -31719,15 +31567,15 @@ }, "property": { "type": "Identifier", - "start": 18114, - "end": 18120, + "start": 18136, + "end": 18142, "loc": { "start": { - "line": 341, + "line": 343, "column": 81 }, "end": { - "line": 341, + "line": 343, "column": 87 }, "identifierName": "buffer" @@ -31741,15 +31589,15 @@ }, { "type": "ObjectProperty", - "start": 18131, - "end": 18219, + "start": 18153, + "end": 18241, "loc": { "start": { - "line": 342, + "line": 344, "column": 8 }, "end": { - "line": 342, + "line": 344, "column": 96 } }, @@ -31758,15 +31606,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18131, - "end": 18161, + "start": 18153, + "end": 18183, "loc": { "start": { - "line": 342, + "line": 344, "column": 8 }, "end": { - "line": 342, + "line": 344, "column": 38 }, "identifierName": "eachGeometryEdgeIndicesPortion" @@ -31775,43 +31623,43 @@ }, "value": { "type": "CallExpression", - "start": 18163, - "end": 18219, + "start": 18185, + "end": 18241, "loc": { "start": { - "line": 342, + "line": 344, "column": 40 }, "end": { - "line": 342, + "line": 344, "column": 96 } }, "callee": { "type": "MemberExpression", - "start": 18163, - "end": 18175, + "start": 18185, + "end": 18197, "loc": { "start": { - "line": 342, + "line": 344, "column": 40 }, "end": { - "line": 342, + "line": 344, "column": 52 } }, "object": { "type": "Identifier", - "start": 18163, - "end": 18167, + "start": 18185, + "end": 18189, "loc": { "start": { - "line": 342, + "line": 344, "column": 40 }, "end": { - "line": 342, + "line": 344, "column": 44 }, "identifierName": "pako" @@ -31820,15 +31668,15 @@ }, "property": { "type": "Identifier", - "start": 18168, - "end": 18175, + "start": 18190, + "end": 18197, "loc": { "start": { - "line": 342, + "line": 344, "column": 45 }, "end": { - "line": 342, + "line": 344, "column": 52 }, "identifierName": "deflate" @@ -31840,43 +31688,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 18176, - "end": 18218, + "start": 18198, + "end": 18240, "loc": { "start": { - "line": 342, + "line": 344, "column": 53 }, "end": { - "line": 342, + "line": 344, "column": 95 } }, "object": { "type": "MemberExpression", - "start": 18176, - "end": 18211, + "start": 18198, + "end": 18233, "loc": { "start": { - "line": 342, + "line": 344, "column": 53 }, "end": { - "line": 342, + "line": 344, "column": 88 } }, "object": { "type": "Identifier", - "start": 18176, - "end": 18180, + "start": 18198, + "end": 18202, "loc": { "start": { - "line": 342, + "line": 344, "column": 53 }, "end": { - "line": 342, + "line": 344, "column": 57 }, "identifierName": "data" @@ -31885,15 +31733,15 @@ }, "property": { "type": "Identifier", - "start": 18181, - "end": 18211, + "start": 18203, + "end": 18233, "loc": { "start": { - "line": 342, + "line": 344, "column": 58 }, "end": { - "line": 342, + "line": 344, "column": 88 }, "identifierName": "eachGeometryEdgeIndicesPortion" @@ -31904,15 +31752,15 @@ }, "property": { "type": "Identifier", - "start": 18212, - "end": 18218, + "start": 18234, + "end": 18240, "loc": { "start": { - "line": 342, + "line": 344, "column": 89 }, "end": { - "line": 342, + "line": 344, "column": 95 }, "identifierName": "buffer" @@ -31926,15 +31774,15 @@ }, { "type": "ObjectProperty", - "start": 18229, - "end": 18307, + "start": 18251, + "end": 18329, "loc": { "start": { - "line": 343, + "line": 345, "column": 8 }, "end": { - "line": 343, + "line": 345, "column": 86 } }, @@ -31943,15 +31791,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18229, - "end": 18254, + "start": 18251, + "end": 18276, "loc": { "start": { - "line": 343, + "line": 345, "column": 8 }, "end": { - "line": 343, + "line": 345, "column": 33 }, "identifierName": "eachMeshGeometriesPortion" @@ -31960,43 +31808,43 @@ }, "value": { "type": "CallExpression", - "start": 18256, - "end": 18307, + "start": 18278, + "end": 18329, "loc": { "start": { - "line": 343, + "line": 345, "column": 35 }, "end": { - "line": 343, + "line": 345, "column": 86 } }, "callee": { "type": "MemberExpression", - "start": 18256, - "end": 18268, + "start": 18278, + "end": 18290, "loc": { "start": { - "line": 343, + "line": 345, "column": 35 }, "end": { - "line": 343, + "line": 345, "column": 47 } }, "object": { "type": "Identifier", - "start": 18256, - "end": 18260, + "start": 18278, + "end": 18282, "loc": { "start": { - "line": 343, + "line": 345, "column": 35 }, "end": { - "line": 343, + "line": 345, "column": 39 }, "identifierName": "pako" @@ -32005,15 +31853,15 @@ }, "property": { "type": "Identifier", - "start": 18261, - "end": 18268, + "start": 18283, + "end": 18290, "loc": { "start": { - "line": 343, + "line": 345, "column": 40 }, "end": { - "line": 343, + "line": 345, "column": 47 }, "identifierName": "deflate" @@ -32025,43 +31873,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 18269, - "end": 18306, + "start": 18291, + "end": 18328, "loc": { "start": { - "line": 343, + "line": 345, "column": 48 }, "end": { - "line": 343, + "line": 345, "column": 85 } }, "object": { "type": "MemberExpression", - "start": 18269, - "end": 18299, + "start": 18291, + "end": 18321, "loc": { "start": { - "line": 343, + "line": 345, "column": 48 }, "end": { - "line": 343, + "line": 345, "column": 78 } }, "object": { "type": "Identifier", - "start": 18269, - "end": 18273, + "start": 18291, + "end": 18295, "loc": { "start": { - "line": 343, + "line": 345, "column": 48 }, "end": { - "line": 343, + "line": 345, "column": 52 }, "identifierName": "data" @@ -32070,15 +31918,15 @@ }, "property": { "type": "Identifier", - "start": 18274, - "end": 18299, + "start": 18296, + "end": 18321, "loc": { "start": { - "line": 343, + "line": 345, "column": 53 }, "end": { - "line": 343, + "line": 345, "column": 78 }, "identifierName": "eachMeshGeometriesPortion" @@ -32089,15 +31937,15 @@ }, "property": { "type": "Identifier", - "start": 18300, - "end": 18306, + "start": 18322, + "end": 18328, "loc": { "start": { - "line": 343, + "line": 345, "column": 79 }, "end": { - "line": 343, + "line": 345, "column": 85 }, "identifierName": "buffer" @@ -32111,15 +31959,15 @@ }, { "type": "ObjectProperty", - "start": 18317, - "end": 18391, + "start": 18339, + "end": 18413, "loc": { "start": { - "line": 344, + "line": 346, "column": 8 }, "end": { - "line": 344, + "line": 346, "column": 82 } }, @@ -32128,15 +31976,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18317, - "end": 18340, + "start": 18339, + "end": 18362, "loc": { "start": { - "line": 344, + "line": 346, "column": 8 }, "end": { - "line": 344, + "line": 346, "column": 31 }, "identifierName": "eachMeshMatricesPortion" @@ -32145,43 +31993,43 @@ }, "value": { "type": "CallExpression", - "start": 18342, - "end": 18391, + "start": 18364, + "end": 18413, "loc": { "start": { - "line": 344, + "line": 346, "column": 33 }, "end": { - "line": 344, + "line": 346, "column": 82 } }, "callee": { "type": "MemberExpression", - "start": 18342, - "end": 18354, + "start": 18364, + "end": 18376, "loc": { "start": { - "line": 344, + "line": 346, "column": 33 }, "end": { - "line": 344, + "line": 346, "column": 45 } }, "object": { "type": "Identifier", - "start": 18342, - "end": 18346, + "start": 18364, + "end": 18368, "loc": { "start": { - "line": 344, + "line": 346, "column": 33 }, "end": { - "line": 344, + "line": 346, "column": 37 }, "identifierName": "pako" @@ -32190,15 +32038,15 @@ }, "property": { "type": "Identifier", - "start": 18347, - "end": 18354, + "start": 18369, + "end": 18376, "loc": { "start": { - "line": 344, + "line": 346, "column": 38 }, "end": { - "line": 344, + "line": 346, "column": 45 }, "identifierName": "deflate" @@ -32210,43 +32058,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 18355, - "end": 18390, + "start": 18377, + "end": 18412, "loc": { "start": { - "line": 344, + "line": 346, "column": 46 }, "end": { - "line": 344, + "line": 346, "column": 81 } }, "object": { "type": "MemberExpression", - "start": 18355, - "end": 18383, + "start": 18377, + "end": 18405, "loc": { "start": { - "line": 344, + "line": 346, "column": 46 }, "end": { - "line": 344, + "line": 346, "column": 74 } }, "object": { "type": "Identifier", - "start": 18355, - "end": 18359, + "start": 18377, + "end": 18381, "loc": { "start": { - "line": 344, + "line": 346, "column": 46 }, "end": { - "line": 344, + "line": 346, "column": 50 }, "identifierName": "data" @@ -32255,15 +32103,15 @@ }, "property": { "type": "Identifier", - "start": 18360, - "end": 18383, + "start": 18382, + "end": 18405, "loc": { "start": { - "line": 344, + "line": 346, "column": 51 }, "end": { - "line": 344, + "line": 346, "column": 74 }, "identifierName": "eachMeshMatricesPortion" @@ -32274,15 +32122,15 @@ }, "property": { "type": "Identifier", - "start": 18384, - "end": 18390, + "start": 18406, + "end": 18412, "loc": { "start": { - "line": 344, + "line": 346, "column": 75 }, "end": { - "line": 344, + "line": 346, "column": 81 }, "identifierName": "buffer" @@ -32296,15 +32144,15 @@ }, { "type": "ObjectProperty", - "start": 18401, - "end": 18465, + "start": 18423, + "end": 18487, "loc": { "start": { - "line": 345, + "line": 347, "column": 8 }, "end": { - "line": 345, + "line": 347, "column": 72 } }, @@ -32313,15 +32161,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18401, - "end": 18419, + "start": 18423, + "end": 18441, "loc": { "start": { - "line": 345, + "line": 347, "column": 8 }, "end": { - "line": 345, + "line": 347, "column": 26 }, "identifierName": "eachMeshTextureSet" @@ -32330,43 +32178,43 @@ }, "value": { "type": "CallExpression", - "start": 18421, - "end": 18465, + "start": 18443, + "end": 18487, "loc": { "start": { - "line": 345, + "line": 347, "column": 28 }, "end": { - "line": 345, + "line": 347, "column": 72 } }, "callee": { "type": "MemberExpression", - "start": 18421, - "end": 18433, + "start": 18443, + "end": 18455, "loc": { "start": { - "line": 345, + "line": 347, "column": 28 }, "end": { - "line": 345, + "line": 347, "column": 40 } }, "object": { "type": "Identifier", - "start": 18421, - "end": 18425, + "start": 18443, + "end": 18447, "loc": { "start": { - "line": 345, + "line": 347, "column": 28 }, "end": { - "line": 345, + "line": 347, "column": 32 }, "identifierName": "pako" @@ -32375,15 +32223,15 @@ }, "property": { "type": "Identifier", - "start": 18426, - "end": 18433, + "start": 18448, + "end": 18455, "loc": { "start": { - "line": 345, + "line": 347, "column": 33 }, "end": { - "line": 345, + "line": 347, "column": 40 }, "identifierName": "deflate" @@ -32395,43 +32243,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 18434, - "end": 18464, + "start": 18456, + "end": 18486, "loc": { "start": { - "line": 345, + "line": 347, "column": 41 }, "end": { - "line": 345, + "line": 347, "column": 71 } }, "object": { "type": "MemberExpression", - "start": 18434, - "end": 18457, + "start": 18456, + "end": 18479, "loc": { "start": { - "line": 345, + "line": 347, "column": 41 }, "end": { - "line": 345, + "line": 347, "column": 64 } }, "object": { "type": "Identifier", - "start": 18434, - "end": 18438, + "start": 18456, + "end": 18460, "loc": { "start": { - "line": 345, + "line": 347, "column": 41 }, "end": { - "line": 345, + "line": 347, "column": 45 }, "identifierName": "data" @@ -32440,15 +32288,15 @@ }, "property": { "type": "Identifier", - "start": 18439, - "end": 18457, + "start": 18461, + "end": 18479, "loc": { "start": { - "line": 345, + "line": 347, "column": 46 }, "end": { - "line": 345, + "line": 347, "column": 64 }, "identifierName": "eachMeshTextureSet" @@ -32459,15 +32307,15 @@ }, "property": { "type": "Identifier", - "start": 18458, - "end": 18464, + "start": 18480, + "end": 18486, "loc": { "start": { - "line": 345, + "line": 347, "column": 65 }, "end": { - "line": 345, + "line": 347, "column": 71 }, "identifierName": "buffer" @@ -32481,15 +32329,15 @@ }, { "type": "ObjectProperty", - "start": 18475, - "end": 18555, + "start": 18497, + "end": 18577, "loc": { "start": { - "line": 346, + "line": 348, "column": 8 }, "end": { - "line": 346, + "line": 348, "column": 88 } }, @@ -32498,15 +32346,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18475, - "end": 18501, + "start": 18497, + "end": 18523, "loc": { "start": { - "line": 346, + "line": 348, "column": 8 }, "end": { - "line": 346, + "line": 348, "column": 34 }, "identifierName": "eachMeshMaterialAttributes" @@ -32515,43 +32363,43 @@ }, "value": { "type": "CallExpression", - "start": 18503, - "end": 18555, + "start": 18525, + "end": 18577, "loc": { "start": { - "line": 346, + "line": 348, "column": 36 }, "end": { - "line": 346, + "line": 348, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 18503, - "end": 18515, + "start": 18525, + "end": 18537, "loc": { "start": { - "line": 346, + "line": 348, "column": 36 }, "end": { - "line": 346, + "line": 348, "column": 48 } }, "object": { "type": "Identifier", - "start": 18503, - "end": 18507, + "start": 18525, + "end": 18529, "loc": { "start": { - "line": 346, + "line": 348, "column": 36 }, "end": { - "line": 346, + "line": 348, "column": 40 }, "identifierName": "pako" @@ -32560,15 +32408,15 @@ }, "property": { "type": "Identifier", - "start": 18508, - "end": 18515, + "start": 18530, + "end": 18537, "loc": { "start": { - "line": 346, + "line": 348, "column": 41 }, "end": { - "line": 346, + "line": 348, "column": 48 }, "identifierName": "deflate" @@ -32580,43 +32428,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 18516, - "end": 18554, + "start": 18538, + "end": 18576, "loc": { "start": { - "line": 346, + "line": 348, "column": 49 }, "end": { - "line": 346, + "line": 348, "column": 87 } }, "object": { "type": "MemberExpression", - "start": 18516, - "end": 18547, + "start": 18538, + "end": 18569, "loc": { "start": { - "line": 346, + "line": 348, "column": 49 }, "end": { - "line": 346, + "line": 348, "column": 80 } }, "object": { "type": "Identifier", - "start": 18516, - "end": 18520, + "start": 18538, + "end": 18542, "loc": { "start": { - "line": 346, + "line": 348, "column": 49 }, "end": { - "line": 346, + "line": 348, "column": 53 }, "identifierName": "data" @@ -32625,15 +32473,15 @@ }, "property": { "type": "Identifier", - "start": 18521, - "end": 18547, + "start": 18543, + "end": 18569, "loc": { "start": { - "line": 346, + "line": 348, "column": 54 }, "end": { - "line": 346, + "line": 348, "column": 80 }, "identifierName": "eachMeshMaterialAttributes" @@ -32644,15 +32492,15 @@ }, "property": { "type": "Identifier", - "start": 18548, - "end": 18554, + "start": 18570, + "end": 18576, "loc": { "start": { - "line": 346, + "line": 348, "column": 81 }, "end": { - "line": 346, + "line": 348, "column": 87 }, "identifierName": "buffer" @@ -32666,15 +32514,15 @@ }, { "type": "ObjectProperty", - "start": 18565, - "end": 18851, + "start": 18587, + "end": 18873, "loc": { "start": { - "line": 347, + "line": 349, "column": 8 }, "end": { - "line": 350, + "line": 352, "column": 15 } }, @@ -32683,15 +32531,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18565, - "end": 18577, + "start": 18587, + "end": 18599, "loc": { "start": { - "line": 347, + "line": 349, "column": 8 }, "end": { - "line": 347, + "line": 349, "column": 20 }, "identifierName": "eachEntityId" @@ -32700,43 +32548,43 @@ }, "value": { "type": "CallExpression", - "start": 18579, - "end": 18851, + "start": 18601, + "end": 18873, "loc": { "start": { - "line": 347, + "line": 349, "column": 22 }, "end": { - "line": 350, + "line": 352, "column": 15 } }, "callee": { "type": "MemberExpression", - "start": 18579, - "end": 18591, + "start": 18601, + "end": 18613, "loc": { "start": { - "line": 347, + "line": 349, "column": 22 }, "end": { - "line": 347, + "line": 349, "column": 34 } }, "object": { "type": "Identifier", - "start": 18579, - "end": 18583, + "start": 18601, + "end": 18605, "loc": { "start": { - "line": 347, + "line": 349, "column": 22 }, "end": { - "line": 347, + "line": 349, "column": 26 }, "identifierName": "pako" @@ -32745,15 +32593,15 @@ }, "property": { "type": "Identifier", - "start": 18584, - "end": 18591, + "start": 18606, + "end": 18613, "loc": { "start": { - "line": 347, + "line": 349, "column": 27 }, "end": { - "line": 347, + "line": 349, "column": 34 }, "identifierName": "deflate" @@ -32765,71 +32613,71 @@ "arguments": [ { "type": "CallExpression", - "start": 18592, - "end": 18850, + "start": 18614, + "end": 18872, "loc": { "start": { - "line": 347, + "line": 349, "column": 35 }, "end": { - "line": 350, + "line": 352, "column": 14 } }, "callee": { "type": "MemberExpression", - "start": 18592, - "end": 18646, + "start": 18614, + "end": 18668, "loc": { "start": { - "line": 347, + "line": 349, "column": 35 }, "end": { - "line": 348, + "line": 350, "column": 20 } }, "object": { "type": "CallExpression", - "start": 18592, - "end": 18625, + "start": 18614, + "end": 18647, "loc": { "start": { - "line": 347, + "line": 349, "column": 35 }, "end": { - "line": 347, + "line": 349, "column": 68 } }, "callee": { "type": "MemberExpression", - "start": 18592, - "end": 18606, + "start": 18614, + "end": 18628, "loc": { "start": { - "line": 347, + "line": 349, "column": 35 }, "end": { - "line": 347, + "line": 349, "column": 49 } }, "object": { "type": "Identifier", - "start": 18592, - "end": 18596, + "start": 18614, + "end": 18618, "loc": { "start": { - "line": 347, + "line": 349, "column": 35 }, "end": { - "line": 347, + "line": 349, "column": 39 }, "identifierName": "JSON" @@ -32838,15 +32686,15 @@ }, "property": { "type": "Identifier", - "start": 18597, - "end": 18606, + "start": 18619, + "end": 18628, "loc": { "start": { - "line": 347, + "line": 349, "column": 40 }, "end": { - "line": 347, + "line": 349, "column": 49 }, "identifierName": "stringify" @@ -32858,29 +32706,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 18607, - "end": 18624, + "start": 18629, + "end": 18646, "loc": { "start": { - "line": 347, + "line": 349, "column": 50 }, "end": { - "line": 347, + "line": 349, "column": 67 } }, "object": { "type": "Identifier", - "start": 18607, - "end": 18611, + "start": 18629, + "end": 18633, "loc": { "start": { - "line": 347, + "line": 349, "column": 50 }, "end": { - "line": 347, + "line": 349, "column": 54 }, "identifierName": "data" @@ -32889,15 +32737,15 @@ }, "property": { "type": "Identifier", - "start": 18612, - "end": 18624, + "start": 18634, + "end": 18646, "loc": { "start": { - "line": 347, + "line": 349, "column": 55 }, "end": { - "line": 347, + "line": 349, "column": 67 }, "identifierName": "eachEntityId" @@ -32910,15 +32758,15 @@ }, "property": { "type": "Identifier", - "start": 18639, - "end": 18646, + "start": 18661, + "end": 18668, "loc": { "start": { - "line": 348, + "line": 350, "column": 13 }, "end": { - "line": 348, + "line": 350, "column": 20 }, "identifierName": "replace" @@ -32930,15 +32778,15 @@ "arguments": [ { "type": "RegExpLiteral", - "start": 18647, - "end": 18665, + "start": 18669, + "end": 18687, "loc": { "start": { - "line": 348, + "line": 350, "column": 21 }, "end": { - "line": 348, + "line": 350, "column": 39 } }, @@ -32950,15 +32798,15 @@ }, { "type": "FunctionExpression", - "start": 18667, - "end": 18849, + "start": 18689, + "end": 18871, "loc": { "start": { - "line": 348, + "line": 350, "column": 41 }, "end": { - "line": 350, + "line": 352, "column": 13 } }, @@ -32969,15 +32817,15 @@ "params": [ { "type": "Identifier", - "start": 18677, - "end": 18680, + "start": 18699, + "end": 18702, "loc": { "start": { - "line": 348, + "line": 350, "column": 51 }, "end": { - "line": 348, + "line": 350, "column": 54 }, "identifierName": "chr" @@ -32987,58 +32835,58 @@ ], "body": { "type": "BlockStatement", - "start": 18682, - "end": 18849, + "start": 18704, + "end": 18871, "loc": { "start": { - "line": 348, + "line": 350, "column": 56 }, "end": { - "line": 350, + "line": 352, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 18768, - "end": 18835, + "start": 18790, + "end": 18857, "loc": { "start": { - "line": 349, + "line": 351, "column": 16 }, "end": { - "line": 349, + "line": 351, "column": 83 } }, "argument": { "type": "BinaryExpression", - "start": 18775, - "end": 18835, + "start": 18797, + "end": 18857, "loc": { "start": { - "line": 349, + "line": 351, "column": 23 }, "end": { - "line": 349, + "line": 351, "column": 83 } }, "left": { "type": "StringLiteral", - "start": 18775, - "end": 18780, + "start": 18797, + "end": 18802, "loc": { "start": { - "line": 349, + "line": 351, "column": 23 }, "end": { - "line": 349, + "line": 351, "column": 28 } }, @@ -33052,57 +32900,57 @@ "operator": "+", "right": { "type": "CallExpression", - "start": 18783, - "end": 18835, + "start": 18805, + "end": 18857, "loc": { "start": { - "line": 349, + "line": 351, "column": 31 }, "end": { - "line": 349, + "line": 351, "column": 83 } }, "callee": { "type": "MemberExpression", - "start": 18783, - "end": 18831, + "start": 18805, + "end": 18853, "loc": { "start": { - "line": 349, + "line": 351, "column": 31 }, "end": { - "line": 349, + "line": 351, "column": 79 } }, "object": { "type": "BinaryExpression", - "start": 18784, - "end": 18823, + "start": 18806, + "end": 18845, "loc": { "start": { - "line": 349, + "line": 351, "column": 32 }, "end": { - "line": 349, + "line": 351, "column": 71 } }, "left": { "type": "StringLiteral", - "start": 18784, - "end": 18790, + "start": 18806, + "end": 18812, "loc": { "start": { - "line": 349, + "line": 351, "column": 32 }, "end": { - "line": 349, + "line": 351, "column": 38 } }, @@ -33115,71 +32963,71 @@ "operator": "+", "right": { "type": "CallExpression", - "start": 18793, - "end": 18823, + "start": 18815, + "end": 18845, "loc": { "start": { - "line": 349, + "line": 351, "column": 41 }, "end": { - "line": 349, + "line": 351, "column": 71 } }, "callee": { "type": "MemberExpression", - "start": 18793, - "end": 18819, + "start": 18815, + "end": 18841, "loc": { "start": { - "line": 349, + "line": 351, "column": 41 }, "end": { - "line": 349, + "line": 351, "column": 67 } }, "object": { "type": "CallExpression", - "start": 18793, - "end": 18810, + "start": 18815, + "end": 18832, "loc": { "start": { - "line": 349, + "line": 351, "column": 41 }, "end": { - "line": 349, + "line": 351, "column": 58 } }, "callee": { "type": "MemberExpression", - "start": 18793, - "end": 18807, + "start": 18815, + "end": 18829, "loc": { "start": { - "line": 349, + "line": 351, "column": 41 }, "end": { - "line": 349, + "line": 351, "column": 55 } }, "object": { "type": "Identifier", - "start": 18793, - "end": 18796, + "start": 18815, + "end": 18818, "loc": { "start": { - "line": 349, + "line": 351, "column": 41 }, "end": { - "line": 349, + "line": 351, "column": 44 }, "identifierName": "chr" @@ -33188,15 +33036,15 @@ }, "property": { "type": "Identifier", - "start": 18797, - "end": 18807, + "start": 18819, + "end": 18829, "loc": { "start": { - "line": 349, + "line": 351, "column": 45 }, "end": { - "line": 349, + "line": 351, "column": 55 }, "identifierName": "charCodeAt" @@ -33208,15 +33056,15 @@ "arguments": [ { "type": "NumericLiteral", - "start": 18808, - "end": 18809, + "start": 18830, + "end": 18831, "loc": { "start": { - "line": 349, + "line": 351, "column": 56 }, "end": { - "line": 349, + "line": 351, "column": 57 } }, @@ -33230,15 +33078,15 @@ }, "property": { "type": "Identifier", - "start": 18811, - "end": 18819, + "start": 18833, + "end": 18841, "loc": { "start": { - "line": 349, + "line": 351, "column": 59 }, "end": { - "line": 349, + "line": 351, "column": 67 }, "identifierName": "toString" @@ -33250,15 +33098,15 @@ "arguments": [ { "type": "NumericLiteral", - "start": 18820, - "end": 18822, + "start": 18842, + "end": 18844, "loc": { "start": { - "line": 349, + "line": 351, "column": 68 }, "end": { - "line": 349, + "line": 351, "column": 70 } }, @@ -33272,20 +33120,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 18783 + "parenStart": 18805 } }, "property": { "type": "Identifier", - "start": 18825, - "end": 18831, + "start": 18847, + "end": 18853, "loc": { "start": { - "line": 349, + "line": 351, "column": 73 }, "end": { - "line": 349, + "line": 351, "column": 79 }, "identifierName": "substr" @@ -33297,15 +33145,15 @@ "arguments": [ { "type": "UnaryExpression", - "start": 18832, - "end": 18834, + "start": 18854, + "end": 18856, "loc": { "start": { - "line": 349, + "line": 351, "column": 80 }, "end": { - "line": 349, + "line": 351, "column": 82 } }, @@ -33313,15 +33161,15 @@ "prefix": true, "argument": { "type": "NumericLiteral", - "start": 18833, - "end": 18834, + "start": 18855, + "end": 18856, "loc": { "start": { - "line": 349, + "line": 351, "column": 81 }, "end": { - "line": 349, + "line": 351, "column": 82 } }, @@ -33343,15 +33191,15 @@ { "type": "CommentLine", "value": " Produce only ASCII-chars, so that the data can be inflated later", - "start": 18684, - "end": 18751, + "start": 18706, + "end": 18773, "loc": { "start": { - "line": 348, + "line": 350, "column": 58 }, "end": { - "line": 348, + "line": 350, "column": 125 } } @@ -33369,378 +33217,8 @@ }, { "type": "ObjectProperty", - "start": 18861, - "end": 18935, - "loc": { - "start": { - "line": 351, - "column": 8 - }, - "end": { - "line": 351, - "column": 82 - } - }, - "method": false, - "shorthand": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 18861, - "end": 18884, - "loc": { - "start": { - "line": 351, - "column": 8 - }, - "end": { - "line": 351, - "column": 31 - }, - "identifierName": "eachEntityMeshesPortion" - }, - "name": "eachEntityMeshesPortion" - }, - "value": { - "type": "CallExpression", - "start": 18886, - "end": 18935, - "loc": { - "start": { - "line": 351, - "column": 33 - }, - "end": { - "line": 351, - "column": 82 - } - }, - "callee": { - "type": "MemberExpression", - "start": 18886, - "end": 18898, - "loc": { - "start": { - "line": 351, - "column": 33 - }, - "end": { - "line": 351, - "column": 45 - } - }, - "object": { - "type": "Identifier", - "start": 18886, - "end": 18890, - "loc": { - "start": { - "line": 351, - "column": 33 - }, - "end": { - "line": 351, - "column": 37 - }, - "identifierName": "pako" - }, - "name": "pako" - }, - "property": { - "type": "Identifier", - "start": 18891, - "end": 18898, - "loc": { - "start": { - "line": 351, - "column": 38 - }, - "end": { - "line": 351, - "column": 45 - }, - "identifierName": "deflate" - }, - "name": "deflate" - }, - "computed": false - }, - "arguments": [ - { - "type": "MemberExpression", - "start": 18899, - "end": 18934, - "loc": { - "start": { - "line": 351, - "column": 46 - }, - "end": { - "line": 351, - "column": 81 - } - }, - "object": { - "type": "MemberExpression", - "start": 18899, - "end": 18927, - "loc": { - "start": { - "line": 351, - "column": 46 - }, - "end": { - "line": 351, - "column": 74 - } - }, - "object": { - "type": "Identifier", - "start": 18899, - "end": 18903, - "loc": { - "start": { - "line": 351, - "column": 46 - }, - "end": { - "line": 351, - "column": 50 - }, - "identifierName": "data" - }, - "name": "data" - }, - "property": { - "type": "Identifier", - "start": 18904, - "end": 18927, - "loc": { - "start": { - "line": 351, - "column": 51 - }, - "end": { - "line": 351, - "column": 74 - }, - "identifierName": "eachEntityMeshesPortion" - }, - "name": "eachEntityMeshesPortion" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 18928, - "end": 18934, - "loc": { - "start": { - "line": 351, - "column": 75 - }, - "end": { - "line": 351, - "column": 81 - }, - "identifierName": "buffer" - }, - "name": "buffer" - }, - "computed": false - } - ] - } - }, - { - "type": "ObjectProperty", - "start": 18945, - "end": 18997, - "loc": { - "start": { - "line": 352, - "column": 8 - }, - "end": { - "line": 352, - "column": 60 - } - }, - "method": false, - "shorthand": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 18945, - "end": 18957, - "loc": { - "start": { - "line": 352, - "column": 8 - }, - "end": { - "line": 352, - "column": 20 - }, - "identifierName": "eachTileAABB" - }, - "name": "eachTileAABB" - }, - "value": { - "type": "CallExpression", - "start": 18959, - "end": 18997, - "loc": { - "start": { - "line": 352, - "column": 22 - }, - "end": { - "line": 352, - "column": 60 - } - }, - "callee": { - "type": "MemberExpression", - "start": 18959, - "end": 18971, - "loc": { - "start": { - "line": 352, - "column": 22 - }, - "end": { - "line": 352, - "column": 34 - } - }, - "object": { - "type": "Identifier", - "start": 18959, - "end": 18963, - "loc": { - "start": { - "line": 352, - "column": 22 - }, - "end": { - "line": 352, - "column": 26 - }, - "identifierName": "pako" - }, - "name": "pako" - }, - "property": { - "type": "Identifier", - "start": 18964, - "end": 18971, - "loc": { - "start": { - "line": 352, - "column": 27 - }, - "end": { - "line": 352, - "column": 34 - }, - "identifierName": "deflate" - }, - "name": "deflate" - }, - "computed": false - }, - "arguments": [ - { - "type": "MemberExpression", - "start": 18972, - "end": 18996, - "loc": { - "start": { - "line": 352, - "column": 35 - }, - "end": { - "line": 352, - "column": 59 - } - }, - "object": { - "type": "MemberExpression", - "start": 18972, - "end": 18989, - "loc": { - "start": { - "line": 352, - "column": 35 - }, - "end": { - "line": 352, - "column": 52 - } - }, - "object": { - "type": "Identifier", - "start": 18972, - "end": 18976, - "loc": { - "start": { - "line": 352, - "column": 35 - }, - "end": { - "line": 352, - "column": 39 - }, - "identifierName": "data" - }, - "name": "data" - }, - "property": { - "type": "Identifier", - "start": 18977, - "end": 18989, - "loc": { - "start": { - "line": 352, - "column": 40 - }, - "end": { - "line": 352, - "column": 52 - }, - "identifierName": "eachTileAABB" - }, - "name": "eachTileAABB" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 18990, - "end": 18996, - "loc": { - "start": { - "line": 352, - "column": 53 - }, - "end": { - "line": 352, - "column": 59 - }, - "identifierName": "buffer" - }, - "name": "buffer" - }, - "computed": false - } - ] - } - }, - { - "type": "ObjectProperty", - "start": 19007, - "end": 19081, + "start": 18883, + "end": 18957, "loc": { "start": { "line": 353, @@ -33756,8 +33234,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 19007, - "end": 19030, + "start": 18883, + "end": 18906, "loc": { "start": { "line": 353, @@ -33767,14 +33245,14 @@ "line": 353, "column": 31 }, - "identifierName": "eachTileEntitiesPortion" + "identifierName": "eachEntityMeshesPortion" }, - "name": "eachTileEntitiesPortion" + "name": "eachEntityMeshesPortion" }, "value": { "type": "CallExpression", - "start": 19032, - "end": 19081, + "start": 18908, + "end": 18957, "loc": { "start": { "line": 353, @@ -33787,8 +33265,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19032, - "end": 19044, + "start": 18908, + "end": 18920, "loc": { "start": { "line": 353, @@ -33801,8 +33279,8 @@ }, "object": { "type": "Identifier", - "start": 19032, - "end": 19036, + "start": 18908, + "end": 18912, "loc": { "start": { "line": 353, @@ -33818,8 +33296,8 @@ }, "property": { "type": "Identifier", - "start": 19037, - "end": 19044, + "start": 18913, + "end": 18920, "loc": { "start": { "line": 353, @@ -33838,8 +33316,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 19045, - "end": 19080, + "start": 18921, + "end": 18956, "loc": { "start": { "line": 353, @@ -33852,8 +33330,8 @@ }, "object": { "type": "MemberExpression", - "start": 19045, - "end": 19073, + "start": 18921, + "end": 18949, "loc": { "start": { "line": 353, @@ -33866,8 +33344,8 @@ }, "object": { "type": "Identifier", - "start": 19045, - "end": 19049, + "start": 18921, + "end": 18925, "loc": { "start": { "line": 353, @@ -33883,8 +33361,8 @@ }, "property": { "type": "Identifier", - "start": 19050, - "end": 19073, + "start": 18926, + "end": 18949, "loc": { "start": { "line": 353, @@ -33894,16 +33372,16 @@ "line": 353, "column": 74 }, - "identifierName": "eachTileEntitiesPortion" + "identifierName": "eachEntityMeshesPortion" }, - "name": "eachTileEntitiesPortion" + "name": "eachEntityMeshesPortion" }, "computed": false }, "property": { "type": "Identifier", - "start": 19074, - "end": 19080, + "start": 18950, + "end": 18956, "loc": { "start": { "line": 353, @@ -33921,6 +33399,376 @@ } ] } + }, + { + "type": "ObjectProperty", + "start": 18967, + "end": 19019, + "loc": { + "start": { + "line": 354, + "column": 8 + }, + "end": { + "line": 354, + "column": 60 + } + }, + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 18967, + "end": 18979, + "loc": { + "start": { + "line": 354, + "column": 8 + }, + "end": { + "line": 354, + "column": 20 + }, + "identifierName": "eachTileAABB" + }, + "name": "eachTileAABB" + }, + "value": { + "type": "CallExpression", + "start": 18981, + "end": 19019, + "loc": { + "start": { + "line": 354, + "column": 22 + }, + "end": { + "line": 354, + "column": 60 + } + }, + "callee": { + "type": "MemberExpression", + "start": 18981, + "end": 18993, + "loc": { + "start": { + "line": 354, + "column": 22 + }, + "end": { + "line": 354, + "column": 34 + } + }, + "object": { + "type": "Identifier", + "start": 18981, + "end": 18985, + "loc": { + "start": { + "line": 354, + "column": 22 + }, + "end": { + "line": 354, + "column": 26 + }, + "identifierName": "pako" + }, + "name": "pako" + }, + "property": { + "type": "Identifier", + "start": 18986, + "end": 18993, + "loc": { + "start": { + "line": 354, + "column": 27 + }, + "end": { + "line": 354, + "column": 34 + }, + "identifierName": "deflate" + }, + "name": "deflate" + }, + "computed": false + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 18994, + "end": 19018, + "loc": { + "start": { + "line": 354, + "column": 35 + }, + "end": { + "line": 354, + "column": 59 + } + }, + "object": { + "type": "MemberExpression", + "start": 18994, + "end": 19011, + "loc": { + "start": { + "line": 354, + "column": 35 + }, + "end": { + "line": 354, + "column": 52 + } + }, + "object": { + "type": "Identifier", + "start": 18994, + "end": 18998, + "loc": { + "start": { + "line": 354, + "column": 35 + }, + "end": { + "line": 354, + "column": 39 + }, + "identifierName": "data" + }, + "name": "data" + }, + "property": { + "type": "Identifier", + "start": 18999, + "end": 19011, + "loc": { + "start": { + "line": 354, + "column": 40 + }, + "end": { + "line": 354, + "column": 52 + }, + "identifierName": "eachTileAABB" + }, + "name": "eachTileAABB" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 19012, + "end": 19018, + "loc": { + "start": { + "line": 354, + "column": 53 + }, + "end": { + "line": 354, + "column": 59 + }, + "identifierName": "buffer" + }, + "name": "buffer" + }, + "computed": false + } + ] + } + }, + { + "type": "ObjectProperty", + "start": 19029, + "end": 19103, + "loc": { + "start": { + "line": 355, + "column": 8 + }, + "end": { + "line": 355, + "column": 82 + } + }, + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 19029, + "end": 19052, + "loc": { + "start": { + "line": 355, + "column": 8 + }, + "end": { + "line": 355, + "column": 31 + }, + "identifierName": "eachTileEntitiesPortion" + }, + "name": "eachTileEntitiesPortion" + }, + "value": { + "type": "CallExpression", + "start": 19054, + "end": 19103, + "loc": { + "start": { + "line": 355, + "column": 33 + }, + "end": { + "line": 355, + "column": 82 + } + }, + "callee": { + "type": "MemberExpression", + "start": 19054, + "end": 19066, + "loc": { + "start": { + "line": 355, + "column": 33 + }, + "end": { + "line": 355, + "column": 45 + } + }, + "object": { + "type": "Identifier", + "start": 19054, + "end": 19058, + "loc": { + "start": { + "line": 355, + "column": 33 + }, + "end": { + "line": 355, + "column": 37 + }, + "identifierName": "pako" + }, + "name": "pako" + }, + "property": { + "type": "Identifier", + "start": 19059, + "end": 19066, + "loc": { + "start": { + "line": 355, + "column": 38 + }, + "end": { + "line": 355, + "column": 45 + }, + "identifierName": "deflate" + }, + "name": "deflate" + }, + "computed": false + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 19067, + "end": 19102, + "loc": { + "start": { + "line": 355, + "column": 46 + }, + "end": { + "line": 355, + "column": 81 + } + }, + "object": { + "type": "MemberExpression", + "start": 19067, + "end": 19095, + "loc": { + "start": { + "line": 355, + "column": 46 + }, + "end": { + "line": 355, + "column": 74 + } + }, + "object": { + "type": "Identifier", + "start": 19067, + "end": 19071, + "loc": { + "start": { + "line": 355, + "column": 46 + }, + "end": { + "line": 355, + "column": 50 + }, + "identifierName": "data" + }, + "name": "data" + }, + "property": { + "type": "Identifier", + "start": 19072, + "end": 19095, + "loc": { + "start": { + "line": 355, + "column": 51 + }, + "end": { + "line": 355, + "column": 74 + }, + "identifierName": "eachTileEntitiesPortion" + }, + "name": "eachTileEntitiesPortion" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 19096, + "end": 19102, + "loc": { + "start": { + "line": 355, + "column": 75 + }, + "end": { + "line": 355, + "column": 81 + }, + "identifierName": "buffer" + }, + "name": "buffer" + }, + "computed": false + } + ] + } } ] } @@ -33931,29 +33779,29 @@ }, { "type": "FunctionDeclaration", - "start": 19092, - "end": 19374, + "start": 19114, + "end": 19396, "loc": { "start": { - "line": 357, + "line": 359, "column": 0 }, "end": { - "line": 362, + "line": 364, "column": 1 } }, "id": { "type": "Identifier", - "start": 19101, - "end": 19112, + "start": 19123, + "end": 19134, "loc": { "start": { - "line": 357, + "line": 359, "column": 9 }, "end": { - "line": 357, + "line": 359, "column": 20 }, "identifierName": "deflateJSON" @@ -33966,15 +33814,15 @@ "params": [ { "type": "Identifier", - "start": 19113, - "end": 19120, + "start": 19135, + "end": 19142, "loc": { "start": { - "line": 357, + "line": 359, "column": 21 }, "end": { - "line": 357, + "line": 359, "column": 28 }, "identifierName": "strings" @@ -33984,100 +33832,100 @@ ], "body": { "type": "BlockStatement", - "start": 19122, - "end": 19374, + "start": 19144, + "end": 19396, "loc": { "start": { - "line": 357, + "line": 359, "column": 30 }, "end": { - "line": 362, + "line": 364, "column": 1 } }, "body": [ { "type": "ReturnStatement", - "start": 19128, - "end": 19372, + "start": 19150, + "end": 19394, "loc": { "start": { - "line": 358, + "line": 360, "column": 4 }, "end": { - "line": 361, + "line": 363, "column": 11 } }, "argument": { "type": "CallExpression", - "start": 19135, - "end": 19371, + "start": 19157, + "end": 19393, "loc": { "start": { - "line": 358, + "line": 360, "column": 11 }, "end": { - "line": 361, + "line": 363, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 19135, - "end": 19175, + "start": 19157, + "end": 19197, "loc": { "start": { - "line": 358, + "line": 360, "column": 11 }, "end": { - "line": 359, + "line": 361, "column": 16 } }, "object": { "type": "CallExpression", - "start": 19135, - "end": 19158, + "start": 19157, + "end": 19180, "loc": { "start": { - "line": 358, + "line": 360, "column": 11 }, "end": { - "line": 358, + "line": 360, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 19135, - "end": 19149, + "start": 19157, + "end": 19171, "loc": { "start": { - "line": 358, + "line": 360, "column": 11 }, "end": { - "line": 358, + "line": 360, "column": 25 } }, "object": { "type": "Identifier", - "start": 19135, - "end": 19139, + "start": 19157, + "end": 19161, "loc": { "start": { - "line": 358, + "line": 360, "column": 11 }, "end": { - "line": 358, + "line": 360, "column": 15 }, "identifierName": "JSON" @@ -34086,15 +33934,15 @@ }, "property": { "type": "Identifier", - "start": 19140, - "end": 19149, + "start": 19162, + "end": 19171, "loc": { "start": { - "line": 358, + "line": 360, "column": 16 }, "end": { - "line": 358, + "line": 360, "column": 25 }, "identifierName": "stringify" @@ -34106,15 +33954,15 @@ "arguments": [ { "type": "Identifier", - "start": 19150, - "end": 19157, + "start": 19172, + "end": 19179, "loc": { "start": { - "line": 358, + "line": 360, "column": 26 }, "end": { - "line": 358, + "line": 360, "column": 33 }, "identifierName": "strings" @@ -34125,15 +33973,15 @@ }, "property": { "type": "Identifier", - "start": 19168, - "end": 19175, + "start": 19190, + "end": 19197, "loc": { "start": { - "line": 359, + "line": 361, "column": 9 }, "end": { - "line": 359, + "line": 361, "column": 16 }, "identifierName": "replace" @@ -34145,15 +33993,15 @@ "arguments": [ { "type": "RegExpLiteral", - "start": 19176, - "end": 19194, + "start": 19198, + "end": 19216, "loc": { "start": { - "line": 359, + "line": 361, "column": 17 }, "end": { - "line": 359, + "line": 361, "column": 35 } }, @@ -34165,15 +34013,15 @@ }, { "type": "FunctionExpression", - "start": 19196, - "end": 19370, + "start": 19218, + "end": 19392, "loc": { "start": { - "line": 359, + "line": 361, "column": 37 }, "end": { - "line": 361, + "line": 363, "column": 9 } }, @@ -34184,15 +34032,15 @@ "params": [ { "type": "Identifier", - "start": 19206, - "end": 19209, + "start": 19228, + "end": 19231, "loc": { "start": { - "line": 359, + "line": 361, "column": 47 }, "end": { - "line": 359, + "line": 361, "column": 50 }, "identifierName": "chr" @@ -34202,58 +34050,58 @@ ], "body": { "type": "BlockStatement", - "start": 19211, - "end": 19370, + "start": 19233, + "end": 19392, "loc": { "start": { - "line": 359, + "line": 361, "column": 52 }, "end": { - "line": 361, + "line": 363, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 19293, - "end": 19360, + "start": 19315, + "end": 19382, "loc": { "start": { - "line": 360, + "line": 362, "column": 12 }, "end": { - "line": 360, + "line": 362, "column": 79 } }, "argument": { "type": "BinaryExpression", - "start": 19300, - "end": 19360, + "start": 19322, + "end": 19382, "loc": { "start": { - "line": 360, + "line": 362, "column": 19 }, "end": { - "line": 360, + "line": 362, "column": 79 } }, "left": { "type": "StringLiteral", - "start": 19300, - "end": 19305, + "start": 19322, + "end": 19327, "loc": { "start": { - "line": 360, + "line": 362, "column": 19 }, "end": { - "line": 360, + "line": 362, "column": 24 } }, @@ -34267,57 +34115,57 @@ "operator": "+", "right": { "type": "CallExpression", - "start": 19308, - "end": 19360, + "start": 19330, + "end": 19382, "loc": { "start": { - "line": 360, + "line": 362, "column": 27 }, "end": { - "line": 360, + "line": 362, "column": 79 } }, "callee": { "type": "MemberExpression", - "start": 19308, - "end": 19356, + "start": 19330, + "end": 19378, "loc": { "start": { - "line": 360, + "line": 362, "column": 27 }, "end": { - "line": 360, + "line": 362, "column": 75 } }, "object": { "type": "BinaryExpression", - "start": 19309, - "end": 19348, + "start": 19331, + "end": 19370, "loc": { "start": { - "line": 360, + "line": 362, "column": 28 }, "end": { - "line": 360, + "line": 362, "column": 67 } }, "left": { "type": "StringLiteral", - "start": 19309, - "end": 19315, + "start": 19331, + "end": 19337, "loc": { "start": { - "line": 360, + "line": 362, "column": 28 }, "end": { - "line": 360, + "line": 362, "column": 34 } }, @@ -34330,71 +34178,71 @@ "operator": "+", "right": { "type": "CallExpression", - "start": 19318, - "end": 19348, + "start": 19340, + "end": 19370, "loc": { "start": { - "line": 360, + "line": 362, "column": 37 }, "end": { - "line": 360, + "line": 362, "column": 67 } }, "callee": { "type": "MemberExpression", - "start": 19318, - "end": 19344, + "start": 19340, + "end": 19366, "loc": { "start": { - "line": 360, + "line": 362, "column": 37 }, "end": { - "line": 360, + "line": 362, "column": 63 } }, "object": { "type": "CallExpression", - "start": 19318, - "end": 19335, + "start": 19340, + "end": 19357, "loc": { "start": { - "line": 360, + "line": 362, "column": 37 }, "end": { - "line": 360, + "line": 362, "column": 54 } }, "callee": { "type": "MemberExpression", - "start": 19318, - "end": 19332, + "start": 19340, + "end": 19354, "loc": { "start": { - "line": 360, + "line": 362, "column": 37 }, "end": { - "line": 360, + "line": 362, "column": 51 } }, "object": { "type": "Identifier", - "start": 19318, - "end": 19321, + "start": 19340, + "end": 19343, "loc": { "start": { - "line": 360, + "line": 362, "column": 37 }, "end": { - "line": 360, + "line": 362, "column": 40 }, "identifierName": "chr" @@ -34403,15 +34251,15 @@ }, "property": { "type": "Identifier", - "start": 19322, - "end": 19332, + "start": 19344, + "end": 19354, "loc": { "start": { - "line": 360, + "line": 362, "column": 41 }, "end": { - "line": 360, + "line": 362, "column": 51 }, "identifierName": "charCodeAt" @@ -34423,15 +34271,15 @@ "arguments": [ { "type": "NumericLiteral", - "start": 19333, - "end": 19334, + "start": 19355, + "end": 19356, "loc": { "start": { - "line": 360, + "line": 362, "column": 52 }, "end": { - "line": 360, + "line": 362, "column": 53 } }, @@ -34445,15 +34293,15 @@ }, "property": { "type": "Identifier", - "start": 19336, - "end": 19344, + "start": 19358, + "end": 19366, "loc": { "start": { - "line": 360, + "line": 362, "column": 55 }, "end": { - "line": 360, + "line": 362, "column": 63 }, "identifierName": "toString" @@ -34465,15 +34313,15 @@ "arguments": [ { "type": "NumericLiteral", - "start": 19345, - "end": 19347, + "start": 19367, + "end": 19369, "loc": { "start": { - "line": 360, + "line": 362, "column": 64 }, "end": { - "line": 360, + "line": 362, "column": 66 } }, @@ -34487,20 +34335,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 19308 + "parenStart": 19330 } }, "property": { "type": "Identifier", - "start": 19350, - "end": 19356, + "start": 19372, + "end": 19378, "loc": { "start": { - "line": 360, + "line": 362, "column": 69 }, "end": { - "line": 360, + "line": 362, "column": 75 }, "identifierName": "substr" @@ -34512,15 +34360,15 @@ "arguments": [ { "type": "UnaryExpression", - "start": 19357, - "end": 19359, + "start": 19379, + "end": 19381, "loc": { "start": { - "line": 360, + "line": 362, "column": 76 }, "end": { - "line": 360, + "line": 362, "column": 78 } }, @@ -34528,15 +34376,15 @@ "prefix": true, "argument": { "type": "NumericLiteral", - "start": 19358, - "end": 19359, + "start": 19380, + "end": 19381, "loc": { "start": { - "line": 360, + "line": 362, "column": 77 }, "end": { - "line": 360, + "line": 362, "column": 78 } }, @@ -34558,15 +34406,15 @@ { "type": "CommentLine", "value": " Produce only ASCII-chars, so that the data can be inflated later", - "start": 19213, - "end": 19280, + "start": 19235, + "end": 19302, "loc": { "start": { - "line": 359, + "line": 361, "column": 54 }, "end": { - "line": 359, + "line": 361, "column": 121 } } @@ -34586,29 +34434,29 @@ }, { "type": "FunctionDeclaration", - "start": 19376, - "end": 20605, + "start": 19398, + "end": 20627, "loc": { "start": { - "line": 364, + "line": 366, "column": 0 }, "end": { - "line": 395, + "line": 397, "column": 1 } }, "id": { "type": "Identifier", - "start": 19385, - "end": 19402, + "start": 19407, + "end": 19424, "loc": { "start": { - "line": 364, + "line": 366, "column": 9 }, "end": { - "line": 364, + "line": 366, "column": 26 }, "identifierName": "createArrayBuffer" @@ -34621,15 +34469,15 @@ "params": [ { "type": "Identifier", - "start": 19403, - "end": 19415, + "start": 19425, + "end": 19437, "loc": { "start": { - "line": 364, + "line": 366, "column": 27 }, "end": { - "line": 364, + "line": 366, "column": 39 }, "identifierName": "deflatedData" @@ -34639,58 +34487,58 @@ ], "body": { "type": "BlockStatement", - "start": 19417, - "end": 20605, + "start": 19439, + "end": 20627, "loc": { "start": { - "line": 364, + "line": 366, "column": 41 }, "end": { - "line": 395, + "line": 397, "column": 1 } }, "body": [ { "type": "ReturnStatement", - "start": 19423, - "end": 20603, + "start": 19445, + "end": 20625, "loc": { "start": { - "line": 365, + "line": 367, "column": 4 }, "end": { - "line": 394, + "line": 396, "column": 7 } }, "argument": { "type": "CallExpression", - "start": 19430, - "end": 20602, + "start": 19452, + "end": 20624, "loc": { "start": { - "line": 365, + "line": 367, "column": 11 }, "end": { - "line": 394, + "line": 396, "column": 6 } }, "callee": { "type": "Identifier", - "start": 19430, - "end": 19443, + "start": 19452, + "end": 19465, "loc": { "start": { - "line": 365, + "line": 367, "column": 11 }, "end": { - "line": 365, + "line": 367, "column": 24 }, "identifierName": "toArrayBuffer" @@ -34700,44 +34548,44 @@ "arguments": [ { "type": "ArrayExpression", - "start": 19444, - "end": 20601, + "start": 19466, + "end": 20623, "loc": { "start": { - "line": 365, + "line": 367, "column": 25 }, "end": { - "line": 394, + "line": 396, "column": 5 } }, "elements": [ { "type": "MemberExpression", - "start": 19454, - "end": 19475, + "start": 19476, + "end": 19497, "loc": { "start": { - "line": 366, + "line": 368, "column": 8 }, "end": { - "line": 366, + "line": 368, "column": 29 } }, "object": { "type": "Identifier", - "start": 19454, - "end": 19466, + "start": 19476, + "end": 19488, "loc": { "start": { - "line": 366, + "line": 368, "column": 8 }, "end": { - "line": 366, + "line": 368, "column": 20 }, "identifierName": "deflatedData" @@ -34746,15 +34594,15 @@ }, "property": { "type": "Identifier", - "start": 19467, - "end": 19475, + "start": 19489, + "end": 19497, "loc": { "start": { - "line": 366, + "line": 368, "column": 21 }, "end": { - "line": 366, + "line": 368, "column": 29 }, "identifierName": "metadata" @@ -34765,29 +34613,29 @@ }, { "type": "MemberExpression", - "start": 19485, - "end": 19509, + "start": 19507, + "end": 19531, "loc": { "start": { - "line": 367, + "line": 369, "column": 8 }, "end": { - "line": 367, + "line": 369, "column": 32 } }, "object": { "type": "Identifier", - "start": 19485, - "end": 19497, + "start": 19507, + "end": 19519, "loc": { "start": { - "line": 367, + "line": 369, "column": 8 }, "end": { - "line": 367, + "line": 369, "column": 20 }, "identifierName": "deflatedData" @@ -34796,15 +34644,15 @@ }, "property": { "type": "Identifier", - "start": 19498, - "end": 19509, + "start": 19520, + "end": 19531, "loc": { "start": { - "line": 367, + "line": 369, "column": 21 }, "end": { - "line": 367, + "line": 369, "column": 32 }, "identifierName": "textureData" @@ -34815,29 +34663,29 @@ }, { "type": "MemberExpression", - "start": 19519, - "end": 19554, + "start": 19541, + "end": 19576, "loc": { "start": { - "line": 368, + "line": 370, "column": 8 }, "end": { - "line": 368, + "line": 370, "column": 43 } }, "object": { "type": "Identifier", - "start": 19519, - "end": 19531, + "start": 19541, + "end": 19553, "loc": { "start": { - "line": 368, + "line": 370, "column": 8 }, "end": { - "line": 368, + "line": 370, "column": 20 }, "identifierName": "deflatedData" @@ -34846,15 +34694,15 @@ }, "property": { "type": "Identifier", - "start": 19532, - "end": 19554, + "start": 19554, + "end": 19576, "loc": { "start": { - "line": 368, + "line": 370, "column": 21 }, "end": { - "line": 368, + "line": 370, "column": 43 }, "identifierName": "eachTextureDataPortion" @@ -34865,29 +34713,29 @@ }, { "type": "MemberExpression", - "start": 19564, - "end": 19598, + "start": 19586, + "end": 19620, "loc": { "start": { - "line": 369, + "line": 371, "column": 8 }, "end": { - "line": 369, + "line": 371, "column": 42 } }, "object": { "type": "Identifier", - "start": 19564, - "end": 19576, + "start": 19586, + "end": 19598, "loc": { "start": { - "line": 369, + "line": 371, "column": 8 }, "end": { - "line": 369, + "line": 371, "column": 20 }, "identifierName": "deflatedData" @@ -34896,15 +34744,15 @@ }, "property": { "type": "Identifier", - "start": 19577, - "end": 19598, + "start": 19599, + "end": 19620, "loc": { "start": { - "line": 369, + "line": 371, "column": 21 }, "end": { - "line": 369, + "line": 371, "column": 42 }, "identifierName": "eachTextureAttributes" @@ -34915,29 +34763,29 @@ }, { "type": "MemberExpression", - "start": 19608, - "end": 19630, + "start": 19630, + "end": 19652, "loc": { "start": { - "line": 370, + "line": 372, "column": 8 }, "end": { - "line": 370, + "line": 372, "column": 30 } }, "object": { "type": "Identifier", - "start": 19608, - "end": 19620, + "start": 19630, + "end": 19642, "loc": { "start": { - "line": 370, + "line": 372, "column": 8 }, "end": { - "line": 370, + "line": 372, "column": 20 }, "identifierName": "deflatedData" @@ -34946,15 +34794,15 @@ }, "property": { "type": "Identifier", - "start": 19621, - "end": 19630, + "start": 19643, + "end": 19652, "loc": { "start": { - "line": 370, + "line": 372, "column": 21 }, "end": { - "line": 370, + "line": 372, "column": 30 }, "identifierName": "positions" @@ -34965,29 +34813,29 @@ }, { "type": "MemberExpression", - "start": 19640, - "end": 19660, + "start": 19662, + "end": 19682, "loc": { "start": { - "line": 371, + "line": 373, "column": 8 }, "end": { - "line": 371, + "line": 373, "column": 28 } }, "object": { "type": "Identifier", - "start": 19640, - "end": 19652, + "start": 19662, + "end": 19674, "loc": { "start": { - "line": 371, + "line": 373, "column": 8 }, "end": { - "line": 371, + "line": 373, "column": 20 }, "identifierName": "deflatedData" @@ -34996,15 +34844,15 @@ }, "property": { "type": "Identifier", - "start": 19653, - "end": 19660, + "start": 19675, + "end": 19682, "loc": { "start": { - "line": 371, + "line": 373, "column": 21 }, "end": { - "line": 371, + "line": 373, "column": 28 }, "identifierName": "normals" @@ -35015,29 +34863,29 @@ }, { "type": "MemberExpression", - "start": 19670, - "end": 19689, + "start": 19692, + "end": 19711, "loc": { "start": { - "line": 372, + "line": 374, "column": 8 }, "end": { - "line": 372, + "line": 374, "column": 27 } }, "object": { "type": "Identifier", - "start": 19670, - "end": 19682, + "start": 19692, + "end": 19704, "loc": { "start": { - "line": 372, + "line": 374, "column": 8 }, "end": { - "line": 372, + "line": 374, "column": 20 }, "identifierName": "deflatedData" @@ -35046,15 +34894,15 @@ }, "property": { "type": "Identifier", - "start": 19683, - "end": 19689, + "start": 19705, + "end": 19711, "loc": { "start": { - "line": 372, + "line": 374, "column": 21 }, "end": { - "line": 372, + "line": 374, "column": 27 }, "identifierName": "colors" @@ -35065,29 +34913,29 @@ }, { "type": "MemberExpression", - "start": 19699, - "end": 19715, + "start": 19721, + "end": 19737, "loc": { "start": { - "line": 373, + "line": 375, "column": 8 }, "end": { - "line": 373, + "line": 375, "column": 24 } }, "object": { "type": "Identifier", - "start": 19699, - "end": 19711, + "start": 19721, + "end": 19733, "loc": { "start": { - "line": 373, + "line": 375, "column": 8 }, "end": { - "line": 373, + "line": 375, "column": 20 }, "identifierName": "deflatedData" @@ -35096,15 +34944,15 @@ }, "property": { "type": "Identifier", - "start": 19712, - "end": 19715, + "start": 19734, + "end": 19737, "loc": { "start": { - "line": 373, + "line": 375, "column": 21 }, "end": { - "line": 373, + "line": 375, "column": 24 }, "identifierName": "uvs" @@ -35115,29 +34963,29 @@ }, { "type": "MemberExpression", - "start": 19725, - "end": 19745, + "start": 19747, + "end": 19767, "loc": { "start": { - "line": 374, + "line": 376, "column": 8 }, "end": { - "line": 374, + "line": 376, "column": 28 } }, "object": { "type": "Identifier", - "start": 19725, - "end": 19737, + "start": 19747, + "end": 19759, "loc": { "start": { - "line": 374, + "line": 376, "column": 8 }, "end": { - "line": 374, + "line": 376, "column": 20 }, "identifierName": "deflatedData" @@ -35146,15 +34994,15 @@ }, "property": { "type": "Identifier", - "start": 19738, - "end": 19745, + "start": 19760, + "end": 19767, "loc": { "start": { - "line": 374, + "line": 376, "column": 21 }, "end": { - "line": 374, + "line": 376, "column": 28 }, "identifierName": "indices" @@ -35165,29 +35013,29 @@ }, { "type": "MemberExpression", - "start": 19755, - "end": 19779, + "start": 19777, + "end": 19801, "loc": { "start": { - "line": 375, + "line": 377, "column": 8 }, "end": { - "line": 375, + "line": 377, "column": 32 } }, "object": { "type": "Identifier", - "start": 19755, - "end": 19767, + "start": 19777, + "end": 19789, "loc": { "start": { - "line": 375, + "line": 377, "column": 8 }, "end": { - "line": 375, + "line": 377, "column": 20 }, "identifierName": "deflatedData" @@ -35196,15 +35044,15 @@ }, "property": { "type": "Identifier", - "start": 19768, - "end": 19779, + "start": 19790, + "end": 19801, "loc": { "start": { - "line": 375, + "line": 377, "column": 21 }, "end": { - "line": 375, + "line": 377, "column": 32 }, "identifierName": "edgeIndices" @@ -35215,29 +35063,29 @@ }, { "type": "MemberExpression", - "start": 19789, - "end": 19824, + "start": 19811, + "end": 19846, "loc": { "start": { - "line": 376, + "line": 378, "column": 8 }, "end": { - "line": 376, + "line": 378, "column": 43 } }, "object": { "type": "Identifier", - "start": 19789, - "end": 19801, + "start": 19811, + "end": 19823, "loc": { "start": { - "line": 376, + "line": 378, "column": 8 }, "end": { - "line": 376, + "line": 378, "column": 20 }, "identifierName": "deflatedData" @@ -35246,15 +35094,15 @@ }, "property": { "type": "Identifier", - "start": 19802, - "end": 19824, + "start": 19824, + "end": 19846, "loc": { "start": { - "line": 376, + "line": 378, "column": 21 }, "end": { - "line": 376, + "line": 378, "column": 43 }, "identifierName": "eachTextureSetTextures" @@ -35265,29 +35113,29 @@ }, { "type": "MemberExpression", - "start": 19834, - "end": 19855, + "start": 19856, + "end": 19877, "loc": { "start": { - "line": 377, + "line": 379, "column": 8 }, "end": { - "line": 377, + "line": 379, "column": 29 } }, "object": { "type": "Identifier", - "start": 19834, - "end": 19846, + "start": 19856, + "end": 19868, "loc": { "start": { - "line": 377, + "line": 379, "column": 8 }, "end": { - "line": 377, + "line": 379, "column": 20 }, "identifierName": "deflatedData" @@ -35296,15 +35144,15 @@ }, "property": { "type": "Identifier", - "start": 19847, - "end": 19855, + "start": 19869, + "end": 19877, "loc": { "start": { - "line": 377, + "line": 379, "column": 21 }, "end": { - "line": 377, + "line": 379, "column": 29 }, "identifierName": "matrices" @@ -35315,29 +35163,29 @@ }, { "type": "MemberExpression", - "start": 19865, - "end": 19906, + "start": 19887, + "end": 19928, "loc": { "start": { - "line": 378, + "line": 380, "column": 8 }, "end": { - "line": 378, + "line": 380, "column": 49 } }, "object": { "type": "Identifier", - "start": 19865, - "end": 19877, + "start": 19887, + "end": 19899, "loc": { "start": { - "line": 378, + "line": 380, "column": 8 }, "end": { - "line": 378, + "line": 380, "column": 20 }, "identifierName": "deflatedData" @@ -35346,15 +35194,15 @@ }, "property": { "type": "Identifier", - "start": 19878, - "end": 19906, + "start": 19900, + "end": 19928, "loc": { "start": { - "line": 378, + "line": 380, "column": 21 }, "end": { - "line": 378, + "line": 380, "column": 49 }, "identifierName": "reusedGeometriesDecodeMatrix" @@ -35365,29 +35213,29 @@ }, { "type": "MemberExpression", - "start": 19916, - "end": 19954, + "start": 19938, + "end": 19976, "loc": { "start": { - "line": 379, + "line": 381, "column": 8 }, "end": { - "line": 379, + "line": 381, "column": 46 } }, "object": { "type": "Identifier", - "start": 19916, - "end": 19928, + "start": 19938, + "end": 19950, "loc": { "start": { - "line": 379, + "line": 381, "column": 8 }, "end": { - "line": 379, + "line": 381, "column": 20 }, "identifierName": "deflatedData" @@ -35396,15 +35244,15 @@ }, "property": { "type": "Identifier", - "start": 19929, - "end": 19954, + "start": 19951, + "end": 19976, "loc": { "start": { - "line": 379, + "line": 381, "column": 21 }, "end": { - "line": 379, + "line": 381, "column": 46 }, "identifierName": "eachGeometryPrimitiveType" @@ -35415,29 +35263,29 @@ }, { "type": "MemberExpression", - "start": 19964, - "end": 20005, + "start": 19986, + "end": 20027, "loc": { "start": { - "line": 380, + "line": 382, "column": 8 }, "end": { - "line": 380, + "line": 382, "column": 49 } }, "object": { "type": "Identifier", - "start": 19964, - "end": 19976, + "start": 19986, + "end": 19998, "loc": { "start": { - "line": 380, + "line": 382, "column": 8 }, "end": { - "line": 380, + "line": 382, "column": 20 }, "identifierName": "deflatedData" @@ -35446,15 +35294,15 @@ }, "property": { "type": "Identifier", - "start": 19977, - "end": 20005, + "start": 19999, + "end": 20027, "loc": { "start": { - "line": 380, + "line": 382, "column": 21 }, "end": { - "line": 380, + "line": 382, "column": 49 }, "identifierName": "eachGeometryPositionsPortion" @@ -35465,29 +35313,29 @@ }, { "type": "MemberExpression", - "start": 20015, - "end": 20054, + "start": 20037, + "end": 20076, "loc": { "start": { - "line": 381, + "line": 383, "column": 8 }, "end": { - "line": 381, + "line": 383, "column": 47 } }, "object": { "type": "Identifier", - "start": 20015, - "end": 20027, + "start": 20037, + "end": 20049, "loc": { "start": { - "line": 381, + "line": 383, "column": 8 }, "end": { - "line": 381, + "line": 383, "column": 20 }, "identifierName": "deflatedData" @@ -35496,15 +35344,15 @@ }, "property": { "type": "Identifier", - "start": 20028, - "end": 20054, + "start": 20050, + "end": 20076, "loc": { "start": { - "line": 381, + "line": 383, "column": 21 }, "end": { - "line": 381, + "line": 383, "column": 47 }, "identifierName": "eachGeometryNormalsPortion" @@ -35515,29 +35363,29 @@ }, { "type": "MemberExpression", - "start": 20064, - "end": 20102, + "start": 20086, + "end": 20124, "loc": { "start": { - "line": 382, + "line": 384, "column": 8 }, "end": { - "line": 382, + "line": 384, "column": 46 } }, "object": { "type": "Identifier", - "start": 20064, - "end": 20076, + "start": 20086, + "end": 20098, "loc": { "start": { - "line": 382, + "line": 384, "column": 8 }, "end": { - "line": 382, + "line": 384, "column": 20 }, "identifierName": "deflatedData" @@ -35546,15 +35394,15 @@ }, "property": { "type": "Identifier", - "start": 20077, - "end": 20102, + "start": 20099, + "end": 20124, "loc": { "start": { - "line": 382, + "line": 384, "column": 21 }, "end": { - "line": 382, + "line": 384, "column": 46 }, "identifierName": "eachGeometryColorsPortion" @@ -35565,29 +35413,29 @@ }, { "type": "MemberExpression", - "start": 20112, - "end": 20147, + "start": 20134, + "end": 20169, "loc": { "start": { - "line": 383, + "line": 385, "column": 8 }, "end": { - "line": 383, + "line": 385, "column": 43 } }, "object": { "type": "Identifier", - "start": 20112, - "end": 20124, + "start": 20134, + "end": 20146, "loc": { "start": { - "line": 383, + "line": 385, "column": 8 }, "end": { - "line": 383, + "line": 385, "column": 20 }, "identifierName": "deflatedData" @@ -35596,15 +35444,15 @@ }, "property": { "type": "Identifier", - "start": 20125, - "end": 20147, + "start": 20147, + "end": 20169, "loc": { "start": { - "line": 383, + "line": 385, "column": 21 }, "end": { - "line": 383, + "line": 385, "column": 43 }, "identifierName": "eachGeometryUVsPortion" @@ -35615,29 +35463,29 @@ }, { "type": "MemberExpression", - "start": 20157, - "end": 20196, + "start": 20179, + "end": 20218, "loc": { "start": { - "line": 384, + "line": 386, "column": 8 }, "end": { - "line": 384, + "line": 386, "column": 47 } }, "object": { "type": "Identifier", - "start": 20157, - "end": 20169, + "start": 20179, + "end": 20191, "loc": { "start": { - "line": 384, + "line": 386, "column": 8 }, "end": { - "line": 384, + "line": 386, "column": 20 }, "identifierName": "deflatedData" @@ -35646,15 +35494,15 @@ }, "property": { "type": "Identifier", - "start": 20170, - "end": 20196, + "start": 20192, + "end": 20218, "loc": { "start": { - "line": 384, + "line": 386, "column": 21 }, "end": { - "line": 384, + "line": 386, "column": 47 }, "identifierName": "eachGeometryIndicesPortion" @@ -35665,29 +35513,29 @@ }, { "type": "MemberExpression", - "start": 20206, - "end": 20249, + "start": 20228, + "end": 20271, "loc": { "start": { - "line": 385, + "line": 387, "column": 8 }, "end": { - "line": 385, + "line": 387, "column": 51 } }, "object": { "type": "Identifier", - "start": 20206, - "end": 20218, + "start": 20228, + "end": 20240, "loc": { "start": { - "line": 385, + "line": 387, "column": 8 }, "end": { - "line": 385, + "line": 387, "column": 20 }, "identifierName": "deflatedData" @@ -35696,15 +35544,15 @@ }, "property": { "type": "Identifier", - "start": 20219, - "end": 20249, + "start": 20241, + "end": 20271, "loc": { "start": { - "line": 385, + "line": 387, "column": 21 }, "end": { - "line": 385, + "line": 387, "column": 51 }, "identifierName": "eachGeometryEdgeIndicesPortion" @@ -35715,29 +35563,29 @@ }, { "type": "MemberExpression", - "start": 20259, - "end": 20297, + "start": 20281, + "end": 20319, "loc": { "start": { - "line": 386, + "line": 388, "column": 8 }, "end": { - "line": 386, + "line": 388, "column": 46 } }, "object": { "type": "Identifier", - "start": 20259, - "end": 20271, + "start": 20281, + "end": 20293, "loc": { "start": { - "line": 386, + "line": 388, "column": 8 }, "end": { - "line": 386, + "line": 388, "column": 20 }, "identifierName": "deflatedData" @@ -35746,15 +35594,15 @@ }, "property": { "type": "Identifier", - "start": 20272, - "end": 20297, + "start": 20294, + "end": 20319, "loc": { "start": { - "line": 386, + "line": 388, "column": 21 }, "end": { - "line": 386, + "line": 388, "column": 46 }, "identifierName": "eachMeshGeometriesPortion" @@ -35765,29 +35613,29 @@ }, { "type": "MemberExpression", - "start": 20307, - "end": 20343, + "start": 20329, + "end": 20365, "loc": { "start": { - "line": 387, + "line": 389, "column": 8 }, "end": { - "line": 387, + "line": 389, "column": 44 } }, "object": { "type": "Identifier", - "start": 20307, - "end": 20319, + "start": 20329, + "end": 20341, "loc": { "start": { - "line": 387, + "line": 389, "column": 8 }, "end": { - "line": 387, + "line": 389, "column": 20 }, "identifierName": "deflatedData" @@ -35796,15 +35644,15 @@ }, "property": { "type": "Identifier", - "start": 20320, - "end": 20343, + "start": 20342, + "end": 20365, "loc": { "start": { - "line": 387, + "line": 389, "column": 21 }, "end": { - "line": 387, + "line": 389, "column": 44 }, "identifierName": "eachMeshMatricesPortion" @@ -35815,29 +35663,29 @@ }, { "type": "MemberExpression", - "start": 20353, - "end": 20384, + "start": 20375, + "end": 20406, "loc": { "start": { - "line": 388, + "line": 390, "column": 8 }, "end": { - "line": 388, + "line": 390, "column": 39 } }, "object": { "type": "Identifier", - "start": 20353, - "end": 20365, + "start": 20375, + "end": 20387, "loc": { "start": { - "line": 388, + "line": 390, "column": 8 }, "end": { - "line": 388, + "line": 390, "column": 20 }, "identifierName": "deflatedData" @@ -35846,15 +35694,15 @@ }, "property": { "type": "Identifier", - "start": 20366, - "end": 20384, + "start": 20388, + "end": 20406, "loc": { "start": { - "line": 388, + "line": 390, "column": 21 }, "end": { - "line": 388, + "line": 390, "column": 39 }, "identifierName": "eachMeshTextureSet" @@ -35865,29 +35713,29 @@ }, { "type": "MemberExpression", - "start": 20394, - "end": 20433, + "start": 20416, + "end": 20455, "loc": { "start": { - "line": 389, + "line": 391, "column": 8 }, "end": { - "line": 389, + "line": 391, "column": 47 } }, "object": { "type": "Identifier", - "start": 20394, - "end": 20406, + "start": 20416, + "end": 20428, "loc": { "start": { - "line": 389, + "line": 391, "column": 8 }, "end": { - "line": 389, + "line": 391, "column": 20 }, "identifierName": "deflatedData" @@ -35896,15 +35744,15 @@ }, "property": { "type": "Identifier", - "start": 20407, - "end": 20433, + "start": 20429, + "end": 20455, "loc": { "start": { - "line": 389, + "line": 391, "column": 21 }, "end": { - "line": 389, + "line": 391, "column": 47 }, "identifierName": "eachMeshMaterialAttributes" @@ -35915,29 +35763,29 @@ }, { "type": "MemberExpression", - "start": 20443, - "end": 20468, + "start": 20465, + "end": 20490, "loc": { "start": { - "line": 390, + "line": 392, "column": 8 }, "end": { - "line": 390, + "line": 392, "column": 33 } }, "object": { "type": "Identifier", - "start": 20443, - "end": 20455, + "start": 20465, + "end": 20477, "loc": { "start": { - "line": 390, + "line": 392, "column": 8 }, "end": { - "line": 390, + "line": 392, "column": 20 }, "identifierName": "deflatedData" @@ -35946,15 +35794,15 @@ }, "property": { "type": "Identifier", - "start": 20456, - "end": 20468, + "start": 20478, + "end": 20490, "loc": { "start": { - "line": 390, + "line": 392, "column": 21 }, "end": { - "line": 390, + "line": 392, "column": 33 }, "identifierName": "eachEntityId" @@ -35965,29 +35813,29 @@ }, { "type": "MemberExpression", - "start": 20478, - "end": 20514, + "start": 20500, + "end": 20536, "loc": { "start": { - "line": 391, + "line": 393, "column": 8 }, "end": { - "line": 391, + "line": 393, "column": 44 } }, "object": { "type": "Identifier", - "start": 20478, - "end": 20490, + "start": 20500, + "end": 20512, "loc": { "start": { - "line": 391, + "line": 393, "column": 8 }, "end": { - "line": 391, + "line": 393, "column": 20 }, "identifierName": "deflatedData" @@ -35996,15 +35844,15 @@ }, "property": { "type": "Identifier", - "start": 20491, - "end": 20514, + "start": 20513, + "end": 20536, "loc": { "start": { - "line": 391, + "line": 393, "column": 21 }, "end": { - "line": 391, + "line": 393, "column": 44 }, "identifierName": "eachEntityMeshesPortion" @@ -36015,29 +35863,29 @@ }, { "type": "MemberExpression", - "start": 20524, - "end": 20549, + "start": 20546, + "end": 20571, "loc": { "start": { - "line": 392, + "line": 394, "column": 8 }, "end": { - "line": 392, + "line": 394, "column": 33 } }, "object": { "type": "Identifier", - "start": 20524, - "end": 20536, + "start": 20546, + "end": 20558, "loc": { "start": { - "line": 392, + "line": 394, "column": 8 }, "end": { - "line": 392, + "line": 394, "column": 20 }, "identifierName": "deflatedData" @@ -36046,15 +35894,15 @@ }, "property": { "type": "Identifier", - "start": 20537, - "end": 20549, + "start": 20559, + "end": 20571, "loc": { "start": { - "line": 392, + "line": 394, "column": 21 }, "end": { - "line": 392, + "line": 394, "column": 33 }, "identifierName": "eachTileAABB" @@ -36065,29 +35913,29 @@ }, { "type": "MemberExpression", - "start": 20559, - "end": 20595, + "start": 20581, + "end": 20617, "loc": { "start": { - "line": 393, + "line": 395, "column": 8 }, "end": { - "line": 393, + "line": 395, "column": 44 } }, "object": { "type": "Identifier", - "start": 20559, - "end": 20571, + "start": 20581, + "end": 20593, "loc": { "start": { - "line": 393, + "line": 395, "column": 8 }, "end": { - "line": 393, + "line": 395, "column": 20 }, "identifierName": "deflatedData" @@ -36096,15 +35944,15 @@ }, "property": { "type": "Identifier", - "start": 20572, - "end": 20595, + "start": 20594, + "end": 20617, "loc": { "start": { - "line": 393, + "line": 395, "column": 21 }, "end": { - "line": 393, + "line": 395, "column": 44 }, "identifierName": "eachTileEntitiesPortion" @@ -36124,29 +35972,29 @@ }, { "type": "FunctionDeclaration", - "start": 20607, - "end": 21541, + "start": 20629, + "end": 21563, "loc": { "start": { - "line": 397, + "line": 399, "column": 0 }, "end": { - "line": 418, + "line": 420, "column": 1 } }, "id": { "type": "Identifier", - "start": 20616, - "end": 20629, + "start": 20638, + "end": 20651, "loc": { "start": { - "line": 397, + "line": 399, "column": 9 }, "end": { - "line": 397, + "line": 399, "column": 22 }, "identifierName": "toArrayBuffer" @@ -36159,15 +36007,15 @@ "params": [ { "type": "Identifier", - "start": 20630, - "end": 20638, + "start": 20652, + "end": 20660, "loc": { "start": { - "line": 397, + "line": 399, "column": 23 }, "end": { - "line": 397, + "line": 399, "column": 31 }, "identifierName": "elements" @@ -36177,59 +36025,59 @@ ], "body": { "type": "BlockStatement", - "start": 20640, - "end": 21541, + "start": 20662, + "end": 21563, "loc": { "start": { - "line": 397, + "line": 399, "column": 33 }, "end": { - "line": 418, + "line": 420, "column": 1 } }, "body": [ { "type": "VariableDeclaration", - "start": 20646, - "end": 20701, + "start": 20668, + "end": 20723, "loc": { "start": { - "line": 398, + "line": 400, "column": 4 }, "end": { - "line": 398, + "line": 400, "column": 59 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20652, - "end": 20700, + "start": 20674, + "end": 20722, "loc": { "start": { - "line": 398, + "line": 400, "column": 10 }, "end": { - "line": 398, + "line": 400, "column": 58 } }, "id": { "type": "Identifier", - "start": 20652, - "end": 20661, + "start": 20674, + "end": 20683, "loc": { "start": { - "line": 398, + "line": 400, "column": 10 }, "end": { - "line": 398, + "line": 400, "column": 19 }, "identifierName": "indexData" @@ -36238,29 +36086,29 @@ }, "init": { "type": "NewExpression", - "start": 20664, - "end": 20700, + "start": 20686, + "end": 20722, "loc": { "start": { - "line": 398, + "line": 400, "column": 22 }, "end": { - "line": 398, + "line": 400, "column": 58 } }, "callee": { "type": "Identifier", - "start": 20668, - "end": 20679, + "start": 20690, + "end": 20701, "loc": { "start": { - "line": 398, + "line": 400, "column": 26 }, "end": { - "line": 398, + "line": 400, "column": 37 }, "identifierName": "Uint32Array" @@ -36270,43 +36118,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 20680, - "end": 20699, + "start": 20702, + "end": 20721, "loc": { "start": { - "line": 398, + "line": 400, "column": 38 }, "end": { - "line": 398, + "line": 400, "column": 57 } }, "left": { "type": "MemberExpression", - "start": 20680, - "end": 20695, + "start": 20702, + "end": 20717, "loc": { "start": { - "line": 398, + "line": 400, "column": 38 }, "end": { - "line": 398, + "line": 400, "column": 53 } }, "object": { "type": "Identifier", - "start": 20680, - "end": 20688, + "start": 20702, + "end": 20710, "loc": { "start": { - "line": 398, + "line": 400, "column": 38 }, "end": { - "line": 398, + "line": 400, "column": 46 }, "identifierName": "elements" @@ -36315,15 +36163,15 @@ }, "property": { "type": "Identifier", - "start": 20689, - "end": 20695, + "start": 20711, + "end": 20717, "loc": { "start": { - "line": 398, + "line": 400, "column": 47 }, "end": { - "line": 398, + "line": 400, "column": 53 }, "identifierName": "length" @@ -36335,15 +36183,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 20698, - "end": 20699, + "start": 20720, + "end": 20721, "loc": { "start": { - "line": 398, + "line": 400, "column": 56 }, "end": { - "line": 398, + "line": 400, "column": 57 } }, @@ -36362,58 +36210,58 @@ }, { "type": "ExpressionStatement", - "start": 20706, - "end": 20733, + "start": 20728, + "end": 20755, "loc": { "start": { - "line": 399, + "line": 401, "column": 4 }, "end": { - "line": 399, + "line": 401, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 20706, - "end": 20732, + "start": 20728, + "end": 20754, "loc": { "start": { - "line": 399, + "line": 401, "column": 4 }, "end": { - "line": 399, + "line": 401, "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 20706, - "end": 20718, + "start": 20728, + "end": 20740, "loc": { "start": { - "line": 399, + "line": 401, "column": 4 }, "end": { - "line": 399, + "line": 401, "column": 16 } }, "object": { "type": "Identifier", - "start": 20706, - "end": 20715, + "start": 20728, + "end": 20737, "loc": { "start": { - "line": 399, + "line": 401, "column": 4 }, "end": { - "line": 399, + "line": 401, "column": 13 }, "identifierName": "indexData" @@ -36422,15 +36270,15 @@ }, "property": { "type": "NumericLiteral", - "start": 20716, - "end": 20717, + "start": 20738, + "end": 20739, "loc": { "start": { - "line": 399, + "line": 401, "column": 14 }, "end": { - "line": 399, + "line": 401, "column": 15 } }, @@ -36444,15 +36292,15 @@ }, "right": { "type": "Identifier", - "start": 20721, - "end": 20732, + "start": 20743, + "end": 20754, "loc": { "start": { - "line": 399, + "line": 401, "column": 19 }, "end": { - "line": 399, + "line": 401, "column": 30 }, "identifierName": "XKT_VERSION" @@ -36463,58 +36311,58 @@ }, { "type": "ExpressionStatement", - "start": 20738, - "end": 20770, + "start": 20760, + "end": 20792, "loc": { "start": { - "line": 400, + "line": 402, "column": 4 }, "end": { - "line": 400, + "line": 402, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 20738, - "end": 20769, + "start": 20760, + "end": 20791, "loc": { "start": { - "line": 400, + "line": 402, "column": 4 }, "end": { - "line": 400, + "line": 402, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 20738, - "end": 20751, + "start": 20760, + "end": 20773, "loc": { "start": { - "line": 400, + "line": 402, "column": 4 }, "end": { - "line": 400, + "line": 402, "column": 17 } }, "object": { "type": "Identifier", - "start": 20738, - "end": 20747, + "start": 20760, + "end": 20769, "loc": { "start": { - "line": 400, + "line": 402, "column": 4 }, "end": { - "line": 400, + "line": 402, "column": 13 }, "identifierName": "indexData" @@ -36523,15 +36371,15 @@ }, "property": { "type": "NumericLiteral", - "start": 20749, - "end": 20750, + "start": 20771, + "end": 20772, "loc": { "start": { - "line": 400, + "line": 402, "column": 15 }, "end": { - "line": 400, + "line": 402, "column": 16 } }, @@ -36545,29 +36393,29 @@ }, "right": { "type": "MemberExpression", - "start": 20754, - "end": 20769, + "start": 20776, + "end": 20791, "loc": { "start": { - "line": 400, + "line": 402, "column": 20 }, "end": { - "line": 400, + "line": 402, "column": 35 } }, "object": { "type": "Identifier", - "start": 20754, - "end": 20762, + "start": 20776, + "end": 20784, "loc": { "start": { - "line": 400, + "line": 402, "column": 20 }, "end": { - "line": 400, + "line": 402, "column": 28 }, "identifierName": "elements" @@ -36576,15 +36424,15 @@ }, "property": { "type": "Identifier", - "start": 20763, - "end": 20769, + "start": 20785, + "end": 20791, "loc": { "start": { - "line": 400, + "line": 402, "column": 29 }, "end": { - "line": 400, + "line": 402, "column": 35 }, "identifierName": "length" @@ -36598,15 +36446,15 @@ { "type": "CommentLine", "value": " Stored Data 1.1: number of stored elements", - "start": 20772, - "end": 20817, + "start": 20794, + "end": 20839, "loc": { "start": { - "line": 400, + "line": 402, "column": 38 }, "end": { - "line": 400, + "line": 402, "column": 83 } } @@ -36615,44 +36463,44 @@ }, { "type": "VariableDeclaration", - "start": 20822, - "end": 20838, + "start": 20844, + "end": 20860, "loc": { "start": { - "line": 401, + "line": 403, "column": 4 }, "end": { - "line": 401, + "line": 403, "column": 20 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20826, - "end": 20837, + "start": 20848, + "end": 20859, "loc": { "start": { - "line": 401, + "line": 403, "column": 8 }, "end": { - "line": 401, + "line": 403, "column": 19 } }, "id": { "type": "Identifier", - "start": 20826, - "end": 20833, + "start": 20848, + "end": 20855, "loc": { "start": { - "line": 401, + "line": 403, "column": 8 }, "end": { - "line": 401, + "line": 403, "column": 15 }, "identifierName": "dataLen" @@ -36662,15 +36510,15 @@ }, "init": { "type": "NumericLiteral", - "start": 20836, - "end": 20837, + "start": 20858, + "end": 20859, "loc": { "start": { - "line": 401, + "line": 403, "column": 18 }, "end": { - "line": 401, + "line": 403, "column": 19 } }, @@ -36688,15 +36536,15 @@ { "type": "CommentLine", "value": " Stored Data 1.1: number of stored elements", - "start": 20772, - "end": 20817, + "start": 20794, + "end": 20839, "loc": { "start": { - "line": 400, + "line": 402, "column": 38 }, "end": { - "line": 400, + "line": 402, "column": 83 } } @@ -36706,15 +36554,15 @@ { "type": "CommentLine", "value": " Stored Data 1.2: length of stored elements", - "start": 20842, - "end": 20887, + "start": 20864, + "end": 20909, "loc": { "start": { - "line": 401, + "line": 403, "column": 24 }, "end": { - "line": 401, + "line": 403, "column": 69 } } @@ -36723,58 +36571,58 @@ }, { "type": "ForStatement", - "start": 20892, - "end": 21105, + "start": 20914, + "end": 21127, "loc": { "start": { - "line": 402, + "line": 404, "column": 4 }, "end": { - "line": 407, + "line": 409, "column": 5 } }, "init": { "type": "VariableDeclaration", - "start": 20897, - "end": 20929, + "start": 20919, + "end": 20951, "loc": { "start": { - "line": 402, + "line": 404, "column": 9 }, "end": { - "line": 402, + "line": 404, "column": 41 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20901, - "end": 20906, + "start": 20923, + "end": 20928, "loc": { "start": { - "line": 402, + "line": 404, "column": 13 }, "end": { - "line": 402, + "line": 404, "column": 18 } }, "id": { "type": "Identifier", - "start": 20901, - "end": 20902, + "start": 20923, + "end": 20924, "loc": { "start": { - "line": 402, + "line": 404, "column": 13 }, "end": { - "line": 402, + "line": 404, "column": 14 }, "identifierName": "i" @@ -36784,15 +36632,15 @@ }, "init": { "type": "NumericLiteral", - "start": 20905, - "end": 20906, + "start": 20927, + "end": 20928, "loc": { "start": { - "line": 402, + "line": 404, "column": 17 }, "end": { - "line": 402, + "line": 404, "column": 18 } }, @@ -36806,29 +36654,29 @@ }, { "type": "VariableDeclarator", - "start": 20908, - "end": 20929, + "start": 20930, + "end": 20951, "loc": { "start": { - "line": 402, + "line": 404, "column": 20 }, "end": { - "line": 402, + "line": 404, "column": 41 } }, "id": { "type": "Identifier", - "start": 20908, - "end": 20911, + "start": 20930, + "end": 20933, "loc": { "start": { - "line": 402, + "line": 404, "column": 20 }, "end": { - "line": 402, + "line": 404, "column": 23 }, "identifierName": "len" @@ -36837,29 +36685,29 @@ }, "init": { "type": "MemberExpression", - "start": 20914, - "end": 20929, + "start": 20936, + "end": 20951, "loc": { "start": { - "line": 402, + "line": 404, "column": 26 }, "end": { - "line": 402, + "line": 404, "column": 41 } }, "object": { "type": "Identifier", - "start": 20914, - "end": 20922, + "start": 20936, + "end": 20944, "loc": { "start": { - "line": 402, + "line": 404, "column": 26 }, "end": { - "line": 402, + "line": 404, "column": 34 }, "identifierName": "elements" @@ -36868,15 +36716,15 @@ }, "property": { "type": "Identifier", - "start": 20923, - "end": 20929, + "start": 20945, + "end": 20951, "loc": { "start": { - "line": 402, + "line": 404, "column": 35 }, "end": { - "line": 402, + "line": 404, "column": 41 }, "identifierName": "length" @@ -36892,29 +36740,29 @@ }, "test": { "type": "BinaryExpression", - "start": 20931, - "end": 20938, + "start": 20953, + "end": 20960, "loc": { "start": { - "line": 402, + "line": 404, "column": 43 }, "end": { - "line": 402, + "line": 404, "column": 50 } }, "left": { "type": "Identifier", - "start": 20931, - "end": 20932, + "start": 20953, + "end": 20954, "loc": { "start": { - "line": 402, + "line": 404, "column": 43 }, "end": { - "line": 402, + "line": 404, "column": 44 }, "identifierName": "i" @@ -36924,15 +36772,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 20935, - "end": 20938, + "start": 20957, + "end": 20960, "loc": { "start": { - "line": 402, + "line": 404, "column": 47 }, "end": { - "line": 402, + "line": 404, "column": 50 }, "identifierName": "len" @@ -36942,15 +36790,15 @@ }, "update": { "type": "UpdateExpression", - "start": 20940, - "end": 20943, + "start": 20962, + "end": 20965, "loc": { "start": { - "line": 402, + "line": 404, "column": 52 }, "end": { - "line": 402, + "line": 404, "column": 55 } }, @@ -36958,15 +36806,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 20940, - "end": 20941, + "start": 20962, + "end": 20963, "loc": { "start": { - "line": 402, + "line": 404, "column": 52 }, "end": { - "line": 402, + "line": 404, "column": 53 }, "identifierName": "i" @@ -36976,59 +36824,59 @@ }, "body": { "type": "BlockStatement", - "start": 20945, - "end": 21105, + "start": 20967, + "end": 21127, "loc": { "start": { - "line": 402, + "line": 404, "column": 57 }, "end": { - "line": 407, + "line": 409, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 20955, - "end": 20983, + "start": 20977, + "end": 21005, "loc": { "start": { - "line": 403, + "line": 405, "column": 8 }, "end": { - "line": 403, + "line": 405, "column": 36 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20961, - "end": 20982, + "start": 20983, + "end": 21004, "loc": { "start": { - "line": 403, + "line": 405, "column": 14 }, "end": { - "line": 403, + "line": 405, "column": 35 } }, "id": { "type": "Identifier", - "start": 20961, - "end": 20968, + "start": 20983, + "end": 20990, "loc": { "start": { - "line": 403, + "line": 405, "column": 14 }, "end": { - "line": 403, + "line": 405, "column": 21 }, "identifierName": "element" @@ -37037,29 +36885,29 @@ }, "init": { "type": "MemberExpression", - "start": 20971, - "end": 20982, + "start": 20993, + "end": 21004, "loc": { "start": { - "line": 403, + "line": 405, "column": 24 }, "end": { - "line": 403, + "line": 405, "column": 35 } }, "object": { "type": "Identifier", - "start": 20971, - "end": 20979, + "start": 20993, + "end": 21001, "loc": { "start": { - "line": 403, + "line": 405, "column": 24 }, "end": { - "line": 403, + "line": 405, "column": 32 }, "identifierName": "elements" @@ -37068,15 +36916,15 @@ }, "property": { "type": "Identifier", - "start": 20980, - "end": 20981, + "start": 21002, + "end": 21003, "loc": { "start": { - "line": 403, + "line": 405, "column": 33 }, "end": { - "line": 403, + "line": 405, "column": 34 }, "identifierName": "i" @@ -37091,44 +36939,44 @@ }, { "type": "VariableDeclaration", - "start": 20992, - "end": 21027, + "start": 21014, + "end": 21049, "loc": { "start": { - "line": 404, + "line": 406, "column": 8 }, "end": { - "line": 404, + "line": 406, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20998, - "end": 21026, + "start": 21020, + "end": 21048, "loc": { "start": { - "line": 404, + "line": 406, "column": 14 }, "end": { - "line": 404, + "line": 406, "column": 42 } }, "id": { "type": "Identifier", - "start": 20998, - "end": 21009, + "start": 21020, + "end": 21031, "loc": { "start": { - "line": 404, + "line": 406, "column": 14 }, "end": { - "line": 404, + "line": 406, "column": 25 }, "identifierName": "elementsize" @@ -37137,29 +36985,29 @@ }, "init": { "type": "MemberExpression", - "start": 21012, - "end": 21026, + "start": 21034, + "end": 21048, "loc": { "start": { - "line": 404, + "line": 406, "column": 28 }, "end": { - "line": 404, + "line": 406, "column": 42 } }, "object": { "type": "Identifier", - "start": 21012, - "end": 21019, + "start": 21034, + "end": 21041, "loc": { "start": { - "line": 404, + "line": 406, "column": 28 }, "end": { - "line": 404, + "line": 406, "column": 35 }, "identifierName": "element" @@ -37168,15 +37016,15 @@ }, "property": { "type": "Identifier", - "start": 21020, - "end": 21026, + "start": 21042, + "end": 21048, "loc": { "start": { - "line": 404, + "line": 406, "column": 36 }, "end": { - "line": 404, + "line": 406, "column": 42 }, "identifierName": "length" @@ -37191,58 +37039,58 @@ }, { "type": "ExpressionStatement", - "start": 21036, - "end": 21067, + "start": 21058, + "end": 21089, "loc": { "start": { - "line": 405, + "line": 407, "column": 8 }, "end": { - "line": 405, + "line": 407, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 21036, - "end": 21066, + "start": 21058, + "end": 21088, "loc": { "start": { - "line": 405, + "line": 407, "column": 8 }, "end": { - "line": 405, + "line": 407, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 21036, - "end": 21052, + "start": 21058, + "end": 21074, "loc": { "start": { - "line": 405, + "line": 407, "column": 8 }, "end": { - "line": 405, + "line": 407, "column": 24 } }, "object": { "type": "Identifier", - "start": 21036, - "end": 21045, + "start": 21058, + "end": 21067, "loc": { "start": { - "line": 405, + "line": 407, "column": 8 }, "end": { - "line": 405, + "line": 407, "column": 17 }, "identifierName": "indexData" @@ -37251,29 +37099,29 @@ }, "property": { "type": "BinaryExpression", - "start": 21046, - "end": 21051, + "start": 21068, + "end": 21073, "loc": { "start": { - "line": 405, + "line": 407, "column": 18 }, "end": { - "line": 405, + "line": 407, "column": 23 } }, "left": { "type": "Identifier", - "start": 21046, - "end": 21047, + "start": 21068, + "end": 21069, "loc": { "start": { - "line": 405, + "line": 407, "column": 18 }, "end": { - "line": 405, + "line": 407, "column": 19 }, "identifierName": "i" @@ -37283,15 +37131,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 21050, - "end": 21051, + "start": 21072, + "end": 21073, "loc": { "start": { - "line": 405, + "line": 407, "column": 22 }, "end": { - "line": 405, + "line": 407, "column": 23 } }, @@ -37306,15 +37154,15 @@ }, "right": { "type": "Identifier", - "start": 21055, - "end": 21066, + "start": 21077, + "end": 21088, "loc": { "start": { - "line": 405, + "line": 407, "column": 27 }, "end": { - "line": 405, + "line": 407, "column": 38 }, "identifierName": "elementsize" @@ -37325,44 +37173,44 @@ }, { "type": "ExpressionStatement", - "start": 21076, - "end": 21099, + "start": 21098, + "end": 21121, "loc": { "start": { - "line": 406, + "line": 408, "column": 8 }, "end": { - "line": 406, + "line": 408, "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 21076, - "end": 21098, + "start": 21098, + "end": 21120, "loc": { "start": { - "line": 406, + "line": 408, "column": 8 }, "end": { - "line": 406, + "line": 408, "column": 30 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 21076, - "end": 21083, + "start": 21098, + "end": 21105, "loc": { "start": { - "line": 406, + "line": 408, "column": 8 }, "end": { - "line": 406, + "line": 408, "column": 15 }, "identifierName": "dataLen" @@ -37371,15 +37219,15 @@ }, "right": { "type": "Identifier", - "start": 21087, - "end": 21098, + "start": 21109, + "end": 21120, "loc": { "start": { - "line": 406, + "line": 408, "column": 19 }, "end": { - "line": 406, + "line": 408, "column": 30 }, "identifierName": "elementsize" @@ -37395,15 +37243,15 @@ { "type": "CommentLine", "value": " Stored Data 1.2: length of stored elements", - "start": 20842, - "end": 20887, + "start": 20864, + "end": 20909, "loc": { "start": { - "line": 401, + "line": 403, "column": 24 }, "end": { - "line": 401, + "line": 403, "column": 69 } } @@ -37412,44 +37260,44 @@ }, { "type": "VariableDeclaration", - "start": 21110, - "end": 21160, + "start": 21132, + "end": 21182, "loc": { "start": { - "line": 408, + "line": 410, "column": 4 }, "end": { - "line": 408, + "line": 410, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 21116, - "end": 21159, + "start": 21138, + "end": 21181, "loc": { "start": { - "line": 408, + "line": 410, "column": 10 }, "end": { - "line": 408, + "line": 410, "column": 53 } }, "id": { "type": "Identifier", - "start": 21116, - "end": 21124, + "start": 21138, + "end": 21146, "loc": { "start": { - "line": 408, + "line": 410, "column": 10 }, "end": { - "line": 408, + "line": 410, "column": 18 }, "identifierName": "indexBuf" @@ -37458,29 +37306,29 @@ }, "init": { "type": "NewExpression", - "start": 21127, - "end": 21159, + "start": 21149, + "end": 21181, "loc": { "start": { - "line": 408, + "line": 410, "column": 21 }, "end": { - "line": 408, + "line": 410, "column": 53 } }, "callee": { "type": "Identifier", - "start": 21131, - "end": 21141, + "start": 21153, + "end": 21163, "loc": { "start": { - "line": 408, + "line": 410, "column": 25 }, "end": { - "line": 408, + "line": 410, "column": 35 }, "identifierName": "Uint8Array" @@ -37490,29 +37338,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 21142, - "end": 21158, + "start": 21164, + "end": 21180, "loc": { "start": { - "line": 408, + "line": 410, "column": 36 }, "end": { - "line": 408, + "line": 410, "column": 52 } }, "object": { "type": "Identifier", - "start": 21142, - "end": 21151, + "start": 21164, + "end": 21173, "loc": { "start": { - "line": 408, + "line": 410, "column": 36 }, "end": { - "line": 408, + "line": 410, "column": 45 }, "identifierName": "indexData" @@ -37521,15 +37369,15 @@ }, "property": { "type": "Identifier", - "start": 21152, - "end": 21158, + "start": 21174, + "end": 21180, "loc": { "start": { - "line": 408, + "line": 410, "column": 46 }, "end": { - "line": 408, + "line": 410, "column": 52 }, "identifierName": "buffer" @@ -37546,44 +37394,44 @@ }, { "type": "VariableDeclaration", - "start": 21165, - "end": 21225, + "start": 21187, + "end": 21247, "loc": { "start": { - "line": 409, + "line": 411, "column": 4 }, "end": { - "line": 409, + "line": 411, "column": 64 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 21171, - "end": 21224, + "start": 21193, + "end": 21246, "loc": { "start": { - "line": 409, + "line": 411, "column": 10 }, "end": { - "line": 409, + "line": 411, "column": 63 } }, "id": { "type": "Identifier", - "start": 21171, - "end": 21180, + "start": 21193, + "end": 21202, "loc": { "start": { - "line": 409, + "line": 411, "column": 10 }, "end": { - "line": 409, + "line": 411, "column": 19 }, "identifierName": "dataArray" @@ -37592,29 +37440,29 @@ }, "init": { "type": "NewExpression", - "start": 21183, - "end": 21224, + "start": 21205, + "end": 21246, "loc": { "start": { - "line": 409, + "line": 411, "column": 22 }, "end": { - "line": 409, + "line": 411, "column": 63 } }, "callee": { "type": "Identifier", - "start": 21187, - "end": 21197, + "start": 21209, + "end": 21219, "loc": { "start": { - "line": 409, + "line": 411, "column": 26 }, "end": { - "line": 409, + "line": 411, "column": 36 }, "identifierName": "Uint8Array" @@ -37624,43 +37472,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 21198, - "end": 21223, + "start": 21220, + "end": 21245, "loc": { "start": { - "line": 409, + "line": 411, "column": 37 }, "end": { - "line": 409, + "line": 411, "column": 62 } }, "left": { "type": "MemberExpression", - "start": 21198, - "end": 21213, + "start": 21220, + "end": 21235, "loc": { "start": { - "line": 409, + "line": 411, "column": 37 }, "end": { - "line": 409, + "line": 411, "column": 52 } }, "object": { "type": "Identifier", - "start": 21198, - "end": 21206, + "start": 21220, + "end": 21228, "loc": { "start": { - "line": 409, + "line": 411, "column": 37 }, "end": { - "line": 409, + "line": 411, "column": 45 }, "identifierName": "indexBuf" @@ -37669,15 +37517,15 @@ }, "property": { "type": "Identifier", - "start": 21207, - "end": 21213, + "start": 21229, + "end": 21235, "loc": { "start": { - "line": 409, + "line": 411, "column": 46 }, "end": { - "line": 409, + "line": 411, "column": 52 }, "identifierName": "length" @@ -37689,15 +37537,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 21216, - "end": 21223, + "start": 21238, + "end": 21245, "loc": { "start": { - "line": 409, + "line": 411, "column": 55 }, "end": { - "line": 409, + "line": 411, "column": 62 }, "identifierName": "dataLen" @@ -37713,57 +37561,57 @@ }, { "type": "ExpressionStatement", - "start": 21230, - "end": 21254, + "start": 21252, + "end": 21276, "loc": { "start": { - "line": 410, + "line": 412, "column": 4 }, "end": { - "line": 410, + "line": 412, "column": 28 } }, "expression": { "type": "CallExpression", - "start": 21230, - "end": 21253, + "start": 21252, + "end": 21275, "loc": { "start": { - "line": 410, + "line": 412, "column": 4 }, "end": { - "line": 410, + "line": 412, "column": 27 } }, "callee": { "type": "MemberExpression", - "start": 21230, - "end": 21243, + "start": 21252, + "end": 21265, "loc": { "start": { - "line": 410, + "line": 412, "column": 4 }, "end": { - "line": 410, + "line": 412, "column": 17 } }, "object": { "type": "Identifier", - "start": 21230, - "end": 21239, + "start": 21252, + "end": 21261, "loc": { "start": { - "line": 410, + "line": 412, "column": 4 }, "end": { - "line": 410, + "line": 412, "column": 13 }, "identifierName": "dataArray" @@ -37772,15 +37620,15 @@ }, "property": { "type": "Identifier", - "start": 21240, - "end": 21243, + "start": 21262, + "end": 21265, "loc": { "start": { - "line": 410, + "line": 412, "column": 14 }, "end": { - "line": 410, + "line": 412, "column": 17 }, "identifierName": "set" @@ -37792,15 +37640,15 @@ "arguments": [ { "type": "Identifier", - "start": 21244, - "end": 21252, + "start": 21266, + "end": 21274, "loc": { "start": { - "line": 410, + "line": 412, "column": 18 }, "end": { - "line": 410, + "line": 412, "column": 26 }, "identifierName": "indexBuf" @@ -37812,44 +37660,44 @@ }, { "type": "VariableDeclaration", - "start": 21259, - "end": 21288, + "start": 21281, + "end": 21310, "loc": { "start": { - "line": 411, + "line": 413, "column": 4 }, "end": { - "line": 411, + "line": 413, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 21263, - "end": 21287, + "start": 21285, + "end": 21309, "loc": { "start": { - "line": 411, + "line": 413, "column": 8 }, "end": { - "line": 411, + "line": 413, "column": 32 } }, "id": { "type": "Identifier", - "start": 21263, - "end": 21269, + "start": 21285, + "end": 21291, "loc": { "start": { - "line": 411, + "line": 413, "column": 8 }, "end": { - "line": 411, + "line": 413, "column": 14 }, "identifierName": "offset" @@ -37858,29 +37706,29 @@ }, "init": { "type": "MemberExpression", - "start": 21272, - "end": 21287, + "start": 21294, + "end": 21309, "loc": { "start": { - "line": 411, + "line": 413, "column": 17 }, "end": { - "line": 411, + "line": 413, "column": 32 } }, "object": { "type": "Identifier", - "start": 21272, - "end": 21280, + "start": 21294, + "end": 21302, "loc": { "start": { - "line": 411, + "line": 413, "column": 17 }, "end": { - "line": 411, + "line": 413, "column": 25 }, "identifierName": "indexBuf" @@ -37889,15 +37737,15 @@ }, "property": { "type": "Identifier", - "start": 21281, - "end": 21287, + "start": 21303, + "end": 21309, "loc": { "start": { - "line": 411, + "line": 413, "column": 26 }, "end": { - "line": 411, + "line": 413, "column": 32 }, "identifierName": "length" @@ -37912,58 +37760,58 @@ }, { "type": "ForStatement", - "start": 21293, - "end": 21510, + "start": 21315, + "end": 21532, "loc": { "start": { - "line": 412, + "line": 414, "column": 4 }, "end": { - "line": 416, + "line": 418, "column": 5 } }, "init": { "type": "VariableDeclaration", - "start": 21298, - "end": 21330, + "start": 21320, + "end": 21352, "loc": { "start": { - "line": 412, + "line": 414, "column": 9 }, "end": { - "line": 412, + "line": 414, "column": 41 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 21302, - "end": 21307, + "start": 21324, + "end": 21329, "loc": { "start": { - "line": 412, + "line": 414, "column": 13 }, "end": { - "line": 412, + "line": 414, "column": 18 } }, "id": { "type": "Identifier", - "start": 21302, - "end": 21303, + "start": 21324, + "end": 21325, "loc": { "start": { - "line": 412, + "line": 414, "column": 13 }, "end": { - "line": 412, + "line": 414, "column": 14 }, "identifierName": "i" @@ -37972,15 +37820,15 @@ }, "init": { "type": "NumericLiteral", - "start": 21306, - "end": 21307, + "start": 21328, + "end": 21329, "loc": { "start": { - "line": 412, + "line": 414, "column": 17 }, "end": { - "line": 412, + "line": 414, "column": 18 } }, @@ -37993,29 +37841,29 @@ }, { "type": "VariableDeclarator", - "start": 21309, - "end": 21330, + "start": 21331, + "end": 21352, "loc": { "start": { - "line": 412, + "line": 414, "column": 20 }, "end": { - "line": 412, + "line": 414, "column": 41 } }, "id": { "type": "Identifier", - "start": 21309, - "end": 21312, + "start": 21331, + "end": 21334, "loc": { "start": { - "line": 412, + "line": 414, "column": 20 }, "end": { - "line": 412, + "line": 414, "column": 23 }, "identifierName": "len" @@ -38024,29 +37872,29 @@ }, "init": { "type": "MemberExpression", - "start": 21315, - "end": 21330, + "start": 21337, + "end": 21352, "loc": { "start": { - "line": 412, + "line": 414, "column": 26 }, "end": { - "line": 412, + "line": 414, "column": 41 } }, "object": { "type": "Identifier", - "start": 21315, - "end": 21323, + "start": 21337, + "end": 21345, "loc": { "start": { - "line": 412, + "line": 414, "column": 26 }, "end": { - "line": 412, + "line": 414, "column": 34 }, "identifierName": "elements" @@ -38055,15 +37903,15 @@ }, "property": { "type": "Identifier", - "start": 21324, - "end": 21330, + "start": 21346, + "end": 21352, "loc": { "start": { - "line": 412, + "line": 414, "column": 35 }, "end": { - "line": 412, + "line": 414, "column": 41 }, "identifierName": "length" @@ -38078,29 +37926,29 @@ }, "test": { "type": "BinaryExpression", - "start": 21332, - "end": 21339, + "start": 21354, + "end": 21361, "loc": { "start": { - "line": 412, + "line": 414, "column": 43 }, "end": { - "line": 412, + "line": 414, "column": 50 } }, "left": { "type": "Identifier", - "start": 21332, - "end": 21333, + "start": 21354, + "end": 21355, "loc": { "start": { - "line": 412, + "line": 414, "column": 43 }, "end": { - "line": 412, + "line": 414, "column": 44 }, "identifierName": "i" @@ -38110,15 +37958,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 21336, - "end": 21339, + "start": 21358, + "end": 21361, "loc": { "start": { - "line": 412, + "line": 414, "column": 47 }, "end": { - "line": 412, + "line": 414, "column": 50 }, "identifierName": "len" @@ -38128,15 +37976,15 @@ }, "update": { "type": "UpdateExpression", - "start": 21341, - "end": 21344, + "start": 21363, + "end": 21366, "loc": { "start": { - "line": 412, + "line": 414, "column": 52 }, "end": { - "line": 412, + "line": 414, "column": 55 } }, @@ -38144,15 +37992,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 21341, - "end": 21342, + "start": 21363, + "end": 21364, "loc": { "start": { - "line": 412, + "line": 414, "column": 52 }, "end": { - "line": 412, + "line": 414, "column": 53 }, "identifierName": "i" @@ -38162,59 +38010,59 @@ }, "body": { "type": "BlockStatement", - "start": 21346, - "end": 21510, + "start": 21368, + "end": 21532, "loc": { "start": { - "line": 412, + "line": 414, "column": 57 }, "end": { - "line": 416, + "line": 418, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 21402, - "end": 21430, + "start": 21424, + "end": 21452, "loc": { "start": { - "line": 413, + "line": 415, "column": 8 }, "end": { - "line": 413, + "line": 415, "column": 36 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 21408, - "end": 21429, + "start": 21430, + "end": 21451, "loc": { "start": { - "line": 413, + "line": 415, "column": 14 }, "end": { - "line": 413, + "line": 415, "column": 35 } }, "id": { "type": "Identifier", - "start": 21408, - "end": 21415, + "start": 21430, + "end": 21437, "loc": { "start": { - "line": 413, + "line": 415, "column": 14 }, "end": { - "line": 413, + "line": 415, "column": 21 }, "identifierName": "element" @@ -38224,29 +38072,29 @@ }, "init": { "type": "MemberExpression", - "start": 21418, - "end": 21429, + "start": 21440, + "end": 21451, "loc": { "start": { - "line": 413, + "line": 415, "column": 24 }, "end": { - "line": 413, + "line": 415, "column": 35 } }, "object": { "type": "Identifier", - "start": 21418, - "end": 21426, + "start": 21440, + "end": 21448, "loc": { "start": { - "line": 413, + "line": 415, "column": 24 }, "end": { - "line": 413, + "line": 415, "column": 32 }, "identifierName": "elements" @@ -38255,15 +38103,15 @@ }, "property": { "type": "Identifier", - "start": 21427, - "end": 21428, + "start": 21449, + "end": 21450, "loc": { "start": { - "line": 413, + "line": 415, "column": 33 }, "end": { - "line": 413, + "line": 415, "column": 34 }, "identifierName": "i" @@ -38280,15 +38128,15 @@ { "type": "CommentLine", "value": " Stored Data 2: the elements themselves", - "start": 21352, - "end": 21393, + "start": 21374, + "end": 21415, "loc": { "start": { - "line": 412, + "line": 414, "column": 63 }, "end": { - "line": 412, + "line": 414, "column": 104 } } @@ -38297,57 +38145,57 @@ }, { "type": "ExpressionStatement", - "start": 21439, - "end": 21470, + "start": 21461, + "end": 21492, "loc": { "start": { - "line": 414, + "line": 416, "column": 8 }, "end": { - "line": 414, + "line": 416, "column": 39 } }, "expression": { "type": "CallExpression", - "start": 21439, - "end": 21469, + "start": 21461, + "end": 21491, "loc": { "start": { - "line": 414, + "line": 416, "column": 8 }, "end": { - "line": 414, + "line": 416, "column": 38 } }, "callee": { "type": "MemberExpression", - "start": 21439, - "end": 21452, + "start": 21461, + "end": 21474, "loc": { "start": { - "line": 414, + "line": 416, "column": 8 }, "end": { - "line": 414, + "line": 416, "column": 21 } }, "object": { "type": "Identifier", - "start": 21439, - "end": 21448, + "start": 21461, + "end": 21470, "loc": { "start": { - "line": 414, + "line": 416, "column": 8 }, "end": { - "line": 414, + "line": 416, "column": 17 }, "identifierName": "dataArray" @@ -38356,15 +38204,15 @@ }, "property": { "type": "Identifier", - "start": 21449, - "end": 21452, + "start": 21471, + "end": 21474, "loc": { "start": { - "line": 414, + "line": 416, "column": 18 }, "end": { - "line": 414, + "line": 416, "column": 21 }, "identifierName": "set" @@ -38376,15 +38224,15 @@ "arguments": [ { "type": "Identifier", - "start": 21453, - "end": 21460, + "start": 21475, + "end": 21482, "loc": { "start": { - "line": 414, + "line": 416, "column": 22 }, "end": { - "line": 414, + "line": 416, "column": 29 }, "identifierName": "element" @@ -38393,15 +38241,15 @@ }, { "type": "Identifier", - "start": 21462, - "end": 21468, + "start": 21484, + "end": 21490, "loc": { "start": { - "line": 414, + "line": 416, "column": 31 }, "end": { - "line": 414, + "line": 416, "column": 37 }, "identifierName": "offset" @@ -38413,44 +38261,44 @@ }, { "type": "ExpressionStatement", - "start": 21479, - "end": 21504, + "start": 21501, + "end": 21526, "loc": { "start": { - "line": 415, + "line": 417, "column": 8 }, "end": { - "line": 415, + "line": 417, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 21479, - "end": 21503, + "start": 21501, + "end": 21525, "loc": { "start": { - "line": 415, + "line": 417, "column": 8 }, "end": { - "line": 415, + "line": 417, "column": 32 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 21479, - "end": 21485, + "start": 21501, + "end": 21507, "loc": { "start": { - "line": 415, + "line": 417, "column": 8 }, "end": { - "line": 415, + "line": 417, "column": 14 }, "identifierName": "offset" @@ -38459,29 +38307,29 @@ }, "right": { "type": "MemberExpression", - "start": 21489, - "end": 21503, + "start": 21511, + "end": 21525, "loc": { "start": { - "line": 415, + "line": 417, "column": 18 }, "end": { - "line": 415, + "line": 417, "column": 32 } }, "object": { "type": "Identifier", - "start": 21489, - "end": 21496, + "start": 21511, + "end": 21518, "loc": { "start": { - "line": 415, + "line": 417, "column": 18 }, "end": { - "line": 415, + "line": 417, "column": 25 }, "identifierName": "element" @@ -38490,15 +38338,15 @@ }, "property": { "type": "Identifier", - "start": 21497, - "end": 21503, + "start": 21519, + "end": 21525, "loc": { "start": { - "line": 415, + "line": 417, "column": 26 }, "end": { - "line": 415, + "line": 417, "column": 32 }, "identifierName": "length" @@ -38515,43 +38363,43 @@ }, { "type": "ReturnStatement", - "start": 21515, - "end": 21539, + "start": 21537, + "end": 21561, "loc": { "start": { - "line": 417, + "line": 419, "column": 4 }, "end": { - "line": 417, + "line": 419, "column": 28 } }, "argument": { "type": "MemberExpression", - "start": 21522, - "end": 21538, + "start": 21544, + "end": 21560, "loc": { "start": { - "line": 417, + "line": 419, "column": 11 }, "end": { - "line": 417, + "line": 419, "column": 27 } }, "object": { "type": "Identifier", - "start": 21522, - "end": 21531, + "start": 21544, + "end": 21553, "loc": { "start": { - "line": 417, + "line": 419, "column": 11 }, "end": { - "line": 417, + "line": 419, "column": 20 }, "identifierName": "dataArray" @@ -38560,15 +38408,15 @@ }, "property": { "type": "Identifier", - "start": 21532, - "end": 21538, + "start": 21554, + "end": 21560, "loc": { "start": { - "line": 417, + "line": 419, "column": 21 }, "end": { - "line": 417, + "line": 419, "column": 27 }, "identifierName": "buffer" @@ -38584,15 +38432,15 @@ }, { "type": "ExportNamedDeclaration", - "start": 21543, - "end": 21579, + "start": 21565, + "end": 21601, "loc": { "start": { - "line": 420, + "line": 422, "column": 0 }, "end": { - "line": 420, + "line": 422, "column": 36 } }, @@ -38600,29 +38448,29 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 21551, - "end": 21577, + "start": 21573, + "end": 21599, "loc": { "start": { - "line": 420, + "line": 422, "column": 8 }, "end": { - "line": 420, + "line": 422, "column": 34 } }, "local": { "type": "Identifier", - "start": 21551, - "end": 21577, + "start": 21573, + "end": 21599, "loc": { "start": { - "line": 420, + "line": 422, "column": 8 }, "end": { - "line": 420, + "line": 422, "column": 34 }, "identifierName": "writeXKTModelToArrayBuffer" @@ -38631,15 +38479,15 @@ }, "exported": { "type": "Identifier", - "start": 21551, - "end": 21577, + "start": 21573, + "end": 21599, "loc": { "start": { - "line": 420, + "line": 422, "column": 8 }, "end": { - "line": 420, + "line": 422, "column": 34 }, "identifierName": "writeXKTModelToArrayBuffer" @@ -38652,15 +38500,15 @@ }, { "type": "ExportNamedDeclaration", - "start": 21543, - "end": 21579, + "start": 21565, + "end": 21601, "loc": { "start": { - "line": 420, + "line": 422, "column": 0 }, "end": { - "line": 420, + "line": 422, "column": 36 } }, @@ -40018,9 +39866,9 @@ }, { "type": "CommentLine", - "value": " Meshes", + "value": " Tiles -> Entities -> Meshes", "start": 14097, - "end": 14106, + "end": 14127, "loc": { "start": { "line": 254, @@ -40028,102 +39876,86 @@ }, "end": { "line": 254, - "column": 13 + "column": 34 } } }, { "type": "CommentLine", "value": " Color RGB", - "start": 14694, - "end": 14706, + "start": 15656, + "end": 15668, "loc": { "start": { - "line": 264, - "column": 100 + "line": 298, + "column": 108 }, "end": { - "line": 264, - "column": 112 + "line": 298, + "column": 120 } } }, { "type": "CommentLine", "value": " Opacity", - "start": 15006, - "end": 15016, + "start": 15992, + "end": 16002, "loc": { "start": { - "line": 267, - "column": 99 + "line": 301, + "column": 107 }, "end": { - "line": 267, - "column": 109 + "line": 301, + "column": 117 } } }, { "type": "CommentLine", "value": " Metallic", - "start": 15117, - "end": 15128, + "start": 16111, + "end": 16122, "loc": { "start": { - "line": 268, - "column": 100 + "line": 302, + "column": 108 }, "end": { - "line": 268, - "column": 111 + "line": 302, + "column": 119 } } }, { "type": "CommentLine", "value": " Roughness", - "start": 15230, - "end": 15242, - "loc": { - "start": { - "line": 269, - "column": 101 - }, - "end": { - "line": 269, - "column": 113 - } - } - }, - { - "type": "CommentLine", - "value": " Entities, geometry instances, and tiles", - "start": 15254, - "end": 15296, + "start": 16232, + "end": 16244, "loc": { "start": { - "line": 272, - "column": 4 + "line": 303, + "column": 109 }, "end": { - "line": 272, - "column": 46 + "line": 303, + "column": 121 } } }, { "type": "CommentLine", "value": " <<<<<<<<<<<<<<<<<<<< Error here? Order/value of countEntityMeshesPortion correct?", - "start": 16413, - "end": 16497, + "start": 16435, + "end": 16519, "loc": { "start": { - "line": 307, + "line": 309, "column": 82 }, "end": { - "line": 307, + "line": 309, "column": 166 } } @@ -40131,15 +39963,15 @@ { "type": "CommentLine", "value": " Produce only ASCII-chars, so that the data can be inflated later", - "start": 18684, - "end": 18751, + "start": 18706, + "end": 18773, "loc": { "start": { - "line": 348, + "line": 350, "column": 58 }, "end": { - "line": 348, + "line": 350, "column": 125 } } @@ -40147,15 +39979,15 @@ { "type": "CommentLine", "value": " Produce only ASCII-chars, so that the data can be inflated later", - "start": 19213, - "end": 19280, + "start": 19235, + "end": 19302, "loc": { "start": { - "line": 359, + "line": 361, "column": 54 }, "end": { - "line": 359, + "line": 361, "column": 121 } } @@ -40163,15 +39995,15 @@ { "type": "CommentLine", "value": " Stored Data 1.1: number of stored elements", - "start": 20772, - "end": 20817, + "start": 20794, + "end": 20839, "loc": { "start": { - "line": 400, + "line": 402, "column": 38 }, "end": { - "line": 400, + "line": 402, "column": 83 } } @@ -40179,15 +40011,15 @@ { "type": "CommentLine", "value": " Stored Data 1.2: length of stored elements", - "start": 20842, - "end": 20887, + "start": 20864, + "end": 20909, "loc": { "start": { - "line": 401, + "line": 403, "column": 24 }, "end": { - "line": 401, + "line": 403, "column": 69 } } @@ -40195,15 +40027,15 @@ { "type": "CommentLine", "value": " Stored Data 2: the elements themselves", - "start": 21352, - "end": 21393, + "start": 21374, + "end": 21415, "loc": { "start": { - "line": 412, + "line": 414, "column": 63 }, "end": { - "line": 412, + "line": 414, "column": 104 } } @@ -78424,577 +78256,72 @@ "isAssign": false, "prefix": true, "postfix": true, - "binop": null - }, - "value": "++", - "start": 12925, - "end": 12927, - "loc": { - "start": { - "line": 240, - "column": 49 - }, - "end": { - "line": 240, - "column": 51 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 12927, - "end": 12928, - "loc": { - "start": { - "line": 240, - "column": 51 - }, - "end": { - "line": 240, - "column": 52 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 12929, - "end": 12930, - "loc": { - "start": { - "line": 240, - "column": 53 - }, - "end": { - "line": 240, - "column": 54 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "xktTexture", - "start": 12931, - "end": 12941, - "loc": { - "start": { - "line": 240, - "column": 55 - }, - "end": { - "line": 240, - "column": 65 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 12941, - "end": 12942, - "loc": { - "start": { - "line": 240, - "column": 65 - }, - "end": { - "line": 240, - "column": 66 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "wrapR", - "start": 12942, - "end": 12947, - "loc": { - "start": { - "line": 240, - "column": 66 - }, - "end": { - "line": 240, - "column": 71 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 12947, - "end": 12948, - "loc": { - "start": { - "line": 240, - "column": 71 - }, - "end": { - "line": 240, - "column": 72 - } - } - }, - { - "type": "CommentLine", - "value": " ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping", - "start": 12949, - "end": 13013, - "loc": { - "start": { - "line": 240, - "column": 73 - }, - "end": { - "line": 240, - "column": 137 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 13018, - "end": 13019, - "loc": { - "start": { - "line": 241, - "column": 4 - }, - "end": { - "line": 241, - "column": 5 - } - } - }, - { - "type": "CommentLine", - "value": " Texture sets", - "start": 13025, - "end": 13040, - "loc": { - "start": { - "line": 243, - "column": 4 - }, - "end": { - "line": 243, - "column": 19 - } - } - }, - { - "type": { - "label": "for", - "keyword": "for", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": true, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "for", - "start": 13046, - "end": 13049, - "loc": { - "start": { - "line": 245, - "column": 4 - }, - "end": { - "line": 245, - "column": 7 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 13050, - "end": 13051, - "loc": { - "start": { - "line": 245, - "column": 8 - }, - "end": { - "line": 245, - "column": 9 - } - } - }, - { - "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "let", - "start": 13051, - "end": 13054, - "loc": { - "start": { - "line": 245, - "column": 9 - }, - "end": { - "line": 245, - "column": 12 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "textureSetIndex", - "start": 13055, - "end": 13070, - "loc": { - "start": { - "line": 245, - "column": 13 - }, - "end": { - "line": 245, - "column": 28 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 13071, - "end": 13072, - "loc": { - "start": { - "line": 245, - "column": 29 - }, - "end": { - "line": 245, - "column": 30 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": 0, - "start": 13073, - "end": 13074, - "loc": { - "start": { - "line": 245, - "column": 31 - }, - "end": { - "line": 245, - "column": 32 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 13074, - "end": 13075, - "loc": { - "start": { - "line": 245, - "column": 32 - }, - "end": { - "line": 245, - "column": 33 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "numTextureSets", - "start": 13076, - "end": 13090, - "loc": { - "start": { - "line": 245, - "column": 34 - }, - "end": { - "line": 245, - "column": 48 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 13091, - "end": 13092, - "loc": { - "start": { - "line": 245, - "column": 49 - }, - "end": { - "line": 245, - "column": 50 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "xktModel", - "start": 13093, - "end": 13101, - "loc": { - "start": { - "line": 245, - "column": 51 - }, - "end": { - "line": 245, - "column": 59 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 13101, - "end": 13102, + "value": "++", + "start": 12925, + "end": 12927, "loc": { "start": { - "line": 245, - "column": 59 + "line": 240, + "column": 49 }, "end": { - "line": 245, - "column": 60 + "line": 240, + "column": 51 } } }, { "type": { - "label": "name", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "textureSetsList", - "start": 13102, - "end": 13117, + "start": 12927, + "end": 12928, "loc": { "start": { - "line": 245, - "column": 60 + "line": 240, + "column": 51 }, "end": { - "line": 245, - "column": 75 + "line": 240, + "column": 52 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 13117, - "end": 13118, + "value": "=", + "start": 12929, + "end": 12930, "loc": { "start": { - "line": 245, - "column": 75 + "line": 240, + "column": 53 }, "end": { - "line": 245, - "column": 76 + "line": 240, + "column": 54 } } }, @@ -79010,24 +78337,24 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 13118, - "end": 13124, + "value": "xktTexture", + "start": 12931, + "end": 12941, "loc": { "start": { - "line": 245, - "column": 76 + "line": 240, + "column": 55 }, "end": { - "line": 245, - "column": 82 + "line": 240, + "column": 65 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -79037,16 +78364,16 @@ "binop": null, "updateContext": null }, - "start": 13124, - "end": 13125, + "start": 12941, + "end": 12942, "loc": { "start": { - "line": 245, - "column": 82 + "line": 240, + "column": 65 }, "end": { - "line": 245, - "column": 83 + "line": 240, + "column": 66 } } }, @@ -79062,157 +78389,135 @@ "postfix": false, "binop": null }, - "value": "eachTextureSetTexturesIndex", - "start": 13126, - "end": 13153, + "value": "wrapR", + "start": 12942, + "end": 12947, "loc": { "start": { - "line": 245, - "column": 84 + "line": 240, + "column": 66 }, "end": { - "line": 245, - "column": 111 + "line": 240, + "column": 71 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 13154, - "end": 13155, + "start": 12947, + "end": 12948, "loc": { "start": { - "line": 245, - "column": 112 + "line": 240, + "column": 71 }, "end": { - "line": 245, - "column": 113 + "line": 240, + "column": 72 } } }, { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": 0, - "start": 13156, - "end": 13157, + "type": "CommentLine", + "value": " ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping", + "start": 12949, + "end": 13013, "loc": { "start": { - "line": 245, - "column": 114 + "line": 240, + "column": 73 }, "end": { - "line": 245, - "column": 115 + "line": 240, + "column": 137 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 13157, - "end": 13158, + "start": 13018, + "end": 13019, "loc": { "start": { - "line": 245, - "column": 115 + "line": 241, + "column": 4 }, "end": { - "line": 245, - "column": 116 + "line": 241, + "column": 5 } } }, { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "textureSetIndex", - "start": 13159, - "end": 13174, + "type": "CommentLine", + "value": " Texture sets", + "start": 13025, + "end": 13040, "loc": { "start": { - "line": 245, - "column": 117 + "line": 243, + "column": 4 }, "end": { - "line": 245, - "column": 132 + "line": 243, + "column": 19 } } }, { "type": { - "label": "", - "beforeExpr": true, + "label": "for", + "keyword": "for", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<", - "start": 13175, - "end": 13176, + "value": "for", + "start": 13046, + "end": 13049, "loc": { "start": { "line": 245, - "column": 133 + "column": 4 }, "end": { "line": 245, - "column": 134 + "column": 7 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -79221,24 +78526,24 @@ "postfix": false, "binop": null }, - "value": "numTextureSets", - "start": 13177, - "end": 13191, + "start": 13050, + "end": 13051, "loc": { "start": { "line": 245, - "column": 135 + "column": 8 }, "end": { "line": 245, - "column": 149 + "column": 9 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "let", + "keyword": "let", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -79248,16 +78553,17 @@ "binop": null, "updateContext": null }, - "start": 13191, - "end": 13192, + "value": "let", + "start": 13051, + "end": 13054, "loc": { "start": { "line": 245, - "column": 149 + "column": 9 }, "end": { "line": 245, - "column": 150 + "column": 12 } } }, @@ -79274,100 +78580,77 @@ "binop": null }, "value": "textureSetIndex", - "start": 13193, - "end": 13208, - "loc": { - "start": { - "line": 245, - "column": 151 - }, - "end": { - "line": 245, - "column": 166 - } - } - }, - { - "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null - }, - "value": "++", - "start": 13208, - "end": 13210, + "start": 13055, + "end": 13070, "loc": { "start": { "line": 245, - "column": 166 + "column": 13 }, "end": { "line": 245, - "column": 168 + "column": 28 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13210, - "end": 13211, + "value": "=", + "start": 13071, + "end": 13072, "loc": { "start": { "line": 245, - "column": 168 + "column": 29 }, "end": { "line": 245, - "column": 169 + "column": 30 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "num", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13212, - "end": 13213, + "value": 0, + "start": 13073, + "end": 13074, "loc": { "start": { "line": 245, - "column": 170 + "column": 31 }, "end": { "line": 245, - "column": 171 + "column": 32 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -79377,17 +78660,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 13222, - "end": 13227, + "start": 13074, + "end": 13075, "loc": { "start": { - "line": 246, - "column": 8 + "line": 245, + "column": 32 }, "end": { - "line": 246, - "column": 13 + "line": 245, + "column": 33 } } }, @@ -79403,17 +78685,17 @@ "postfix": false, "binop": null }, - "value": "textureSet", - "start": 13228, - "end": 13238, + "value": "numTextureSets", + "start": 13076, + "end": 13090, "loc": { "start": { - "line": 246, - "column": 14 + "line": 245, + "column": 34 }, "end": { - "line": 246, - "column": 24 + "line": 245, + "column": 48 } } }, @@ -79431,16 +78713,16 @@ "updateContext": null }, "value": "=", - "start": 13239, - "end": 13240, + "start": 13091, + "end": 13092, "loc": { "start": { - "line": 246, - "column": 25 + "line": 245, + "column": 49 }, "end": { - "line": 246, - "column": 26 + "line": 245, + "column": 50 } } }, @@ -79456,25 +78738,25 @@ "postfix": false, "binop": null }, - "value": "textureSetsList", - "start": 13241, - "end": 13256, + "value": "xktModel", + "start": 13093, + "end": 13101, "loc": { "start": { - "line": 246, - "column": 27 + "line": 245, + "column": 51 }, "end": { - "line": 246, - "column": 42 + "line": 245, + "column": 59 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -79483,16 +78765,16 @@ "binop": null, "updateContext": null }, - "start": 13256, - "end": 13257, + "start": 13101, + "end": 13102, "loc": { "start": { - "line": 246, - "column": 42 + "line": 245, + "column": 59 }, "end": { - "line": 246, - "column": 43 + "line": 245, + "column": 60 } } }, @@ -79508,23 +78790,23 @@ "postfix": false, "binop": null }, - "value": "textureSetIndex", - "start": 13257, - "end": 13272, + "value": "textureSetsList", + "start": 13102, + "end": 13117, "loc": { "start": { - "line": 246, - "column": 43 + "line": 245, + "column": 60 }, "end": { - "line": 246, - "column": 58 + "line": 245, + "column": 75 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -79535,42 +78817,16 @@ "binop": null, "updateContext": null }, - "start": 13272, - "end": 13273, - "loc": { - "start": { - "line": 246, - "column": 58 - }, - "end": { - "line": 246, - "column": 59 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 13273, - "end": 13274, + "start": 13117, + "end": 13118, "loc": { "start": { - "line": 246, - "column": 59 + "line": 245, + "column": 75 }, "end": { - "line": 246, - "column": 60 + "line": 245, + "column": 76 } } }, @@ -79586,24 +78842,24 @@ "postfix": false, "binop": null }, - "value": "data", - "start": 13283, - "end": 13287, + "value": "length", + "start": 13118, + "end": 13124, "loc": { "start": { - "line": 247, - "column": 8 + "line": 245, + "column": 76 }, "end": { - "line": 247, - "column": 12 + "line": 245, + "column": 82 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -79613,16 +78869,16 @@ "binop": null, "updateContext": null }, - "start": 13287, - "end": 13288, + "start": 13124, + "end": 13125, "loc": { "start": { - "line": 247, - "column": 12 + "line": 245, + "column": 82 }, "end": { - "line": 247, - "column": 13 + "line": 245, + "column": 83 } } }, @@ -79638,49 +78894,50 @@ "postfix": false, "binop": null }, - "value": "eachTextureSetTextures", - "start": 13288, - "end": 13310, + "value": "eachTextureSetTexturesIndex", + "start": 13126, + "end": 13153, "loc": { "start": { - "line": 247, - "column": 13 + "line": 245, + "column": 84 }, "end": { - "line": 247, - "column": 35 + "line": 245, + "column": 111 } } }, { "type": { - "label": "[", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 13310, - "end": 13311, + "value": "=", + "start": 13154, + "end": 13155, "loc": { "start": { - "line": 247, - "column": 35 + "line": 245, + "column": 112 }, "end": { - "line": 247, - "column": 36 + "line": 245, + "column": 113 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -79688,98 +78945,99 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "eachTextureSetTexturesIndex", - "start": 13311, - "end": 13338, + "value": 0, + "start": 13156, + "end": 13157, "loc": { "start": { - "line": 247, - "column": 36 + "line": 245, + "column": 114 }, "end": { - "line": 247, - "column": 63 + "line": 245, + "column": 115 } } }, { "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null }, - "value": "++", - "start": 13338, - "end": 13340, + "start": 13157, + "end": 13158, "loc": { "start": { - "line": 247, - "column": 63 + "line": 245, + "column": 115 }, "end": { - "line": 247, - "column": 65 + "line": 245, + "column": 116 } } }, { "type": { - "label": "]", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 13340, - "end": 13341, + "value": "textureSetIndex", + "start": 13159, + "end": 13174, "loc": { "start": { - "line": 247, - "column": 65 + "line": 245, + "column": 117 }, "end": { - "line": 247, - "column": 66 + "line": 245, + "column": 132 } } }, { "type": { - "label": "=", + "label": "", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "value": "=", - "start": 13342, - "end": 13343, + "value": "<", + "start": 13175, + "end": 13176, "loc": { "start": { - "line": 247, - "column": 67 + "line": 245, + "column": 133 }, "end": { - "line": 247, - "column": 68 + "line": 245, + "column": 134 } } }, @@ -79795,24 +79053,24 @@ "postfix": false, "binop": null }, - "value": "textureSet", - "start": 13344, - "end": 13354, + "value": "numTextureSets", + "start": 13177, + "end": 13191, "loc": { "start": { - "line": 247, - "column": 69 + "line": 245, + "column": 135 }, "end": { - "line": 247, - "column": 79 + "line": 245, + "column": 149 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -79822,16 +79080,16 @@ "binop": null, "updateContext": null }, - "start": 13354, - "end": 13355, + "start": 13191, + "end": 13192, "loc": { "start": { - "line": 247, - "column": 79 + "line": 245, + "column": 149 }, "end": { - "line": 247, - "column": 80 + "line": 245, + "column": 150 } } }, @@ -79847,50 +79105,75 @@ "postfix": false, "binop": null }, - "value": "colorTexture", - "start": 13355, - "end": 13367, + "value": "textureSetIndex", + "start": 13193, + "end": 13208, "loc": { "start": { - "line": 247, - "column": 80 + "line": 245, + "column": 151 }, "end": { - "line": 247, - "column": 92 + "line": 245, + "column": 166 } } }, { "type": { - "label": "?", - "beforeExpr": true, + "label": "++/--", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": true, + "binop": null + }, + "value": "++", + "start": 13208, + "end": 13210, + "loc": { + "start": { + "line": 245, + "column": 166 + }, + "end": { + "line": 245, + "column": 168 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 13368, - "end": 13369, + "start": 13210, + "end": 13211, "loc": { "start": { - "line": 247, - "column": 93 + "line": 245, + "column": 168 }, "end": { - "line": 247, - "column": 94 + "line": 245, + "column": 169 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -79899,23 +79182,23 @@ "postfix": false, "binop": null }, - "value": "textureSet", - "start": 13370, - "end": 13380, + "start": 13212, + "end": 13213, "loc": { "start": { - "line": 247, - "column": 95 + "line": 245, + "column": 170 }, "end": { - "line": 247, - "column": 105 + "line": 245, + "column": 171 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -79926,16 +79209,17 @@ "binop": null, "updateContext": null }, - "start": 13380, - "end": 13381, + "value": "const", + "start": 13222, + "end": 13227, "loc": { "start": { - "line": 247, - "column": 105 + "line": 246, + "column": 8 }, "end": { - "line": 247, - "column": 106 + "line": 246, + "column": 13 } } }, @@ -79951,43 +79235,44 @@ "postfix": false, "binop": null }, - "value": "colorTexture", - "start": 13381, - "end": 13393, + "value": "textureSet", + "start": 13228, + "end": 13238, "loc": { "start": { - "line": 247, - "column": 106 + "line": 246, + "column": 14 }, "end": { - "line": 247, - "column": 118 + "line": 246, + "column": 24 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 13393, - "end": 13394, + "value": "=", + "start": 13239, + "end": 13240, "loc": { "start": { - "line": 247, - "column": 118 + "line": 246, + "column": 25 }, "end": { - "line": 247, - "column": 119 + "line": 246, + "column": 26 } } }, @@ -80003,25 +79288,25 @@ "postfix": false, "binop": null }, - "value": "textureIndex", - "start": 13394, - "end": 13406, + "value": "textureSetsList", + "start": 13241, + "end": 13256, "loc": { "start": { - "line": 247, - "column": 119 + "line": 246, + "column": 27 }, "end": { - "line": 247, - "column": 131 + "line": 246, + "column": 42 } } }, { "type": { - "label": ":", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -80030,51 +79315,50 @@ "binop": null, "updateContext": null }, - "start": 13407, - "end": 13408, + "start": 13256, + "end": 13257, "loc": { "start": { - "line": 247, - "column": 132 + "line": 246, + "column": 42 }, "end": { - "line": 247, - "column": 133 + "line": 246, + "column": 43 } } }, { "type": { - "label": "+/-", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, - "updateContext": null + "binop": null }, - "value": "-", - "start": 13409, - "end": 13410, + "value": "textureSetIndex", + "start": 13257, + "end": 13272, "loc": { "start": { - "line": 247, - "column": 134 + "line": 246, + "column": 43 }, "end": { - "line": 247, - "column": 135 + "line": 246, + "column": 58 } } }, { "type": { - "label": "num", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -80083,17 +79367,16 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 13410, - "end": 13411, + "start": 13272, + "end": 13273, "loc": { "start": { - "line": 247, - "column": 135 + "line": 246, + "column": 58 }, "end": { - "line": 247, - "column": 136 + "line": 246, + "column": 59 } } }, @@ -80110,32 +79393,16 @@ "binop": null, "updateContext": null }, - "start": 13411, - "end": 13412, - "loc": { - "start": { - "line": 247, - "column": 136 - }, - "end": { - "line": 247, - "column": 137 - } - } - }, - { - "type": "CommentLine", - "value": " Color map", - "start": 13413, - "end": 13425, + "start": 13273, + "end": 13274, "loc": { "start": { - "line": 247, - "column": 138 + "line": 246, + "column": 59 }, "end": { - "line": 247, - "column": 150 + "line": 246, + "column": 60 } } }, @@ -80152,15 +79419,15 @@ "binop": null }, "value": "data", - "start": 13434, - "end": 13438, + "start": 13283, + "end": 13287, "loc": { "start": { - "line": 248, + "line": 247, "column": 8 }, "end": { - "line": 248, + "line": 247, "column": 12 } } @@ -80178,15 +79445,15 @@ "binop": null, "updateContext": null }, - "start": 13438, - "end": 13439, + "start": 13287, + "end": 13288, "loc": { "start": { - "line": 248, + "line": 247, "column": 12 }, "end": { - "line": 248, + "line": 247, "column": 13 } } @@ -80204,15 +79471,15 @@ "binop": null }, "value": "eachTextureSetTextures", - "start": 13439, - "end": 13461, + "start": 13288, + "end": 13310, "loc": { "start": { - "line": 248, + "line": 247, "column": 13 }, "end": { - "line": 248, + "line": 247, "column": 35 } } @@ -80230,15 +79497,15 @@ "binop": null, "updateContext": null }, - "start": 13461, - "end": 13462, + "start": 13310, + "end": 13311, "loc": { "start": { - "line": 248, + "line": 247, "column": 35 }, "end": { - "line": 248, + "line": 247, "column": 36 } } @@ -80256,15 +79523,15 @@ "binop": null }, "value": "eachTextureSetTexturesIndex", - "start": 13462, - "end": 13489, + "start": 13311, + "end": 13338, "loc": { "start": { - "line": 248, + "line": 247, "column": 36 }, "end": { - "line": 248, + "line": 247, "column": 63 } } @@ -80282,15 +79549,15 @@ "binop": null }, "value": "++", - "start": 13489, - "end": 13491, + "start": 13338, + "end": 13340, "loc": { "start": { - "line": 248, + "line": 247, "column": 63 }, "end": { - "line": 248, + "line": 247, "column": 65 } } @@ -80308,15 +79575,15 @@ "binop": null, "updateContext": null }, - "start": 13491, - "end": 13492, + "start": 13340, + "end": 13341, "loc": { "start": { - "line": 248, + "line": 247, "column": 65 }, "end": { - "line": 248, + "line": 247, "column": 66 } } @@ -80335,15 +79602,15 @@ "updateContext": null }, "value": "=", - "start": 13493, - "end": 13494, + "start": 13342, + "end": 13343, "loc": { "start": { - "line": 248, + "line": 247, "column": 67 }, "end": { - "line": 248, + "line": 247, "column": 68 } } @@ -80361,15 +79628,15 @@ "binop": null }, "value": "textureSet", - "start": 13495, - "end": 13505, + "start": 13344, + "end": 13354, "loc": { "start": { - "line": 248, + "line": 247, "column": 69 }, "end": { - "line": 248, + "line": 247, "column": 79 } } @@ -80387,15 +79654,15 @@ "binop": null, "updateContext": null }, - "start": 13505, - "end": 13506, + "start": 13354, + "end": 13355, "loc": { "start": { - "line": 248, + "line": 247, "column": 79 }, "end": { - "line": 248, + "line": 247, "column": 80 } } @@ -80412,17 +79679,17 @@ "postfix": false, "binop": null }, - "value": "metallicRoughnessTexture", - "start": 13506, - "end": 13530, + "value": "colorTexture", + "start": 13355, + "end": 13367, "loc": { "start": { - "line": 248, + "line": 247, "column": 80 }, "end": { - "line": 248, - "column": 104 + "line": 247, + "column": 92 } } }, @@ -80439,16 +79706,16 @@ "binop": null, "updateContext": null }, - "start": 13531, - "end": 13532, + "start": 13368, + "end": 13369, "loc": { "start": { - "line": 248, - "column": 105 + "line": 247, + "column": 93 }, "end": { - "line": 248, - "column": 106 + "line": 247, + "column": 94 } } }, @@ -80465,16 +79732,16 @@ "binop": null }, "value": "textureSet", - "start": 13533, - "end": 13543, + "start": 13370, + "end": 13380, "loc": { "start": { - "line": 248, - "column": 107 + "line": 247, + "column": 95 }, "end": { - "line": 248, - "column": 117 + "line": 247, + "column": 105 } } }, @@ -80491,16 +79758,16 @@ "binop": null, "updateContext": null }, - "start": 13543, - "end": 13544, + "start": 13380, + "end": 13381, "loc": { "start": { - "line": 248, - "column": 117 + "line": 247, + "column": 105 }, "end": { - "line": 248, - "column": 118 + "line": 247, + "column": 106 } } }, @@ -80516,17 +79783,17 @@ "postfix": false, "binop": null }, - "value": "metallicRoughnessTexture", - "start": 13544, - "end": 13568, + "value": "colorTexture", + "start": 13381, + "end": 13393, "loc": { "start": { - "line": 248, - "column": 118 + "line": 247, + "column": 106 }, "end": { - "line": 248, - "column": 142 + "line": 247, + "column": 118 } } }, @@ -80543,16 +79810,16 @@ "binop": null, "updateContext": null }, - "start": 13568, - "end": 13569, + "start": 13393, + "end": 13394, "loc": { "start": { - "line": 248, - "column": 142 + "line": 247, + "column": 118 }, "end": { - "line": 248, - "column": 143 + "line": 247, + "column": 119 } } }, @@ -80569,16 +79836,16 @@ "binop": null }, "value": "textureIndex", - "start": 13569, - "end": 13581, + "start": 13394, + "end": 13406, "loc": { "start": { - "line": 248, - "column": 143 + "line": 247, + "column": 119 }, "end": { - "line": 248, - "column": 155 + "line": 247, + "column": 131 } } }, @@ -80595,16 +79862,16 @@ "binop": null, "updateContext": null }, - "start": 13582, - "end": 13583, + "start": 13407, + "end": 13408, "loc": { "start": { - "line": 248, - "column": 156 + "line": 247, + "column": 132 }, "end": { - "line": 248, - "column": 157 + "line": 247, + "column": 133 } } }, @@ -80622,16 +79889,16 @@ "updateContext": null }, "value": "-", - "start": 13584, - "end": 13585, + "start": 13409, + "end": 13410, "loc": { "start": { - "line": 248, - "column": 158 + "line": 247, + "column": 134 }, "end": { - "line": 248, - "column": 159 + "line": 247, + "column": 135 } } }, @@ -80649,16 +79916,16 @@ "updateContext": null }, "value": 1, - "start": 13585, - "end": 13586, + "start": 13410, + "end": 13411, "loc": { "start": { - "line": 248, - "column": 159 + "line": 247, + "column": 135 }, "end": { - "line": 248, - "column": 160 + "line": 247, + "column": 136 } } }, @@ -80675,32 +79942,32 @@ "binop": null, "updateContext": null }, - "start": 13586, - "end": 13587, + "start": 13411, + "end": 13412, "loc": { "start": { - "line": 248, - "column": 160 + "line": 247, + "column": 136 }, "end": { - "line": 248, - "column": 161 + "line": 247, + "column": 137 } } }, { "type": "CommentLine", - "value": " Metal/rough map", - "start": 13588, - "end": 13606, + "value": " Color map", + "start": 13413, + "end": 13425, "loc": { "start": { - "line": 248, - "column": 162 + "line": 247, + "column": 138 }, "end": { - "line": 248, - "column": 180 + "line": 247, + "column": 150 } } }, @@ -80717,15 +79984,15 @@ "binop": null }, "value": "data", - "start": 13615, - "end": 13619, + "start": 13434, + "end": 13438, "loc": { "start": { - "line": 249, + "line": 248, "column": 8 }, "end": { - "line": 249, + "line": 248, "column": 12 } } @@ -80743,15 +80010,15 @@ "binop": null, "updateContext": null }, - "start": 13619, - "end": 13620, + "start": 13438, + "end": 13439, "loc": { "start": { - "line": 249, + "line": 248, "column": 12 }, "end": { - "line": 249, + "line": 248, "column": 13 } } @@ -80769,15 +80036,15 @@ "binop": null }, "value": "eachTextureSetTextures", - "start": 13620, - "end": 13642, + "start": 13439, + "end": 13461, "loc": { "start": { - "line": 249, + "line": 248, "column": 13 }, "end": { - "line": 249, + "line": 248, "column": 35 } } @@ -80795,15 +80062,15 @@ "binop": null, "updateContext": null }, - "start": 13642, - "end": 13643, + "start": 13461, + "end": 13462, "loc": { "start": { - "line": 249, + "line": 248, "column": 35 }, "end": { - "line": 249, + "line": 248, "column": 36 } } @@ -80821,15 +80088,15 @@ "binop": null }, "value": "eachTextureSetTexturesIndex", - "start": 13643, - "end": 13670, + "start": 13462, + "end": 13489, "loc": { "start": { - "line": 249, + "line": 248, "column": 36 }, "end": { - "line": 249, + "line": 248, "column": 63 } } @@ -80847,15 +80114,15 @@ "binop": null }, "value": "++", - "start": 13670, - "end": 13672, + "start": 13489, + "end": 13491, "loc": { "start": { - "line": 249, + "line": 248, "column": 63 }, "end": { - "line": 249, + "line": 248, "column": 65 } } @@ -80873,15 +80140,15 @@ "binop": null, "updateContext": null }, - "start": 13672, - "end": 13673, + "start": 13491, + "end": 13492, "loc": { "start": { - "line": 249, + "line": 248, "column": 65 }, "end": { - "line": 249, + "line": 248, "column": 66 } } @@ -80900,15 +80167,15 @@ "updateContext": null }, "value": "=", - "start": 13674, - "end": 13675, + "start": 13493, + "end": 13494, "loc": { "start": { - "line": 249, + "line": 248, "column": 67 }, "end": { - "line": 249, + "line": 248, "column": 68 } } @@ -80926,15 +80193,15 @@ "binop": null }, "value": "textureSet", - "start": 13676, - "end": 13686, + "start": 13495, + "end": 13505, "loc": { "start": { - "line": 249, + "line": 248, "column": 69 }, "end": { - "line": 249, + "line": 248, "column": 79 } } @@ -80952,15 +80219,15 @@ "binop": null, "updateContext": null }, - "start": 13686, - "end": 13687, + "start": 13505, + "end": 13506, "loc": { "start": { - "line": 249, + "line": 248, "column": 79 }, "end": { - "line": 249, + "line": 248, "column": 80 } } @@ -80977,17 +80244,17 @@ "postfix": false, "binop": null }, - "value": "normalsTexture", - "start": 13687, - "end": 13701, + "value": "metallicRoughnessTexture", + "start": 13506, + "end": 13530, "loc": { "start": { - "line": 249, + "line": 248, "column": 80 }, "end": { - "line": 249, - "column": 94 + "line": 248, + "column": 104 } } }, @@ -81004,16 +80271,16 @@ "binop": null, "updateContext": null }, - "start": 13702, - "end": 13703, + "start": 13531, + "end": 13532, "loc": { "start": { - "line": 249, - "column": 95 + "line": 248, + "column": 105 }, "end": { - "line": 249, - "column": 96 + "line": 248, + "column": 106 } } }, @@ -81030,16 +80297,16 @@ "binop": null }, "value": "textureSet", - "start": 13704, - "end": 13714, + "start": 13533, + "end": 13543, "loc": { "start": { - "line": 249, - "column": 97 + "line": 248, + "column": 107 }, "end": { - "line": 249, - "column": 107 + "line": 248, + "column": 117 } } }, @@ -81056,16 +80323,16 @@ "binop": null, "updateContext": null }, - "start": 13714, - "end": 13715, + "start": 13543, + "end": 13544, "loc": { "start": { - "line": 249, - "column": 107 + "line": 248, + "column": 117 }, "end": { - "line": 249, - "column": 108 + "line": 248, + "column": 118 } } }, @@ -81081,17 +80348,17 @@ "postfix": false, "binop": null }, - "value": "normalsTexture", - "start": 13715, - "end": 13729, + "value": "metallicRoughnessTexture", + "start": 13544, + "end": 13568, "loc": { "start": { - "line": 249, - "column": 108 + "line": 248, + "column": 118 }, "end": { - "line": 249, - "column": 122 + "line": 248, + "column": 142 } } }, @@ -81108,16 +80375,16 @@ "binop": null, "updateContext": null }, - "start": 13729, - "end": 13730, + "start": 13568, + "end": 13569, "loc": { "start": { - "line": 249, - "column": 122 + "line": 248, + "column": 142 }, "end": { - "line": 249, - "column": 123 + "line": 248, + "column": 143 } } }, @@ -81134,16 +80401,16 @@ "binop": null }, "value": "textureIndex", - "start": 13730, - "end": 13742, + "start": 13569, + "end": 13581, "loc": { "start": { - "line": 249, - "column": 123 + "line": 248, + "column": 143 }, "end": { - "line": 249, - "column": 135 + "line": 248, + "column": 155 } } }, @@ -81160,16 +80427,16 @@ "binop": null, "updateContext": null }, - "start": 13743, - "end": 13744, + "start": 13582, + "end": 13583, "loc": { "start": { - "line": 249, - "column": 136 + "line": 248, + "column": 156 }, "end": { - "line": 249, - "column": 137 + "line": 248, + "column": 157 } } }, @@ -81187,16 +80454,16 @@ "updateContext": null }, "value": "-", - "start": 13745, - "end": 13746, + "start": 13584, + "end": 13585, "loc": { "start": { - "line": 249, - "column": 138 + "line": 248, + "column": 158 }, "end": { - "line": 249, - "column": 139 + "line": 248, + "column": 159 } } }, @@ -81214,16 +80481,16 @@ "updateContext": null }, "value": 1, - "start": 13746, - "end": 13747, + "start": 13585, + "end": 13586, "loc": { "start": { - "line": 249, - "column": 139 + "line": 248, + "column": 159 }, "end": { - "line": 249, - "column": 140 + "line": 248, + "column": 160 } } }, @@ -81240,32 +80507,32 @@ "binop": null, "updateContext": null }, - "start": 13747, - "end": 13748, + "start": 13586, + "end": 13587, "loc": { "start": { - "line": 249, - "column": 140 + "line": 248, + "column": 160 }, "end": { - "line": 249, - "column": 141 + "line": 248, + "column": 161 } } }, { "type": "CommentLine", - "value": " Normal map", - "start": 13749, - "end": 13762, + "value": " Metal/rough map", + "start": 13588, + "end": 13606, "loc": { "start": { - "line": 249, - "column": 142 + "line": 248, + "column": 162 }, "end": { - "line": 249, - "column": 155 + "line": 248, + "column": 180 } } }, @@ -81282,15 +80549,15 @@ "binop": null }, "value": "data", - "start": 13771, - "end": 13775, + "start": 13615, + "end": 13619, "loc": { "start": { - "line": 250, + "line": 249, "column": 8 }, "end": { - "line": 250, + "line": 249, "column": 12 } } @@ -81308,15 +80575,15 @@ "binop": null, "updateContext": null }, - "start": 13775, - "end": 13776, + "start": 13619, + "end": 13620, "loc": { "start": { - "line": 250, + "line": 249, "column": 12 }, "end": { - "line": 250, + "line": 249, "column": 13 } } @@ -81334,15 +80601,15 @@ "binop": null }, "value": "eachTextureSetTextures", - "start": 13776, - "end": 13798, + "start": 13620, + "end": 13642, "loc": { "start": { - "line": 250, + "line": 249, "column": 13 }, "end": { - "line": 250, + "line": 249, "column": 35 } } @@ -81360,15 +80627,15 @@ "binop": null, "updateContext": null }, - "start": 13798, - "end": 13799, + "start": 13642, + "end": 13643, "loc": { "start": { - "line": 250, + "line": 249, "column": 35 }, "end": { - "line": 250, + "line": 249, "column": 36 } } @@ -81386,15 +80653,15 @@ "binop": null }, "value": "eachTextureSetTexturesIndex", - "start": 13799, - "end": 13826, + "start": 13643, + "end": 13670, "loc": { "start": { - "line": 250, + "line": 249, "column": 36 }, "end": { - "line": 250, + "line": 249, "column": 63 } } @@ -81412,15 +80679,15 @@ "binop": null }, "value": "++", - "start": 13826, - "end": 13828, + "start": 13670, + "end": 13672, "loc": { "start": { - "line": 250, + "line": 249, "column": 63 }, "end": { - "line": 250, + "line": 249, "column": 65 } } @@ -81438,15 +80705,15 @@ "binop": null, "updateContext": null }, - "start": 13828, - "end": 13829, + "start": 13672, + "end": 13673, "loc": { "start": { - "line": 250, + "line": 249, "column": 65 }, "end": { - "line": 250, + "line": 249, "column": 66 } } @@ -81465,15 +80732,15 @@ "updateContext": null }, "value": "=", - "start": 13830, - "end": 13831, + "start": 13674, + "end": 13675, "loc": { "start": { - "line": 250, + "line": 249, "column": 67 }, "end": { - "line": 250, + "line": 249, "column": 68 } } @@ -81491,15 +80758,15 @@ "binop": null }, "value": "textureSet", - "start": 13832, - "end": 13842, + "start": 13676, + "end": 13686, "loc": { "start": { - "line": 250, + "line": 249, "column": 69 }, "end": { - "line": 250, + "line": 249, "column": 79 } } @@ -81517,15 +80784,15 @@ "binop": null, "updateContext": null }, - "start": 13842, - "end": 13843, + "start": 13686, + "end": 13687, "loc": { "start": { - "line": 250, + "line": 249, "column": 79 }, "end": { - "line": 250, + "line": 249, "column": 80 } } @@ -81542,17 +80809,17 @@ "postfix": false, "binop": null }, - "value": "emissiveTexture", - "start": 13843, - "end": 13858, + "value": "normalsTexture", + "start": 13687, + "end": 13701, "loc": { "start": { - "line": 250, + "line": 249, "column": 80 }, "end": { - "line": 250, - "column": 95 + "line": 249, + "column": 94 } } }, @@ -81569,16 +80836,16 @@ "binop": null, "updateContext": null }, - "start": 13859, - "end": 13860, + "start": 13702, + "end": 13703, "loc": { "start": { - "line": 250, - "column": 96 + "line": 249, + "column": 95 }, "end": { - "line": 250, - "column": 97 + "line": 249, + "column": 96 } } }, @@ -81595,16 +80862,16 @@ "binop": null }, "value": "textureSet", - "start": 13861, - "end": 13871, + "start": 13704, + "end": 13714, "loc": { "start": { - "line": 250, - "column": 98 + "line": 249, + "column": 97 }, "end": { - "line": 250, - "column": 108 + "line": 249, + "column": 107 } } }, @@ -81621,16 +80888,16 @@ "binop": null, "updateContext": null }, - "start": 13871, - "end": 13872, + "start": 13714, + "end": 13715, "loc": { "start": { - "line": 250, - "column": 108 + "line": 249, + "column": 107 }, "end": { - "line": 250, - "column": 109 + "line": 249, + "column": 108 } } }, @@ -81646,17 +80913,17 @@ "postfix": false, "binop": null }, - "value": "emissiveTexture", - "start": 13872, - "end": 13887, + "value": "normalsTexture", + "start": 13715, + "end": 13729, "loc": { "start": { - "line": 250, - "column": 109 + "line": 249, + "column": 108 }, "end": { - "line": 250, - "column": 124 + "line": 249, + "column": 122 } } }, @@ -81673,16 +80940,16 @@ "binop": null, "updateContext": null }, - "start": 13887, - "end": 13888, + "start": 13729, + "end": 13730, "loc": { "start": { - "line": 250, - "column": 124 + "line": 249, + "column": 122 }, "end": { - "line": 250, - "column": 125 + "line": 249, + "column": 123 } } }, @@ -81699,16 +80966,16 @@ "binop": null }, "value": "textureIndex", - "start": 13888, - "end": 13900, + "start": 13730, + "end": 13742, "loc": { "start": { - "line": 250, - "column": 125 + "line": 249, + "column": 123 }, "end": { - "line": 250, - "column": 137 + "line": 249, + "column": 135 } } }, @@ -81725,16 +80992,16 @@ "binop": null, "updateContext": null }, - "start": 13901, - "end": 13902, + "start": 13743, + "end": 13744, "loc": { "start": { - "line": 250, - "column": 138 + "line": 249, + "column": 136 }, "end": { - "line": 250, - "column": 139 + "line": 249, + "column": 137 } } }, @@ -81752,16 +81019,16 @@ "updateContext": null }, "value": "-", - "start": 13903, - "end": 13904, + "start": 13745, + "end": 13746, "loc": { "start": { - "line": 250, - "column": 140 + "line": 249, + "column": 138 }, "end": { - "line": 250, - "column": 141 + "line": 249, + "column": 139 } } }, @@ -81779,16 +81046,16 @@ "updateContext": null }, "value": 1, - "start": 13904, - "end": 13905, + "start": 13746, + "end": 13747, "loc": { "start": { - "line": 250, - "column": 141 + "line": 249, + "column": 139 }, "end": { - "line": 250, - "column": 142 + "line": 249, + "column": 140 } } }, @@ -81805,32 +81072,32 @@ "binop": null, "updateContext": null }, - "start": 13905, - "end": 13906, + "start": 13747, + "end": 13748, "loc": { "start": { - "line": 250, - "column": 142 + "line": 249, + "column": 140 }, "end": { - "line": 250, - "column": 143 + "line": 249, + "column": 141 } } }, { "type": "CommentLine", - "value": " Emissive map", - "start": 13907, - "end": 13922, + "value": " Normal map", + "start": 13749, + "end": 13762, "loc": { "start": { - "line": 250, - "column": 144 + "line": 249, + "column": 142 }, "end": { - "line": 250, - "column": 159 + "line": 249, + "column": 155 } } }, @@ -81847,15 +81114,15 @@ "binop": null }, "value": "data", - "start": 13931, - "end": 13935, + "start": 13771, + "end": 13775, "loc": { "start": { - "line": 251, + "line": 250, "column": 8 }, "end": { - "line": 251, + "line": 250, "column": 12 } } @@ -81873,15 +81140,15 @@ "binop": null, "updateContext": null }, - "start": 13935, - "end": 13936, + "start": 13775, + "end": 13776, "loc": { "start": { - "line": 251, + "line": 250, "column": 12 }, "end": { - "line": 251, + "line": 250, "column": 13 } } @@ -81899,15 +81166,15 @@ "binop": null }, "value": "eachTextureSetTextures", - "start": 13936, - "end": 13958, + "start": 13776, + "end": 13798, "loc": { "start": { - "line": 251, + "line": 250, "column": 13 }, "end": { - "line": 251, + "line": 250, "column": 35 } } @@ -81925,15 +81192,15 @@ "binop": null, "updateContext": null }, - "start": 13958, - "end": 13959, + "start": 13798, + "end": 13799, "loc": { "start": { - "line": 251, + "line": 250, "column": 35 }, "end": { - "line": 251, + "line": 250, "column": 36 } } @@ -81951,15 +81218,15 @@ "binop": null }, "value": "eachTextureSetTexturesIndex", - "start": 13959, - "end": 13986, + "start": 13799, + "end": 13826, "loc": { "start": { - "line": 251, + "line": 250, "column": 36 }, "end": { - "line": 251, + "line": 250, "column": 63 } } @@ -81977,15 +81244,15 @@ "binop": null }, "value": "++", - "start": 13986, - "end": 13988, + "start": 13826, + "end": 13828, "loc": { "start": { - "line": 251, + "line": 250, "column": 63 }, "end": { - "line": 251, + "line": 250, "column": 65 } } @@ -82003,15 +81270,15 @@ "binop": null, "updateContext": null }, - "start": 13988, - "end": 13989, + "start": 13828, + "end": 13829, "loc": { "start": { - "line": 251, + "line": 250, "column": 65 }, "end": { - "line": 251, + "line": 250, "column": 66 } } @@ -82030,15 +81297,15 @@ "updateContext": null }, "value": "=", - "start": 13990, - "end": 13991, + "start": 13830, + "end": 13831, "loc": { "start": { - "line": 251, + "line": 250, "column": 67 }, "end": { - "line": 251, + "line": 250, "column": 68 } } @@ -82056,15 +81323,15 @@ "binop": null }, "value": "textureSet", - "start": 13992, - "end": 14002, + "start": 13832, + "end": 13842, "loc": { "start": { - "line": 251, + "line": 250, "column": 69 }, "end": { - "line": 251, + "line": 250, "column": 79 } } @@ -82082,15 +81349,15 @@ "binop": null, "updateContext": null }, - "start": 14002, - "end": 14003, + "start": 13842, + "end": 13843, "loc": { "start": { - "line": 251, + "line": 250, "column": 79 }, "end": { - "line": 251, + "line": 250, "column": 80 } } @@ -82107,17 +81374,17 @@ "postfix": false, "binop": null }, - "value": "occlusionTexture", - "start": 14003, - "end": 14019, + "value": "emissiveTexture", + "start": 13843, + "end": 13858, "loc": { "start": { - "line": 251, + "line": 250, "column": 80 }, "end": { - "line": 251, - "column": 96 + "line": 250, + "column": 95 } } }, @@ -82134,16 +81401,16 @@ "binop": null, "updateContext": null }, - "start": 14020, - "end": 14021, + "start": 13859, + "end": 13860, "loc": { "start": { - "line": 251, - "column": 97 + "line": 250, + "column": 96 }, "end": { - "line": 251, - "column": 98 + "line": 250, + "column": 97 } } }, @@ -82160,16 +81427,16 @@ "binop": null }, "value": "textureSet", - "start": 14022, - "end": 14032, + "start": 13861, + "end": 13871, "loc": { "start": { - "line": 251, - "column": 99 + "line": 250, + "column": 98 }, "end": { - "line": 251, - "column": 109 + "line": 250, + "column": 108 } } }, @@ -82186,16 +81453,16 @@ "binop": null, "updateContext": null }, - "start": 14032, - "end": 14033, + "start": 13871, + "end": 13872, "loc": { "start": { - "line": 251, - "column": 109 + "line": 250, + "column": 108 }, "end": { - "line": 251, - "column": 110 + "line": 250, + "column": 109 } } }, @@ -82211,17 +81478,17 @@ "postfix": false, "binop": null }, - "value": "occlusionTexture", - "start": 14033, - "end": 14049, + "value": "emissiveTexture", + "start": 13872, + "end": 13887, "loc": { "start": { - "line": 251, - "column": 110 + "line": 250, + "column": 109 }, "end": { - "line": 251, - "column": 126 + "line": 250, + "column": 124 } } }, @@ -82238,16 +81505,16 @@ "binop": null, "updateContext": null }, - "start": 14049, - "end": 14050, + "start": 13887, + "end": 13888, "loc": { "start": { - "line": 251, - "column": 126 + "line": 250, + "column": 124 }, "end": { - "line": 251, - "column": 127 + "line": 250, + "column": 125 } } }, @@ -82264,16 +81531,16 @@ "binop": null }, "value": "textureIndex", - "start": 14050, - "end": 14062, + "start": 13888, + "end": 13900, "loc": { "start": { - "line": 251, - "column": 127 + "line": 250, + "column": 125 }, "end": { - "line": 251, - "column": 139 + "line": 250, + "column": 137 } } }, @@ -82290,16 +81557,16 @@ "binop": null, "updateContext": null }, - "start": 14063, - "end": 14064, + "start": 13901, + "end": 13902, "loc": { "start": { - "line": 251, - "column": 140 + "line": 250, + "column": 138 }, "end": { - "line": 251, - "column": 141 + "line": 250, + "column": 139 } } }, @@ -82317,16 +81584,16 @@ "updateContext": null }, "value": "-", - "start": 14065, - "end": 14066, + "start": 13903, + "end": 13904, "loc": { "start": { - "line": 251, - "column": 142 + "line": 250, + "column": 140 }, "end": { - "line": 251, - "column": 143 + "line": 250, + "column": 141 } } }, @@ -82344,16 +81611,16 @@ "updateContext": null }, "value": 1, - "start": 14066, - "end": 14067, + "start": 13904, + "end": 13905, "loc": { "start": { - "line": 251, - "column": 143 + "line": 250, + "column": 141 }, "end": { - "line": 251, - "column": 144 + "line": 250, + "column": 142 } } }, @@ -82370,108 +81637,39 @@ "binop": null, "updateContext": null }, - "start": 14067, - "end": 14068, - "loc": { - "start": { - "line": 251, - "column": 144 - }, - "end": { - "line": 251, - "column": 145 - } - } - }, - { - "type": "CommentLine", - "value": " Occlusion map", - "start": 14069, - "end": 14085, - "loc": { - "start": { - "line": 251, - "column": 146 - }, - "end": { - "line": 251, - "column": 162 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 14090, - "end": 14091, + "start": 13905, + "end": 13906, "loc": { "start": { - "line": 252, - "column": 4 + "line": 250, + "column": 142 }, "end": { - "line": 252, - "column": 5 + "line": 250, + "column": 143 } } }, { "type": "CommentLine", - "value": " Meshes", - "start": 14097, - "end": 14106, + "value": " Emissive map", + "start": 13907, + "end": 13922, "loc": { "start": { - "line": 254, - "column": 4 + "line": 250, + "column": 144 }, "end": { - "line": 254, - "column": 13 + "line": 250, + "column": 159 } } }, { "type": { - "label": "for", - "keyword": "for", + "label": "name", "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": true, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "for", - "start": 14112, - "end": 14115, - "loc": { - "start": { - "line": 256, - "column": 4 - }, - "end": { - "line": 256, - "column": 7 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -82480,23 +81678,23 @@ "postfix": false, "binop": null }, - "start": 14116, - "end": 14117, + "value": "data", + "start": 13931, + "end": 13935, "loc": { "start": { - "line": 256, + "line": 251, "column": 8 }, "end": { - "line": 256, - "column": 9 + "line": 251, + "column": 12 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -82507,17 +81705,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 14117, - "end": 14120, + "start": 13935, + "end": 13936, "loc": { "start": { - "line": 256, - "column": 9 + "line": 251, + "column": 12 }, "end": { - "line": 256, - "column": 12 + "line": 251, + "column": 13 } } }, @@ -82533,51 +81730,24 @@ "postfix": false, "binop": null }, - "value": "meshIndex", - "start": 14121, - "end": 14130, + "value": "eachTextureSetTextures", + "start": 13936, + "end": 13958, "loc": { "start": { - "line": 256, + "line": 251, "column": 13 }, "end": { - "line": 256, - "column": 22 + "line": 251, + "column": 35 } } }, { "type": { - "label": "=", + "label": "[", "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 14131, - "end": 14132, - "loc": { - "start": { - "line": 256, - "column": 23 - }, - "end": { - "line": 256, - "column": 24 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -82587,43 +81757,16 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 14133, - "end": 14134, - "loc": { - "start": { - "line": 256, - "column": 25 - }, - "end": { - "line": 256, - "column": 26 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 14134, - "end": 14135, + "start": 13958, + "end": 13959, "loc": { "start": { - "line": 256, - "column": 26 + "line": 251, + "column": 35 }, "end": { - "line": 256, - "column": 27 + "line": 251, + "column": 36 } } }, @@ -82639,158 +81782,51 @@ "postfix": false, "binop": null }, - "value": "matricesIndex", - "start": 14136, - "end": 14149, - "loc": { - "start": { - "line": 256, - "column": 28 - }, - "end": { - "line": 256, - "column": 41 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 14150, - "end": 14151, - "loc": { - "start": { - "line": 256, - "column": 42 - }, - "end": { - "line": 256, - "column": 43 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": 0, - "start": 14152, - "end": 14153, - "loc": { - "start": { - "line": 256, - "column": 44 - }, - "end": { - "line": 256, - "column": 45 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 14153, - "end": 14154, + "value": "eachTextureSetTexturesIndex", + "start": 13959, + "end": 13986, "loc": { "start": { - "line": 256, - "column": 45 + "line": 251, + "column": 36 }, "end": { - "line": 256, - "column": 46 + "line": 251, + "column": 63 } } }, { "type": { - "label": "name", + "label": "++/--", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "value": "eachMeshMaterialAttributesIndex", - "start": 14155, - "end": 14186, - "loc": { - "start": { - "line": 256, - "column": 47 - }, - "end": { - "line": 256, - "column": 78 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 14187, - "end": 14188, + "value": "++", + "start": 13986, + "end": 13988, "loc": { "start": { - "line": 256, - "column": 79 + "line": 251, + "column": 63 }, "end": { - "line": 256, - "column": 80 + "line": 251, + "column": 65 } } }, { "type": { - "label": "num", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -82798,44 +81834,44 @@ "postfix": false, "binop": null, "updateContext": null - }, - "value": 0, - "start": 14189, - "end": 14190, + }, + "start": 13988, + "end": 13989, "loc": { "start": { - "line": 256, - "column": 81 + "line": 251, + "column": 65 }, "end": { - "line": 256, - "column": 82 + "line": 251, + "column": 66 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 14190, - "end": 14191, + "value": "=", + "start": 13990, + "end": 13991, "loc": { "start": { - "line": 256, - "column": 82 + "line": 251, + "column": 67 }, "end": { - "line": 256, - "column": 83 + "line": 251, + "column": 68 } } }, @@ -82851,44 +81887,43 @@ "postfix": false, "binop": null }, - "value": "meshIndex", - "start": 14192, - "end": 14201, + "value": "textureSet", + "start": 13992, + "end": 14002, "loc": { "start": { - "line": 256, - "column": 84 + "line": 251, + "column": 69 }, "end": { - "line": 256, - "column": 93 + "line": 251, + "column": 79 } } }, { "type": { - "label": "", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<", - "start": 14202, - "end": 14203, + "start": 14002, + "end": 14003, "loc": { "start": { - "line": 256, - "column": 94 + "line": 251, + "column": 79 }, "end": { - "line": 256, - "column": 95 + "line": 251, + "column": 80 } } }, @@ -82904,23 +81939,23 @@ "postfix": false, "binop": null }, - "value": "numMeshes", - "start": 14204, - "end": 14213, + "value": "occlusionTexture", + "start": 14003, + "end": 14019, "loc": { "start": { - "line": 256, - "column": 96 + "line": 251, + "column": 80 }, "end": { - "line": 256, - "column": 105 + "line": 251, + "column": 96 } } }, { "type": { - "label": ";", + "label": "?", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -82931,16 +81966,16 @@ "binop": null, "updateContext": null }, - "start": 14213, - "end": 14214, + "start": 14020, + "end": 14021, "loc": { "start": { - "line": 256, - "column": 105 + "line": 251, + "column": 97 }, "end": { - "line": 256, - "column": 106 + "line": 251, + "column": 98 } } }, @@ -82956,49 +81991,23 @@ "postfix": false, "binop": null }, - "value": "meshIndex", - "start": 14215, - "end": 14224, - "loc": { - "start": { - "line": 256, - "column": 107 - }, - "end": { - "line": 256, - "column": 116 - } - } - }, - { - "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null - }, - "value": "++", - "start": 14224, - "end": 14226, + "value": "textureSet", + "start": 14022, + "end": 14032, "loc": { "start": { - "line": 256, - "column": 116 + "line": 251, + "column": 99 }, "end": { - "line": 256, - "column": 118 + "line": 251, + "column": 109 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -83006,25 +82015,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14226, - "end": 14227, + "start": 14032, + "end": 14033, "loc": { "start": { - "line": 256, - "column": 118 + "line": 251, + "column": 109 }, "end": { - "line": 256, - "column": 119 + "line": 251, + "column": 110 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -83033,23 +82043,23 @@ "postfix": false, "binop": null }, - "start": 14228, - "end": 14229, + "value": "occlusionTexture", + "start": 14033, + "end": 14049, "loc": { "start": { - "line": 256, - "column": 120 + "line": 251, + "column": 110 }, "end": { - "line": 256, - "column": 121 + "line": 251, + "column": 126 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -83060,17 +82070,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 14238, - "end": 14243, + "start": 14049, + "end": 14050, "loc": { "start": { - "line": 257, - "column": 8 + "line": 251, + "column": 126 }, "end": { - "line": 257, - "column": 13 + "line": 251, + "column": 127 } } }, @@ -83086,77 +82095,77 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 14244, - "end": 14248, + "value": "textureIndex", + "start": 14050, + "end": 14062, "loc": { "start": { - "line": 257, - "column": 14 + "line": 251, + "column": 127 }, "end": { - "line": 257, - "column": 18 + "line": 251, + "column": 139 } } }, { "type": { - "label": "=", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14249, - "end": 14250, + "start": 14063, + "end": 14064, "loc": { "start": { - "line": 257, - "column": 19 + "line": 251, + "column": 140 }, "end": { - "line": 257, - "column": 20 + "line": 251, + "column": 141 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "+/-", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null + "binop": 9, + "updateContext": null }, - "value": "meshesList", - "start": 14251, - "end": 14261, + "value": "-", + "start": 14065, + "end": 14066, "loc": { "start": { - "line": 257, - "column": 21 + "line": 251, + "column": 142 }, "end": { - "line": 257, - "column": 31 + "line": 251, + "column": 143 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "num", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -83166,48 +82175,65 @@ "binop": null, "updateContext": null }, - "start": 14262, - "end": 14263, + "value": 1, + "start": 14066, + "end": 14067, "loc": { "start": { - "line": 257, - "column": 32 + "line": 251, + "column": 143 }, "end": { - "line": 257, - "column": 33 + "line": 251, + "column": 144 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "meshIndex", - "start": 14263, - "end": 14272, + "start": 14067, + "end": 14068, "loc": { "start": { - "line": 257, - "column": 33 + "line": 251, + "column": 144 }, "end": { - "line": 257, - "column": 42 + "line": 251, + "column": 145 + } + } + }, + { + "type": "CommentLine", + "value": " Occlusion map", + "start": 14069, + "end": 14085, + "loc": { + "start": { + "line": 251, + "column": 146 + }, + "end": { + "line": 251, + "column": 162 } } }, { "type": { - "label": "]", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -83215,52 +82241,41 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14272, - "end": 14273, + "start": 14090, + "end": 14091, "loc": { "start": { - "line": 257, - "column": 42 + "line": 252, + "column": 4 }, "end": { - "line": 257, - "column": 43 + "line": 252, + "column": 5 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 14273, - "end": 14274, + "type": "CommentLine", + "value": " Tiles -> Entities -> Meshes", + "start": 14097, + "end": 14127, "loc": { "start": { - "line": 257, - "column": 43 + "line": 254, + "column": 4 }, "end": { - "line": 257, - "column": 44 + "line": 254, + "column": 34 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -83271,24 +82286,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 14283, - "end": 14285, + "value": "let", + "start": 14133, + "end": 14136, "loc": { "start": { - "line": 258, - "column": 8 + "line": 256, + "column": 4 }, "end": { - "line": 258, - "column": 10 + "line": 256, + "column": 7 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -83297,50 +82312,52 @@ "postfix": false, "binop": null }, - "start": 14286, - "end": 14287, + "value": "entityIndex", + "start": 14137, + "end": 14148, "loc": { "start": { - "line": 258, - "column": 11 + "line": 256, + "column": 8 }, "end": { - "line": 258, - "column": 12 + "line": 256, + "column": 19 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "mesh", - "start": 14287, - "end": 14291, + "value": "=", + "start": 14149, + "end": 14150, "loc": { "start": { - "line": 258, - "column": 12 + "line": 256, + "column": 20 }, "end": { - "line": 258, - "column": 16 + "line": 256, + "column": 21 } } }, { "type": { - "label": ".", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -83349,48 +82366,50 @@ "binop": null, "updateContext": null }, - "start": 14291, - "end": 14292, + "value": 0, + "start": 14151, + "end": 14152, "loc": { "start": { - "line": 258, - "column": 16 + "line": 256, + "column": 22 }, "end": { - "line": 258, - "column": 17 + "line": 256, + "column": 23 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "geometry", - "start": 14292, - "end": 14300, + "start": 14152, + "end": 14153, "loc": { "start": { - "line": 258, - "column": 17 + "line": 256, + "column": 23 }, "end": { - "line": 258, - "column": 25 + "line": 256, + "column": 24 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -83401,16 +82420,17 @@ "binop": null, "updateContext": null }, - "start": 14300, - "end": 14301, + "value": "let", + "start": 14158, + "end": 14161, "loc": { "start": { - "line": 258, - "column": 25 + "line": 257, + "column": 4 }, "end": { - "line": 258, - "column": 26 + "line": 257, + "column": 7 } } }, @@ -83426,44 +82446,44 @@ "postfix": false, "binop": null }, - "value": "numInstances", - "start": 14301, - "end": 14313, + "value": "countEntityMeshesPortion", + "start": 14162, + "end": 14186, "loc": { "start": { - "line": 258, - "column": 26 + "line": 257, + "column": 8 }, "end": { - "line": 258, - "column": 38 + "line": 257, + "column": 32 } } }, { "type": { - "label": "", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": ">", - "start": 14314, - "end": 14315, + "value": "=", + "start": 14187, + "end": 14188, "loc": { "start": { - "line": 258, - "column": 39 + "line": 257, + "column": 33 }, "end": { - "line": 258, - "column": 40 + "line": 257, + "column": 34 } } }, @@ -83480,67 +82500,71 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 14316, - "end": 14317, + "value": 0, + "start": 14189, + "end": 14190, "loc": { "start": { - "line": 258, - "column": 41 + "line": 257, + "column": 35 }, "end": { - "line": 258, - "column": 42 + "line": 257, + "column": 36 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14317, - "end": 14318, + "start": 14190, + "end": 14191, "loc": { "start": { - "line": 258, - "column": 42 + "line": 257, + "column": 36 }, "end": { - "line": 258, - "column": 43 + "line": 257, + "column": 37 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "let", + "keyword": "let", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14319, - "end": 14320, + "value": "let", + "start": 14196, + "end": 14199, "loc": { "start": { "line": 258, - "column": 44 + "column": 4 }, "end": { "line": 258, - "column": 45 + "column": 7 } } }, @@ -83556,77 +82580,52 @@ "postfix": false, "binop": null }, - "value": "data", - "start": 14333, - "end": 14337, - "loc": { - "start": { - "line": 259, - "column": 12 - }, - "end": { - "line": 259, - "column": 16 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 14337, - "end": 14338, + "value": "eachMeshMaterialAttributesIndex", + "start": 14200, + "end": 14231, "loc": { "start": { - "line": 259, - "column": 16 + "line": 258, + "column": 8 }, "end": { - "line": 259, - "column": 17 + "line": 258, + "column": 39 } } }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "matrices", - "start": 14338, - "end": 14346, + "value": "=", + "start": 14232, + "end": 14233, "loc": { "start": { - "line": 259, - "column": 17 + "line": 258, + "column": 40 }, "end": { - "line": 259, - "column": 25 + "line": 258, + "column": 41 } } }, { "type": { - "label": ".", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -83635,67 +82634,71 @@ "binop": null, "updateContext": null }, - "start": 14346, - "end": 14347, + "value": 0, + "start": 14234, + "end": 14235, "loc": { "start": { - "line": 259, - "column": 25 + "line": 258, + "column": 42 }, "end": { - "line": 259, - "column": 26 + "line": 258, + "column": 43 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "set", - "start": 14347, - "end": 14350, + "start": 14235, + "end": 14236, "loc": { "start": { - "line": 259, - "column": 26 + "line": 258, + "column": 43 }, "end": { - "line": 259, - "column": 29 + "line": 258, + "column": 44 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "let", + "keyword": "let", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14350, - "end": 14351, + "value": "let", + "start": 14241, + "end": 14244, "loc": { "start": { "line": 259, - "column": 29 + "column": 4 }, "end": { "line": 259, - "column": 30 + "column": 7 } } }, @@ -83711,49 +82714,50 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 14351, - "end": 14355, + "value": "matricesIndex", + "start": 14245, + "end": 14258, "loc": { "start": { "line": 259, - "column": 30 + "column": 8 }, "end": { "line": 259, - "column": 34 + "column": 21 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 14355, - "end": 14356, + "value": "=", + "start": 14259, + "end": 14260, "loc": { "start": { "line": 259, - "column": 34 + "column": 22 }, "end": { "line": 259, - "column": 35 + "column": 23 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -83761,25 +82765,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "matrix", - "start": 14356, - "end": 14362, + "value": 0, + "start": 14261, + "end": 14262, "loc": { "start": { "line": 259, - "column": 35 + "column": 24 }, "end": { "line": 259, - "column": 41 + "column": 25 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -83790,50 +82795,52 @@ "binop": null, "updateContext": null }, - "start": 14362, - "end": 14363, + "start": 14262, + "end": 14263, "loc": { "start": { "line": 259, - "column": 41 + "column": 25 }, "end": { "line": 259, - "column": 42 + "column": 26 } } }, { "type": { - "label": "name", + "label": "let", + "keyword": "let", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "matricesIndex", - "start": 14364, - "end": 14377, + "value": "let", + "start": 14268, + "end": 14271, "loc": { "start": { - "line": 259, - "column": 43 + "line": 260, + "column": 4 }, "end": { - "line": 259, - "column": 56 + "line": 260, + "column": 7 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -83841,48 +82848,50 @@ "postfix": false, "binop": null }, - "start": 14377, - "end": 14378, + "value": "meshIndex", + "start": 14272, + "end": 14281, "loc": { "start": { - "line": 259, - "column": 56 + "line": 260, + "column": 8 }, "end": { - "line": 259, - "column": 57 + "line": 260, + "column": 17 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 14378, - "end": 14379, + "value": "=", + "start": 14281, + "end": 14282, "loc": { "start": { - "line": 259, - "column": 57 + "line": 260, + "column": 17 }, "end": { - "line": 259, - "column": 58 + "line": 260, + "column": 18 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -83890,26 +82899,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "data", - "start": 14392, - "end": 14396, + "value": 0, + "start": 14283, + "end": 14284, "loc": { "start": { "line": 260, - "column": 12 + "column": 19 }, "end": { "line": 260, - "column": 16 + "column": 20 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -83919,48 +82929,50 @@ "binop": null, "updateContext": null }, - "start": 14396, - "end": 14397, + "start": 14284, + "end": 14285, "loc": { "start": { "line": 260, - "column": 16 + "column": 20 }, "end": { "line": 260, - "column": 17 + "column": 21 } } }, { "type": { - "label": "name", + "label": "for", + "keyword": "for", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "eachMeshMatricesPortion", - "start": 14397, - "end": 14420, + "value": "for", + "start": 14291, + "end": 14294, "loc": { "start": { - "line": 260, - "column": 17 + "line": 262, + "column": 4 }, "end": { - "line": 260, - "column": 40 + "line": 262, + "column": 7 } } }, { "type": { - "label": "[", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -83968,71 +82980,72 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14421, - "end": 14422, + "start": 14295, + "end": 14296, "loc": { "start": { - "line": 260, - "column": 41 + "line": 262, + "column": 8 }, "end": { - "line": 260, - "column": 42 + "line": 262, + "column": 9 } } }, { "type": { - "label": "name", + "label": "let", + "keyword": "let", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "meshIndex", - "start": 14422, - "end": 14431, + "value": "let", + "start": 14296, + "end": 14299, "loc": { "start": { - "line": 260, - "column": 42 + "line": 262, + "column": 9 }, "end": { - "line": 260, - "column": 51 + "line": 262, + "column": 12 } } }, { "type": { - "label": "]", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14431, - "end": 14432, + "value": "tileIndex", + "start": 14300, + "end": 14309, "loc": { "start": { - "line": 260, - "column": 51 + "line": 262, + "column": 13 }, "end": { - "line": 260, - "column": 52 + "line": 262, + "column": 22 } } }, @@ -84050,22 +83063,22 @@ "updateContext": null }, "value": "=", - "start": 14433, - "end": 14434, + "start": 14310, + "end": 14311, "loc": { "start": { - "line": 260, - "column": 53 + "line": 262, + "column": 23 }, "end": { - "line": 260, - "column": 54 + "line": 262, + "column": 24 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -84073,19 +83086,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "matricesIndex", - "start": 14435, - "end": 14448, + "value": 0, + "start": 14312, + "end": 14313, "loc": { "start": { - "line": 260, - "column": 55 + "line": 262, + "column": 25 }, "end": { - "line": 260, - "column": 68 + "line": 262, + "column": 26 } } }, @@ -84102,16 +83116,16 @@ "binop": null, "updateContext": null }, - "start": 14448, - "end": 14449, + "start": 14313, + "end": 14314, "loc": { "start": { - "line": 260, - "column": 68 + "line": 262, + "column": 26 }, "end": { - "line": 260, - "column": 69 + "line": 262, + "column": 27 } } }, @@ -84127,50 +83141,50 @@ "postfix": false, "binop": null }, - "value": "matricesIndex", - "start": 14462, - "end": 14475, + "value": "tileIndex", + "start": 14315, + "end": 14324, "loc": { "start": { - "line": 261, - "column": 12 + "line": 262, + "column": 28 }, "end": { - "line": 261, - "column": 25 + "line": 262, + "column": 37 } } }, { "type": { - "label": "_=", + "label": "", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "value": "+=", - "start": 14476, - "end": 14478, + "value": "<", + "start": 14325, + "end": 14326, "loc": { "start": { - "line": 261, - "column": 26 + "line": 262, + "column": 38 }, "end": { - "line": 261, - "column": 28 + "line": 262, + "column": 39 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -84178,20 +83192,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 16, - "start": 14479, - "end": 14481, + "value": "numTiles", + "start": 14327, + "end": 14335, "loc": { "start": { - "line": 261, - "column": 29 + "line": 262, + "column": 40 }, "end": { - "line": 261, - "column": 31 + "line": 262, + "column": 48 } } }, @@ -84208,24 +83221,24 @@ "binop": null, "updateContext": null }, - "start": 14481, - "end": 14482, + "start": 14335, + "end": 14336, "loc": { "start": { - "line": 261, - "column": 31 + "line": 262, + "column": 48 }, "end": { - "line": 261, - "column": 32 + "line": 262, + "column": 49 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -84233,48 +83246,49 @@ "postfix": false, "binop": null }, - "start": 14491, - "end": 14492, + "value": "tileIndex", + "start": 14337, + "end": 14346, "loc": { "start": { "line": 262, - "column": 8 + "column": 50 }, "end": { "line": 262, - "column": 9 + "column": 59 } } }, { "type": { - "label": "name", + "label": "++/--", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "value": "data", - "start": 14501, - "end": 14505, + "value": "++", + "start": 14346, + "end": 14348, "loc": { "start": { - "line": 263, - "column": 8 + "line": 262, + "column": 59 }, "end": { - "line": 263, - "column": 12 + "line": 262, + "column": 61 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -84282,26 +83296,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14505, - "end": 14506, + "start": 14348, + "end": 14349, "loc": { "start": { - "line": 263, - "column": 12 + "line": 262, + "column": 61 }, "end": { - "line": 263, - "column": 13 + "line": 262, + "column": 62 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -84310,25 +83323,25 @@ "postfix": false, "binop": null }, - "value": "eachMeshTextureSet", - "start": 14506, - "end": 14524, + "start": 14350, + "end": 14351, "loc": { "start": { - "line": 263, - "column": 13 + "line": 262, + "column": 63 }, "end": { - "line": 263, - "column": 31 + "line": 262, + "column": 64 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -84337,16 +83350,17 @@ "binop": null, "updateContext": null }, - "start": 14524, - "end": 14525, + "value": "const", + "start": 14361, + "end": 14366, "loc": { "start": { - "line": 263, - "column": 31 + "line": 264, + "column": 8 }, "end": { - "line": 263, - "column": 32 + "line": 264, + "column": 13 } } }, @@ -84362,43 +83376,17 @@ "postfix": false, "binop": null }, - "value": "meshIndex", - "start": 14525, - "end": 14534, - "loc": { - "start": { - "line": 263, - "column": 32 - }, - "end": { - "line": 263, - "column": 41 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 14534, - "end": 14535, + "value": "tile", + "start": 14367, + "end": 14371, "loc": { "start": { - "line": 263, - "column": 41 + "line": 264, + "column": 14 }, "end": { - "line": 263, - "column": 42 + "line": 264, + "column": 18 } } }, @@ -84416,16 +83404,16 @@ "updateContext": null }, "value": "=", - "start": 14536, - "end": 14537, + "start": 14372, + "end": 14373, "loc": { "start": { - "line": 263, - "column": 43 + "line": 264, + "column": 19 }, "end": { - "line": 263, - "column": 44 + "line": 264, + "column": 20 } } }, @@ -84441,25 +83429,25 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 14538, - "end": 14542, + "value": "tilesList", + "start": 14374, + "end": 14383, "loc": { "start": { - "line": 263, - "column": 45 + "line": 264, + "column": 21 }, "end": { - "line": 263, - "column": 49 + "line": 264, + "column": 30 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -84468,16 +83456,16 @@ "binop": null, "updateContext": null }, - "start": 14542, - "end": 14543, + "start": 14384, + "end": 14385, "loc": { "start": { - "line": 263, - "column": 49 + "line": 264, + "column": 31 }, "end": { - "line": 263, - "column": 50 + "line": 264, + "column": 32 } } }, @@ -84493,24 +83481,24 @@ "postfix": false, "binop": null }, - "value": "textureSet", - "start": 14543, - "end": 14553, + "value": "tileIndex", + "start": 14385, + "end": 14394, "loc": { "start": { - "line": 263, - "column": 50 + "line": 264, + "column": 32 }, "end": { - "line": 263, - "column": 60 + "line": 264, + "column": 41 } } }, { "type": { - "label": "?", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -84520,48 +83508,49 @@ "binop": null, "updateContext": null }, - "start": 14554, - "end": 14555, + "start": 14394, + "end": 14395, "loc": { "start": { - "line": 263, - "column": 61 + "line": 264, + "column": 41 }, "end": { - "line": 263, - "column": 62 + "line": 264, + "column": 42 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "mesh", - "start": 14556, - "end": 14560, + "start": 14395, + "end": 14396, "loc": { "start": { - "line": 263, - "column": 63 + "line": 264, + "column": 42 }, "end": { - "line": 263, - "column": 67 + "line": 264, + "column": 43 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -84572,16 +83561,17 @@ "binop": null, "updateContext": null }, - "start": 14560, - "end": 14561, + "value": "const", + "start": 14405, + "end": 14410, "loc": { "start": { - "line": 263, - "column": 67 + "line": 265, + "column": 8 }, "end": { - "line": 263, - "column": 68 + "line": 265, + "column": 13 } } }, @@ -84597,43 +83587,44 @@ "postfix": false, "binop": null }, - "value": "textureSet", - "start": 14561, - "end": 14571, + "value": "tileEntities", + "start": 14411, + "end": 14423, "loc": { "start": { - "line": 263, - "column": 68 + "line": 265, + "column": 14 }, "end": { - "line": 263, - "column": 78 + "line": 265, + "column": 26 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 14571, - "end": 14572, + "value": "=", + "start": 14424, + "end": 14425, "loc": { "start": { - "line": 263, - "column": 78 + "line": 265, + "column": 27 }, "end": { - "line": 263, - "column": 79 + "line": 265, + "column": 28 } } }, @@ -84649,24 +83640,24 @@ "postfix": false, "binop": null }, - "value": "textureSetIndex", - "start": 14572, - "end": 14587, + "value": "tile", + "start": 14426, + "end": 14430, "loc": { "start": { - "line": 263, - "column": 79 + "line": 265, + "column": 29 }, "end": { - "line": 263, - "column": 94 + "line": 265, + "column": 33 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -84676,51 +83667,50 @@ "binop": null, "updateContext": null }, - "start": 14588, - "end": 14589, + "start": 14430, + "end": 14431, "loc": { "start": { - "line": 263, - "column": 95 + "line": 265, + "column": 33 }, "end": { - "line": 263, - "column": 96 + "line": 265, + "column": 34 } } }, { "type": { - "label": "+/-", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, - "updateContext": null + "binop": null }, - "value": "-", - "start": 14590, - "end": 14591, + "value": "entities", + "start": 14431, + "end": 14439, "loc": { "start": { - "line": 263, - "column": 97 + "line": 265, + "column": 34 }, "end": { - "line": 263, - "column": 98 + "line": 265, + "column": 42 } } }, { "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -84729,24 +83719,24 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 14591, - "end": 14592, + "start": 14439, + "end": 14440, "loc": { "start": { - "line": 263, - "column": 98 + "line": 265, + "column": 42 }, "end": { - "line": 263, - "column": 99 + "line": 265, + "column": 43 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -84756,16 +83746,17 @@ "binop": null, "updateContext": null }, - "start": 14592, - "end": 14593, + "value": "const", + "start": 14449, + "end": 14454, "loc": { "start": { - "line": 263, - "column": 99 + "line": 266, + "column": 8 }, "end": { - "line": 263, - "column": 100 + "line": 266, + "column": 13 } } }, @@ -84781,43 +83772,44 @@ "postfix": false, "binop": null }, - "value": "data", - "start": 14602, - "end": 14606, + "value": "numTileEntities", + "start": 14455, + "end": 14470, "loc": { "start": { - "line": 264, - "column": 8 + "line": 266, + "column": 14 }, "end": { - "line": 264, - "column": 12 + "line": 266, + "column": 29 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 14606, - "end": 14607, + "value": "=", + "start": 14471, + "end": 14472, "loc": { "start": { - "line": 264, - "column": 12 + "line": 266, + "column": 30 }, "end": { - "line": 264, - "column": 13 + "line": 266, + "column": 31 } } }, @@ -84833,25 +83825,25 @@ "postfix": false, "binop": null }, - "value": "eachMeshMaterialAttributes", - "start": 14607, - "end": 14633, + "value": "tileEntities", + "start": 14473, + "end": 14485, "loc": { "start": { - "line": 264, - "column": 13 + "line": 266, + "column": 32 }, "end": { - "line": 264, - "column": 39 + "line": 266, + "column": 44 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -84860,16 +83852,16 @@ "binop": null, "updateContext": null }, - "start": 14633, - "end": 14634, + "start": 14485, + "end": 14486, "loc": { "start": { - "line": 264, - "column": 39 + "line": 266, + "column": 44 }, "end": { - "line": 264, - "column": 40 + "line": 266, + "column": 45 } } }, @@ -84885,50 +83877,24 @@ "postfix": false, "binop": null }, - "value": "eachMeshMaterialAttributesIndex", - "start": 14634, - "end": 14665, - "loc": { - "start": { - "line": 264, - "column": 40 - }, - "end": { - "line": 264, - "column": 71 - } - } - }, - { - "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null - }, - "value": "++", - "start": 14665, - "end": 14667, + "value": "length", + "start": 14486, + "end": 14492, "loc": { "start": { - "line": 264, - "column": 71 + "line": 266, + "column": 45 }, "end": { - "line": 264, - "column": 73 + "line": 266, + "column": 51 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -84938,43 +83904,44 @@ "binop": null, "updateContext": null }, - "start": 14667, - "end": 14668, + "start": 14492, + "end": 14493, "loc": { "start": { - "line": 264, - "column": 73 + "line": 266, + "column": 51 }, "end": { - "line": 264, - "column": 74 + "line": 266, + "column": 52 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14669, - "end": 14670, + "value": "if", + "start": 14503, + "end": 14505, "loc": { "start": { - "line": 264, - "column": 75 + "line": 268, + "column": 8 }, "end": { - "line": 264, - "column": 76 + "line": 268, + "column": 10 } } }, @@ -84990,16 +83957,16 @@ "postfix": false, "binop": null }, - "start": 14671, - "end": 14672, + "start": 14506, + "end": 14507, "loc": { "start": { - "line": 264, - "column": 77 + "line": 268, + "column": 11 }, "end": { - "line": 264, - "column": 78 + "line": 268, + "column": 12 } } }, @@ -85015,49 +83982,50 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 14672, - "end": 14676, + "value": "numTileEntities", + "start": 14507, + "end": 14522, "loc": { "start": { - "line": 264, - "column": 78 + "line": 268, + "column": 12 }, "end": { - "line": 264, - "column": 82 + "line": 268, + "column": 27 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 14676, - "end": 14677, + "value": "===", + "start": 14523, + "end": 14526, "loc": { "start": { - "line": 264, - "column": 82 + "line": 268, + "column": 28 }, "end": { - "line": 264, - "column": 83 + "line": 268, + "column": 31 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -85065,78 +84033,77 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "color", - "start": 14677, - "end": 14682, + "value": 0, + "start": 14527, + "end": 14528, "loc": { "start": { - "line": 264, - "column": 83 + "line": 268, + "column": 32 }, "end": { - "line": 264, - "column": 88 + "line": 268, + "column": 33 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14682, - "end": 14683, + "start": 14528, + "end": 14529, "loc": { "start": { - "line": 264, - "column": 88 + "line": 268, + "column": 33 }, "end": { - "line": 264, - "column": 89 + "line": 268, + "column": 34 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 14683, - "end": 14684, + "start": 14530, + "end": 14531, "loc": { "start": { - "line": 264, - "column": 89 + "line": 268, + "column": 35 }, "end": { - "line": 264, - "column": 90 + "line": 268, + "column": 36 } } }, { "type": { - "label": "]", + "label": "continue", + "keyword": "continue", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -85147,22 +84114,23 @@ "binop": null, "updateContext": null }, - "start": 14684, - "end": 14685, + "value": "continue", + "start": 14544, + "end": 14552, "loc": { "start": { - "line": 264, - "column": 90 + "line": 269, + "column": 12 }, "end": { - "line": 264, - "column": 91 + "line": 269, + "column": 20 } } }, { "type": { - "label": "*", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -85170,55 +84138,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, + "binop": null, "updateContext": null }, - "value": "*", - "start": 14686, - "end": 14687, + "start": 14552, + "end": 14553, "loc": { "start": { - "line": 264, - "column": 92 + "line": 269, + "column": 20 }, "end": { - "line": 264, - "column": 93 + "line": 269, + "column": 21 } } }, { "type": { - "label": "num", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 255, - "start": 14688, - "end": 14691, + "start": 14562, + "end": 14563, "loc": { "start": { - "line": 264, - "column": 94 + "line": 270, + "column": 8 }, "end": { - "line": 264, - "column": 97 + "line": 270, + "column": 9 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -85226,23 +84191,24 @@ "postfix": false, "binop": null }, - "start": 14691, - "end": 14692, + "value": "data", + "start": 14573, + "end": 14577, "loc": { "start": { - "line": 264, - "column": 97 + "line": 272, + "column": 8 }, "end": { - "line": 264, - "column": 98 + "line": 272, + "column": 12 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -85252,32 +84218,16 @@ "binop": null, "updateContext": null }, - "start": 14692, - "end": 14693, - "loc": { - "start": { - "line": 264, - "column": 98 - }, - "end": { - "line": 264, - "column": 99 - } - } - }, - { - "type": "CommentLine", - "value": " Color RGB", - "start": 14694, - "end": 14706, + "start": 14577, + "end": 14578, "loc": { "start": { - "line": 264, - "column": 100 + "line": 272, + "column": 12 }, "end": { - "line": 264, - "column": 112 + "line": 272, + "column": 13 } } }, @@ -85293,25 +84243,25 @@ "postfix": false, "binop": null }, - "value": "data", - "start": 14715, - "end": 14719, + "value": "eachTileEntitiesPortion", + "start": 14578, + "end": 14601, "loc": { "start": { - "line": 265, - "column": 8 + "line": 272, + "column": 13 }, "end": { - "line": 265, - "column": 12 + "line": 272, + "column": 36 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -85320,16 +84270,16 @@ "binop": null, "updateContext": null }, - "start": 14719, - "end": 14720, + "start": 14601, + "end": 14602, "loc": { "start": { - "line": 265, - "column": 12 + "line": 272, + "column": 36 }, "end": { - "line": 265, - "column": 13 + "line": 272, + "column": 37 } } }, @@ -85345,25 +84295,25 @@ "postfix": false, "binop": null }, - "value": "eachMeshMaterialAttributes", - "start": 14720, - "end": 14746, + "value": "tileIndex", + "start": 14602, + "end": 14611, "loc": { "start": { - "line": 265, - "column": 13 + "line": 272, + "column": 37 }, "end": { - "line": 265, - "column": 39 + "line": 272, + "column": 46 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": "]", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -85372,75 +84322,76 @@ "binop": null, "updateContext": null }, - "start": 14746, - "end": 14747, + "start": 14611, + "end": 14612, "loc": { "start": { - "line": 265, - "column": 39 + "line": 272, + "column": 46 }, "end": { - "line": 265, - "column": 40 + "line": 272, + "column": 47 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "eachMeshMaterialAttributesIndex", - "start": 14747, - "end": 14778, + "value": "=", + "start": 14613, + "end": 14614, "loc": { "start": { - "line": 265, - "column": 40 + "line": 272, + "column": 48 }, "end": { - "line": 265, - "column": 71 + "line": 272, + "column": 49 } } }, { "type": { - "label": "++/--", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 14778, - "end": 14780, + "value": "entityIndex", + "start": 14615, + "end": 14626, "loc": { "start": { - "line": 265, - "column": 71 + "line": 272, + "column": 50 }, "end": { - "line": 265, - "column": 73 + "line": 272, + "column": 61 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -85450,50 +84401,51 @@ "binop": null, "updateContext": null }, - "start": 14780, - "end": 14781, + "start": 14626, + "end": 14627, "loc": { "start": { - "line": 265, - "column": 73 + "line": 272, + "column": 61 }, "end": { - "line": 265, - "column": 74 + "line": 272, + "column": 62 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14782, - "end": 14783, + "value": "const", + "start": 14637, + "end": 14642, "loc": { "start": { - "line": 265, - "column": 75 + "line": 274, + "column": 8 }, "end": { - "line": 265, - "column": 76 + "line": 274, + "column": 13 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -85502,16 +84454,44 @@ "postfix": false, "binop": null }, - "start": 14784, - "end": 14785, + "value": "tileAABB", + "start": 14643, + "end": 14651, "loc": { "start": { - "line": 265, - "column": 77 + "line": 274, + "column": 14 }, "end": { - "line": 265, - "column": 78 + "line": 274, + "column": 22 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 14652, + "end": 14653, + "loc": { + "start": { + "line": 274, + "column": 23 + }, + "end": { + "line": 274, + "column": 24 } } }, @@ -85527,17 +84507,17 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 14785, - "end": 14789, + "value": "tile", + "start": 14654, + "end": 14658, "loc": { "start": { - "line": 265, - "column": 78 + "line": 274, + "column": 25 }, "end": { - "line": 265, - "column": 82 + "line": 274, + "column": 29 } } }, @@ -85554,16 +84534,16 @@ "binop": null, "updateContext": null }, - "start": 14789, - "end": 14790, + "start": 14658, + "end": 14659, "loc": { "start": { - "line": 265, - "column": 82 + "line": 274, + "column": 29 }, "end": { - "line": 265, - "column": 83 + "line": 274, + "column": 30 } } }, @@ -85579,25 +84559,25 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 14790, - "end": 14795, + "value": "aabb", + "start": 14659, + "end": 14663, "loc": { "start": { - "line": 265, - "column": 83 + "line": 274, + "column": 30 }, "end": { - "line": 265, - "column": 88 + "line": 274, + "column": 34 } } }, { "type": { - "label": "[", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -85606,102 +84586,103 @@ "binop": null, "updateContext": null }, - "start": 14795, - "end": 14796, + "start": 14663, + "end": 14664, "loc": { "start": { - "line": 265, - "column": 88 + "line": 274, + "column": 34 }, "end": { - "line": 265, - "column": 89 + "line": 274, + "column": 35 } } }, { "type": { - "label": "num", + "label": "for", + "keyword": "for", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": 1, - "start": 14796, - "end": 14797, + "value": "for", + "start": 14674, + "end": 14677, "loc": { "start": { - "line": 265, - "column": 89 + "line": 276, + "column": 8 }, "end": { - "line": 265, - "column": 90 + "line": 276, + "column": 11 } } }, { "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14797, - "end": 14798, + "start": 14678, + "end": 14679, "loc": { "start": { - "line": 265, - "column": 90 + "line": 276, + "column": 12 }, "end": { - "line": 265, - "column": 91 + "line": 276, + "column": 13 } } }, { "type": { - "label": "*", - "beforeExpr": true, + "label": "let", + "keyword": "let", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, + "binop": null, "updateContext": null }, - "value": "*", - "start": 14799, - "end": 14800, + "value": "let", + "start": 14679, + "end": 14682, "loc": { "start": { - "line": 265, - "column": 92 + "line": 276, + "column": 13 }, "end": { - "line": 265, - "column": 93 + "line": 276, + "column": 16 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -85709,45 +84690,73 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "j", + "start": 14683, + "end": 14684, + "loc": { + "start": { + "line": 276, + "column": 17 + }, + "end": { + "line": 276, + "column": 18 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": 255, - "start": 14801, - "end": 14804, + "value": "=", + "start": 14685, + "end": 14686, "loc": { "start": { - "line": 265, - "column": 94 + "line": 276, + "column": 19 }, "end": { - "line": 265, - "column": 97 + "line": 276, + "column": 20 } } }, { "type": { - "label": ")", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14804, - "end": 14805, + "value": 0, + "start": 14687, + "end": 14688, "loc": { "start": { - "line": 265, - "column": 97 + "line": 276, + "column": 21 }, "end": { - "line": 265, - "column": 98 + "line": 276, + "column": 22 } } }, @@ -85764,16 +84773,16 @@ "binop": null, "updateContext": null }, - "start": 14805, - "end": 14806, + "start": 14688, + "end": 14689, "loc": { "start": { - "line": 265, - "column": 98 + "line": 276, + "column": 22 }, "end": { - "line": 265, - "column": 99 + "line": 276, + "column": 23 } } }, @@ -85789,43 +84798,44 @@ "postfix": false, "binop": null }, - "value": "data", - "start": 14815, - "end": 14819, + "value": "j", + "start": 14690, + "end": 14691, "loc": { "start": { - "line": 266, - "column": 8 + "line": 276, + "column": 24 }, "end": { - "line": 266, - "column": 12 + "line": 276, + "column": 25 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "start": 14819, - "end": 14820, + "value": "<", + "start": 14692, + "end": 14693, "loc": { "start": { - "line": 266, - "column": 12 + "line": 276, + "column": 26 }, "end": { - "line": 266, - "column": 13 + "line": 276, + "column": 27 } } }, @@ -85841,25 +84851,25 @@ "postfix": false, "binop": null }, - "value": "eachMeshMaterialAttributes", - "start": 14820, - "end": 14846, + "value": "numTileEntities", + "start": 14694, + "end": 14709, "loc": { "start": { - "line": 266, - "column": 13 + "line": 276, + "column": 28 }, "end": { - "line": 266, - "column": 39 + "line": 276, + "column": 43 } } }, { "type": { - "label": "[", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -85868,16 +84878,16 @@ "binop": null, "updateContext": null }, - "start": 14846, - "end": 14847, + "start": 14709, + "end": 14710, "loc": { "start": { - "line": 266, - "column": 39 + "line": 276, + "column": 43 }, "end": { - "line": 266, - "column": 40 + "line": 276, + "column": 44 } } }, @@ -85893,17 +84903,17 @@ "postfix": false, "binop": null }, - "value": "eachMeshMaterialAttributesIndex", - "start": 14847, - "end": 14878, + "value": "j", + "start": 14711, + "end": 14712, "loc": { "start": { - "line": 266, - "column": 40 + "line": 276, + "column": 45 }, "end": { - "line": 266, - "column": 71 + "line": 276, + "column": 46 } } }, @@ -85920,22 +84930,22 @@ "binop": null }, "value": "++", - "start": 14878, - "end": 14880, + "start": 14712, + "end": 14714, "loc": { "start": { - "line": 266, - "column": 71 + "line": 276, + "column": 46 }, "end": { - "line": 266, - "column": 73 + "line": 276, + "column": 48 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -85943,71 +84953,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14880, - "end": 14881, + "start": 14714, + "end": 14715, "loc": { "start": { - "line": 266, - "column": 73 + "line": 276, + "column": 48 }, "end": { - "line": 266, - "column": 74 + "line": 276, + "column": 49 } } }, { "type": { - "label": "=", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 14882, - "end": 14883, + "start": 14716, + "end": 14717, "loc": { "start": { - "line": 266, - "column": 75 + "line": 276, + "column": 50 }, "end": { - "line": 266, - "column": 76 + "line": 276, + "column": 51 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14884, - "end": 14885, + "value": "const", + "start": 14731, + "end": 14736, "loc": { "start": { - "line": 266, - "column": 77 + "line": 278, + "column": 12 }, "end": { - "line": 266, - "column": 78 + "line": 278, + "column": 17 } } }, @@ -86023,43 +85033,44 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 14885, - "end": 14889, + "value": "entity", + "start": 14737, + "end": 14743, "loc": { "start": { - "line": 266, - "column": 78 + "line": 278, + "column": 18 }, "end": { - "line": 266, - "column": 82 + "line": 278, + "column": 24 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 14889, - "end": 14890, + "value": "=", + "start": 14744, + "end": 14745, "loc": { "start": { - "line": 266, - "column": 82 + "line": 278, + "column": 25 }, "end": { - "line": 266, - "column": 83 + "line": 278, + "column": 26 } } }, @@ -86075,17 +85086,17 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 14890, - "end": 14895, + "value": "tileEntities", + "start": 14746, + "end": 14758, "loc": { "start": { - "line": 266, - "column": 83 + "line": 278, + "column": 27 }, "end": { - "line": 266, - "column": 88 + "line": 278, + "column": 39 } } }, @@ -86102,22 +85113,22 @@ "binop": null, "updateContext": null }, - "start": 14895, - "end": 14896, + "start": 14758, + "end": 14759, "loc": { "start": { - "line": 266, - "column": 88 + "line": 278, + "column": 39 }, "end": { - "line": 266, - "column": 89 + "line": 278, + "column": 40 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -86125,20 +85136,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 2, - "start": 14896, - "end": 14897, + "value": "j", + "start": 14759, + "end": 14760, "loc": { "start": { - "line": 266, - "column": 89 + "line": 278, + "column": 40 }, "end": { - "line": 266, - "column": 90 + "line": 278, + "column": 41 } } }, @@ -86155,22 +85165,22 @@ "binop": null, "updateContext": null }, - "start": 14897, - "end": 14898, + "start": 14760, + "end": 14761, "loc": { "start": { - "line": 266, - "column": 90 + "line": 278, + "column": 41 }, "end": { - "line": 266, - "column": 91 + "line": 278, + "column": 42 } } }, { "type": { - "label": "*", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -86178,28 +85188,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, + "binop": null, "updateContext": null }, - "value": "*", - "start": 14899, - "end": 14900, + "start": 14761, + "end": 14762, "loc": { "start": { - "line": 266, - "column": 92 + "line": 278, + "column": 42 }, "end": { - "line": 266, - "column": 93 + "line": 278, + "column": 43 } } }, { "type": { - "label": "num", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -86208,25 +85218,25 @@ "binop": null, "updateContext": null }, - "value": 255, - "start": 14901, - "end": 14904, + "value": "const", + "start": 14775, + "end": 14780, "loc": { "start": { - "line": 266, - "column": 94 + "line": 279, + "column": 12 }, "end": { - "line": 266, - "column": 97 + "line": 279, + "column": 17 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -86234,42 +85244,44 @@ "postfix": false, "binop": null }, - "start": 14904, - "end": 14905, + "value": "entityMeshes", + "start": 14781, + "end": 14793, "loc": { "start": { - "line": 266, - "column": 97 + "line": 279, + "column": 18 }, "end": { - "line": 266, - "column": 98 + "line": 279, + "column": 30 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 14905, - "end": 14906, + "value": "=", + "start": 14794, + "end": 14795, "loc": { "start": { - "line": 266, - "column": 98 + "line": 279, + "column": 31 }, "end": { - "line": 266, - "column": 99 + "line": 279, + "column": 32 } } }, @@ -86285,17 +85297,17 @@ "postfix": false, "binop": null }, - "value": "data", - "start": 14915, - "end": 14919, + "value": "entity", + "start": 14796, + "end": 14802, "loc": { "start": { - "line": 267, - "column": 8 + "line": 279, + "column": 33 }, "end": { - "line": 267, - "column": 12 + "line": 279, + "column": 39 } } }, @@ -86312,16 +85324,16 @@ "binop": null, "updateContext": null }, - "start": 14919, - "end": 14920, + "start": 14802, + "end": 14803, "loc": { "start": { - "line": 267, - "column": 12 + "line": 279, + "column": 39 }, "end": { - "line": 267, - "column": 13 + "line": 279, + "column": 40 } } }, @@ -86337,25 +85349,25 @@ "postfix": false, "binop": null }, - "value": "eachMeshMaterialAttributes", - "start": 14920, - "end": 14946, + "value": "meshes", + "start": 14803, + "end": 14809, "loc": { "start": { - "line": 267, - "column": 13 + "line": 279, + "column": 40 }, "end": { - "line": 267, - "column": 39 + "line": 279, + "column": 46 } } }, { "type": { - "label": "[", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -86364,16 +85376,44 @@ "binop": null, "updateContext": null }, - "start": 14946, - "end": 14947, + "start": 14809, + "end": 14810, "loc": { "start": { - "line": 267, - "column": 39 + "line": 279, + "column": 46 }, "end": { - "line": 267, - "column": 40 + "line": 279, + "column": 47 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 14823, + "end": 14828, + "loc": { + "start": { + "line": 280, + "column": 12 + }, + "end": { + "line": 280, + "column": 17 } } }, @@ -86389,49 +85429,76 @@ "postfix": false, "binop": null }, - "value": "eachMeshMaterialAttributesIndex", - "start": 14947, - "end": 14978, + "value": "numEntityMeshes", + "start": 14829, + "end": 14844, "loc": { "start": { - "line": 267, - "column": 40 + "line": 280, + "column": 18 }, "end": { - "line": 267, - "column": 71 + "line": 280, + "column": 33 } } }, { "type": { - "label": "++/--", + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 14845, + "end": 14846, + "loc": { + "start": { + "line": 280, + "column": 34 + }, + "end": { + "line": 280, + "column": 35 + } + } + }, + { + "type": { + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 14978, - "end": 14980, + "value": "entityMeshes", + "start": 14847, + "end": 14859, "loc": { "start": { - "line": 267, - "column": 71 + "line": 280, + "column": 36 }, "end": { - "line": 267, - "column": 73 + "line": 280, + "column": 48 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -86442,75 +85509,103 @@ "binop": null, "updateContext": null }, - "start": 14980, - "end": 14981, + "start": 14859, + "end": 14860, "loc": { "start": { - "line": 267, - "column": 73 + "line": 280, + "column": 48 }, "end": { - "line": 267, - "column": 74 + "line": 280, + "column": 49 } } }, { "type": { - "label": "=", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 14860, + "end": 14866, + "loc": { + "start": { + "line": 280, + "column": 49 + }, + "end": { + "line": 280, + "column": 55 + } + } + }, + { + "type": { + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14982, - "end": 14983, + "start": 14866, + "end": 14867, "loc": { "start": { - "line": 267, - "column": 75 + "line": 280, + "column": 55 }, "end": { - "line": 267, - "column": 76 + "line": 280, + "column": 56 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "for", + "keyword": "for", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14984, - "end": 14985, + "value": "for", + "start": 14881, + "end": 14884, "loc": { "start": { - "line": 267, - "column": 77 + "line": 282, + "column": 12 }, "end": { - "line": 267, - "column": 78 + "line": 282, + "column": 15 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -86519,23 +85614,23 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 14985, - "end": 14989, + "start": 14885, + "end": 14886, "loc": { "start": { - "line": 267, - "column": 78 + "line": 282, + "column": 16 }, "end": { - "line": 267, - "column": 82 + "line": 282, + "column": 17 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -86546,16 +85641,17 @@ "binop": null, "updateContext": null }, - "start": 14989, - "end": 14990, + "value": "let", + "start": 14886, + "end": 14889, "loc": { "start": { - "line": 267, - "column": 82 + "line": 282, + "column": 17 }, "end": { - "line": 267, - "column": 83 + "line": 282, + "column": 20 } } }, @@ -86571,44 +85667,44 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 14990, - "end": 14997, + "value": "k", + "start": 14890, + "end": 14891, "loc": { "start": { - "line": 267, - "column": 83 + "line": 282, + "column": 21 }, "end": { - "line": 267, - "column": 90 + "line": 282, + "column": 22 } } }, { "type": { - "label": "*", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": 10, + "binop": null, "updateContext": null }, - "value": "*", - "start": 14998, - "end": 14999, + "value": "=", + "start": 14892, + "end": 14893, "loc": { "start": { - "line": 267, - "column": 91 + "line": 282, + "column": 23 }, "end": { - "line": 267, - "column": 92 + "line": 282, + "column": 24 } } }, @@ -86625,84 +85721,96 @@ "binop": null, "updateContext": null }, - "value": 255, - "start": 15000, - "end": 15003, + "value": 0, + "start": 14894, + "end": 14895, "loc": { "start": { - "line": 267, - "column": 93 + "line": 282, + "column": 25 }, "end": { - "line": 267, - "column": 96 + "line": 282, + "column": 26 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15003, - "end": 15004, + "start": 14895, + "end": 14896, "loc": { "start": { - "line": 267, - "column": 96 + "line": 282, + "column": 26 }, "end": { - "line": 267, - "column": 97 + "line": 282, + "column": 27 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15004, - "end": 15005, + "value": "k", + "start": 14897, + "end": 14898, "loc": { "start": { - "line": 267, - "column": 97 + "line": 282, + "column": 28 }, "end": { - "line": 267, - "column": 98 + "line": 282, + "column": 29 } } }, { - "type": "CommentLine", - "value": " Opacity", - "start": 15006, - "end": 15016, + "type": { + "label": "", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 7, + "updateContext": null + }, + "value": "<", + "start": 14899, + "end": 14900, "loc": { "start": { - "line": 267, - "column": 99 + "line": 282, + "column": 30 }, "end": { - "line": 267, - "column": 109 + "line": 282, + "column": 31 } } }, @@ -86718,24 +85826,24 @@ "postfix": false, "binop": null }, - "value": "data", - "start": 15025, - "end": 15029, + "value": "numEntityMeshes", + "start": 14901, + "end": 14916, "loc": { "start": { - "line": 268, - "column": 8 + "line": 282, + "column": 32 }, "end": { - "line": 268, - "column": 12 + "line": 282, + "column": 47 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -86745,16 +85853,16 @@ "binop": null, "updateContext": null }, - "start": 15029, - "end": 15030, + "start": 14916, + "end": 14917, "loc": { "start": { - "line": 268, - "column": 12 + "line": 282, + "column": 47 }, "end": { - "line": 268, - "column": 13 + "line": 282, + "column": 48 } } }, @@ -86770,51 +85878,51 @@ "postfix": false, "binop": null }, - "value": "eachMeshMaterialAttributes", - "start": 15030, - "end": 15056, + "value": "k", + "start": 14918, + "end": 14919, "loc": { "start": { - "line": 268, - "column": 13 + "line": 282, + "column": 49 }, "end": { - "line": 268, - "column": 39 + "line": 282, + "column": 50 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "++/--", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "prefix": true, + "postfix": true, + "binop": null }, - "start": 15056, - "end": 15057, + "value": "++", + "start": 14919, + "end": 14921, "loc": { "start": { - "line": 268, - "column": 39 + "line": 282, + "column": 50 }, "end": { - "line": 268, - "column": 40 + "line": 282, + "column": 52 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -86822,49 +85930,48 @@ "postfix": false, "binop": null }, - "value": "eachMeshMaterialAttributesIndex", - "start": 15057, - "end": 15088, + "start": 14921, + "end": 14922, "loc": { "start": { - "line": 268, - "column": 40 + "line": 282, + "column": 52 }, "end": { - "line": 268, - "column": 71 + "line": 282, + "column": 53 } } }, { "type": { - "label": "++/--", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 15088, - "end": 15090, + "start": 14923, + "end": 14924, "loc": { "start": { - "line": 268, - "column": 71 + "line": 282, + "column": 54 }, "end": { - "line": 268, - "column": 73 + "line": 282, + "column": 55 } } }, { "type": { - "label": "]", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -86875,68 +85982,70 @@ "binop": null, "updateContext": null }, - "start": 15090, - "end": 15091, + "value": "const", + "start": 14942, + "end": 14947, "loc": { "start": { - "line": 268, - "column": 73 + "line": 284, + "column": 16 }, "end": { - "line": 268, - "column": 74 + "line": 284, + "column": 21 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 15092, - "end": 15093, + "value": "mesh", + "start": 14948, + "end": 14952, "loc": { "start": { - "line": 268, - "column": 75 + "line": 284, + "column": 22 }, "end": { - "line": 268, - "column": 76 + "line": 284, + "column": 26 } } }, { "type": { - "label": "(", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15094, - "end": 15095, + "value": "=", + "start": 14953, + "end": 14954, "loc": { "start": { - "line": 268, - "column": 77 + "line": 284, + "column": 27 }, "end": { - "line": 268, - "column": 78 + "line": 284, + "column": 28 } } }, @@ -86952,25 +86061,25 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 15095, - "end": 15099, + "value": "entityMeshes", + "start": 14955, + "end": 14967, "loc": { "start": { - "line": 268, - "column": 78 + "line": 284, + "column": 29 }, "end": { - "line": 268, - "column": 82 + "line": 284, + "column": 41 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -86979,16 +86088,16 @@ "binop": null, "updateContext": null }, - "start": 15099, - "end": 15100, + "start": 14967, + "end": 14968, "loc": { "start": { - "line": 268, - "column": 82 + "line": 284, + "column": 41 }, "end": { - "line": 268, - "column": 83 + "line": 284, + "column": 42 } } }, @@ -87004,52 +86113,51 @@ "postfix": false, "binop": null }, - "value": "metallic", - "start": 15100, - "end": 15108, + "value": "k", + "start": 14968, + "end": 14969, "loc": { "start": { - "line": 268, - "column": 83 + "line": 284, + "column": 42 }, "end": { - "line": 268, - "column": 91 + "line": 284, + "column": 43 } } }, { "type": { - "label": "*", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, + "binop": null, "updateContext": null }, - "value": "*", - "start": 15109, - "end": 15110, + "start": 14969, + "end": 14970, "loc": { "start": { - "line": 268, - "column": 92 + "line": 284, + "column": 43 }, "end": { - "line": 268, - "column": 93 + "line": 284, + "column": 44 } } }, { "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -87058,23 +86166,23 @@ "binop": null, "updateContext": null }, - "value": 255, - "start": 15111, - "end": 15114, + "start": 14970, + "end": 14971, "loc": { "start": { - "line": 268, - "column": 94 + "line": 284, + "column": 44 }, "end": { - "line": 268, - "column": 97 + "line": 284, + "column": 45 } } }, { "type": { - "label": ")", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -87082,60 +86190,73 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15114, - "end": 15115, + "value": "const", + "start": 14988, + "end": 14993, "loc": { "start": { - "line": 268, - "column": 97 + "line": 285, + "column": 16 }, "end": { - "line": 268, - "column": 98 + "line": 285, + "column": 21 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15115, - "end": 15116, + "value": "geometry", + "start": 14994, + "end": 15002, "loc": { "start": { - "line": 268, - "column": 98 + "line": 285, + "column": 22 }, "end": { - "line": 268, - "column": 99 + "line": 285, + "column": 30 } } }, { - "type": "CommentLine", - "value": " Metallic", - "start": 15117, - "end": 15128, + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 15003, + "end": 15004, "loc": { "start": { - "line": 268, - "column": 100 + "line": 285, + "column": 31 }, "end": { - "line": 268, - "column": 111 + "line": 285, + "column": 32 } } }, @@ -87151,17 +86272,17 @@ "postfix": false, "binop": null }, - "value": "data", - "start": 15137, - "end": 15141, + "value": "mesh", + "start": 15005, + "end": 15009, "loc": { "start": { - "line": 269, - "column": 8 + "line": 285, + "column": 33 }, "end": { - "line": 269, - "column": 12 + "line": 285, + "column": 37 } } }, @@ -87178,16 +86299,16 @@ "binop": null, "updateContext": null }, - "start": 15141, - "end": 15142, + "start": 15009, + "end": 15010, "loc": { "start": { - "line": 269, - "column": 12 + "line": 285, + "column": 37 }, "end": { - "line": 269, - "column": 13 + "line": 285, + "column": 38 } } }, @@ -87203,25 +86324,25 @@ "postfix": false, "binop": null }, - "value": "eachMeshMaterialAttributes", - "start": 15142, - "end": 15168, + "value": "geometry", + "start": 15010, + "end": 15018, "loc": { "start": { - "line": 269, - "column": 13 + "line": 285, + "column": 38 }, "end": { - "line": 269, - "column": 39 + "line": 285, + "column": 46 } } }, { "type": { - "label": "[", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -87230,16 +86351,44 @@ "binop": null, "updateContext": null }, - "start": 15168, - "end": 15169, + "start": 15018, + "end": 15019, "loc": { "start": { - "line": 269, - "column": 39 + "line": 285, + "column": 46 }, "end": { - "line": 269, - "column": 40 + "line": 285, + "column": 47 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 15036, + "end": 15041, + "loc": { + "start": { + "line": 286, + "column": 16 + }, + "end": { + "line": 286, + "column": 21 } } }, @@ -87255,49 +86404,76 @@ "postfix": false, "binop": null }, - "value": "eachMeshMaterialAttributesIndex", - "start": 15169, - "end": 15200, + "value": "geometryIndex", + "start": 15042, + "end": 15055, "loc": { "start": { - "line": 269, - "column": 40 + "line": 286, + "column": 22 }, "end": { - "line": 269, - "column": 71 + "line": 286, + "column": 35 } } }, { "type": { - "label": "++/--", + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 15056, + "end": 15057, + "loc": { + "start": { + "line": 286, + "column": 36 + }, + "end": { + "line": 286, + "column": 37 + } + } + }, + { + "type": { + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 15200, - "end": 15202, + "value": "geometry", + "start": 15058, + "end": 15066, "loc": { "start": { - "line": 269, - "column": 71 + "line": 286, + "column": 38 }, "end": { - "line": 269, - "column": 73 + "line": 286, + "column": 46 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -87308,68 +86484,68 @@ "binop": null, "updateContext": null }, - "start": 15202, - "end": 15203, + "start": 15066, + "end": 15067, "loc": { "start": { - "line": 269, - "column": 73 + "line": 286, + "column": 46 }, "end": { - "line": 269, - "column": 74 + "line": 286, + "column": 47 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 15204, - "end": 15205, + "value": "geometryIndex", + "start": 15067, + "end": 15080, "loc": { "start": { - "line": 269, - "column": 75 + "line": 286, + "column": 47 }, "end": { - "line": 269, - "column": 76 + "line": 286, + "column": 60 } } }, { "type": { - "label": "(", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15206, - "end": 15207, + "start": 15080, + "end": 15081, "loc": { "start": { - "line": 269, - "column": 77 + "line": 286, + "column": 60 }, "end": { - "line": 269, - "column": 78 + "line": 286, + "column": 61 } } }, @@ -87385,17 +86561,17 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 15207, - "end": 15211, + "value": "data", + "start": 15099, + "end": 15103, "loc": { "start": { - "line": 269, - "column": 78 + "line": 288, + "column": 16 }, "end": { - "line": 269, - "column": 82 + "line": 288, + "column": 20 } } }, @@ -87412,16 +86588,16 @@ "binop": null, "updateContext": null }, - "start": 15211, - "end": 15212, + "start": 15103, + "end": 15104, "loc": { "start": { - "line": 269, - "column": 82 + "line": 288, + "column": 20 }, "end": { - "line": 269, - "column": 83 + "line": 288, + "column": 21 } } }, @@ -87437,50 +86613,49 @@ "postfix": false, "binop": null }, - "value": "roughness", - "start": 15212, - "end": 15221, + "value": "eachMeshGeometriesPortion", + "start": 15104, + "end": 15129, "loc": { "start": { - "line": 269, - "column": 83 + "line": 288, + "column": 21 }, "end": { - "line": 269, - "column": 92 + "line": 288, + "column": 46 } } }, { "type": { - "label": "*", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, + "binop": null, "updateContext": null }, - "value": "*", - "start": 15222, - "end": 15223, + "start": 15130, + "end": 15131, "loc": { "start": { - "line": 269, - "column": 93 + "line": 288, + "column": 47 }, "end": { - "line": 269, - "column": 94 + "line": 288, + "column": 48 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -87488,93 +86663,78 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 255, - "start": 15224, - "end": 15227, + "value": "countEntityMeshesPortion", + "start": 15131, + "end": 15155, "loc": { "start": { - "line": 269, - "column": 95 + "line": 288, + "column": 48 }, "end": { - "line": 269, - "column": 98 + "line": 288, + "column": 72 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null + "binop": 9, + "updateContext": null }, - "start": 15227, - "end": 15228, + "value": "+", + "start": 15156, + "end": 15157, "loc": { "start": { - "line": 269, - "column": 98 + "line": 288, + "column": 73 }, "end": { - "line": 269, - "column": 99 + "line": 288, + "column": 74 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15228, - "end": 15229, - "loc": { - "start": { - "line": 269, - "column": 99 - }, - "end": { - "line": 269, - "column": 100 - } - } - }, - { - "type": "CommentLine", - "value": " Roughness", - "start": 15230, - "end": 15242, + "value": "k", + "start": 15158, + "end": 15159, "loc": { "start": { - "line": 269, - "column": 101 + "line": 288, + "column": 75 }, "end": { - "line": 269, - "column": 113 + "line": 288, + "column": 76 } } }, { "type": { - "label": "}", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -87582,62 +86742,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15247, - "end": 15248, - "loc": { - "start": { - "line": 270, - "column": 4 - }, - "end": { - "line": 270, - "column": 5 - } - } - }, - { - "type": "CommentLine", - "value": " Entities, geometry instances, and tiles", - "start": 15254, - "end": 15296, + "start": 15159, + "end": 15160, "loc": { "start": { - "line": 272, - "column": 4 + "line": 288, + "column": 76 }, "end": { - "line": 272, - "column": 46 + "line": 288, + "column": 77 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "let", - "start": 15302, - "end": 15305, + "value": "=", + "start": 15161, + "end": 15162, "loc": { "start": { - "line": 274, - "column": 4 + "line": 288, + "column": 78 }, "end": { - "line": 274, - "column": 7 + "line": 288, + "column": 79 } } }, @@ -87653,52 +86797,52 @@ "postfix": false, "binop": null }, - "value": "entityIndex", - "start": 15306, - "end": 15317, + "value": "geometryIndex", + "start": 15163, + "end": 15176, "loc": { "start": { - "line": 274, - "column": 8 + "line": 288, + "column": 80 }, "end": { - "line": 274, - "column": 19 + "line": 288, + "column": 93 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15318, - "end": 15319, + "start": 15176, + "end": 15177, "loc": { "start": { - "line": 274, - "column": 20 + "line": 288, + "column": 93 }, "end": { - "line": 274, - "column": 21 + "line": 288, + "column": 94 } } }, { "type": { - "label": "num", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -87707,50 +86851,74 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 15320, - "end": 15321, + "value": "if", + "start": 15195, + "end": 15197, "loc": { "start": { - "line": 274, - "column": 22 + "line": 290, + "column": 16 }, "end": { - "line": 274, - "column": 23 + "line": 290, + "column": 18 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15321, - "end": 15322, + "start": 15198, + "end": 15199, "loc": { "start": { - "line": 274, - "column": 23 + "line": 290, + "column": 19 }, "end": { - "line": 274, + "line": 290, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mesh", + "start": 15199, + "end": 15203, + "loc": { + "start": { + "line": 290, + "column": 20 + }, + "end": { + "line": 290, "column": 24 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -87761,17 +86929,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 15327, - "end": 15330, + "start": 15203, + "end": 15204, "loc": { "start": { - "line": 275, - "column": 4 + "line": 290, + "column": 24 }, "end": { - "line": 275, - "column": 7 + "line": 290, + "column": 25 } } }, @@ -87787,50 +86954,49 @@ "postfix": false, "binop": null }, - "value": "countEntityMeshesPortion", - "start": 15331, - "end": 15355, + "value": "geometry", + "start": 15204, + "end": 15212, "loc": { "start": { - "line": 275, - "column": 8 + "line": 290, + "column": 25 }, "end": { - "line": 275, - "column": 32 + "line": 290, + "column": 33 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15356, - "end": 15357, + "start": 15212, + "end": 15213, "loc": { "start": { - "line": 275, + "line": 290, "column": 33 }, "end": { - "line": 275, + "line": 290, "column": 34 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -87838,26 +87004,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 15358, - "end": 15359, + "value": "numInstances", + "start": 15213, + "end": 15225, "loc": { "start": { - "line": 275, - "column": 35 + "line": 290, + "column": 34 }, "end": { - "line": 275, - "column": 36 + "line": 290, + "column": 46 } } }, { "type": { - "label": ";", + "label": "", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -87865,55 +87030,55 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "start": 15359, - "end": 15360, + "value": ">", + "start": 15226, + "end": 15227, "loc": { "start": { - "line": 275, - "column": 36 + "line": 290, + "column": 47 }, "end": { - "line": 275, - "column": 37 + "line": 290, + "column": 48 } } }, { "type": { - "label": "for", - "keyword": "for", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "for", - "start": 15366, - "end": 15369, + "value": 1, + "start": 15228, + "end": 15229, "loc": { "start": { - "line": 277, - "column": 4 + "line": 290, + "column": 49 }, "end": { - "line": 277, - "column": 7 + "line": 290, + "column": 50 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -87921,44 +87086,41 @@ "postfix": false, "binop": null }, - "start": 15370, - "end": 15371, + "start": 15229, + "end": 15230, "loc": { "start": { - "line": 277, - "column": 8 + "line": 290, + "column": 50 }, "end": { - "line": 277, - "column": 9 + "line": 290, + "column": 51 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "let", - "start": 15371, - "end": 15374, + "start": 15231, + "end": 15232, "loc": { "start": { - "line": 277, - "column": 9 + "line": 290, + "column": 52 }, "end": { - "line": 277, - "column": 12 + "line": 290, + "column": 53 } } }, @@ -87974,50 +87136,49 @@ "postfix": false, "binop": null }, - "value": "tileIndex", - "start": 15375, - "end": 15384, + "value": "data", + "start": 15253, + "end": 15257, "loc": { "start": { - "line": 277, - "column": 13 + "line": 291, + "column": 20 }, "end": { - "line": 277, - "column": 22 + "line": 291, + "column": 24 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15385, - "end": 15386, + "start": 15257, + "end": 15258, "loc": { "start": { - "line": 277, - "column": 23 + "line": 291, + "column": 24 }, "end": { - "line": 277, - "column": 24 + "line": 291, + "column": 25 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -88025,27 +87186,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 15387, - "end": 15388, + "value": "matrices", + "start": 15258, + "end": 15266, "loc": { "start": { - "line": 277, + "line": 291, "column": 25 }, "end": { - "line": 277, - "column": 26 + "line": 291, + "column": 33 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -88055,16 +87215,16 @@ "binop": null, "updateContext": null }, - "start": 15388, - "end": 15389, + "start": 15266, + "end": 15267, "loc": { "start": { - "line": 277, - "column": 26 + "line": 291, + "column": 33 }, "end": { - "line": 277, - "column": 27 + "line": 291, + "column": 34 } } }, @@ -88080,44 +87240,42 @@ "postfix": false, "binop": null }, - "value": "tileIndex", - "start": 15390, - "end": 15399, + "value": "set", + "start": 15267, + "end": 15270, "loc": { "start": { - "line": 277, - "column": 28 + "line": 291, + "column": 34 }, "end": { - "line": 277, + "line": 291, "column": 37 } } }, { "type": { - "label": "", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, - "updateContext": null + "binop": null }, - "value": "<", - "start": 15400, - "end": 15401, + "start": 15270, + "end": 15271, "loc": { "start": { - "line": 277, - "column": 38 + "line": 291, + "column": 37 }, "end": { - "line": 277, - "column": 39 + "line": 291, + "column": 38 } } }, @@ -88133,24 +87291,24 @@ "postfix": false, "binop": null }, - "value": "numTiles", - "start": 15402, - "end": 15410, + "value": "mesh", + "start": 15271, + "end": 15275, "loc": { "start": { - "line": 277, - "column": 40 + "line": 291, + "column": 38 }, "end": { - "line": 277, - "column": 48 + "line": 291, + "column": 42 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -88160,16 +87318,16 @@ "binop": null, "updateContext": null }, - "start": 15410, - "end": 15411, + "start": 15275, + "end": 15276, "loc": { "start": { - "line": 277, - "column": 48 + "line": 291, + "column": 42 }, "end": { - "line": 277, - "column": 49 + "line": 291, + "column": 43 } } }, @@ -88185,51 +87343,51 @@ "postfix": false, "binop": null }, - "value": "tileIndex", - "start": 15412, - "end": 15421, + "value": "matrix", + "start": 15276, + "end": 15282, "loc": { "start": { - "line": 277, - "column": 50 + "line": 291, + "column": 43 }, "end": { - "line": 277, - "column": 59 + "line": 291, + "column": 49 } } }, { "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null }, - "value": "++", - "start": 15421, - "end": 15423, + "start": 15282, + "end": 15283, "loc": { "start": { - "line": 277, - "column": 59 + "line": 291, + "column": 49 }, "end": { - "line": 277, - "column": 61 + "line": 291, + "column": 50 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88237,24 +87395,25 @@ "postfix": false, "binop": null }, - "start": 15423, - "end": 15424, + "value": "matricesIndex", + "start": 15284, + "end": 15297, "loc": { "start": { - "line": 277, - "column": 61 + "line": 291, + "column": 51 }, "end": { - "line": 277, - "column": 62 + "line": 291, + "column": 64 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88262,24 +87421,23 @@ "postfix": false, "binop": null }, - "start": 15425, - "end": 15426, + "start": 15297, + "end": 15298, "loc": { "start": { - "line": 277, - "column": 63 + "line": 291, + "column": 64 }, "end": { - "line": 277, - "column": 64 + "line": 291, + "column": 65 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -88289,17 +87447,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 15436, - "end": 15441, + "start": 15298, + "end": 15299, "loc": { "start": { - "line": 279, - "column": 8 + "line": 291, + "column": 65 }, "end": { - "line": 279, - "column": 13 + "line": 291, + "column": 66 } } }, @@ -88315,44 +87472,43 @@ "postfix": false, "binop": null }, - "value": "tile", - "start": 15442, - "end": 15446, + "value": "data", + "start": 15320, + "end": 15324, "loc": { "start": { - "line": 279, - "column": 14 + "line": 292, + "column": 20 }, "end": { - "line": 279, - "column": 18 + "line": 292, + "column": 24 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15447, - "end": 15448, + "start": 15324, + "end": 15325, "loc": { "start": { - "line": 279, - "column": 19 + "line": 292, + "column": 24 }, "end": { - "line": 279, - "column": 20 + "line": 292, + "column": 25 } } }, @@ -88368,17 +87524,17 @@ "postfix": false, "binop": null }, - "value": "tilesList", - "start": 15449, - "end": 15458, + "value": "eachMeshMatricesPortion", + "start": 15325, + "end": 15348, "loc": { "start": { - "line": 279, - "column": 21 + "line": 292, + "column": 25 }, "end": { - "line": 279, - "column": 30 + "line": 292, + "column": 48 } } }, @@ -88395,16 +87551,16 @@ "binop": null, "updateContext": null }, - "start": 15459, - "end": 15460, + "start": 15349, + "end": 15350, "loc": { "start": { - "line": 279, - "column": 31 + "line": 292, + "column": 49 }, "end": { - "line": 279, - "column": 32 + "line": 292, + "column": 50 } } }, @@ -88420,50 +87576,24 @@ "postfix": false, "binop": null }, - "value": "tileIndex", - "start": 15460, - "end": 15469, - "loc": { - "start": { - "line": 279, - "column": 32 - }, - "end": { - "line": 279, - "column": 41 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 15469, - "end": 15470, + "value": "meshIndex", + "start": 15350, + "end": 15359, "loc": { "start": { - "line": 279, - "column": 41 + "line": 292, + "column": 50 }, "end": { - "line": 279, - "column": 42 + "line": 292, + "column": 59 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -88473,44 +87603,43 @@ "binop": null, "updateContext": null }, - "start": 15470, - "end": 15471, + "start": 15359, + "end": 15360, "loc": { "start": { - "line": 279, - "column": 42 + "line": 292, + "column": 59 }, "end": { - "line": 279, - "column": 43 + "line": 292, + "column": 60 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "const", - "start": 15480, - "end": 15485, + "value": "=", + "start": 15361, + "end": 15362, "loc": { "start": { - "line": 280, - "column": 8 + "line": 292, + "column": 61 }, "end": { - "line": 280, - "column": 13 + "line": 292, + "column": 62 } } }, @@ -88526,44 +87655,43 @@ "postfix": false, "binop": null }, - "value": "tileEntities", - "start": 15486, - "end": 15498, + "value": "matricesIndex", + "start": 15363, + "end": 15376, "loc": { "start": { - "line": 280, - "column": 14 + "line": 292, + "column": 63 }, "end": { - "line": 280, - "column": 26 + "line": 292, + "column": 76 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15499, - "end": 15500, + "start": 15376, + "end": 15377, "loc": { "start": { - "line": 280, - "column": 27 + "line": 292, + "column": 76 }, "end": { - "line": 280, - "column": 28 + "line": 292, + "column": 77 } } }, @@ -88579,49 +87707,50 @@ "postfix": false, "binop": null }, - "value": "tile", - "start": 15501, - "end": 15505, + "value": "matricesIndex", + "start": 15398, + "end": 15411, "loc": { "start": { - "line": 280, - "column": 29 + "line": 293, + "column": 20 }, "end": { - "line": 280, + "line": 293, "column": 33 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "_=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 15505, - "end": 15506, + "value": "+=", + "start": 15412, + "end": 15414, "loc": { "start": { - "line": 280, - "column": 33 + "line": 293, + "column": 34 }, "end": { - "line": 280, - "column": 34 + "line": 293, + "column": 36 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -88629,19 +87758,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "entities", - "start": 15506, - "end": 15514, + "value": 16, + "start": 15415, + "end": 15417, "loc": { "start": { - "line": 280, - "column": 34 + "line": 293, + "column": 37 }, "end": { - "line": 280, - "column": 42 + "line": 293, + "column": 39 } } }, @@ -88658,23 +87788,22 @@ "binop": null, "updateContext": null }, - "start": 15514, - "end": 15515, + "start": 15417, + "end": 15418, "loc": { "start": { - "line": 280, - "column": 42 + "line": 293, + "column": 39 }, "end": { - "line": 280, - "column": 43 + "line": 293, + "column": 40 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -88682,20 +87811,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 15524, - "end": 15529, + "start": 15435, + "end": 15436, "loc": { "start": { - "line": 281, - "column": 8 + "line": 294, + "column": 16 }, "end": { - "line": 281, - "column": 13 + "line": 294, + "column": 17 } } }, @@ -88711,44 +87838,43 @@ "postfix": false, "binop": null }, - "value": "numTileEntities", - "start": 15530, - "end": 15545, + "value": "data", + "start": 15454, + "end": 15458, "loc": { "start": { - "line": 281, - "column": 14 + "line": 296, + "column": 16 }, "end": { - "line": 281, - "column": 29 + "line": 296, + "column": 20 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15546, - "end": 15547, + "start": 15458, + "end": 15459, "loc": { "start": { - "line": 281, - "column": 30 + "line": 296, + "column": 20 }, "end": { - "line": 281, - "column": 31 + "line": 296, + "column": 21 } } }, @@ -88764,25 +87890,25 @@ "postfix": false, "binop": null }, - "value": "tileEntities", - "start": 15548, - "end": 15560, + "value": "eachMeshTextureSet", + "start": 15459, + "end": 15477, "loc": { "start": { - "line": 281, - "column": 32 + "line": 296, + "column": 21 }, "end": { - "line": 281, - "column": 44 + "line": 296, + "column": 39 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88791,16 +87917,16 @@ "binop": null, "updateContext": null }, - "start": 15560, - "end": 15561, + "start": 15477, + "end": 15478, "loc": { "start": { - "line": 281, - "column": 44 + "line": 296, + "column": 39 }, "end": { - "line": 281, - "column": 45 + "line": 296, + "column": 40 } } }, @@ -88816,24 +87942,24 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 15561, - "end": 15567, + "value": "meshIndex", + "start": 15478, + "end": 15487, "loc": { "start": { - "line": 281, - "column": 45 + "line": 296, + "column": 40 }, "end": { - "line": 281, - "column": 51 + "line": 296, + "column": 49 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -88843,51 +87969,50 @@ "binop": null, "updateContext": null }, - "start": 15567, - "end": 15568, + "start": 15487, + "end": 15488, "loc": { "start": { - "line": 281, - "column": 51 + "line": 296, + "column": 49 }, "end": { - "line": 281, - "column": 52 + "line": 296, + "column": 50 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "if", - "start": 15578, - "end": 15580, + "value": "=", + "start": 15489, + "end": 15490, "loc": { "start": { - "line": 283, - "column": 8 + "line": 296, + "column": 51 }, "end": { - "line": 283, - "column": 10 + "line": 296, + "column": 52 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -88896,77 +88021,77 @@ "postfix": false, "binop": null }, - "start": 15581, - "end": 15582, + "value": "mesh", + "start": 15491, + "end": 15495, "loc": { "start": { - "line": 283, - "column": 11 + "line": 296, + "column": 53 }, "end": { - "line": 283, - "column": 12 + "line": 296, + "column": 57 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "numTileEntities", - "start": 15582, - "end": 15597, + "start": 15495, + "end": 15496, "loc": { "start": { - "line": 283, - "column": 12 + "line": 296, + "column": 57 }, "end": { - "line": 283, - "column": 27 + "line": 296, + "column": 58 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, - "updateContext": null + "binop": null }, - "value": "===", - "start": 15598, - "end": 15601, + "value": "textureSet", + "start": 15496, + "end": 15506, "loc": { "start": { - "line": 283, - "column": 28 + "line": 296, + "column": 58 }, "end": { - "line": 283, - "column": 31 + "line": 296, + "column": 68 } } }, { "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, + "label": "?", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88975,25 +88100,24 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 15602, - "end": 15603, + "start": 15507, + "end": 15508, "loc": { "start": { - "line": 283, - "column": 32 + "line": 296, + "column": 69 }, "end": { - "line": 283, - "column": 33 + "line": 296, + "column": 70 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -89001,76 +88125,76 @@ "postfix": false, "binop": null }, - "start": 15603, - "end": 15604, + "value": "mesh", + "start": 15509, + "end": 15513, "loc": { "start": { - "line": 283, - "column": 33 + "line": 296, + "column": 71 }, "end": { - "line": 283, - "column": 34 + "line": 296, + "column": 75 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15605, - "end": 15606, + "start": 15513, + "end": 15514, "loc": { "start": { - "line": 283, - "column": 35 + "line": 296, + "column": 75 }, "end": { - "line": 283, - "column": 36 + "line": 296, + "column": 76 } } }, { "type": { - "label": "continue", - "keyword": "continue", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "continue", - "start": 15619, - "end": 15627, + "value": "textureSet", + "start": 15514, + "end": 15524, "loc": { "start": { - "line": 284, - "column": 12 + "line": 296, + "column": 76 }, "end": { - "line": 284, - "column": 20 + "line": 296, + "column": 86 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -89080,24 +88204,24 @@ "binop": null, "updateContext": null }, - "start": 15627, - "end": 15628, + "start": 15524, + "end": 15525, "loc": { "start": { - "line": 284, - "column": 20 + "line": 296, + "column": 86 }, "end": { - "line": 284, - "column": 21 + "line": 296, + "column": 87 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -89105,74 +88229,76 @@ "postfix": false, "binop": null }, - "start": 15637, - "end": 15638, + "value": "textureSetIndex", + "start": 15525, + "end": 15540, "loc": { "start": { - "line": 285, - "column": 8 + "line": 296, + "column": 87 }, "end": { - "line": 285, - "column": 9 + "line": 296, + "column": 102 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ":", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "data", - "start": 15648, - "end": 15652, + "start": 15541, + "end": 15542, "loc": { "start": { - "line": 287, - "column": 8 + "line": 296, + "column": 103 }, "end": { - "line": 287, - "column": 12 + "line": 296, + "column": 104 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null, + "binop": 9, "updateContext": null }, - "start": 15652, - "end": 15653, + "value": "-", + "start": 15543, + "end": 15544, "loc": { "start": { - "line": 287, - "column": 12 + "line": 296, + "column": 105 }, "end": { - "line": 287, - "column": 13 + "line": 296, + "column": 106 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -89180,27 +88306,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "eachTileEntitiesPortion", - "start": 15653, - "end": 15676, + "value": 1, + "start": 15544, + "end": 15545, "loc": { "start": { - "line": 287, - "column": 13 + "line": 296, + "column": 106 }, "end": { - "line": 287, - "column": 36 + "line": 296, + "column": 107 } } }, { "type": { - "label": "[", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -89209,16 +88336,16 @@ "binop": null, "updateContext": null }, - "start": 15676, - "end": 15677, + "start": 15545, + "end": 15546, "loc": { "start": { - "line": 287, - "column": 36 + "line": 296, + "column": 107 }, "end": { - "line": 287, - "column": 37 + "line": 296, + "column": 108 } } }, @@ -89234,23 +88361,23 @@ "postfix": false, "binop": null }, - "value": "tileIndex", - "start": 15677, - "end": 15686, + "value": "data", + "start": 15564, + "end": 15568, "loc": { "start": { - "line": 287, - "column": 37 + "line": 298, + "column": 16 }, "end": { - "line": 287, - "column": 46 + "line": 298, + "column": 20 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -89261,149 +88388,146 @@ "binop": null, "updateContext": null }, - "start": 15686, - "end": 15687, + "start": 15568, + "end": 15569, "loc": { "start": { - "line": 287, - "column": 46 + "line": 298, + "column": 20 }, "end": { - "line": 287, - "column": 47 + "line": 298, + "column": 21 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 15688, - "end": 15689, + "value": "eachMeshMaterialAttributes", + "start": 15569, + "end": 15595, "loc": { "start": { - "line": 287, - "column": 48 + "line": 298, + "column": 21 }, "end": { - "line": 287, - "column": 49 + "line": 298, + "column": 47 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "[", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "entityIndex", - "start": 15690, - "end": 15701, + "start": 15595, + "end": 15596, "loc": { "start": { - "line": 287, - "column": 50 + "line": 298, + "column": 47 }, "end": { - "line": 287, - "column": 61 + "line": 298, + "column": 48 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15701, - "end": 15702, + "value": "eachMeshMaterialAttributesIndex", + "start": 15596, + "end": 15627, "loc": { "start": { - "line": 287, - "column": 61 + "line": 298, + "column": 48 }, "end": { - "line": 287, - "column": 62 + "line": 298, + "column": 79 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "++/--", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "prefix": true, + "postfix": true, + "binop": null }, - "value": "const", - "start": 15712, - "end": 15717, + "value": "++", + "start": 15627, + "end": 15629, "loc": { "start": { - "line": 289, - "column": 8 + "line": 298, + "column": 79 }, "end": { - "line": 289, - "column": 13 + "line": 298, + "column": 81 } } }, { "type": { - "label": "name", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "tileAABB", - "start": 15718, - "end": 15726, + "start": 15629, + "end": 15630, "loc": { "start": { - "line": 289, - "column": 14 + "line": 298, + "column": 81 }, "end": { - "line": 289, - "column": 22 + "line": 298, + "column": 82 } } }, @@ -89421,23 +88545,23 @@ "updateContext": null }, "value": "=", - "start": 15727, - "end": 15728, + "start": 15631, + "end": 15632, "loc": { "start": { - "line": 289, - "column": 23 + "line": 298, + "column": 83 }, "end": { - "line": 289, - "column": 24 + "line": 298, + "column": 84 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -89446,155 +88570,153 @@ "postfix": false, "binop": null }, - "value": "tile", - "start": 15729, - "end": 15733, + "start": 15633, + "end": 15634, "loc": { "start": { - "line": 289, - "column": 25 + "line": 298, + "column": 85 }, "end": { - "line": 289, - "column": 29 + "line": 298, + "column": 86 } } }, { "type": { - "label": ".", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15733, - "end": 15734, + "value": "mesh", + "start": 15634, + "end": 15638, "loc": { "start": { - "line": 289, - "column": 29 + "line": 298, + "column": 86 }, "end": { - "line": 289, - "column": 30 + "line": 298, + "column": 90 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "aabb", - "start": 15734, - "end": 15738, + "start": 15638, + "end": 15639, "loc": { "start": { - "line": 289, - "column": 30 + "line": 298, + "column": 90 }, "end": { - "line": 289, - "column": 34 + "line": 298, + "column": 91 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15738, - "end": 15739, + "value": "color", + "start": 15639, + "end": 15644, "loc": { "start": { - "line": 289, - "column": 34 + "line": 298, + "column": 91 }, "end": { - "line": 289, - "column": 35 + "line": 298, + "column": 96 } } }, { "type": { - "label": "for", - "keyword": "for", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "for", - "start": 15749, - "end": 15752, + "start": 15644, + "end": 15645, "loc": { "start": { - "line": 291, - "column": 8 + "line": 298, + "column": 96 }, "end": { - "line": 291, - "column": 11 + "line": 298, + "column": 97 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "num", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15753, - "end": 15754, + "value": 0, + "start": 15645, + "end": 15646, "loc": { "start": { - "line": 291, - "column": 12 + "line": 298, + "column": 97 }, "end": { - "line": 291, - "column": 13 + "line": 298, + "column": 98 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -89605,97 +88727,95 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 15754, - "end": 15757, + "start": 15646, + "end": 15647, "loc": { "start": { - "line": 291, - "column": 13 + "line": 298, + "column": 98 }, "end": { - "line": 291, - "column": 16 + "line": 298, + "column": 99 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "*", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 10, + "updateContext": null }, - "value": "j", - "start": 15758, - "end": 15759, + "value": "*", + "start": 15648, + "end": 15649, "loc": { "start": { - "line": 291, - "column": 17 + "line": 298, + "column": 100 }, "end": { - "line": 291, - "column": 18 + "line": 298, + "column": 101 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15760, - "end": 15761, + "value": 255, + "start": 15650, + "end": 15653, "loc": { "start": { - "line": 291, - "column": 19 + "line": 298, + "column": 102 }, "end": { - "line": 291, - "column": 20 + "line": 298, + "column": 105 } } }, { "type": { - "label": "num", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 15762, - "end": 15763, + "start": 15653, + "end": 15654, "loc": { "start": { - "line": 291, - "column": 21 + "line": 298, + "column": 105 }, "end": { - "line": 291, - "column": 22 + "line": 298, + "column": 106 } } }, @@ -89712,16 +88832,32 @@ "binop": null, "updateContext": null }, - "start": 15763, - "end": 15764, + "start": 15654, + "end": 15655, "loc": { "start": { - "line": 291, - "column": 22 + "line": 298, + "column": 106 }, "end": { - "line": 291, - "column": 23 + "line": 298, + "column": 107 + } + } + }, + { + "type": "CommentLine", + "value": " Color RGB", + "start": 15656, + "end": 15668, + "loc": { + "start": { + "line": 298, + "column": 108 + }, + "end": { + "line": 298, + "column": 120 } } }, @@ -89737,44 +88873,43 @@ "postfix": false, "binop": null }, - "value": "j", - "start": 15765, - "end": 15766, + "value": "data", + "start": 15685, + "end": 15689, "loc": { "start": { - "line": 291, - "column": 24 + "line": 299, + "column": 16 }, "end": { - "line": 291, - "column": 25 + "line": 299, + "column": 20 } } }, { "type": { - "label": "", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<", - "start": 15767, - "end": 15768, + "start": 15689, + "end": 15690, "loc": { "start": { - "line": 291, - "column": 26 + "line": 299, + "column": 20 }, "end": { - "line": 291, - "column": 27 + "line": 299, + "column": 21 } } }, @@ -89790,25 +88925,25 @@ "postfix": false, "binop": null }, - "value": "numTileEntities", - "start": 15769, - "end": 15784, + "value": "eachMeshMaterialAttributes", + "start": 15690, + "end": 15716, "loc": { "start": { - "line": 291, - "column": 28 + "line": 299, + "column": 21 }, "end": { - "line": 291, - "column": 43 + "line": 299, + "column": 47 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -89817,16 +88952,16 @@ "binop": null, "updateContext": null }, - "start": 15784, - "end": 15785, + "start": 15716, + "end": 15717, "loc": { "start": { - "line": 291, - "column": 43 + "line": 299, + "column": 47 }, "end": { - "line": 291, - "column": 44 + "line": 299, + "column": 48 } } }, @@ -89842,17 +88977,17 @@ "postfix": false, "binop": null }, - "value": "j", - "start": 15786, - "end": 15787, + "value": "eachMeshMaterialAttributesIndex", + "start": 15717, + "end": 15748, "loc": { "start": { - "line": 291, - "column": 45 + "line": 299, + "column": 48 }, "end": { - "line": 291, - "column": 46 + "line": 299, + "column": 79 } } }, @@ -89869,22 +89004,22 @@ "binop": null }, "value": "++", - "start": 15787, - "end": 15789, + "start": 15748, + "end": 15750, "loc": { "start": { - "line": 291, - "column": 46 + "line": 299, + "column": 79 }, "end": { - "line": 291, - "column": 48 + "line": 299, + "column": 81 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -89892,71 +89027,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15789, - "end": 15790, + "start": 15750, + "end": 15751, "loc": { "start": { - "line": 291, - "column": 48 + "line": 299, + "column": 81 }, "end": { - "line": 291, - "column": 49 + "line": 299, + "column": 82 } } }, { "type": { - "label": "{", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15791, - "end": 15792, + "value": "=", + "start": 15752, + "end": 15753, "loc": { "start": { - "line": 291, - "column": 50 + "line": 299, + "column": 83 }, "end": { - "line": 291, - "column": 51 + "line": 299, + "column": 84 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 15806, - "end": 15811, + "start": 15754, + "end": 15755, "loc": { "start": { - "line": 293, - "column": 12 + "line": 299, + "column": 85 }, "end": { - "line": 293, - "column": 17 + "line": 299, + "column": 86 } } }, @@ -89972,44 +89107,43 @@ "postfix": false, "binop": null }, - "value": "entity", - "start": 15812, - "end": 15818, + "value": "mesh", + "start": 15755, + "end": 15759, "loc": { "start": { - "line": 293, - "column": 18 + "line": 299, + "column": 86 }, "end": { - "line": 293, - "column": 24 + "line": 299, + "column": 90 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15819, - "end": 15820, + "start": 15759, + "end": 15760, "loc": { "start": { - "line": 293, - "column": 25 + "line": 299, + "column": 90 }, "end": { - "line": 293, - "column": 26 + "line": 299, + "column": 91 } } }, @@ -90025,17 +89159,17 @@ "postfix": false, "binop": null }, - "value": "tileEntities", - "start": 15821, - "end": 15833, + "value": "color", + "start": 15760, + "end": 15765, "loc": { "start": { - "line": 293, - "column": 27 + "line": 299, + "column": 91 }, "end": { - "line": 293, - "column": 39 + "line": 299, + "column": 96 } } }, @@ -90052,22 +89186,22 @@ "binop": null, "updateContext": null }, - "start": 15833, - "end": 15834, + "start": 15765, + "end": 15766, "loc": { "start": { - "line": 293, - "column": 39 + "line": 299, + "column": 96 }, "end": { - "line": 293, - "column": 40 + "line": 299, + "column": 97 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -90075,19 +89209,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "j", - "start": 15834, - "end": 15835, + "value": 1, + "start": 15766, + "end": 15767, "loc": { "start": { - "line": 293, - "column": 40 + "line": 299, + "column": 97 }, "end": { - "line": 293, - "column": 41 + "line": 299, + "column": 98 } } }, @@ -90104,22 +89239,22 @@ "binop": null, "updateContext": null }, - "start": 15835, - "end": 15836, + "start": 15767, + "end": 15768, "loc": { "start": { - "line": 293, - "column": 41 + "line": 299, + "column": 98 }, "end": { - "line": 293, - "column": 42 + "line": 299, + "column": 99 } } }, { "type": { - "label": ";", + "label": "*", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -90127,28 +89262,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 10, "updateContext": null }, - "start": 15836, - "end": 15837, + "value": "*", + "start": 15769, + "end": 15770, "loc": { "start": { - "line": 293, - "column": 42 + "line": 299, + "column": 100 }, "end": { - "line": 293, - "column": 43 + "line": 299, + "column": 101 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -90157,25 +89292,25 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 15850, - "end": 15855, + "value": 255, + "start": 15771, + "end": 15774, "loc": { "start": { - "line": 294, - "column": 12 + "line": 299, + "column": 102 }, "end": { - "line": 294, - "column": 17 + "line": 299, + "column": 105 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -90183,44 +89318,42 @@ "postfix": false, "binop": null }, - "value": "entityMeshes", - "start": 15856, - "end": 15868, + "start": 15774, + "end": 15775, "loc": { "start": { - "line": 294, - "column": 18 + "line": 299, + "column": 105 }, "end": { - "line": 294, - "column": 30 + "line": 299, + "column": 106 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15869, - "end": 15870, + "start": 15775, + "end": 15776, "loc": { "start": { - "line": 294, - "column": 31 + "line": 299, + "column": 106 }, "end": { - "line": 294, - "column": 32 + "line": 299, + "column": 107 } } }, @@ -90236,17 +89369,17 @@ "postfix": false, "binop": null }, - "value": "entity", - "start": 15871, - "end": 15877, + "value": "data", + "start": 15793, + "end": 15797, "loc": { "start": { - "line": 294, - "column": 33 + "line": 300, + "column": 16 }, "end": { - "line": 294, - "column": 39 + "line": 300, + "column": 20 } } }, @@ -90263,16 +89396,16 @@ "binop": null, "updateContext": null }, - "start": 15877, - "end": 15878, + "start": 15797, + "end": 15798, "loc": { "start": { - "line": 294, - "column": 39 + "line": 300, + "column": 20 }, "end": { - "line": 294, - "column": 40 + "line": 300, + "column": 21 } } }, @@ -90288,25 +89421,25 @@ "postfix": false, "binop": null }, - "value": "meshes", - "start": 15878, - "end": 15884, + "value": "eachMeshMaterialAttributes", + "start": 15798, + "end": 15824, "loc": { "start": { - "line": 294, - "column": 40 + "line": 300, + "column": 21 }, "end": { - "line": 294, - "column": 46 + "line": 300, + "column": 47 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -90315,70 +89448,94 @@ "binop": null, "updateContext": null }, - "start": 15884, - "end": 15885, + "start": 15824, + "end": 15825, "loc": { "start": { - "line": 294, - "column": 46 + "line": 300, + "column": 47 }, "end": { - "line": 294, - "column": 47 + "line": 300, + "column": 48 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 15898, - "end": 15903, + "value": "eachMeshMaterialAttributesIndex", + "start": 15825, + "end": 15856, "loc": { "start": { - "line": 295, - "column": 12 + "line": 300, + "column": 48 }, "end": { - "line": 295, - "column": 17 + "line": 300, + "column": 79 } } }, { "type": { - "label": "name", + "label": "++/--", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, + "prefix": true, + "postfix": true, + "binop": null + }, + "value": "++", + "start": 15856, + "end": 15858, + "loc": { + "start": { + "line": 300, + "column": 79 + }, + "end": { + "line": 300, + "column": 81 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "numEntityMeshes", - "start": 15904, - "end": 15919, + "start": 15858, + "end": 15859, "loc": { "start": { - "line": 295, - "column": 18 + "line": 300, + "column": 81 }, "end": { - "line": 295, - "column": 33 + "line": 300, + "column": 82 } } }, @@ -90396,23 +89553,23 @@ "updateContext": null }, "value": "=", - "start": 15920, - "end": 15921, + "start": 15860, + "end": 15861, "loc": { "start": { - "line": 295, - "column": 34 + "line": 300, + "column": 83 }, "end": { - "line": 295, - "column": 35 + "line": 300, + "column": 84 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -90421,155 +89578,153 @@ "postfix": false, "binop": null }, - "value": "entityMeshes", - "start": 15922, - "end": 15934, + "start": 15862, + "end": 15863, "loc": { "start": { - "line": 295, - "column": 36 + "line": 300, + "column": 85 }, "end": { - "line": 295, - "column": 48 + "line": 300, + "column": 86 } } }, { "type": { - "label": ".", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15934, - "end": 15935, + "value": "mesh", + "start": 15863, + "end": 15867, "loc": { "start": { - "line": 295, - "column": 48 + "line": 300, + "column": 86 }, "end": { - "line": 295, - "column": 49 + "line": 300, + "column": 90 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "length", - "start": 15935, - "end": 15941, + "start": 15867, + "end": 15868, "loc": { "start": { - "line": 295, - "column": 49 + "line": 300, + "column": 90 }, "end": { - "line": 295, - "column": 55 + "line": 300, + "column": 91 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15941, - "end": 15942, + "value": "color", + "start": 15868, + "end": 15873, "loc": { "start": { - "line": 295, - "column": 55 + "line": 300, + "column": 91 }, "end": { - "line": 295, - "column": 56 + "line": 300, + "column": 96 } } }, { "type": { - "label": "for", - "keyword": "for", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "for", - "start": 15956, - "end": 15959, + "start": 15873, + "end": 15874, "loc": { "start": { - "line": 297, - "column": 12 + "line": 300, + "column": 96 }, "end": { - "line": 297, - "column": 15 + "line": 300, + "column": 97 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "num", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15960, - "end": 15961, + "value": 2, + "start": 15874, + "end": 15875, "loc": { "start": { - "line": 297, - "column": 16 + "line": 300, + "column": 97 }, "end": { - "line": 297, - "column": 17 + "line": 300, + "column": 98 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -90580,97 +89735,95 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 15961, - "end": 15964, + "start": 15875, + "end": 15876, "loc": { "start": { - "line": 297, - "column": 17 + "line": 300, + "column": 98 }, "end": { - "line": 297, - "column": 20 + "line": 300, + "column": 99 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "*", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 10, + "updateContext": null }, - "value": "k", - "start": 15965, - "end": 15966, + "value": "*", + "start": 15877, + "end": 15878, "loc": { "start": { - "line": 297, - "column": 21 + "line": 300, + "column": 100 }, "end": { - "line": 297, - "column": 22 + "line": 300, + "column": 101 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15967, - "end": 15968, + "value": 255, + "start": 15879, + "end": 15882, "loc": { "start": { - "line": 297, - "column": 23 + "line": 300, + "column": 102 }, "end": { - "line": 297, - "column": 24 + "line": 300, + "column": 105 } } }, { "type": { - "label": "num", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 15969, - "end": 15970, + "start": 15882, + "end": 15883, "loc": { "start": { - "line": 297, - "column": 25 + "line": 300, + "column": 105 }, "end": { - "line": 297, - "column": 26 + "line": 300, + "column": 106 } } }, @@ -90687,16 +89840,16 @@ "binop": null, "updateContext": null }, - "start": 15970, - "end": 15971, + "start": 15883, + "end": 15884, "loc": { "start": { - "line": 297, - "column": 26 + "line": 300, + "column": 106 }, "end": { - "line": 297, - "column": 27 + "line": 300, + "column": 107 } } }, @@ -90712,44 +89865,43 @@ "postfix": false, "binop": null }, - "value": "k", - "start": 15972, - "end": 15973, + "value": "data", + "start": 15901, + "end": 15905, "loc": { "start": { - "line": 297, - "column": 28 + "line": 301, + "column": 16 }, "end": { - "line": 297, - "column": 29 + "line": 301, + "column": 20 } } }, { "type": { - "label": "", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<", - "start": 15974, - "end": 15975, + "start": 15905, + "end": 15906, "loc": { "start": { - "line": 297, - "column": 30 + "line": 301, + "column": 20 }, "end": { - "line": 297, - "column": 31 + "line": 301, + "column": 21 } } }, @@ -90765,25 +89917,25 @@ "postfix": false, "binop": null }, - "value": "numEntityMeshes", - "start": 15976, - "end": 15991, + "value": "eachMeshMaterialAttributes", + "start": 15906, + "end": 15932, "loc": { "start": { - "line": 297, - "column": 32 + "line": 301, + "column": 21 }, "end": { - "line": 297, + "line": 301, "column": 47 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -90792,15 +89944,15 @@ "binop": null, "updateContext": null }, - "start": 15991, - "end": 15992, + "start": 15932, + "end": 15933, "loc": { "start": { - "line": 297, + "line": 301, "column": 47 }, "end": { - "line": 297, + "line": 301, "column": 48 } } @@ -90817,17 +89969,17 @@ "postfix": false, "binop": null }, - "value": "k", - "start": 15993, - "end": 15994, + "value": "eachMeshMaterialAttributesIndex", + "start": 15933, + "end": 15964, "loc": { "start": { - "line": 297, - "column": 49 + "line": 301, + "column": 48 }, "end": { - "line": 297, - "column": 50 + "line": 301, + "column": 79 } } }, @@ -90844,22 +89996,22 @@ "binop": null }, "value": "++", - "start": 15994, - "end": 15996, + "start": 15964, + "end": 15966, "loc": { "start": { - "line": 297, - "column": 50 + "line": 301, + "column": 79 }, "end": { - "line": 297, - "column": 52 + "line": 301, + "column": 81 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -90867,71 +90019,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15996, - "end": 15997, + "start": 15966, + "end": 15967, "loc": { "start": { - "line": 297, - "column": 52 + "line": 301, + "column": 81 }, "end": { - "line": 297, - "column": 53 + "line": 301, + "column": 82 } } }, { "type": { - "label": "{", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15998, - "end": 15999, + "value": "=", + "start": 15968, + "end": 15969, "loc": { "start": { - "line": 297, - "column": 54 + "line": 301, + "column": 83 }, "end": { - "line": 297, - "column": 55 + "line": 301, + "column": 84 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 16017, - "end": 16022, + "start": 15970, + "end": 15971, "loc": { "start": { - "line": 299, - "column": 16 + "line": 301, + "column": 85 }, "end": { - "line": 299, - "column": 21 + "line": 301, + "column": 86 } } }, @@ -90948,43 +90100,42 @@ "binop": null }, "value": "mesh", - "start": 16023, - "end": 16027, + "start": 15971, + "end": 15975, "loc": { "start": { - "line": 299, - "column": 22 + "line": 301, + "column": 86 }, "end": { - "line": 299, - "column": 26 + "line": 301, + "column": 90 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 16028, - "end": 16029, + "start": 15975, + "end": 15976, "loc": { "start": { - "line": 299, - "column": 27 + "line": 301, + "column": 90 }, "end": { - "line": 299, - "column": 28 + "line": 301, + "column": 91 } } }, @@ -91000,49 +90151,50 @@ "postfix": false, "binop": null }, - "value": "entityMeshes", - "start": 16030, - "end": 16042, + "value": "opacity", + "start": 15976, + "end": 15983, "loc": { "start": { - "line": 299, - "column": 29 + "line": 301, + "column": 91 }, "end": { - "line": 299, - "column": 41 + "line": 301, + "column": 98 } } }, { "type": { - "label": "[", + "label": "*", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 10, "updateContext": null }, - "start": 16042, - "end": 16043, + "value": "*", + "start": 15984, + "end": 15985, "loc": { "start": { - "line": 299, - "column": 41 + "line": 301, + "column": 99 }, "end": { - "line": 299, - "column": 42 + "line": 301, + "column": 100 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -91050,25 +90202,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "k", - "start": 16043, - "end": 16044, + "value": 255, + "start": 15986, + "end": 15989, "loc": { "start": { - "line": 299, - "column": 42 + "line": 301, + "column": 101 }, "end": { - "line": 299, - "column": 43 + "line": 301, + "column": 104 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -91076,19 +90229,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 16044, - "end": 16045, + "start": 15989, + "end": 15990, "loc": { "start": { - "line": 299, - "column": 43 + "line": 301, + "column": 104 }, "end": { - "line": 299, - "column": 44 + "line": 301, + "column": 105 } } }, @@ -91105,23 +90257,64 @@ "binop": null, "updateContext": null }, - "start": 16045, - "end": 16046, + "start": 15990, + "end": 15991, "loc": { "start": { - "line": 299, - "column": 44 + "line": 301, + "column": 105 }, "end": { - "line": 299, - "column": 45 + "line": 301, + "column": 106 + } + } + }, + { + "type": "CommentLine", + "value": " Opacity", + "start": 15992, + "end": 16002, + "loc": { + "start": { + "line": 301, + "column": 107 + }, + "end": { + "line": 301, + "column": 117 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "data", + "start": 16019, + "end": 16023, + "loc": { + "start": { + "line": 302, + "column": 16 + }, + "end": { + "line": 302, + "column": 20 + } + } + }, + { + "type": { + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -91132,16 +90325,15 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 16063, - "end": 16068, + "start": 16023, + "end": 16024, "loc": { "start": { - "line": 300, - "column": 16 + "line": 302, + "column": 20 }, "end": { - "line": 300, + "line": 302, "column": 21 } } @@ -91158,44 +90350,43 @@ "postfix": false, "binop": null }, - "value": "geometry", - "start": 16069, - "end": 16077, + "value": "eachMeshMaterialAttributes", + "start": 16024, + "end": 16050, "loc": { "start": { - "line": 300, - "column": 22 + "line": 302, + "column": 21 }, "end": { - "line": 300, - "column": 30 + "line": 302, + "column": 47 } } }, { "type": { - "label": "=", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 16078, - "end": 16079, + "start": 16050, + "end": 16051, "loc": { "start": { - "line": 300, - "column": 31 + "line": 302, + "column": 47 }, "end": { - "line": 300, - "column": 32 + "line": 302, + "column": 48 } } }, @@ -91211,123 +90402,121 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 16080, - "end": 16084, + "value": "eachMeshMaterialAttributesIndex", + "start": 16051, + "end": 16082, "loc": { "start": { - "line": 300, - "column": 33 + "line": 302, + "column": 48 }, "end": { - "line": 300, - "column": 37 + "line": 302, + "column": 79 } } }, { "type": { - "label": ".", + "label": "++/--", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "prefix": true, + "postfix": true, + "binop": null }, - "start": 16084, - "end": 16085, + "value": "++", + "start": 16082, + "end": 16084, "loc": { "start": { - "line": 300, - "column": 37 + "line": 302, + "column": 79 }, "end": { - "line": 300, - "column": 38 + "line": 302, + "column": 81 } } }, { "type": { - "label": "name", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "geometry", - "start": 16085, - "end": 16093, + "start": 16084, + "end": 16085, "loc": { "start": { - "line": 300, - "column": 38 + "line": 302, + "column": 81 }, "end": { - "line": 300, - "column": 46 + "line": 302, + "column": 82 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 16093, - "end": 16094, + "value": "=", + "start": 16086, + "end": 16087, "loc": { "start": { - "line": 300, - "column": 46 + "line": 302, + "column": 83 }, "end": { - "line": 300, - "column": 47 + "line": 302, + "column": 84 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 16111, - "end": 16116, + "start": 16088, + "end": 16089, "loc": { "start": { - "line": 301, - "column": 16 + "line": 302, + "column": 85 }, "end": { - "line": 301, - "column": 21 + "line": 302, + "column": 86 } } }, @@ -91343,44 +90532,43 @@ "postfix": false, "binop": null }, - "value": "geometryIndex", - "start": 16117, - "end": 16130, + "value": "mesh", + "start": 16089, + "end": 16093, "loc": { "start": { - "line": 301, - "column": 22 + "line": 302, + "column": 86 }, "end": { - "line": 301, - "column": 35 + "line": 302, + "column": 90 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 16131, - "end": 16132, + "start": 16093, + "end": 16094, "loc": { "start": { - "line": 301, - "column": 36 + "line": 302, + "column": 90 }, "end": { - "line": 301, - "column": 37 + "line": 302, + "column": 91 } } }, @@ -91396,49 +90584,50 @@ "postfix": false, "binop": null }, - "value": "geometry", - "start": 16133, - "end": 16141, + "value": "metallic", + "start": 16094, + "end": 16102, "loc": { "start": { - "line": 301, - "column": 38 + "line": 302, + "column": 91 }, "end": { - "line": 301, - "column": 46 + "line": 302, + "column": 99 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "*", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 10, "updateContext": null }, - "start": 16141, - "end": 16142, + "value": "*", + "start": 16103, + "end": 16104, "loc": { "start": { - "line": 301, - "column": 46 + "line": 302, + "column": 100 }, "end": { - "line": 301, - "column": 47 + "line": 302, + "column": 101 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -91446,19 +90635,45 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 255, + "start": 16105, + "end": 16108, + "loc": { + "start": { + "line": 302, + "column": 102 + }, + "end": { + "line": 302, + "column": 105 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "value": "geometryIndex", - "start": 16142, - "end": 16155, + "start": 16108, + "end": 16109, "loc": { "start": { - "line": 301, - "column": 47 + "line": 302, + "column": 105 }, "end": { - "line": 301, - "column": 60 + "line": 302, + "column": 106 } } }, @@ -91475,16 +90690,32 @@ "binop": null, "updateContext": null }, - "start": 16155, - "end": 16156, + "start": 16109, + "end": 16110, "loc": { "start": { - "line": 301, - "column": 60 + "line": 302, + "column": 106 }, "end": { - "line": 301, - "column": 61 + "line": 302, + "column": 107 + } + } + }, + { + "type": "CommentLine", + "value": " Metallic", + "start": 16111, + "end": 16122, + "loc": { + "start": { + "line": 302, + "column": 108 + }, + "end": { + "line": 302, + "column": 119 } } }, @@ -91501,8 +90732,8 @@ "binop": null }, "value": "data", - "start": 16174, - "end": 16178, + "start": 16139, + "end": 16143, "loc": { "start": { "line": 303, @@ -91527,8 +90758,8 @@ "binop": null, "updateContext": null }, - "start": 16178, - "end": 16179, + "start": 16143, + "end": 16144, "loc": { "start": { "line": 303, @@ -91552,9 +90783,9 @@ "postfix": false, "binop": null }, - "value": "eachMeshGeometriesPortion", - "start": 16179, - "end": 16204, + "value": "eachMeshMaterialAttributes", + "start": 16144, + "end": 16170, "loc": { "start": { "line": 303, @@ -91562,7 +90793,7 @@ }, "end": { "line": 303, - "column": 46 + "column": 47 } } }, @@ -91579,8 +90810,8 @@ "binop": null, "updateContext": null }, - "start": 16205, - "end": 16206, + "start": 16170, + "end": 16171, "loc": { "start": { "line": 303, @@ -91604,9 +90835,9 @@ "postfix": false, "binop": null }, - "value": "countEntityMeshesPortion", - "start": 16206, - "end": 16230, + "value": "eachMeshMaterialAttributesIndex", + "start": 16171, + "end": 16202, "loc": { "start": { "line": 303, @@ -91614,34 +90845,111 @@ }, "end": { "line": 303, - "column": 72 + "column": 79 } } }, { "type": { - "label": "+/-", - "beforeExpr": true, + "label": "++/--", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": true, + "postfix": true, + "binop": null + }, + "value": "++", + "start": 16202, + "end": 16204, + "loc": { + "start": { + "line": 303, + "column": 79 + }, + "end": { + "line": 303, + "column": 81 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, "postfix": false, - "binop": 9, + "binop": null, "updateContext": null }, - "value": "+", - "start": 16231, - "end": 16232, + "start": 16204, + "end": 16205, "loc": { "start": { "line": 303, - "column": 73 + "column": 81 }, "end": { "line": 303, - "column": 74 + "column": 82 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 16206, + "end": 16207, + "loc": { + "start": { + "line": 303, + "column": 83 + }, + "end": { + "line": 303, + "column": 84 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 16208, + "end": 16209, + "loc": { + "start": { + "line": 303, + "column": 85 + }, + "end": { + "line": 303, + "column": 86 } } }, @@ -91657,23 +90965,23 @@ "postfix": false, "binop": null }, - "value": "k", - "start": 16233, - "end": 16234, + "value": "mesh", + "start": 16209, + "end": 16213, "loc": { "start": { "line": 303, - "column": 75 + "column": 86 }, "end": { "line": 303, - "column": 76 + "column": 90 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -91684,49 +90992,75 @@ "binop": null, "updateContext": null }, - "start": 16234, - "end": 16235, + "start": 16213, + "end": 16214, "loc": { "start": { "line": 303, - "column": 76 + "column": 90 }, "end": { "line": 303, - "column": 77 + "column": 91 } } }, { "type": { - "label": "=", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "roughness", + "start": 16214, + "end": 16223, + "loc": { + "start": { + "line": 303, + "column": 91 + }, + "end": { + "line": 303, + "column": 100 + } + } + }, + { + "type": { + "label": "*", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 10, "updateContext": null }, - "value": "=", - "start": 16236, - "end": 16237, + "value": "*", + "start": 16224, + "end": 16225, "loc": { "start": { "line": 303, - "column": 78 + "column": 101 }, "end": { "line": 303, - "column": 79 + "column": 102 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -91734,19 +91068,45 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 255, + "start": 16226, + "end": 16229, + "loc": { + "start": { + "line": 303, + "column": 103 + }, + "end": { + "line": 303, + "column": 106 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "value": "geometryIndex", - "start": 16238, - "end": 16251, + "start": 16229, + "end": 16230, "loc": { "start": { "line": 303, - "column": 80 + "column": 106 }, "end": { "line": 303, - "column": 93 + "column": 107 } } }, @@ -91763,16 +91123,110 @@ "binop": null, "updateContext": null }, - "start": 16251, - "end": 16252, + "start": 16230, + "end": 16231, "loc": { "start": { "line": 303, - "column": 93 + "column": 107 }, "end": { "line": 303, - "column": 94 + "column": 108 + } + } + }, + { + "type": "CommentLine", + "value": " Roughness", + "start": 16232, + "end": 16244, + "loc": { + "start": { + "line": 303, + "column": 109 + }, + "end": { + "line": 303, + "column": 121 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "meshIndex", + "start": 16262, + "end": 16271, + "loc": { + "start": { + "line": 305, + "column": 16 + }, + "end": { + "line": 305, + "column": 25 + } + } + }, + { + "type": { + "label": "++/--", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": true, + "binop": null + }, + "value": "++", + "start": 16271, + "end": 16273, + "loc": { + "start": { + "line": 305, + "column": 25 + }, + "end": { + "line": 305, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 16273, + "end": 16274, + "loc": { + "start": { + "line": 305, + "column": 27 + }, + "end": { + "line": 305, + "column": 28 } } }, @@ -91788,15 +91242,15 @@ "postfix": false, "binop": null }, - "start": 16265, - "end": 16266, + "start": 16287, + "end": 16288, "loc": { "start": { - "line": 304, + "line": 306, "column": 12 }, "end": { - "line": 304, + "line": 306, "column": 13 } } @@ -91814,15 +91268,15 @@ "binop": null }, "value": "data", - "start": 16280, - "end": 16284, + "start": 16302, + "end": 16306, "loc": { "start": { - "line": 306, + "line": 308, "column": 12 }, "end": { - "line": 306, + "line": 308, "column": 16 } } @@ -91840,15 +91294,15 @@ "binop": null, "updateContext": null }, - "start": 16284, - "end": 16285, + "start": 16306, + "end": 16307, "loc": { "start": { - "line": 306, + "line": 308, "column": 16 }, "end": { - "line": 306, + "line": 308, "column": 17 } } @@ -91866,15 +91320,15 @@ "binop": null }, "value": "eachEntityId", - "start": 16285, - "end": 16297, + "start": 16307, + "end": 16319, "loc": { "start": { - "line": 306, + "line": 308, "column": 17 }, "end": { - "line": 306, + "line": 308, "column": 29 } } @@ -91892,15 +91346,15 @@ "binop": null, "updateContext": null }, - "start": 16298, - "end": 16299, + "start": 16320, + "end": 16321, "loc": { "start": { - "line": 306, + "line": 308, "column": 30 }, "end": { - "line": 306, + "line": 308, "column": 31 } } @@ -91918,15 +91372,15 @@ "binop": null }, "value": "entityIndex", - "start": 16299, - "end": 16310, + "start": 16321, + "end": 16332, "loc": { "start": { - "line": 306, + "line": 308, "column": 31 }, "end": { - "line": 306, + "line": 308, "column": 42 } } @@ -91944,15 +91398,15 @@ "binop": null, "updateContext": null }, - "start": 16310, - "end": 16311, + "start": 16332, + "end": 16333, "loc": { "start": { - "line": 306, + "line": 308, "column": 42 }, "end": { - "line": 306, + "line": 308, "column": 43 } } @@ -91971,15 +91425,15 @@ "updateContext": null }, "value": "=", - "start": 16312, - "end": 16313, + "start": 16334, + "end": 16335, "loc": { "start": { - "line": 306, + "line": 308, "column": 44 }, "end": { - "line": 306, + "line": 308, "column": 45 } } @@ -91997,15 +91451,15 @@ "binop": null }, "value": "entity", - "start": 16314, - "end": 16320, + "start": 16336, + "end": 16342, "loc": { "start": { - "line": 306, + "line": 308, "column": 46 }, "end": { - "line": 306, + "line": 308, "column": 52 } } @@ -92023,15 +91477,15 @@ "binop": null, "updateContext": null }, - "start": 16320, - "end": 16321, + "start": 16342, + "end": 16343, "loc": { "start": { - "line": 306, + "line": 308, "column": 52 }, "end": { - "line": 306, + "line": 308, "column": 53 } } @@ -92049,15 +91503,15 @@ "binop": null }, "value": "entityId", - "start": 16321, - "end": 16329, + "start": 16343, + "end": 16351, "loc": { "start": { - "line": 306, + "line": 308, "column": 53 }, "end": { - "line": 306, + "line": 308, "column": 61 } } @@ -92075,15 +91529,15 @@ "binop": null, "updateContext": null }, - "start": 16329, - "end": 16330, + "start": 16351, + "end": 16352, "loc": { "start": { - "line": 306, + "line": 308, "column": 61 }, "end": { - "line": 306, + "line": 308, "column": 62 } } @@ -92101,15 +91555,15 @@ "binop": null }, "value": "data", - "start": 16343, - "end": 16347, + "start": 16365, + "end": 16369, "loc": { "start": { - "line": 307, + "line": 309, "column": 12 }, "end": { - "line": 307, + "line": 309, "column": 16 } } @@ -92127,15 +91581,15 @@ "binop": null, "updateContext": null }, - "start": 16347, - "end": 16348, + "start": 16369, + "end": 16370, "loc": { "start": { - "line": 307, + "line": 309, "column": 16 }, "end": { - "line": 307, + "line": 309, "column": 17 } } @@ -92153,15 +91607,15 @@ "binop": null }, "value": "eachEntityMeshesPortion", - "start": 16348, - "end": 16371, + "start": 16370, + "end": 16393, "loc": { "start": { - "line": 307, + "line": 309, "column": 17 }, "end": { - "line": 307, + "line": 309, "column": 40 } } @@ -92179,15 +91633,15 @@ "binop": null, "updateContext": null }, - "start": 16371, - "end": 16372, + "start": 16393, + "end": 16394, "loc": { "start": { - "line": 307, + "line": 309, "column": 40 }, "end": { - "line": 307, + "line": 309, "column": 41 } } @@ -92205,15 +91659,15 @@ "binop": null }, "value": "entityIndex", - "start": 16372, - "end": 16383, + "start": 16394, + "end": 16405, "loc": { "start": { - "line": 307, + "line": 309, "column": 41 }, "end": { - "line": 307, + "line": 309, "column": 52 } } @@ -92231,15 +91685,15 @@ "binop": null, "updateContext": null }, - "start": 16383, - "end": 16384, + "start": 16405, + "end": 16406, "loc": { "start": { - "line": 307, + "line": 309, "column": 52 }, "end": { - "line": 307, + "line": 309, "column": 53 } } @@ -92258,15 +91712,15 @@ "updateContext": null }, "value": "=", - "start": 16385, - "end": 16386, + "start": 16407, + "end": 16408, "loc": { "start": { - "line": 307, + "line": 309, "column": 54 }, "end": { - "line": 307, + "line": 309, "column": 55 } } @@ -92284,15 +91738,15 @@ "binop": null }, "value": "countEntityMeshesPortion", - "start": 16387, - "end": 16411, + "start": 16409, + "end": 16433, "loc": { "start": { - "line": 307, + "line": 309, "column": 56 }, "end": { - "line": 307, + "line": 309, "column": 80 } } @@ -92310,15 +91764,15 @@ "binop": null, "updateContext": null }, - "start": 16411, - "end": 16412, + "start": 16433, + "end": 16434, "loc": { "start": { - "line": 307, + "line": 309, "column": 80 }, "end": { - "line": 307, + "line": 309, "column": 81 } } @@ -92326,15 +91780,15 @@ { "type": "CommentLine", "value": " <<<<<<<<<<<<<<<<<<<< Error here? Order/value of countEntityMeshesPortion correct?", - "start": 16413, - "end": 16497, + "start": 16435, + "end": 16519, "loc": { "start": { - "line": 307, + "line": 309, "column": 82 }, "end": { - "line": 307, + "line": 309, "column": 166 } } @@ -92352,15 +91806,15 @@ "binop": null }, "value": "entityIndex", - "start": 16511, - "end": 16522, + "start": 16533, + "end": 16544, "loc": { "start": { - "line": 309, + "line": 311, "column": 12 }, "end": { - "line": 309, + "line": 311, "column": 23 } } @@ -92378,15 +91832,15 @@ "binop": null }, "value": "++", - "start": 16522, - "end": 16524, + "start": 16544, + "end": 16546, "loc": { "start": { - "line": 309, + "line": 311, "column": 23 }, "end": { - "line": 309, + "line": 311, "column": 25 } } @@ -92404,15 +91858,15 @@ "binop": null, "updateContext": null }, - "start": 16524, - "end": 16525, + "start": 16546, + "end": 16547, "loc": { "start": { - "line": 309, + "line": 311, "column": 25 }, "end": { - "line": 309, + "line": 311, "column": 26 } } @@ -92430,15 +91884,15 @@ "binop": null }, "value": "countEntityMeshesPortion", - "start": 16538, - "end": 16562, + "start": 16560, + "end": 16584, "loc": { "start": { - "line": 310, + "line": 312, "column": 12 }, "end": { - "line": 310, + "line": 312, "column": 36 } } @@ -92457,15 +91911,15 @@ "updateContext": null }, "value": "+=", - "start": 16563, - "end": 16565, + "start": 16585, + "end": 16587, "loc": { "start": { - "line": 310, + "line": 312, "column": 37 }, "end": { - "line": 310, + "line": 312, "column": 39 } } @@ -92483,15 +91937,15 @@ "binop": null }, "value": "numEntityMeshes", - "start": 16566, - "end": 16581, + "start": 16588, + "end": 16603, "loc": { "start": { - "line": 310, + "line": 312, "column": 40 }, "end": { - "line": 310, + "line": 312, "column": 55 } } @@ -92509,15 +91963,15 @@ "binop": null, "updateContext": null }, - "start": 16581, - "end": 16582, + "start": 16603, + "end": 16604, "loc": { "start": { - "line": 310, + "line": 312, "column": 55 }, "end": { - "line": 310, + "line": 312, "column": 56 } } @@ -92534,15 +91988,15 @@ "postfix": false, "binop": null }, - "start": 16591, - "end": 16592, + "start": 16613, + "end": 16614, "loc": { "start": { - "line": 311, + "line": 313, "column": 8 }, "end": { - "line": 311, + "line": 313, "column": 9 } } @@ -92562,15 +92016,15 @@ "updateContext": null }, "value": "const", - "start": 16602, - "end": 16607, + "start": 16624, + "end": 16629, "loc": { "start": { - "line": 313, + "line": 315, "column": 8 }, "end": { - "line": 313, + "line": 315, "column": 13 } } @@ -92588,15 +92042,15 @@ "binop": null }, "value": "tileAABBIndex", - "start": 16608, - "end": 16621, + "start": 16630, + "end": 16643, "loc": { "start": { - "line": 313, + "line": 315, "column": 14 }, "end": { - "line": 313, + "line": 315, "column": 27 } } @@ -92615,15 +92069,15 @@ "updateContext": null }, "value": "=", - "start": 16622, - "end": 16623, + "start": 16644, + "end": 16645, "loc": { "start": { - "line": 313, + "line": 315, "column": 28 }, "end": { - "line": 313, + "line": 315, "column": 29 } } @@ -92641,15 +92095,15 @@ "binop": null }, "value": "tileIndex", - "start": 16624, - "end": 16633, + "start": 16646, + "end": 16655, "loc": { "start": { - "line": 313, + "line": 315, "column": 30 }, "end": { - "line": 313, + "line": 315, "column": 39 } } @@ -92668,15 +92122,15 @@ "updateContext": null }, "value": "*", - "start": 16634, - "end": 16635, + "start": 16656, + "end": 16657, "loc": { "start": { - "line": 313, + "line": 315, "column": 40 }, "end": { - "line": 313, + "line": 315, "column": 41 } } @@ -92695,15 +92149,15 @@ "updateContext": null }, "value": 6, - "start": 16636, - "end": 16637, + "start": 16658, + "end": 16659, "loc": { "start": { - "line": 313, + "line": 315, "column": 42 }, "end": { - "line": 313, + "line": 315, "column": 43 } } @@ -92721,15 +92175,15 @@ "binop": null, "updateContext": null }, - "start": 16637, - "end": 16638, + "start": 16659, + "end": 16660, "loc": { "start": { - "line": 313, + "line": 315, "column": 43 }, "end": { - "line": 313, + "line": 315, "column": 44 } } @@ -92747,15 +92201,15 @@ "binop": null }, "value": "data", - "start": 16648, - "end": 16652, + "start": 16670, + "end": 16674, "loc": { "start": { - "line": 315, + "line": 317, "column": 8 }, "end": { - "line": 315, + "line": 317, "column": 12 } } @@ -92773,15 +92227,15 @@ "binop": null, "updateContext": null }, - "start": 16652, - "end": 16653, + "start": 16674, + "end": 16675, "loc": { "start": { - "line": 315, + "line": 317, "column": 12 }, "end": { - "line": 315, + "line": 317, "column": 13 } } @@ -92799,15 +92253,15 @@ "binop": null }, "value": "eachTileAABB", - "start": 16653, - "end": 16665, + "start": 16675, + "end": 16687, "loc": { "start": { - "line": 315, + "line": 317, "column": 13 }, "end": { - "line": 315, + "line": 317, "column": 25 } } @@ -92825,15 +92279,15 @@ "binop": null, "updateContext": null }, - "start": 16665, - "end": 16666, + "start": 16687, + "end": 16688, "loc": { "start": { - "line": 315, + "line": 317, "column": 25 }, "end": { - "line": 315, + "line": 317, "column": 26 } } @@ -92851,15 +92305,15 @@ "binop": null }, "value": "set", - "start": 16666, - "end": 16669, + "start": 16688, + "end": 16691, "loc": { "start": { - "line": 315, + "line": 317, "column": 26 }, "end": { - "line": 315, + "line": 317, "column": 29 } } @@ -92876,15 +92330,15 @@ "postfix": false, "binop": null }, - "start": 16669, - "end": 16670, + "start": 16691, + "end": 16692, "loc": { "start": { - "line": 315, + "line": 317, "column": 29 }, "end": { - "line": 315, + "line": 317, "column": 30 } } @@ -92902,15 +92356,15 @@ "binop": null }, "value": "tileAABB", - "start": 16670, - "end": 16678, + "start": 16692, + "end": 16700, "loc": { "start": { - "line": 315, + "line": 317, "column": 30 }, "end": { - "line": 315, + "line": 317, "column": 38 } } @@ -92928,15 +92382,15 @@ "binop": null, "updateContext": null }, - "start": 16678, - "end": 16679, + "start": 16700, + "end": 16701, "loc": { "start": { - "line": 315, + "line": 317, "column": 38 }, "end": { - "line": 315, + "line": 317, "column": 39 } } @@ -92954,15 +92408,15 @@ "binop": null }, "value": "tileAABBIndex", - "start": 16680, - "end": 16693, + "start": 16702, + "end": 16715, "loc": { "start": { - "line": 315, + "line": 317, "column": 40 }, "end": { - "line": 315, + "line": 317, "column": 53 } } @@ -92979,15 +92433,15 @@ "postfix": false, "binop": null }, - "start": 16693, - "end": 16694, + "start": 16715, + "end": 16716, "loc": { "start": { - "line": 315, + "line": 317, "column": 53 }, "end": { - "line": 315, + "line": 317, "column": 54 } } @@ -93005,15 +92459,15 @@ "binop": null, "updateContext": null }, - "start": 16694, - "end": 16695, + "start": 16716, + "end": 16717, "loc": { "start": { - "line": 315, + "line": 317, "column": 54 }, "end": { - "line": 315, + "line": 317, "column": 55 } } @@ -93030,15 +92484,15 @@ "postfix": false, "binop": null }, - "start": 16700, - "end": 16701, + "start": 16722, + "end": 16723, "loc": { "start": { - "line": 316, + "line": 318, "column": 4 }, "end": { - "line": 316, + "line": 318, "column": 5 } } @@ -93058,15 +92512,15 @@ "updateContext": null }, "value": "return", - "start": 16707, - "end": 16713, + "start": 16729, + "end": 16735, "loc": { "start": { - "line": 318, + "line": 320, "column": 4 }, "end": { - "line": 318, + "line": 320, "column": 10 } } @@ -93084,15 +92538,15 @@ "binop": null }, "value": "data", - "start": 16714, - "end": 16718, + "start": 16736, + "end": 16740, "loc": { "start": { - "line": 318, + "line": 320, "column": 11 }, "end": { - "line": 318, + "line": 320, "column": 15 } } @@ -93110,15 +92564,15 @@ "binop": null, "updateContext": null }, - "start": 16718, - "end": 16719, + "start": 16740, + "end": 16741, "loc": { "start": { - "line": 318, + "line": 320, "column": 15 }, "end": { - "line": 318, + "line": 320, "column": 16 } } @@ -93135,15 +92589,15 @@ "postfix": false, "binop": null }, - "start": 16720, - "end": 16721, + "start": 16742, + "end": 16743, "loc": { "start": { - "line": 319, + "line": 321, "column": 0 }, "end": { - "line": 319, + "line": 321, "column": 1 } } @@ -93162,15 +92616,15 @@ "binop": null }, "value": "function", - "start": 16723, - "end": 16731, + "start": 16745, + "end": 16753, "loc": { "start": { - "line": 321, + "line": 323, "column": 0 }, "end": { - "line": 321, + "line": 323, "column": 8 } } @@ -93188,15 +92642,15 @@ "binop": null }, "value": "deflateData", - "start": 16732, - "end": 16743, + "start": 16754, + "end": 16765, "loc": { "start": { - "line": 321, + "line": 323, "column": 9 }, "end": { - "line": 321, + "line": 323, "column": 20 } } @@ -93213,15 +92667,15 @@ "postfix": false, "binop": null }, - "start": 16743, - "end": 16744, + "start": 16765, + "end": 16766, "loc": { "start": { - "line": 321, + "line": 323, "column": 20 }, "end": { - "line": 321, + "line": 323, "column": 21 } } @@ -93239,15 +92693,15 @@ "binop": null }, "value": "data", - "start": 16744, - "end": 16748, + "start": 16766, + "end": 16770, "loc": { "start": { - "line": 321, + "line": 323, "column": 21 }, "end": { - "line": 321, + "line": 323, "column": 25 } } @@ -93264,15 +92718,15 @@ "postfix": false, "binop": null }, - "start": 16748, - "end": 16749, + "start": 16770, + "end": 16771, "loc": { "start": { - "line": 321, + "line": 323, "column": 25 }, "end": { - "line": 321, + "line": 323, "column": 26 } } @@ -93289,15 +92743,15 @@ "postfix": false, "binop": null }, - "start": 16750, - "end": 16751, + "start": 16772, + "end": 16773, "loc": { "start": { - "line": 321, + "line": 323, "column": 27 }, "end": { - "line": 321, + "line": 323, "column": 28 } } @@ -93317,15 +92771,15 @@ "updateContext": null }, "value": "return", - "start": 16756, - "end": 16762, + "start": 16778, + "end": 16784, "loc": { "start": { - "line": 322, + "line": 324, "column": 4 }, "end": { - "line": 322, + "line": 324, "column": 10 } } @@ -93342,15 +92796,15 @@ "postfix": false, "binop": null }, - "start": 16763, - "end": 16764, + "start": 16785, + "end": 16786, "loc": { "start": { - "line": 322, + "line": 324, "column": 11 }, "end": { - "line": 322, + "line": 324, "column": 12 } } @@ -93368,15 +92822,15 @@ "binop": null }, "value": "metadata", - "start": 16773, - "end": 16781, + "start": 16795, + "end": 16803, "loc": { "start": { - "line": 323, + "line": 325, "column": 8 }, "end": { - "line": 323, + "line": 325, "column": 16 } } @@ -93394,15 +92848,15 @@ "binop": null, "updateContext": null }, - "start": 16781, - "end": 16782, + "start": 16803, + "end": 16804, "loc": { "start": { - "line": 323, + "line": 325, "column": 16 }, "end": { - "line": 323, + "line": 325, "column": 17 } } @@ -93420,15 +92874,15 @@ "binop": null }, "value": "pako", - "start": 16783, - "end": 16787, + "start": 16805, + "end": 16809, "loc": { "start": { - "line": 323, + "line": 325, "column": 18 }, "end": { - "line": 323, + "line": 325, "column": 22 } } @@ -93446,15 +92900,15 @@ "binop": null, "updateContext": null }, - "start": 16787, - "end": 16788, + "start": 16809, + "end": 16810, "loc": { "start": { - "line": 323, + "line": 325, "column": 22 }, "end": { - "line": 323, + "line": 325, "column": 23 } } @@ -93472,15 +92926,15 @@ "binop": null }, "value": "deflate", - "start": 16788, - "end": 16795, + "start": 16810, + "end": 16817, "loc": { "start": { - "line": 323, + "line": 325, "column": 23 }, "end": { - "line": 323, + "line": 325, "column": 30 } } @@ -93497,15 +92951,15 @@ "postfix": false, "binop": null }, - "start": 16795, - "end": 16796, + "start": 16817, + "end": 16818, "loc": { "start": { - "line": 323, + "line": 325, "column": 30 }, "end": { - "line": 323, + "line": 325, "column": 31 } } @@ -93523,15 +92977,15 @@ "binop": null }, "value": "deflateJSON", - "start": 16796, - "end": 16807, + "start": 16818, + "end": 16829, "loc": { "start": { - "line": 323, + "line": 325, "column": 31 }, "end": { - "line": 323, + "line": 325, "column": 42 } } @@ -93548,15 +93002,15 @@ "postfix": false, "binop": null }, - "start": 16807, - "end": 16808, + "start": 16829, + "end": 16830, "loc": { "start": { - "line": 323, + "line": 325, "column": 42 }, "end": { - "line": 323, + "line": 325, "column": 43 } } @@ -93574,15 +93028,15 @@ "binop": null }, "value": "data", - "start": 16808, - "end": 16812, + "start": 16830, + "end": 16834, "loc": { "start": { - "line": 323, + "line": 325, "column": 43 }, "end": { - "line": 323, + "line": 325, "column": 47 } } @@ -93600,15 +93054,15 @@ "binop": null, "updateContext": null }, - "start": 16812, - "end": 16813, + "start": 16834, + "end": 16835, "loc": { "start": { - "line": 323, + "line": 325, "column": 47 }, "end": { - "line": 323, + "line": 325, "column": 48 } } @@ -93626,15 +93080,15 @@ "binop": null }, "value": "metadata", - "start": 16813, - "end": 16821, + "start": 16835, + "end": 16843, "loc": { "start": { - "line": 323, + "line": 325, "column": 48 }, "end": { - "line": 323, + "line": 325, "column": 56 } } @@ -93651,15 +93105,15 @@ "postfix": false, "binop": null }, - "start": 16821, - "end": 16822, + "start": 16843, + "end": 16844, "loc": { "start": { - "line": 323, + "line": 325, "column": 56 }, "end": { - "line": 323, + "line": 325, "column": 57 } } @@ -93676,15 +93130,15 @@ "postfix": false, "binop": null }, - "start": 16822, - "end": 16823, + "start": 16844, + "end": 16845, "loc": { "start": { - "line": 323, + "line": 325, "column": 57 }, "end": { - "line": 323, + "line": 325, "column": 58 } } @@ -93702,15 +93156,15 @@ "binop": null, "updateContext": null }, - "start": 16823, - "end": 16824, + "start": 16845, + "end": 16846, "loc": { "start": { - "line": 323, + "line": 325, "column": 58 }, "end": { - "line": 323, + "line": 325, "column": 59 } } @@ -93728,15 +93182,15 @@ "binop": null }, "value": "textureData", - "start": 16833, - "end": 16844, + "start": 16855, + "end": 16866, "loc": { "start": { - "line": 324, + "line": 326, "column": 8 }, "end": { - "line": 324, + "line": 326, "column": 19 } } @@ -93754,15 +93208,15 @@ "binop": null, "updateContext": null }, - "start": 16844, - "end": 16845, + "start": 16866, + "end": 16867, "loc": { "start": { - "line": 324, + "line": 326, "column": 19 }, "end": { - "line": 324, + "line": 326, "column": 20 } } @@ -93780,15 +93234,15 @@ "binop": null }, "value": "pako", - "start": 16846, - "end": 16850, + "start": 16868, + "end": 16872, "loc": { "start": { - "line": 324, + "line": 326, "column": 21 }, "end": { - "line": 324, + "line": 326, "column": 25 } } @@ -93806,15 +93260,15 @@ "binop": null, "updateContext": null }, - "start": 16850, - "end": 16851, + "start": 16872, + "end": 16873, "loc": { "start": { - "line": 324, + "line": 326, "column": 25 }, "end": { - "line": 324, + "line": 326, "column": 26 } } @@ -93832,15 +93286,15 @@ "binop": null }, "value": "deflate", - "start": 16851, - "end": 16858, + "start": 16873, + "end": 16880, "loc": { "start": { - "line": 324, + "line": 326, "column": 26 }, "end": { - "line": 324, + "line": 326, "column": 33 } } @@ -93857,15 +93311,15 @@ "postfix": false, "binop": null }, - "start": 16858, - "end": 16859, + "start": 16880, + "end": 16881, "loc": { "start": { - "line": 324, + "line": 326, "column": 33 }, "end": { - "line": 324, + "line": 326, "column": 34 } } @@ -93883,15 +93337,15 @@ "binop": null }, "value": "data", - "start": 16859, - "end": 16863, + "start": 16881, + "end": 16885, "loc": { "start": { - "line": 324, + "line": 326, "column": 34 }, "end": { - "line": 324, + "line": 326, "column": 38 } } @@ -93909,15 +93363,15 @@ "binop": null, "updateContext": null }, - "start": 16863, - "end": 16864, + "start": 16885, + "end": 16886, "loc": { "start": { - "line": 324, + "line": 326, "column": 38 }, "end": { - "line": 324, + "line": 326, "column": 39 } } @@ -93935,15 +93389,15 @@ "binop": null }, "value": "textureData", - "start": 16864, - "end": 16875, + "start": 16886, + "end": 16897, "loc": { "start": { - "line": 324, + "line": 326, "column": 39 }, "end": { - "line": 324, + "line": 326, "column": 50 } } @@ -93961,15 +93415,15 @@ "binop": null, "updateContext": null }, - "start": 16875, - "end": 16876, + "start": 16897, + "end": 16898, "loc": { "start": { - "line": 324, + "line": 326, "column": 50 }, "end": { - "line": 324, + "line": 326, "column": 51 } } @@ -93987,15 +93441,15 @@ "binop": null }, "value": "buffer", - "start": 16876, - "end": 16882, + "start": 16898, + "end": 16904, "loc": { "start": { - "line": 324, + "line": 326, "column": 51 }, "end": { - "line": 324, + "line": 326, "column": 57 } } @@ -94012,15 +93466,15 @@ "postfix": false, "binop": null }, - "start": 16882, - "end": 16883, + "start": 16904, + "end": 16905, "loc": { "start": { - "line": 324, + "line": 326, "column": 57 }, "end": { - "line": 324, + "line": 326, "column": 58 } } @@ -94038,15 +93492,15 @@ "binop": null, "updateContext": null }, - "start": 16883, - "end": 16884, + "start": 16905, + "end": 16906, "loc": { "start": { - "line": 324, + "line": 326, "column": 58 }, "end": { - "line": 324, + "line": 326, "column": 59 } } @@ -94064,15 +93518,15 @@ "binop": null }, "value": "eachTextureDataPortion", - "start": 16893, - "end": 16915, + "start": 16915, + "end": 16937, "loc": { "start": { - "line": 325, + "line": 327, "column": 8 }, "end": { - "line": 325, + "line": 327, "column": 30 } } @@ -94090,15 +93544,15 @@ "binop": null, "updateContext": null }, - "start": 16915, - "end": 16916, + "start": 16937, + "end": 16938, "loc": { "start": { - "line": 325, + "line": 327, "column": 30 }, "end": { - "line": 325, + "line": 327, "column": 31 } } @@ -94116,15 +93570,15 @@ "binop": null }, "value": "pako", - "start": 16917, - "end": 16921, + "start": 16939, + "end": 16943, "loc": { "start": { - "line": 325, + "line": 327, "column": 32 }, "end": { - "line": 325, + "line": 327, "column": 36 } } @@ -94142,15 +93596,15 @@ "binop": null, "updateContext": null }, - "start": 16921, - "end": 16922, + "start": 16943, + "end": 16944, "loc": { "start": { - "line": 325, + "line": 327, "column": 36 }, "end": { - "line": 325, + "line": 327, "column": 37 } } @@ -94168,15 +93622,15 @@ "binop": null }, "value": "deflate", - "start": 16922, - "end": 16929, + "start": 16944, + "end": 16951, "loc": { "start": { - "line": 325, + "line": 327, "column": 37 }, "end": { - "line": 325, + "line": 327, "column": 44 } } @@ -94193,15 +93647,15 @@ "postfix": false, "binop": null }, - "start": 16929, - "end": 16930, + "start": 16951, + "end": 16952, "loc": { "start": { - "line": 325, + "line": 327, "column": 44 }, "end": { - "line": 325, + "line": 327, "column": 45 } } @@ -94219,15 +93673,15 @@ "binop": null }, "value": "data", - "start": 16930, - "end": 16934, + "start": 16952, + "end": 16956, "loc": { "start": { - "line": 325, + "line": 327, "column": 45 }, "end": { - "line": 325, + "line": 327, "column": 49 } } @@ -94245,15 +93699,15 @@ "binop": null, "updateContext": null }, - "start": 16934, - "end": 16935, + "start": 16956, + "end": 16957, "loc": { "start": { - "line": 325, + "line": 327, "column": 49 }, "end": { - "line": 325, + "line": 327, "column": 50 } } @@ -94271,15 +93725,15 @@ "binop": null }, "value": "eachTextureDataPortion", - "start": 16935, - "end": 16957, + "start": 16957, + "end": 16979, "loc": { "start": { - "line": 325, + "line": 327, "column": 50 }, "end": { - "line": 325, + "line": 327, "column": 72 } } @@ -94297,15 +93751,15 @@ "binop": null, "updateContext": null }, - "start": 16957, - "end": 16958, + "start": 16979, + "end": 16980, "loc": { "start": { - "line": 325, + "line": 327, "column": 72 }, "end": { - "line": 325, + "line": 327, "column": 73 } } @@ -94323,15 +93777,15 @@ "binop": null }, "value": "buffer", - "start": 16958, - "end": 16964, + "start": 16980, + "end": 16986, "loc": { "start": { - "line": 325, + "line": 327, "column": 73 }, "end": { - "line": 325, + "line": 327, "column": 79 } } @@ -94348,15 +93802,15 @@ "postfix": false, "binop": null }, - "start": 16964, - "end": 16965, + "start": 16986, + "end": 16987, "loc": { "start": { - "line": 325, + "line": 327, "column": 79 }, "end": { - "line": 325, + "line": 327, "column": 80 } } @@ -94374,15 +93828,15 @@ "binop": null, "updateContext": null }, - "start": 16965, - "end": 16966, + "start": 16987, + "end": 16988, "loc": { "start": { - "line": 325, + "line": 327, "column": 80 }, "end": { - "line": 325, + "line": 327, "column": 81 } } @@ -94400,15 +93854,15 @@ "binop": null }, "value": "eachTextureAttributes", - "start": 16975, - "end": 16996, + "start": 16997, + "end": 17018, "loc": { "start": { - "line": 326, + "line": 328, "column": 8 }, "end": { - "line": 326, + "line": 328, "column": 29 } } @@ -94426,15 +93880,15 @@ "binop": null, "updateContext": null }, - "start": 16996, - "end": 16997, + "start": 17018, + "end": 17019, "loc": { "start": { - "line": 326, + "line": 328, "column": 29 }, "end": { - "line": 326, + "line": 328, "column": 30 } } @@ -94452,15 +93906,15 @@ "binop": null }, "value": "pako", - "start": 16998, - "end": 17002, + "start": 17020, + "end": 17024, "loc": { "start": { - "line": 326, + "line": 328, "column": 31 }, "end": { - "line": 326, + "line": 328, "column": 35 } } @@ -94478,15 +93932,15 @@ "binop": null, "updateContext": null }, - "start": 17002, - "end": 17003, + "start": 17024, + "end": 17025, "loc": { "start": { - "line": 326, + "line": 328, "column": 35 }, "end": { - "line": 326, + "line": 328, "column": 36 } } @@ -94504,15 +93958,15 @@ "binop": null }, "value": "deflate", - "start": 17003, - "end": 17010, + "start": 17025, + "end": 17032, "loc": { "start": { - "line": 326, + "line": 328, "column": 36 }, "end": { - "line": 326, + "line": 328, "column": 43 } } @@ -94529,15 +93983,15 @@ "postfix": false, "binop": null }, - "start": 17010, - "end": 17011, + "start": 17032, + "end": 17033, "loc": { "start": { - "line": 326, + "line": 328, "column": 43 }, "end": { - "line": 326, + "line": 328, "column": 44 } } @@ -94555,15 +94009,15 @@ "binop": null }, "value": "data", - "start": 17011, - "end": 17015, + "start": 17033, + "end": 17037, "loc": { "start": { - "line": 326, + "line": 328, "column": 44 }, "end": { - "line": 326, + "line": 328, "column": 48 } } @@ -94581,15 +94035,15 @@ "binop": null, "updateContext": null }, - "start": 17015, - "end": 17016, + "start": 17037, + "end": 17038, "loc": { "start": { - "line": 326, + "line": 328, "column": 48 }, "end": { - "line": 326, + "line": 328, "column": 49 } } @@ -94607,15 +94061,15 @@ "binop": null }, "value": "eachTextureAttributes", - "start": 17016, - "end": 17037, + "start": 17038, + "end": 17059, "loc": { "start": { - "line": 326, + "line": 328, "column": 49 }, "end": { - "line": 326, + "line": 328, "column": 70 } } @@ -94633,15 +94087,15 @@ "binop": null, "updateContext": null }, - "start": 17037, - "end": 17038, + "start": 17059, + "end": 17060, "loc": { "start": { - "line": 326, + "line": 328, "column": 70 }, "end": { - "line": 326, + "line": 328, "column": 71 } } @@ -94659,15 +94113,15 @@ "binop": null }, "value": "buffer", - "start": 17038, - "end": 17044, + "start": 17060, + "end": 17066, "loc": { "start": { - "line": 326, + "line": 328, "column": 71 }, "end": { - "line": 326, + "line": 328, "column": 77 } } @@ -94684,15 +94138,15 @@ "postfix": false, "binop": null }, - "start": 17044, - "end": 17045, + "start": 17066, + "end": 17067, "loc": { "start": { - "line": 326, + "line": 328, "column": 77 }, "end": { - "line": 326, + "line": 328, "column": 78 } } @@ -94710,15 +94164,15 @@ "binop": null, "updateContext": null }, - "start": 17045, - "end": 17046, + "start": 17067, + "end": 17068, "loc": { "start": { - "line": 326, + "line": 328, "column": 78 }, "end": { - "line": 326, + "line": 328, "column": 79 } } @@ -94736,15 +94190,15 @@ "binop": null }, "value": "positions", - "start": 17055, - "end": 17064, + "start": 17077, + "end": 17086, "loc": { "start": { - "line": 327, + "line": 329, "column": 8 }, "end": { - "line": 327, + "line": 329, "column": 17 } } @@ -94762,15 +94216,15 @@ "binop": null, "updateContext": null }, - "start": 17064, - "end": 17065, + "start": 17086, + "end": 17087, "loc": { "start": { - "line": 327, + "line": 329, "column": 17 }, "end": { - "line": 327, + "line": 329, "column": 18 } } @@ -94788,15 +94242,15 @@ "binop": null }, "value": "pako", - "start": 17066, - "end": 17070, + "start": 17088, + "end": 17092, "loc": { "start": { - "line": 327, + "line": 329, "column": 19 }, "end": { - "line": 327, + "line": 329, "column": 23 } } @@ -94814,15 +94268,15 @@ "binop": null, "updateContext": null }, - "start": 17070, - "end": 17071, + "start": 17092, + "end": 17093, "loc": { "start": { - "line": 327, + "line": 329, "column": 23 }, "end": { - "line": 327, + "line": 329, "column": 24 } } @@ -94840,15 +94294,15 @@ "binop": null }, "value": "deflate", - "start": 17071, - "end": 17078, + "start": 17093, + "end": 17100, "loc": { "start": { - "line": 327, + "line": 329, "column": 24 }, "end": { - "line": 327, + "line": 329, "column": 31 } } @@ -94865,15 +94319,15 @@ "postfix": false, "binop": null }, - "start": 17078, - "end": 17079, + "start": 17100, + "end": 17101, "loc": { "start": { - "line": 327, + "line": 329, "column": 31 }, "end": { - "line": 327, + "line": 329, "column": 32 } } @@ -94891,15 +94345,15 @@ "binop": null }, "value": "data", - "start": 17079, - "end": 17083, + "start": 17101, + "end": 17105, "loc": { "start": { - "line": 327, + "line": 329, "column": 32 }, "end": { - "line": 327, + "line": 329, "column": 36 } } @@ -94917,15 +94371,15 @@ "binop": null, "updateContext": null }, - "start": 17083, - "end": 17084, + "start": 17105, + "end": 17106, "loc": { "start": { - "line": 327, + "line": 329, "column": 36 }, "end": { - "line": 327, + "line": 329, "column": 37 } } @@ -94943,15 +94397,15 @@ "binop": null }, "value": "positions", - "start": 17084, - "end": 17093, + "start": 17106, + "end": 17115, "loc": { "start": { - "line": 327, + "line": 329, "column": 37 }, "end": { - "line": 327, + "line": 329, "column": 46 } } @@ -94969,15 +94423,15 @@ "binop": null, "updateContext": null }, - "start": 17093, - "end": 17094, + "start": 17115, + "end": 17116, "loc": { "start": { - "line": 327, + "line": 329, "column": 46 }, "end": { - "line": 327, + "line": 329, "column": 47 } } @@ -94995,15 +94449,15 @@ "binop": null }, "value": "buffer", - "start": 17094, - "end": 17100, + "start": 17116, + "end": 17122, "loc": { "start": { - "line": 327, + "line": 329, "column": 47 }, "end": { - "line": 327, + "line": 329, "column": 53 } } @@ -95020,15 +94474,15 @@ "postfix": false, "binop": null }, - "start": 17100, - "end": 17101, + "start": 17122, + "end": 17123, "loc": { "start": { - "line": 327, + "line": 329, "column": 53 }, "end": { - "line": 327, + "line": 329, "column": 54 } } @@ -95046,15 +94500,15 @@ "binop": null, "updateContext": null }, - "start": 17101, - "end": 17102, + "start": 17123, + "end": 17124, "loc": { "start": { - "line": 327, + "line": 329, "column": 54 }, "end": { - "line": 327, + "line": 329, "column": 55 } } @@ -95072,15 +94526,15 @@ "binop": null }, "value": "normals", - "start": 17111, - "end": 17118, + "start": 17133, + "end": 17140, "loc": { "start": { - "line": 328, + "line": 330, "column": 8 }, "end": { - "line": 328, + "line": 330, "column": 15 } } @@ -95098,15 +94552,15 @@ "binop": null, "updateContext": null }, - "start": 17118, - "end": 17119, + "start": 17140, + "end": 17141, "loc": { "start": { - "line": 328, + "line": 330, "column": 15 }, "end": { - "line": 328, + "line": 330, "column": 16 } } @@ -95124,15 +94578,15 @@ "binop": null }, "value": "pako", - "start": 17120, - "end": 17124, + "start": 17142, + "end": 17146, "loc": { "start": { - "line": 328, + "line": 330, "column": 17 }, "end": { - "line": 328, + "line": 330, "column": 21 } } @@ -95150,15 +94604,15 @@ "binop": null, "updateContext": null }, - "start": 17124, - "end": 17125, + "start": 17146, + "end": 17147, "loc": { "start": { - "line": 328, + "line": 330, "column": 21 }, "end": { - "line": 328, + "line": 330, "column": 22 } } @@ -95176,15 +94630,15 @@ "binop": null }, "value": "deflate", - "start": 17125, - "end": 17132, + "start": 17147, + "end": 17154, "loc": { "start": { - "line": 328, + "line": 330, "column": 22 }, "end": { - "line": 328, + "line": 330, "column": 29 } } @@ -95201,15 +94655,15 @@ "postfix": false, "binop": null }, - "start": 17132, - "end": 17133, + "start": 17154, + "end": 17155, "loc": { "start": { - "line": 328, + "line": 330, "column": 29 }, "end": { - "line": 328, + "line": 330, "column": 30 } } @@ -95227,15 +94681,15 @@ "binop": null }, "value": "data", - "start": 17133, - "end": 17137, + "start": 17155, + "end": 17159, "loc": { "start": { - "line": 328, + "line": 330, "column": 30 }, "end": { - "line": 328, + "line": 330, "column": 34 } } @@ -95253,15 +94707,15 @@ "binop": null, "updateContext": null }, - "start": 17137, - "end": 17138, + "start": 17159, + "end": 17160, "loc": { "start": { - "line": 328, + "line": 330, "column": 34 }, "end": { - "line": 328, + "line": 330, "column": 35 } } @@ -95279,15 +94733,15 @@ "binop": null }, "value": "normals", - "start": 17138, - "end": 17145, + "start": 17160, + "end": 17167, "loc": { "start": { - "line": 328, + "line": 330, "column": 35 }, "end": { - "line": 328, + "line": 330, "column": 42 } } @@ -95305,15 +94759,15 @@ "binop": null, "updateContext": null }, - "start": 17145, - "end": 17146, + "start": 17167, + "end": 17168, "loc": { "start": { - "line": 328, + "line": 330, "column": 42 }, "end": { - "line": 328, + "line": 330, "column": 43 } } @@ -95331,15 +94785,15 @@ "binop": null }, "value": "buffer", - "start": 17146, - "end": 17152, + "start": 17168, + "end": 17174, "loc": { "start": { - "line": 328, + "line": 330, "column": 43 }, "end": { - "line": 328, + "line": 330, "column": 49 } } @@ -95356,15 +94810,15 @@ "postfix": false, "binop": null }, - "start": 17152, - "end": 17153, + "start": 17174, + "end": 17175, "loc": { "start": { - "line": 328, + "line": 330, "column": 49 }, "end": { - "line": 328, + "line": 330, "column": 50 } } @@ -95382,15 +94836,15 @@ "binop": null, "updateContext": null }, - "start": 17153, - "end": 17154, + "start": 17175, + "end": 17176, "loc": { "start": { - "line": 328, + "line": 330, "column": 50 }, "end": { - "line": 328, + "line": 330, "column": 51 } } @@ -95408,15 +94862,15 @@ "binop": null }, "value": "colors", - "start": 17163, - "end": 17169, + "start": 17185, + "end": 17191, "loc": { "start": { - "line": 329, + "line": 331, "column": 8 }, "end": { - "line": 329, + "line": 331, "column": 14 } } @@ -95434,15 +94888,15 @@ "binop": null, "updateContext": null }, - "start": 17169, - "end": 17170, + "start": 17191, + "end": 17192, "loc": { "start": { - "line": 329, + "line": 331, "column": 14 }, "end": { - "line": 329, + "line": 331, "column": 15 } } @@ -95460,15 +94914,15 @@ "binop": null }, "value": "pako", - "start": 17171, - "end": 17175, + "start": 17193, + "end": 17197, "loc": { "start": { - "line": 329, + "line": 331, "column": 16 }, "end": { - "line": 329, + "line": 331, "column": 20 } } @@ -95486,15 +94940,15 @@ "binop": null, "updateContext": null }, - "start": 17175, - "end": 17176, + "start": 17197, + "end": 17198, "loc": { "start": { - "line": 329, + "line": 331, "column": 20 }, "end": { - "line": 329, + "line": 331, "column": 21 } } @@ -95512,15 +94966,15 @@ "binop": null }, "value": "deflate", - "start": 17176, - "end": 17183, + "start": 17198, + "end": 17205, "loc": { "start": { - "line": 329, + "line": 331, "column": 21 }, "end": { - "line": 329, + "line": 331, "column": 28 } } @@ -95537,15 +94991,15 @@ "postfix": false, "binop": null }, - "start": 17183, - "end": 17184, + "start": 17205, + "end": 17206, "loc": { "start": { - "line": 329, + "line": 331, "column": 28 }, "end": { - "line": 329, + "line": 331, "column": 29 } } @@ -95563,15 +95017,15 @@ "binop": null }, "value": "data", - "start": 17184, - "end": 17188, + "start": 17206, + "end": 17210, "loc": { "start": { - "line": 329, + "line": 331, "column": 29 }, "end": { - "line": 329, + "line": 331, "column": 33 } } @@ -95589,15 +95043,15 @@ "binop": null, "updateContext": null }, - "start": 17188, - "end": 17189, + "start": 17210, + "end": 17211, "loc": { "start": { - "line": 329, + "line": 331, "column": 33 }, "end": { - "line": 329, + "line": 331, "column": 34 } } @@ -95615,15 +95069,15 @@ "binop": null }, "value": "colors", - "start": 17189, - "end": 17195, + "start": 17211, + "end": 17217, "loc": { "start": { - "line": 329, + "line": 331, "column": 34 }, "end": { - "line": 329, + "line": 331, "column": 40 } } @@ -95641,15 +95095,15 @@ "binop": null, "updateContext": null }, - "start": 17195, - "end": 17196, + "start": 17217, + "end": 17218, "loc": { "start": { - "line": 329, + "line": 331, "column": 40 }, "end": { - "line": 329, + "line": 331, "column": 41 } } @@ -95667,15 +95121,15 @@ "binop": null }, "value": "buffer", - "start": 17196, - "end": 17202, + "start": 17218, + "end": 17224, "loc": { "start": { - "line": 329, + "line": 331, "column": 41 }, "end": { - "line": 329, + "line": 331, "column": 47 } } @@ -95692,15 +95146,15 @@ "postfix": false, "binop": null }, - "start": 17202, - "end": 17203, + "start": 17224, + "end": 17225, "loc": { "start": { - "line": 329, + "line": 331, "column": 47 }, "end": { - "line": 329, + "line": 331, "column": 48 } } @@ -95718,15 +95172,15 @@ "binop": null, "updateContext": null }, - "start": 17203, - "end": 17204, + "start": 17225, + "end": 17226, "loc": { "start": { - "line": 329, + "line": 331, "column": 48 }, "end": { - "line": 329, + "line": 331, "column": 49 } } @@ -95744,15 +95198,15 @@ "binop": null }, "value": "uvs", - "start": 17213, - "end": 17216, + "start": 17235, + "end": 17238, "loc": { "start": { - "line": 330, + "line": 332, "column": 8 }, "end": { - "line": 330, + "line": 332, "column": 11 } } @@ -95770,15 +95224,15 @@ "binop": null, "updateContext": null }, - "start": 17216, - "end": 17217, + "start": 17238, + "end": 17239, "loc": { "start": { - "line": 330, + "line": 332, "column": 11 }, "end": { - "line": 330, + "line": 332, "column": 12 } } @@ -95796,15 +95250,15 @@ "binop": null }, "value": "pako", - "start": 17218, - "end": 17222, + "start": 17240, + "end": 17244, "loc": { "start": { - "line": 330, + "line": 332, "column": 13 }, "end": { - "line": 330, + "line": 332, "column": 17 } } @@ -95822,15 +95276,15 @@ "binop": null, "updateContext": null }, - "start": 17222, - "end": 17223, + "start": 17244, + "end": 17245, "loc": { "start": { - "line": 330, + "line": 332, "column": 17 }, "end": { - "line": 330, + "line": 332, "column": 18 } } @@ -95848,15 +95302,15 @@ "binop": null }, "value": "deflate", - "start": 17223, - "end": 17230, + "start": 17245, + "end": 17252, "loc": { "start": { - "line": 330, + "line": 332, "column": 18 }, "end": { - "line": 330, + "line": 332, "column": 25 } } @@ -95873,15 +95327,15 @@ "postfix": false, "binop": null }, - "start": 17230, - "end": 17231, + "start": 17252, + "end": 17253, "loc": { "start": { - "line": 330, + "line": 332, "column": 25 }, "end": { - "line": 330, + "line": 332, "column": 26 } } @@ -95899,15 +95353,15 @@ "binop": null }, "value": "data", - "start": 17231, - "end": 17235, + "start": 17253, + "end": 17257, "loc": { "start": { - "line": 330, + "line": 332, "column": 26 }, "end": { - "line": 330, + "line": 332, "column": 30 } } @@ -95925,15 +95379,15 @@ "binop": null, "updateContext": null }, - "start": 17235, - "end": 17236, + "start": 17257, + "end": 17258, "loc": { "start": { - "line": 330, + "line": 332, "column": 30 }, "end": { - "line": 330, + "line": 332, "column": 31 } } @@ -95951,15 +95405,15 @@ "binop": null }, "value": "uvs", - "start": 17236, - "end": 17239, + "start": 17258, + "end": 17261, "loc": { "start": { - "line": 330, + "line": 332, "column": 31 }, "end": { - "line": 330, + "line": 332, "column": 34 } } @@ -95977,15 +95431,15 @@ "binop": null, "updateContext": null }, - "start": 17239, - "end": 17240, + "start": 17261, + "end": 17262, "loc": { "start": { - "line": 330, + "line": 332, "column": 34 }, "end": { - "line": 330, + "line": 332, "column": 35 } } @@ -96003,15 +95457,15 @@ "binop": null }, "value": "buffer", - "start": 17240, - "end": 17246, + "start": 17262, + "end": 17268, "loc": { "start": { - "line": 330, + "line": 332, "column": 35 }, "end": { - "line": 330, + "line": 332, "column": 41 } } @@ -96028,15 +95482,15 @@ "postfix": false, "binop": null }, - "start": 17246, - "end": 17247, + "start": 17268, + "end": 17269, "loc": { "start": { - "line": 330, + "line": 332, "column": 41 }, "end": { - "line": 330, + "line": 332, "column": 42 } } @@ -96054,15 +95508,15 @@ "binop": null, "updateContext": null }, - "start": 17247, - "end": 17248, + "start": 17269, + "end": 17270, "loc": { "start": { - "line": 330, + "line": 332, "column": 42 }, "end": { - "line": 330, + "line": 332, "column": 43 } } @@ -96080,15 +95534,15 @@ "binop": null }, "value": "indices", - "start": 17257, - "end": 17264, + "start": 17279, + "end": 17286, "loc": { "start": { - "line": 331, + "line": 333, "column": 8 }, "end": { - "line": 331, + "line": 333, "column": 15 } } @@ -96106,15 +95560,15 @@ "binop": null, "updateContext": null }, - "start": 17264, - "end": 17265, + "start": 17286, + "end": 17287, "loc": { "start": { - "line": 331, + "line": 333, "column": 15 }, "end": { - "line": 331, + "line": 333, "column": 16 } } @@ -96132,15 +95586,15 @@ "binop": null }, "value": "pako", - "start": 17266, - "end": 17270, + "start": 17288, + "end": 17292, "loc": { "start": { - "line": 331, + "line": 333, "column": 17 }, "end": { - "line": 331, + "line": 333, "column": 21 } } @@ -96158,15 +95612,15 @@ "binop": null, "updateContext": null }, - "start": 17270, - "end": 17271, + "start": 17292, + "end": 17293, "loc": { "start": { - "line": 331, + "line": 333, "column": 21 }, "end": { - "line": 331, + "line": 333, "column": 22 } } @@ -96184,15 +95638,15 @@ "binop": null }, "value": "deflate", - "start": 17271, - "end": 17278, + "start": 17293, + "end": 17300, "loc": { "start": { - "line": 331, + "line": 333, "column": 22 }, "end": { - "line": 331, + "line": 333, "column": 29 } } @@ -96209,15 +95663,15 @@ "postfix": false, "binop": null }, - "start": 17278, - "end": 17279, + "start": 17300, + "end": 17301, "loc": { "start": { - "line": 331, + "line": 333, "column": 29 }, "end": { - "line": 331, + "line": 333, "column": 30 } } @@ -96235,15 +95689,15 @@ "binop": null }, "value": "data", - "start": 17279, - "end": 17283, + "start": 17301, + "end": 17305, "loc": { "start": { - "line": 331, + "line": 333, "column": 30 }, "end": { - "line": 331, + "line": 333, "column": 34 } } @@ -96261,15 +95715,15 @@ "binop": null, "updateContext": null }, - "start": 17283, - "end": 17284, + "start": 17305, + "end": 17306, "loc": { "start": { - "line": 331, + "line": 333, "column": 34 }, "end": { - "line": 331, + "line": 333, "column": 35 } } @@ -96287,15 +95741,15 @@ "binop": null }, "value": "indices", - "start": 17284, - "end": 17291, + "start": 17306, + "end": 17313, "loc": { "start": { - "line": 331, + "line": 333, "column": 35 }, "end": { - "line": 331, + "line": 333, "column": 42 } } @@ -96313,15 +95767,15 @@ "binop": null, "updateContext": null }, - "start": 17291, - "end": 17292, + "start": 17313, + "end": 17314, "loc": { "start": { - "line": 331, + "line": 333, "column": 42 }, "end": { - "line": 331, + "line": 333, "column": 43 } } @@ -96339,15 +95793,15 @@ "binop": null }, "value": "buffer", - "start": 17292, - "end": 17298, + "start": 17314, + "end": 17320, "loc": { "start": { - "line": 331, + "line": 333, "column": 43 }, "end": { - "line": 331, + "line": 333, "column": 49 } } @@ -96364,15 +95818,15 @@ "postfix": false, "binop": null }, - "start": 17298, - "end": 17299, + "start": 17320, + "end": 17321, "loc": { "start": { - "line": 331, + "line": 333, "column": 49 }, "end": { - "line": 331, + "line": 333, "column": 50 } } @@ -96390,15 +95844,15 @@ "binop": null, "updateContext": null }, - "start": 17299, - "end": 17300, + "start": 17321, + "end": 17322, "loc": { "start": { - "line": 331, + "line": 333, "column": 50 }, "end": { - "line": 331, + "line": 333, "column": 51 } } @@ -96416,15 +95870,15 @@ "binop": null }, "value": "edgeIndices", - "start": 17309, - "end": 17320, + "start": 17331, + "end": 17342, "loc": { "start": { - "line": 332, + "line": 334, "column": 8 }, "end": { - "line": 332, + "line": 334, "column": 19 } } @@ -96442,15 +95896,15 @@ "binop": null, "updateContext": null }, - "start": 17320, - "end": 17321, + "start": 17342, + "end": 17343, "loc": { "start": { - "line": 332, + "line": 334, "column": 19 }, "end": { - "line": 332, + "line": 334, "column": 20 } } @@ -96468,15 +95922,15 @@ "binop": null }, "value": "pako", - "start": 17322, - "end": 17326, + "start": 17344, + "end": 17348, "loc": { "start": { - "line": 332, + "line": 334, "column": 21 }, "end": { - "line": 332, + "line": 334, "column": 25 } } @@ -96494,15 +95948,15 @@ "binop": null, "updateContext": null }, - "start": 17326, - "end": 17327, + "start": 17348, + "end": 17349, "loc": { "start": { - "line": 332, + "line": 334, "column": 25 }, "end": { - "line": 332, + "line": 334, "column": 26 } } @@ -96520,15 +95974,15 @@ "binop": null }, "value": "deflate", - "start": 17327, - "end": 17334, + "start": 17349, + "end": 17356, "loc": { "start": { - "line": 332, + "line": 334, "column": 26 }, "end": { - "line": 332, + "line": 334, "column": 33 } } @@ -96545,15 +95999,15 @@ "postfix": false, "binop": null }, - "start": 17334, - "end": 17335, + "start": 17356, + "end": 17357, "loc": { "start": { - "line": 332, + "line": 334, "column": 33 }, "end": { - "line": 332, + "line": 334, "column": 34 } } @@ -96571,15 +96025,15 @@ "binop": null }, "value": "data", - "start": 17335, - "end": 17339, + "start": 17357, + "end": 17361, "loc": { "start": { - "line": 332, + "line": 334, "column": 34 }, "end": { - "line": 332, + "line": 334, "column": 38 } } @@ -96597,15 +96051,15 @@ "binop": null, "updateContext": null }, - "start": 17339, - "end": 17340, + "start": 17361, + "end": 17362, "loc": { "start": { - "line": 332, + "line": 334, "column": 38 }, "end": { - "line": 332, + "line": 334, "column": 39 } } @@ -96623,15 +96077,15 @@ "binop": null }, "value": "edgeIndices", - "start": 17340, - "end": 17351, + "start": 17362, + "end": 17373, "loc": { "start": { - "line": 332, + "line": 334, "column": 39 }, "end": { - "line": 332, + "line": 334, "column": 50 } } @@ -96649,15 +96103,15 @@ "binop": null, "updateContext": null }, - "start": 17351, - "end": 17352, + "start": 17373, + "end": 17374, "loc": { "start": { - "line": 332, + "line": 334, "column": 50 }, "end": { - "line": 332, + "line": 334, "column": 51 } } @@ -96675,15 +96129,15 @@ "binop": null }, "value": "buffer", - "start": 17352, - "end": 17358, + "start": 17374, + "end": 17380, "loc": { "start": { - "line": 332, + "line": 334, "column": 51 }, "end": { - "line": 332, + "line": 334, "column": 57 } } @@ -96700,15 +96154,15 @@ "postfix": false, "binop": null }, - "start": 17358, - "end": 17359, + "start": 17380, + "end": 17381, "loc": { "start": { - "line": 332, + "line": 334, "column": 57 }, "end": { - "line": 332, + "line": 334, "column": 58 } } @@ -96726,15 +96180,15 @@ "binop": null, "updateContext": null }, - "start": 17359, - "end": 17360, + "start": 17381, + "end": 17382, "loc": { "start": { - "line": 332, + "line": 334, "column": 58 }, "end": { - "line": 332, + "line": 334, "column": 59 } } @@ -96752,15 +96206,15 @@ "binop": null }, "value": "eachTextureSetTextures", - "start": 17369, - "end": 17391, + "start": 17391, + "end": 17413, "loc": { "start": { - "line": 333, + "line": 335, "column": 8 }, "end": { - "line": 333, + "line": 335, "column": 30 } } @@ -96778,15 +96232,15 @@ "binop": null, "updateContext": null }, - "start": 17391, - "end": 17392, + "start": 17413, + "end": 17414, "loc": { "start": { - "line": 333, + "line": 335, "column": 30 }, "end": { - "line": 333, + "line": 335, "column": 31 } } @@ -96804,15 +96258,15 @@ "binop": null }, "value": "pako", - "start": 17393, - "end": 17397, + "start": 17415, + "end": 17419, "loc": { "start": { - "line": 333, + "line": 335, "column": 32 }, "end": { - "line": 333, + "line": 335, "column": 36 } } @@ -96830,15 +96284,15 @@ "binop": null, "updateContext": null }, - "start": 17397, - "end": 17398, + "start": 17419, + "end": 17420, "loc": { "start": { - "line": 333, + "line": 335, "column": 36 }, "end": { - "line": 333, + "line": 335, "column": 37 } } @@ -96856,15 +96310,15 @@ "binop": null }, "value": "deflate", - "start": 17398, - "end": 17405, + "start": 17420, + "end": 17427, "loc": { "start": { - "line": 333, + "line": 335, "column": 37 }, "end": { - "line": 333, + "line": 335, "column": 44 } } @@ -96881,15 +96335,15 @@ "postfix": false, "binop": null }, - "start": 17405, - "end": 17406, + "start": 17427, + "end": 17428, "loc": { "start": { - "line": 333, + "line": 335, "column": 44 }, "end": { - "line": 333, + "line": 335, "column": 45 } } @@ -96907,15 +96361,15 @@ "binop": null }, "value": "data", - "start": 17406, - "end": 17410, + "start": 17428, + "end": 17432, "loc": { "start": { - "line": 333, + "line": 335, "column": 45 }, "end": { - "line": 333, + "line": 335, "column": 49 } } @@ -96933,15 +96387,15 @@ "binop": null, "updateContext": null }, - "start": 17410, - "end": 17411, + "start": 17432, + "end": 17433, "loc": { "start": { - "line": 333, + "line": 335, "column": 49 }, "end": { - "line": 333, + "line": 335, "column": 50 } } @@ -96959,15 +96413,15 @@ "binop": null }, "value": "eachTextureSetTextures", - "start": 17411, - "end": 17433, + "start": 17433, + "end": 17455, "loc": { "start": { - "line": 333, + "line": 335, "column": 50 }, "end": { - "line": 333, + "line": 335, "column": 72 } } @@ -96985,15 +96439,15 @@ "binop": null, "updateContext": null }, - "start": 17433, - "end": 17434, + "start": 17455, + "end": 17456, "loc": { "start": { - "line": 333, + "line": 335, "column": 72 }, "end": { - "line": 333, + "line": 335, "column": 73 } } @@ -97011,15 +96465,15 @@ "binop": null }, "value": "buffer", - "start": 17434, - "end": 17440, + "start": 17456, + "end": 17462, "loc": { "start": { - "line": 333, + "line": 335, "column": 73 }, "end": { - "line": 333, + "line": 335, "column": 79 } } @@ -97036,15 +96490,15 @@ "postfix": false, "binop": null }, - "start": 17440, - "end": 17441, + "start": 17462, + "end": 17463, "loc": { "start": { - "line": 333, + "line": 335, "column": 79 }, "end": { - "line": 333, + "line": 335, "column": 80 } } @@ -97062,15 +96516,15 @@ "binop": null, "updateContext": null }, - "start": 17441, - "end": 17442, + "start": 17463, + "end": 17464, "loc": { "start": { - "line": 333, + "line": 335, "column": 80 }, "end": { - "line": 333, + "line": 335, "column": 81 } } @@ -97088,15 +96542,15 @@ "binop": null }, "value": "matrices", - "start": 17451, - "end": 17459, + "start": 17473, + "end": 17481, "loc": { "start": { - "line": 334, + "line": 336, "column": 8 }, "end": { - "line": 334, + "line": 336, "column": 16 } } @@ -97114,15 +96568,15 @@ "binop": null, "updateContext": null }, - "start": 17459, - "end": 17460, + "start": 17481, + "end": 17482, "loc": { "start": { - "line": 334, + "line": 336, "column": 16 }, "end": { - "line": 334, + "line": 336, "column": 17 } } @@ -97140,15 +96594,15 @@ "binop": null }, "value": "pako", - "start": 17461, - "end": 17465, + "start": 17483, + "end": 17487, "loc": { "start": { - "line": 334, + "line": 336, "column": 18 }, "end": { - "line": 334, + "line": 336, "column": 22 } } @@ -97166,15 +96620,15 @@ "binop": null, "updateContext": null }, - "start": 17465, - "end": 17466, + "start": 17487, + "end": 17488, "loc": { "start": { - "line": 334, + "line": 336, "column": 22 }, "end": { - "line": 334, + "line": 336, "column": 23 } } @@ -97192,15 +96646,15 @@ "binop": null }, "value": "deflate", - "start": 17466, - "end": 17473, + "start": 17488, + "end": 17495, "loc": { "start": { - "line": 334, + "line": 336, "column": 23 }, "end": { - "line": 334, + "line": 336, "column": 30 } } @@ -97217,15 +96671,15 @@ "postfix": false, "binop": null }, - "start": 17473, - "end": 17474, + "start": 17495, + "end": 17496, "loc": { "start": { - "line": 334, + "line": 336, "column": 30 }, "end": { - "line": 334, + "line": 336, "column": 31 } } @@ -97243,15 +96697,15 @@ "binop": null }, "value": "data", - "start": 17474, - "end": 17478, + "start": 17496, + "end": 17500, "loc": { "start": { - "line": 334, + "line": 336, "column": 31 }, "end": { - "line": 334, + "line": 336, "column": 35 } } @@ -97269,15 +96723,15 @@ "binop": null, "updateContext": null }, - "start": 17478, - "end": 17479, + "start": 17500, + "end": 17501, "loc": { "start": { - "line": 334, + "line": 336, "column": 35 }, "end": { - "line": 334, + "line": 336, "column": 36 } } @@ -97295,15 +96749,15 @@ "binop": null }, "value": "matrices", - "start": 17479, - "end": 17487, + "start": 17501, + "end": 17509, "loc": { "start": { - "line": 334, + "line": 336, "column": 36 }, "end": { - "line": 334, + "line": 336, "column": 44 } } @@ -97321,15 +96775,15 @@ "binop": null, "updateContext": null }, - "start": 17487, - "end": 17488, + "start": 17509, + "end": 17510, "loc": { "start": { - "line": 334, + "line": 336, "column": 44 }, "end": { - "line": 334, + "line": 336, "column": 45 } } @@ -97347,15 +96801,15 @@ "binop": null }, "value": "buffer", - "start": 17488, - "end": 17494, + "start": 17510, + "end": 17516, "loc": { "start": { - "line": 334, + "line": 336, "column": 45 }, "end": { - "line": 334, + "line": 336, "column": 51 } } @@ -97372,15 +96826,15 @@ "postfix": false, "binop": null }, - "start": 17494, - "end": 17495, + "start": 17516, + "end": 17517, "loc": { "start": { - "line": 334, + "line": 336, "column": 51 }, "end": { - "line": 334, + "line": 336, "column": 52 } } @@ -97398,15 +96852,15 @@ "binop": null, "updateContext": null }, - "start": 17495, - "end": 17496, + "start": 17517, + "end": 17518, "loc": { "start": { - "line": 334, + "line": 336, "column": 52 }, "end": { - "line": 334, + "line": 336, "column": 53 } } @@ -97424,15 +96878,15 @@ "binop": null }, "value": "reusedGeometriesDecodeMatrix", - "start": 17505, - "end": 17533, + "start": 17527, + "end": 17555, "loc": { "start": { - "line": 335, + "line": 337, "column": 8 }, "end": { - "line": 335, + "line": 337, "column": 36 } } @@ -97450,15 +96904,15 @@ "binop": null, "updateContext": null }, - "start": 17533, - "end": 17534, + "start": 17555, + "end": 17556, "loc": { "start": { - "line": 335, + "line": 337, "column": 36 }, "end": { - "line": 335, + "line": 337, "column": 37 } } @@ -97476,15 +96930,15 @@ "binop": null }, "value": "pako", - "start": 17535, - "end": 17539, + "start": 17557, + "end": 17561, "loc": { "start": { - "line": 335, + "line": 337, "column": 38 }, "end": { - "line": 335, + "line": 337, "column": 42 } } @@ -97502,15 +96956,15 @@ "binop": null, "updateContext": null }, - "start": 17539, - "end": 17540, + "start": 17561, + "end": 17562, "loc": { "start": { - "line": 335, + "line": 337, "column": 42 }, "end": { - "line": 335, + "line": 337, "column": 43 } } @@ -97528,15 +96982,15 @@ "binop": null }, "value": "deflate", - "start": 17540, - "end": 17547, + "start": 17562, + "end": 17569, "loc": { "start": { - "line": 335, + "line": 337, "column": 43 }, "end": { - "line": 335, + "line": 337, "column": 50 } } @@ -97553,15 +97007,15 @@ "postfix": false, "binop": null }, - "start": 17547, - "end": 17548, + "start": 17569, + "end": 17570, "loc": { "start": { - "line": 335, + "line": 337, "column": 50 }, "end": { - "line": 335, + "line": 337, "column": 51 } } @@ -97579,15 +97033,15 @@ "binop": null }, "value": "data", - "start": 17548, - "end": 17552, + "start": 17570, + "end": 17574, "loc": { "start": { - "line": 335, + "line": 337, "column": 51 }, "end": { - "line": 335, + "line": 337, "column": 55 } } @@ -97605,15 +97059,15 @@ "binop": null, "updateContext": null }, - "start": 17552, - "end": 17553, + "start": 17574, + "end": 17575, "loc": { "start": { - "line": 335, + "line": 337, "column": 55 }, "end": { - "line": 335, + "line": 337, "column": 56 } } @@ -97631,15 +97085,15 @@ "binop": null }, "value": "reusedGeometriesDecodeMatrix", - "start": 17553, - "end": 17581, + "start": 17575, + "end": 17603, "loc": { "start": { - "line": 335, + "line": 337, "column": 56 }, "end": { - "line": 335, + "line": 337, "column": 84 } } @@ -97657,15 +97111,15 @@ "binop": null, "updateContext": null }, - "start": 17581, - "end": 17582, + "start": 17603, + "end": 17604, "loc": { "start": { - "line": 335, + "line": 337, "column": 84 }, "end": { - "line": 335, + "line": 337, "column": 85 } } @@ -97683,15 +97137,15 @@ "binop": null }, "value": "buffer", - "start": 17582, - "end": 17588, + "start": 17604, + "end": 17610, "loc": { "start": { - "line": 335, + "line": 337, "column": 85 }, "end": { - "line": 335, + "line": 337, "column": 91 } } @@ -97708,15 +97162,15 @@ "postfix": false, "binop": null }, - "start": 17588, - "end": 17589, + "start": 17610, + "end": 17611, "loc": { "start": { - "line": 335, + "line": 337, "column": 91 }, "end": { - "line": 335, + "line": 337, "column": 92 } } @@ -97734,15 +97188,15 @@ "binop": null, "updateContext": null }, - "start": 17589, - "end": 17590, + "start": 17611, + "end": 17612, "loc": { "start": { - "line": 335, + "line": 337, "column": 92 }, "end": { - "line": 335, + "line": 337, "column": 93 } } @@ -97760,15 +97214,15 @@ "binop": null }, "value": "eachGeometryPrimitiveType", - "start": 17599, - "end": 17624, + "start": 17621, + "end": 17646, "loc": { "start": { - "line": 336, + "line": 338, "column": 8 }, "end": { - "line": 336, + "line": 338, "column": 33 } } @@ -97786,15 +97240,15 @@ "binop": null, "updateContext": null }, - "start": 17624, - "end": 17625, + "start": 17646, + "end": 17647, "loc": { "start": { - "line": 336, + "line": 338, "column": 33 }, "end": { - "line": 336, + "line": 338, "column": 34 } } @@ -97812,15 +97266,15 @@ "binop": null }, "value": "pako", - "start": 17626, - "end": 17630, + "start": 17648, + "end": 17652, "loc": { "start": { - "line": 336, + "line": 338, "column": 35 }, "end": { - "line": 336, + "line": 338, "column": 39 } } @@ -97838,15 +97292,15 @@ "binop": null, "updateContext": null }, - "start": 17630, - "end": 17631, + "start": 17652, + "end": 17653, "loc": { "start": { - "line": 336, + "line": 338, "column": 39 }, "end": { - "line": 336, + "line": 338, "column": 40 } } @@ -97864,15 +97318,15 @@ "binop": null }, "value": "deflate", - "start": 17631, - "end": 17638, + "start": 17653, + "end": 17660, "loc": { "start": { - "line": 336, + "line": 338, "column": 40 }, "end": { - "line": 336, + "line": 338, "column": 47 } } @@ -97889,15 +97343,15 @@ "postfix": false, "binop": null }, - "start": 17638, - "end": 17639, + "start": 17660, + "end": 17661, "loc": { "start": { - "line": 336, + "line": 338, "column": 47 }, "end": { - "line": 336, + "line": 338, "column": 48 } } @@ -97915,15 +97369,15 @@ "binop": null }, "value": "data", - "start": 17639, - "end": 17643, + "start": 17661, + "end": 17665, "loc": { "start": { - "line": 336, + "line": 338, "column": 48 }, "end": { - "line": 336, + "line": 338, "column": 52 } } @@ -97941,15 +97395,15 @@ "binop": null, "updateContext": null }, - "start": 17643, - "end": 17644, + "start": 17665, + "end": 17666, "loc": { "start": { - "line": 336, + "line": 338, "column": 52 }, "end": { - "line": 336, + "line": 338, "column": 53 } } @@ -97967,15 +97421,15 @@ "binop": null }, "value": "eachGeometryPrimitiveType", - "start": 17644, - "end": 17669, + "start": 17666, + "end": 17691, "loc": { "start": { - "line": 336, + "line": 338, "column": 53 }, "end": { - "line": 336, + "line": 338, "column": 78 } } @@ -97993,15 +97447,15 @@ "binop": null, "updateContext": null }, - "start": 17669, - "end": 17670, + "start": 17691, + "end": 17692, "loc": { "start": { - "line": 336, + "line": 338, "column": 78 }, "end": { - "line": 336, + "line": 338, "column": 79 } } @@ -98019,15 +97473,15 @@ "binop": null }, "value": "buffer", - "start": 17670, - "end": 17676, + "start": 17692, + "end": 17698, "loc": { "start": { - "line": 336, + "line": 338, "column": 79 }, "end": { - "line": 336, + "line": 338, "column": 85 } } @@ -98044,15 +97498,15 @@ "postfix": false, "binop": null }, - "start": 17676, - "end": 17677, + "start": 17698, + "end": 17699, "loc": { "start": { - "line": 336, + "line": 338, "column": 85 }, "end": { - "line": 336, + "line": 338, "column": 86 } } @@ -98070,15 +97524,15 @@ "binop": null, "updateContext": null }, - "start": 17677, - "end": 17678, + "start": 17699, + "end": 17700, "loc": { "start": { - "line": 336, + "line": 338, "column": 86 }, "end": { - "line": 336, + "line": 338, "column": 87 } } @@ -98096,15 +97550,15 @@ "binop": null }, "value": "eachGeometryPositionsPortion", - "start": 17687, - "end": 17715, + "start": 17709, + "end": 17737, "loc": { "start": { - "line": 337, + "line": 339, "column": 8 }, "end": { - "line": 337, + "line": 339, "column": 36 } } @@ -98122,15 +97576,15 @@ "binop": null, "updateContext": null }, - "start": 17715, - "end": 17716, + "start": 17737, + "end": 17738, "loc": { "start": { - "line": 337, + "line": 339, "column": 36 }, "end": { - "line": 337, + "line": 339, "column": 37 } } @@ -98148,15 +97602,15 @@ "binop": null }, "value": "pako", - "start": 17717, - "end": 17721, + "start": 17739, + "end": 17743, "loc": { "start": { - "line": 337, + "line": 339, "column": 38 }, "end": { - "line": 337, + "line": 339, "column": 42 } } @@ -98174,15 +97628,15 @@ "binop": null, "updateContext": null }, - "start": 17721, - "end": 17722, + "start": 17743, + "end": 17744, "loc": { "start": { - "line": 337, + "line": 339, "column": 42 }, "end": { - "line": 337, + "line": 339, "column": 43 } } @@ -98200,15 +97654,15 @@ "binop": null }, "value": "deflate", - "start": 17722, - "end": 17729, + "start": 17744, + "end": 17751, "loc": { "start": { - "line": 337, + "line": 339, "column": 43 }, "end": { - "line": 337, + "line": 339, "column": 50 } } @@ -98225,15 +97679,15 @@ "postfix": false, "binop": null }, - "start": 17729, - "end": 17730, + "start": 17751, + "end": 17752, "loc": { "start": { - "line": 337, + "line": 339, "column": 50 }, "end": { - "line": 337, + "line": 339, "column": 51 } } @@ -98251,15 +97705,15 @@ "binop": null }, "value": "data", - "start": 17730, - "end": 17734, + "start": 17752, + "end": 17756, "loc": { "start": { - "line": 337, + "line": 339, "column": 51 }, "end": { - "line": 337, + "line": 339, "column": 55 } } @@ -98277,15 +97731,15 @@ "binop": null, "updateContext": null }, - "start": 17734, - "end": 17735, + "start": 17756, + "end": 17757, "loc": { "start": { - "line": 337, + "line": 339, "column": 55 }, "end": { - "line": 337, + "line": 339, "column": 56 } } @@ -98303,15 +97757,15 @@ "binop": null }, "value": "eachGeometryPositionsPortion", - "start": 17735, - "end": 17763, + "start": 17757, + "end": 17785, "loc": { "start": { - "line": 337, + "line": 339, "column": 56 }, "end": { - "line": 337, + "line": 339, "column": 84 } } @@ -98329,15 +97783,15 @@ "binop": null, "updateContext": null }, - "start": 17763, - "end": 17764, + "start": 17785, + "end": 17786, "loc": { "start": { - "line": 337, + "line": 339, "column": 84 }, "end": { - "line": 337, + "line": 339, "column": 85 } } @@ -98355,15 +97809,15 @@ "binop": null }, "value": "buffer", - "start": 17764, - "end": 17770, + "start": 17786, + "end": 17792, "loc": { "start": { - "line": 337, + "line": 339, "column": 85 }, "end": { - "line": 337, + "line": 339, "column": 91 } } @@ -98380,15 +97834,15 @@ "postfix": false, "binop": null }, - "start": 17770, - "end": 17771, + "start": 17792, + "end": 17793, "loc": { "start": { - "line": 337, + "line": 339, "column": 91 }, "end": { - "line": 337, + "line": 339, "column": 92 } } @@ -98406,15 +97860,15 @@ "binop": null, "updateContext": null }, - "start": 17771, - "end": 17772, + "start": 17793, + "end": 17794, "loc": { "start": { - "line": 337, + "line": 339, "column": 92 }, "end": { - "line": 337, + "line": 339, "column": 93 } } @@ -98432,15 +97886,15 @@ "binop": null }, "value": "eachGeometryNormalsPortion", - "start": 17781, - "end": 17807, + "start": 17803, + "end": 17829, "loc": { "start": { - "line": 338, + "line": 340, "column": 8 }, "end": { - "line": 338, + "line": 340, "column": 34 } } @@ -98458,15 +97912,15 @@ "binop": null, "updateContext": null }, - "start": 17807, - "end": 17808, + "start": 17829, + "end": 17830, "loc": { "start": { - "line": 338, + "line": 340, "column": 34 }, "end": { - "line": 338, + "line": 340, "column": 35 } } @@ -98484,15 +97938,15 @@ "binop": null }, "value": "pako", - "start": 17809, - "end": 17813, + "start": 17831, + "end": 17835, "loc": { "start": { - "line": 338, + "line": 340, "column": 36 }, "end": { - "line": 338, + "line": 340, "column": 40 } } @@ -98510,15 +97964,15 @@ "binop": null, "updateContext": null }, - "start": 17813, - "end": 17814, + "start": 17835, + "end": 17836, "loc": { "start": { - "line": 338, + "line": 340, "column": 40 }, "end": { - "line": 338, + "line": 340, "column": 41 } } @@ -98536,15 +97990,15 @@ "binop": null }, "value": "deflate", - "start": 17814, - "end": 17821, + "start": 17836, + "end": 17843, "loc": { "start": { - "line": 338, + "line": 340, "column": 41 }, "end": { - "line": 338, + "line": 340, "column": 48 } } @@ -98561,15 +98015,15 @@ "postfix": false, "binop": null }, - "start": 17821, - "end": 17822, + "start": 17843, + "end": 17844, "loc": { "start": { - "line": 338, + "line": 340, "column": 48 }, "end": { - "line": 338, + "line": 340, "column": 49 } } @@ -98587,15 +98041,15 @@ "binop": null }, "value": "data", - "start": 17822, - "end": 17826, + "start": 17844, + "end": 17848, "loc": { "start": { - "line": 338, + "line": 340, "column": 49 }, "end": { - "line": 338, + "line": 340, "column": 53 } } @@ -98613,15 +98067,15 @@ "binop": null, "updateContext": null }, - "start": 17826, - "end": 17827, + "start": 17848, + "end": 17849, "loc": { "start": { - "line": 338, + "line": 340, "column": 53 }, "end": { - "line": 338, + "line": 340, "column": 54 } } @@ -98639,15 +98093,15 @@ "binop": null }, "value": "eachGeometryNormalsPortion", - "start": 17827, - "end": 17853, + "start": 17849, + "end": 17875, "loc": { "start": { - "line": 338, + "line": 340, "column": 54 }, "end": { - "line": 338, + "line": 340, "column": 80 } } @@ -98665,15 +98119,15 @@ "binop": null, "updateContext": null }, - "start": 17853, - "end": 17854, + "start": 17875, + "end": 17876, "loc": { "start": { - "line": 338, + "line": 340, "column": 80 }, "end": { - "line": 338, + "line": 340, "column": 81 } } @@ -98691,15 +98145,15 @@ "binop": null }, "value": "buffer", - "start": 17854, - "end": 17860, + "start": 17876, + "end": 17882, "loc": { "start": { - "line": 338, + "line": 340, "column": 81 }, "end": { - "line": 338, + "line": 340, "column": 87 } } @@ -98716,15 +98170,15 @@ "postfix": false, "binop": null }, - "start": 17860, - "end": 17861, + "start": 17882, + "end": 17883, "loc": { "start": { - "line": 338, + "line": 340, "column": 87 }, "end": { - "line": 338, + "line": 340, "column": 88 } } @@ -98742,15 +98196,15 @@ "binop": null, "updateContext": null }, - "start": 17861, - "end": 17862, + "start": 17883, + "end": 17884, "loc": { "start": { - "line": 338, + "line": 340, "column": 88 }, "end": { - "line": 338, + "line": 340, "column": 89 } } @@ -98768,15 +98222,15 @@ "binop": null }, "value": "eachGeometryColorsPortion", - "start": 17871, - "end": 17896, + "start": 17893, + "end": 17918, "loc": { "start": { - "line": 339, + "line": 341, "column": 8 }, "end": { - "line": 339, + "line": 341, "column": 33 } } @@ -98794,15 +98248,15 @@ "binop": null, "updateContext": null }, - "start": 17896, - "end": 17897, + "start": 17918, + "end": 17919, "loc": { "start": { - "line": 339, + "line": 341, "column": 33 }, "end": { - "line": 339, + "line": 341, "column": 34 } } @@ -98820,15 +98274,15 @@ "binop": null }, "value": "pako", - "start": 17898, - "end": 17902, + "start": 17920, + "end": 17924, "loc": { "start": { - "line": 339, + "line": 341, "column": 35 }, "end": { - "line": 339, + "line": 341, "column": 39 } } @@ -98846,15 +98300,15 @@ "binop": null, "updateContext": null }, - "start": 17902, - "end": 17903, + "start": 17924, + "end": 17925, "loc": { "start": { - "line": 339, + "line": 341, "column": 39 }, "end": { - "line": 339, + "line": 341, "column": 40 } } @@ -98872,15 +98326,15 @@ "binop": null }, "value": "deflate", - "start": 17903, - "end": 17910, + "start": 17925, + "end": 17932, "loc": { "start": { - "line": 339, + "line": 341, "column": 40 }, "end": { - "line": 339, + "line": 341, "column": 47 } } @@ -98897,15 +98351,15 @@ "postfix": false, "binop": null }, - "start": 17910, - "end": 17911, + "start": 17932, + "end": 17933, "loc": { "start": { - "line": 339, + "line": 341, "column": 47 }, "end": { - "line": 339, + "line": 341, "column": 48 } } @@ -98923,15 +98377,15 @@ "binop": null }, "value": "data", - "start": 17911, - "end": 17915, + "start": 17933, + "end": 17937, "loc": { "start": { - "line": 339, + "line": 341, "column": 48 }, "end": { - "line": 339, + "line": 341, "column": 52 } } @@ -98949,15 +98403,15 @@ "binop": null, "updateContext": null }, - "start": 17915, - "end": 17916, + "start": 17937, + "end": 17938, "loc": { "start": { - "line": 339, + "line": 341, "column": 52 }, "end": { - "line": 339, + "line": 341, "column": 53 } } @@ -98975,15 +98429,15 @@ "binop": null }, "value": "eachGeometryColorsPortion", - "start": 17916, - "end": 17941, + "start": 17938, + "end": 17963, "loc": { "start": { - "line": 339, + "line": 341, "column": 53 }, "end": { - "line": 339, + "line": 341, "column": 78 } } @@ -99001,15 +98455,15 @@ "binop": null, "updateContext": null }, - "start": 17941, - "end": 17942, + "start": 17963, + "end": 17964, "loc": { "start": { - "line": 339, + "line": 341, "column": 78 }, "end": { - "line": 339, + "line": 341, "column": 79 } } @@ -99027,15 +98481,15 @@ "binop": null }, "value": "buffer", - "start": 17942, - "end": 17948, + "start": 17964, + "end": 17970, "loc": { "start": { - "line": 339, + "line": 341, "column": 79 }, "end": { - "line": 339, + "line": 341, "column": 85 } } @@ -99052,15 +98506,15 @@ "postfix": false, "binop": null }, - "start": 17948, - "end": 17949, + "start": 17970, + "end": 17971, "loc": { "start": { - "line": 339, + "line": 341, "column": 85 }, "end": { - "line": 339, + "line": 341, "column": 86 } } @@ -99078,15 +98532,15 @@ "binop": null, "updateContext": null }, - "start": 17949, - "end": 17950, + "start": 17971, + "end": 17972, "loc": { "start": { - "line": 339, + "line": 341, "column": 86 }, "end": { - "line": 339, + "line": 341, "column": 87 } } @@ -99104,15 +98558,15 @@ "binop": null }, "value": "eachGeometryUVsPortion", - "start": 17959, - "end": 17981, + "start": 17981, + "end": 18003, "loc": { "start": { - "line": 340, + "line": 342, "column": 8 }, "end": { - "line": 340, + "line": 342, "column": 30 } } @@ -99130,15 +98584,15 @@ "binop": null, "updateContext": null }, - "start": 17981, - "end": 17982, + "start": 18003, + "end": 18004, "loc": { "start": { - "line": 340, + "line": 342, "column": 30 }, "end": { - "line": 340, + "line": 342, "column": 31 } } @@ -99156,15 +98610,15 @@ "binop": null }, "value": "pako", - "start": 17983, - "end": 17987, + "start": 18005, + "end": 18009, "loc": { "start": { - "line": 340, + "line": 342, "column": 32 }, "end": { - "line": 340, + "line": 342, "column": 36 } } @@ -99182,15 +98636,15 @@ "binop": null, "updateContext": null }, - "start": 17987, - "end": 17988, + "start": 18009, + "end": 18010, "loc": { "start": { - "line": 340, + "line": 342, "column": 36 }, "end": { - "line": 340, + "line": 342, "column": 37 } } @@ -99208,15 +98662,15 @@ "binop": null }, "value": "deflate", - "start": 17988, - "end": 17995, + "start": 18010, + "end": 18017, "loc": { "start": { - "line": 340, + "line": 342, "column": 37 }, "end": { - "line": 340, + "line": 342, "column": 44 } } @@ -99233,15 +98687,15 @@ "postfix": false, "binop": null }, - "start": 17995, - "end": 17996, + "start": 18017, + "end": 18018, "loc": { "start": { - "line": 340, + "line": 342, "column": 44 }, "end": { - "line": 340, + "line": 342, "column": 45 } } @@ -99259,15 +98713,15 @@ "binop": null }, "value": "data", - "start": 17996, - "end": 18000, + "start": 18018, + "end": 18022, "loc": { "start": { - "line": 340, + "line": 342, "column": 45 }, "end": { - "line": 340, + "line": 342, "column": 49 } } @@ -99285,15 +98739,15 @@ "binop": null, "updateContext": null }, - "start": 18000, - "end": 18001, + "start": 18022, + "end": 18023, "loc": { "start": { - "line": 340, + "line": 342, "column": 49 }, "end": { - "line": 340, + "line": 342, "column": 50 } } @@ -99311,15 +98765,15 @@ "binop": null }, "value": "eachGeometryUVsPortion", - "start": 18001, - "end": 18023, + "start": 18023, + "end": 18045, "loc": { "start": { - "line": 340, + "line": 342, "column": 50 }, "end": { - "line": 340, + "line": 342, "column": 72 } } @@ -99337,15 +98791,15 @@ "binop": null, "updateContext": null }, - "start": 18023, - "end": 18024, + "start": 18045, + "end": 18046, "loc": { "start": { - "line": 340, + "line": 342, "column": 72 }, "end": { - "line": 340, + "line": 342, "column": 73 } } @@ -99363,15 +98817,15 @@ "binop": null }, "value": "buffer", - "start": 18024, - "end": 18030, + "start": 18046, + "end": 18052, "loc": { "start": { - "line": 340, + "line": 342, "column": 73 }, "end": { - "line": 340, + "line": 342, "column": 79 } } @@ -99388,15 +98842,15 @@ "postfix": false, "binop": null }, - "start": 18030, - "end": 18031, + "start": 18052, + "end": 18053, "loc": { "start": { - "line": 340, + "line": 342, "column": 79 }, "end": { - "line": 340, + "line": 342, "column": 80 } } @@ -99414,15 +98868,15 @@ "binop": null, "updateContext": null }, - "start": 18031, - "end": 18032, + "start": 18053, + "end": 18054, "loc": { "start": { - "line": 340, + "line": 342, "column": 80 }, "end": { - "line": 340, + "line": 342, "column": 81 } } @@ -99440,15 +98894,15 @@ "binop": null }, "value": "eachGeometryIndicesPortion", - "start": 18041, - "end": 18067, + "start": 18063, + "end": 18089, "loc": { "start": { - "line": 341, + "line": 343, "column": 8 }, "end": { - "line": 341, + "line": 343, "column": 34 } } @@ -99466,15 +98920,15 @@ "binop": null, "updateContext": null }, - "start": 18067, - "end": 18068, + "start": 18089, + "end": 18090, "loc": { "start": { - "line": 341, + "line": 343, "column": 34 }, "end": { - "line": 341, + "line": 343, "column": 35 } } @@ -99492,15 +98946,15 @@ "binop": null }, "value": "pako", - "start": 18069, - "end": 18073, + "start": 18091, + "end": 18095, "loc": { "start": { - "line": 341, + "line": 343, "column": 36 }, "end": { - "line": 341, + "line": 343, "column": 40 } } @@ -99518,15 +98972,15 @@ "binop": null, "updateContext": null }, - "start": 18073, - "end": 18074, + "start": 18095, + "end": 18096, "loc": { "start": { - "line": 341, + "line": 343, "column": 40 }, "end": { - "line": 341, + "line": 343, "column": 41 } } @@ -99544,15 +98998,15 @@ "binop": null }, "value": "deflate", - "start": 18074, - "end": 18081, + "start": 18096, + "end": 18103, "loc": { "start": { - "line": 341, + "line": 343, "column": 41 }, "end": { - "line": 341, + "line": 343, "column": 48 } } @@ -99569,15 +99023,15 @@ "postfix": false, "binop": null }, - "start": 18081, - "end": 18082, + "start": 18103, + "end": 18104, "loc": { "start": { - "line": 341, + "line": 343, "column": 48 }, "end": { - "line": 341, + "line": 343, "column": 49 } } @@ -99595,15 +99049,15 @@ "binop": null }, "value": "data", - "start": 18082, - "end": 18086, + "start": 18104, + "end": 18108, "loc": { "start": { - "line": 341, + "line": 343, "column": 49 }, "end": { - "line": 341, + "line": 343, "column": 53 } } @@ -99621,15 +99075,15 @@ "binop": null, "updateContext": null }, - "start": 18086, - "end": 18087, + "start": 18108, + "end": 18109, "loc": { "start": { - "line": 341, + "line": 343, "column": 53 }, "end": { - "line": 341, + "line": 343, "column": 54 } } @@ -99647,15 +99101,15 @@ "binop": null }, "value": "eachGeometryIndicesPortion", - "start": 18087, - "end": 18113, + "start": 18109, + "end": 18135, "loc": { "start": { - "line": 341, + "line": 343, "column": 54 }, "end": { - "line": 341, + "line": 343, "column": 80 } } @@ -99673,15 +99127,15 @@ "binop": null, "updateContext": null }, - "start": 18113, - "end": 18114, + "start": 18135, + "end": 18136, "loc": { "start": { - "line": 341, + "line": 343, "column": 80 }, "end": { - "line": 341, + "line": 343, "column": 81 } } @@ -99699,15 +99153,15 @@ "binop": null }, "value": "buffer", - "start": 18114, - "end": 18120, + "start": 18136, + "end": 18142, "loc": { "start": { - "line": 341, + "line": 343, "column": 81 }, "end": { - "line": 341, + "line": 343, "column": 87 } } @@ -99724,15 +99178,15 @@ "postfix": false, "binop": null }, - "start": 18120, - "end": 18121, + "start": 18142, + "end": 18143, "loc": { "start": { - "line": 341, + "line": 343, "column": 87 }, "end": { - "line": 341, + "line": 343, "column": 88 } } @@ -99750,15 +99204,15 @@ "binop": null, "updateContext": null }, - "start": 18121, - "end": 18122, + "start": 18143, + "end": 18144, "loc": { "start": { - "line": 341, + "line": 343, "column": 88 }, "end": { - "line": 341, + "line": 343, "column": 89 } } @@ -99776,15 +99230,15 @@ "binop": null }, "value": "eachGeometryEdgeIndicesPortion", - "start": 18131, - "end": 18161, + "start": 18153, + "end": 18183, "loc": { "start": { - "line": 342, + "line": 344, "column": 8 }, "end": { - "line": 342, + "line": 344, "column": 38 } } @@ -99802,15 +99256,15 @@ "binop": null, "updateContext": null }, - "start": 18161, - "end": 18162, + "start": 18183, + "end": 18184, "loc": { "start": { - "line": 342, + "line": 344, "column": 38 }, "end": { - "line": 342, + "line": 344, "column": 39 } } @@ -99828,15 +99282,15 @@ "binop": null }, "value": "pako", - "start": 18163, - "end": 18167, + "start": 18185, + "end": 18189, "loc": { "start": { - "line": 342, + "line": 344, "column": 40 }, "end": { - "line": 342, + "line": 344, "column": 44 } } @@ -99854,15 +99308,15 @@ "binop": null, "updateContext": null }, - "start": 18167, - "end": 18168, + "start": 18189, + "end": 18190, "loc": { "start": { - "line": 342, + "line": 344, "column": 44 }, "end": { - "line": 342, + "line": 344, "column": 45 } } @@ -99880,15 +99334,15 @@ "binop": null }, "value": "deflate", - "start": 18168, - "end": 18175, + "start": 18190, + "end": 18197, "loc": { "start": { - "line": 342, + "line": 344, "column": 45 }, "end": { - "line": 342, + "line": 344, "column": 52 } } @@ -99905,15 +99359,15 @@ "postfix": false, "binop": null }, - "start": 18175, - "end": 18176, + "start": 18197, + "end": 18198, "loc": { "start": { - "line": 342, + "line": 344, "column": 52 }, "end": { - "line": 342, + "line": 344, "column": 53 } } @@ -99931,15 +99385,15 @@ "binop": null }, "value": "data", - "start": 18176, - "end": 18180, + "start": 18198, + "end": 18202, "loc": { "start": { - "line": 342, + "line": 344, "column": 53 }, "end": { - "line": 342, + "line": 344, "column": 57 } } @@ -99957,15 +99411,15 @@ "binop": null, "updateContext": null }, - "start": 18180, - "end": 18181, + "start": 18202, + "end": 18203, "loc": { "start": { - "line": 342, + "line": 344, "column": 57 }, "end": { - "line": 342, + "line": 344, "column": 58 } } @@ -99983,15 +99437,15 @@ "binop": null }, "value": "eachGeometryEdgeIndicesPortion", - "start": 18181, - "end": 18211, + "start": 18203, + "end": 18233, "loc": { "start": { - "line": 342, + "line": 344, "column": 58 }, "end": { - "line": 342, + "line": 344, "column": 88 } } @@ -100009,15 +99463,15 @@ "binop": null, "updateContext": null }, - "start": 18211, - "end": 18212, + "start": 18233, + "end": 18234, "loc": { "start": { - "line": 342, + "line": 344, "column": 88 }, "end": { - "line": 342, + "line": 344, "column": 89 } } @@ -100035,15 +99489,15 @@ "binop": null }, "value": "buffer", - "start": 18212, - "end": 18218, + "start": 18234, + "end": 18240, "loc": { "start": { - "line": 342, + "line": 344, "column": 89 }, "end": { - "line": 342, + "line": 344, "column": 95 } } @@ -100060,15 +99514,15 @@ "postfix": false, "binop": null }, - "start": 18218, - "end": 18219, + "start": 18240, + "end": 18241, "loc": { "start": { - "line": 342, + "line": 344, "column": 95 }, "end": { - "line": 342, + "line": 344, "column": 96 } } @@ -100086,15 +99540,15 @@ "binop": null, "updateContext": null }, - "start": 18219, - "end": 18220, + "start": 18241, + "end": 18242, "loc": { "start": { - "line": 342, + "line": 344, "column": 96 }, "end": { - "line": 342, + "line": 344, "column": 97 } } @@ -100112,15 +99566,15 @@ "binop": null }, "value": "eachMeshGeometriesPortion", - "start": 18229, - "end": 18254, + "start": 18251, + "end": 18276, "loc": { "start": { - "line": 343, + "line": 345, "column": 8 }, "end": { - "line": 343, + "line": 345, "column": 33 } } @@ -100138,15 +99592,15 @@ "binop": null, "updateContext": null }, - "start": 18254, - "end": 18255, + "start": 18276, + "end": 18277, "loc": { "start": { - "line": 343, + "line": 345, "column": 33 }, "end": { - "line": 343, + "line": 345, "column": 34 } } @@ -100164,15 +99618,15 @@ "binop": null }, "value": "pako", - "start": 18256, - "end": 18260, + "start": 18278, + "end": 18282, "loc": { "start": { - "line": 343, + "line": 345, "column": 35 }, "end": { - "line": 343, + "line": 345, "column": 39 } } @@ -100190,15 +99644,15 @@ "binop": null, "updateContext": null }, - "start": 18260, - "end": 18261, + "start": 18282, + "end": 18283, "loc": { "start": { - "line": 343, + "line": 345, "column": 39 }, "end": { - "line": 343, + "line": 345, "column": 40 } } @@ -100216,15 +99670,15 @@ "binop": null }, "value": "deflate", - "start": 18261, - "end": 18268, + "start": 18283, + "end": 18290, "loc": { "start": { - "line": 343, + "line": 345, "column": 40 }, "end": { - "line": 343, + "line": 345, "column": 47 } } @@ -100241,15 +99695,15 @@ "postfix": false, "binop": null }, - "start": 18268, - "end": 18269, + "start": 18290, + "end": 18291, "loc": { "start": { - "line": 343, + "line": 345, "column": 47 }, "end": { - "line": 343, + "line": 345, "column": 48 } } @@ -100267,15 +99721,15 @@ "binop": null }, "value": "data", - "start": 18269, - "end": 18273, + "start": 18291, + "end": 18295, "loc": { "start": { - "line": 343, + "line": 345, "column": 48 }, "end": { - "line": 343, + "line": 345, "column": 52 } } @@ -100293,15 +99747,15 @@ "binop": null, "updateContext": null }, - "start": 18273, - "end": 18274, + "start": 18295, + "end": 18296, "loc": { "start": { - "line": 343, + "line": 345, "column": 52 }, "end": { - "line": 343, + "line": 345, "column": 53 } } @@ -100319,15 +99773,15 @@ "binop": null }, "value": "eachMeshGeometriesPortion", - "start": 18274, - "end": 18299, + "start": 18296, + "end": 18321, "loc": { "start": { - "line": 343, + "line": 345, "column": 53 }, "end": { - "line": 343, + "line": 345, "column": 78 } } @@ -100345,15 +99799,15 @@ "binop": null, "updateContext": null }, - "start": 18299, - "end": 18300, + "start": 18321, + "end": 18322, "loc": { "start": { - "line": 343, + "line": 345, "column": 78 }, "end": { - "line": 343, + "line": 345, "column": 79 } } @@ -100371,15 +99825,15 @@ "binop": null }, "value": "buffer", - "start": 18300, - "end": 18306, + "start": 18322, + "end": 18328, "loc": { "start": { - "line": 343, + "line": 345, "column": 79 }, "end": { - "line": 343, + "line": 345, "column": 85 } } @@ -100396,15 +99850,15 @@ "postfix": false, "binop": null }, - "start": 18306, - "end": 18307, + "start": 18328, + "end": 18329, "loc": { "start": { - "line": 343, + "line": 345, "column": 85 }, "end": { - "line": 343, + "line": 345, "column": 86 } } @@ -100422,15 +99876,15 @@ "binop": null, "updateContext": null }, - "start": 18307, - "end": 18308, + "start": 18329, + "end": 18330, "loc": { "start": { - "line": 343, + "line": 345, "column": 86 }, "end": { - "line": 343, + "line": 345, "column": 87 } } @@ -100448,15 +99902,15 @@ "binop": null }, "value": "eachMeshMatricesPortion", - "start": 18317, - "end": 18340, + "start": 18339, + "end": 18362, "loc": { "start": { - "line": 344, + "line": 346, "column": 8 }, "end": { - "line": 344, + "line": 346, "column": 31 } } @@ -100474,15 +99928,15 @@ "binop": null, "updateContext": null }, - "start": 18340, - "end": 18341, + "start": 18362, + "end": 18363, "loc": { "start": { - "line": 344, + "line": 346, "column": 31 }, "end": { - "line": 344, + "line": 346, "column": 32 } } @@ -100500,15 +99954,15 @@ "binop": null }, "value": "pako", - "start": 18342, - "end": 18346, + "start": 18364, + "end": 18368, "loc": { "start": { - "line": 344, + "line": 346, "column": 33 }, "end": { - "line": 344, + "line": 346, "column": 37 } } @@ -100526,15 +99980,15 @@ "binop": null, "updateContext": null }, - "start": 18346, - "end": 18347, + "start": 18368, + "end": 18369, "loc": { "start": { - "line": 344, + "line": 346, "column": 37 }, "end": { - "line": 344, + "line": 346, "column": 38 } } @@ -100552,15 +100006,15 @@ "binop": null }, "value": "deflate", - "start": 18347, - "end": 18354, + "start": 18369, + "end": 18376, "loc": { "start": { - "line": 344, + "line": 346, "column": 38 }, "end": { - "line": 344, + "line": 346, "column": 45 } } @@ -100577,15 +100031,15 @@ "postfix": false, "binop": null }, - "start": 18354, - "end": 18355, + "start": 18376, + "end": 18377, "loc": { "start": { - "line": 344, + "line": 346, "column": 45 }, "end": { - "line": 344, + "line": 346, "column": 46 } } @@ -100603,15 +100057,15 @@ "binop": null }, "value": "data", - "start": 18355, - "end": 18359, + "start": 18377, + "end": 18381, "loc": { "start": { - "line": 344, + "line": 346, "column": 46 }, "end": { - "line": 344, + "line": 346, "column": 50 } } @@ -100629,15 +100083,15 @@ "binop": null, "updateContext": null }, - "start": 18359, - "end": 18360, + "start": 18381, + "end": 18382, "loc": { "start": { - "line": 344, + "line": 346, "column": 50 }, "end": { - "line": 344, + "line": 346, "column": 51 } } @@ -100655,15 +100109,15 @@ "binop": null }, "value": "eachMeshMatricesPortion", - "start": 18360, - "end": 18383, + "start": 18382, + "end": 18405, "loc": { "start": { - "line": 344, + "line": 346, "column": 51 }, "end": { - "line": 344, + "line": 346, "column": 74 } } @@ -100681,15 +100135,15 @@ "binop": null, "updateContext": null }, - "start": 18383, - "end": 18384, + "start": 18405, + "end": 18406, "loc": { "start": { - "line": 344, + "line": 346, "column": 74 }, "end": { - "line": 344, + "line": 346, "column": 75 } } @@ -100707,15 +100161,15 @@ "binop": null }, "value": "buffer", - "start": 18384, - "end": 18390, + "start": 18406, + "end": 18412, "loc": { "start": { - "line": 344, + "line": 346, "column": 75 }, "end": { - "line": 344, + "line": 346, "column": 81 } } @@ -100732,15 +100186,15 @@ "postfix": false, "binop": null }, - "start": 18390, - "end": 18391, + "start": 18412, + "end": 18413, "loc": { "start": { - "line": 344, + "line": 346, "column": 81 }, "end": { - "line": 344, + "line": 346, "column": 82 } } @@ -100758,15 +100212,15 @@ "binop": null, "updateContext": null }, - "start": 18391, - "end": 18392, + "start": 18413, + "end": 18414, "loc": { "start": { - "line": 344, + "line": 346, "column": 82 }, "end": { - "line": 344, + "line": 346, "column": 83 } } @@ -100784,15 +100238,15 @@ "binop": null }, "value": "eachMeshTextureSet", - "start": 18401, - "end": 18419, + "start": 18423, + "end": 18441, "loc": { "start": { - "line": 345, + "line": 347, "column": 8 }, "end": { - "line": 345, + "line": 347, "column": 26 } } @@ -100810,15 +100264,15 @@ "binop": null, "updateContext": null }, - "start": 18419, - "end": 18420, + "start": 18441, + "end": 18442, "loc": { "start": { - "line": 345, + "line": 347, "column": 26 }, "end": { - "line": 345, + "line": 347, "column": 27 } } @@ -100836,15 +100290,15 @@ "binop": null }, "value": "pako", - "start": 18421, - "end": 18425, + "start": 18443, + "end": 18447, "loc": { "start": { - "line": 345, + "line": 347, "column": 28 }, "end": { - "line": 345, + "line": 347, "column": 32 } } @@ -100862,15 +100316,15 @@ "binop": null, "updateContext": null }, - "start": 18425, - "end": 18426, + "start": 18447, + "end": 18448, "loc": { "start": { - "line": 345, + "line": 347, "column": 32 }, "end": { - "line": 345, + "line": 347, "column": 33 } } @@ -100888,15 +100342,15 @@ "binop": null }, "value": "deflate", - "start": 18426, - "end": 18433, + "start": 18448, + "end": 18455, "loc": { "start": { - "line": 345, + "line": 347, "column": 33 }, "end": { - "line": 345, + "line": 347, "column": 40 } } @@ -100913,15 +100367,15 @@ "postfix": false, "binop": null }, - "start": 18433, - "end": 18434, + "start": 18455, + "end": 18456, "loc": { "start": { - "line": 345, + "line": 347, "column": 40 }, "end": { - "line": 345, + "line": 347, "column": 41 } } @@ -100939,15 +100393,15 @@ "binop": null }, "value": "data", - "start": 18434, - "end": 18438, + "start": 18456, + "end": 18460, "loc": { "start": { - "line": 345, + "line": 347, "column": 41 }, "end": { - "line": 345, + "line": 347, "column": 45 } } @@ -100965,15 +100419,15 @@ "binop": null, "updateContext": null }, - "start": 18438, - "end": 18439, + "start": 18460, + "end": 18461, "loc": { "start": { - "line": 345, + "line": 347, "column": 45 }, "end": { - "line": 345, + "line": 347, "column": 46 } } @@ -100991,15 +100445,15 @@ "binop": null }, "value": "eachMeshTextureSet", - "start": 18439, - "end": 18457, + "start": 18461, + "end": 18479, "loc": { "start": { - "line": 345, + "line": 347, "column": 46 }, "end": { - "line": 345, + "line": 347, "column": 64 } } @@ -101017,15 +100471,15 @@ "binop": null, "updateContext": null }, - "start": 18457, - "end": 18458, + "start": 18479, + "end": 18480, "loc": { "start": { - "line": 345, + "line": 347, "column": 64 }, "end": { - "line": 345, + "line": 347, "column": 65 } } @@ -101043,15 +100497,15 @@ "binop": null }, "value": "buffer", - "start": 18458, - "end": 18464, + "start": 18480, + "end": 18486, "loc": { "start": { - "line": 345, + "line": 347, "column": 65 }, "end": { - "line": 345, + "line": 347, "column": 71 } } @@ -101068,15 +100522,15 @@ "postfix": false, "binop": null }, - "start": 18464, - "end": 18465, + "start": 18486, + "end": 18487, "loc": { "start": { - "line": 345, + "line": 347, "column": 71 }, "end": { - "line": 345, + "line": 347, "column": 72 } } @@ -101094,15 +100548,15 @@ "binop": null, "updateContext": null }, - "start": 18465, - "end": 18466, + "start": 18487, + "end": 18488, "loc": { "start": { - "line": 345, + "line": 347, "column": 72 }, "end": { - "line": 345, + "line": 347, "column": 73 } } @@ -101120,15 +100574,15 @@ "binop": null }, "value": "eachMeshMaterialAttributes", - "start": 18475, - "end": 18501, + "start": 18497, + "end": 18523, "loc": { "start": { - "line": 346, + "line": 348, "column": 8 }, "end": { - "line": 346, + "line": 348, "column": 34 } } @@ -101146,15 +100600,15 @@ "binop": null, "updateContext": null }, - "start": 18501, - "end": 18502, + "start": 18523, + "end": 18524, "loc": { "start": { - "line": 346, + "line": 348, "column": 34 }, "end": { - "line": 346, + "line": 348, "column": 35 } } @@ -101172,15 +100626,15 @@ "binop": null }, "value": "pako", - "start": 18503, - "end": 18507, + "start": 18525, + "end": 18529, "loc": { "start": { - "line": 346, + "line": 348, "column": 36 }, "end": { - "line": 346, + "line": 348, "column": 40 } } @@ -101198,15 +100652,15 @@ "binop": null, "updateContext": null }, - "start": 18507, - "end": 18508, + "start": 18529, + "end": 18530, "loc": { "start": { - "line": 346, + "line": 348, "column": 40 }, "end": { - "line": 346, + "line": 348, "column": 41 } } @@ -101224,15 +100678,15 @@ "binop": null }, "value": "deflate", - "start": 18508, - "end": 18515, + "start": 18530, + "end": 18537, "loc": { "start": { - "line": 346, + "line": 348, "column": 41 }, "end": { - "line": 346, + "line": 348, "column": 48 } } @@ -101249,15 +100703,15 @@ "postfix": false, "binop": null }, - "start": 18515, - "end": 18516, + "start": 18537, + "end": 18538, "loc": { "start": { - "line": 346, + "line": 348, "column": 48 }, "end": { - "line": 346, + "line": 348, "column": 49 } } @@ -101275,15 +100729,15 @@ "binop": null }, "value": "data", - "start": 18516, - "end": 18520, + "start": 18538, + "end": 18542, "loc": { "start": { - "line": 346, + "line": 348, "column": 49 }, "end": { - "line": 346, + "line": 348, "column": 53 } } @@ -101301,15 +100755,15 @@ "binop": null, "updateContext": null }, - "start": 18520, - "end": 18521, + "start": 18542, + "end": 18543, "loc": { "start": { - "line": 346, + "line": 348, "column": 53 }, "end": { - "line": 346, + "line": 348, "column": 54 } } @@ -101327,15 +100781,15 @@ "binop": null }, "value": "eachMeshMaterialAttributes", - "start": 18521, - "end": 18547, + "start": 18543, + "end": 18569, "loc": { "start": { - "line": 346, + "line": 348, "column": 54 }, "end": { - "line": 346, + "line": 348, "column": 80 } } @@ -101353,15 +100807,15 @@ "binop": null, "updateContext": null }, - "start": 18547, - "end": 18548, + "start": 18569, + "end": 18570, "loc": { "start": { - "line": 346, + "line": 348, "column": 80 }, "end": { - "line": 346, + "line": 348, "column": 81 } } @@ -101379,15 +100833,15 @@ "binop": null }, "value": "buffer", - "start": 18548, - "end": 18554, + "start": 18570, + "end": 18576, "loc": { "start": { - "line": 346, + "line": 348, "column": 81 }, "end": { - "line": 346, + "line": 348, "column": 87 } } @@ -101404,15 +100858,15 @@ "postfix": false, "binop": null }, - "start": 18554, - "end": 18555, + "start": 18576, + "end": 18577, "loc": { "start": { - "line": 346, + "line": 348, "column": 87 }, "end": { - "line": 346, + "line": 348, "column": 88 } } @@ -101430,15 +100884,15 @@ "binop": null, "updateContext": null }, - "start": 18555, - "end": 18556, + "start": 18577, + "end": 18578, "loc": { "start": { - "line": 346, + "line": 348, "column": 88 }, "end": { - "line": 346, + "line": 348, "column": 89 } } @@ -101456,15 +100910,15 @@ "binop": null }, "value": "eachEntityId", - "start": 18565, - "end": 18577, + "start": 18587, + "end": 18599, "loc": { "start": { - "line": 347, + "line": 349, "column": 8 }, "end": { - "line": 347, + "line": 349, "column": 20 } } @@ -101482,15 +100936,15 @@ "binop": null, "updateContext": null }, - "start": 18577, - "end": 18578, + "start": 18599, + "end": 18600, "loc": { "start": { - "line": 347, + "line": 349, "column": 20 }, "end": { - "line": 347, + "line": 349, "column": 21 } } @@ -101508,15 +100962,15 @@ "binop": null }, "value": "pako", - "start": 18579, - "end": 18583, + "start": 18601, + "end": 18605, "loc": { "start": { - "line": 347, + "line": 349, "column": 22 }, "end": { - "line": 347, + "line": 349, "column": 26 } } @@ -101534,15 +100988,15 @@ "binop": null, "updateContext": null }, - "start": 18583, - "end": 18584, + "start": 18605, + "end": 18606, "loc": { "start": { - "line": 347, + "line": 349, "column": 26 }, "end": { - "line": 347, + "line": 349, "column": 27 } } @@ -101560,15 +101014,15 @@ "binop": null }, "value": "deflate", - "start": 18584, - "end": 18591, + "start": 18606, + "end": 18613, "loc": { "start": { - "line": 347, + "line": 349, "column": 27 }, "end": { - "line": 347, + "line": 349, "column": 34 } } @@ -101585,15 +101039,15 @@ "postfix": false, "binop": null }, - "start": 18591, - "end": 18592, + "start": 18613, + "end": 18614, "loc": { "start": { - "line": 347, + "line": 349, "column": 34 }, "end": { - "line": 347, + "line": 349, "column": 35 } } @@ -101611,15 +101065,15 @@ "binop": null }, "value": "JSON", - "start": 18592, - "end": 18596, + "start": 18614, + "end": 18618, "loc": { "start": { - "line": 347, + "line": 349, "column": 35 }, "end": { - "line": 347, + "line": 349, "column": 39 } } @@ -101637,15 +101091,15 @@ "binop": null, "updateContext": null }, - "start": 18596, - "end": 18597, + "start": 18618, + "end": 18619, "loc": { "start": { - "line": 347, + "line": 349, "column": 39 }, "end": { - "line": 347, + "line": 349, "column": 40 } } @@ -101663,15 +101117,15 @@ "binop": null }, "value": "stringify", - "start": 18597, - "end": 18606, + "start": 18619, + "end": 18628, "loc": { "start": { - "line": 347, + "line": 349, "column": 40 }, "end": { - "line": 347, + "line": 349, "column": 49 } } @@ -101688,15 +101142,15 @@ "postfix": false, "binop": null }, - "start": 18606, - "end": 18607, + "start": 18628, + "end": 18629, "loc": { "start": { - "line": 347, + "line": 349, "column": 49 }, "end": { - "line": 347, + "line": 349, "column": 50 } } @@ -101714,15 +101168,15 @@ "binop": null }, "value": "data", - "start": 18607, - "end": 18611, + "start": 18629, + "end": 18633, "loc": { "start": { - "line": 347, + "line": 349, "column": 50 }, "end": { - "line": 347, + "line": 349, "column": 54 } } @@ -101740,15 +101194,15 @@ "binop": null, "updateContext": null }, - "start": 18611, - "end": 18612, + "start": 18633, + "end": 18634, "loc": { "start": { - "line": 347, + "line": 349, "column": 54 }, "end": { - "line": 347, + "line": 349, "column": 55 } } @@ -101766,15 +101220,15 @@ "binop": null }, "value": "eachEntityId", - "start": 18612, - "end": 18624, + "start": 18634, + "end": 18646, "loc": { "start": { - "line": 347, + "line": 349, "column": 55 }, "end": { - "line": 347, + "line": 349, "column": 67 } } @@ -101791,15 +101245,15 @@ "postfix": false, "binop": null }, - "start": 18624, - "end": 18625, + "start": 18646, + "end": 18647, "loc": { "start": { - "line": 347, + "line": 349, "column": 67 }, "end": { - "line": 347, + "line": 349, "column": 68 } } @@ -101817,15 +101271,15 @@ "binop": null, "updateContext": null }, - "start": 18638, - "end": 18639, + "start": 18660, + "end": 18661, "loc": { "start": { - "line": 348, + "line": 350, "column": 12 }, "end": { - "line": 348, + "line": 350, "column": 13 } } @@ -101843,15 +101297,15 @@ "binop": null }, "value": "replace", - "start": 18639, - "end": 18646, + "start": 18661, + "end": 18668, "loc": { "start": { - "line": 348, + "line": 350, "column": 13 }, "end": { - "line": 348, + "line": 350, "column": 20 } } @@ -101868,15 +101322,15 @@ "postfix": false, "binop": null }, - "start": 18646, - "end": 18647, + "start": 18668, + "end": 18669, "loc": { "start": { - "line": 348, + "line": 350, "column": 20 }, "end": { - "line": 348, + "line": 350, "column": 21 } } @@ -101898,15 +101352,15 @@ "pattern": "[\\u007F-\\uFFFF]", "flags": "g" }, - "start": 18647, - "end": 18665, + "start": 18669, + "end": 18687, "loc": { "start": { - "line": 348, + "line": 350, "column": 21 }, "end": { - "line": 348, + "line": 350, "column": 39 } } @@ -101924,15 +101378,15 @@ "binop": null, "updateContext": null }, - "start": 18665, - "end": 18666, + "start": 18687, + "end": 18688, "loc": { "start": { - "line": 348, + "line": 350, "column": 39 }, "end": { - "line": 348, + "line": 350, "column": 40 } } @@ -101951,15 +101405,15 @@ "binop": null }, "value": "function", - "start": 18667, - "end": 18675, + "start": 18689, + "end": 18697, "loc": { "start": { - "line": 348, + "line": 350, "column": 41 }, "end": { - "line": 348, + "line": 350, "column": 49 } } @@ -101976,15 +101430,15 @@ "postfix": false, "binop": null }, - "start": 18676, - "end": 18677, + "start": 18698, + "end": 18699, "loc": { "start": { - "line": 348, + "line": 350, "column": 50 }, "end": { - "line": 348, + "line": 350, "column": 51 } } @@ -102002,15 +101456,15 @@ "binop": null }, "value": "chr", - "start": 18677, - "end": 18680, + "start": 18699, + "end": 18702, "loc": { "start": { - "line": 348, + "line": 350, "column": 51 }, "end": { - "line": 348, + "line": 350, "column": 54 } } @@ -102027,15 +101481,15 @@ "postfix": false, "binop": null }, - "start": 18680, - "end": 18681, + "start": 18702, + "end": 18703, "loc": { "start": { - "line": 348, + "line": 350, "column": 54 }, "end": { - "line": 348, + "line": 350, "column": 55 } } @@ -102052,15 +101506,15 @@ "postfix": false, "binop": null }, - "start": 18682, - "end": 18683, + "start": 18704, + "end": 18705, "loc": { "start": { - "line": 348, + "line": 350, "column": 56 }, "end": { - "line": 348, + "line": 350, "column": 57 } } @@ -102068,15 +101522,15 @@ { "type": "CommentLine", "value": " Produce only ASCII-chars, so that the data can be inflated later", - "start": 18684, - "end": 18751, + "start": 18706, + "end": 18773, "loc": { "start": { - "line": 348, + "line": 350, "column": 58 }, "end": { - "line": 348, + "line": 350, "column": 125 } } @@ -102096,15 +101550,15 @@ "updateContext": null }, "value": "return", - "start": 18768, - "end": 18774, + "start": 18790, + "end": 18796, "loc": { "start": { - "line": 349, + "line": 351, "column": 16 }, "end": { - "line": 349, + "line": 351, "column": 22 } } @@ -102123,15 +101577,15 @@ "updateContext": null }, "value": "\\u", - "start": 18775, - "end": 18780, + "start": 18797, + "end": 18802, "loc": { "start": { - "line": 349, + "line": 351, "column": 23 }, "end": { - "line": 349, + "line": 351, "column": 28 } } @@ -102150,15 +101604,15 @@ "updateContext": null }, "value": "+", - "start": 18781, - "end": 18782, + "start": 18803, + "end": 18804, "loc": { "start": { - "line": 349, + "line": 351, "column": 29 }, "end": { - "line": 349, + "line": 351, "column": 30 } } @@ -102175,15 +101629,15 @@ "postfix": false, "binop": null }, - "start": 18783, - "end": 18784, + "start": 18805, + "end": 18806, "loc": { "start": { - "line": 349, + "line": 351, "column": 31 }, "end": { - "line": 349, + "line": 351, "column": 32 } } @@ -102202,15 +101656,15 @@ "updateContext": null }, "value": "0000", - "start": 18784, - "end": 18790, + "start": 18806, + "end": 18812, "loc": { "start": { - "line": 349, + "line": 351, "column": 32 }, "end": { - "line": 349, + "line": 351, "column": 38 } } @@ -102229,15 +101683,15 @@ "updateContext": null }, "value": "+", - "start": 18791, - "end": 18792, + "start": 18813, + "end": 18814, "loc": { "start": { - "line": 349, + "line": 351, "column": 39 }, "end": { - "line": 349, + "line": 351, "column": 40 } } @@ -102255,15 +101709,15 @@ "binop": null }, "value": "chr", - "start": 18793, - "end": 18796, + "start": 18815, + "end": 18818, "loc": { "start": { - "line": 349, + "line": 351, "column": 41 }, "end": { - "line": 349, + "line": 351, "column": 44 } } @@ -102281,15 +101735,15 @@ "binop": null, "updateContext": null }, - "start": 18796, - "end": 18797, + "start": 18818, + "end": 18819, "loc": { "start": { - "line": 349, + "line": 351, "column": 44 }, "end": { - "line": 349, + "line": 351, "column": 45 } } @@ -102307,15 +101761,15 @@ "binop": null }, "value": "charCodeAt", - "start": 18797, - "end": 18807, + "start": 18819, + "end": 18829, "loc": { "start": { - "line": 349, + "line": 351, "column": 45 }, "end": { - "line": 349, + "line": 351, "column": 55 } } @@ -102332,15 +101786,15 @@ "postfix": false, "binop": null }, - "start": 18807, - "end": 18808, + "start": 18829, + "end": 18830, "loc": { "start": { - "line": 349, + "line": 351, "column": 55 }, "end": { - "line": 349, + "line": 351, "column": 56 } } @@ -102359,15 +101813,15 @@ "updateContext": null }, "value": 0, - "start": 18808, - "end": 18809, + "start": 18830, + "end": 18831, "loc": { "start": { - "line": 349, + "line": 351, "column": 56 }, "end": { - "line": 349, + "line": 351, "column": 57 } } @@ -102384,15 +101838,15 @@ "postfix": false, "binop": null }, - "start": 18809, - "end": 18810, + "start": 18831, + "end": 18832, "loc": { "start": { - "line": 349, + "line": 351, "column": 57 }, "end": { - "line": 349, + "line": 351, "column": 58 } } @@ -102410,15 +101864,15 @@ "binop": null, "updateContext": null }, - "start": 18810, - "end": 18811, + "start": 18832, + "end": 18833, "loc": { "start": { - "line": 349, + "line": 351, "column": 58 }, "end": { - "line": 349, + "line": 351, "column": 59 } } @@ -102436,15 +101890,15 @@ "binop": null }, "value": "toString", - "start": 18811, - "end": 18819, + "start": 18833, + "end": 18841, "loc": { "start": { - "line": 349, + "line": 351, "column": 59 }, "end": { - "line": 349, + "line": 351, "column": 67 } } @@ -102461,15 +101915,15 @@ "postfix": false, "binop": null }, - "start": 18819, - "end": 18820, + "start": 18841, + "end": 18842, "loc": { "start": { - "line": 349, + "line": 351, "column": 67 }, "end": { - "line": 349, + "line": 351, "column": 68 } } @@ -102488,15 +101942,15 @@ "updateContext": null }, "value": 16, - "start": 18820, - "end": 18822, + "start": 18842, + "end": 18844, "loc": { "start": { - "line": 349, + "line": 351, "column": 68 }, "end": { - "line": 349, + "line": 351, "column": 70 } } @@ -102513,15 +101967,15 @@ "postfix": false, "binop": null }, - "start": 18822, - "end": 18823, + "start": 18844, + "end": 18845, "loc": { "start": { - "line": 349, + "line": 351, "column": 70 }, "end": { - "line": 349, + "line": 351, "column": 71 } } @@ -102538,15 +101992,15 @@ "postfix": false, "binop": null }, - "start": 18823, - "end": 18824, + "start": 18845, + "end": 18846, "loc": { "start": { - "line": 349, + "line": 351, "column": 71 }, "end": { - "line": 349, + "line": 351, "column": 72 } } @@ -102564,15 +102018,15 @@ "binop": null, "updateContext": null }, - "start": 18824, - "end": 18825, + "start": 18846, + "end": 18847, "loc": { "start": { - "line": 349, + "line": 351, "column": 72 }, "end": { - "line": 349, + "line": 351, "column": 73 } } @@ -102590,15 +102044,15 @@ "binop": null }, "value": "substr", - "start": 18825, - "end": 18831, + "start": 18847, + "end": 18853, "loc": { "start": { - "line": 349, + "line": 351, "column": 73 }, "end": { - "line": 349, + "line": 351, "column": 79 } } @@ -102615,15 +102069,15 @@ "postfix": false, "binop": null }, - "start": 18831, - "end": 18832, + "start": 18853, + "end": 18854, "loc": { "start": { - "line": 349, + "line": 351, "column": 79 }, "end": { - "line": 349, + "line": 351, "column": 80 } } @@ -102642,15 +102096,15 @@ "updateContext": null }, "value": "-", - "start": 18832, - "end": 18833, + "start": 18854, + "end": 18855, "loc": { "start": { - "line": 349, + "line": 351, "column": 80 }, "end": { - "line": 349, + "line": 351, "column": 81 } } @@ -102669,15 +102123,15 @@ "updateContext": null }, "value": 4, - "start": 18833, - "end": 18834, + "start": 18855, + "end": 18856, "loc": { "start": { - "line": 349, + "line": 351, "column": 81 }, "end": { - "line": 349, + "line": 351, "column": 82 } } @@ -102694,15 +102148,15 @@ "postfix": false, "binop": null }, - "start": 18834, - "end": 18835, + "start": 18856, + "end": 18857, "loc": { "start": { - "line": 349, + "line": 351, "column": 82 }, "end": { - "line": 349, + "line": 351, "column": 83 } } @@ -102719,15 +102173,15 @@ "postfix": false, "binop": null }, - "start": 18848, - "end": 18849, + "start": 18870, + "end": 18871, "loc": { "start": { - "line": 350, + "line": 352, "column": 12 }, "end": { - "line": 350, + "line": 352, "column": 13 } } @@ -102744,15 +102198,15 @@ "postfix": false, "binop": null }, - "start": 18849, - "end": 18850, + "start": 18871, + "end": 18872, "loc": { "start": { - "line": 350, + "line": 352, "column": 13 }, "end": { - "line": 350, + "line": 352, "column": 14 } } @@ -102769,15 +102223,15 @@ "postfix": false, "binop": null }, - "start": 18850, - "end": 18851, + "start": 18872, + "end": 18873, "loc": { "start": { - "line": 350, + "line": 352, "column": 14 }, "end": { - "line": 350, + "line": 352, "column": 15 } } @@ -102795,15 +102249,15 @@ "binop": null, "updateContext": null }, - "start": 18851, - "end": 18852, + "start": 18873, + "end": 18874, "loc": { "start": { - "line": 350, + "line": 352, "column": 15 }, "end": { - "line": 350, + "line": 352, "column": 16 } } @@ -102821,15 +102275,15 @@ "binop": null }, "value": "eachEntityMeshesPortion", - "start": 18861, - "end": 18884, + "start": 18883, + "end": 18906, "loc": { "start": { - "line": 351, + "line": 353, "column": 8 }, "end": { - "line": 351, + "line": 353, "column": 31 } } @@ -102847,15 +102301,15 @@ "binop": null, "updateContext": null }, - "start": 18884, - "end": 18885, + "start": 18906, + "end": 18907, "loc": { "start": { - "line": 351, + "line": 353, "column": 31 }, "end": { - "line": 351, + "line": 353, "column": 32 } } @@ -102873,15 +102327,15 @@ "binop": null }, "value": "pako", - "start": 18886, - "end": 18890, + "start": 18908, + "end": 18912, "loc": { "start": { - "line": 351, + "line": 353, "column": 33 }, "end": { - "line": 351, + "line": 353, "column": 37 } } @@ -102899,15 +102353,15 @@ "binop": null, "updateContext": null }, - "start": 18890, - "end": 18891, + "start": 18912, + "end": 18913, "loc": { "start": { - "line": 351, + "line": 353, "column": 37 }, "end": { - "line": 351, + "line": 353, "column": 38 } } @@ -102925,15 +102379,15 @@ "binop": null }, "value": "deflate", - "start": 18891, - "end": 18898, + "start": 18913, + "end": 18920, "loc": { "start": { - "line": 351, + "line": 353, "column": 38 }, "end": { - "line": 351, + "line": 353, "column": 45 } } @@ -102950,15 +102404,15 @@ "postfix": false, "binop": null }, - "start": 18898, - "end": 18899, + "start": 18920, + "end": 18921, "loc": { "start": { - "line": 351, + "line": 353, "column": 45 }, "end": { - "line": 351, + "line": 353, "column": 46 } } @@ -102976,15 +102430,15 @@ "binop": null }, "value": "data", - "start": 18899, - "end": 18903, + "start": 18921, + "end": 18925, "loc": { "start": { - "line": 351, + "line": 353, "column": 46 }, "end": { - "line": 351, + "line": 353, "column": 50 } } @@ -103002,15 +102456,15 @@ "binop": null, "updateContext": null }, - "start": 18903, - "end": 18904, + "start": 18925, + "end": 18926, "loc": { "start": { - "line": 351, + "line": 353, "column": 50 }, "end": { - "line": 351, + "line": 353, "column": 51 } } @@ -103028,15 +102482,15 @@ "binop": null }, "value": "eachEntityMeshesPortion", - "start": 18904, - "end": 18927, + "start": 18926, + "end": 18949, "loc": { "start": { - "line": 351, + "line": 353, "column": 51 }, "end": { - "line": 351, + "line": 353, "column": 74 } } @@ -103054,15 +102508,15 @@ "binop": null, "updateContext": null }, - "start": 18927, - "end": 18928, + "start": 18949, + "end": 18950, "loc": { "start": { - "line": 351, + "line": 353, "column": 74 }, "end": { - "line": 351, + "line": 353, "column": 75 } } @@ -103080,15 +102534,15 @@ "binop": null }, "value": "buffer", - "start": 18928, - "end": 18934, + "start": 18950, + "end": 18956, "loc": { "start": { - "line": 351, + "line": 353, "column": 75 }, "end": { - "line": 351, + "line": 353, "column": 81 } } @@ -103105,15 +102559,15 @@ "postfix": false, "binop": null }, - "start": 18934, - "end": 18935, + "start": 18956, + "end": 18957, "loc": { "start": { - "line": 351, + "line": 353, "column": 81 }, "end": { - "line": 351, + "line": 353, "column": 82 } } @@ -103131,15 +102585,15 @@ "binop": null, "updateContext": null }, - "start": 18935, - "end": 18936, + "start": 18957, + "end": 18958, "loc": { "start": { - "line": 351, + "line": 353, "column": 82 }, "end": { - "line": 351, + "line": 353, "column": 83 } } @@ -103157,15 +102611,15 @@ "binop": null }, "value": "eachTileAABB", - "start": 18945, - "end": 18957, + "start": 18967, + "end": 18979, "loc": { "start": { - "line": 352, + "line": 354, "column": 8 }, "end": { - "line": 352, + "line": 354, "column": 20 } } @@ -103183,15 +102637,15 @@ "binop": null, "updateContext": null }, - "start": 18957, - "end": 18958, + "start": 18979, + "end": 18980, "loc": { "start": { - "line": 352, + "line": 354, "column": 20 }, "end": { - "line": 352, + "line": 354, "column": 21 } } @@ -103209,15 +102663,15 @@ "binop": null }, "value": "pako", - "start": 18959, - "end": 18963, + "start": 18981, + "end": 18985, "loc": { "start": { - "line": 352, + "line": 354, "column": 22 }, "end": { - "line": 352, + "line": 354, "column": 26 } } @@ -103235,15 +102689,15 @@ "binop": null, "updateContext": null }, - "start": 18963, - "end": 18964, + "start": 18985, + "end": 18986, "loc": { "start": { - "line": 352, + "line": 354, "column": 26 }, "end": { - "line": 352, + "line": 354, "column": 27 } } @@ -103261,15 +102715,15 @@ "binop": null }, "value": "deflate", - "start": 18964, - "end": 18971, + "start": 18986, + "end": 18993, "loc": { "start": { - "line": 352, + "line": 354, "column": 27 }, "end": { - "line": 352, + "line": 354, "column": 34 } } @@ -103286,15 +102740,15 @@ "postfix": false, "binop": null }, - "start": 18971, - "end": 18972, + "start": 18993, + "end": 18994, "loc": { "start": { - "line": 352, + "line": 354, "column": 34 }, "end": { - "line": 352, + "line": 354, "column": 35 } } @@ -103312,15 +102766,15 @@ "binop": null }, "value": "data", - "start": 18972, - "end": 18976, + "start": 18994, + "end": 18998, "loc": { "start": { - "line": 352, + "line": 354, "column": 35 }, "end": { - "line": 352, + "line": 354, "column": 39 } } @@ -103338,15 +102792,15 @@ "binop": null, "updateContext": null }, - "start": 18976, - "end": 18977, + "start": 18998, + "end": 18999, "loc": { "start": { - "line": 352, + "line": 354, "column": 39 }, "end": { - "line": 352, + "line": 354, "column": 40 } } @@ -103364,15 +102818,15 @@ "binop": null }, "value": "eachTileAABB", - "start": 18977, - "end": 18989, + "start": 18999, + "end": 19011, "loc": { "start": { - "line": 352, + "line": 354, "column": 40 }, "end": { - "line": 352, + "line": 354, "column": 52 } } @@ -103390,15 +102844,15 @@ "binop": null, "updateContext": null }, - "start": 18989, - "end": 18990, + "start": 19011, + "end": 19012, "loc": { "start": { - "line": 352, + "line": 354, "column": 52 }, "end": { - "line": 352, + "line": 354, "column": 53 } } @@ -103416,15 +102870,15 @@ "binop": null }, "value": "buffer", - "start": 18990, - "end": 18996, + "start": 19012, + "end": 19018, "loc": { "start": { - "line": 352, + "line": 354, "column": 53 }, "end": { - "line": 352, + "line": 354, "column": 59 } } @@ -103441,15 +102895,15 @@ "postfix": false, "binop": null }, - "start": 18996, - "end": 18997, + "start": 19018, + "end": 19019, "loc": { "start": { - "line": 352, + "line": 354, "column": 59 }, "end": { - "line": 352, + "line": 354, "column": 60 } } @@ -103467,15 +102921,15 @@ "binop": null, "updateContext": null }, - "start": 18997, - "end": 18998, + "start": 19019, + "end": 19020, "loc": { "start": { - "line": 352, + "line": 354, "column": 60 }, "end": { - "line": 352, + "line": 354, "column": 61 } } @@ -103493,15 +102947,15 @@ "binop": null }, "value": "eachTileEntitiesPortion", - "start": 19007, - "end": 19030, + "start": 19029, + "end": 19052, "loc": { "start": { - "line": 353, + "line": 355, "column": 8 }, "end": { - "line": 353, + "line": 355, "column": 31 } } @@ -103519,15 +102973,15 @@ "binop": null, "updateContext": null }, - "start": 19030, - "end": 19031, + "start": 19052, + "end": 19053, "loc": { "start": { - "line": 353, + "line": 355, "column": 31 }, "end": { - "line": 353, + "line": 355, "column": 32 } } @@ -103545,15 +102999,15 @@ "binop": null }, "value": "pako", - "start": 19032, - "end": 19036, + "start": 19054, + "end": 19058, "loc": { "start": { - "line": 353, + "line": 355, "column": 33 }, "end": { - "line": 353, + "line": 355, "column": 37 } } @@ -103571,15 +103025,15 @@ "binop": null, "updateContext": null }, - "start": 19036, - "end": 19037, + "start": 19058, + "end": 19059, "loc": { "start": { - "line": 353, + "line": 355, "column": 37 }, "end": { - "line": 353, + "line": 355, "column": 38 } } @@ -103597,15 +103051,15 @@ "binop": null }, "value": "deflate", - "start": 19037, - "end": 19044, + "start": 19059, + "end": 19066, "loc": { "start": { - "line": 353, + "line": 355, "column": 38 }, "end": { - "line": 353, + "line": 355, "column": 45 } } @@ -103622,15 +103076,15 @@ "postfix": false, "binop": null }, - "start": 19044, - "end": 19045, + "start": 19066, + "end": 19067, "loc": { "start": { - "line": 353, + "line": 355, "column": 45 }, "end": { - "line": 353, + "line": 355, "column": 46 } } @@ -103648,15 +103102,15 @@ "binop": null }, "value": "data", - "start": 19045, - "end": 19049, + "start": 19067, + "end": 19071, "loc": { "start": { - "line": 353, + "line": 355, "column": 46 }, "end": { - "line": 353, + "line": 355, "column": 50 } } @@ -103674,15 +103128,15 @@ "binop": null, "updateContext": null }, - "start": 19049, - "end": 19050, + "start": 19071, + "end": 19072, "loc": { "start": { - "line": 353, + "line": 355, "column": 50 }, "end": { - "line": 353, + "line": 355, "column": 51 } } @@ -103700,15 +103154,15 @@ "binop": null }, "value": "eachTileEntitiesPortion", - "start": 19050, - "end": 19073, + "start": 19072, + "end": 19095, "loc": { "start": { - "line": 353, + "line": 355, "column": 51 }, "end": { - "line": 353, + "line": 355, "column": 74 } } @@ -103726,15 +103180,15 @@ "binop": null, "updateContext": null }, - "start": 19073, - "end": 19074, + "start": 19095, + "end": 19096, "loc": { "start": { - "line": 353, + "line": 355, "column": 74 }, "end": { - "line": 353, + "line": 355, "column": 75 } } @@ -103752,15 +103206,15 @@ "binop": null }, "value": "buffer", - "start": 19074, - "end": 19080, + "start": 19096, + "end": 19102, "loc": { "start": { - "line": 353, + "line": 355, "column": 75 }, "end": { - "line": 353, + "line": 355, "column": 81 } } @@ -103777,15 +103231,15 @@ "postfix": false, "binop": null }, - "start": 19080, - "end": 19081, + "start": 19102, + "end": 19103, "loc": { "start": { - "line": 353, + "line": 355, "column": 81 }, "end": { - "line": 353, + "line": 355, "column": 82 } } @@ -103802,15 +103256,15 @@ "postfix": false, "binop": null }, - "start": 19086, - "end": 19087, + "start": 19108, + "end": 19109, "loc": { "start": { - "line": 354, + "line": 356, "column": 4 }, "end": { - "line": 354, + "line": 356, "column": 5 } } @@ -103828,15 +103282,15 @@ "binop": null, "updateContext": null }, - "start": 19087, - "end": 19088, + "start": 19109, + "end": 19110, "loc": { "start": { - "line": 354, + "line": 356, "column": 5 }, "end": { - "line": 354, + "line": 356, "column": 6 } } @@ -103853,15 +103307,15 @@ "postfix": false, "binop": null }, - "start": 19089, - "end": 19090, + "start": 19111, + "end": 19112, "loc": { "start": { - "line": 355, + "line": 357, "column": 0 }, "end": { - "line": 355, + "line": 357, "column": 1 } } @@ -103880,15 +103334,15 @@ "binop": null }, "value": "function", - "start": 19092, - "end": 19100, + "start": 19114, + "end": 19122, "loc": { "start": { - "line": 357, + "line": 359, "column": 0 }, "end": { - "line": 357, + "line": 359, "column": 8 } } @@ -103906,15 +103360,15 @@ "binop": null }, "value": "deflateJSON", - "start": 19101, - "end": 19112, + "start": 19123, + "end": 19134, "loc": { "start": { - "line": 357, + "line": 359, "column": 9 }, "end": { - "line": 357, + "line": 359, "column": 20 } } @@ -103931,15 +103385,15 @@ "postfix": false, "binop": null }, - "start": 19112, - "end": 19113, + "start": 19134, + "end": 19135, "loc": { "start": { - "line": 357, + "line": 359, "column": 20 }, "end": { - "line": 357, + "line": 359, "column": 21 } } @@ -103957,15 +103411,15 @@ "binop": null }, "value": "strings", - "start": 19113, - "end": 19120, + "start": 19135, + "end": 19142, "loc": { "start": { - "line": 357, + "line": 359, "column": 21 }, "end": { - "line": 357, + "line": 359, "column": 28 } } @@ -103982,15 +103436,15 @@ "postfix": false, "binop": null }, - "start": 19120, - "end": 19121, + "start": 19142, + "end": 19143, "loc": { "start": { - "line": 357, + "line": 359, "column": 28 }, "end": { - "line": 357, + "line": 359, "column": 29 } } @@ -104007,15 +103461,15 @@ "postfix": false, "binop": null }, - "start": 19122, - "end": 19123, + "start": 19144, + "end": 19145, "loc": { "start": { - "line": 357, + "line": 359, "column": 30 }, "end": { - "line": 357, + "line": 359, "column": 31 } } @@ -104035,15 +103489,15 @@ "updateContext": null }, "value": "return", - "start": 19128, - "end": 19134, + "start": 19150, + "end": 19156, "loc": { "start": { - "line": 358, + "line": 360, "column": 4 }, "end": { - "line": 358, + "line": 360, "column": 10 } } @@ -104061,15 +103515,15 @@ "binop": null }, "value": "JSON", - "start": 19135, - "end": 19139, + "start": 19157, + "end": 19161, "loc": { "start": { - "line": 358, + "line": 360, "column": 11 }, "end": { - "line": 358, + "line": 360, "column": 15 } } @@ -104087,15 +103541,15 @@ "binop": null, "updateContext": null }, - "start": 19139, - "end": 19140, + "start": 19161, + "end": 19162, "loc": { "start": { - "line": 358, + "line": 360, "column": 15 }, "end": { - "line": 358, + "line": 360, "column": 16 } } @@ -104113,15 +103567,15 @@ "binop": null }, "value": "stringify", - "start": 19140, - "end": 19149, + "start": 19162, + "end": 19171, "loc": { "start": { - "line": 358, + "line": 360, "column": 16 }, "end": { - "line": 358, + "line": 360, "column": 25 } } @@ -104138,15 +103592,15 @@ "postfix": false, "binop": null }, - "start": 19149, - "end": 19150, + "start": 19171, + "end": 19172, "loc": { "start": { - "line": 358, + "line": 360, "column": 25 }, "end": { - "line": 358, + "line": 360, "column": 26 } } @@ -104164,15 +103618,15 @@ "binop": null }, "value": "strings", - "start": 19150, - "end": 19157, + "start": 19172, + "end": 19179, "loc": { "start": { - "line": 358, + "line": 360, "column": 26 }, "end": { - "line": 358, + "line": 360, "column": 33 } } @@ -104189,15 +103643,15 @@ "postfix": false, "binop": null }, - "start": 19157, - "end": 19158, + "start": 19179, + "end": 19180, "loc": { "start": { - "line": 358, + "line": 360, "column": 33 }, "end": { - "line": 358, + "line": 360, "column": 34 } } @@ -104215,15 +103669,15 @@ "binop": null, "updateContext": null }, - "start": 19167, - "end": 19168, + "start": 19189, + "end": 19190, "loc": { "start": { - "line": 359, + "line": 361, "column": 8 }, "end": { - "line": 359, + "line": 361, "column": 9 } } @@ -104241,15 +103695,15 @@ "binop": null }, "value": "replace", - "start": 19168, - "end": 19175, + "start": 19190, + "end": 19197, "loc": { "start": { - "line": 359, + "line": 361, "column": 9 }, "end": { - "line": 359, + "line": 361, "column": 16 } } @@ -104266,15 +103720,15 @@ "postfix": false, "binop": null }, - "start": 19175, - "end": 19176, + "start": 19197, + "end": 19198, "loc": { "start": { - "line": 359, + "line": 361, "column": 16 }, "end": { - "line": 359, + "line": 361, "column": 17 } } @@ -104296,15 +103750,15 @@ "pattern": "[\\u007F-\\uFFFF]", "flags": "g" }, - "start": 19176, - "end": 19194, + "start": 19198, + "end": 19216, "loc": { "start": { - "line": 359, + "line": 361, "column": 17 }, "end": { - "line": 359, + "line": 361, "column": 35 } } @@ -104322,15 +103776,15 @@ "binop": null, "updateContext": null }, - "start": 19194, - "end": 19195, + "start": 19216, + "end": 19217, "loc": { "start": { - "line": 359, + "line": 361, "column": 35 }, "end": { - "line": 359, + "line": 361, "column": 36 } } @@ -104349,15 +103803,15 @@ "binop": null }, "value": "function", - "start": 19196, - "end": 19204, + "start": 19218, + "end": 19226, "loc": { "start": { - "line": 359, + "line": 361, "column": 37 }, "end": { - "line": 359, + "line": 361, "column": 45 } } @@ -104374,15 +103828,15 @@ "postfix": false, "binop": null }, - "start": 19205, - "end": 19206, + "start": 19227, + "end": 19228, "loc": { "start": { - "line": 359, + "line": 361, "column": 46 }, "end": { - "line": 359, + "line": 361, "column": 47 } } @@ -104400,15 +103854,15 @@ "binop": null }, "value": "chr", - "start": 19206, - "end": 19209, + "start": 19228, + "end": 19231, "loc": { "start": { - "line": 359, + "line": 361, "column": 47 }, "end": { - "line": 359, + "line": 361, "column": 50 } } @@ -104425,15 +103879,15 @@ "postfix": false, "binop": null }, - "start": 19209, - "end": 19210, + "start": 19231, + "end": 19232, "loc": { "start": { - "line": 359, + "line": 361, "column": 50 }, "end": { - "line": 359, + "line": 361, "column": 51 } } @@ -104450,15 +103904,15 @@ "postfix": false, "binop": null }, - "start": 19211, - "end": 19212, + "start": 19233, + "end": 19234, "loc": { "start": { - "line": 359, + "line": 361, "column": 52 }, "end": { - "line": 359, + "line": 361, "column": 53 } } @@ -104466,15 +103920,15 @@ { "type": "CommentLine", "value": " Produce only ASCII-chars, so that the data can be inflated later", - "start": 19213, - "end": 19280, + "start": 19235, + "end": 19302, "loc": { "start": { - "line": 359, + "line": 361, "column": 54 }, "end": { - "line": 359, + "line": 361, "column": 121 } } @@ -104494,15 +103948,15 @@ "updateContext": null }, "value": "return", - "start": 19293, - "end": 19299, + "start": 19315, + "end": 19321, "loc": { "start": { - "line": 360, + "line": 362, "column": 12 }, "end": { - "line": 360, + "line": 362, "column": 18 } } @@ -104521,15 +103975,15 @@ "updateContext": null }, "value": "\\u", - "start": 19300, - "end": 19305, + "start": 19322, + "end": 19327, "loc": { "start": { - "line": 360, + "line": 362, "column": 19 }, "end": { - "line": 360, + "line": 362, "column": 24 } } @@ -104548,15 +104002,15 @@ "updateContext": null }, "value": "+", - "start": 19306, - "end": 19307, + "start": 19328, + "end": 19329, "loc": { "start": { - "line": 360, + "line": 362, "column": 25 }, "end": { - "line": 360, + "line": 362, "column": 26 } } @@ -104573,15 +104027,15 @@ "postfix": false, "binop": null }, - "start": 19308, - "end": 19309, + "start": 19330, + "end": 19331, "loc": { "start": { - "line": 360, + "line": 362, "column": 27 }, "end": { - "line": 360, + "line": 362, "column": 28 } } @@ -104600,15 +104054,15 @@ "updateContext": null }, "value": "0000", - "start": 19309, - "end": 19315, + "start": 19331, + "end": 19337, "loc": { "start": { - "line": 360, + "line": 362, "column": 28 }, "end": { - "line": 360, + "line": 362, "column": 34 } } @@ -104627,15 +104081,15 @@ "updateContext": null }, "value": "+", - "start": 19316, - "end": 19317, + "start": 19338, + "end": 19339, "loc": { "start": { - "line": 360, + "line": 362, "column": 35 }, "end": { - "line": 360, + "line": 362, "column": 36 } } @@ -104653,15 +104107,15 @@ "binop": null }, "value": "chr", - "start": 19318, - "end": 19321, + "start": 19340, + "end": 19343, "loc": { "start": { - "line": 360, + "line": 362, "column": 37 }, "end": { - "line": 360, + "line": 362, "column": 40 } } @@ -104679,15 +104133,15 @@ "binop": null, "updateContext": null }, - "start": 19321, - "end": 19322, + "start": 19343, + "end": 19344, "loc": { "start": { - "line": 360, + "line": 362, "column": 40 }, "end": { - "line": 360, + "line": 362, "column": 41 } } @@ -104705,15 +104159,15 @@ "binop": null }, "value": "charCodeAt", - "start": 19322, - "end": 19332, + "start": 19344, + "end": 19354, "loc": { "start": { - "line": 360, + "line": 362, "column": 41 }, "end": { - "line": 360, + "line": 362, "column": 51 } } @@ -104730,15 +104184,15 @@ "postfix": false, "binop": null }, - "start": 19332, - "end": 19333, + "start": 19354, + "end": 19355, "loc": { "start": { - "line": 360, + "line": 362, "column": 51 }, "end": { - "line": 360, + "line": 362, "column": 52 } } @@ -104757,15 +104211,15 @@ "updateContext": null }, "value": 0, - "start": 19333, - "end": 19334, + "start": 19355, + "end": 19356, "loc": { "start": { - "line": 360, + "line": 362, "column": 52 }, "end": { - "line": 360, + "line": 362, "column": 53 } } @@ -104782,15 +104236,15 @@ "postfix": false, "binop": null }, - "start": 19334, - "end": 19335, + "start": 19356, + "end": 19357, "loc": { "start": { - "line": 360, + "line": 362, "column": 53 }, "end": { - "line": 360, + "line": 362, "column": 54 } } @@ -104808,15 +104262,15 @@ "binop": null, "updateContext": null }, - "start": 19335, - "end": 19336, + "start": 19357, + "end": 19358, "loc": { "start": { - "line": 360, + "line": 362, "column": 54 }, "end": { - "line": 360, + "line": 362, "column": 55 } } @@ -104834,15 +104288,15 @@ "binop": null }, "value": "toString", - "start": 19336, - "end": 19344, + "start": 19358, + "end": 19366, "loc": { "start": { - "line": 360, + "line": 362, "column": 55 }, "end": { - "line": 360, + "line": 362, "column": 63 } } @@ -104859,15 +104313,15 @@ "postfix": false, "binop": null }, - "start": 19344, - "end": 19345, + "start": 19366, + "end": 19367, "loc": { "start": { - "line": 360, + "line": 362, "column": 63 }, "end": { - "line": 360, + "line": 362, "column": 64 } } @@ -104886,15 +104340,15 @@ "updateContext": null }, "value": 16, - "start": 19345, - "end": 19347, + "start": 19367, + "end": 19369, "loc": { "start": { - "line": 360, + "line": 362, "column": 64 }, "end": { - "line": 360, + "line": 362, "column": 66 } } @@ -104911,15 +104365,15 @@ "postfix": false, "binop": null }, - "start": 19347, - "end": 19348, + "start": 19369, + "end": 19370, "loc": { "start": { - "line": 360, + "line": 362, "column": 66 }, "end": { - "line": 360, + "line": 362, "column": 67 } } @@ -104936,15 +104390,15 @@ "postfix": false, "binop": null }, - "start": 19348, - "end": 19349, + "start": 19370, + "end": 19371, "loc": { "start": { - "line": 360, + "line": 362, "column": 67 }, "end": { - "line": 360, + "line": 362, "column": 68 } } @@ -104962,15 +104416,15 @@ "binop": null, "updateContext": null }, - "start": 19349, - "end": 19350, + "start": 19371, + "end": 19372, "loc": { "start": { - "line": 360, + "line": 362, "column": 68 }, "end": { - "line": 360, + "line": 362, "column": 69 } } @@ -104988,15 +104442,15 @@ "binop": null }, "value": "substr", - "start": 19350, - "end": 19356, + "start": 19372, + "end": 19378, "loc": { "start": { - "line": 360, + "line": 362, "column": 69 }, "end": { - "line": 360, + "line": 362, "column": 75 } } @@ -105013,15 +104467,15 @@ "postfix": false, "binop": null }, - "start": 19356, - "end": 19357, + "start": 19378, + "end": 19379, "loc": { "start": { - "line": 360, + "line": 362, "column": 75 }, "end": { - "line": 360, + "line": 362, "column": 76 } } @@ -105040,15 +104494,15 @@ "updateContext": null }, "value": "-", - "start": 19357, - "end": 19358, + "start": 19379, + "end": 19380, "loc": { "start": { - "line": 360, + "line": 362, "column": 76 }, "end": { - "line": 360, + "line": 362, "column": 77 } } @@ -105067,15 +104521,15 @@ "updateContext": null }, "value": 4, - "start": 19358, - "end": 19359, + "start": 19380, + "end": 19381, "loc": { "start": { - "line": 360, + "line": 362, "column": 77 }, "end": { - "line": 360, + "line": 362, "column": 78 } } @@ -105092,15 +104546,15 @@ "postfix": false, "binop": null }, - "start": 19359, - "end": 19360, + "start": 19381, + "end": 19382, "loc": { "start": { - "line": 360, + "line": 362, "column": 78 }, "end": { - "line": 360, + "line": 362, "column": 79 } } @@ -105117,15 +104571,15 @@ "postfix": false, "binop": null }, - "start": 19369, - "end": 19370, + "start": 19391, + "end": 19392, "loc": { "start": { - "line": 361, + "line": 363, "column": 8 }, "end": { - "line": 361, + "line": 363, "column": 9 } } @@ -105142,15 +104596,15 @@ "postfix": false, "binop": null }, - "start": 19370, - "end": 19371, + "start": 19392, + "end": 19393, "loc": { "start": { - "line": 361, + "line": 363, "column": 9 }, "end": { - "line": 361, + "line": 363, "column": 10 } } @@ -105168,15 +104622,15 @@ "binop": null, "updateContext": null }, - "start": 19371, - "end": 19372, + "start": 19393, + "end": 19394, "loc": { "start": { - "line": 361, + "line": 363, "column": 10 }, "end": { - "line": 361, + "line": 363, "column": 11 } } @@ -105193,15 +104647,15 @@ "postfix": false, "binop": null }, - "start": 19373, - "end": 19374, + "start": 19395, + "end": 19396, "loc": { "start": { - "line": 362, + "line": 364, "column": 0 }, "end": { - "line": 362, + "line": 364, "column": 1 } } @@ -105220,15 +104674,15 @@ "binop": null }, "value": "function", - "start": 19376, - "end": 19384, + "start": 19398, + "end": 19406, "loc": { "start": { - "line": 364, + "line": 366, "column": 0 }, "end": { - "line": 364, + "line": 366, "column": 8 } } @@ -105246,15 +104700,15 @@ "binop": null }, "value": "createArrayBuffer", - "start": 19385, - "end": 19402, + "start": 19407, + "end": 19424, "loc": { "start": { - "line": 364, + "line": 366, "column": 9 }, "end": { - "line": 364, + "line": 366, "column": 26 } } @@ -105271,15 +104725,15 @@ "postfix": false, "binop": null }, - "start": 19402, - "end": 19403, + "start": 19424, + "end": 19425, "loc": { "start": { - "line": 364, + "line": 366, "column": 26 }, "end": { - "line": 364, + "line": 366, "column": 27 } } @@ -105297,15 +104751,15 @@ "binop": null }, "value": "deflatedData", - "start": 19403, - "end": 19415, + "start": 19425, + "end": 19437, "loc": { "start": { - "line": 364, + "line": 366, "column": 27 }, "end": { - "line": 364, + "line": 366, "column": 39 } } @@ -105322,15 +104776,15 @@ "postfix": false, "binop": null }, - "start": 19415, - "end": 19416, + "start": 19437, + "end": 19438, "loc": { "start": { - "line": 364, + "line": 366, "column": 39 }, "end": { - "line": 364, + "line": 366, "column": 40 } } @@ -105347,15 +104801,15 @@ "postfix": false, "binop": null }, - "start": 19417, - "end": 19418, + "start": 19439, + "end": 19440, "loc": { "start": { - "line": 364, + "line": 366, "column": 41 }, "end": { - "line": 364, + "line": 366, "column": 42 } } @@ -105375,15 +104829,15 @@ "updateContext": null }, "value": "return", - "start": 19423, - "end": 19429, + "start": 19445, + "end": 19451, "loc": { "start": { - "line": 365, + "line": 367, "column": 4 }, "end": { - "line": 365, + "line": 367, "column": 10 } } @@ -105401,15 +104855,15 @@ "binop": null }, "value": "toArrayBuffer", - "start": 19430, - "end": 19443, + "start": 19452, + "end": 19465, "loc": { "start": { - "line": 365, + "line": 367, "column": 11 }, "end": { - "line": 365, + "line": 367, "column": 24 } } @@ -105426,15 +104880,15 @@ "postfix": false, "binop": null }, - "start": 19443, - "end": 19444, + "start": 19465, + "end": 19466, "loc": { "start": { - "line": 365, + "line": 367, "column": 24 }, "end": { - "line": 365, + "line": 367, "column": 25 } } @@ -105452,224 +104906,16 @@ "binop": null, "updateContext": null }, - "start": 19444, - "end": 19445, - "loc": { - "start": { - "line": 365, - "column": 25 - }, - "end": { - "line": 365, - "column": 26 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "deflatedData", - "start": 19454, - "end": 19466, - "loc": { - "start": { - "line": 366, - "column": 8 - }, - "end": { - "line": 366, - "column": 20 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, "start": 19466, "end": 19467, - "loc": { - "start": { - "line": 366, - "column": 20 - }, - "end": { - "line": 366, - "column": 21 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "metadata", - "start": 19467, - "end": 19475, - "loc": { - "start": { - "line": 366, - "column": 21 - }, - "end": { - "line": 366, - "column": 29 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 19475, - "end": 19476, - "loc": { - "start": { - "line": 366, - "column": 29 - }, - "end": { - "line": 366, - "column": 30 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "deflatedData", - "start": 19485, - "end": 19497, - "loc": { - "start": { - "line": 367, - "column": 8 - }, - "end": { - "line": 367, - "column": 20 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 19497, - "end": 19498, "loc": { "start": { "line": 367, - "column": 20 - }, - "end": { - "line": 367, - "column": 21 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "textureData", - "start": 19498, - "end": 19509, - "loc": { - "start": { - "line": 367, - "column": 21 - }, - "end": { - "line": 367, - "column": 32 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 19509, - "end": 19510, - "loc": { - "start": { - "line": 367, - "column": 32 + "column": 25 }, "end": { "line": 367, - "column": 33 + "column": 26 } } }, @@ -105686,8 +104932,8 @@ "binop": null }, "value": "deflatedData", - "start": 19519, - "end": 19531, + "start": 19476, + "end": 19488, "loc": { "start": { "line": 368, @@ -105712,8 +104958,8 @@ "binop": null, "updateContext": null }, - "start": 19531, - "end": 19532, + "start": 19488, + "end": 19489, "loc": { "start": { "line": 368, @@ -105737,9 +104983,9 @@ "postfix": false, "binop": null }, - "value": "eachTextureDataPortion", - "start": 19532, - "end": 19554, + "value": "metadata", + "start": 19489, + "end": 19497, "loc": { "start": { "line": 368, @@ -105747,7 +104993,7 @@ }, "end": { "line": 368, - "column": 43 + "column": 29 } } }, @@ -105764,16 +105010,16 @@ "binop": null, "updateContext": null }, - "start": 19554, - "end": 19555, + "start": 19497, + "end": 19498, "loc": { "start": { "line": 368, - "column": 43 + "column": 29 }, "end": { "line": 368, - "column": 44 + "column": 30 } } }, @@ -105790,8 +105036,8 @@ "binop": null }, "value": "deflatedData", - "start": 19564, - "end": 19576, + "start": 19507, + "end": 19519, "loc": { "start": { "line": 369, @@ -105816,8 +105062,8 @@ "binop": null, "updateContext": null }, - "start": 19576, - "end": 19577, + "start": 19519, + "end": 19520, "loc": { "start": { "line": 369, @@ -105841,9 +105087,9 @@ "postfix": false, "binop": null }, - "value": "eachTextureAttributes", - "start": 19577, - "end": 19598, + "value": "textureData", + "start": 19520, + "end": 19531, "loc": { "start": { "line": 369, @@ -105851,7 +105097,7 @@ }, "end": { "line": 369, - "column": 42 + "column": 32 } } }, @@ -105868,16 +105114,16 @@ "binop": null, "updateContext": null }, - "start": 19598, - "end": 19599, + "start": 19531, + "end": 19532, "loc": { "start": { "line": 369, - "column": 42 + "column": 32 }, "end": { "line": 369, - "column": 43 + "column": 33 } } }, @@ -105894,8 +105140,8 @@ "binop": null }, "value": "deflatedData", - "start": 19608, - "end": 19620, + "start": 19541, + "end": 19553, "loc": { "start": { "line": 370, @@ -105920,8 +105166,8 @@ "binop": null, "updateContext": null }, - "start": 19620, - "end": 19621, + "start": 19553, + "end": 19554, "loc": { "start": { "line": 370, @@ -105945,9 +105191,9 @@ "postfix": false, "binop": null }, - "value": "positions", - "start": 19621, - "end": 19630, + "value": "eachTextureDataPortion", + "start": 19554, + "end": 19576, "loc": { "start": { "line": 370, @@ -105955,7 +105201,7 @@ }, "end": { "line": 370, - "column": 30 + "column": 43 } } }, @@ -105972,16 +105218,16 @@ "binop": null, "updateContext": null }, - "start": 19630, - "end": 19631, + "start": 19576, + "end": 19577, "loc": { "start": { "line": 370, - "column": 30 + "column": 43 }, "end": { "line": 370, - "column": 31 + "column": 44 } } }, @@ -105998,8 +105244,8 @@ "binop": null }, "value": "deflatedData", - "start": 19640, - "end": 19652, + "start": 19586, + "end": 19598, "loc": { "start": { "line": 371, @@ -106024,8 +105270,8 @@ "binop": null, "updateContext": null }, - "start": 19652, - "end": 19653, + "start": 19598, + "end": 19599, "loc": { "start": { "line": 371, @@ -106049,9 +105295,9 @@ "postfix": false, "binop": null }, - "value": "normals", - "start": 19653, - "end": 19660, + "value": "eachTextureAttributes", + "start": 19599, + "end": 19620, "loc": { "start": { "line": 371, @@ -106059,7 +105305,7 @@ }, "end": { "line": 371, - "column": 28 + "column": 42 } } }, @@ -106076,16 +105322,16 @@ "binop": null, "updateContext": null }, - "start": 19660, - "end": 19661, + "start": 19620, + "end": 19621, "loc": { "start": { "line": 371, - "column": 28 + "column": 42 }, "end": { "line": 371, - "column": 29 + "column": 43 } } }, @@ -106102,8 +105348,8 @@ "binop": null }, "value": "deflatedData", - "start": 19670, - "end": 19682, + "start": 19630, + "end": 19642, "loc": { "start": { "line": 372, @@ -106128,8 +105374,8 @@ "binop": null, "updateContext": null }, - "start": 19682, - "end": 19683, + "start": 19642, + "end": 19643, "loc": { "start": { "line": 372, @@ -106153,9 +105399,9 @@ "postfix": false, "binop": null }, - "value": "colors", - "start": 19683, - "end": 19689, + "value": "positions", + "start": 19643, + "end": 19652, "loc": { "start": { "line": 372, @@ -106163,7 +105409,7 @@ }, "end": { "line": 372, - "column": 27 + "column": 30 } } }, @@ -106180,16 +105426,16 @@ "binop": null, "updateContext": null }, - "start": 19689, - "end": 19690, + "start": 19652, + "end": 19653, "loc": { "start": { "line": 372, - "column": 27 + "column": 30 }, "end": { "line": 372, - "column": 28 + "column": 31 } } }, @@ -106206,8 +105452,8 @@ "binop": null }, "value": "deflatedData", - "start": 19699, - "end": 19711, + "start": 19662, + "end": 19674, "loc": { "start": { "line": 373, @@ -106232,8 +105478,8 @@ "binop": null, "updateContext": null }, - "start": 19711, - "end": 19712, + "start": 19674, + "end": 19675, "loc": { "start": { "line": 373, @@ -106257,9 +105503,9 @@ "postfix": false, "binop": null }, - "value": "uvs", - "start": 19712, - "end": 19715, + "value": "normals", + "start": 19675, + "end": 19682, "loc": { "start": { "line": 373, @@ -106267,7 +105513,7 @@ }, "end": { "line": 373, - "column": 24 + "column": 28 } } }, @@ -106284,16 +105530,16 @@ "binop": null, "updateContext": null }, - "start": 19715, - "end": 19716, + "start": 19682, + "end": 19683, "loc": { "start": { "line": 373, - "column": 24 + "column": 28 }, "end": { "line": 373, - "column": 25 + "column": 29 } } }, @@ -106310,8 +105556,8 @@ "binop": null }, "value": "deflatedData", - "start": 19725, - "end": 19737, + "start": 19692, + "end": 19704, "loc": { "start": { "line": 374, @@ -106336,8 +105582,8 @@ "binop": null, "updateContext": null }, - "start": 19737, - "end": 19738, + "start": 19704, + "end": 19705, "loc": { "start": { "line": 374, @@ -106361,9 +105607,9 @@ "postfix": false, "binop": null }, - "value": "indices", - "start": 19738, - "end": 19745, + "value": "colors", + "start": 19705, + "end": 19711, "loc": { "start": { "line": 374, @@ -106371,7 +105617,7 @@ }, "end": { "line": 374, - "column": 28 + "column": 27 } } }, @@ -106388,16 +105634,16 @@ "binop": null, "updateContext": null }, - "start": 19745, - "end": 19746, + "start": 19711, + "end": 19712, "loc": { "start": { "line": 374, - "column": 28 + "column": 27 }, "end": { "line": 374, - "column": 29 + "column": 28 } } }, @@ -106414,8 +105660,8 @@ "binop": null }, "value": "deflatedData", - "start": 19755, - "end": 19767, + "start": 19721, + "end": 19733, "loc": { "start": { "line": 375, @@ -106440,8 +105686,8 @@ "binop": null, "updateContext": null }, - "start": 19767, - "end": 19768, + "start": 19733, + "end": 19734, "loc": { "start": { "line": 375, @@ -106465,9 +105711,9 @@ "postfix": false, "binop": null }, - "value": "edgeIndices", - "start": 19768, - "end": 19779, + "value": "uvs", + "start": 19734, + "end": 19737, "loc": { "start": { "line": 375, @@ -106475,7 +105721,7 @@ }, "end": { "line": 375, - "column": 32 + "column": 24 } } }, @@ -106492,16 +105738,16 @@ "binop": null, "updateContext": null }, - "start": 19779, - "end": 19780, + "start": 19737, + "end": 19738, "loc": { "start": { "line": 375, - "column": 32 + "column": 24 }, "end": { "line": 375, - "column": 33 + "column": 25 } } }, @@ -106518,8 +105764,8 @@ "binop": null }, "value": "deflatedData", - "start": 19789, - "end": 19801, + "start": 19747, + "end": 19759, "loc": { "start": { "line": 376, @@ -106544,8 +105790,8 @@ "binop": null, "updateContext": null }, - "start": 19801, - "end": 19802, + "start": 19759, + "end": 19760, "loc": { "start": { "line": 376, @@ -106569,9 +105815,9 @@ "postfix": false, "binop": null }, - "value": "eachTextureSetTextures", - "start": 19802, - "end": 19824, + "value": "indices", + "start": 19760, + "end": 19767, "loc": { "start": { "line": 376, @@ -106579,7 +105825,7 @@ }, "end": { "line": 376, - "column": 43 + "column": 28 } } }, @@ -106596,16 +105842,16 @@ "binop": null, "updateContext": null }, - "start": 19824, - "end": 19825, + "start": 19767, + "end": 19768, "loc": { "start": { "line": 376, - "column": 43 + "column": 28 }, "end": { "line": 376, - "column": 44 + "column": 29 } } }, @@ -106622,8 +105868,8 @@ "binop": null }, "value": "deflatedData", - "start": 19834, - "end": 19846, + "start": 19777, + "end": 19789, "loc": { "start": { "line": 377, @@ -106648,8 +105894,8 @@ "binop": null, "updateContext": null }, - "start": 19846, - "end": 19847, + "start": 19789, + "end": 19790, "loc": { "start": { "line": 377, @@ -106673,9 +105919,9 @@ "postfix": false, "binop": null }, - "value": "matrices", - "start": 19847, - "end": 19855, + "value": "edgeIndices", + "start": 19790, + "end": 19801, "loc": { "start": { "line": 377, @@ -106683,7 +105929,7 @@ }, "end": { "line": 377, - "column": 29 + "column": 32 } } }, @@ -106700,16 +105946,16 @@ "binop": null, "updateContext": null }, - "start": 19855, - "end": 19856, + "start": 19801, + "end": 19802, "loc": { "start": { "line": 377, - "column": 29 + "column": 32 }, "end": { "line": 377, - "column": 30 + "column": 33 } } }, @@ -106726,8 +105972,8 @@ "binop": null }, "value": "deflatedData", - "start": 19865, - "end": 19877, + "start": 19811, + "end": 19823, "loc": { "start": { "line": 378, @@ -106752,8 +105998,8 @@ "binop": null, "updateContext": null }, - "start": 19877, - "end": 19878, + "start": 19823, + "end": 19824, "loc": { "start": { "line": 378, @@ -106777,9 +106023,9 @@ "postfix": false, "binop": null }, - "value": "reusedGeometriesDecodeMatrix", - "start": 19878, - "end": 19906, + "value": "eachTextureSetTextures", + "start": 19824, + "end": 19846, "loc": { "start": { "line": 378, @@ -106787,7 +106033,7 @@ }, "end": { "line": 378, - "column": 49 + "column": 43 } } }, @@ -106804,16 +106050,16 @@ "binop": null, "updateContext": null }, - "start": 19906, - "end": 19907, + "start": 19846, + "end": 19847, "loc": { "start": { "line": 378, - "column": 49 + "column": 43 }, "end": { "line": 378, - "column": 50 + "column": 44 } } }, @@ -106830,8 +106076,8 @@ "binop": null }, "value": "deflatedData", - "start": 19916, - "end": 19928, + "start": 19856, + "end": 19868, "loc": { "start": { "line": 379, @@ -106856,8 +106102,8 @@ "binop": null, "updateContext": null }, - "start": 19928, - "end": 19929, + "start": 19868, + "end": 19869, "loc": { "start": { "line": 379, @@ -106881,9 +106127,9 @@ "postfix": false, "binop": null }, - "value": "eachGeometryPrimitiveType", - "start": 19929, - "end": 19954, + "value": "matrices", + "start": 19869, + "end": 19877, "loc": { "start": { "line": 379, @@ -106891,7 +106137,7 @@ }, "end": { "line": 379, - "column": 46 + "column": 29 } } }, @@ -106908,16 +106154,16 @@ "binop": null, "updateContext": null }, - "start": 19954, - "end": 19955, + "start": 19877, + "end": 19878, "loc": { "start": { "line": 379, - "column": 46 + "column": 29 }, "end": { "line": 379, - "column": 47 + "column": 30 } } }, @@ -106934,8 +106180,8 @@ "binop": null }, "value": "deflatedData", - "start": 19964, - "end": 19976, + "start": 19887, + "end": 19899, "loc": { "start": { "line": 380, @@ -106960,8 +106206,8 @@ "binop": null, "updateContext": null }, - "start": 19976, - "end": 19977, + "start": 19899, + "end": 19900, "loc": { "start": { "line": 380, @@ -106985,9 +106231,9 @@ "postfix": false, "binop": null }, - "value": "eachGeometryPositionsPortion", - "start": 19977, - "end": 20005, + "value": "reusedGeometriesDecodeMatrix", + "start": 19900, + "end": 19928, "loc": { "start": { "line": 380, @@ -107012,8 +106258,8 @@ "binop": null, "updateContext": null }, - "start": 20005, - "end": 20006, + "start": 19928, + "end": 19929, "loc": { "start": { "line": 380, @@ -107038,8 +106284,8 @@ "binop": null }, "value": "deflatedData", - "start": 20015, - "end": 20027, + "start": 19938, + "end": 19950, "loc": { "start": { "line": 381, @@ -107064,8 +106310,8 @@ "binop": null, "updateContext": null }, - "start": 20027, - "end": 20028, + "start": 19950, + "end": 19951, "loc": { "start": { "line": 381, @@ -107089,9 +106335,9 @@ "postfix": false, "binop": null }, - "value": "eachGeometryNormalsPortion", - "start": 20028, - "end": 20054, + "value": "eachGeometryPrimitiveType", + "start": 19951, + "end": 19976, "loc": { "start": { "line": 381, @@ -107099,7 +106345,7 @@ }, "end": { "line": 381, - "column": 47 + "column": 46 } } }, @@ -107116,16 +106362,16 @@ "binop": null, "updateContext": null }, - "start": 20054, - "end": 20055, + "start": 19976, + "end": 19977, "loc": { "start": { "line": 381, - "column": 47 + "column": 46 }, "end": { "line": 381, - "column": 48 + "column": 47 } } }, @@ -107142,8 +106388,8 @@ "binop": null }, "value": "deflatedData", - "start": 20064, - "end": 20076, + "start": 19986, + "end": 19998, "loc": { "start": { "line": 382, @@ -107168,8 +106414,8 @@ "binop": null, "updateContext": null }, - "start": 20076, - "end": 20077, + "start": 19998, + "end": 19999, "loc": { "start": { "line": 382, @@ -107193,9 +106439,9 @@ "postfix": false, "binop": null }, - "value": "eachGeometryColorsPortion", - "start": 20077, - "end": 20102, + "value": "eachGeometryPositionsPortion", + "start": 19999, + "end": 20027, "loc": { "start": { "line": 382, @@ -107203,7 +106449,7 @@ }, "end": { "line": 382, - "column": 46 + "column": 49 } } }, @@ -107220,16 +106466,16 @@ "binop": null, "updateContext": null }, - "start": 20102, - "end": 20103, + "start": 20027, + "end": 20028, "loc": { "start": { "line": 382, - "column": 46 + "column": 49 }, "end": { "line": 382, - "column": 47 + "column": 50 } } }, @@ -107246,8 +106492,8 @@ "binop": null }, "value": "deflatedData", - "start": 20112, - "end": 20124, + "start": 20037, + "end": 20049, "loc": { "start": { "line": 383, @@ -107272,8 +106518,8 @@ "binop": null, "updateContext": null }, - "start": 20124, - "end": 20125, + "start": 20049, + "end": 20050, "loc": { "start": { "line": 383, @@ -107297,9 +106543,9 @@ "postfix": false, "binop": null }, - "value": "eachGeometryUVsPortion", - "start": 20125, - "end": 20147, + "value": "eachGeometryNormalsPortion", + "start": 20050, + "end": 20076, "loc": { "start": { "line": 383, @@ -107307,7 +106553,7 @@ }, "end": { "line": 383, - "column": 43 + "column": 47 } } }, @@ -107324,16 +106570,16 @@ "binop": null, "updateContext": null }, - "start": 20147, - "end": 20148, + "start": 20076, + "end": 20077, "loc": { "start": { "line": 383, - "column": 43 + "column": 47 }, "end": { "line": 383, - "column": 44 + "column": 48 } } }, @@ -107350,8 +106596,8 @@ "binop": null }, "value": "deflatedData", - "start": 20157, - "end": 20169, + "start": 20086, + "end": 20098, "loc": { "start": { "line": 384, @@ -107376,8 +106622,8 @@ "binop": null, "updateContext": null }, - "start": 20169, - "end": 20170, + "start": 20098, + "end": 20099, "loc": { "start": { "line": 384, @@ -107401,9 +106647,9 @@ "postfix": false, "binop": null }, - "value": "eachGeometryIndicesPortion", - "start": 20170, - "end": 20196, + "value": "eachGeometryColorsPortion", + "start": 20099, + "end": 20124, "loc": { "start": { "line": 384, @@ -107411,7 +106657,7 @@ }, "end": { "line": 384, - "column": 47 + "column": 46 } } }, @@ -107428,16 +106674,16 @@ "binop": null, "updateContext": null }, - "start": 20196, - "end": 20197, + "start": 20124, + "end": 20125, "loc": { "start": { "line": 384, - "column": 47 + "column": 46 }, "end": { "line": 384, - "column": 48 + "column": 47 } } }, @@ -107454,8 +106700,8 @@ "binop": null }, "value": "deflatedData", - "start": 20206, - "end": 20218, + "start": 20134, + "end": 20146, "loc": { "start": { "line": 385, @@ -107480,8 +106726,8 @@ "binop": null, "updateContext": null }, - "start": 20218, - "end": 20219, + "start": 20146, + "end": 20147, "loc": { "start": { "line": 385, @@ -107505,9 +106751,9 @@ "postfix": false, "binop": null }, - "value": "eachGeometryEdgeIndicesPortion", - "start": 20219, - "end": 20249, + "value": "eachGeometryUVsPortion", + "start": 20147, + "end": 20169, "loc": { "start": { "line": 385, @@ -107515,7 +106761,7 @@ }, "end": { "line": 385, - "column": 51 + "column": 43 } } }, @@ -107532,16 +106778,16 @@ "binop": null, "updateContext": null }, - "start": 20249, - "end": 20250, + "start": 20169, + "end": 20170, "loc": { "start": { "line": 385, - "column": 51 + "column": 43 }, "end": { "line": 385, - "column": 52 + "column": 44 } } }, @@ -107558,8 +106804,8 @@ "binop": null }, "value": "deflatedData", - "start": 20259, - "end": 20271, + "start": 20179, + "end": 20191, "loc": { "start": { "line": 386, @@ -107584,8 +106830,8 @@ "binop": null, "updateContext": null }, - "start": 20271, - "end": 20272, + "start": 20191, + "end": 20192, "loc": { "start": { "line": 386, @@ -107609,9 +106855,9 @@ "postfix": false, "binop": null }, - "value": "eachMeshGeometriesPortion", - "start": 20272, - "end": 20297, + "value": "eachGeometryIndicesPortion", + "start": 20192, + "end": 20218, "loc": { "start": { "line": 386, @@ -107619,7 +106865,7 @@ }, "end": { "line": 386, - "column": 46 + "column": 47 } } }, @@ -107636,16 +106882,16 @@ "binop": null, "updateContext": null }, - "start": 20297, - "end": 20298, + "start": 20218, + "end": 20219, "loc": { "start": { "line": 386, - "column": 46 + "column": 47 }, "end": { "line": 386, - "column": 47 + "column": 48 } } }, @@ -107662,8 +106908,8 @@ "binop": null }, "value": "deflatedData", - "start": 20307, - "end": 20319, + "start": 20228, + "end": 20240, "loc": { "start": { "line": 387, @@ -107688,8 +106934,8 @@ "binop": null, "updateContext": null }, - "start": 20319, - "end": 20320, + "start": 20240, + "end": 20241, "loc": { "start": { "line": 387, @@ -107713,9 +106959,9 @@ "postfix": false, "binop": null }, - "value": "eachMeshMatricesPortion", - "start": 20320, - "end": 20343, + "value": "eachGeometryEdgeIndicesPortion", + "start": 20241, + "end": 20271, "loc": { "start": { "line": 387, @@ -107723,7 +106969,7 @@ }, "end": { "line": 387, - "column": 44 + "column": 51 } } }, @@ -107740,16 +106986,16 @@ "binop": null, "updateContext": null }, - "start": 20343, - "end": 20344, + "start": 20271, + "end": 20272, "loc": { "start": { "line": 387, - "column": 44 + "column": 51 }, "end": { "line": 387, - "column": 45 + "column": 52 } } }, @@ -107766,8 +107012,8 @@ "binop": null }, "value": "deflatedData", - "start": 20353, - "end": 20365, + "start": 20281, + "end": 20293, "loc": { "start": { "line": 388, @@ -107792,8 +107038,8 @@ "binop": null, "updateContext": null }, - "start": 20365, - "end": 20366, + "start": 20293, + "end": 20294, "loc": { "start": { "line": 388, @@ -107817,9 +107063,9 @@ "postfix": false, "binop": null }, - "value": "eachMeshTextureSet", - "start": 20366, - "end": 20384, + "value": "eachMeshGeometriesPortion", + "start": 20294, + "end": 20319, "loc": { "start": { "line": 388, @@ -107827,7 +107073,7 @@ }, "end": { "line": 388, - "column": 39 + "column": 46 } } }, @@ -107844,16 +107090,16 @@ "binop": null, "updateContext": null }, - "start": 20384, - "end": 20385, + "start": 20319, + "end": 20320, "loc": { "start": { "line": 388, - "column": 39 + "column": 46 }, "end": { "line": 388, - "column": 40 + "column": 47 } } }, @@ -107870,8 +107116,8 @@ "binop": null }, "value": "deflatedData", - "start": 20394, - "end": 20406, + "start": 20329, + "end": 20341, "loc": { "start": { "line": 389, @@ -107896,8 +107142,8 @@ "binop": null, "updateContext": null }, - "start": 20406, - "end": 20407, + "start": 20341, + "end": 20342, "loc": { "start": { "line": 389, @@ -107921,9 +107167,9 @@ "postfix": false, "binop": null }, - "value": "eachMeshMaterialAttributes", - "start": 20407, - "end": 20433, + "value": "eachMeshMatricesPortion", + "start": 20342, + "end": 20365, "loc": { "start": { "line": 389, @@ -107931,7 +107177,7 @@ }, "end": { "line": 389, - "column": 47 + "column": 44 } } }, @@ -107948,16 +107194,16 @@ "binop": null, "updateContext": null }, - "start": 20433, - "end": 20434, + "start": 20365, + "end": 20366, "loc": { "start": { "line": 389, - "column": 47 + "column": 44 }, "end": { "line": 389, - "column": 48 + "column": 45 } } }, @@ -107974,8 +107220,8 @@ "binop": null }, "value": "deflatedData", - "start": 20443, - "end": 20455, + "start": 20375, + "end": 20387, "loc": { "start": { "line": 390, @@ -108000,8 +107246,8 @@ "binop": null, "updateContext": null }, - "start": 20455, - "end": 20456, + "start": 20387, + "end": 20388, "loc": { "start": { "line": 390, @@ -108025,9 +107271,9 @@ "postfix": false, "binop": null }, - "value": "eachEntityId", - "start": 20456, - "end": 20468, + "value": "eachMeshTextureSet", + "start": 20388, + "end": 20406, "loc": { "start": { "line": 390, @@ -108035,7 +107281,7 @@ }, "end": { "line": 390, - "column": 33 + "column": 39 } } }, @@ -108052,16 +107298,16 @@ "binop": null, "updateContext": null }, - "start": 20468, - "end": 20469, + "start": 20406, + "end": 20407, "loc": { "start": { "line": 390, - "column": 33 + "column": 39 }, "end": { "line": 390, - "column": 34 + "column": 40 } } }, @@ -108078,8 +107324,8 @@ "binop": null }, "value": "deflatedData", - "start": 20478, - "end": 20490, + "start": 20416, + "end": 20428, "loc": { "start": { "line": 391, @@ -108104,8 +107350,8 @@ "binop": null, "updateContext": null }, - "start": 20490, - "end": 20491, + "start": 20428, + "end": 20429, "loc": { "start": { "line": 391, @@ -108129,9 +107375,9 @@ "postfix": false, "binop": null }, - "value": "eachEntityMeshesPortion", - "start": 20491, - "end": 20514, + "value": "eachMeshMaterialAttributes", + "start": 20429, + "end": 20455, "loc": { "start": { "line": 391, @@ -108139,7 +107385,7 @@ }, "end": { "line": 391, - "column": 44 + "column": 47 } } }, @@ -108156,16 +107402,16 @@ "binop": null, "updateContext": null }, - "start": 20514, - "end": 20515, + "start": 20455, + "end": 20456, "loc": { "start": { "line": 391, - "column": 44 + "column": 47 }, "end": { "line": 391, - "column": 45 + "column": 48 } } }, @@ -108182,8 +107428,8 @@ "binop": null }, "value": "deflatedData", - "start": 20524, - "end": 20536, + "start": 20465, + "end": 20477, "loc": { "start": { "line": 392, @@ -108208,8 +107454,8 @@ "binop": null, "updateContext": null }, - "start": 20536, - "end": 20537, + "start": 20477, + "end": 20478, "loc": { "start": { "line": 392, @@ -108233,9 +107479,9 @@ "postfix": false, "binop": null }, - "value": "eachTileAABB", - "start": 20537, - "end": 20549, + "value": "eachEntityId", + "start": 20478, + "end": 20490, "loc": { "start": { "line": 392, @@ -108260,8 +107506,8 @@ "binop": null, "updateContext": null }, - "start": 20549, - "end": 20550, + "start": 20490, + "end": 20491, "loc": { "start": { "line": 392, @@ -108286,8 +107532,8 @@ "binop": null }, "value": "deflatedData", - "start": 20559, - "end": 20571, + "start": 20500, + "end": 20512, "loc": { "start": { "line": 393, @@ -108312,8 +107558,8 @@ "binop": null, "updateContext": null }, - "start": 20571, - "end": 20572, + "start": 20512, + "end": 20513, "loc": { "start": { "line": 393, @@ -108337,9 +107583,9 @@ "postfix": false, "binop": null }, - "value": "eachTileEntitiesPortion", - "start": 20572, - "end": 20595, + "value": "eachEntityMeshesPortion", + "start": 20513, + "end": 20536, "loc": { "start": { "line": 393, @@ -108353,7 +107599,59 @@ }, { "type": { - "label": "]", + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 20536, + "end": 20537, + "loc": { + "start": { + "line": 393, + "column": 44 + }, + "end": { + "line": 393, + "column": 45 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "deflatedData", + "start": 20546, + "end": 20558, + "loc": { + "start": { + "line": 394, + "column": 8 + }, + "end": { + "line": 394, + "column": 20 + } + } + }, + { + "type": { + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -108364,15 +107662,171 @@ "binop": null, "updateContext": null }, - "start": 20600, - "end": 20601, + "start": 20558, + "end": 20559, "loc": { "start": { "line": 394, - "column": 4 + "column": 20 }, "end": { "line": 394, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "eachTileAABB", + "start": 20559, + "end": 20571, + "loc": { + "start": { + "line": 394, + "column": 21 + }, + "end": { + "line": 394, + "column": 33 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 20571, + "end": 20572, + "loc": { + "start": { + "line": 394, + "column": 33 + }, + "end": { + "line": 394, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "deflatedData", + "start": 20581, + "end": 20593, + "loc": { + "start": { + "line": 395, + "column": 8 + }, + "end": { + "line": 395, + "column": 20 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 20593, + "end": 20594, + "loc": { + "start": { + "line": 395, + "column": 20 + }, + "end": { + "line": 395, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "eachTileEntitiesPortion", + "start": 20594, + "end": 20617, + "loc": { + "start": { + "line": 395, + "column": 21 + }, + "end": { + "line": 395, + "column": 44 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 20622, + "end": 20623, + "loc": { + "start": { + "line": 396, + "column": 4 + }, + "end": { + "line": 396, "column": 5 } } @@ -108389,15 +107843,15 @@ "postfix": false, "binop": null }, - "start": 20601, - "end": 20602, + "start": 20623, + "end": 20624, "loc": { "start": { - "line": 394, + "line": 396, "column": 5 }, "end": { - "line": 394, + "line": 396, "column": 6 } } @@ -108415,15 +107869,15 @@ "binop": null, "updateContext": null }, - "start": 20602, - "end": 20603, + "start": 20624, + "end": 20625, "loc": { "start": { - "line": 394, + "line": 396, "column": 6 }, "end": { - "line": 394, + "line": 396, "column": 7 } } @@ -108440,15 +107894,15 @@ "postfix": false, "binop": null }, - "start": 20604, - "end": 20605, + "start": 20626, + "end": 20627, "loc": { "start": { - "line": 395, + "line": 397, "column": 0 }, "end": { - "line": 395, + "line": 397, "column": 1 } } @@ -108467,15 +107921,15 @@ "binop": null }, "value": "function", - "start": 20607, - "end": 20615, + "start": 20629, + "end": 20637, "loc": { "start": { - "line": 397, + "line": 399, "column": 0 }, "end": { - "line": 397, + "line": 399, "column": 8 } } @@ -108493,15 +107947,15 @@ "binop": null }, "value": "toArrayBuffer", - "start": 20616, - "end": 20629, + "start": 20638, + "end": 20651, "loc": { "start": { - "line": 397, + "line": 399, "column": 9 }, "end": { - "line": 397, + "line": 399, "column": 22 } } @@ -108518,15 +107972,15 @@ "postfix": false, "binop": null }, - "start": 20629, - "end": 20630, + "start": 20651, + "end": 20652, "loc": { "start": { - "line": 397, + "line": 399, "column": 22 }, "end": { - "line": 397, + "line": 399, "column": 23 } } @@ -108544,15 +107998,15 @@ "binop": null }, "value": "elements", - "start": 20630, - "end": 20638, + "start": 20652, + "end": 20660, "loc": { "start": { - "line": 397, + "line": 399, "column": 23 }, "end": { - "line": 397, + "line": 399, "column": 31 } } @@ -108569,15 +108023,15 @@ "postfix": false, "binop": null }, - "start": 20638, - "end": 20639, + "start": 20660, + "end": 20661, "loc": { "start": { - "line": 397, + "line": 399, "column": 31 }, "end": { - "line": 397, + "line": 399, "column": 32 } } @@ -108594,15 +108048,15 @@ "postfix": false, "binop": null }, - "start": 20640, - "end": 20641, + "start": 20662, + "end": 20663, "loc": { "start": { - "line": 397, + "line": 399, "column": 33 }, "end": { - "line": 397, + "line": 399, "column": 34 } } @@ -108622,15 +108076,15 @@ "updateContext": null }, "value": "const", - "start": 20646, - "end": 20651, + "start": 20668, + "end": 20673, "loc": { "start": { - "line": 398, + "line": 400, "column": 4 }, "end": { - "line": 398, + "line": 400, "column": 9 } } @@ -108648,15 +108102,15 @@ "binop": null }, "value": "indexData", - "start": 20652, - "end": 20661, + "start": 20674, + "end": 20683, "loc": { "start": { - "line": 398, + "line": 400, "column": 10 }, "end": { - "line": 398, + "line": 400, "column": 19 } } @@ -108675,15 +108129,15 @@ "updateContext": null }, "value": "=", - "start": 20662, - "end": 20663, + "start": 20684, + "end": 20685, "loc": { "start": { - "line": 398, + "line": 400, "column": 20 }, "end": { - "line": 398, + "line": 400, "column": 21 } } @@ -108703,15 +108157,15 @@ "updateContext": null }, "value": "new", - "start": 20664, - "end": 20667, + "start": 20686, + "end": 20689, "loc": { "start": { - "line": 398, + "line": 400, "column": 22 }, "end": { - "line": 398, + "line": 400, "column": 25 } } @@ -108729,15 +108183,15 @@ "binop": null }, "value": "Uint32Array", - "start": 20668, - "end": 20679, + "start": 20690, + "end": 20701, "loc": { "start": { - "line": 398, + "line": 400, "column": 26 }, "end": { - "line": 398, + "line": 400, "column": 37 } } @@ -108754,15 +108208,15 @@ "postfix": false, "binop": null }, - "start": 20679, - "end": 20680, + "start": 20701, + "end": 20702, "loc": { "start": { - "line": 398, + "line": 400, "column": 37 }, "end": { - "line": 398, + "line": 400, "column": 38 } } @@ -108780,15 +108234,15 @@ "binop": null }, "value": "elements", - "start": 20680, - "end": 20688, + "start": 20702, + "end": 20710, "loc": { "start": { - "line": 398, + "line": 400, "column": 38 }, "end": { - "line": 398, + "line": 400, "column": 46 } } @@ -108806,15 +108260,15 @@ "binop": null, "updateContext": null }, - "start": 20688, - "end": 20689, + "start": 20710, + "end": 20711, "loc": { "start": { - "line": 398, + "line": 400, "column": 46 }, "end": { - "line": 398, + "line": 400, "column": 47 } } @@ -108832,15 +108286,15 @@ "binop": null }, "value": "length", - "start": 20689, - "end": 20695, + "start": 20711, + "end": 20717, "loc": { "start": { - "line": 398, + "line": 400, "column": 47 }, "end": { - "line": 398, + "line": 400, "column": 53 } } @@ -108859,15 +108313,15 @@ "updateContext": null }, "value": "+", - "start": 20696, - "end": 20697, + "start": 20718, + "end": 20719, "loc": { "start": { - "line": 398, + "line": 400, "column": 54 }, "end": { - "line": 398, + "line": 400, "column": 55 } } @@ -108886,15 +108340,15 @@ "updateContext": null }, "value": 2, - "start": 20698, - "end": 20699, + "start": 20720, + "end": 20721, "loc": { "start": { - "line": 398, + "line": 400, "column": 56 }, "end": { - "line": 398, + "line": 400, "column": 57 } } @@ -108911,15 +108365,15 @@ "postfix": false, "binop": null }, - "start": 20699, - "end": 20700, + "start": 20721, + "end": 20722, "loc": { "start": { - "line": 398, + "line": 400, "column": 57 }, "end": { - "line": 398, + "line": 400, "column": 58 } } @@ -108937,15 +108391,15 @@ "binop": null, "updateContext": null }, - "start": 20700, - "end": 20701, + "start": 20722, + "end": 20723, "loc": { "start": { - "line": 398, + "line": 400, "column": 58 }, "end": { - "line": 398, + "line": 400, "column": 59 } } @@ -108963,15 +108417,15 @@ "binop": null }, "value": "indexData", - "start": 20706, - "end": 20715, + "start": 20728, + "end": 20737, "loc": { "start": { - "line": 399, + "line": 401, "column": 4 }, "end": { - "line": 399, + "line": 401, "column": 13 } } @@ -108989,15 +108443,15 @@ "binop": null, "updateContext": null }, - "start": 20715, - "end": 20716, + "start": 20737, + "end": 20738, "loc": { "start": { - "line": 399, + "line": 401, "column": 13 }, "end": { - "line": 399, + "line": 401, "column": 14 } } @@ -109016,15 +108470,15 @@ "updateContext": null }, "value": 0, - "start": 20716, - "end": 20717, + "start": 20738, + "end": 20739, "loc": { "start": { - "line": 399, + "line": 401, "column": 14 }, "end": { - "line": 399, + "line": 401, "column": 15 } } @@ -109042,15 +108496,15 @@ "binop": null, "updateContext": null }, - "start": 20717, - "end": 20718, + "start": 20739, + "end": 20740, "loc": { "start": { - "line": 399, + "line": 401, "column": 15 }, "end": { - "line": 399, + "line": 401, "column": 16 } } @@ -109069,15 +108523,15 @@ "updateContext": null }, "value": "=", - "start": 20719, - "end": 20720, + "start": 20741, + "end": 20742, "loc": { "start": { - "line": 399, + "line": 401, "column": 17 }, "end": { - "line": 399, + "line": 401, "column": 18 } } @@ -109095,15 +108549,15 @@ "binop": null }, "value": "XKT_VERSION", - "start": 20721, - "end": 20732, + "start": 20743, + "end": 20754, "loc": { "start": { - "line": 399, + "line": 401, "column": 19 }, "end": { - "line": 399, + "line": 401, "column": 30 } } @@ -109121,15 +108575,15 @@ "binop": null, "updateContext": null }, - "start": 20732, - "end": 20733, + "start": 20754, + "end": 20755, "loc": { "start": { - "line": 399, + "line": 401, "column": 30 }, "end": { - "line": 399, + "line": 401, "column": 31 } } @@ -109147,15 +108601,15 @@ "binop": null }, "value": "indexData", - "start": 20738, - "end": 20747, + "start": 20760, + "end": 20769, "loc": { "start": { - "line": 400, + "line": 402, "column": 4 }, "end": { - "line": 400, + "line": 402, "column": 13 } } @@ -109173,15 +108627,15 @@ "binop": null, "updateContext": null }, - "start": 20748, - "end": 20749, + "start": 20770, + "end": 20771, "loc": { "start": { - "line": 400, + "line": 402, "column": 14 }, "end": { - "line": 400, + "line": 402, "column": 15 } } @@ -109200,15 +108654,15 @@ "updateContext": null }, "value": 1, - "start": 20749, - "end": 20750, + "start": 20771, + "end": 20772, "loc": { "start": { - "line": 400, + "line": 402, "column": 15 }, "end": { - "line": 400, + "line": 402, "column": 16 } } @@ -109226,15 +108680,15 @@ "binop": null, "updateContext": null }, - "start": 20750, - "end": 20751, + "start": 20772, + "end": 20773, "loc": { "start": { - "line": 400, + "line": 402, "column": 16 }, "end": { - "line": 400, + "line": 402, "column": 17 } } @@ -109253,15 +108707,15 @@ "updateContext": null }, "value": "=", - "start": 20752, - "end": 20753, + "start": 20774, + "end": 20775, "loc": { "start": { - "line": 400, + "line": 402, "column": 18 }, "end": { - "line": 400, + "line": 402, "column": 19 } } @@ -109279,15 +108733,15 @@ "binop": null }, "value": "elements", - "start": 20754, - "end": 20762, + "start": 20776, + "end": 20784, "loc": { "start": { - "line": 400, + "line": 402, "column": 20 }, "end": { - "line": 400, + "line": 402, "column": 28 } } @@ -109305,15 +108759,15 @@ "binop": null, "updateContext": null }, - "start": 20762, - "end": 20763, + "start": 20784, + "end": 20785, "loc": { "start": { - "line": 400, + "line": 402, "column": 28 }, "end": { - "line": 400, + "line": 402, "column": 29 } } @@ -109331,15 +108785,15 @@ "binop": null }, "value": "length", - "start": 20763, - "end": 20769, + "start": 20785, + "end": 20791, "loc": { "start": { - "line": 400, + "line": 402, "column": 29 }, "end": { - "line": 400, + "line": 402, "column": 35 } } @@ -109357,15 +108811,15 @@ "binop": null, "updateContext": null }, - "start": 20769, - "end": 20770, + "start": 20791, + "end": 20792, "loc": { "start": { - "line": 400, + "line": 402, "column": 35 }, "end": { - "line": 400, + "line": 402, "column": 36 } } @@ -109373,15 +108827,15 @@ { "type": "CommentLine", "value": " Stored Data 1.1: number of stored elements", - "start": 20772, - "end": 20817, + "start": 20794, + "end": 20839, "loc": { "start": { - "line": 400, + "line": 402, "column": 38 }, "end": { - "line": 400, + "line": 402, "column": 83 } } @@ -109401,15 +108855,15 @@ "updateContext": null }, "value": "let", - "start": 20822, - "end": 20825, + "start": 20844, + "end": 20847, "loc": { "start": { - "line": 401, + "line": 403, "column": 4 }, "end": { - "line": 401, + "line": 403, "column": 7 } } @@ -109427,15 +108881,15 @@ "binop": null }, "value": "dataLen", - "start": 20826, - "end": 20833, + "start": 20848, + "end": 20855, "loc": { "start": { - "line": 401, + "line": 403, "column": 8 }, "end": { - "line": 401, + "line": 403, "column": 15 } } @@ -109454,15 +108908,15 @@ "updateContext": null }, "value": "=", - "start": 20834, - "end": 20835, + "start": 20856, + "end": 20857, "loc": { "start": { - "line": 401, + "line": 403, "column": 16 }, "end": { - "line": 401, + "line": 403, "column": 17 } } @@ -109481,15 +108935,15 @@ "updateContext": null }, "value": 0, - "start": 20836, - "end": 20837, + "start": 20858, + "end": 20859, "loc": { "start": { - "line": 401, + "line": 403, "column": 18 }, "end": { - "line": 401, + "line": 403, "column": 19 } } @@ -109507,15 +108961,15 @@ "binop": null, "updateContext": null }, - "start": 20837, - "end": 20838, + "start": 20859, + "end": 20860, "loc": { "start": { - "line": 401, + "line": 403, "column": 19 }, "end": { - "line": 401, + "line": 403, "column": 20 } } @@ -109523,15 +108977,15 @@ { "type": "CommentLine", "value": " Stored Data 1.2: length of stored elements", - "start": 20842, - "end": 20887, + "start": 20864, + "end": 20909, "loc": { "start": { - "line": 401, + "line": 403, "column": 24 }, "end": { - "line": 401, + "line": 403, "column": 69 } } @@ -109551,15 +109005,15 @@ "updateContext": null }, "value": "for", - "start": 20892, - "end": 20895, + "start": 20914, + "end": 20917, "loc": { "start": { - "line": 402, + "line": 404, "column": 4 }, "end": { - "line": 402, + "line": 404, "column": 7 } } @@ -109576,15 +109030,15 @@ "postfix": false, "binop": null }, - "start": 20896, - "end": 20897, + "start": 20918, + "end": 20919, "loc": { "start": { - "line": 402, + "line": 404, "column": 8 }, "end": { - "line": 402, + "line": 404, "column": 9 } } @@ -109604,15 +109058,15 @@ "updateContext": null }, "value": "let", - "start": 20897, - "end": 20900, + "start": 20919, + "end": 20922, "loc": { "start": { - "line": 402, + "line": 404, "column": 9 }, "end": { - "line": 402, + "line": 404, "column": 12 } } @@ -109630,15 +109084,15 @@ "binop": null }, "value": "i", - "start": 20901, - "end": 20902, + "start": 20923, + "end": 20924, "loc": { "start": { - "line": 402, + "line": 404, "column": 13 }, "end": { - "line": 402, + "line": 404, "column": 14 } } @@ -109657,15 +109111,15 @@ "updateContext": null }, "value": "=", - "start": 20903, - "end": 20904, + "start": 20925, + "end": 20926, "loc": { "start": { - "line": 402, + "line": 404, "column": 15 }, "end": { - "line": 402, + "line": 404, "column": 16 } } @@ -109684,15 +109138,15 @@ "updateContext": null }, "value": 0, - "start": 20905, - "end": 20906, + "start": 20927, + "end": 20928, "loc": { "start": { - "line": 402, + "line": 404, "column": 17 }, "end": { - "line": 402, + "line": 404, "column": 18 } } @@ -109710,15 +109164,15 @@ "binop": null, "updateContext": null }, - "start": 20906, - "end": 20907, + "start": 20928, + "end": 20929, "loc": { "start": { - "line": 402, + "line": 404, "column": 18 }, "end": { - "line": 402, + "line": 404, "column": 19 } } @@ -109736,15 +109190,15 @@ "binop": null }, "value": "len", - "start": 20908, - "end": 20911, + "start": 20930, + "end": 20933, "loc": { "start": { - "line": 402, + "line": 404, "column": 20 }, "end": { - "line": 402, + "line": 404, "column": 23 } } @@ -109763,15 +109217,15 @@ "updateContext": null }, "value": "=", - "start": 20912, - "end": 20913, + "start": 20934, + "end": 20935, "loc": { "start": { - "line": 402, + "line": 404, "column": 24 }, "end": { - "line": 402, + "line": 404, "column": 25 } } @@ -109789,15 +109243,15 @@ "binop": null }, "value": "elements", - "start": 20914, - "end": 20922, + "start": 20936, + "end": 20944, "loc": { "start": { - "line": 402, + "line": 404, "column": 26 }, "end": { - "line": 402, + "line": 404, "column": 34 } } @@ -109815,15 +109269,15 @@ "binop": null, "updateContext": null }, - "start": 20922, - "end": 20923, + "start": 20944, + "end": 20945, "loc": { "start": { - "line": 402, + "line": 404, "column": 34 }, "end": { - "line": 402, + "line": 404, "column": 35 } } @@ -109841,15 +109295,15 @@ "binop": null }, "value": "length", - "start": 20923, - "end": 20929, + "start": 20945, + "end": 20951, "loc": { "start": { - "line": 402, + "line": 404, "column": 35 }, "end": { - "line": 402, + "line": 404, "column": 41 } } @@ -109867,15 +109321,15 @@ "binop": null, "updateContext": null }, - "start": 20929, - "end": 20930, + "start": 20951, + "end": 20952, "loc": { "start": { - "line": 402, + "line": 404, "column": 41 }, "end": { - "line": 402, + "line": 404, "column": 42 } } @@ -109893,15 +109347,15 @@ "binop": null }, "value": "i", - "start": 20931, - "end": 20932, + "start": 20953, + "end": 20954, "loc": { "start": { - "line": 402, + "line": 404, "column": 43 }, "end": { - "line": 402, + "line": 404, "column": 44 } } @@ -109920,15 +109374,15 @@ "updateContext": null }, "value": "<", - "start": 20933, - "end": 20934, + "start": 20955, + "end": 20956, "loc": { "start": { - "line": 402, + "line": 404, "column": 45 }, "end": { - "line": 402, + "line": 404, "column": 46 } } @@ -109946,15 +109400,15 @@ "binop": null }, "value": "len", - "start": 20935, - "end": 20938, + "start": 20957, + "end": 20960, "loc": { "start": { - "line": 402, + "line": 404, "column": 47 }, "end": { - "line": 402, + "line": 404, "column": 50 } } @@ -109972,15 +109426,15 @@ "binop": null, "updateContext": null }, - "start": 20938, - "end": 20939, + "start": 20960, + "end": 20961, "loc": { "start": { - "line": 402, + "line": 404, "column": 50 }, "end": { - "line": 402, + "line": 404, "column": 51 } } @@ -109998,15 +109452,15 @@ "binop": null }, "value": "i", - "start": 20940, - "end": 20941, + "start": 20962, + "end": 20963, "loc": { "start": { - "line": 402, + "line": 404, "column": 52 }, "end": { - "line": 402, + "line": 404, "column": 53 } } @@ -110024,15 +109478,15 @@ "binop": null }, "value": "++", - "start": 20941, - "end": 20943, + "start": 20963, + "end": 20965, "loc": { "start": { - "line": 402, + "line": 404, "column": 53 }, "end": { - "line": 402, + "line": 404, "column": 55 } } @@ -110049,15 +109503,15 @@ "postfix": false, "binop": null }, - "start": 20943, - "end": 20944, + "start": 20965, + "end": 20966, "loc": { "start": { - "line": 402, + "line": 404, "column": 55 }, "end": { - "line": 402, + "line": 404, "column": 56 } } @@ -110074,15 +109528,15 @@ "postfix": false, "binop": null }, - "start": 20945, - "end": 20946, + "start": 20967, + "end": 20968, "loc": { "start": { - "line": 402, + "line": 404, "column": 57 }, "end": { - "line": 402, + "line": 404, "column": 58 } } @@ -110102,15 +109556,15 @@ "updateContext": null }, "value": "const", - "start": 20955, - "end": 20960, + "start": 20977, + "end": 20982, "loc": { "start": { - "line": 403, + "line": 405, "column": 8 }, "end": { - "line": 403, + "line": 405, "column": 13 } } @@ -110128,15 +109582,15 @@ "binop": null }, "value": "element", - "start": 20961, - "end": 20968, + "start": 20983, + "end": 20990, "loc": { "start": { - "line": 403, + "line": 405, "column": 14 }, "end": { - "line": 403, + "line": 405, "column": 21 } } @@ -110155,15 +109609,15 @@ "updateContext": null }, "value": "=", - "start": 20969, - "end": 20970, + "start": 20991, + "end": 20992, "loc": { "start": { - "line": 403, + "line": 405, "column": 22 }, "end": { - "line": 403, + "line": 405, "column": 23 } } @@ -110181,15 +109635,15 @@ "binop": null }, "value": "elements", - "start": 20971, - "end": 20979, + "start": 20993, + "end": 21001, "loc": { "start": { - "line": 403, + "line": 405, "column": 24 }, "end": { - "line": 403, + "line": 405, "column": 32 } } @@ -110207,15 +109661,15 @@ "binop": null, "updateContext": null }, - "start": 20979, - "end": 20980, + "start": 21001, + "end": 21002, "loc": { "start": { - "line": 403, + "line": 405, "column": 32 }, "end": { - "line": 403, + "line": 405, "column": 33 } } @@ -110233,15 +109687,15 @@ "binop": null }, "value": "i", - "start": 20980, - "end": 20981, + "start": 21002, + "end": 21003, "loc": { "start": { - "line": 403, + "line": 405, "column": 33 }, "end": { - "line": 403, + "line": 405, "column": 34 } } @@ -110259,15 +109713,15 @@ "binop": null, "updateContext": null }, - "start": 20981, - "end": 20982, + "start": 21003, + "end": 21004, "loc": { "start": { - "line": 403, + "line": 405, "column": 34 }, "end": { - "line": 403, + "line": 405, "column": 35 } } @@ -110285,15 +109739,15 @@ "binop": null, "updateContext": null }, - "start": 20982, - "end": 20983, + "start": 21004, + "end": 21005, "loc": { "start": { - "line": 403, + "line": 405, "column": 35 }, "end": { - "line": 403, + "line": 405, "column": 36 } } @@ -110313,15 +109767,15 @@ "updateContext": null }, "value": "const", - "start": 20992, - "end": 20997, + "start": 21014, + "end": 21019, "loc": { "start": { - "line": 404, + "line": 406, "column": 8 }, "end": { - "line": 404, + "line": 406, "column": 13 } } @@ -110339,15 +109793,15 @@ "binop": null }, "value": "elementsize", - "start": 20998, - "end": 21009, + "start": 21020, + "end": 21031, "loc": { "start": { - "line": 404, + "line": 406, "column": 14 }, "end": { - "line": 404, + "line": 406, "column": 25 } } @@ -110366,15 +109820,15 @@ "updateContext": null }, "value": "=", - "start": 21010, - "end": 21011, + "start": 21032, + "end": 21033, "loc": { "start": { - "line": 404, + "line": 406, "column": 26 }, "end": { - "line": 404, + "line": 406, "column": 27 } } @@ -110392,15 +109846,15 @@ "binop": null }, "value": "element", - "start": 21012, - "end": 21019, + "start": 21034, + "end": 21041, "loc": { "start": { - "line": 404, + "line": 406, "column": 28 }, "end": { - "line": 404, + "line": 406, "column": 35 } } @@ -110418,15 +109872,15 @@ "binop": null, "updateContext": null }, - "start": 21019, - "end": 21020, + "start": 21041, + "end": 21042, "loc": { "start": { - "line": 404, + "line": 406, "column": 35 }, "end": { - "line": 404, + "line": 406, "column": 36 } } @@ -110444,15 +109898,15 @@ "binop": null }, "value": "length", - "start": 21020, - "end": 21026, + "start": 21042, + "end": 21048, "loc": { "start": { - "line": 404, + "line": 406, "column": 36 }, "end": { - "line": 404, + "line": 406, "column": 42 } } @@ -110470,15 +109924,15 @@ "binop": null, "updateContext": null }, - "start": 21026, - "end": 21027, + "start": 21048, + "end": 21049, "loc": { "start": { - "line": 404, + "line": 406, "column": 42 }, "end": { - "line": 404, + "line": 406, "column": 43 } } @@ -110496,15 +109950,15 @@ "binop": null }, "value": "indexData", - "start": 21036, - "end": 21045, + "start": 21058, + "end": 21067, "loc": { "start": { - "line": 405, + "line": 407, "column": 8 }, "end": { - "line": 405, + "line": 407, "column": 17 } } @@ -110522,15 +109976,15 @@ "binop": null, "updateContext": null }, - "start": 21045, - "end": 21046, + "start": 21067, + "end": 21068, "loc": { "start": { - "line": 405, + "line": 407, "column": 17 }, "end": { - "line": 405, + "line": 407, "column": 18 } } @@ -110548,15 +110002,15 @@ "binop": null }, "value": "i", - "start": 21046, - "end": 21047, + "start": 21068, + "end": 21069, "loc": { "start": { - "line": 405, + "line": 407, "column": 18 }, "end": { - "line": 405, + "line": 407, "column": 19 } } @@ -110575,15 +110029,15 @@ "updateContext": null }, "value": "+", - "start": 21048, - "end": 21049, + "start": 21070, + "end": 21071, "loc": { "start": { - "line": 405, + "line": 407, "column": 20 }, "end": { - "line": 405, + "line": 407, "column": 21 } } @@ -110602,15 +110056,15 @@ "updateContext": null }, "value": 2, - "start": 21050, - "end": 21051, + "start": 21072, + "end": 21073, "loc": { "start": { - "line": 405, + "line": 407, "column": 22 }, "end": { - "line": 405, + "line": 407, "column": 23 } } @@ -110628,15 +110082,15 @@ "binop": null, "updateContext": null }, - "start": 21051, - "end": 21052, + "start": 21073, + "end": 21074, "loc": { "start": { - "line": 405, + "line": 407, "column": 23 }, "end": { - "line": 405, + "line": 407, "column": 24 } } @@ -110655,15 +110109,15 @@ "updateContext": null }, "value": "=", - "start": 21053, - "end": 21054, + "start": 21075, + "end": 21076, "loc": { "start": { - "line": 405, + "line": 407, "column": 25 }, "end": { - "line": 405, + "line": 407, "column": 26 } } @@ -110681,15 +110135,15 @@ "binop": null }, "value": "elementsize", - "start": 21055, - "end": 21066, + "start": 21077, + "end": 21088, "loc": { "start": { - "line": 405, + "line": 407, "column": 27 }, "end": { - "line": 405, + "line": 407, "column": 38 } } @@ -110707,15 +110161,15 @@ "binop": null, "updateContext": null }, - "start": 21066, - "end": 21067, + "start": 21088, + "end": 21089, "loc": { "start": { - "line": 405, + "line": 407, "column": 38 }, "end": { - "line": 405, + "line": 407, "column": 39 } } @@ -110733,15 +110187,15 @@ "binop": null }, "value": "dataLen", - "start": 21076, - "end": 21083, + "start": 21098, + "end": 21105, "loc": { "start": { - "line": 406, + "line": 408, "column": 8 }, "end": { - "line": 406, + "line": 408, "column": 15 } } @@ -110760,15 +110214,15 @@ "updateContext": null }, "value": "+=", - "start": 21084, - "end": 21086, + "start": 21106, + "end": 21108, "loc": { "start": { - "line": 406, + "line": 408, "column": 16 }, "end": { - "line": 406, + "line": 408, "column": 18 } } @@ -110786,15 +110240,15 @@ "binop": null }, "value": "elementsize", - "start": 21087, - "end": 21098, + "start": 21109, + "end": 21120, "loc": { "start": { - "line": 406, + "line": 408, "column": 19 }, "end": { - "line": 406, + "line": 408, "column": 30 } } @@ -110812,15 +110266,15 @@ "binop": null, "updateContext": null }, - "start": 21098, - "end": 21099, + "start": 21120, + "end": 21121, "loc": { "start": { - "line": 406, + "line": 408, "column": 30 }, "end": { - "line": 406, + "line": 408, "column": 31 } } @@ -110837,15 +110291,15 @@ "postfix": false, "binop": null }, - "start": 21104, - "end": 21105, + "start": 21126, + "end": 21127, "loc": { "start": { - "line": 407, + "line": 409, "column": 4 }, "end": { - "line": 407, + "line": 409, "column": 5 } } @@ -110865,15 +110319,15 @@ "updateContext": null }, "value": "const", - "start": 21110, - "end": 21115, + "start": 21132, + "end": 21137, "loc": { "start": { - "line": 408, + "line": 410, "column": 4 }, "end": { - "line": 408, + "line": 410, "column": 9 } } @@ -110891,15 +110345,15 @@ "binop": null }, "value": "indexBuf", - "start": 21116, - "end": 21124, + "start": 21138, + "end": 21146, "loc": { "start": { - "line": 408, + "line": 410, "column": 10 }, "end": { - "line": 408, + "line": 410, "column": 18 } } @@ -110918,15 +110372,15 @@ "updateContext": null }, "value": "=", - "start": 21125, - "end": 21126, + "start": 21147, + "end": 21148, "loc": { "start": { - "line": 408, + "line": 410, "column": 19 }, "end": { - "line": 408, + "line": 410, "column": 20 } } @@ -110946,15 +110400,15 @@ "updateContext": null }, "value": "new", - "start": 21127, - "end": 21130, + "start": 21149, + "end": 21152, "loc": { "start": { - "line": 408, + "line": 410, "column": 21 }, "end": { - "line": 408, + "line": 410, "column": 24 } } @@ -110972,15 +110426,15 @@ "binop": null }, "value": "Uint8Array", - "start": 21131, - "end": 21141, + "start": 21153, + "end": 21163, "loc": { "start": { - "line": 408, + "line": 410, "column": 25 }, "end": { - "line": 408, + "line": 410, "column": 35 } } @@ -110997,15 +110451,15 @@ "postfix": false, "binop": null }, - "start": 21141, - "end": 21142, + "start": 21163, + "end": 21164, "loc": { "start": { - "line": 408, + "line": 410, "column": 35 }, "end": { - "line": 408, + "line": 410, "column": 36 } } @@ -111023,15 +110477,15 @@ "binop": null }, "value": "indexData", - "start": 21142, - "end": 21151, + "start": 21164, + "end": 21173, "loc": { "start": { - "line": 408, + "line": 410, "column": 36 }, "end": { - "line": 408, + "line": 410, "column": 45 } } @@ -111049,15 +110503,15 @@ "binop": null, "updateContext": null }, - "start": 21151, - "end": 21152, + "start": 21173, + "end": 21174, "loc": { "start": { - "line": 408, + "line": 410, "column": 45 }, "end": { - "line": 408, + "line": 410, "column": 46 } } @@ -111075,15 +110529,15 @@ "binop": null }, "value": "buffer", - "start": 21152, - "end": 21158, + "start": 21174, + "end": 21180, "loc": { "start": { - "line": 408, + "line": 410, "column": 46 }, "end": { - "line": 408, + "line": 410, "column": 52 } } @@ -111100,15 +110554,15 @@ "postfix": false, "binop": null }, - "start": 21158, - "end": 21159, + "start": 21180, + "end": 21181, "loc": { "start": { - "line": 408, + "line": 410, "column": 52 }, "end": { - "line": 408, + "line": 410, "column": 53 } } @@ -111126,15 +110580,15 @@ "binop": null, "updateContext": null }, - "start": 21159, - "end": 21160, + "start": 21181, + "end": 21182, "loc": { "start": { - "line": 408, + "line": 410, "column": 53 }, "end": { - "line": 408, + "line": 410, "column": 54 } } @@ -111154,15 +110608,15 @@ "updateContext": null }, "value": "const", - "start": 21165, - "end": 21170, + "start": 21187, + "end": 21192, "loc": { "start": { - "line": 409, + "line": 411, "column": 4 }, "end": { - "line": 409, + "line": 411, "column": 9 } } @@ -111180,15 +110634,15 @@ "binop": null }, "value": "dataArray", - "start": 21171, - "end": 21180, + "start": 21193, + "end": 21202, "loc": { "start": { - "line": 409, + "line": 411, "column": 10 }, "end": { - "line": 409, + "line": 411, "column": 19 } } @@ -111207,15 +110661,15 @@ "updateContext": null }, "value": "=", - "start": 21181, - "end": 21182, + "start": 21203, + "end": 21204, "loc": { "start": { - "line": 409, + "line": 411, "column": 20 }, "end": { - "line": 409, + "line": 411, "column": 21 } } @@ -111235,15 +110689,15 @@ "updateContext": null }, "value": "new", - "start": 21183, - "end": 21186, + "start": 21205, + "end": 21208, "loc": { "start": { - "line": 409, + "line": 411, "column": 22 }, "end": { - "line": 409, + "line": 411, "column": 25 } } @@ -111261,15 +110715,15 @@ "binop": null }, "value": "Uint8Array", - "start": 21187, - "end": 21197, + "start": 21209, + "end": 21219, "loc": { "start": { - "line": 409, + "line": 411, "column": 26 }, "end": { - "line": 409, + "line": 411, "column": 36 } } @@ -111286,15 +110740,15 @@ "postfix": false, "binop": null }, - "start": 21197, - "end": 21198, + "start": 21219, + "end": 21220, "loc": { "start": { - "line": 409, + "line": 411, "column": 36 }, "end": { - "line": 409, + "line": 411, "column": 37 } } @@ -111312,15 +110766,15 @@ "binop": null }, "value": "indexBuf", - "start": 21198, - "end": 21206, + "start": 21220, + "end": 21228, "loc": { "start": { - "line": 409, + "line": 411, "column": 37 }, "end": { - "line": 409, + "line": 411, "column": 45 } } @@ -111338,15 +110792,15 @@ "binop": null, "updateContext": null }, - "start": 21206, - "end": 21207, + "start": 21228, + "end": 21229, "loc": { "start": { - "line": 409, + "line": 411, "column": 45 }, "end": { - "line": 409, + "line": 411, "column": 46 } } @@ -111364,15 +110818,15 @@ "binop": null }, "value": "length", - "start": 21207, - "end": 21213, + "start": 21229, + "end": 21235, "loc": { "start": { - "line": 409, + "line": 411, "column": 46 }, "end": { - "line": 409, + "line": 411, "column": 52 } } @@ -111391,15 +110845,15 @@ "updateContext": null }, "value": "+", - "start": 21214, - "end": 21215, + "start": 21236, + "end": 21237, "loc": { "start": { - "line": 409, + "line": 411, "column": 53 }, "end": { - "line": 409, + "line": 411, "column": 54 } } @@ -111417,15 +110871,15 @@ "binop": null }, "value": "dataLen", - "start": 21216, - "end": 21223, + "start": 21238, + "end": 21245, "loc": { "start": { - "line": 409, + "line": 411, "column": 55 }, "end": { - "line": 409, + "line": 411, "column": 62 } } @@ -111442,15 +110896,15 @@ "postfix": false, "binop": null }, - "start": 21223, - "end": 21224, + "start": 21245, + "end": 21246, "loc": { "start": { - "line": 409, + "line": 411, "column": 62 }, "end": { - "line": 409, + "line": 411, "column": 63 } } @@ -111468,15 +110922,15 @@ "binop": null, "updateContext": null }, - "start": 21224, - "end": 21225, + "start": 21246, + "end": 21247, "loc": { "start": { - "line": 409, + "line": 411, "column": 63 }, "end": { - "line": 409, + "line": 411, "column": 64 } } @@ -111494,15 +110948,15 @@ "binop": null }, "value": "dataArray", - "start": 21230, - "end": 21239, + "start": 21252, + "end": 21261, "loc": { "start": { - "line": 410, + "line": 412, "column": 4 }, "end": { - "line": 410, + "line": 412, "column": 13 } } @@ -111520,15 +110974,15 @@ "binop": null, "updateContext": null }, - "start": 21239, - "end": 21240, + "start": 21261, + "end": 21262, "loc": { "start": { - "line": 410, + "line": 412, "column": 13 }, "end": { - "line": 410, + "line": 412, "column": 14 } } @@ -111546,15 +111000,15 @@ "binop": null }, "value": "set", - "start": 21240, - "end": 21243, + "start": 21262, + "end": 21265, "loc": { "start": { - "line": 410, + "line": 412, "column": 14 }, "end": { - "line": 410, + "line": 412, "column": 17 } } @@ -111571,15 +111025,15 @@ "postfix": false, "binop": null }, - "start": 21243, - "end": 21244, + "start": 21265, + "end": 21266, "loc": { "start": { - "line": 410, + "line": 412, "column": 17 }, "end": { - "line": 410, + "line": 412, "column": 18 } } @@ -111597,15 +111051,15 @@ "binop": null }, "value": "indexBuf", - "start": 21244, - "end": 21252, + "start": 21266, + "end": 21274, "loc": { "start": { - "line": 410, + "line": 412, "column": 18 }, "end": { - "line": 410, + "line": 412, "column": 26 } } @@ -111622,15 +111076,15 @@ "postfix": false, "binop": null }, - "start": 21252, - "end": 21253, + "start": 21274, + "end": 21275, "loc": { "start": { - "line": 410, + "line": 412, "column": 26 }, "end": { - "line": 410, + "line": 412, "column": 27 } } @@ -111648,15 +111102,15 @@ "binop": null, "updateContext": null }, - "start": 21253, - "end": 21254, + "start": 21275, + "end": 21276, "loc": { "start": { - "line": 410, + "line": 412, "column": 27 }, "end": { - "line": 410, + "line": 412, "column": 28 } } @@ -111676,15 +111130,15 @@ "updateContext": null }, "value": "let", - "start": 21259, - "end": 21262, + "start": 21281, + "end": 21284, "loc": { "start": { - "line": 411, + "line": 413, "column": 4 }, "end": { - "line": 411, + "line": 413, "column": 7 } } @@ -111702,15 +111156,15 @@ "binop": null }, "value": "offset", - "start": 21263, - "end": 21269, + "start": 21285, + "end": 21291, "loc": { "start": { - "line": 411, + "line": 413, "column": 8 }, "end": { - "line": 411, + "line": 413, "column": 14 } } @@ -111729,15 +111183,15 @@ "updateContext": null }, "value": "=", - "start": 21270, - "end": 21271, + "start": 21292, + "end": 21293, "loc": { "start": { - "line": 411, + "line": 413, "column": 15 }, "end": { - "line": 411, + "line": 413, "column": 16 } } @@ -111755,15 +111209,15 @@ "binop": null }, "value": "indexBuf", - "start": 21272, - "end": 21280, + "start": 21294, + "end": 21302, "loc": { "start": { - "line": 411, + "line": 413, "column": 17 }, "end": { - "line": 411, + "line": 413, "column": 25 } } @@ -111781,15 +111235,15 @@ "binop": null, "updateContext": null }, - "start": 21280, - "end": 21281, + "start": 21302, + "end": 21303, "loc": { "start": { - "line": 411, + "line": 413, "column": 25 }, "end": { - "line": 411, + "line": 413, "column": 26 } } @@ -111807,15 +111261,15 @@ "binop": null }, "value": "length", - "start": 21281, - "end": 21287, + "start": 21303, + "end": 21309, "loc": { "start": { - "line": 411, + "line": 413, "column": 26 }, "end": { - "line": 411, + "line": 413, "column": 32 } } @@ -111833,15 +111287,15 @@ "binop": null, "updateContext": null }, - "start": 21287, - "end": 21288, + "start": 21309, + "end": 21310, "loc": { "start": { - "line": 411, + "line": 413, "column": 32 }, "end": { - "line": 411, + "line": 413, "column": 33 } } @@ -111861,15 +111315,15 @@ "updateContext": null }, "value": "for", - "start": 21293, - "end": 21296, + "start": 21315, + "end": 21318, "loc": { "start": { - "line": 412, + "line": 414, "column": 4 }, "end": { - "line": 412, + "line": 414, "column": 7 } } @@ -111886,15 +111340,15 @@ "postfix": false, "binop": null }, - "start": 21297, - "end": 21298, + "start": 21319, + "end": 21320, "loc": { "start": { - "line": 412, + "line": 414, "column": 8 }, "end": { - "line": 412, + "line": 414, "column": 9 } } @@ -111914,15 +111368,15 @@ "updateContext": null }, "value": "let", - "start": 21298, - "end": 21301, + "start": 21320, + "end": 21323, "loc": { "start": { - "line": 412, + "line": 414, "column": 9 }, "end": { - "line": 412, + "line": 414, "column": 12 } } @@ -111940,15 +111394,15 @@ "binop": null }, "value": "i", - "start": 21302, - "end": 21303, + "start": 21324, + "end": 21325, "loc": { "start": { - "line": 412, + "line": 414, "column": 13 }, "end": { - "line": 412, + "line": 414, "column": 14 } } @@ -111967,15 +111421,15 @@ "updateContext": null }, "value": "=", - "start": 21304, - "end": 21305, + "start": 21326, + "end": 21327, "loc": { "start": { - "line": 412, + "line": 414, "column": 15 }, "end": { - "line": 412, + "line": 414, "column": 16 } } @@ -111994,15 +111448,15 @@ "updateContext": null }, "value": 0, - "start": 21306, - "end": 21307, + "start": 21328, + "end": 21329, "loc": { "start": { - "line": 412, + "line": 414, "column": 17 }, "end": { - "line": 412, + "line": 414, "column": 18 } } @@ -112020,15 +111474,15 @@ "binop": null, "updateContext": null }, - "start": 21307, - "end": 21308, + "start": 21329, + "end": 21330, "loc": { "start": { - "line": 412, + "line": 414, "column": 18 }, "end": { - "line": 412, + "line": 414, "column": 19 } } @@ -112046,15 +111500,15 @@ "binop": null }, "value": "len", - "start": 21309, - "end": 21312, + "start": 21331, + "end": 21334, "loc": { "start": { - "line": 412, + "line": 414, "column": 20 }, "end": { - "line": 412, + "line": 414, "column": 23 } } @@ -112073,15 +111527,15 @@ "updateContext": null }, "value": "=", - "start": 21313, - "end": 21314, + "start": 21335, + "end": 21336, "loc": { "start": { - "line": 412, + "line": 414, "column": 24 }, "end": { - "line": 412, + "line": 414, "column": 25 } } @@ -112099,15 +111553,15 @@ "binop": null }, "value": "elements", - "start": 21315, - "end": 21323, + "start": 21337, + "end": 21345, "loc": { "start": { - "line": 412, + "line": 414, "column": 26 }, "end": { - "line": 412, + "line": 414, "column": 34 } } @@ -112125,15 +111579,15 @@ "binop": null, "updateContext": null }, - "start": 21323, - "end": 21324, + "start": 21345, + "end": 21346, "loc": { "start": { - "line": 412, + "line": 414, "column": 34 }, "end": { - "line": 412, + "line": 414, "column": 35 } } @@ -112151,15 +111605,15 @@ "binop": null }, "value": "length", - "start": 21324, - "end": 21330, + "start": 21346, + "end": 21352, "loc": { "start": { - "line": 412, + "line": 414, "column": 35 }, "end": { - "line": 412, + "line": 414, "column": 41 } } @@ -112177,15 +111631,15 @@ "binop": null, "updateContext": null }, - "start": 21330, - "end": 21331, + "start": 21352, + "end": 21353, "loc": { "start": { - "line": 412, + "line": 414, "column": 41 }, "end": { - "line": 412, + "line": 414, "column": 42 } } @@ -112203,15 +111657,15 @@ "binop": null }, "value": "i", - "start": 21332, - "end": 21333, + "start": 21354, + "end": 21355, "loc": { "start": { - "line": 412, + "line": 414, "column": 43 }, "end": { - "line": 412, + "line": 414, "column": 44 } } @@ -112230,15 +111684,15 @@ "updateContext": null }, "value": "<", - "start": 21334, - "end": 21335, + "start": 21356, + "end": 21357, "loc": { "start": { - "line": 412, + "line": 414, "column": 45 }, "end": { - "line": 412, + "line": 414, "column": 46 } } @@ -112256,15 +111710,15 @@ "binop": null }, "value": "len", - "start": 21336, - "end": 21339, + "start": 21358, + "end": 21361, "loc": { "start": { - "line": 412, + "line": 414, "column": 47 }, "end": { - "line": 412, + "line": 414, "column": 50 } } @@ -112282,15 +111736,15 @@ "binop": null, "updateContext": null }, - "start": 21339, - "end": 21340, + "start": 21361, + "end": 21362, "loc": { "start": { - "line": 412, + "line": 414, "column": 50 }, "end": { - "line": 412, + "line": 414, "column": 51 } } @@ -112308,15 +111762,15 @@ "binop": null }, "value": "i", - "start": 21341, - "end": 21342, + "start": 21363, + "end": 21364, "loc": { "start": { - "line": 412, + "line": 414, "column": 52 }, "end": { - "line": 412, + "line": 414, "column": 53 } } @@ -112334,15 +111788,15 @@ "binop": null }, "value": "++", - "start": 21342, - "end": 21344, + "start": 21364, + "end": 21366, "loc": { "start": { - "line": 412, + "line": 414, "column": 53 }, "end": { - "line": 412, + "line": 414, "column": 55 } } @@ -112359,15 +111813,15 @@ "postfix": false, "binop": null }, - "start": 21344, - "end": 21345, + "start": 21366, + "end": 21367, "loc": { "start": { - "line": 412, + "line": 414, "column": 55 }, "end": { - "line": 412, + "line": 414, "column": 56 } } @@ -112384,15 +111838,15 @@ "postfix": false, "binop": null }, - "start": 21346, - "end": 21347, + "start": 21368, + "end": 21369, "loc": { "start": { - "line": 412, + "line": 414, "column": 57 }, "end": { - "line": 412, + "line": 414, "column": 58 } } @@ -112400,15 +111854,15 @@ { "type": "CommentLine", "value": " Stored Data 2: the elements themselves", - "start": 21352, - "end": 21393, + "start": 21374, + "end": 21415, "loc": { "start": { - "line": 412, + "line": 414, "column": 63 }, "end": { - "line": 412, + "line": 414, "column": 104 } } @@ -112428,15 +111882,15 @@ "updateContext": null }, "value": "const", - "start": 21402, - "end": 21407, + "start": 21424, + "end": 21429, "loc": { "start": { - "line": 413, + "line": 415, "column": 8 }, "end": { - "line": 413, + "line": 415, "column": 13 } } @@ -112454,15 +111908,15 @@ "binop": null }, "value": "element", - "start": 21408, - "end": 21415, + "start": 21430, + "end": 21437, "loc": { "start": { - "line": 413, + "line": 415, "column": 14 }, "end": { - "line": 413, + "line": 415, "column": 21 } } @@ -112481,15 +111935,15 @@ "updateContext": null }, "value": "=", - "start": 21416, - "end": 21417, + "start": 21438, + "end": 21439, "loc": { "start": { - "line": 413, + "line": 415, "column": 22 }, "end": { - "line": 413, + "line": 415, "column": 23 } } @@ -112507,15 +111961,15 @@ "binop": null }, "value": "elements", - "start": 21418, - "end": 21426, + "start": 21440, + "end": 21448, "loc": { "start": { - "line": 413, + "line": 415, "column": 24 }, "end": { - "line": 413, + "line": 415, "column": 32 } } @@ -112533,15 +111987,15 @@ "binop": null, "updateContext": null }, - "start": 21426, - "end": 21427, + "start": 21448, + "end": 21449, "loc": { "start": { - "line": 413, + "line": 415, "column": 32 }, "end": { - "line": 413, + "line": 415, "column": 33 } } @@ -112559,15 +112013,15 @@ "binop": null }, "value": "i", - "start": 21427, - "end": 21428, + "start": 21449, + "end": 21450, "loc": { "start": { - "line": 413, + "line": 415, "column": 33 }, "end": { - "line": 413, + "line": 415, "column": 34 } } @@ -112585,15 +112039,15 @@ "binop": null, "updateContext": null }, - "start": 21428, - "end": 21429, + "start": 21450, + "end": 21451, "loc": { "start": { - "line": 413, + "line": 415, "column": 34 }, "end": { - "line": 413, + "line": 415, "column": 35 } } @@ -112611,15 +112065,15 @@ "binop": null, "updateContext": null }, - "start": 21429, - "end": 21430, + "start": 21451, + "end": 21452, "loc": { "start": { - "line": 413, + "line": 415, "column": 35 }, "end": { - "line": 413, + "line": 415, "column": 36 } } @@ -112637,15 +112091,15 @@ "binop": null }, "value": "dataArray", - "start": 21439, - "end": 21448, + "start": 21461, + "end": 21470, "loc": { "start": { - "line": 414, + "line": 416, "column": 8 }, "end": { - "line": 414, + "line": 416, "column": 17 } } @@ -112663,15 +112117,15 @@ "binop": null, "updateContext": null }, - "start": 21448, - "end": 21449, + "start": 21470, + "end": 21471, "loc": { "start": { - "line": 414, + "line": 416, "column": 17 }, "end": { - "line": 414, + "line": 416, "column": 18 } } @@ -112689,15 +112143,15 @@ "binop": null }, "value": "set", - "start": 21449, - "end": 21452, + "start": 21471, + "end": 21474, "loc": { "start": { - "line": 414, + "line": 416, "column": 18 }, "end": { - "line": 414, + "line": 416, "column": 21 } } @@ -112714,15 +112168,15 @@ "postfix": false, "binop": null }, - "start": 21452, - "end": 21453, + "start": 21474, + "end": 21475, "loc": { "start": { - "line": 414, + "line": 416, "column": 21 }, "end": { - "line": 414, + "line": 416, "column": 22 } } @@ -112740,15 +112194,15 @@ "binop": null }, "value": "element", - "start": 21453, - "end": 21460, + "start": 21475, + "end": 21482, "loc": { "start": { - "line": 414, + "line": 416, "column": 22 }, "end": { - "line": 414, + "line": 416, "column": 29 } } @@ -112766,15 +112220,15 @@ "binop": null, "updateContext": null }, - "start": 21460, - "end": 21461, + "start": 21482, + "end": 21483, "loc": { "start": { - "line": 414, + "line": 416, "column": 29 }, "end": { - "line": 414, + "line": 416, "column": 30 } } @@ -112792,15 +112246,15 @@ "binop": null }, "value": "offset", - "start": 21462, - "end": 21468, + "start": 21484, + "end": 21490, "loc": { "start": { - "line": 414, + "line": 416, "column": 31 }, "end": { - "line": 414, + "line": 416, "column": 37 } } @@ -112817,15 +112271,15 @@ "postfix": false, "binop": null }, - "start": 21468, - "end": 21469, + "start": 21490, + "end": 21491, "loc": { "start": { - "line": 414, + "line": 416, "column": 37 }, "end": { - "line": 414, + "line": 416, "column": 38 } } @@ -112843,15 +112297,15 @@ "binop": null, "updateContext": null }, - "start": 21469, - "end": 21470, + "start": 21491, + "end": 21492, "loc": { "start": { - "line": 414, + "line": 416, "column": 38 }, "end": { - "line": 414, + "line": 416, "column": 39 } } @@ -112869,15 +112323,15 @@ "binop": null }, "value": "offset", - "start": 21479, - "end": 21485, + "start": 21501, + "end": 21507, "loc": { "start": { - "line": 415, + "line": 417, "column": 8 }, "end": { - "line": 415, + "line": 417, "column": 14 } } @@ -112896,15 +112350,15 @@ "updateContext": null }, "value": "+=", - "start": 21486, - "end": 21488, + "start": 21508, + "end": 21510, "loc": { "start": { - "line": 415, + "line": 417, "column": 15 }, "end": { - "line": 415, + "line": 417, "column": 17 } } @@ -112922,15 +112376,15 @@ "binop": null }, "value": "element", - "start": 21489, - "end": 21496, + "start": 21511, + "end": 21518, "loc": { "start": { - "line": 415, + "line": 417, "column": 18 }, "end": { - "line": 415, + "line": 417, "column": 25 } } @@ -112948,15 +112402,15 @@ "binop": null, "updateContext": null }, - "start": 21496, - "end": 21497, + "start": 21518, + "end": 21519, "loc": { "start": { - "line": 415, + "line": 417, "column": 25 }, "end": { - "line": 415, + "line": 417, "column": 26 } } @@ -112974,15 +112428,15 @@ "binop": null }, "value": "length", - "start": 21497, - "end": 21503, + "start": 21519, + "end": 21525, "loc": { "start": { - "line": 415, + "line": 417, "column": 26 }, "end": { - "line": 415, + "line": 417, "column": 32 } } @@ -113000,15 +112454,15 @@ "binop": null, "updateContext": null }, - "start": 21503, - "end": 21504, + "start": 21525, + "end": 21526, "loc": { "start": { - "line": 415, + "line": 417, "column": 32 }, "end": { - "line": 415, + "line": 417, "column": 33 } } @@ -113025,15 +112479,15 @@ "postfix": false, "binop": null }, - "start": 21509, - "end": 21510, + "start": 21531, + "end": 21532, "loc": { "start": { - "line": 416, + "line": 418, "column": 4 }, "end": { - "line": 416, + "line": 418, "column": 5 } } @@ -113053,15 +112507,15 @@ "updateContext": null }, "value": "return", - "start": 21515, - "end": 21521, + "start": 21537, + "end": 21543, "loc": { "start": { - "line": 417, + "line": 419, "column": 4 }, "end": { - "line": 417, + "line": 419, "column": 10 } } @@ -113079,15 +112533,15 @@ "binop": null }, "value": "dataArray", - "start": 21522, - "end": 21531, + "start": 21544, + "end": 21553, "loc": { "start": { - "line": 417, + "line": 419, "column": 11 }, "end": { - "line": 417, + "line": 419, "column": 20 } } @@ -113105,15 +112559,15 @@ "binop": null, "updateContext": null }, - "start": 21531, - "end": 21532, + "start": 21553, + "end": 21554, "loc": { "start": { - "line": 417, + "line": 419, "column": 20 }, "end": { - "line": 417, + "line": 419, "column": 21 } } @@ -113131,15 +112585,15 @@ "binop": null }, "value": "buffer", - "start": 21532, - "end": 21538, + "start": 21554, + "end": 21560, "loc": { "start": { - "line": 417, + "line": 419, "column": 21 }, "end": { - "line": 417, + "line": 419, "column": 27 } } @@ -113157,15 +112611,15 @@ "binop": null, "updateContext": null }, - "start": 21538, - "end": 21539, + "start": 21560, + "end": 21561, "loc": { "start": { - "line": 417, + "line": 419, "column": 27 }, "end": { - "line": 417, + "line": 419, "column": 28 } } @@ -113182,15 +112636,15 @@ "postfix": false, "binop": null }, - "start": 21540, - "end": 21541, + "start": 21562, + "end": 21563, "loc": { "start": { - "line": 418, + "line": 420, "column": 0 }, "end": { - "line": 418, + "line": 420, "column": 1 } } @@ -113210,15 +112664,15 @@ "updateContext": null }, "value": "export", - "start": 21543, - "end": 21549, + "start": 21565, + "end": 21571, "loc": { "start": { - "line": 420, + "line": 422, "column": 0 }, "end": { - "line": 420, + "line": 422, "column": 6 } } @@ -113235,15 +112689,15 @@ "postfix": false, "binop": null }, - "start": 21550, - "end": 21551, + "start": 21572, + "end": 21573, "loc": { "start": { - "line": 420, + "line": 422, "column": 7 }, "end": { - "line": 420, + "line": 422, "column": 8 } } @@ -113261,15 +112715,15 @@ "binop": null }, "value": "writeXKTModelToArrayBuffer", - "start": 21551, - "end": 21577, + "start": 21573, + "end": 21599, "loc": { "start": { - "line": 420, + "line": 422, "column": 8 }, "end": { - "line": 420, + "line": 422, "column": 34 } } @@ -113286,15 +112740,15 @@ "postfix": false, "binop": null }, - "start": 21577, - "end": 21578, + "start": 21599, + "end": 21600, "loc": { "start": { - "line": 420, + "line": 422, "column": 34 }, "end": { - "line": 420, + "line": 422, "column": 35 } } @@ -113312,15 +112766,15 @@ "binop": null, "updateContext": null }, - "start": 21578, - "end": 21579, + "start": 21600, + "end": 21601, "loc": { "start": { - "line": 420, + "line": 422, "column": 35 }, "end": { - "line": 420, + "line": 422, "column": 36 } } @@ -113338,15 +112792,15 @@ "binop": null, "updateContext": null }, - "start": 21579, - "end": 21579, + "start": 21601, + "end": 21601, "loc": { "start": { - "line": 420, + "line": 422, "column": 36 }, "end": { - "line": 420, + "line": 422, "column": 36 } } diff --git a/docs/coverage.json b/docs/coverage.json index b41c6f9..de3e6e6 100644 --- a/docs/coverage.json +++ b/docs/coverage.json @@ -209,10 +209,10 @@ 5, 6, 23, - 321, - 357, - 364, - 397 + 323, + 359, + 366, + 399 ] }, "src/XKT_INFO.js": { diff --git a/docs/file/src/XKTModel/writeXKTModelToArrayBuffer.js.html b/docs/file/src/XKTModel/writeXKTModelToArrayBuffer.js.html index 117a27e..8c1fe35 100644 --- a/docs/file/src/XKTModel/writeXKTModelToArrayBuffer.js.html +++ b/docs/file/src/XKTModel/writeXKTModelToArrayBuffer.js.html @@ -332,28 +332,13 @@ data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.occlusionTexture ? textureSet.occlusionTexture.textureIndex : -1; // Occlusion map } - // Meshes - - for (let meshIndex = 0, matricesIndex = 0, eachMeshMaterialAttributesIndex = 0; meshIndex < numMeshes; meshIndex++) { - const mesh = meshesList [meshIndex]; - if (mesh.geometry.numInstances > 1) { - data.matrices.set(mesh.matrix, matricesIndex); - data.eachMeshMatricesPortion [meshIndex] = matricesIndex; - matricesIndex += 16; - } - data.eachMeshTextureSet[meshIndex] = mesh.textureSet ? mesh.textureSet.textureSetIndex : -1; - data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[0] * 255); // Color RGB - data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[1] * 255); - data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[2] * 255); - data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.opacity * 255); // Opacity - data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.metallic * 255); // Metallic - data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.roughness * 255); // Roughness - } - - // Entities, geometry instances, and tiles + // Tiles -> Entities -> Meshes let entityIndex = 0; let countEntityMeshesPortion = 0; + let eachMeshMaterialAttributesIndex = 0; + let matricesIndex = 0; + let meshIndex= 0; for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) { @@ -382,6 +367,23 @@ const geometryIndex = geometry.geometryIndex; data.eachMeshGeometriesPortion [countEntityMeshesPortion + k] = geometryIndex; + + if (mesh.geometry.numInstances > 1) { + data.matrices.set(mesh.matrix, matricesIndex); + data.eachMeshMatricesPortion [meshIndex] = matricesIndex; + matricesIndex += 16; + } + + data.eachMeshTextureSet[meshIndex] = mesh.textureSet ? mesh.textureSet.textureSetIndex : -1; + + data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[0] * 255); // Color RGB + data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[1] * 255); + data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[2] * 255); + data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.opacity * 255); // Opacity + data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.metallic * 255); // Metallic + data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.roughness * 255); // Roughness + + meshIndex++; } data.eachEntityId [entityIndex] = entity.entityId; diff --git a/docs/index.html b/docs/index.html index 363f5ae..2811502 100644 --- a/docs/index.html +++ b/docs/index.html @@ -224,18 +224,20 @@

Using convert2xkt

Th Usage: convert2xkt [options] Options: - -v, --version output the version number - -s, --source [file] path to source file - -f, --format [string] source file format (optional); supported formats are gltf, ifc, laz, las, pcd, ply, stl and cityjson - -m, --metamodel [file] path to source metamodel JSON file (optional) - -i, --include [types] only convert these types (optional) - -x, --exclude [types] never convert these types (optional) - -r, --rotatex rotate model 90 degrees about X axis (for las and cityjson) - -g, --disablegeoreuse disable geometry reuse (for ifc and gltf) - -t, --textures convert textures (for gltf) - -o, --output [file] path to target .xkt file; creates directories on path automatically if not existing - -l, --log enable logging - -h, --help display help for command + -v, --version output the version number + -s, --source [file] path to source file + -f, --format [string] source file format (optional); supported formats are gltf, ifc, laz, las, pcd, ply, stl and cityjson + -m, --metamodel [file] path to source metamodel JSON file (optional) + -i, --include [types] only convert these types (optional) + -x, --exclude [types] never convert these types (optional) + -r, --rotatex rotate model 90 degrees about X axis (for las and cityjson) + -g, --disablegeoreuse disable geometry reuse (optional) + -z, --mintilesize [number] minimum diagonal tile size (optional, default 500) + -t, --disabletextures ignore textures (optional) + -n, --disablenormals ignore normals (optional) + -o, --output [file] path to target .xkt file; creates directories on path automatically if not existing + -l, --log enable logging (optional) + -h, --help display help for command XKT version: 10 diff --git a/docs/index.json b/docs/index.json index 2f4430a..fb634c8 100644 --- a/docs/index.json +++ b/docs/index.json @@ -7208,7 +7208,7 @@ "__docId__": 297, "kind": "file", "name": "src/XKTModel/writeXKTModelToArrayBuffer.js", - "content": "import {XKT_INFO} from \"../XKT_INFO.js\";\nimport * as pako from 'pako';\n\nconst XKT_VERSION = XKT_INFO.xktVersion;\nconst NUM_TEXTURE_ATTRIBUTES = 9;\nconst NUM_MATERIAL_ATTRIBUTES = 6;\n\n/**\n * Writes an {@link XKTModel} to an {@link ArrayBuffer}.\n *\n * @param {XKTModel} xktModel The {@link XKTModel}.\n * @param {Object} [stats] Collects statistics.\n * @returns {ArrayBuffer} The {@link ArrayBuffer}.\n */\nfunction writeXKTModelToArrayBuffer(xktModel, stats = {}) {\n const data = getModelData(xktModel, stats);\n const deflatedData = deflateData(data);\n stats.texturesSize += deflatedData.textureData.byteLength;\n const arrayBuffer = createArrayBuffer(deflatedData);\n return arrayBuffer;\n}\n\nfunction getModelData(xktModel, stats) {\n\n //------------------------------------------------------------------------------------------------------------------\n // Allocate data\n //------------------------------------------------------------------------------------------------------------------\n\n const propertySetsList = xktModel.propertySetsList;\n const metaObjectsList = xktModel.metaObjectsList;\n const geometriesList = xktModel.geometriesList;\n const texturesList = xktModel.texturesList;\n const textureSetsList = xktModel.textureSetsList;\n const meshesList = xktModel.meshesList;\n const entitiesList = xktModel.entitiesList;\n const tilesList = xktModel.tilesList;\n\n const numPropertySets = propertySetsList.length;\n const numMetaObjects = metaObjectsList.length;\n const numGeometries = geometriesList.length;\n const numTextures = texturesList.length;\n const numTextureSets = textureSetsList.length;\n const numMeshes = meshesList.length;\n const numEntities = entitiesList.length;\n const numTiles = tilesList.length;\n\n let lenPositions = 0;\n let lenNormals = 0;\n let lenColors = 0;\n let lenUVs = 0;\n let lenIndices = 0;\n let lenEdgeIndices = 0;\n let lenMatrices = 0;\n let lenTextures = 0;\n\n for (let geometryIndex = 0; geometryIndex < numGeometries; geometryIndex++) {\n const geometry = geometriesList [geometryIndex];\n if (geometry.positionsQuantized) {\n lenPositions += geometry.positionsQuantized.length;\n }\n if (geometry.normalsOctEncoded) {\n lenNormals += geometry.normalsOctEncoded.length;\n }\n if (geometry.colorsCompressed) {\n lenColors += geometry.colorsCompressed.length;\n }\n if (geometry.uvs) {\n lenUVs += geometry.uvs.length;\n }\n if (geometry.indices) {\n lenIndices += geometry.indices.length;\n }\n if (geometry.edgeIndices) {\n lenEdgeIndices += geometry.edgeIndices.length;\n }\n }\n\n for (let textureIndex = 0; textureIndex < numTextures; textureIndex++) {\n const xktTexture = texturesList[textureIndex];\n const imageData = xktTexture.imageData;\n lenTextures += imageData.byteLength;\n\n if (xktTexture.compressed) {\n stats.numCompressedTextures++;\n }\n }\n\n for (let meshIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const mesh = meshesList[meshIndex];\n if (mesh.geometry.numInstances > 1) {\n lenMatrices += 16;\n }\n }\n\n const data = {\n metadata: {},\n textureData: new Uint8Array(lenTextures), // All textures\n eachTextureDataPortion: new Uint32Array(numTextures), // For each texture, an index to its first element in textureData\n eachTextureAttributes: new Uint16Array(numTextures * NUM_TEXTURE_ATTRIBUTES),\n positions: new Uint16Array(lenPositions), // All geometry arrays\n normals: new Int8Array(lenNormals),\n colors: new Uint8Array(lenColors),\n uvs: new Float32Array(lenUVs),\n indices: new Uint32Array(lenIndices),\n edgeIndices: new Uint32Array(lenEdgeIndices),\n eachTextureSetTextures: new Int32Array(numTextureSets * 5), // For each texture set, a set of five Texture indices [color, metal/roughness,normals,emissive,occlusion]; each index has value -1 if no texture\n matrices: new Float32Array(lenMatrices), // Modeling matrices for entities that share geometries. Each entity either shares all it's geometries, or owns all its geometries exclusively. Exclusively-owned geometries are pre-transformed into World-space, and so their entities don't have modeling matrices in this array.\n reusedGeometriesDecodeMatrix: new Float32Array(xktModel.reusedGeometriesDecodeMatrix), // A single, global vertex position de-quantization matrix for all reused geometries. Reused geometries are quantized to their collective Local-space AABB, and this matrix is derived from that AABB.\n eachGeometryPrimitiveType: new Uint8Array(numGeometries), // Primitive type for each geometry (0=solid triangles, 1=surface triangles, 2=lines, 3=points)\n eachGeometryPositionsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.positions. Every primitive type has positions.\n eachGeometryNormalsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.normals. If the next geometry has the same index, then this geometry has no normals.\n eachGeometryColorsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.colors. If the next geometry has the same index, then this geometry has no colors.\n eachGeometryUVsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.uvs. If the next geometry has the same index, then this geometry has no UVs.\n eachGeometryIndicesPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.indices. If the next geometry has the same index, then this geometry has no indices.\n eachGeometryEdgeIndicesPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.edgeIndices. If the next geometry has the same index, then this geometry has no edge indices.\n eachMeshGeometriesPortion: new Uint32Array(numMeshes), // For each mesh, an index into the eachGeometry* arrays\n eachMeshMatricesPortion: new Uint32Array(numMeshes), // For each mesh that shares its geometry, an index to its first element in data.matrices, to indicate the modeling matrix that transforms the shared geometry Local-space vertex positions. This is ignored for meshes that don't share geometries, because the vertex positions of non-shared geometries are pre-transformed into World-space.\n eachMeshTextureSet: new Int32Array(numMeshes), // For each mesh, the index of its texture set in data.eachTextureSetTextures; this array contains signed integers so that we can use -1 to indicate when a mesh has no texture set\n eachMeshMaterialAttributes: new Uint8Array(numMeshes * NUM_MATERIAL_ATTRIBUTES), // For each mesh, an RGBA integer color of format [0..255, 0..255, 0..255, 0..255], and PBR metallic and roughness factors, of format [0..255, 0..255]\n eachEntityId: [], // For each entity, an ID string\n eachEntityMeshesPortion: new Uint32Array(numEntities), // For each entity, the index of the first element of meshes used by the entity\n eachTileAABB: new Float64Array(numTiles * 6), // For each tile, an axis-aligned bounding box\n eachTileEntitiesPortion: new Uint32Array(numTiles) // For each tile, the index of the the first element of eachEntityId, eachEntityMeshesPortion and eachEntityMatricesPortion used by the tile\n };\n\n let countPositions = 0;\n let countNormals = 0;\n let countColors = 0;\n let countUVs = 0;\n let countIndices = 0;\n let countEdgeIndices = 0;\n\n // Metadata\n\n data.metadata = {\n id: xktModel.modelId,\n projectId: xktModel.projectId,\n revisionId: xktModel.revisionId,\n author: xktModel.author,\n createdAt: xktModel.createdAt,\n creatingApplication: xktModel.creatingApplication,\n schema: xktModel.schema,\n propertySets: [],\n metaObjects: []\n };\n\n // Property sets\n\n for (let propertySetsIndex = 0; propertySetsIndex < numPropertySets; propertySetsIndex++) {\n const propertySet = propertySetsList[propertySetsIndex];\n const propertySetJSON = {\n id: \"\" + propertySet.propertySetId,\n name: propertySet.propertySetName,\n type: propertySet.propertySetType,\n properties: propertySet.properties\n };\n data.metadata.propertySets.push(propertySetJSON);\n }\n\n // Metaobjects\n\n for (let metaObjectsIndex = 0; metaObjectsIndex < numMetaObjects; metaObjectsIndex++) {\n const metaObject = metaObjectsList[metaObjectsIndex];\n const metaObjectJSON = {\n name: metaObject.metaObjectName,\n type: metaObject.metaObjectType,\n id: \"\" + metaObject.metaObjectId\n };\n if (metaObject.parentMetaObjectId !== undefined && metaObject.parentMetaObjectId !== null) {\n metaObjectJSON.parent = \"\" + metaObject.parentMetaObjectId;\n }\n if (metaObject.propertySetIds && metaObject.propertySetIds.length > 0) {\n metaObjectJSON.propertySetIds = metaObject.propertySetIds;\n }\n if (metaObject.external) {\n metaObjectJSON.external = metaObject.external;\n }\n data.metadata.metaObjects.push(metaObjectJSON);\n }\n\n // console.log(JSON.stringify(data.metadata, null, \"\\t\"))\n\n // Geometries\n\n for (let geometryIndex = 0; geometryIndex < numGeometries; geometryIndex++) {\n const geometry = geometriesList [geometryIndex];\n const primitiveType = (geometry.primitiveType === \"triangles\") ? (geometry.solid ? 0 : 1) : (geometry.primitiveType === \"points\" ? 2 : 3)\n data.eachGeometryPrimitiveType [geometryIndex] = primitiveType;\n data.eachGeometryPositionsPortion [geometryIndex] = countPositions;\n data.eachGeometryNormalsPortion [geometryIndex] = countNormals;\n data.eachGeometryColorsPortion [geometryIndex] = countColors;\n data.eachGeometryUVsPortion [geometryIndex] = countUVs;\n data.eachGeometryIndicesPortion [geometryIndex] = countIndices;\n data.eachGeometryEdgeIndicesPortion [geometryIndex] = countEdgeIndices;\n if (geometry.positionsQuantized) {\n data.positions.set(geometry.positionsQuantized, countPositions);\n countPositions += geometry.positionsQuantized.length;\n }\n if (geometry.normalsOctEncoded) {\n data.normals.set(geometry.normalsOctEncoded, countNormals);\n countNormals += geometry.normalsOctEncoded.length;\n }\n if (geometry.colorsCompressed) {\n data.colors.set(geometry.colorsCompressed, countColors);\n countColors += geometry.colorsCompressed.length;\n }\n if (geometry.uvs) {\n data.uvs.set(geometry.uvs, countUVs);\n countUVs += geometry.uvs.length;\n }\n if (geometry.indices) {\n data.indices.set(geometry.indices, countIndices);\n countIndices += geometry.indices.length;\n }\n if (geometry.edgeIndices) {\n data.edgeIndices.set(geometry.edgeIndices, countEdgeIndices);\n countEdgeIndices += geometry.edgeIndices.length;\n }\n }\n\n // Textures\n\n for (let textureIndex = 0, numTextures = xktModel.texturesList.length, portionIdx = 0; textureIndex < numTextures; textureIndex++) {\n const xktTexture = xktModel.texturesList[textureIndex];\n const imageData = xktTexture.imageData;\n data.textureData.set(imageData, portionIdx);\n data.eachTextureDataPortion[textureIndex] = portionIdx;\n\n portionIdx += imageData.byteLength;\n\n let textureAttrIdx = textureIndex * NUM_TEXTURE_ATTRIBUTES;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.compressed ? 1 : 0;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.mediaType; // GIFMediaType | PNGMediaType | JPEGMediaType\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.width;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.height;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.minFilter; // LinearMipmapLinearFilter | LinearMipMapNearestFilter | NearestMipMapNearestFilter | NearestMipMapLinearFilter | LinearMipMapLinearFilter\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.magFilter; // LinearFilter | NearestFilter\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapS; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapT; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapR; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n }\n\n // Texture sets\n\n for (let textureSetIndex = 0, numTextureSets = xktModel.textureSetsList.length, eachTextureSetTexturesIndex = 0; textureSetIndex < numTextureSets; textureSetIndex++) {\n const textureSet = textureSetsList[textureSetIndex];\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.colorTexture ? textureSet.colorTexture.textureIndex : -1; // Color map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.metallicRoughnessTexture ? textureSet.metallicRoughnessTexture.textureIndex : -1; // Metal/rough map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.normalsTexture ? textureSet.normalsTexture.textureIndex : -1; // Normal map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.emissiveTexture ? textureSet.emissiveTexture.textureIndex : -1; // Emissive map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.occlusionTexture ? textureSet.occlusionTexture.textureIndex : -1; // Occlusion map\n }\n\n // Meshes\n\n for (let meshIndex = 0, matricesIndex = 0, eachMeshMaterialAttributesIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const mesh = meshesList [meshIndex];\n if (mesh.geometry.numInstances > 1) {\n data.matrices.set(mesh.matrix, matricesIndex);\n data.eachMeshMatricesPortion [meshIndex] = matricesIndex;\n matricesIndex += 16;\n }\n data.eachMeshTextureSet[meshIndex] = mesh.textureSet ? mesh.textureSet.textureSetIndex : -1;\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[0] * 255); // Color RGB\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[1] * 255);\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[2] * 255);\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.opacity * 255); // Opacity\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.metallic * 255); // Metallic\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.roughness * 255); // Roughness\n }\n\n // Entities, geometry instances, and tiles\n\n let entityIndex = 0;\n let countEntityMeshesPortion = 0;\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const tile = tilesList [tileIndex];\n const tileEntities = tile.entities;\n const numTileEntities = tileEntities.length;\n\n if (numTileEntities === 0) {\n continue;\n }\n\n data.eachTileEntitiesPortion[tileIndex] = entityIndex;\n\n const tileAABB = tile.aabb;\n\n for (let j = 0; j < numTileEntities; j++) {\n\n const entity = tileEntities[j];\n const entityMeshes = entity.meshes;\n const numEntityMeshes = entityMeshes.length;\n\n for (let k = 0; k < numEntityMeshes; k++) {\n\n const mesh = entityMeshes[k];\n const geometry = mesh.geometry;\n const geometryIndex = geometry.geometryIndex;\n\n data.eachMeshGeometriesPortion [countEntityMeshesPortion + k] = geometryIndex;\n }\n\n data.eachEntityId [entityIndex] = entity.entityId;\n data.eachEntityMeshesPortion[entityIndex] = countEntityMeshesPortion; // <<<<<<<<<<<<<<<<<<<< Error here? Order/value of countEntityMeshesPortion correct?\n\n entityIndex++;\n countEntityMeshesPortion += numEntityMeshes;\n }\n\n const tileAABBIndex = tileIndex * 6;\n\n data.eachTileAABB.set(tileAABB, tileAABBIndex);\n }\n\n return data;\n}\n\nfunction deflateData(data) {\n return {\n metadata: pako.deflate(deflateJSON(data.metadata)),\n textureData: pako.deflate(data.textureData.buffer),\n eachTextureDataPortion: pako.deflate(data.eachTextureDataPortion.buffer),\n eachTextureAttributes: pako.deflate(data.eachTextureAttributes.buffer),\n positions: pako.deflate(data.positions.buffer),\n normals: pako.deflate(data.normals.buffer),\n colors: pako.deflate(data.colors.buffer),\n uvs: pako.deflate(data.uvs.buffer),\n indices: pako.deflate(data.indices.buffer),\n edgeIndices: pako.deflate(data.edgeIndices.buffer),\n eachTextureSetTextures: pako.deflate(data.eachTextureSetTextures.buffer),\n matrices: pako.deflate(data.matrices.buffer),\n reusedGeometriesDecodeMatrix: pako.deflate(data.reusedGeometriesDecodeMatrix.buffer),\n eachGeometryPrimitiveType: pako.deflate(data.eachGeometryPrimitiveType.buffer),\n eachGeometryPositionsPortion: pako.deflate(data.eachGeometryPositionsPortion.buffer),\n eachGeometryNormalsPortion: pako.deflate(data.eachGeometryNormalsPortion.buffer),\n eachGeometryColorsPortion: pako.deflate(data.eachGeometryColorsPortion.buffer),\n eachGeometryUVsPortion: pako.deflate(data.eachGeometryUVsPortion.buffer),\n eachGeometryIndicesPortion: pako.deflate(data.eachGeometryIndicesPortion.buffer),\n eachGeometryEdgeIndicesPortion: pako.deflate(data.eachGeometryEdgeIndicesPortion.buffer),\n eachMeshGeometriesPortion: pako.deflate(data.eachMeshGeometriesPortion.buffer),\n eachMeshMatricesPortion: pako.deflate(data.eachMeshMatricesPortion.buffer),\n eachMeshTextureSet: pako.deflate(data.eachMeshTextureSet.buffer),\n eachMeshMaterialAttributes: pako.deflate(data.eachMeshMaterialAttributes.buffer),\n eachEntityId: pako.deflate(JSON.stringify(data.eachEntityId)\n .replace(/[\\u007F-\\uFFFF]/g, function (chr) { // Produce only ASCII-chars, so that the data can be inflated later\n return \"\\\\u\" + (\"0000\" + chr.charCodeAt(0).toString(16)).substr(-4)\n })),\n eachEntityMeshesPortion: pako.deflate(data.eachEntityMeshesPortion.buffer),\n eachTileAABB: pako.deflate(data.eachTileAABB.buffer),\n eachTileEntitiesPortion: pako.deflate(data.eachTileEntitiesPortion.buffer)\n };\n}\n\nfunction deflateJSON(strings) {\n return JSON.stringify(strings)\n .replace(/[\\u007F-\\uFFFF]/g, function (chr) { // Produce only ASCII-chars, so that the data can be inflated later\n return \"\\\\u\" + (\"0000\" + chr.charCodeAt(0).toString(16)).substr(-4)\n });\n}\n\nfunction createArrayBuffer(deflatedData) {\n return toArrayBuffer([\n deflatedData.metadata,\n deflatedData.textureData,\n deflatedData.eachTextureDataPortion,\n deflatedData.eachTextureAttributes,\n deflatedData.positions,\n deflatedData.normals,\n deflatedData.colors,\n deflatedData.uvs,\n deflatedData.indices,\n deflatedData.edgeIndices,\n deflatedData.eachTextureSetTextures,\n deflatedData.matrices,\n deflatedData.reusedGeometriesDecodeMatrix,\n deflatedData.eachGeometryPrimitiveType,\n deflatedData.eachGeometryPositionsPortion,\n deflatedData.eachGeometryNormalsPortion,\n deflatedData.eachGeometryColorsPortion,\n deflatedData.eachGeometryUVsPortion,\n deflatedData.eachGeometryIndicesPortion,\n deflatedData.eachGeometryEdgeIndicesPortion,\n deflatedData.eachMeshGeometriesPortion,\n deflatedData.eachMeshMatricesPortion,\n deflatedData.eachMeshTextureSet,\n deflatedData.eachMeshMaterialAttributes,\n deflatedData.eachEntityId,\n deflatedData.eachEntityMeshesPortion,\n deflatedData.eachTileAABB,\n deflatedData.eachTileEntitiesPortion\n ]);\n}\n\nfunction toArrayBuffer(elements) {\n const indexData = new Uint32Array(elements.length + 2);\n indexData[0] = XKT_VERSION;\n indexData [1] = elements.length; // Stored Data 1.1: number of stored elements\n let dataLen = 0; // Stored Data 1.2: length of stored elements\n for (let i = 0, len = elements.length; i < len; i++) {\n const element = elements[i];\n const elementsize = element.length;\n indexData[i + 2] = elementsize;\n dataLen += elementsize;\n }\n const indexBuf = new Uint8Array(indexData.buffer);\n const dataArray = new Uint8Array(indexBuf.length + dataLen);\n dataArray.set(indexBuf);\n let offset = indexBuf.length;\n for (let i = 0, len = elements.length; i < len; i++) { // Stored Data 2: the elements themselves\n const element = elements[i];\n dataArray.set(element, offset);\n offset += element.length;\n }\n return dataArray.buffer;\n}\n\nexport {writeXKTModelToArrayBuffer};", + "content": "import {XKT_INFO} from \"../XKT_INFO.js\";\nimport * as pako from 'pako';\n\nconst XKT_VERSION = XKT_INFO.xktVersion;\nconst NUM_TEXTURE_ATTRIBUTES = 9;\nconst NUM_MATERIAL_ATTRIBUTES = 6;\n\n/**\n * Writes an {@link XKTModel} to an {@link ArrayBuffer}.\n *\n * @param {XKTModel} xktModel The {@link XKTModel}.\n * @param {Object} [stats] Collects statistics.\n * @returns {ArrayBuffer} The {@link ArrayBuffer}.\n */\nfunction writeXKTModelToArrayBuffer(xktModel, stats = {}) {\n const data = getModelData(xktModel, stats);\n const deflatedData = deflateData(data);\n stats.texturesSize += deflatedData.textureData.byteLength;\n const arrayBuffer = createArrayBuffer(deflatedData);\n return arrayBuffer;\n}\n\nfunction getModelData(xktModel, stats) {\n\n //------------------------------------------------------------------------------------------------------------------\n // Allocate data\n //------------------------------------------------------------------------------------------------------------------\n\n const propertySetsList = xktModel.propertySetsList;\n const metaObjectsList = xktModel.metaObjectsList;\n const geometriesList = xktModel.geometriesList;\n const texturesList = xktModel.texturesList;\n const textureSetsList = xktModel.textureSetsList;\n const meshesList = xktModel.meshesList;\n const entitiesList = xktModel.entitiesList;\n const tilesList = xktModel.tilesList;\n\n const numPropertySets = propertySetsList.length;\n const numMetaObjects = metaObjectsList.length;\n const numGeometries = geometriesList.length;\n const numTextures = texturesList.length;\n const numTextureSets = textureSetsList.length;\n const numMeshes = meshesList.length;\n const numEntities = entitiesList.length;\n const numTiles = tilesList.length;\n\n let lenPositions = 0;\n let lenNormals = 0;\n let lenColors = 0;\n let lenUVs = 0;\n let lenIndices = 0;\n let lenEdgeIndices = 0;\n let lenMatrices = 0;\n let lenTextures = 0;\n\n for (let geometryIndex = 0; geometryIndex < numGeometries; geometryIndex++) {\n const geometry = geometriesList [geometryIndex];\n if (geometry.positionsQuantized) {\n lenPositions += geometry.positionsQuantized.length;\n }\n if (geometry.normalsOctEncoded) {\n lenNormals += geometry.normalsOctEncoded.length;\n }\n if (geometry.colorsCompressed) {\n lenColors += geometry.colorsCompressed.length;\n }\n if (geometry.uvs) {\n lenUVs += geometry.uvs.length;\n }\n if (geometry.indices) {\n lenIndices += geometry.indices.length;\n }\n if (geometry.edgeIndices) {\n lenEdgeIndices += geometry.edgeIndices.length;\n }\n }\n\n for (let textureIndex = 0; textureIndex < numTextures; textureIndex++) {\n const xktTexture = texturesList[textureIndex];\n const imageData = xktTexture.imageData;\n lenTextures += imageData.byteLength;\n\n if (xktTexture.compressed) {\n stats.numCompressedTextures++;\n }\n }\n\n for (let meshIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const mesh = meshesList[meshIndex];\n if (mesh.geometry.numInstances > 1) {\n lenMatrices += 16;\n }\n }\n\n const data = {\n metadata: {},\n textureData: new Uint8Array(lenTextures), // All textures\n eachTextureDataPortion: new Uint32Array(numTextures), // For each texture, an index to its first element in textureData\n eachTextureAttributes: new Uint16Array(numTextures * NUM_TEXTURE_ATTRIBUTES),\n positions: new Uint16Array(lenPositions), // All geometry arrays\n normals: new Int8Array(lenNormals),\n colors: new Uint8Array(lenColors),\n uvs: new Float32Array(lenUVs),\n indices: new Uint32Array(lenIndices),\n edgeIndices: new Uint32Array(lenEdgeIndices),\n eachTextureSetTextures: new Int32Array(numTextureSets * 5), // For each texture set, a set of five Texture indices [color, metal/roughness,normals,emissive,occlusion]; each index has value -1 if no texture\n matrices: new Float32Array(lenMatrices), // Modeling matrices for entities that share geometries. Each entity either shares all it's geometries, or owns all its geometries exclusively. Exclusively-owned geometries are pre-transformed into World-space, and so their entities don't have modeling matrices in this array.\n reusedGeometriesDecodeMatrix: new Float32Array(xktModel.reusedGeometriesDecodeMatrix), // A single, global vertex position de-quantization matrix for all reused geometries. Reused geometries are quantized to their collective Local-space AABB, and this matrix is derived from that AABB.\n eachGeometryPrimitiveType: new Uint8Array(numGeometries), // Primitive type for each geometry (0=solid triangles, 1=surface triangles, 2=lines, 3=points)\n eachGeometryPositionsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.positions. Every primitive type has positions.\n eachGeometryNormalsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.normals. If the next geometry has the same index, then this geometry has no normals.\n eachGeometryColorsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.colors. If the next geometry has the same index, then this geometry has no colors.\n eachGeometryUVsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.uvs. If the next geometry has the same index, then this geometry has no UVs.\n eachGeometryIndicesPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.indices. If the next geometry has the same index, then this geometry has no indices.\n eachGeometryEdgeIndicesPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.edgeIndices. If the next geometry has the same index, then this geometry has no edge indices.\n eachMeshGeometriesPortion: new Uint32Array(numMeshes), // For each mesh, an index into the eachGeometry* arrays\n eachMeshMatricesPortion: new Uint32Array(numMeshes), // For each mesh that shares its geometry, an index to its first element in data.matrices, to indicate the modeling matrix that transforms the shared geometry Local-space vertex positions. This is ignored for meshes that don't share geometries, because the vertex positions of non-shared geometries are pre-transformed into World-space.\n eachMeshTextureSet: new Int32Array(numMeshes), // For each mesh, the index of its texture set in data.eachTextureSetTextures; this array contains signed integers so that we can use -1 to indicate when a mesh has no texture set\n eachMeshMaterialAttributes: new Uint8Array(numMeshes * NUM_MATERIAL_ATTRIBUTES), // For each mesh, an RGBA integer color of format [0..255, 0..255, 0..255, 0..255], and PBR metallic and roughness factors, of format [0..255, 0..255]\n eachEntityId: [], // For each entity, an ID string\n eachEntityMeshesPortion: new Uint32Array(numEntities), // For each entity, the index of the first element of meshes used by the entity\n eachTileAABB: new Float64Array(numTiles * 6), // For each tile, an axis-aligned bounding box\n eachTileEntitiesPortion: new Uint32Array(numTiles) // For each tile, the index of the the first element of eachEntityId, eachEntityMeshesPortion and eachEntityMatricesPortion used by the tile\n };\n\n let countPositions = 0;\n let countNormals = 0;\n let countColors = 0;\n let countUVs = 0;\n let countIndices = 0;\n let countEdgeIndices = 0;\n\n // Metadata\n\n data.metadata = {\n id: xktModel.modelId,\n projectId: xktModel.projectId,\n revisionId: xktModel.revisionId,\n author: xktModel.author,\n createdAt: xktModel.createdAt,\n creatingApplication: xktModel.creatingApplication,\n schema: xktModel.schema,\n propertySets: [],\n metaObjects: []\n };\n\n // Property sets\n\n for (let propertySetsIndex = 0; propertySetsIndex < numPropertySets; propertySetsIndex++) {\n const propertySet = propertySetsList[propertySetsIndex];\n const propertySetJSON = {\n id: \"\" + propertySet.propertySetId,\n name: propertySet.propertySetName,\n type: propertySet.propertySetType,\n properties: propertySet.properties\n };\n data.metadata.propertySets.push(propertySetJSON);\n }\n\n // Metaobjects\n\n for (let metaObjectsIndex = 0; metaObjectsIndex < numMetaObjects; metaObjectsIndex++) {\n const metaObject = metaObjectsList[metaObjectsIndex];\n const metaObjectJSON = {\n name: metaObject.metaObjectName,\n type: metaObject.metaObjectType,\n id: \"\" + metaObject.metaObjectId\n };\n if (metaObject.parentMetaObjectId !== undefined && metaObject.parentMetaObjectId !== null) {\n metaObjectJSON.parent = \"\" + metaObject.parentMetaObjectId;\n }\n if (metaObject.propertySetIds && metaObject.propertySetIds.length > 0) {\n metaObjectJSON.propertySetIds = metaObject.propertySetIds;\n }\n if (metaObject.external) {\n metaObjectJSON.external = metaObject.external;\n }\n data.metadata.metaObjects.push(metaObjectJSON);\n }\n\n // console.log(JSON.stringify(data.metadata, null, \"\\t\"))\n\n // Geometries\n\n for (let geometryIndex = 0; geometryIndex < numGeometries; geometryIndex++) {\n const geometry = geometriesList [geometryIndex];\n const primitiveType = (geometry.primitiveType === \"triangles\") ? (geometry.solid ? 0 : 1) : (geometry.primitiveType === \"points\" ? 2 : 3)\n data.eachGeometryPrimitiveType [geometryIndex] = primitiveType;\n data.eachGeometryPositionsPortion [geometryIndex] = countPositions;\n data.eachGeometryNormalsPortion [geometryIndex] = countNormals;\n data.eachGeometryColorsPortion [geometryIndex] = countColors;\n data.eachGeometryUVsPortion [geometryIndex] = countUVs;\n data.eachGeometryIndicesPortion [geometryIndex] = countIndices;\n data.eachGeometryEdgeIndicesPortion [geometryIndex] = countEdgeIndices;\n if (geometry.positionsQuantized) {\n data.positions.set(geometry.positionsQuantized, countPositions);\n countPositions += geometry.positionsQuantized.length;\n }\n if (geometry.normalsOctEncoded) {\n data.normals.set(geometry.normalsOctEncoded, countNormals);\n countNormals += geometry.normalsOctEncoded.length;\n }\n if (geometry.colorsCompressed) {\n data.colors.set(geometry.colorsCompressed, countColors);\n countColors += geometry.colorsCompressed.length;\n }\n if (geometry.uvs) {\n data.uvs.set(geometry.uvs, countUVs);\n countUVs += geometry.uvs.length;\n }\n if (geometry.indices) {\n data.indices.set(geometry.indices, countIndices);\n countIndices += geometry.indices.length;\n }\n if (geometry.edgeIndices) {\n data.edgeIndices.set(geometry.edgeIndices, countEdgeIndices);\n countEdgeIndices += geometry.edgeIndices.length;\n }\n }\n\n // Textures\n\n for (let textureIndex = 0, numTextures = xktModel.texturesList.length, portionIdx = 0; textureIndex < numTextures; textureIndex++) {\n const xktTexture = xktModel.texturesList[textureIndex];\n const imageData = xktTexture.imageData;\n data.textureData.set(imageData, portionIdx);\n data.eachTextureDataPortion[textureIndex] = portionIdx;\n\n portionIdx += imageData.byteLength;\n\n let textureAttrIdx = textureIndex * NUM_TEXTURE_ATTRIBUTES;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.compressed ? 1 : 0;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.mediaType; // GIFMediaType | PNGMediaType | JPEGMediaType\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.width;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.height;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.minFilter; // LinearMipmapLinearFilter | LinearMipMapNearestFilter | NearestMipMapNearestFilter | NearestMipMapLinearFilter | LinearMipMapLinearFilter\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.magFilter; // LinearFilter | NearestFilter\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapS; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapT; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapR; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n }\n\n // Texture sets\n\n for (let textureSetIndex = 0, numTextureSets = xktModel.textureSetsList.length, eachTextureSetTexturesIndex = 0; textureSetIndex < numTextureSets; textureSetIndex++) {\n const textureSet = textureSetsList[textureSetIndex];\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.colorTexture ? textureSet.colorTexture.textureIndex : -1; // Color map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.metallicRoughnessTexture ? textureSet.metallicRoughnessTexture.textureIndex : -1; // Metal/rough map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.normalsTexture ? textureSet.normalsTexture.textureIndex : -1; // Normal map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.emissiveTexture ? textureSet.emissiveTexture.textureIndex : -1; // Emissive map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.occlusionTexture ? textureSet.occlusionTexture.textureIndex : -1; // Occlusion map\n }\n\n // Tiles -> Entities -> Meshes\n\n let entityIndex = 0;\n let countEntityMeshesPortion = 0;\n let eachMeshMaterialAttributesIndex = 0;\n let matricesIndex = 0;\n let meshIndex= 0;\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const tile = tilesList [tileIndex];\n const tileEntities = tile.entities;\n const numTileEntities = tileEntities.length;\n\n if (numTileEntities === 0) {\n continue;\n }\n\n data.eachTileEntitiesPortion[tileIndex] = entityIndex;\n\n const tileAABB = tile.aabb;\n\n for (let j = 0; j < numTileEntities; j++) {\n\n const entity = tileEntities[j];\n const entityMeshes = entity.meshes;\n const numEntityMeshes = entityMeshes.length;\n\n for (let k = 0; k < numEntityMeshes; k++) {\n\n const mesh = entityMeshes[k];\n const geometry = mesh.geometry;\n const geometryIndex = geometry.geometryIndex;\n\n data.eachMeshGeometriesPortion [countEntityMeshesPortion + k] = geometryIndex;\n\n if (mesh.geometry.numInstances > 1) {\n data.matrices.set(mesh.matrix, matricesIndex);\n data.eachMeshMatricesPortion [meshIndex] = matricesIndex;\n matricesIndex += 16;\n }\n\n data.eachMeshTextureSet[meshIndex] = mesh.textureSet ? mesh.textureSet.textureSetIndex : -1;\n\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[0] * 255); // Color RGB\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[1] * 255);\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[2] * 255);\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.opacity * 255); // Opacity\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.metallic * 255); // Metallic\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.roughness * 255); // Roughness\n\n meshIndex++;\n }\n\n data.eachEntityId [entityIndex] = entity.entityId;\n data.eachEntityMeshesPortion[entityIndex] = countEntityMeshesPortion; // <<<<<<<<<<<<<<<<<<<< Error here? Order/value of countEntityMeshesPortion correct?\n\n entityIndex++;\n countEntityMeshesPortion += numEntityMeshes;\n }\n\n const tileAABBIndex = tileIndex * 6;\n\n data.eachTileAABB.set(tileAABB, tileAABBIndex);\n }\n\n return data;\n}\n\nfunction deflateData(data) {\n return {\n metadata: pako.deflate(deflateJSON(data.metadata)),\n textureData: pako.deflate(data.textureData.buffer),\n eachTextureDataPortion: pako.deflate(data.eachTextureDataPortion.buffer),\n eachTextureAttributes: pako.deflate(data.eachTextureAttributes.buffer),\n positions: pako.deflate(data.positions.buffer),\n normals: pako.deflate(data.normals.buffer),\n colors: pako.deflate(data.colors.buffer),\n uvs: pako.deflate(data.uvs.buffer),\n indices: pako.deflate(data.indices.buffer),\n edgeIndices: pako.deflate(data.edgeIndices.buffer),\n eachTextureSetTextures: pako.deflate(data.eachTextureSetTextures.buffer),\n matrices: pako.deflate(data.matrices.buffer),\n reusedGeometriesDecodeMatrix: pako.deflate(data.reusedGeometriesDecodeMatrix.buffer),\n eachGeometryPrimitiveType: pako.deflate(data.eachGeometryPrimitiveType.buffer),\n eachGeometryPositionsPortion: pako.deflate(data.eachGeometryPositionsPortion.buffer),\n eachGeometryNormalsPortion: pako.deflate(data.eachGeometryNormalsPortion.buffer),\n eachGeometryColorsPortion: pako.deflate(data.eachGeometryColorsPortion.buffer),\n eachGeometryUVsPortion: pako.deflate(data.eachGeometryUVsPortion.buffer),\n eachGeometryIndicesPortion: pako.deflate(data.eachGeometryIndicesPortion.buffer),\n eachGeometryEdgeIndicesPortion: pako.deflate(data.eachGeometryEdgeIndicesPortion.buffer),\n eachMeshGeometriesPortion: pako.deflate(data.eachMeshGeometriesPortion.buffer),\n eachMeshMatricesPortion: pako.deflate(data.eachMeshMatricesPortion.buffer),\n eachMeshTextureSet: pako.deflate(data.eachMeshTextureSet.buffer),\n eachMeshMaterialAttributes: pako.deflate(data.eachMeshMaterialAttributes.buffer),\n eachEntityId: pako.deflate(JSON.stringify(data.eachEntityId)\n .replace(/[\\u007F-\\uFFFF]/g, function (chr) { // Produce only ASCII-chars, so that the data can be inflated later\n return \"\\\\u\" + (\"0000\" + chr.charCodeAt(0).toString(16)).substr(-4)\n })),\n eachEntityMeshesPortion: pako.deflate(data.eachEntityMeshesPortion.buffer),\n eachTileAABB: pako.deflate(data.eachTileAABB.buffer),\n eachTileEntitiesPortion: pako.deflate(data.eachTileEntitiesPortion.buffer)\n };\n}\n\nfunction deflateJSON(strings) {\n return JSON.stringify(strings)\n .replace(/[\\u007F-\\uFFFF]/g, function (chr) { // Produce only ASCII-chars, so that the data can be inflated later\n return \"\\\\u\" + (\"0000\" + chr.charCodeAt(0).toString(16)).substr(-4)\n });\n}\n\nfunction createArrayBuffer(deflatedData) {\n return toArrayBuffer([\n deflatedData.metadata,\n deflatedData.textureData,\n deflatedData.eachTextureDataPortion,\n deflatedData.eachTextureAttributes,\n deflatedData.positions,\n deflatedData.normals,\n deflatedData.colors,\n deflatedData.uvs,\n deflatedData.indices,\n deflatedData.edgeIndices,\n deflatedData.eachTextureSetTextures,\n deflatedData.matrices,\n deflatedData.reusedGeometriesDecodeMatrix,\n deflatedData.eachGeometryPrimitiveType,\n deflatedData.eachGeometryPositionsPortion,\n deflatedData.eachGeometryNormalsPortion,\n deflatedData.eachGeometryColorsPortion,\n deflatedData.eachGeometryUVsPortion,\n deflatedData.eachGeometryIndicesPortion,\n deflatedData.eachGeometryEdgeIndicesPortion,\n deflatedData.eachMeshGeometriesPortion,\n deflatedData.eachMeshMatricesPortion,\n deflatedData.eachMeshTextureSet,\n deflatedData.eachMeshMaterialAttributes,\n deflatedData.eachEntityId,\n deflatedData.eachEntityMeshesPortion,\n deflatedData.eachTileAABB,\n deflatedData.eachTileEntitiesPortion\n ]);\n}\n\nfunction toArrayBuffer(elements) {\n const indexData = new Uint32Array(elements.length + 2);\n indexData[0] = XKT_VERSION;\n indexData [1] = elements.length; // Stored Data 1.1: number of stored elements\n let dataLen = 0; // Stored Data 1.2: length of stored elements\n for (let i = 0, len = elements.length; i < len; i++) {\n const element = elements[i];\n const elementsize = element.length;\n indexData[i + 2] = elementsize;\n dataLen += elementsize;\n }\n const indexBuf = new Uint8Array(indexData.buffer);\n const dataArray = new Uint8Array(indexBuf.length + dataLen);\n dataArray.set(indexBuf);\n let offset = indexBuf.length;\n for (let i = 0, len = elements.length; i < len; i++) { // Stored Data 2: the elements themselves\n const element = elements[i];\n dataArray.set(element, offset);\n offset += element.length;\n }\n return dataArray.buffer;\n}\n\nexport {writeXKTModelToArrayBuffer};", "static": true, "longname": "/home/lindsay/xeokit-convert/src/XKTModel/writeXKTModelToArrayBuffer.js", "access": "public", @@ -7329,7 +7329,7 @@ "importPath": "@xeokit/xeokit-convert/src/XKTModel/writeXKTModelToArrayBuffer.js", "importStyle": null, "description": null, - "lineNumber": 321, + "lineNumber": 323, "undocument": true, "params": [ { @@ -7360,7 +7360,7 @@ "importPath": "@xeokit/xeokit-convert/src/XKTModel/writeXKTModelToArrayBuffer.js", "importStyle": null, "description": null, - "lineNumber": 357, + "lineNumber": 359, "undocument": true, "params": [ { @@ -7391,7 +7391,7 @@ "importPath": "@xeokit/xeokit-convert/src/XKTModel/writeXKTModelToArrayBuffer.js", "importStyle": null, "description": null, - "lineNumber": 364, + "lineNumber": 366, "undocument": true, "params": [ { @@ -7422,7 +7422,7 @@ "importPath": "@xeokit/xeokit-convert/src/XKTModel/writeXKTModelToArrayBuffer.js", "importStyle": null, "description": null, - "lineNumber": 397, + "lineNumber": 399, "undocument": true, "params": [ { @@ -14071,7 +14071,7 @@ }, { "kind": "index", - "content": "# xeokit-convert\n\n[![Twitter Follow](https://img.shields.io/twitter/follow/xeolabs?style=social)](https://twitter.com/xeolabs)\n[![This project is using Percy.io for visual regression testing.](https://percy.io/static/images/percy-badge.svg)](https://percy.io/73524691/xeokit-convert)\n[![npm version](https://badge.fury.io/js/%40xeokit%2Fxeokit-convert.svg)](https://badge.fury.io/js/%40xeokit%2Fxeokit-convert)\n\nUse **xeokit-convert** to:\n\n* Convert BIM and AEC models directly into XKT files for super fast loading into [xeokit](https://xeokit.io)\n* Generate XKT files with JavaScript\n\n> xeokit-convert replaces [xeokit-gltf-to-xkt](https://github.com/xeokit/xeokit-gltf-to-xkt) and [xeokit-xkt-utils](https://github.com/xeokit/xeokit-xkt-utils), which are deprecated.\n\n> CAUTION: Direct IFC conversion is an alpha status feature, since it depends on [web-ifc](https://github.com/tomvandig/web-ifc), a 3rd-party library, which is also alpha at this time. As such, some IFC models may not convert properly. If this is the case for your models, consider using our [standard conversion setup](https://www.notion.so/xeokit/Converting-IFC-Models-using-3rd-Party-Open-Source-Tools-c373e48bc4094ff5b6e5c5700ff580ee)\nuntil issues have been resolved.\n\n[![View Revit Sample IFC in xeokit](https://xeokit.github.io/xeokit-ifc-to-xkt/assets/rac_advanced_sample_project.png)](https://xeokit.github.io/xeokit-convert/demos/demoXKT.html?xktSrc=.././assets/models/xkt/ifc_rac_advanced_sample_project/model.xkt)\n\n* [[View this XKT model](https://xeokit.github.io/xeokit-convert/demos/demoXKT.html?xktSrc=.././assets/models/xkt/ifc_rac_advanced_sample_project/model.xkt)]\n\n---\n\n# Contents\n\n- [Introduction](#introduction)\n- [Acknowledgements](#acknowledgements)\n- [Resources](#resources)\n- [Features](#features)\n- [Installing](#installing)\n- [Components](#components)\n- [Using ````convert2xkt````](#using-----convert2xkt----)\n + [Converting an IFC file into an XKT file on the command line](#converting-an-ifc-file-into-an-xkt-file-on-the-command-line)\n + [Viewing the XKT file with xeokit](#viewing-the-xkt-file-with-xeokit)\n + [Querying the XKT version in Node.js](#querying-the-xkt-version-in-nodejs)\n + [Converting an IFC file into an XKT file in Node.js](#converting-an-ifc-file-into-an-xkt-file-in-nodejs)\n + [Converting IFC file data into XKT data in Node.js](#converting-ifc-file-data-into-xkt-data-in-nodejs)\n- [Using ````XKTModel````](#using-----xktmodel----)\n + [Programmatically Building an XKT File](#programmatically-building-an-xkt-file)\n + [Serializing the XKTModel to an ArrayBuffer](#serializing-the-xktmodel-to-an-arraybuffer)\n + [Loading the ArrayBuffer into a Viewer](#loading-the-arraybuffer-into-a-viewer)\n + [Loading IFC into an XKTModel](#loading-ifc-into-an-xktmodel)\n + [Loading LAS into an XKTModel](#loading-las-into-an-xktmodel)\n + [Loading glTF into an XKTModel](#loading-gltf-into-an-xktmodel)\n + [Loading STL into an XKTModel](#loading-stl-into-an-xktmodel)\n- [Building](#building)\n + [Building Binaries](#building-binaries)\n + [Building Tests](#building-tests)\n\n---\n\n# Introduction\n\n[````xeokit-convert````](https://github.com/xeokit/xeokit-convert) provides the means to convert 3D BIM and AEC models\ninto XKT files for super fast loading into [xeokit](https://xeokit.io), along with programming tools to generate XKT\nfiles with JavaScript on Node.js.\n\nThe [XKT format](https://github.com/xeokit/xeokit-convert/tree/master/specs) compresses large double-precision models to\na compact payload that loads quickly over the Web into a xeokit viewer running in the browser. We can use xeokit-convert\nto convert several source formats into XKT, such as IFC, glTF and CityJSON.\n\n# Acknowledgements\n\nOur thanks to the authors of these open source libraries, which we use internally within ````xeokit-convert````:\n\n* [loaders.gl](https://loaders.gl) - Copyright (C) 2015 Uber Technologies,\n Inc. ([MIT License](http://www.opensource.org/licenses/mit-license.php))\n* [Basis Universal](https://github.com/BinomialLLC/basis_universal) - Binomal\n LLC, ([Apache 2 License](http://www.apache.org/licenses/LICENSE-2.0))\n* [Pako](https://github.com/nodeca/pako) - Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei\n Tuputcyn ([MIT License](http://www.opensource.org/licenses/mit-license.php))\n* [earcut](https://github.com/mapbox/earcut) - Copyright (C) 2016,\n Mapbox ([ISC License](https://opensource.org/licenses/ISC))\n* [web-ifc](https://github.com/tomvandig/web-ifc) - Copyright (C) 2020-2021 web-ifc\n contributors ([Mozilla Public License Version 2.0](https://www.mozilla.org/en-US/MPL/2.0/))\n\n# Resources\n\n* [npm](https://www.npmjs.com/package/@xeokit/xeokit-convert)\n* [API Docs](https://xeokit.github.io/xeokit-convert/docs)\n* [Source Code](https://github.com/xeokit/xeokit-convert)\n* [Performance Benchmarks](https://xeokit.github.io/xeokit-convert/perfTests)\n* [XKT Specifications](https://xeokit.github.io/xeokit-convert/specs/)\n\n# Features\n\n* A Node-based CLI tool to convert various 3D model formats to XKT files.\n* A JavaScript toolkit of components for loading, generating and saving XKT files.\n\n# Installing\n\n````bash\nnpm i @xeokit/xeokit-convert\n````\n\nIf you get ````RuntimeError: memory access out of bounds```` while converting IFC, then you'll need to compile the\n3rd-party web-ifc WASM module for your system - see [Building Binaries](#building-binaries).\n\n# Components\n\nThe table below lists the components provided by ````xeokit-convert````.\n\nAt the center of the toolkit, we've got the converter tool, provided as both a Node.js function and CLI executable.\n\nBundled with the converter, we've got the XKT document model, a bunch of loaders for different formats, and a function\nto serialize the document model to a BLOB. We use these components within the converter tool, and also provide them as\npart of the public API for extensibility.\n\n| Component | Description |\n| --- | --- |\n| [convert2xkt](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-convert2xkt) (function)
[convert2xkt](https://github.com/xeokit/xeokit-convert/blob/master/convert2xkt.js) (Node script)| A Node-based JavaScript function and CLI tool that converts various AEC model formats into xeokit's native, super-fast-loading XKT format. |\n| [XKTModel](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) | A JavaScript document model that represents the contents of an XKT file in memory. Using this, we can programmatically build a document model in JavaScript, adding geometries, materials, objects etc, then serialize it to an XKT file. |\n| [parseIFCIntoXKTModel](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseIFCIntoXKTModel) | Parses IFC data into an ````XKTModel````. This is an alpha-status feature. |\n| [parseGLTFIntoXKTModel](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseGLTFIntoXKTModel) | Parses glTF into an ````XKTModel````. Supports all glTF formats, along with textures. |\n| [parseGLTFJSONIntoXKTModel](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseGLTFJSONIntoXKTModel) | Parses glTF JSON into an ````XKTModel````. Our original lightweight glTF parser that does not support ````.glb```` and textures. |\n| [parseCityJSONIntoXKTModel](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseJSONIntoXKTModel) | Parses CityJSON into an ````XKTModel```` |\n| [parseLASIntoXKTModel](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseLASIntoXKTModel) | Parses LAS and LAZ into an ````XKTModel```` |\n| [parseSTLIntoXKTModel](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseSTLIntoXKTModel) | Parses STL into an ````XKTModel```` |\n| [writeXKTModelToArrayBuffer](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-writeXKTModelToArrayBuffer) | Serializes an ````XKTModel```` to an XKT file |\n\n# Using ````convert2xkt````\n\nThe ````convert2xkt```` tool converts various model formats into xeokit's native XKT format, which is designed to load\nsuper fast over the Web into a xeokit viewer. We provide this tool as both a [CLI script]() and as\na [function](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-convert2xkt) to use within\nour own Node scripts.\n\n````bash\nnode convert2xkt.js -h\n\nUsage: convert2xkt [options]\n\nOptions:\n -v, --version output the version number\n -s, --source [file] path to source file\n -f, --format [string] source file format (optional); supported formats are gltf, ifc, laz, las, pcd, ply, stl and cityjson\n -m, --metamodel [file] path to source metamodel JSON file (optional)\n -i, --include [types] only convert these types (optional)\n -x, --exclude [types] never convert these types (optional)\n -r, --rotatex rotate model 90 degrees about X axis (for las and cityjson)\n -g, --disablegeoreuse disable geometry reuse (for ifc and gltf)\n -t, --textures convert textures (for gltf)\n -o, --output [file] path to target .xkt file; creates directories on path automatically if not existing\n -l, --log enable logging\n -h, --help display help for command\n\nXKT version: 10\n````\n\n### Converting an IFC file into an XKT file on the command line\n\nLet's use the [convert2xkt](https://github.com/xeokit/xeokit-convert/blob/master/convert2xkt.js) Node script to convert\nan IFC file to XKT on the command line.\n\n````bash\nnode convert2xkt.js -s rme_advanced_sample_project.ifc -o rme_advanced_sample_project.ifc.xkt -l\n\n[convert2xkt] Reading input file: rme_advanced_sample_project.ifc\n[convert2xkt] Input file size: 35309.94 kB\n[convert2xkt] Geometry reuse is enabled\n[convert2xkt] Converting...\n[convert2xkt] Converted to: XKT v9\n[convert2xkt] XKT size: 1632.98 kB\n[convert2xkt] Compression ratio: 21.62\n[convert2xkt] Conversion time: 54.41 s\n[convert2xkt] Converted metaobjects: 0\n[convert2xkt] Converted property sets: 0\n[convert2xkt] Converted drawable objects: 1986\n[convert2xkt] Converted geometries: 3897\n[convert2xkt] Converted triangles: 286076\n[convert2xkt] Converted vertices: 547740\n[convert2xkt] reuseGeometries: false\n[convert2xkt] minTileSize: 10000\n[convert2xkt] Writing XKT file: rme_advanced_sample_project.ifc.xkt\n````\n\n### Viewing the XKT file with xeokit\n\nNow that we've got an XKT file, we can now view it in the browser using a\nxeokit [Viewer](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html) configured with\nan [XKTLoaderPlugin](https://xeokit.github.io/xeokit-sdk/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html)\n.\n\n````javascript\nimport {Viewer, XKTLoaderPlugin} from\n \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk@1/dist/xeokit-sdk.es.min.js\";\n\nconst viewer = new Viewer({\n canvasId: \"myCanvas\"\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nconst modelNode = xktLoader.load({\n id: \"myModel\",\n src: \"./rme_sample_project.ifc.xkt\"\n});\n````\n\n### Querying the XKT version in Node.js\n\nFrom with a Node script, we can query which XKT version ````xeokit-convert```` currently generates:\n\n````javascript\nconst {XKT_INFO} = require(\"./dist/xeokit-convert.cjs.js\");\n\nconst xktVersion = XKT_INFO.xktVersion; // Unsigned integer\nconsole.log(`XKT version: ${xktVersion}`);\n````\n\n### Converting an IFC file into an XKT file in Node.js\n\nWe can use\nthe [convert2xkt](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-convert2xkt)\nfunction from within our Nodejs scripts to programmatically convert files to XKT.\n\nThis is awesome for automated model conversion, and\nour [performance test suite](https://github.com/xeokit/xeokit-convert/tree/master/perfTests).\n\n````javascript\nconst convert2xkt = require(\"@xeokit/xeokit-convert/dist/convert2xkt.cjs.js\");\n\nconvert2xkt({\n source: \"rme_advanced_sample_project.ifc\",\n output: \"rme_advanced_sample_project.ifc.xkt\",\n log: (msg) => {\n console.log(msg)\n }\n}).then(() => {\n console.log(\"Converted.\");\n}, (errMsg) => {\n console.error(\"Conversion failed: \" + errMsg)\n});\n````\n\n### Converting IFC file data into XKT data in Node.js\n\nWhen using\nthe [convert2xkt](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-convert2xkt)\nfunction in our Node scripts, we can manage all file data in memory.\n\nThis is great for when we want more control over where we read and write the files.\n\n````javascript\nconst convert2xkt = require(\"@xeokit/xeokit-convert/dist/convert2xkt.cjs.js\");\nconst fs = require('fs');\n\nconvert2xkt({\n sourceData: fs.readFileSync(\"rme_advanced_sample_project.ifc\"),\n outputXKT: (xtkArrayBuffer) => {\n fs.writeFileSync(\"rme_advanced_sample_project.ifc.xkt\", xtkArrayBuffer);\n }\n}).then(() => {\n console.log(\"Converted.\");\n}, (errMsg) => {\n console.error(\"Conversion failed: \" + errMsg)\n});\n````\n\nWhen using\nthe [convert2xkt](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-convert2xkt)\nfunction in our Node scripts, we can manage all file data in memory.\n\nThis is great for when we want more control over where we read and write the files.\n\n````javascript\nconst convert2xkt = require(\"@xeokit/xeokit-convert/dist/convert2xkt.cjs.js\");\nconst fs = require('fs');\n\nconvert2xkt({\n sourceData: fs.readFileSync(\"rme_advanced_sample_project.ifc\"),\n outputXKT: (xtkArrayBuffer) => {\n fs.writeFileSync(\"rme_advanced_sample_project.ifc.xkt\", xtkArrayBuffer);\n }\n}).then(() => {\n console.log(\"Converted.\");\n}, (errMsg) => {\n console.error(\"Conversion failed: \" + errMsg)\n});\n````\n\n# Using ````XKTModel````\n\n````XKTModel```` is a JavaScript class that represents the contents of an XKT file in memory.\n\nIt's a sort of *XKT document model*, with methods to build 3D objects within it, functions to import various model\nformats, and a function to serialize it to an XKT file.\n\nWe can use these tools to:\n\n* programmatically XKT files,\n* combine multiple models into an XKT file, from different formats,\n* develop custom XKT converters, and\n* extend ````convert2xkt```` to support more formats.\n\n### Programmatically Building an XKT File\n\nTo demonstrate the API, let's\nuse [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) 's\nbuilder methods to programmatically build a model that resembles the screenshot below. Then we'll serialize\nthe ````XKTModel```` to an\n````ArrayBuffer````, which we'll finally load that into a\nxeokit [````Viewer````](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html)\nusing [````XKTLoaderPlugin````](https://xeokit.github.io/xeokit-sdk/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html)\n.\n\nWe'll code this example to run in the browser, using the ES module\nin [xeokit-convert.es.js](./dist/xeokit-convert.es.js). We could also code it to run on node, using the CommonJS module\nin [xeokit-convert.cjs.js](./dist/xeokit-convert.cjs.js).\n\n![XKTModel Example](http://xeokit.io/img/docs/PerformanceModel/PerformanceModel.png)\n\n````javascript\nconst {\n XKTModel,\n writeXKTModelToArrayBuffer\n} = require(\"@xeokit/xeokit-convert/dist/xeokit-convert.cjs.js\");\nconst fs = require('fs');\n\nconst xktModel = new XKTModel();\n\n// Create metamodel - this part is optional\n\n// Create property sets to hold info about the model\n\nxktModel.createPropertySet({\n propertySetId: \"tableTopPropSet\",\n propertySetType: \"Default\",\n propertySetName: \"Table Top\",\n properties: [\n {\n id: \"tableTopMaterial\",\n type: \"Default\",\n name: \"Table top material\",\n value: \"Marble\"\n },\n {\n id: \"tableTopDimensions\",\n type: \"Default\",\n name: \"Table top dimensions\",\n value: \"90x90x3 cm\"\n }\n ]\n});\n\nxktModel.createPropertySet({\n propertySetId: \"tableLegPropSet\",\n propertySetType: \"Default\",\n propertySetName: \"Table Leg\",\n properties: [\n {\n id: \"tableLegMaterial\",\n type: \"Default\",\n name: \"Table leg material\",\n value: \"Pine\"\n },\n {\n id: \"tableLegDimensions\",\n type: \"Default\",\n name: \"Table leg dimensions\",\n value: \"5x5x50 cm\"\n }\n ]\n});\n\n// Create a hierarchy of metaobjects to describe the structure of the model\n\nxktModel.createMetaObject({ // Root XKTMetaObject, has no XKTEntity\n metaObjectId: \"table\",\n metaObjectName: \"The Table\",\n metaObjectType: \"furniture\"\n});\n\nxktModel.createMetaObject({\n metaObjectId: \"redLeg\",\n metaObjectName: \"Red Table Leg\",\n metaObjectType: \"furniturePart\",\n parentMetaObjectId: \"table\",\n propertySetIds: [\"tableLegPropSet\"]\n});\n\nxktModel.createMetaObject({\n metaObjectId: \"greenLeg\",\n metaObjectName: \"Green Table Leg\",\n metaObjectType: \"furniturePart\",\n parentMetaObjectId: \"table\",\n propertySetIds: [\"tableLegPropSet\"]\n});\n\nxktModel.createMetaObject({\n metaObjectId: \"blueLeg\",\n metaObjectName: \"Blue Table Leg\",\n metaObjectType: \"furniturePart\",\n parentMetaObjectId: \"table\",\n propertySetIds: [\"tableLegPropSet\"]\n});\n\nxktModel.createMetaObject({\n metaObjectId: \"yellowLeg\",\n metaObjectName: \"Yellow Table Leg\",\n metaObjectType: \"furniturePart\",\n parentMetaObjectId: \"table\",\n propertySetIds: [\"tableLegPropSet\"]\n});\n\nxktModel.createMetaObject({\n metaObjectId: \"pinkTop\",\n metaObjectName: \"The Pink Table Top\",\n metaObjectType: \"furniturePart\",\n parentMetaObjectId: \"table\",\n propertySetIds: [\"tableTopPropSet\"]\n});\n\n// Create an XKTGeometry that defines a box shape, as a triangle mesh \n\nxktModel.createGeometry({\n geometryId: \"boxGeometry\",\n primitiveType: \"triangles\", // Also \"lines\" and \"points\"\n positions: [\n 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1,\n -1, -1, 1, 1, -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, 1, -1,\n -1, -1, -1, -1, -1, 1, -1, 1, 1, -1\n ],\n normals: [ // Only for \"triangles\"\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,\n -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0,\n -1, 0, 0, -1\n ],\n indices: [\n 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19,\n 20, 21, 22, 20, 22, 23\n ]\n});\n\n// Create five XKTMeshes, which represent the table top and legs.\n// Each XKTMesh has its own color, position, orientation and size, \n// and uses the XKTGeometry to define its shape. \n// An XKTGeometry can be used by multiple XKTMeshes.\n\nxktModel.createMesh({\n meshId: \"redLegMesh\",\n geometryId: \"boxGeometry\",\n position: [-4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1, 0, 0],\n opacity: 1\n});\n\nxktModel.createMesh({\n meshId: \"greenLegMesh\",\n geometryId: \"boxGeometry\",\n position: [4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0, 1, 0],\n opacity: 1\n});\n\nxktModel.createMesh({\n meshId: \"blueLegMesh\",\n geometryId: \"boxGeometry\",\n position: [4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0, 0, 1],\n opacity: 1\n});\n\nxktModel.createMesh({\n meshId: \"yellowLegMesh\",\n geometryId: \"boxGeometry\",\n position: [-4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1, 1, 0],\n opacity: 1\n});\n\nxktModel.createMesh({\n meshId: \"pinkTopMesh\",\n geometryId: \"boxGeometry\",\n position: [0, -3, 0],\n scale: [6, 0.5, 6],\n rotation: [0, 0, 0],\n color: [1, 0, 1],\n opacity: 1\n});\n\n// Create five XKTEntities, which represent abstract, named objects in the model. \n// Each XKTEntity has an XKTMesh.\n// An XKTEntity can have multiple XKTMeshes. \n// An XKTMesh can only belong to one XKTEntity.\n\nxktModel.createEntity({\n entityId: \"redLeg\",\n meshIds: [\"redLegMesh\"]\n});\n\nxktModel.createEntity({\n entityId: \"greenLeg\",\n meshIds: [\"greenLegMesh\"]\n});\n\nxktModel.createEntity({\n entityId: \"blueLeg\",\n meshIds: [\"blueLegMesh\"]\n});\n\nxktModel.createEntity({\n entityId: \"yellowLeg\",\n meshIds: [\"yellowLegMesh\"]\n});\n\nxktModel.createEntity({\n entityId: \"pinkTop\",\n meshIds: [\"pinkTopMesh\"]\n});\n````\n\nOnce we've built\nour [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html), we\nneed to finalize it. Then it's ready to use. Note that finalizing is an asynhronous operation, so we await its\ncompletion before continuing.\n\n````javascript\nawait xktModel.finalize();\n````\n\n### Serializing the XKTModel to an ArrayBuffer\n\nNext, we'll\nuse [````writeXKTModelToArrayBuffer````](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-writeXKTModelToArrayBuffer)\nto serialize\nour [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) to\nan ````ArrayBuffer````.\n\n````javascript\nconst xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel);\n\nfs.writeFileSync(\"./myModel.xkt\", xktArrayBuffer);\n````\n\n### Loading the ArrayBuffer into a Viewer\n\nLet's now create a [````Viewer````](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html),\nthen load the ````ArrayBuffer```` into it using\nan [````XKTLoaderPlugin````](https://xeokit.github.io/xeokit-sdk/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html)\n.\n\n````javascript\nconst viewer = new Viewer({\n canvasId: \"myCanvas\"\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nconst model = xktLoader.load({\n id: \"myModel\",\n src: \"./myModel.xkt\"\n});\n````\n\nFinally, when the model has loaded, let's fit it in view.\n\n````javascript\nmodel.on(\"loaded\", () => {\n viewer.cameraFlight.flyTo(model);\n});\n````\n\n### Loading IFC into an XKTModel\n\nLet's\nuse [````parseIFCIntoXKTModel````](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseIFCIntoXKTModel)\nto import IFC into\nan [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html).\n\nAs before, we'll also use the classes and functions introduced in the previous examples to serialize\nthe [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) to\nan ````ArrayBuffer````, then load it into\na [````Viewer````](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html).\n\n````javascript\nconst viewer = new Viewer({\n canvasId: \"myCanvas\"\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nutils.loadArraybuffer(\"./assets/models/ifc/rac_advanced_sample_project.ifc\", async (data) => {\n\n const xktModel = new XKTModel();\n\n parseIFCIntoXKTModel({data, xktModel, wasmPath: \"../dist/\"}).then(() => {\n\n xktModel.finalize().then(() => {\n\n const xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel);\n\n xktLoader.load({\n id: \"myModel\",\n xkt: xktArrayBuffer,\n edges: true\n });\n\n viewer.cameraFlight.flyTo(viewer.scene);\n });\n });\n },\n (errMsg) => {\n });\n````\n\n### Loading LAS into an XKTModel\n\nLet's\nuse [````parseLASIntoXKTModel````](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseLASIntoXKTModel)\nto import LAS into\nan [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html).\n\nAs before, we'll also use the classes and functions introduced in the previous examples to serialize\nthe [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) to\nan ````ArrayBuffer````, then load it into\na [````Viewer````](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html).\n\n````javascript\nconst viewer = new Viewer({\n canvasId: \"myCanvas\"\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nutils.loadArraybuffer(\"./assets/models/laz/indoor.0.1.laz\", async (data) => {\n\n const xktModel = new XKTModel();\n\n parseLASIntoXKTModel({data, xktModel, rotateX: true}).then(() => {\n\n xktModel.finalize().then(() => {\n\n const xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel);\n\n xktLoader.load({\n id: \"myModel\",\n xkt: xktArrayBuffer,\n edges: true\n });\n\n viewer.cameraFlight.flyTo(viewer.scene);\n });\n });\n },\n (errMsg) => {\n });\n````\n\n### Loading glTF into an XKTModel\n\nLet's\nuse [````parseGLTFIntoXKTModel````](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseGLTFIntoXKTModel)\nto import glTF into\nan [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html).\n\nWe'll also use the classes and functions introduced in the previous examples to serialize\nthe [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) to\nan ````ArrayBuffer````, then validate the ````ArrayBuffer```` and load it into\na [````Viewer````](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html).\n\n````javascript\nconst viewer = new Viewer({\n canvasId: \"myCanvas\"\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nutils.loadArraybuffer(\"./assets/models/gltf/MAP/glTF-Embedded/MAP.gltf\", (gltf) => {\n\n const xktModel = new XKTModel();\n\n parseGLTFIntoXKTModel({data: gltf, xktModel: xktModel}).then(() => {\n\n xktModel.finalize().then(() => {\n\n const xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel);\n\n xktLoader.load({\n id: \"myModel\",\n xkt: xktArrayBuffer\n });\n\n viewer.cameraFlight.flyTo(viewer.scene);\n });\n });\n },\n (errMsg) => {\n });\n````\n\n### Loading STL into an XKTModel\n\nLet's\nuse [````parseSTLIntoXKTModel````](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseSTLIntoXKTModel)\nto import STL into\nan [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html).\n\nAs before, we'll also use the classes and functions introduced in the previous examples to serialize\nthe [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) to\nan ````ArrayBuffer````, then load it into\na [````Viewer````](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html).\n\n````javascript\nconst viewer = new Viewer({\n canvasId: \"myCanvas\"\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nutils.loadArraybuffer(\"./assets/models/stl/binary/spurGear.stl\", (json) => {\n\n const xktModel = new XKTModel();\n\n parseSTLIntoXKTModel({stlData: json, xktModel: xktModel}).then(() => {\n\n xktModel.finalize().then(() => {\n\n const xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel);\n\n xktLoader.load({\n id: \"myModel\",\n xkt: xktArrayBuffer\n });\n\n viewer.cameraFlight.flyTo(viewer.scene);\n });\n });\n },\n (errMsg) => {\n });\n````\n\n# Building\n\n### Building Binaries\n\nBuilding the binaries in [````./dist````](https://github.com/xeokit/xeokit-convert/tree/main/dist):\n\n````bash\nnpm update\nnpm run build\n````\n\nThis will build:\n\n* [./dist/convert2xkt.cjs.js](./dist/convert2xkt.cjs.js) - Nodejs CLI converter tool\n* [./dist/xeokit-convert.cjs.js](./dist/xeokit-convert.cjs.js) - CommonJS module library of XKT classes and functions\n* [./dist/xeokit-convert.es.js](./dist/xeokit-convert.es.js) - ES module library of XKT classes and functions\n* [./dist/web-ifc.wasm](./dist/web-ifc.wasm) - 3rd-party web-ifc WASM module\n\nBuilding the JavaScript API documentation in [````./docs````](https://xeokit.github.io/xeokit-convert/docs):\n\n````bash\nnpm run docs\n````\n\n### RuntimeError: memory access out of bounds\n\nWith luck, the WASM module already be compiled appropriately for your target x86 system.\n\nHowever, if you get this error:\n\n````bash\nRuntimeError: memory access out of bounds\n````\n\nthen you will need to compile that WASM module for your target system. Please follow the instructions for that on the\n[web-ifc](https://github.com/tomvandig/web-ifc) project page, then replace [./dist/web-ifc.wasm](./dist/web-ifc.wasm)\nwith your compiled binary.\n\n### Building Tests\n\nInstall Firefox for Puppeteer:\n\n````bash\nPUPPETEER_PRODUCT=firefox npm i puppeteer\n````\n\nRun the tests using Firefox:\n\n````bash\nnpm build-tests\n````\n\n", + "content": "# xeokit-convert\n\n[![Twitter Follow](https://img.shields.io/twitter/follow/xeolabs?style=social)](https://twitter.com/xeolabs)\n[![This project is using Percy.io for visual regression testing.](https://percy.io/static/images/percy-badge.svg)](https://percy.io/73524691/xeokit-convert)\n[![npm version](https://badge.fury.io/js/%40xeokit%2Fxeokit-convert.svg)](https://badge.fury.io/js/%40xeokit%2Fxeokit-convert)\n\nUse **xeokit-convert** to:\n\n* Convert BIM and AEC models directly into XKT files for super fast loading into [xeokit](https://xeokit.io)\n* Generate XKT files with JavaScript\n\n> xeokit-convert replaces [xeokit-gltf-to-xkt](https://github.com/xeokit/xeokit-gltf-to-xkt) and [xeokit-xkt-utils](https://github.com/xeokit/xeokit-xkt-utils), which are deprecated.\n\n> CAUTION: Direct IFC conversion is an alpha status feature, since it depends on [web-ifc](https://github.com/tomvandig/web-ifc), a 3rd-party library, which is also alpha at this time. As such, some IFC models may not convert properly. If this is the case for your models, consider using our [standard conversion setup](https://www.notion.so/xeokit/Converting-IFC-Models-using-3rd-Party-Open-Source-Tools-c373e48bc4094ff5b6e5c5700ff580ee)\nuntil issues have been resolved.\n\n[![View Revit Sample IFC in xeokit](https://xeokit.github.io/xeokit-ifc-to-xkt/assets/rac_advanced_sample_project.png)](https://xeokit.github.io/xeokit-convert/demos/demoXKT.html?xktSrc=.././assets/models/xkt/ifc_rac_advanced_sample_project/model.xkt)\n\n* [[View this XKT model](https://xeokit.github.io/xeokit-convert/demos/demoXKT.html?xktSrc=.././assets/models/xkt/ifc_rac_advanced_sample_project/model.xkt)]\n\n---\n\n# Contents\n\n- [Introduction](#introduction)\n- [Acknowledgements](#acknowledgements)\n- [Resources](#resources)\n- [Features](#features)\n- [Installing](#installing)\n- [Components](#components)\n- [Using ````convert2xkt````](#using-----convert2xkt----)\n + [Converting an IFC file into an XKT file on the command line](#converting-an-ifc-file-into-an-xkt-file-on-the-command-line)\n + [Viewing the XKT file with xeokit](#viewing-the-xkt-file-with-xeokit)\n + [Querying the XKT version in Node.js](#querying-the-xkt-version-in-nodejs)\n + [Converting an IFC file into an XKT file in Node.js](#converting-an-ifc-file-into-an-xkt-file-in-nodejs)\n + [Converting IFC file data into XKT data in Node.js](#converting-ifc-file-data-into-xkt-data-in-nodejs)\n- [Using ````XKTModel````](#using-----xktmodel----)\n + [Programmatically Building an XKT File](#programmatically-building-an-xkt-file)\n + [Serializing the XKTModel to an ArrayBuffer](#serializing-the-xktmodel-to-an-arraybuffer)\n + [Loading the ArrayBuffer into a Viewer](#loading-the-arraybuffer-into-a-viewer)\n + [Loading IFC into an XKTModel](#loading-ifc-into-an-xktmodel)\n + [Loading LAS into an XKTModel](#loading-las-into-an-xktmodel)\n + [Loading glTF into an XKTModel](#loading-gltf-into-an-xktmodel)\n + [Loading STL into an XKTModel](#loading-stl-into-an-xktmodel)\n- [Building](#building)\n + [Building Binaries](#building-binaries)\n + [Building Tests](#building-tests)\n\n---\n\n# Introduction\n\n[````xeokit-convert````](https://github.com/xeokit/xeokit-convert) provides the means to convert 3D BIM and AEC models\ninto XKT files for super fast loading into [xeokit](https://xeokit.io), along with programming tools to generate XKT\nfiles with JavaScript on Node.js.\n\nThe [XKT format](https://github.com/xeokit/xeokit-convert/tree/master/specs) compresses large double-precision models to\na compact payload that loads quickly over the Web into a xeokit viewer running in the browser. We can use xeokit-convert\nto convert several source formats into XKT, such as IFC, glTF and CityJSON.\n\n# Acknowledgements\n\nOur thanks to the authors of these open source libraries, which we use internally within ````xeokit-convert````:\n\n* [loaders.gl](https://loaders.gl) - Copyright (C) 2015 Uber Technologies,\n Inc. ([MIT License](http://www.opensource.org/licenses/mit-license.php))\n* [Basis Universal](https://github.com/BinomialLLC/basis_universal) - Binomal\n LLC, ([Apache 2 License](http://www.apache.org/licenses/LICENSE-2.0))\n* [Pako](https://github.com/nodeca/pako) - Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei\n Tuputcyn ([MIT License](http://www.opensource.org/licenses/mit-license.php))\n* [earcut](https://github.com/mapbox/earcut) - Copyright (C) 2016,\n Mapbox ([ISC License](https://opensource.org/licenses/ISC))\n* [web-ifc](https://github.com/tomvandig/web-ifc) - Copyright (C) 2020-2021 web-ifc\n contributors ([Mozilla Public License Version 2.0](https://www.mozilla.org/en-US/MPL/2.0/))\n\n# Resources\n\n* [npm](https://www.npmjs.com/package/@xeokit/xeokit-convert)\n* [API Docs](https://xeokit.github.io/xeokit-convert/docs)\n* [Source Code](https://github.com/xeokit/xeokit-convert)\n* [Performance Benchmarks](https://xeokit.github.io/xeokit-convert/perfTests)\n* [XKT Specifications](https://xeokit.github.io/xeokit-convert/specs/)\n\n# Features\n\n* A Node-based CLI tool to convert various 3D model formats to XKT files.\n* A JavaScript toolkit of components for loading, generating and saving XKT files.\n\n# Installing\n\n````bash\nnpm i @xeokit/xeokit-convert\n````\n\nIf you get ````RuntimeError: memory access out of bounds```` while converting IFC, then you'll need to compile the\n3rd-party web-ifc WASM module for your system - see [Building Binaries](#building-binaries).\n\n# Components\n\nThe table below lists the components provided by ````xeokit-convert````.\n\nAt the center of the toolkit, we've got the converter tool, provided as both a Node.js function and CLI executable.\n\nBundled with the converter, we've got the XKT document model, a bunch of loaders for different formats, and a function\nto serialize the document model to a BLOB. We use these components within the converter tool, and also provide them as\npart of the public API for extensibility.\n\n| Component | Description |\n| --- | --- |\n| [convert2xkt](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-convert2xkt) (function)
[convert2xkt](https://github.com/xeokit/xeokit-convert/blob/master/convert2xkt.js) (Node script)| A Node-based JavaScript function and CLI tool that converts various AEC model formats into xeokit's native, super-fast-loading XKT format. |\n| [XKTModel](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) | A JavaScript document model that represents the contents of an XKT file in memory. Using this, we can programmatically build a document model in JavaScript, adding geometries, materials, objects etc, then serialize it to an XKT file. |\n| [parseIFCIntoXKTModel](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseIFCIntoXKTModel) | Parses IFC data into an ````XKTModel````. This is an alpha-status feature. |\n| [parseGLTFIntoXKTModel](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseGLTFIntoXKTModel) | Parses glTF into an ````XKTModel````. Supports all glTF formats, along with textures. |\n| [parseGLTFJSONIntoXKTModel](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseGLTFJSONIntoXKTModel) | Parses glTF JSON into an ````XKTModel````. Our original lightweight glTF parser that does not support ````.glb```` and textures. |\n| [parseCityJSONIntoXKTModel](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseJSONIntoXKTModel) | Parses CityJSON into an ````XKTModel```` |\n| [parseLASIntoXKTModel](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseLASIntoXKTModel) | Parses LAS and LAZ into an ````XKTModel```` |\n| [parseSTLIntoXKTModel](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseSTLIntoXKTModel) | Parses STL into an ````XKTModel```` |\n| [writeXKTModelToArrayBuffer](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-writeXKTModelToArrayBuffer) | Serializes an ````XKTModel```` to an XKT file |\n\n# Using ````convert2xkt````\n\nThe ````convert2xkt```` tool converts various model formats into xeokit's native XKT format, which is designed to load\nsuper fast over the Web into a xeokit viewer. We provide this tool as both a [CLI script]() and as\na [function](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-convert2xkt) to use within\nour own Node scripts.\n\n````bash\nnode convert2xkt.js -h\n\nUsage: convert2xkt [options]\n\nOptions:\n -v, --version output the version number\n -s, --source [file] path to source file\n -f, --format [string] source file format (optional); supported formats are gltf, ifc, laz, las, pcd, ply, stl and cityjson\n -m, --metamodel [file] path to source metamodel JSON file (optional)\n -i, --include [types] only convert these types (optional)\n -x, --exclude [types] never convert these types (optional)\n -r, --rotatex rotate model 90 degrees about X axis (for las and cityjson)\n -g, --disablegeoreuse disable geometry reuse (optional)\n -z, --mintilesize [number] minimum diagonal tile size (optional, default 500)\n -t, --disabletextures ignore textures (optional)\n -n, --disablenormals ignore normals (optional)\n -o, --output [file] path to target .xkt file; creates directories on path automatically if not existing\n -l, --log enable logging (optional)\n -h, --help display help for command\n\nXKT version: 10\n````\n\n### Converting an IFC file into an XKT file on the command line\n\nLet's use the [convert2xkt](https://github.com/xeokit/xeokit-convert/blob/master/convert2xkt.js) Node script to convert\nan IFC file to XKT on the command line.\n\n````bash\nnode convert2xkt.js -s rme_advanced_sample_project.ifc -o rme_advanced_sample_project.ifc.xkt -l\n\n[convert2xkt] Reading input file: rme_advanced_sample_project.ifc\n[convert2xkt] Input file size: 35309.94 kB\n[convert2xkt] Geometry reuse is enabled\n[convert2xkt] Converting...\n[convert2xkt] Converted to: XKT v9\n[convert2xkt] XKT size: 1632.98 kB\n[convert2xkt] Compression ratio: 21.62\n[convert2xkt] Conversion time: 54.41 s\n[convert2xkt] Converted metaobjects: 0\n[convert2xkt] Converted property sets: 0\n[convert2xkt] Converted drawable objects: 1986\n[convert2xkt] Converted geometries: 3897\n[convert2xkt] Converted triangles: 286076\n[convert2xkt] Converted vertices: 547740\n[convert2xkt] reuseGeometries: false\n[convert2xkt] minTileSize: 10000\n[convert2xkt] Writing XKT file: rme_advanced_sample_project.ifc.xkt\n````\n\n### Viewing the XKT file with xeokit\n\nNow that we've got an XKT file, we can now view it in the browser using a\nxeokit [Viewer](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html) configured with\nan [XKTLoaderPlugin](https://xeokit.github.io/xeokit-sdk/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html)\n.\n\n````javascript\nimport {Viewer, XKTLoaderPlugin} from\n \"https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk@1/dist/xeokit-sdk.es.min.js\";\n\nconst viewer = new Viewer({\n canvasId: \"myCanvas\"\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nconst modelNode = xktLoader.load({\n id: \"myModel\",\n src: \"./rme_sample_project.ifc.xkt\"\n});\n````\n\n### Querying the XKT version in Node.js\n\nFrom with a Node script, we can query which XKT version ````xeokit-convert```` currently generates:\n\n````javascript\nconst {XKT_INFO} = require(\"./dist/xeokit-convert.cjs.js\");\n\nconst xktVersion = XKT_INFO.xktVersion; // Unsigned integer\nconsole.log(`XKT version: ${xktVersion}`);\n````\n\n### Converting an IFC file into an XKT file in Node.js\n\nWe can use\nthe [convert2xkt](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-convert2xkt)\nfunction from within our Nodejs scripts to programmatically convert files to XKT.\n\nThis is awesome for automated model conversion, and\nour [performance test suite](https://github.com/xeokit/xeokit-convert/tree/master/perfTests).\n\n````javascript\nconst convert2xkt = require(\"@xeokit/xeokit-convert/dist/convert2xkt.cjs.js\");\n\nconvert2xkt({\n source: \"rme_advanced_sample_project.ifc\",\n output: \"rme_advanced_sample_project.ifc.xkt\",\n log: (msg) => {\n console.log(msg)\n }\n}).then(() => {\n console.log(\"Converted.\");\n}, (errMsg) => {\n console.error(\"Conversion failed: \" + errMsg)\n});\n````\n\n### Converting IFC file data into XKT data in Node.js\n\nWhen using\nthe [convert2xkt](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-convert2xkt)\nfunction in our Node scripts, we can manage all file data in memory.\n\nThis is great for when we want more control over where we read and write the files.\n\n````javascript\nconst convert2xkt = require(\"@xeokit/xeokit-convert/dist/convert2xkt.cjs.js\");\nconst fs = require('fs');\n\nconvert2xkt({\n sourceData: fs.readFileSync(\"rme_advanced_sample_project.ifc\"),\n outputXKT: (xtkArrayBuffer) => {\n fs.writeFileSync(\"rme_advanced_sample_project.ifc.xkt\", xtkArrayBuffer);\n }\n}).then(() => {\n console.log(\"Converted.\");\n}, (errMsg) => {\n console.error(\"Conversion failed: \" + errMsg)\n});\n````\n\nWhen using\nthe [convert2xkt](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-convert2xkt)\nfunction in our Node scripts, we can manage all file data in memory.\n\nThis is great for when we want more control over where we read and write the files.\n\n````javascript\nconst convert2xkt = require(\"@xeokit/xeokit-convert/dist/convert2xkt.cjs.js\");\nconst fs = require('fs');\n\nconvert2xkt({\n sourceData: fs.readFileSync(\"rme_advanced_sample_project.ifc\"),\n outputXKT: (xtkArrayBuffer) => {\n fs.writeFileSync(\"rme_advanced_sample_project.ifc.xkt\", xtkArrayBuffer);\n }\n}).then(() => {\n console.log(\"Converted.\");\n}, (errMsg) => {\n console.error(\"Conversion failed: \" + errMsg)\n});\n````\n\n# Using ````XKTModel````\n\n````XKTModel```` is a JavaScript class that represents the contents of an XKT file in memory.\n\nIt's a sort of *XKT document model*, with methods to build 3D objects within it, functions to import various model\nformats, and a function to serialize it to an XKT file.\n\nWe can use these tools to:\n\n* programmatically XKT files,\n* combine multiple models into an XKT file, from different formats,\n* develop custom XKT converters, and\n* extend ````convert2xkt```` to support more formats.\n\n### Programmatically Building an XKT File\n\nTo demonstrate the API, let's\nuse [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) 's\nbuilder methods to programmatically build a model that resembles the screenshot below. Then we'll serialize\nthe ````XKTModel```` to an\n````ArrayBuffer````, which we'll finally load that into a\nxeokit [````Viewer````](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html)\nusing [````XKTLoaderPlugin````](https://xeokit.github.io/xeokit-sdk/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html)\n.\n\nWe'll code this example to run in the browser, using the ES module\nin [xeokit-convert.es.js](./dist/xeokit-convert.es.js). We could also code it to run on node, using the CommonJS module\nin [xeokit-convert.cjs.js](./dist/xeokit-convert.cjs.js).\n\n![XKTModel Example](http://xeokit.io/img/docs/PerformanceModel/PerformanceModel.png)\n\n````javascript\nconst {\n XKTModel,\n writeXKTModelToArrayBuffer\n} = require(\"@xeokit/xeokit-convert/dist/xeokit-convert.cjs.js\");\nconst fs = require('fs');\n\nconst xktModel = new XKTModel();\n\n// Create metamodel - this part is optional\n\n// Create property sets to hold info about the model\n\nxktModel.createPropertySet({\n propertySetId: \"tableTopPropSet\",\n propertySetType: \"Default\",\n propertySetName: \"Table Top\",\n properties: [\n {\n id: \"tableTopMaterial\",\n type: \"Default\",\n name: \"Table top material\",\n value: \"Marble\"\n },\n {\n id: \"tableTopDimensions\",\n type: \"Default\",\n name: \"Table top dimensions\",\n value: \"90x90x3 cm\"\n }\n ]\n});\n\nxktModel.createPropertySet({\n propertySetId: \"tableLegPropSet\",\n propertySetType: \"Default\",\n propertySetName: \"Table Leg\",\n properties: [\n {\n id: \"tableLegMaterial\",\n type: \"Default\",\n name: \"Table leg material\",\n value: \"Pine\"\n },\n {\n id: \"tableLegDimensions\",\n type: \"Default\",\n name: \"Table leg dimensions\",\n value: \"5x5x50 cm\"\n }\n ]\n});\n\n// Create a hierarchy of metaobjects to describe the structure of the model\n\nxktModel.createMetaObject({ // Root XKTMetaObject, has no XKTEntity\n metaObjectId: \"table\",\n metaObjectName: \"The Table\",\n metaObjectType: \"furniture\"\n});\n\nxktModel.createMetaObject({\n metaObjectId: \"redLeg\",\n metaObjectName: \"Red Table Leg\",\n metaObjectType: \"furniturePart\",\n parentMetaObjectId: \"table\",\n propertySetIds: [\"tableLegPropSet\"]\n});\n\nxktModel.createMetaObject({\n metaObjectId: \"greenLeg\",\n metaObjectName: \"Green Table Leg\",\n metaObjectType: \"furniturePart\",\n parentMetaObjectId: \"table\",\n propertySetIds: [\"tableLegPropSet\"]\n});\n\nxktModel.createMetaObject({\n metaObjectId: \"blueLeg\",\n metaObjectName: \"Blue Table Leg\",\n metaObjectType: \"furniturePart\",\n parentMetaObjectId: \"table\",\n propertySetIds: [\"tableLegPropSet\"]\n});\n\nxktModel.createMetaObject({\n metaObjectId: \"yellowLeg\",\n metaObjectName: \"Yellow Table Leg\",\n metaObjectType: \"furniturePart\",\n parentMetaObjectId: \"table\",\n propertySetIds: [\"tableLegPropSet\"]\n});\n\nxktModel.createMetaObject({\n metaObjectId: \"pinkTop\",\n metaObjectName: \"The Pink Table Top\",\n metaObjectType: \"furniturePart\",\n parentMetaObjectId: \"table\",\n propertySetIds: [\"tableTopPropSet\"]\n});\n\n// Create an XKTGeometry that defines a box shape, as a triangle mesh \n\nxktModel.createGeometry({\n geometryId: \"boxGeometry\",\n primitiveType: \"triangles\", // Also \"lines\" and \"points\"\n positions: [\n 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1,\n -1, -1, 1, 1, -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, 1, -1,\n -1, -1, -1, -1, -1, 1, -1, 1, 1, -1\n ],\n normals: [ // Only for \"triangles\"\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,\n -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0,\n -1, 0, 0, -1\n ],\n indices: [\n 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19,\n 20, 21, 22, 20, 22, 23\n ]\n});\n\n// Create five XKTMeshes, which represent the table top and legs.\n// Each XKTMesh has its own color, position, orientation and size, \n// and uses the XKTGeometry to define its shape. \n// An XKTGeometry can be used by multiple XKTMeshes.\n\nxktModel.createMesh({\n meshId: \"redLegMesh\",\n geometryId: \"boxGeometry\",\n position: [-4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1, 0, 0],\n opacity: 1\n});\n\nxktModel.createMesh({\n meshId: \"greenLegMesh\",\n geometryId: \"boxGeometry\",\n position: [4, -6, -4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0, 1, 0],\n opacity: 1\n});\n\nxktModel.createMesh({\n meshId: \"blueLegMesh\",\n geometryId: \"boxGeometry\",\n position: [4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [0, 0, 1],\n opacity: 1\n});\n\nxktModel.createMesh({\n meshId: \"yellowLegMesh\",\n geometryId: \"boxGeometry\",\n position: [-4, -6, 4],\n scale: [1, 3, 1],\n rotation: [0, 0, 0],\n color: [1, 1, 0],\n opacity: 1\n});\n\nxktModel.createMesh({\n meshId: \"pinkTopMesh\",\n geometryId: \"boxGeometry\",\n position: [0, -3, 0],\n scale: [6, 0.5, 6],\n rotation: [0, 0, 0],\n color: [1, 0, 1],\n opacity: 1\n});\n\n// Create five XKTEntities, which represent abstract, named objects in the model. \n// Each XKTEntity has an XKTMesh.\n// An XKTEntity can have multiple XKTMeshes. \n// An XKTMesh can only belong to one XKTEntity.\n\nxktModel.createEntity({\n entityId: \"redLeg\",\n meshIds: [\"redLegMesh\"]\n});\n\nxktModel.createEntity({\n entityId: \"greenLeg\",\n meshIds: [\"greenLegMesh\"]\n});\n\nxktModel.createEntity({\n entityId: \"blueLeg\",\n meshIds: [\"blueLegMesh\"]\n});\n\nxktModel.createEntity({\n entityId: \"yellowLeg\",\n meshIds: [\"yellowLegMesh\"]\n});\n\nxktModel.createEntity({\n entityId: \"pinkTop\",\n meshIds: [\"pinkTopMesh\"]\n});\n````\n\nOnce we've built\nour [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html), we\nneed to finalize it. Then it's ready to use. Note that finalizing is an asynhronous operation, so we await its\ncompletion before continuing.\n\n````javascript\nawait xktModel.finalize();\n````\n\n### Serializing the XKTModel to an ArrayBuffer\n\nNext, we'll\nuse [````writeXKTModelToArrayBuffer````](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-writeXKTModelToArrayBuffer)\nto serialize\nour [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) to\nan ````ArrayBuffer````.\n\n````javascript\nconst xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel);\n\nfs.writeFileSync(\"./myModel.xkt\", xktArrayBuffer);\n````\n\n### Loading the ArrayBuffer into a Viewer\n\nLet's now create a [````Viewer````](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html),\nthen load the ````ArrayBuffer```` into it using\nan [````XKTLoaderPlugin````](https://xeokit.github.io/xeokit-sdk/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html)\n.\n\n````javascript\nconst viewer = new Viewer({\n canvasId: \"myCanvas\"\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nconst model = xktLoader.load({\n id: \"myModel\",\n src: \"./myModel.xkt\"\n});\n````\n\nFinally, when the model has loaded, let's fit it in view.\n\n````javascript\nmodel.on(\"loaded\", () => {\n viewer.cameraFlight.flyTo(model);\n});\n````\n\n### Loading IFC into an XKTModel\n\nLet's\nuse [````parseIFCIntoXKTModel````](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseIFCIntoXKTModel)\nto import IFC into\nan [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html).\n\nAs before, we'll also use the classes and functions introduced in the previous examples to serialize\nthe [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) to\nan ````ArrayBuffer````, then load it into\na [````Viewer````](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html).\n\n````javascript\nconst viewer = new Viewer({\n canvasId: \"myCanvas\"\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nutils.loadArraybuffer(\"./assets/models/ifc/rac_advanced_sample_project.ifc\", async (data) => {\n\n const xktModel = new XKTModel();\n\n parseIFCIntoXKTModel({data, xktModel, wasmPath: \"../dist/\"}).then(() => {\n\n xktModel.finalize().then(() => {\n\n const xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel);\n\n xktLoader.load({\n id: \"myModel\",\n xkt: xktArrayBuffer,\n edges: true\n });\n\n viewer.cameraFlight.flyTo(viewer.scene);\n });\n });\n },\n (errMsg) => {\n });\n````\n\n### Loading LAS into an XKTModel\n\nLet's\nuse [````parseLASIntoXKTModel````](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseLASIntoXKTModel)\nto import LAS into\nan [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html).\n\nAs before, we'll also use the classes and functions introduced in the previous examples to serialize\nthe [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) to\nan ````ArrayBuffer````, then load it into\na [````Viewer````](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html).\n\n````javascript\nconst viewer = new Viewer({\n canvasId: \"myCanvas\"\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nutils.loadArraybuffer(\"./assets/models/laz/indoor.0.1.laz\", async (data) => {\n\n const xktModel = new XKTModel();\n\n parseLASIntoXKTModel({data, xktModel, rotateX: true}).then(() => {\n\n xktModel.finalize().then(() => {\n\n const xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel);\n\n xktLoader.load({\n id: \"myModel\",\n xkt: xktArrayBuffer,\n edges: true\n });\n\n viewer.cameraFlight.flyTo(viewer.scene);\n });\n });\n },\n (errMsg) => {\n });\n````\n\n### Loading glTF into an XKTModel\n\nLet's\nuse [````parseGLTFIntoXKTModel````](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseGLTFIntoXKTModel)\nto import glTF into\nan [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html).\n\nWe'll also use the classes and functions introduced in the previous examples to serialize\nthe [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) to\nan ````ArrayBuffer````, then validate the ````ArrayBuffer```` and load it into\na [````Viewer````](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html).\n\n````javascript\nconst viewer = new Viewer({\n canvasId: \"myCanvas\"\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nutils.loadArraybuffer(\"./assets/models/gltf/MAP/glTF-Embedded/MAP.gltf\", (gltf) => {\n\n const xktModel = new XKTModel();\n\n parseGLTFIntoXKTModel({data: gltf, xktModel: xktModel}).then(() => {\n\n xktModel.finalize().then(() => {\n\n const xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel);\n\n xktLoader.load({\n id: \"myModel\",\n xkt: xktArrayBuffer\n });\n\n viewer.cameraFlight.flyTo(viewer.scene);\n });\n });\n },\n (errMsg) => {\n });\n````\n\n### Loading STL into an XKTModel\n\nLet's\nuse [````parseSTLIntoXKTModel````](https://xeokit.github.io/xeokit-convert/docs/function/index.html#static-function-parseSTLIntoXKTModel)\nto import STL into\nan [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html).\n\nAs before, we'll also use the classes and functions introduced in the previous examples to serialize\nthe [````XKTModel````](https://xeokit.github.io/xeokit-convert/docs/class/src/XKTModel/XKTModel.js~XKTModel.html) to\nan ````ArrayBuffer````, then load it into\na [````Viewer````](https://xeokit.github.io/xeokit-sdk/docs/class/src/viewer/Viewer.js~Viewer.html).\n\n````javascript\nconst viewer = new Viewer({\n canvasId: \"myCanvas\"\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nutils.loadArraybuffer(\"./assets/models/stl/binary/spurGear.stl\", (json) => {\n\n const xktModel = new XKTModel();\n\n parseSTLIntoXKTModel({stlData: json, xktModel: xktModel}).then(() => {\n\n xktModel.finalize().then(() => {\n\n const xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel);\n\n xktLoader.load({\n id: \"myModel\",\n xkt: xktArrayBuffer\n });\n\n viewer.cameraFlight.flyTo(viewer.scene);\n });\n });\n },\n (errMsg) => {\n });\n````\n\n# Building\n\n### Building Binaries\n\nBuilding the binaries in [````./dist````](https://github.com/xeokit/xeokit-convert/tree/main/dist):\n\n````bash\nnpm update\nnpm run build\n````\n\nThis will build:\n\n* [./dist/convert2xkt.cjs.js](./dist/convert2xkt.cjs.js) - Nodejs CLI converter tool\n* [./dist/xeokit-convert.cjs.js](./dist/xeokit-convert.cjs.js) - CommonJS module library of XKT classes and functions\n* [./dist/xeokit-convert.es.js](./dist/xeokit-convert.es.js) - ES module library of XKT classes and functions\n* [./dist/web-ifc.wasm](./dist/web-ifc.wasm) - 3rd-party web-ifc WASM module\n\nBuilding the JavaScript API documentation in [````./docs````](https://xeokit.github.io/xeokit-convert/docs):\n\n````bash\nnpm run docs\n````\n\n### RuntimeError: memory access out of bounds\n\nWith luck, the WASM module already be compiled appropriately for your target x86 system.\n\nHowever, if you get this error:\n\n````bash\nRuntimeError: memory access out of bounds\n````\n\nthen you will need to compile that WASM module for your target system. Please follow the instructions for that on the\n[web-ifc](https://github.com/tomvandig/web-ifc) project page, then replace [./dist/web-ifc.wasm](./dist/web-ifc.wasm)\nwith your compiled binary.\n\n### Building Tests\n\nInstall Firefox for Puppeteer:\n\n````bash\nPUPPETEER_PRODUCT=firefox npm i puppeteer\n````\n\nRun the tests using Firefox:\n\n````bash\nnpm build-tests\n````\n\n", "longname": "/home/lindsay/xeokit-convert/README.md", "name": "./README.md", "static": true, @@ -14079,7 +14079,7 @@ }, { "kind": "packageJSON", - "content": "{\n \"name\": \"@xeokit/xeokit-convert\",\n \"version\": \"1.1.0-alpha-9\",\n \"description\": \"JavaScript utilities to create .XKT files\",\n \"main\": \"index.js\",\n \"bin\": \"/convert2xkt.js\",\n \"directories\": {},\n \"scripts\": {\n \"build\": \"rollup --config rollup.config.tests.js; webpack --mode=production --node-env=production --progress; rollup --config rollup.config.dist.js; rollup --config rollup.config.convert2xkt.js; rm -Rf ./docs/*; ./node_modules/.bin/esdoc\",\n \"build-tests\": \"rollup --config rollup.config.tests.js\",\n \"build-node\": \"webpack --mode=production --node-env=production --progress\",\n \"build-browser\": \"rollup --config rollup.config.dist.js\",\n \"docs\": \"rm -Rf ./docs/*; ./node_modules/.bin/esdoc\",\n \"publish\": \"npm publish --access public\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/xeokit/xeokit-convert.git\"\n },\n \"keywords\": [\n \"xeolabs\",\n \"xeokit\",\n \"bim\",\n \"opensource\",\n \"ifc\",\n \"webgl\",\n \"xkt\",\n \"gltf\",\n \"glb\",\n \"cityjson\",\n \"laz\",\n \"gis\"\n ],\n \"author\": \"Lindsay Kay\",\n \"license\": \"LICENSE\",\n \"bugs\": {\n \"url\": \"https://github.com/xeokit/xeokit-convert/issues\"\n },\n \"homepage\": \"https://github.com/xeokit/xeokit-convert#readme\",\n \"dependencies\": {\n \"@loaders.gl/core\": \"^3.2.6\",\n \"@loaders.gl/gltf\": \"^3.2.6\",\n \"@loaders.gl/json\": \"^3.2.6\",\n \"@loaders.gl/las\": \"^3.2.6\",\n \"@loaders.gl/obj\": \"^3.2.6\",\n \"@loaders.gl/ply\": \"^3.2.6\",\n \"@loaders.gl/polyfills\": \"^3.2.6\",\n \"@loaders.gl/textures\": \"^3.2.6\",\n \"core-js\": \"^3.22.5\",\n \"fs\": \"0.0.1-security\",\n \"pako\": \"^2.0.4\",\n \"path\": \"^0.12.7\",\n \"web-ifc\": \"^0.0.35\"\n },\n \"devDependencies\": {\n \"@babel/core\": \"^7.17.10\",\n \"@babel/plugin-external-helpers\": \"^7.17.12\",\n \"@babel/preset-env\": \"^7.17.12\",\n \"@rollup/plugin-alias\": \"^3.1.9\",\n \"@rollup/plugin-commonjs\": \"^21.1.0\",\n \"@rollup/plugin-node-resolve\": \"^13.2.1\",\n \"@xeokit/xeokit-sdk\": \"2.3.0-beta-14\",\n \"babel-loader\": \"^8.2.5\",\n \"copy-webpack-plugin\": \"^11.0.0\",\n \"esdoc\": \"^1.1.0\",\n \"esdoc-node\": \"^1.0.5\",\n \"esdoc-standard-plugin\": \"^1.0.0\",\n \"http-server\": \"^14.1.0\",\n \"npm-upgrade\": \"^3.1.0\",\n \"rimraf\": \"^3.0.2\",\n \"rollup\": \"^2.70.2\",\n \"rollup-plugin-copy\": \"^3.4.0\",\n \"rollup-plugin-minify-es\": \"^1.1.1\",\n \"webpack\": \"^5.72.1\",\n \"webpack-cli\": \"^4.9.2\",\n \"webpack-node-externals\": \"^3.0.0\"\n },\n \"files\": [\n \"/dist\",\n \"/convert2xkt.js\"\n ]\n}\n", + "content": "{\n \"name\": \"@xeokit/xeokit-convert\",\n \"version\": \"1.1.0\",\n \"description\": \"JavaScript utilities to create .XKT files\",\n \"main\": \"index.js\",\n \"bin\": \"/convert2xkt.js\",\n \"directories\": {},\n \"scripts\": {\n \"build\": \"rollup --config rollup.config.tests.js; webpack --mode=production --node-env=production --progress; rollup --config rollup.config.dist.js; rollup --config rollup.config.convert2xkt.js; rm -Rf ./docs/*; ./node_modules/.bin/esdoc\",\n \"build-tests\": \"rollup --config rollup.config.tests.js\",\n \"build-node\": \"webpack --mode=production --node-env=production --progress\",\n \"build-browser\": \"rollup --config rollup.config.dist.js\",\n \"docs\": \"rm -Rf ./docs/*; ./node_modules/.bin/esdoc\",\n \"publish\": \"npm publish --access public\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/xeokit/xeokit-convert.git\"\n },\n \"keywords\": [\n \"xeolabs\",\n \"xeokit\",\n \"bim\",\n \"opensource\",\n \"ifc\",\n \"webgl\",\n \"xkt\",\n \"gltf\",\n \"glb\",\n \"cityjson\",\n \"laz\",\n \"gis\"\n ],\n \"author\": \"Lindsay Kay\",\n \"license\": \"LICENSE\",\n \"bugs\": {\n \"url\": \"https://github.com/xeokit/xeokit-convert/issues\"\n },\n \"homepage\": \"https://github.com/xeokit/xeokit-convert#readme\",\n \"dependencies\": {\n \"@loaders.gl/core\": \"^3.2.6\",\n \"@loaders.gl/gltf\": \"^3.2.6\",\n \"@loaders.gl/json\": \"^3.2.6\",\n \"@loaders.gl/las\": \"^3.2.6\",\n \"@loaders.gl/obj\": \"^3.2.6\",\n \"@loaders.gl/ply\": \"^3.2.6\",\n \"@loaders.gl/polyfills\": \"^3.2.6\",\n \"@loaders.gl/textures\": \"^3.2.6\",\n \"core-js\": \"^3.22.5\",\n \"fs\": \"0.0.1-security\",\n \"pako\": \"^2.0.4\",\n \"path\": \"^0.12.7\",\n \"web-ifc\": \"^0.0.35\"\n },\n \"devDependencies\": {\n \"@babel/core\": \"^7.17.10\",\n \"@babel/plugin-external-helpers\": \"^7.17.12\",\n \"@babel/preset-env\": \"^7.17.12\",\n \"@rollup/plugin-alias\": \"^3.1.9\",\n \"@rollup/plugin-commonjs\": \"^21.1.0\",\n \"@rollup/plugin-node-resolve\": \"^13.2.1\",\n \"@xeokit/xeokit-sdk\": \"^2.3.0\",\n \"babel-loader\": \"^8.2.5\",\n \"copy-webpack-plugin\": \"^11.0.0\",\n \"esdoc\": \"^1.1.0\",\n \"esdoc-node\": \"^1.0.5\",\n \"esdoc-standard-plugin\": \"^1.0.0\",\n \"http-server\": \"^14.1.0\",\n \"npm-upgrade\": \"^3.1.0\",\n \"rimraf\": \"^3.0.2\",\n \"rollup\": \"^2.70.2\",\n \"rollup-plugin-copy\": \"^3.4.0\",\n \"rollup-plugin-minify-es\": \"^1.1.1\",\n \"webpack\": \"^5.72.1\",\n \"webpack-cli\": \"^4.9.2\",\n \"webpack-node-externals\": \"^3.0.0\"\n },\n \"files\": [\n \"/dist\",\n \"/convert2xkt.js\"\n ]\n}\n", "longname": "/home/lindsay/xeokit-convert/package.json", "name": "package.json", "static": true, diff --git a/docs/source.html b/docs/source.html index cd63f51..c76c004 100644 --- a/docs/source.html +++ b/docs/source.html @@ -270,12 +270,12 @@ 2022-08-05 19:42:29 (UTC) - src/XKTModel/writeXKTModelToArrayBuffer.js + src/XKTModel/writeXKTModelToArrayBuffer.js writeXKTModelToArrayBuffer 11 %1/9 - 21579 byte - 419 - 2022-08-02 15:59:26 (UTC) + 21601 byte + 421 + 2022-08-03 15:54:29 (UTC) src/XKT_INFO.js @@ -450,7 +450,7 @@ 8 %1/12 23697 byte 658 - 2022-08-02 15:59:26 (UTC) + 2022-08-03 15:55:47 (UTC) src/parsers/parseGLTFJSONIntoXKTModel.js diff --git a/package.json b/package.json index a8d04f6..6ea7f53 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@xeokit/xeokit-convert", - "version": "1.1.0-alpha-10", + "version": "1.1.0", "description": "JavaScript utilities to create .XKT files", "main": "index.js", "bin": "/convert2xkt.js", @@ -59,7 +59,7 @@ "@rollup/plugin-alias": "^3.1.9", "@rollup/plugin-commonjs": "^21.1.0", "@rollup/plugin-node-resolve": "^13.2.1", - "@xeokit/xeokit-sdk": "^2.3.0-beta-33", + "@xeokit/xeokit-sdk": "^2.3.0", "babel-loader": "^8.2.5", "copy-webpack-plugin": "^11.0.0", "esdoc": "^1.1.0",