@babylonjs/loaders 9.26.0 → 9.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FBX/fbxConstraintBehavior.d.ts +188 -0
- package/FBX/fbxConstraintBehavior.js +532 -0
- package/FBX/fbxConstraintBehavior.js.map +1 -0
- package/FBX/fbxFileLoader.pure.d.ts +175 -6
- package/FBX/fbxFileLoader.pure.js +1521 -286
- package/FBX/fbxFileLoader.pure.js.map +1 -1
- package/FBX/index.d.ts +4 -1
- package/FBX/index.js +1 -0
- package/FBX/index.js.map +1 -1
- package/FBX/interpreter/animation.d.ts +73 -33
- package/FBX/interpreter/animation.js +620 -223
- package/FBX/interpreter/animation.js.map +1 -1
- package/FBX/interpreter/animationCurve.d.ts +91 -0
- package/FBX/interpreter/animationCurve.js +623 -0
- package/FBX/interpreter/animationCurve.js.map +1 -0
- package/FBX/interpreter/blendShapes.js +9 -18
- package/FBX/interpreter/blendShapes.js.map +1 -1
- package/FBX/interpreter/connections.d.ts +1 -1
- package/FBX/interpreter/connections.js +173 -34
- package/FBX/interpreter/connections.js.map +1 -1
- package/FBX/interpreter/constraints.d.ts +68 -0
- package/FBX/interpreter/constraints.js +143 -0
- package/FBX/interpreter/constraints.js.map +1 -0
- package/FBX/interpreter/fbxInterpreter.d.ts +89 -4
- package/FBX/interpreter/fbxInterpreter.js +474 -122
- package/FBX/interpreter/fbxInterpreter.js.map +1 -1
- package/FBX/interpreter/geometry.d.ts +1 -1
- package/FBX/interpreter/geometry.js +150 -92
- package/FBX/interpreter/geometry.js.map +1 -1
- package/FBX/interpreter/legacyDocument.d.ts +11 -0
- package/FBX/interpreter/legacyDocument.js +425 -0
- package/FBX/interpreter/legacyDocument.js.map +1 -0
- package/FBX/interpreter/materialModel.d.ts +71 -0
- package/FBX/interpreter/materialModel.js +622 -0
- package/FBX/interpreter/materialModel.js.map +1 -0
- package/FBX/interpreter/materials.d.ts +13 -1
- package/FBX/interpreter/materials.js +88 -5
- package/FBX/interpreter/materials.js.map +1 -1
- package/FBX/interpreter/nodeTransform.d.ts +32 -0
- package/FBX/interpreter/nodeTransform.js +54 -0
- package/FBX/interpreter/nodeTransform.js.map +1 -0
- package/FBX/interpreter/nurbs.d.ts +99 -0
- package/FBX/interpreter/nurbs.js +627 -0
- package/FBX/interpreter/nurbs.js.map +1 -0
- package/FBX/interpreter/propertyTemplates.d.ts +23 -0
- package/FBX/interpreter/propertyTemplates.js +109 -2
- package/FBX/interpreter/propertyTemplates.js.map +1 -1
- package/FBX/interpreter/rig.js +16 -0
- package/FBX/interpreter/rig.js.map +1 -1
- package/FBX/interpreter/sceneDiagnostics.js +28 -3
- package/FBX/interpreter/sceneDiagnostics.js.map +1 -1
- package/FBX/interpreter/skeleton.d.ts +4 -18
- package/FBX/interpreter/skeleton.js +16 -94
- package/FBX/interpreter/skeleton.js.map +1 -1
- package/FBX/parsers/fbxAsciiParser.js +119 -9
- package/FBX/parsers/fbxAsciiParser.js.map +1 -1
- package/FBX/parsers/fbxBinaryParser.js +74 -22
- package/FBX/parsers/fbxBinaryParser.js.map +1 -1
- package/FBX/pure.d.ts +1 -0
- package/FBX/pure.js +1 -0
- package/FBX/pure.js.map +1 -1
- package/FBX/types/fbxTypes.d.ts +18 -2
- package/FBX/types/fbxTypes.js +40 -12
- package/FBX/types/fbxTypes.js.map +1 -1
- package/USD/usdCommandProtocol.d.ts +20 -4
- package/USD/usdCommandProtocol.js +25 -3
- package/USD/usdCommandProtocol.js.map +1 -1
- package/USD/usdFileLoader.pure.js +2 -0
- package/USD/usdFileLoader.pure.js.map +1 -1
- package/USD/usdSceneMaterializer.js +430 -92
- package/USD/usdSceneMaterializer.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usdSceneMaterializer.js","sourceRoot":"","sources":["../../../../dev/loaders/src/USD/usdSceneMaterializer.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAIzD,OAAO,EAQH,cAAc,EACd,aAAa,EAEb,YAAY,GACf,MAAM,sBAAsB,CAAC;AAmB9B,MAAM,oBAAqB,SAAQ,sBAAsB;IAC9C,OAAO;QACV,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,cAAc,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QACD,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,aAAa,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QACD,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,aAAa,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;CACJ;AAOD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AAEvD,SAAS,WAAW,CAAC,IAAiB,EAAE,MAAc,EAAE,KAAa,EAAE,eAAuB,EAAE,KAAa;IACzG,IACI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QACzB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,MAAM,GAAG,CAAC;QACV,KAAK,GAAG,CAAC;QACT,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC;QAC3C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,eAAe,CAAC,EAClE,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,wCAAwC,CAAC,CAAC;IAC9E,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,IAAiB,EAAE,MAAc,EAAE,MAAc;IAC/D,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAiB,EAAE,MAAc;IAC/C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,UAAU,CACpB,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,EAAE,CAAC,EACV,MAAM,CAAC,EAAE,CAAC,EACV,MAAM,CAAC,EAAE,CAAC,EACV,MAAM,CAAC,EAAE,CAAC,EACV,MAAM,CAAC,EAAE,CAAC,EACV,MAAM,CAAC,EAAE,CAAC,CACb,CAAC;AACN,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,QAAQ,KAAK,EAAE,CAAC;QACZ,KAAK,CAAC;YACF,OAAO,YAAY,CAAC;QACxB,KAAK,CAAC;YACF,OAAO,WAAW,CAAC;QACvB,KAAK,CAAC;YACF,OAAO,YAAY,CAAC;QACxB;YACI,OAAO,WAAW,CAAC;IAC3B,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,QAAQ,KAAK,EAAE,CAAC;QACZ,KAAK,CAAC;YACF,OAAO,OAAO,CAAC,iBAAiB,CAAC;QACrC,KAAK,CAAC;YACF,OAAO,OAAO,CAAC,gBAAgB,CAAC;QACpC,KAAK,CAAC;YACF,OAAO,OAAO,CAAC,kBAAkB,CAAC;QACtC;YACI,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,GAAG,CAAC,CAAC;IAC/D,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,KAAY,EACZ,aAA0B,EAC1B,UAAuB,EACvB,UAAmB,EACnB,MAAoB;IAEpB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC/C,MAAM,cAAc,GAAqD,EAAE,CAAC;IAC5E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IACjD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,GAAG,EAA8B,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;IACvC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC1D,MAAM,YAAY,GAAoB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,MAAM,cAAc,GAAG,SAAS,YAAY,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACnF,IAAI,IAA+B,CAAC;IACpC,IAAI,kBAAkB,GAAG,EAAE,CAAC;IAE5B,MAAM,UAAU,GAAG,CAAyD,MAAW,EAAE,KAAQ,EAAQ,EAAE;QACvG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,cAAc,EAAE,CAAC;YACjB,KAAK,CAAC,gBAAgB,GAAG,cAAc,CAAC;QAC5C,CAAC;IACL,CAAC,CAAC;IACF,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAE,KAAa,EAAQ,EAAE;QAC7D,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,+BAAuB,CAAC,CAAC;QAC5D,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,oBAAoB,KAAK,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC7J,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,EAAU,EAAE,WAAoB,EAAsB,EAAE;QAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YACzD,OAAO,QAAQ,IAAI,IAAI,CAAC;QAC5B,CAAC;QACD,IAAI,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,iBAAiB,CAAC,CAAC;YAC5D,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACzC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;YAChC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAChC,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC,CAAC;IAEF,IAAI,CAAC;QACD,MAAM,6BAA6B,GAAG,KAAK,CAAC,sBAAsB,CAAC;QACnE,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACxC,CAAC;QACD,IAAI,CAAC;YACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC/F,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;oBACrB,0BAAkB,CAAC,CAAC,CAAC;wBACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBAChC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACpC,kBAAkB,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;wBACzC,IAAI,GAAG,IAAI,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;wBAC5C,UAAU,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;wBAC3C,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC/B,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;wBAC5G,IAAI,CAAC,OAAO,CAAC,QAAQ,CACjB,KAAK,CAAC,oBAAoB;4BACtB,CAAC,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC;4BAC1D,CAAC,CAAC,GAAG;gCACH,CAAC,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;gCAC3D,CAAC,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,CACpE,CAAC;wBACF,MAAM;oBACV,CAAC;oBACD,4BAAoB,CAAC,CAAC,CAAC;wBACnB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACzB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;wBACrC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAClC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAClC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACvC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACtC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC5B,WAAW,CAAC,UAAU,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC;wBACpE,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;wBACtE,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;wBACnE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;wBACnE,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;wBACnE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACrB,IAAI,WAAwB,CAAC;wBAC7B,IAAI,UAAmC,CAAC;wBACxC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;4BACjD,WAAW,GAAG,OAAO,CAAC;4BACtB,UAAU,GAAG,MAAM,CAAC;wBACxB,CAAC,CAAC,CAAC;wBACH,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,sBAAsB,EAAE,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;4BACtH,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;4BACzB,UAAU,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,2BAA2B,GAAG,IAAI,CAAC,CAAC,CAAC;wBAClH,CAAC,CAAC,CAAC;wBACH,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBACxC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;wBACpE,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;wBAC5D,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;wBAC5C,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;wBAC9B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;wBAC9B,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC;wBAC5B,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC;wBAC5B,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;wBACvE,OAAO,CAAC,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;wBAC3E,OAAO,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBAC7B,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAChC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;wBAC1B,MAAM;oBACV,CAAC;oBACD,6BAAqB,CAAC,CAAC,CAAC;wBACpB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACzB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAChC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAClC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAClC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAClC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACrC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACpC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACtC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACrC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACvC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACtC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACvC,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;wBACjE,WAAW,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,yBAAyB,CAAC,CAAC;wBACzE,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;wBACzD,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;wBACjE,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;wBACtF,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;wBAC1C,QAAQ,CAAC,EAAE,GAAG,gBAAgB,EAAE,EAAE,CAAC;wBACnC,QAAQ,CAAC,WAAW,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7D,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;wBACzB,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;wBAC7B,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;wBAC/B,QAAQ,CAAC,aAAa,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,oCAA4B,CAAC,CAAC;wBAC/D,QAAQ,CAAC,eAAe,GAAG,CAAC,WAAW,CAAC;wBACxC,QAAQ,CAAC,gBAAgB,GAAG,WAAW,CAAC;wBACxC,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,8BAAsB,CAAC,CAAC;wBACtD,IAAI,KAAK,mCAA2B,EAAE,CAAC;4BACnC,QAAQ,CAAC,gBAAgB,GAAG,CAAC,CAAC;wBAClC,CAAC;wBACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;4BAClB,QAAQ,CAAC,gBAAgB,GAAG,CAAC,CAAC;4BAC9B,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;wBACvC,CAAC;wBACD,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;4BACjC,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;4BAC3D,IAAI,QAAQ,CAAC,aAAa,IAAI,cAAc,KAAK,cAAc,IAAI,KAAK,mCAA2B,EAAE,CAAC;gCAClG,QAAQ,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;gCACvC,QAAQ,CAAC,yBAAyB,GAAG,IAAI,CAAC;4BAC9C,CAAC;wBACL,CAAC;wBACD,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;4BACpC,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;4BAC/D,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;gCAC1B,QAAQ,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC;gCAC3C,QAAQ,CAAC,cAAc,CAAC,eAAe,GAAG,cAAc,KAAK,CAAC,CAAC;4BACnE,CAAC;wBACL,CAAC;wBACD,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;4BACnC,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;4BAC3D,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gCACvB,QAAQ,CAAC,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC;gCACxC,QAAQ,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC;4BAC7C,CAAC;wBACL,CAAC;wBACD,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;4BAChC,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;4BAC5D,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;gCAC3B,QAAQ,CAAC,eAAe,CAAC,UAAU,GAAG,KAAK,CAAC;gCAC5C,QAAQ,CAAC,oCAAoC,GAAG,gBAAgB,KAAK,CAAC,CAAC;gCACvE,QAAQ,CAAC,oCAAoC,GAAG,gBAAgB,KAAK,CAAC,CAAC;gCACvE,QAAQ,CAAC,oCAAoC,GAAG,eAAe,KAAK,CAAC,CAAC;gCACtE,QAAQ,CAAC,yCAAyC,GAAG,gBAAgB,KAAK,CAAC,CAAC;4BAChF,CAAC;wBACL,CAAC;wBACD,IAAI,eAAe,KAAK,cAAc,EAAE,CAAC;4BACrC,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC;wBACrE,CAAC;wBACD,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;wBAC5B,MAAM;oBACV,CAAC;oBACD,kCAA0B,CAAC,CAAC,CAAC;wBACzB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACnC,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;wBACpF,UAAU,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;wBAC3C,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;wBAC/D,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE;4BAC9C,YAAY,EAAE,IAAI;4BAClB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE;4BAChC,GAAG,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;yBAC9D,CAAC,CAAC;wBACH,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;wBACpB,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;4BAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC;wBAC/B,CAAC;6BAAM,CAAC;4BACJ,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;wBAC5C,CAAC;wBACD,MAAM;oBACV,CAAC;oBACD,6BAAqB,CAAC,CAAC,CAAC;wBACpB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACzB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACnC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;wBACzG,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;wBAC1C,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;wBAC3C,WAAW,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;wBAC5E,MAAM,OAAO,GAAW,EAAE,CAAC;wBAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC;4BAC9C,MAAM,MAAM,GAAG,YAAY,GAAG,KAAK,GAAG,EAAE,CAAC;4BACzC,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;4BACtD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;4BACrD,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;4BAC9D,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;4BAC/D,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;4BAC5D,IAAI,WAAW,KAAK,cAAc,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;gCACzD,MAAM,IAAI,KAAK,CAAC,YAAY,EAAE,qCAAqC,CAAC,CAAC;4BACzE,CAAC;4BACD,MAAM,IAAI,GAAG,IAAI,IAAI,CACjB,QAAQ,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,CAAC,EACtD,QAAQ,EACR,WAAW,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAC5D,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,EAClC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,EAClC,SAAS,EACT,KAAK,CACR,CAAC;4BACF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACnB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;wBAC5B,CAAC;wBACD,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;wBAC5B,MAAM;oBACV,CAAC;oBACD,6BAAqB,CAAC,CAAC,CAAC;wBACpB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACzB,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE;4BACf,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;4BAC1B,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE;4BACzB,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE;4BACpB,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE;4BACxB,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;4BACtB,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE;4BACvB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;4BAClB,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE;4BACrB,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;4BACtB,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE;4BACvB,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;4BACtB,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE;4BACvB,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;4BACtB,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE;yBAC5B,CAAC,CAAC;wBACH,MAAM;oBACV,CAAC;oBACD,yBAAiB,CAAC,CAAC,CAAC;wBAChB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACzB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACtC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACnC,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;4BACd,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,gCAAgC,UAAU,GAAG,CAAC,CAAC;wBAC7E,CAAC;wBACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;wBAC3E,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;wBACnC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAClC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC;wBAChD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;wBACpC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;wBAC1F,UAAU,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;wBACtG,IAAI,UAAU,CAAC,KAAK,gCAAwB,EAAE,CAAC;4BAC3C,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;4BACtF,UAAU,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;wBACtG,CAAC;wBACD,IAAI,UAAU,CAAC,KAAK,iCAAyB,EAAE,CAAC;4BAC5C,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;4BACxF,UAAU,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;wBACxG,CAAC;wBACD,IAAI,UAAU,CAAC,KAAK,4BAAoB,EAAE,CAAC;4BACvC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;4BAC9F,UAAU,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;wBAC9F,CAAC;wBACD,IAAI,UAAU,CAAC,KAAK,+BAAuB,EAAE,CAAC;4BAC1C,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;4BAC3F,UAAU,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;wBACpG,CAAC;wBACD,IAAI,UAAU,CAAC,KAAK,+BAAsB,EAAE,CAAC;4BACzC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;4BAC5F,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;4BAC7F,UAAU,CAAC,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;4BAC5H,UAAU,CAAC,eAAe,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;wBAC/G,CAAC;wBACD,IAAI,UAAU,CAAC,KAAK,+BAAsB,EAAE,CAAC;4BACzC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;4BAClG,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;4BACnG,UAAU,CAAC,oBAAoB,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;4BACjI,UAAU,CAAC,oBAAoB,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;wBACpH,CAAC;wBACD,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;wBACjF,UAAU,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;wBAC5F,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBACnC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;4BAChB,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACpD,CAAC;wBACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;wBAC7D,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;4BAChC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;wBACtD,CAAC;wBAED,MAAM,WAAW,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;wBAC7C,WAAW,CAAC,UAAU,EAAE,eAAe,EAAE,YAAY,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;wBAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,gCAAwB,CAAC,CAAC;wBAC3D,IAAI,YAAY,KAAK,CAAC,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;4BACtD,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;wBAC7D,CAAC;6BAAM,CAAC;4BACJ,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,IAAI,YAAY,EAAE,KAAK,CAAC,CAAC;4BACjE,UAAU,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;4BAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC;gCAChD,MAAM,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,CAAC;gCAC5C,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;4BAC/F,CAAC;4BACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;wBAC1B,CAAC;wBACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC;4BAChD,MAAM,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,CAAC;4BAC5C,IAAI,OAAO,CACP,KAAK,EACL,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,EACxC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,EACxC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,EACvC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,EACvC,IAAI,CACP,CAAC;wBACN,CAAC;wBACD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;wBACrB,MAAM;oBACV,CAAC;oBACD,uCAA8B,CAAC,CAAC,CAAC;wBAC7B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACzB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;wBAC1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;4BACtD,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,iCAAiC,CAAC,CAAC;wBAC/E,CAAC;wBACD,IAAI,CAAC,IAAI,2CAAmC,IAAI,IAAI,uCAA+B,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;4BAChI,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,CAAC;wBACvE,CAAC;wBACD,IAAI,IAAI,uCAA+B,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC;4BACrH,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,4BAA4B,CAAC,CAAC;wBAC1E,CAAC;wBACD,IAAI,IAAU,CAAC;wBACf,QAAQ,IAAI,EAAE,CAAC;4BACX;gCACI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;gCACtD,MAAM;4BACV;gCACI,IAAI,GAAG,YAAY,CACf,IAAI,EACJ;oCACI,QAAQ,EAAE,YAAY,GAAG,CAAC;oCAC1B,QAAQ,EAAE,YAAY;iCACzB,EACD,KAAK,CACR,CAAC;gCACF,MAAM;4BACV,4CAAoC;4BACpC;gCACI,IAAI,GAAG,cAAc,CACjB,IAAI,EACJ;oCACI,MAAM;oCACN,WAAW,EAAE,IAAI,uCAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC;oCACvE,cAAc,EAAE,YAAY,GAAG,CAAC;oCAChC,YAAY;iCACf,EACD,KAAK,CACR,CAAC;gCACF,MAAM;4BACV;gCACI,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,GAAG,CAAC,CAAC;wBACxE,CAAC;wBACD,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;wBACnC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;4BAChB,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACpD,CAAC;wBAED,0EAA0E;wBAC1E,kEAAkE;wBAClE,IAAI,CAAC,CAAC,KAAK,+BAAuB,CAAC,EAAE,CAAC;4BAClC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;4BACxC,IAAI,CAAC,aAAa,EAAE,CAAC;gCACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,4BAA4B,CAAC,CAAC;4BAC1E,CAAC;4BACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;4BAC3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gCACtD,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;4BACpF,CAAC;4BACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBAC9B,CAAC;wBACD,IAAI,IAAI,4BAAoB,EAAE,CAAC;4BAC3B,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBAC1F,CAAC;6BAAM,IAAI,IAAI,4BAAoB,EAAE,CAAC;4BAClC,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBACzF,CAAC;6BAAM,IAAI,IAAI,4BAAoB,EAAE,CAAC;4BAClC,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,GAAG,CAAC,CAAC;wBACpE,CAAC;wBACD,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAClC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC;wBAChD,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,gCAAwB,CAAC,CAAC,CAAC;wBACpF,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;wBACrB,MAAM;oBACV,CAAC;oBACD,6BAAqB,CAAC,CAAC,CAAC;wBACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACpC,IAAI,CAAC,MAAM,EAAE,CAAC;4BACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,GAAG,CAAC,CAAC;wBACrE,CAAC;wBACD,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;wBACrF,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;wBACvC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC;wBACpD,MAAM;oBACV,CAAC;oBACD,8BAAsB,CAAC,CAAC,CAAC;wBACrB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAClC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBACnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC7B,IAAI,UAAU,iCAAyB,IAAI,UAAU,iCAAyB,EAAE,CAAC;4BAC7E,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,GAAG,CAAC,CAAC;wBACpE,CAAC;wBACD,MAAM,cAAc,GAChB,QAAQ,uCAA+B,IAAI,QAAQ,sCAA8B;4BAC7E,CAAC,CAAC,CAAC;4BACH,CAAC,CAAC,QAAQ,iDAAyC;gCACjD,CAAC,CAAC,CAAC;gCACH,CAAC,CAAC,QAAQ,qCAA6B;oCACrC,CAAC,CAAC,EAAE;oCACJ,CAAC,CAAC,CAAC,CAAC;wBAChB,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;4BAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,iBAAiB,QAAQ,GAAG,CAAC,CAAC;wBAC1F,CAAC;wBACD,MAAM,MAAM,GAAG,UAAU,iCAAyB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC/F,IAAI,CAAC,MAAM,EAAE,CAAC;4BACV,MAAM;wBACV,CAAC;wBACD,MAAM,YAAY,GACd,QAAQ,uCAA+B;4BACnC,CAAC,CAAC,UAAU;4BACZ,CAAC,CAAC,QAAQ,iDAAyC;gCACjD,CAAC,CAAC,oBAAoB;gCACtB,CAAC,CAAC,QAAQ,sCAA8B;oCACtC,CAAC,CAAC,SAAS;oCACX,CAAC,CAAC,UAAU,iCAAyB;wCACnC,CAAC,CAAC,oBAAoB;wCACtB,CAAC,CAAC,SAAS,CAAC;wBAC1B,MAAM,QAAQ,GACV,QAAQ,iDAAyC;4BAC7C,CAAC,CAAC,SAAS,CAAC,wBAAwB;4BACpC,CAAC,CAAC,QAAQ,qCAA6B;gCACrC,CAAC,CAAC,SAAS,CAAC,oBAAoB;gCAChC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC;wBAC5C,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,YAAY,EAAE,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,CAAC,uBAAuB,CAAC,CAAC;wBACtI,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;wBACrE,WAAW,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,GAAG,MAAM,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;wBAChF,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;wBAClE,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC;wBAC7E,SAAS,CAAC,OAAO,CACb,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;4BAC5C,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;4BACnB,KAAK,EACD,QAAQ,KAAK,SAAS,CAAC,wBAAwB;gCAC3C,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;gCAC9C,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,oBAAoB;oCAC3C,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;oCAC1C,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;yBACxD,CAAC,CAAC,CACN,CAAC;wBACF,IAAI,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;4BACT,KAAK,GAAG,IAAI,cAAc,CAAC,iBAAiB,UAAU,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;4BACrE,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;4BACvC,UAAU,CAAC,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;wBACjD,CAAC;wBACD,KAAK,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;wBAC9C,MAAM;oBACV,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,KAAK,CAAC,sBAAsB,GAAG,6BAA6B,CAAC;YACjE,CAAC;QACL,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,OAAiC,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;gBACpD,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBACvH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO,EAAE,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC,CAAC,CAAC;YACH,IAAI,CAAC;gBACD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,CAAC,cAAc,EAAE,CAAC;YAC5B,CAAC;oBAAS,CAAC;gBACP,IAAI,OAAO,EAAE,CAAC;oBACV,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACjD,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,cAAc,CAAC;QACzB,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,cAAc,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC;QACtD,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,+EAA+E;QAC/E,gEAAgE;QAChE,KAAK,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACtC,SAAS,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC5B,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { Animation } from \"core/Animations/animation.pure\";\nimport { AnimationGroup } from \"core/Animations/animationGroup.pure\";\nimport { AbstractAssetContainer, AssetContainer } from \"core/assetContainer\";\nimport { Bone } from \"core/Bones/bone\";\nimport { Skeleton } from \"core/Bones/skeleton\";\nimport { Color3 } from \"core/Maths/math.color.pure\";\nimport { Matrix, Quaternion, Vector3 } from \"core/Maths/math.vector.pure\";\nimport { Material } from \"core/Materials/material.pure\";\nimport { MultiMaterial } from \"core/Materials/multiMaterial.pure\";\nimport { PBRMaterial } from \"core/Materials/PBR/pbrMaterial.pure\";\nimport { Texture } from \"core/Materials/Textures/texture.pure\";\nimport { CreateBox } from \"core/Meshes/Builders/boxBuilder.pure\";\nimport { CreateCylinder } from \"core/Meshes/Builders/cylinderBuilder.pure\";\nimport { CreateSphere } from \"core/Meshes/Builders/sphereBuilder.pure\";\nimport { Mesh } from \"core/Meshes/mesh.pure\";\nimport { SubMesh } from \"core/Meshes/subMesh\";\nimport { TransformNode } from \"core/Meshes/transformNode.pure\";\nimport { VertexData } from \"core/Meshes/mesh.vertexData\";\nimport { type Scene } from \"core/scene.pure\";\nimport { type IAssetContainer } from \"core/IAssetContainer\";\n\nimport {\n AnalyticPrimitiveType,\n AnimationProperty,\n AnimationTarget,\n Command,\n GeometryFlags,\n MaterialFlags,\n MeshFlags,\n MISSING_OFFSET,\n PayloadReader,\n PrimitiveAxis,\n readCommands,\n} from \"./usdCommandProtocol\";\n\ninterface GeometryDescriptor {\n vertexCount: number;\n indexCount: number;\n flags: number;\n positions: number;\n normals: number;\n tangents: number;\n uv0: number;\n colors: number;\n joints0: number;\n weights0: number;\n joints1: number;\n weights1: number;\n indices: number;\n influences: number;\n}\n\nclass DirectAssetContainer extends AbstractAssetContainer {\n public dispose(): void {\n for (const animationGroup of this.animationGroups.splice(0)) {\n animationGroup.dispose();\n }\n for (const mesh of this.meshes.splice(0)) {\n mesh.dispose();\n }\n for (const skeleton of this.skeletons.splice(0)) {\n skeleton.dispose();\n }\n for (const multiMaterial of this.multiMaterials.splice(0)) {\n multiMaterial.dispose();\n }\n for (const material of this.materials.splice(0)) {\n material.dispose();\n }\n for (const geometry of this.geometries.splice(0)) {\n geometry.dispose();\n }\n for (const transformNode of this.transformNodes.splice(0)) {\n transformNode.dispose();\n }\n for (const texture of this.textures.splice(0)) {\n texture.dispose();\n }\n this.rootNodes.length = 0;\n }\n}\n\nexport interface MaterializationResult {\n container: AbstractAssetContainer & { dispose(): void };\n materializeMs: number;\n}\n\nconst decoder = new TextDecoder();\nconst NODE_MATRIX_PROPERTY = \"__babylonUsdLocalMatrix\";\n\nfunction assertRange(data: ArrayBuffer, offset: number, count: number, bytesPerElement: number, label: string): void {\n if (\n !Number.isInteger(offset) ||\n !Number.isInteger(count) ||\n offset < 0 ||\n count < 0 ||\n offset % Math.min(bytesPerElement, 4) !== 0 ||\n count > Math.floor((data.byteLength - offset) / bytesPerElement)\n ) {\n throw new Error(`Invalid ${label} range in OpenUSD Babylon data buffer.`);\n }\n}\n\nfunction stringAt(data: ArrayBuffer, offset: number, length: number): string {\n assertRange(data, offset, length, 1, \"string\");\n return decoder.decode(new Uint8Array(data, offset, length));\n}\n\nfunction matrixAt(data: ArrayBuffer, offset: number): Matrix {\n assertRange(data, offset, 16, 4, \"matrix\");\n const values = new Float32Array(data, offset, 16);\n return Matrix.FromValues(\n values[0],\n values[1],\n values[2],\n values[3],\n values[4],\n values[5],\n values[6],\n values[7],\n values[8],\n values[9],\n values[10],\n values[11],\n values[12],\n values[13],\n values[14],\n values[15]\n );\n}\n\nfunction mimeType(value: number): string {\n switch (value) {\n case 2:\n return \"image/jpeg\";\n case 3:\n return \"image/bmp\";\n case 4:\n return \"image/webp\";\n default:\n return \"image/png\";\n }\n}\n\nfunction wrapMode(value: number): number {\n switch (value) {\n case 0:\n return Texture.CLAMP_ADDRESSMODE;\n case 1:\n return Texture.WRAP_ADDRESSMODE;\n case 2:\n return Texture.MIRROR_ADDRESSMODE;\n default:\n throw new Error(`Invalid texture wrap mode ${value}.`);\n }\n}\n\nexport async function materializeCommandBuffers(\n scene: Scene,\n commandBuffer: ArrayBuffer,\n dataBuffer: ArrayBuffer,\n addToScene: boolean,\n signal?: AbortSignal\n): Promise<MaterializationResult> {\n signal?.throwIfAborted();\n const started = performance.now();\n const commands = readCommands(commandBuffer);\n const container = addToScene ? new DirectAssetContainer() : new AssetContainer(scene);\n const nodes = new Map<number, TransformNode>();\n const pendingParents: Array<{ node: TransformNode; parentId: number }> = [];\n const textures = new Map<number, Texture>();\n const materials = new Map<number, PBRMaterial>();\n const doubleSidedMaterials = new Map<number, PBRMaterial>();\n const skeletons = new Map<number, Skeleton>();\n const bones = new Map<number, Bone>();\n const geometries = new Map<number, GeometryDescriptor>();\n const meshes = new Map<number, Mesh>();\n const animationGroups = new Map<number, AnimationGroup>();\n const textureLoads: Promise<void>[] = [];\n const textureUrls = new Set<string>();\n const assetContainer = container instanceof AssetContainer ? container : undefined;\n let root: TransformNode | undefined;\n let timeCodesPerSecond = 24;\n\n const trackAsset = <T extends { _parentContainer: IAssetContainer | null }>(assets: T[], asset: T): void => {\n assets.push(asset);\n if (assetContainer) {\n asset._parentContainer = assetContainer;\n }\n };\n const applyMeshOrientation = (mesh: Mesh, flags: number): void => {\n const sourceIsRightHanded = !(flags & MeshFlags.LeftHanded);\n mesh.sideOrientation = scene.useRightHandedSystem === sourceIsRightHanded ? Material.CounterClockWiseSideOrientation : Material.ClockWiseSideOrientation;\n };\n const materialForMesh = (id: number, doubleSided: boolean): PBRMaterial | null => {\n const material = materials.get(id);\n if (!material || !doubleSided || !material.backFaceCulling) {\n return material ?? null;\n }\n let variant = doubleSidedMaterials.get(id);\n if (!variant) {\n variant = material.clone(`${material.name} (double-sided)`);\n trackAsset(container.materials, variant);\n variant.backFaceCulling = false;\n variant.twoSidedLighting = true;\n doubleSidedMaterials.set(id, variant);\n }\n return variant;\n };\n\n try {\n const previousBlockEntityCollection = scene._blockEntityCollection;\n if (!addToScene) {\n scene._blockEntityCollection = true;\n }\n try {\n for (const command of commands) {\n const payload = new PayloadReader(commandBuffer, command.payloadOffset, command.payloadLength);\n switch (command.opcode) {\n case Command.Scene: {\n const zUp = payload.u32() === 1;\n const metersPerUnit = payload.f32();\n timeCodesPerSecond = payload.f32() || 24;\n root = new TransformNode(\"USD Root\", scene);\n trackAsset(container.transformNodes, root);\n container.rootNodes.push(root);\n root.rotationQuaternion = zUp ? Quaternion.FromArray([-0.7071068, 0, 0, 0.7071068]) : Quaternion.Identity();\n root.scaling.copyFrom(\n scene.useRightHandedSystem\n ? new Vector3(metersPerUnit, metersPerUnit, metersPerUnit)\n : zUp\n ? new Vector3(metersPerUnit, -metersPerUnit, metersPerUnit)\n : new Vector3(metersPerUnit, metersPerUnit, -metersPerUnit)\n );\n break;\n }\n case Command.Texture: {\n const id = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const mime = mimeType(payload.u32());\n const imageOffset = payload.u32();\n const imageLength = payload.u32();\n const coordinatesIndex = payload.u32();\n const transformOffset = payload.u32();\n const wrapU = payload.u32();\n const wrapV = payload.u32();\n assertRange(dataBuffer, transformOffset, 5, 4, \"texture transform\");\n assertRange(dataBuffer, imageOffset, imageLength, 1, \"texture image\");\n const transform = new Float32Array(dataBuffer, transformOffset, 5);\n const bytes = new Uint8Array(dataBuffer, imageOffset, imageLength);\n const url = URL.createObjectURL(new Blob([bytes], { type: mime }));\n textureUrls.add(url);\n let resolveLoad!: () => void;\n let rejectLoad!: (error: Error) => void;\n const loaded = new Promise<void>((resolve, reject) => {\n resolveLoad = resolve;\n rejectLoad = reject;\n });\n textureLoads.push(loaded);\n const texture = new Texture(url, scene, false, false, Texture.TRILINEAR_SAMPLINGMODE, resolveLoad, (message, exception) => {\n URL.revokeObjectURL(url);\n rejectLoad(exception instanceof Error ? exception : new Error(message || `Could not load texture '${url}'.`));\n });\n trackAsset(container.textures, texture);\n texture.onDisposeObservable.addOnce(() => URL.revokeObjectURL(url));\n texture.name = stringAt(dataBuffer, nameOffset, nameLength);\n texture.coordinatesIndex = coordinatesIndex;\n texture.uScale = transform[0];\n texture.vScale = transform[1];\n texture.uRotationCenter = 0;\n texture.vRotationCenter = 0;\n texture.uOffset = transform[2] - transform[1] * Math.sin(transform[4]);\n texture.vOffset = 1 - transform[1] * Math.cos(transform[4]) - transform[3];\n texture.wAng = -transform[4];\n texture.wrapU = wrapMode(wrapU);\n texture.wrapV = wrapMode(wrapV);\n textures.set(id, texture);\n break;\n }\n case Command.Material: {\n const id = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const baseOffset = payload.u32();\n const emissiveOffset = payload.u32();\n const metallic = payload.f32();\n const roughness = payload.f32();\n const normalScale = payload.f32();\n const alphaCutoff = payload.f32();\n const flags = payload.u32();\n const baseTexture = payload.u32();\n const opacityTexture = payload.u32();\n const normalTexture = payload.u32();\n const ormTexture = payload.u32();\n const emissiveTexture = payload.u32();\n const opacityChannel = payload.u32();\n const roughnessChannel = payload.u32();\n const metallicChannel = payload.u32();\n const occlusionChannel = payload.u32();\n assertRange(dataBuffer, baseOffset, 4, 4, \"material base color\");\n assertRange(dataBuffer, emissiveOffset, 3, 4, \"material emissive color\");\n const base = new Float32Array(dataBuffer, baseOffset, 4);\n const emissive = new Float32Array(dataBuffer, emissiveOffset, 3);\n const material = new PBRMaterial(stringAt(dataBuffer, nameOffset, nameLength), scene);\n trackAsset(container.materials, material);\n material.id = `usd-material-${id}`;\n material.albedoColor = new Color3(base[0], base[1], base[2]);\n material.alpha = base[3];\n material.metallic = metallic;\n material.roughness = roughness;\n material.emissiveColor = new Color3(emissive[0], emissive[1], emissive[2]);\n const doubleSided = Boolean(flags & MaterialFlags.DoubleSided);\n material.backFaceCulling = !doubleSided;\n material.twoSidedLighting = doubleSided;\n material.unlit = Boolean(flags & MaterialFlags.Unlit);\n if (flags & MaterialFlags.AlphaBlend) {\n material.transparencyMode = 2;\n }\n if (alphaCutoff > 0) {\n material.transparencyMode = 1;\n material.alphaCutOff = alphaCutoff;\n }\n if (baseTexture !== MISSING_OFFSET) {\n material.albedoTexture = textures.get(baseTexture) ?? null;\n if (material.albedoTexture && opacityTexture === MISSING_OFFSET && flags & MaterialFlags.AlphaBlend) {\n material.albedoTexture.hasAlpha = true;\n material.useAlphaFromAlbedoTexture = true;\n }\n }\n if (opacityTexture !== MISSING_OFFSET) {\n material.opacityTexture = textures.get(opacityTexture) ?? null;\n if (material.opacityTexture) {\n material.opacityTexture.gammaSpace = false;\n material.opacityTexture.getAlphaFromRGB = opacityChannel !== 3;\n }\n }\n if (normalTexture !== MISSING_OFFSET) {\n material.bumpTexture = textures.get(normalTexture) ?? null;\n if (material.bumpTexture) {\n material.bumpTexture.gammaSpace = false;\n material.bumpTexture.level = normalScale;\n }\n }\n if (ormTexture !== MISSING_OFFSET) {\n material.metallicTexture = textures.get(ormTexture) ?? null;\n if (material.metallicTexture) {\n material.metallicTexture.gammaSpace = false;\n material.useRoughnessFromMetallicTextureAlpha = roughnessChannel === 3;\n material.useRoughnessFromMetallicTextureGreen = roughnessChannel === 1;\n material.useMetallnessFromMetallicTextureBlue = metallicChannel === 2;\n material.useAmbientOcclusionFromMetallicTextureRed = occlusionChannel === 0;\n }\n }\n if (emissiveTexture !== MISSING_OFFSET) {\n material.emissiveTexture = textures.get(emissiveTexture) ?? null;\n }\n materials.set(id, material);\n break;\n }\n case Command.TransformNode: {\n const id = payload.u32();\n const parentId = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const matrixOffset = payload.u32();\n const node = new TransformNode(stringAt(dataBuffer, nameOffset, nameLength), scene);\n trackAsset(container.transformNodes, node);\n node.setPreTransformMatrix(matrixAt(dataBuffer, matrixOffset));\n Object.defineProperty(node, NODE_MATRIX_PROPERTY, {\n configurable: true,\n get: () => node.getPivotMatrix(),\n set: (matrix: Matrix) => node.setPreTransformMatrix(matrix),\n });\n nodes.set(id, node);\n if (parentId === MISSING_OFFSET) {\n node.parent = root ?? null;\n } else {\n pendingParents.push({ node, parentId });\n }\n break;\n }\n case Command.Skeleton: {\n const id = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const jointCount = payload.u32();\n const jointsOffset = payload.u32();\n const skeleton = new Skeleton(stringAt(dataBuffer, nameOffset, nameLength), `usd-skeleton-${id}`, scene);\n trackAsset(container.skeletons, skeleton);\n const jointView = new DataView(dataBuffer);\n assertRange(dataBuffer, jointsOffset, jointCount * 5, 4, \"skeleton joints\");\n const created: Bone[] = [];\n for (let index = 0; index < jointCount; ++index) {\n const offset = jointsOffset + index * 20;\n const parentIndex = jointView.getUint32(offset, true);\n const boneId = jointView.getUint32(offset + 4, true);\n const jointNameOffset = jointView.getUint32(offset + 8, true);\n const jointNameLength = jointView.getUint32(offset + 12, true);\n const matrixOffset = jointView.getUint32(offset + 16, true);\n if (parentIndex !== MISSING_OFFSET && parentIndex >= index) {\n throw new Error(`Skeleton ${id} has an invalid parent joint index.`);\n }\n const bone = new Bone(\n stringAt(dataBuffer, jointNameOffset, jointNameLength),\n skeleton,\n parentIndex === MISSING_OFFSET ? null : created[parentIndex],\n matrixAt(dataBuffer, matrixOffset),\n matrixAt(dataBuffer, matrixOffset),\n undefined,\n index\n );\n created.push(bone);\n bones.set(boneId, bone);\n }\n skeletons.set(id, skeleton);\n break;\n }\n case Command.Geometry: {\n const id = payload.u32();\n geometries.set(id, {\n vertexCount: payload.u32(),\n indexCount: payload.u32(),\n flags: payload.u32(),\n positions: payload.u32(),\n normals: payload.u32(),\n tangents: payload.u32(),\n uv0: payload.u32(),\n colors: payload.u32(),\n joints0: payload.u32(),\n weights0: payload.u32(),\n joints1: payload.u32(),\n weights1: payload.u32(),\n indices: payload.u32(),\n influences: payload.u32(),\n });\n break;\n }\n case Command.Mesh: {\n const id = payload.u32();\n const nodeId = payload.u32();\n const geometryId = payload.u32();\n const materialId = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const flags = payload.u32();\n const skeletonId = payload.u32();\n const submeshesOffset = payload.u32();\n const submeshCount = payload.u32();\n const descriptor = geometries.get(geometryId);\n if (!descriptor) {\n throw new Error(`Mesh ${id} references missing geometry ${geometryId}.`);\n }\n const mesh = new Mesh(stringAt(dataBuffer, nameOffset, nameLength), scene);\n trackAsset(container.meshes, mesh);\n applyMeshOrientation(mesh, flags);\n mesh.parent = nodes.get(nodeId) ?? root ?? null;\n const vertexData = new VertexData();\n assertRange(dataBuffer, descriptor.positions, descriptor.vertexCount * 3, 4, \"positions\");\n vertexData.positions = new Float32Array(dataBuffer, descriptor.positions, descriptor.vertexCount * 3);\n if (descriptor.flags & GeometryFlags.Normals) {\n assertRange(dataBuffer, descriptor.normals, descriptor.vertexCount * 3, 4, \"normals\");\n vertexData.normals = new Float32Array(dataBuffer, descriptor.normals, descriptor.vertexCount * 3);\n }\n if (descriptor.flags & GeometryFlags.Tangents) {\n assertRange(dataBuffer, descriptor.tangents, descriptor.vertexCount * 4, 4, \"tangents\");\n vertexData.tangents = new Float32Array(dataBuffer, descriptor.tangents, descriptor.vertexCount * 4);\n }\n if (descriptor.flags & GeometryFlags.Uv0) {\n assertRange(dataBuffer, descriptor.uv0, descriptor.vertexCount * 2, 4, \"texture coordinates\");\n vertexData.uvs = new Float32Array(dataBuffer, descriptor.uv0, descriptor.vertexCount * 2);\n }\n if (descriptor.flags & GeometryFlags.Colors) {\n assertRange(dataBuffer, descriptor.colors, descriptor.vertexCount * 4, 4, \"vertex colors\");\n vertexData.colors = new Float32Array(dataBuffer, descriptor.colors, descriptor.vertexCount * 4);\n }\n if (descriptor.flags & GeometryFlags.Skin0) {\n assertRange(dataBuffer, descriptor.joints0, descriptor.vertexCount * 4, 2, \"joint indices\");\n assertRange(dataBuffer, descriptor.weights0, descriptor.vertexCount * 4, 4, \"joint weights\");\n vertexData.matricesIndices = Float32Array.from(new Uint16Array(dataBuffer, descriptor.joints0, descriptor.vertexCount * 4));\n vertexData.matricesWeights = new Float32Array(dataBuffer, descriptor.weights0, descriptor.vertexCount * 4);\n }\n if (descriptor.flags & GeometryFlags.Skin1) {\n assertRange(dataBuffer, descriptor.joints1, descriptor.vertexCount * 4, 2, \"extra joint indices\");\n assertRange(dataBuffer, descriptor.weights1, descriptor.vertexCount * 4, 4, \"extra joint weights\");\n vertexData.matricesIndicesExtra = Float32Array.from(new Uint16Array(dataBuffer, descriptor.joints1, descriptor.vertexCount * 4));\n vertexData.matricesWeightsExtra = new Float32Array(dataBuffer, descriptor.weights1, descriptor.vertexCount * 4);\n }\n assertRange(dataBuffer, descriptor.indices, descriptor.indexCount, 4, \"indices\");\n vertexData.indices = new Uint32Array(dataBuffer, descriptor.indices, descriptor.indexCount);\n vertexData.applyToMesh(mesh, true);\n if (mesh.geometry) {\n trackAsset(container.geometries, mesh.geometry);\n }\n mesh.numBoneInfluencers = Math.min(descriptor.influences, 8);\n if (skeletonId !== MISSING_OFFSET) {\n mesh.skeleton = skeletons.get(skeletonId) ?? null;\n }\n\n const submeshView = new DataView(dataBuffer);\n assertRange(dataBuffer, submeshesOffset, submeshCount * 5, 4, \"submeshes\");\n const doubleSided = Boolean(flags & MeshFlags.DoubleSided);\n if (submeshCount === 1 && materialId !== MISSING_OFFSET) {\n mesh.material = materialForMesh(materialId, doubleSided);\n } else {\n const multi = new MultiMaterial(`${mesh.name} materials`, scene);\n trackAsset(container.multiMaterials, multi);\n for (let index = 0; index < submeshCount; ++index) {\n const offset = submeshesOffset + index * 20;\n multi.subMaterials.push(materialForMesh(submeshView.getUint32(offset, true), doubleSided));\n }\n mesh.material = multi;\n }\n mesh.releaseSubMeshes();\n for (let index = 0; index < submeshCount; ++index) {\n const offset = submeshesOffset + index * 20;\n new SubMesh(\n index,\n submeshView.getUint32(offset + 12, true),\n submeshView.getUint32(offset + 16, true),\n submeshView.getUint32(offset + 4, true),\n submeshView.getUint32(offset + 8, true),\n mesh\n );\n }\n meshes.set(id, mesh);\n break;\n }\n case Command.AnalyticPrimitive: {\n const id = payload.u32();\n const nodeId = payload.u32();\n const type = payload.u32();\n const materialId = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const flags = payload.u32();\n const axis = payload.u32();\n const sizeOrRadius = payload.f32();\n const height = payload.f32();\n const tessellation = payload.u32();\n const name = stringAt(dataBuffer, nameOffset, nameLength);\n if (!Number.isFinite(sizeOrRadius) || sizeOrRadius <= 0) {\n throw new Error(`Analytic primitive ${id} has an invalid size or radius.`);\n }\n if ((type === AnalyticPrimitiveType.Cylinder || type === AnalyticPrimitiveType.Cone) && (!Number.isFinite(height) || height <= 0)) {\n throw new Error(`Analytic primitive ${id} has an invalid height.`);\n }\n if (type !== AnalyticPrimitiveType.Cube && (!Number.isInteger(tessellation) || tessellation < 3 || tessellation > 512)) {\n throw new Error(`Analytic primitive ${id} has invalid tessellation.`);\n }\n let mesh: Mesh;\n switch (type) {\n case AnalyticPrimitiveType.Cube:\n mesh = CreateBox(name, { size: sizeOrRadius }, scene);\n break;\n case AnalyticPrimitiveType.Sphere:\n mesh = CreateSphere(\n name,\n {\n diameter: sizeOrRadius * 2,\n segments: tessellation,\n },\n scene\n );\n break;\n case AnalyticPrimitiveType.Cylinder:\n case AnalyticPrimitiveType.Cone:\n mesh = CreateCylinder(\n name,\n {\n height,\n diameterTop: type === AnalyticPrimitiveType.Cone ? 0 : sizeOrRadius * 2,\n diameterBottom: sizeOrRadius * 2,\n tessellation,\n },\n scene\n );\n break;\n default:\n throw new Error(`Unsupported analytic primitive type ${type}.`);\n }\n trackAsset(container.meshes, mesh);\n if (mesh.geometry) {\n trackAsset(container.geometries, mesh.geometry);\n }\n\n // Babylon builders emit left-handed local winding. Reverse only for USD's\n // default right-handed convention; normals already point outward.\n if (!(flags & MeshFlags.LeftHanded)) {\n const sourceIndices = mesh.getIndices();\n if (!sourceIndices) {\n throw new Error(`Analytic primitive ${id} has no generated indices.`);\n }\n const reversed = Array.from(sourceIndices);\n for (let index = 0; index < reversed.length; index += 3) {\n [reversed[index], reversed[index + 2]] = [reversed[index + 2], reversed[index]];\n }\n mesh.setIndices(reversed);\n }\n if (axis === PrimitiveAxis.X) {\n mesh.rotationQuaternion = Quaternion.RotationAxis(new Vector3(0, 0, 1), -Math.PI / 2);\n } else if (axis === PrimitiveAxis.Z) {\n mesh.rotationQuaternion = Quaternion.RotationAxis(new Vector3(1, 0, 0), Math.PI / 2);\n } else if (axis !== PrimitiveAxis.Y) {\n throw new Error(`Unsupported analytic primitive axis ${axis}.`);\n }\n applyMeshOrientation(mesh, flags);\n mesh.parent = nodes.get(nodeId) ?? root ?? null;\n mesh.material = materialForMesh(materialId, Boolean(flags & MeshFlags.DoubleSided));\n meshes.set(id, mesh);\n break;\n }\n case Command.Instance: {\n const sourceId = payload.u32();\n const nodeId = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const source = meshes.get(sourceId);\n if (!source) {\n throw new Error(`Instance references missing mesh ${sourceId}.`);\n }\n const instance = source.createInstance(stringAt(dataBuffer, nameOffset, nameLength));\n trackAsset(container.meshes, instance);\n instance.parent = nodes.get(nodeId) ?? root ?? null;\n break;\n }\n case Command.Animation: {\n const targetKind = payload.u32();\n const targetId = payload.u32();\n const property = payload.u32();\n const trackIndex = payload.u32();\n const keyCount = payload.u32();\n const timesOffset = payload.u32();\n const valuesOffset = payload.u32();\n const stride = payload.u32();\n if (targetKind !== AnimationTarget.Node && targetKind !== AnimationTarget.Bone) {\n throw new Error(`Invalid animation target kind ${targetKind}.`);\n }\n const expectedStride =\n property === AnimationProperty.Position || property === AnimationProperty.Scaling\n ? 3\n : property === AnimationProperty.RotationQuaternion\n ? 4\n : property === AnimationProperty.Matrix\n ? 16\n : 0;\n if (stride !== expectedStride) {\n throw new Error(`Invalid animation value stride ${stride} for property ${property}.`);\n }\n const target = targetKind === AnimationTarget.Node ? nodes.get(targetId) : bones.get(targetId);\n if (!target) {\n break;\n }\n const propertyName =\n property === AnimationProperty.Position\n ? \"position\"\n : property === AnimationProperty.RotationQuaternion\n ? \"rotationQuaternion\"\n : property === AnimationProperty.Scaling\n ? \"scaling\"\n : targetKind === AnimationTarget.Node\n ? NODE_MATRIX_PROPERTY\n : \"_matrix\";\n const dataType =\n property === AnimationProperty.RotationQuaternion\n ? Animation.ANIMATIONTYPE_QUATERNION\n : property === AnimationProperty.Matrix\n ? Animation.ANIMATIONTYPE_MATRIX\n : Animation.ANIMATIONTYPE_VECTOR3;\n const animation = new Animation(`USD ${propertyName}`, propertyName, timeCodesPerSecond, dataType, Animation.ANIMATIONLOOPMODE_CYCLE);\n assertRange(dataBuffer, timesOffset, keyCount, 4, \"animation times\");\n assertRange(dataBuffer, valuesOffset, keyCount * stride, 4, \"animation values\");\n const times = new Float32Array(dataBuffer, timesOffset, keyCount);\n const values = new Float32Array(dataBuffer, valuesOffset, keyCount * stride);\n animation.setKeys(\n Array.from({ length: keyCount }, (_, index) => ({\n frame: times[index],\n value:\n dataType === Animation.ANIMATIONTYPE_QUATERNION\n ? Quaternion.FromArray(values, index * stride)\n : dataType === Animation.ANIMATIONTYPE_MATRIX\n ? Matrix.FromArray(values, index * stride)\n : Vector3.FromArray(values, index * stride),\n }))\n );\n let group = animationGroups.get(trackIndex);\n if (!group) {\n group = new AnimationGroup(`USD Animation ${trackIndex + 1}`, scene);\n animationGroups.set(trackIndex, group);\n trackAsset(container.animationGroups, group);\n }\n group.addTargetedAnimation(animation, target);\n break;\n }\n }\n }\n } finally {\n if (!addToScene) {\n scene._blockEntityCollection = previousBlockEntityCollection;\n }\n }\n\n const texturesLoaded = Promise.all(textureLoads);\n if (signal) {\n let onAbort: (() => void) | undefined;\n const aborted = new Promise<never>((_resolve, reject) => {\n onAbort = () => reject(signal.reason instanceof Error ? signal.reason : new Error(\"USD materialization was aborted.\"));\n if (signal.aborted) {\n onAbort();\n } else {\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n });\n try {\n await Promise.race([texturesLoaded, aborted]);\n signal.throwIfAborted();\n } finally {\n if (onAbort) {\n signal.removeEventListener(\"abort\", onAbort);\n }\n }\n } else {\n await texturesLoaded;\n }\n for (const { node, parentId } of pendingParents) {\n node.parent = nodes.get(parentId) ?? root ?? null;\n }\n return { container, materializeMs: performance.now() - started };\n } catch (error) {\n // Decode callbacks can arrive after rollback; observe their rejections without\n // delaying cancellation on an image load that may never finish.\n void Promise.allSettled(textureLoads);\n container.dispose();\n for (const url of textureUrls) {\n URL.revokeObjectURL(url);\n }\n throw error;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"usdSceneMaterializer.js","sourceRoot":"","sources":["../../../../dev/loaders/src/USD/usdSceneMaterializer.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { Animation } from \"core/Animations/animation.pure\";\nimport { AnimationGroup } from \"core/Animations/animationGroup.pure\";\nimport { AbstractAssetContainer, AssetContainer } from \"core/assetContainer\";\nimport { Bone } from \"core/Bones/bone\";\nimport { Skeleton } from \"core/Bones/skeleton\";\nimport { Color3, Color4 } from \"core/Maths/math.color.pure\";\nimport { Matrix, Quaternion, Vector3 } from \"core/Maths/math.vector.pure\";\nimport { Material } from \"core/Materials/material.pure\";\nimport { MultiMaterial } from \"core/Materials/multiMaterial.pure\";\nimport { PBRMaterial } from \"core/Materials/PBR/pbrMaterial.pure\";\nimport { Texture } from \"core/Materials/Textures/texture.pure\";\nimport {\n CreateFactorOperand,\n CreateTextureOperand,\n LerpTexturesAsync,\n TextureChannel,\n TextureColorSpace,\n type ITextureProcessOperand,\n} from \"core/Materials/Textures/textureProcessor\";\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\nimport { MorphTarget } from \"core/Morph/morphTarget\";\nimport { MorphTargetManager } from \"core/Morph/morphTargetManager\";\nimport { CreateBox } from \"core/Meshes/Builders/boxBuilder.pure\";\nimport { CreateCylinder } from \"core/Meshes/Builders/cylinderBuilder.pure\";\nimport { CreateSphere } from \"core/Meshes/Builders/sphereBuilder.pure\";\nimport { Mesh } from \"core/Meshes/mesh.pure\";\nimport { SubMesh } from \"core/Meshes/subMesh\";\nimport { TransformNode } from \"core/Meshes/transformNode.pure\";\nimport { VertexData } from \"core/Meshes/mesh.vertexData\";\nimport { type Scene } from \"core/scene.pure\";\nimport { type IAssetContainer } from \"core/IAssetContainer\";\nimport { Constants } from \"core/Engines/constants\";\n\nimport {\n AnalyticPrimitiveType,\n AnimationProperty,\n AnimationTarget,\n Command,\n GeometryFlags,\n MaterialFlags,\n MeshFlags,\n MISSING_OFFSET,\n PayloadReader,\n PrimitiveAxis,\n TextureOutputChannel,\n USDTextureColorSpace,\n readCommands,\n} from \"./usdCommandProtocol\";\n\ninterface GeometryDescriptor {\n vertexCount: number;\n indexCount: number;\n flags: number;\n positions: number;\n normals: number;\n tangents: number;\n uv0: number;\n colors: number;\n joints0: number;\n weights0: number;\n joints1: number;\n weights1: number;\n indices: number;\n influences: number;\n}\n\ninterface TextureDescriptor {\n id: number;\n texture: Texture;\n sourceColorSpace: USDTextureColorSpace;\n scale: Float32Array;\n bias: Float32Array;\n}\n\ninterface TextureBinding {\n descriptor: TextureDescriptor;\n channel: TextureOutputChannel;\n}\n\ninterface MaterialTextureBindings {\n id: number;\n material: PBRMaterial;\n normalScale: number;\n base?: TextureBinding;\n opacity?: TextureBinding;\n normal?: TextureBinding;\n metallic?: TextureBinding;\n roughness?: TextureBinding;\n occlusion?: TextureBinding;\n emissive?: TextureBinding;\n}\n\nclass DirectAssetContainer extends AbstractAssetContainer {\n public dispose(): void {\n for (const animationGroup of this.animationGroups.splice(0)) {\n animationGroup.dispose();\n }\n for (const mesh of this.meshes.splice(0)) {\n mesh.dispose();\n }\n for (const manager of this.morphTargetManagers.splice(0)) {\n manager.dispose();\n }\n for (const skeleton of this.skeletons.splice(0)) {\n skeleton.dispose();\n }\n for (const multiMaterial of this.multiMaterials.splice(0)) {\n multiMaterial.dispose();\n }\n for (const material of this.materials.splice(0)) {\n material.dispose();\n }\n for (const geometry of this.geometries.splice(0)) {\n geometry.dispose();\n }\n for (const transformNode of this.transformNodes.splice(0)) {\n transformNode.dispose();\n }\n for (const texture of this.textures.splice(0)) {\n texture.dispose();\n }\n this.rootNodes.length = 0;\n }\n}\n\nexport interface MaterializationResult {\n container: AbstractAssetContainer & { dispose(): void };\n materializeMs: number;\n}\n\nconst decoder = new TextDecoder();\nconst NODE_MATRIX_PROPERTY = \"__babylonUsdLocalMatrix\";\n\nfunction assertRange(data: ArrayBuffer, offset: number, count: number, bytesPerElement: number, label: string): void {\n if (\n !Number.isInteger(offset) ||\n !Number.isInteger(count) ||\n offset < 0 ||\n count < 0 ||\n offset % Math.min(bytesPerElement, 4) !== 0 ||\n count > Math.floor((data.byteLength - offset) / bytesPerElement)\n ) {\n throw new Error(`Invalid ${label} range in OpenUSD Babylon data buffer.`);\n }\n}\n\nfunction stringAt(data: ArrayBuffer, offset: number, length: number): string {\n assertRange(data, offset, length, 1, \"string\");\n return decoder.decode(new Uint8Array(data, offset, length));\n}\n\nfunction matrixAt(data: ArrayBuffer, offset: number): Matrix {\n assertRange(data, offset, 16, 4, \"matrix\");\n const values = new Float32Array(data, offset, 16);\n return Matrix.FromValues(\n values[0],\n values[1],\n values[2],\n values[3],\n values[4],\n values[5],\n values[6],\n values[7],\n values[8],\n values[9],\n values[10],\n values[11],\n values[12],\n values[13],\n values[14],\n values[15]\n );\n}\n\nfunction mimeType(value: number): string {\n switch (value) {\n case 2:\n return \"image/jpeg\";\n case 3:\n return \"image/bmp\";\n case 4:\n return \"image/webp\";\n default:\n return \"image/png\";\n }\n}\n\nfunction wrapMode(value: number): number {\n switch (value) {\n case 0:\n return Texture.CLAMP_ADDRESSMODE;\n case 1:\n return Texture.WRAP_ADDRESSMODE;\n case 2:\n return Texture.MIRROR_ADDRESSMODE;\n default:\n throw new Error(`Invalid texture wrap mode ${value}.`);\n }\n}\n\nasync function awaitAbortableAsync<T>(promise: Promise<T>, signal?: AbortSignal): Promise<T> {\n if (!signal) {\n return await promise;\n }\n let onAbort: (() => void) | undefined;\n const aborted = new Promise<never>((_resolve, reject) => {\n onAbort = () => reject(signal.reason instanceof Error ? signal.reason : new Error(\"USD materialization was aborted.\"));\n signal.addEventListener(\"abort\", onAbort, { once: true });\n if (signal.aborted) {\n onAbort();\n }\n });\n try {\n return await Promise.race([promise, aborted]);\n } finally {\n if (onAbort) {\n signal.removeEventListener(\"abort\", onAbort);\n }\n }\n}\n\nexport async function materializeCommandBuffers(\n scene: Scene,\n commandBuffer: ArrayBuffer,\n dataBuffer: ArrayBuffer,\n addToScene: boolean,\n signal?: AbortSignal\n): Promise<MaterializationResult> {\n signal?.throwIfAborted();\n const started = performance.now();\n const commands = readCommands(commandBuffer);\n const container = addToScene ? new DirectAssetContainer() : new AssetContainer(scene);\n const nodes = new Map<number, TransformNode>();\n const pendingParents: Array<{ node: TransformNode; parentId: number }> = [];\n const textures = new Map<number, TextureDescriptor>();\n const materials = new Map<number, PBRMaterial>();\n const doubleSidedMaterials = new Map<number, PBRMaterial>();\n const skeletons = new Map<number, Skeleton>();\n const bones = new Map<number, Bone>();\n const geometries = new Map<number, GeometryDescriptor>();\n const meshes = new Map<number, Mesh>();\n const morphTargetManagers = new Map<number, MorphTargetManager>();\n const morphTargets = new Map<number, MorphTarget>();\n const classicInstanceSources = new Set<number>();\n const thinInstanceSources = new Set<number>();\n const animationGroups = new Map<number, AnimationGroup>();\n const textureLoads: Promise<void>[] = [];\n const textureUrls = new Set<string>();\n const materialTextureBindings: MaterialTextureBindings[] = [];\n const processedTextures = new Map<string, Promise<BaseTexture>>();\n const assetContainer = container instanceof AssetContainer ? container : undefined;\n let root: TransformNode | undefined;\n let timeCodesPerSecond = 24;\n let rollingBack = false;\n const caps = scene.getEngine().getCaps();\n const processedTextureType =\n caps.textureHalfFloatRender && caps.textureHalfFloatLinearFiltering\n ? Constants.TEXTURETYPE_HALF_FLOAT\n : caps.textureFloatRender && caps.textureFloatLinearFiltering\n ? Constants.TEXTURETYPE_FLOAT\n : Constants.TEXTURETYPE_UNSIGNED_BYTE;\n\n const trackAsset = <T extends { _parentContainer: IAssetContainer | null }>(assets: T[], asset: T): void => {\n assets.push(asset);\n if (assetContainer) {\n asset._parentContainer = assetContainer;\n }\n };\n const applyMeshOrientation = (mesh: Mesh, flags: number): void => {\n const sourceIsRightHanded = !(flags & MeshFlags.LeftHanded);\n mesh.sideOrientation = scene.useRightHandedSystem === sourceIsRightHanded ? Material.CounterClockWiseSideOrientation : Material.ClockWiseSideOrientation;\n };\n const materialForMesh = (id: number, doubleSided: boolean): PBRMaterial | null => {\n const material = materials.get(id);\n if (!material || !doubleSided || !material.backFaceCulling) {\n return material ?? null;\n }\n let variant = doubleSidedMaterials.get(id);\n if (!variant) {\n variant = material.clone(`${material.name} (double-sided)`);\n trackAsset(container.materials, variant);\n variant.backFaceCulling = false;\n variant.twoSidedLighting = true;\n doubleSidedMaterials.set(id, variant);\n }\n return variant;\n };\n const binding = (textureId: number, channel: number, label: string): TextureBinding | undefined => {\n if (textureId === MISSING_OFFSET) {\n if (channel !== MISSING_OFFSET) {\n throw new Error(`USD ${label} binding has a channel without a texture.`);\n }\n return undefined;\n }\n const descriptor = textures.get(textureId);\n if (!descriptor) {\n throw new Error(`USD ${label} binding references missing texture ${textureId}.`);\n }\n if (channel < TextureOutputChannel.R || channel > TextureOutputChannel.RGB) {\n throw new Error(`USD ${label} binding has invalid output channel ${channel}.`);\n }\n return { descriptor, channel };\n };\n const channelIndex = (channel: TextureOutputChannel): number => {\n if (channel === TextureOutputChannel.RGB) {\n throw new Error(\"A scalar USD texture binding cannot use the RGB output.\");\n }\n return channel;\n };\n const processorChannel = (channel: TextureOutputChannel): TextureChannel => {\n switch (channel) {\n case TextureOutputChannel.R:\n return TextureChannel.R;\n case TextureOutputChannel.G:\n return TextureChannel.G;\n case TextureOutputChannel.B:\n return TextureChannel.B;\n case TextureOutputChannel.A:\n return TextureChannel.A;\n default:\n return TextureChannel.RGBA;\n }\n };\n const processorColorSpace = (descriptor: TextureDescriptor): TextureColorSpace =>\n descriptor.sourceColorSpace === USDTextureColorSpace.Raw ? TextureColorSpace.Linear : TextureColorSpace.SRGB;\n const scalarTextureIsLinear = (binding: TextureBinding): boolean => binding.descriptor.sourceColorSpace === USDTextureColorSpace.Raw;\n const valueTransformIs = (descriptor: TextureDescriptor, scale: readonly number[] | Float32Array, bias: readonly number[] | Float32Array): boolean =>\n scale.every((value, index) => descriptor.scale[index] === value) && bias.every((value, index) => descriptor.bias[index] === value);\n const trackProcessedTexture = (texture: BaseTexture): BaseTexture => {\n trackAsset(container.textures, texture);\n return texture;\n };\n const processTextureAsync = async (\n name: string,\n binding: TextureBinding,\n scale: readonly number[] | Float32Array,\n bias: readonly number[] | Float32Array,\n channel = binding.channel,\n preserveRange = false\n ): Promise<BaseTexture> => {\n const source = binding.descriptor;\n const size = source.texture.getSize();\n const supportsMipMaps = !scene.getEngine().needPOTTextures || ((size.width & (size.width - 1)) === 0 && (size.height & (size.height - 1)) === 0);\n const outputOptions = {\n textureType: preserveRange ? processedTextureType : Constants.TEXTURETYPE_UNSIGNED_BYTE,\n samplingMode: supportsMipMaps ? Constants.TEXTURE_TRILINEAR_SAMPLINGMODE : Constants.TEXTURE_BILINEAR_SAMPLINGMODE,\n generateMipMaps: supportsMipMaps,\n };\n if (\n preserveRange &&\n processedTextureType === Constants.TEXTURETYPE_UNSIGNED_BYTE &&\n scale.slice(0, 3).some((value, index) => Math.min(bias[index], bias[index] + value) < 0)\n ) {\n throw new Error(`USD texture processing for '${name}' requires a floating-point render target to preserve signed values.`);\n }\n const key = `${source.id}:${channel}:${scale.join(\",\")}:${bias.join(\",\")}:${preserveRange}`;\n const cached = processedTextures.get(key);\n if (cached) {\n return await cached;\n }\n const processing = (async () => {\n const a = new Color4(bias[0], bias[1], bias[2], bias[3]);\n const b = new Color4(bias[0] + scale[0], bias[1] + scale[1], bias[2] + scale[2], bias[3] + scale[3]);\n const previousBlockEntityCollection = scene._blockEntityCollection;\n scene._blockEntityCollection = true;\n let processingPromise: Promise<ITextureProcessOperand>;\n try {\n processingPromise = LerpTexturesAsync(\n name,\n CreateFactorOperand(a),\n CreateFactorOperand(b),\n CreateTextureOperand(source.texture, processorChannel(channel), processorColorSpace(source)),\n scene,\n TextureColorSpace.Linear,\n undefined,\n outputOptions\n );\n } finally {\n scene._blockEntityCollection = previousBlockEntityCollection;\n }\n const processed = await processingPromise;\n if (!processed.texture) {\n throw new Error(`USD texture processing for '${name}' did not produce a texture.`);\n }\n if (rollingBack || signal?.aborted) {\n processed.dispose?.();\n if (signal?.aborted) {\n signal.throwIfAborted();\n }\n throw new Error(\"USD materialization was rolled back.\");\n }\n if (!assetContainer) {\n scene.addTexture(processed.texture);\n }\n const texture = trackProcessedTexture(processed.texture);\n texture.gammaSpace = false;\n const transformedTexture = texture as Texture;\n transformedTexture.uRotationCenter = source.texture.uRotationCenter;\n transformedTexture.vRotationCenter = source.texture.vRotationCenter;\n transformedTexture.wRotationCenter = source.texture.wRotationCenter;\n transformedTexture.homogeneousRotationInUVTransform = source.texture.homogeneousRotationInUVTransform;\n return texture;\n })();\n processedTextures.set(key, processing);\n try {\n return await processing;\n } catch (error) {\n processedTextures.delete(key);\n throw error;\n }\n };\n const processScalarTextureAsync = async (name: string, binding: TextureBinding): Promise<BaseTexture> => {\n const index = channelIndex(binding.channel);\n const scale = binding.descriptor.scale[index];\n const bias = binding.descriptor.bias[index];\n return await processTextureAsync(name, binding, [scale, scale, scale, 1], [bias, bias, bias, 0], binding.channel);\n };\n const applyMaterialTextureBindingsAsync = async (bindings: MaterialTextureBindings): Promise<void> => {\n const { material, normalScale, base, opacity, normal, metallic, roughness, occlusion, emissive } = bindings;\n if (base) {\n if (base.channel !== TextureOutputChannel.RGB) {\n throw new Error(\"A USD base-color texture must use the RGB output.\");\n }\n material.albedoColor = Color3.White();\n material.albedoTexture = valueTransformIs(base.descriptor, [1, 1, 1, 1], [0, 0, 0, 0])\n ? base.descriptor.texture\n : await processTextureAsync(`${material.name} base color`, base, base.descriptor.scale, base.descriptor.bias);\n }\n if (emissive) {\n if (emissive.channel !== TextureOutputChannel.RGB) {\n throw new Error(\"A USD emissive texture must use the RGB output.\");\n }\n const descriptor = emissive.descriptor;\n const zeroBias = descriptor.bias.slice(0, 3).every((value) => value === 0);\n if (zeroBias) {\n material.emissiveColor = new Color3(descriptor.scale[0], descriptor.scale[1], descriptor.scale[2]);\n material.emissiveTexture = descriptor.texture;\n } else {\n const factors = Array.from({ length: 3 }, (_, index) => Math.max(1, Math.abs(descriptor.bias[index]), Math.abs(descriptor.bias[index] + descriptor.scale[index])));\n const scale = descriptor.scale.map((value, index) => (index < 3 ? value / factors[index] : value));\n const bias = descriptor.bias.map((value, index) => (index < 3 ? value / factors[index] : value));\n material.emissiveColor = new Color3(factors[0], factors[1], factors[2]);\n material.emissiveTexture = await processTextureAsync(`${material.name} emissive`, emissive, scale, bias, emissive.channel, true);\n }\n }\n if (normal) {\n if (normal.channel !== TextureOutputChannel.RGB) {\n throw new Error(\"A USD normal texture must use the RGB output.\");\n }\n const canonicalNormal = normal.descriptor.sourceColorSpace === USDTextureColorSpace.Raw && valueTransformIs(normal.descriptor, [2, 2, 2, 1], [-1, -1, -1, 0]);\n if (canonicalNormal) {\n material.bumpTexture = normal.descriptor.texture;\n } else {\n const scale = Array.from(normal.descriptor.scale, (value) => value * 0.5);\n const bias = Array.from(normal.descriptor.bias, (value, index) => (index < 3 ? (value + 1) * 0.5 : value));\n material.bumpTexture = await processTextureAsync(`${material.name} normal`, normal, scale, bias);\n }\n material.bumpTexture.gammaSpace = false;\n material.bumpTexture.level = normalScale;\n }\n\n const packedMetallicRoughness =\n metallic &&\n roughness &&\n metallic.descriptor === roughness.descriptor &&\n (metallic.channel === TextureOutputChannel.R || metallic.channel === TextureOutputChannel.B) &&\n (roughness.channel === TextureOutputChannel.G || roughness.channel === TextureOutputChannel.A) &&\n scalarTextureIsLinear(metallic) &&\n metallic.descriptor.bias[channelIndex(metallic.channel)] === 0 &&\n roughness.descriptor.bias[channelIndex(roughness.channel)] === 0;\n let packedOcclusion = false;\n if (packedMetallicRoughness) {\n const descriptor = metallic.descriptor;\n material.metallicTexture = descriptor.texture;\n material.metallic = (material.metallic ?? 1) * descriptor.scale[channelIndex(metallic.channel)];\n material.roughness = (material.roughness ?? 1) * descriptor.scale[channelIndex(roughness.channel)];\n material.useRoughnessFromMetallicTextureAlpha = roughness.channel === TextureOutputChannel.A;\n material.useRoughnessFromMetallicTextureGreen = roughness.channel === TextureOutputChannel.G;\n material.useMetallnessFromMetallicTextureBlue = metallic.channel === TextureOutputChannel.B;\n packedOcclusion =\n occlusion?.descriptor === descriptor &&\n occlusion.channel === TextureOutputChannel.R &&\n descriptor.scale[TextureOutputChannel.R] === 1 &&\n descriptor.bias[TextureOutputChannel.R] === 0;\n material.useAmbientOcclusionFromMetallicTextureRed = packedOcclusion;\n } else {\n if (metallic) {\n const index = channelIndex(metallic.channel);\n const direct =\n scalarTextureIsLinear(metallic) &&\n (metallic.channel === TextureOutputChannel.R || metallic.channel === TextureOutputChannel.B) &&\n metallic.descriptor.bias[index] === 0;\n material.metallicTexture = direct ? metallic.descriptor.texture : await processScalarTextureAsync(`${material.name} metallic`, metallic);\n material.useRoughnessFromMetallicTextureAlpha = false;\n material.useRoughnessFromMetallicTextureGreen = false;\n material.useMetallnessFromMetallicTextureBlue = direct && metallic.channel === TextureOutputChannel.B;\n material.metallic = direct ? (material.metallic ?? 1) * metallic.descriptor.scale[index] : 1;\n }\n if (roughness) {\n const index = channelIndex(roughness.channel);\n const direct = scalarTextureIsLinear(roughness) && roughness.channel === TextureOutputChannel.R && roughness.descriptor.bias[index] === 0;\n material.microSurfaceTexture = direct ? roughness.descriptor.texture : await processScalarTextureAsync(`${material.name} roughness`, roughness);\n material.microSurfaceTexture.gammaSpace = direct ? roughness.descriptor.texture.gammaSpace : false;\n material.roughness = direct ? (material.roughness ?? 1) * roughness.descriptor.scale[index] : 1;\n }\n }\n if (occlusion && !packedOcclusion) {\n const index = channelIndex(occlusion.channel);\n const direct =\n scalarTextureIsLinear(occlusion) &&\n occlusion.channel === TextureOutputChannel.R &&\n occlusion.descriptor.scale[index] === 1 &&\n occlusion.descriptor.bias[index] === 0;\n material.ambientTexture = direct ? occlusion.descriptor.texture : await processScalarTextureAsync(`${material.name} occlusion`, occlusion);\n material.useAmbientInGrayScale = true;\n }\n if (opacity) {\n if (\n base &&\n material.albedoTexture &&\n opacity.descriptor === base.descriptor &&\n opacity.channel === TextureOutputChannel.A &&\n opacity.descriptor.scale[TextureOutputChannel.A] === 1 &&\n opacity.descriptor.bias[TextureOutputChannel.A] === 0\n ) {\n material.albedoTexture.hasAlpha = true;\n material.useAlphaFromAlbedoTexture = true;\n } else {\n const direct =\n opacity.channel === TextureOutputChannel.A && opacity.descriptor.scale[TextureOutputChannel.A] === 1 && opacity.descriptor.bias[TextureOutputChannel.A] === 0;\n material.opacityTexture = direct ? opacity.descriptor.texture : await processScalarTextureAsync(`${material.name} opacity`, opacity);\n material.opacityTexture.gammaSpace = direct ? opacity.descriptor.texture.gammaSpace : false;\n material.opacityTexture.getAlphaFromRGB = !direct;\n }\n }\n const doubleSidedVariant = doubleSidedMaterials.get(bindings.id);\n if (doubleSidedVariant) {\n doubleSidedVariant.albedoColor.copyFrom(material.albedoColor);\n doubleSidedVariant.albedoTexture = material.albedoTexture;\n doubleSidedVariant.emissiveColor.copyFrom(material.emissiveColor);\n doubleSidedVariant.emissiveTexture = material.emissiveTexture;\n doubleSidedVariant.bumpTexture = material.bumpTexture;\n doubleSidedVariant.metallic = material.metallic;\n doubleSidedVariant.roughness = material.roughness;\n doubleSidedVariant.metallicTexture = material.metallicTexture;\n doubleSidedVariant.microSurfaceTexture = material.microSurfaceTexture;\n doubleSidedVariant.ambientTexture = material.ambientTexture;\n doubleSidedVariant.opacityTexture = material.opacityTexture;\n doubleSidedVariant.alpha = material.alpha;\n doubleSidedVariant.useAlphaFromAlbedoTexture = material.useAlphaFromAlbedoTexture;\n doubleSidedVariant.useRoughnessFromMetallicTextureAlpha = material.useRoughnessFromMetallicTextureAlpha;\n doubleSidedVariant.useRoughnessFromMetallicTextureGreen = material.useRoughnessFromMetallicTextureGreen;\n doubleSidedVariant.useMetallnessFromMetallicTextureBlue = material.useMetallnessFromMetallicTextureBlue;\n doubleSidedVariant.useAmbientOcclusionFromMetallicTextureRed = material.useAmbientOcclusionFromMetallicTextureRed;\n doubleSidedVariant.useAmbientInGrayScale = material.useAmbientInGrayScale;\n }\n };\n\n try {\n const previousBlockEntityCollection = scene._blockEntityCollection;\n if (!addToScene) {\n scene._blockEntityCollection = true;\n }\n try {\n for (const command of commands) {\n const payload = new PayloadReader(commandBuffer, command.payloadOffset, command.payloadLength);\n switch (command.opcode) {\n case Command.Scene: {\n const zUp = payload.u32() === 1;\n const metersPerUnit = payload.f32();\n timeCodesPerSecond = payload.f32() || 24;\n root = new TransformNode(\"USD Root\", scene);\n trackAsset(container.transformNodes, root);\n container.rootNodes.push(root);\n root.rotationQuaternion = zUp ? Quaternion.FromArray([-0.7071068, 0, 0, 0.7071068]) : Quaternion.Identity();\n root.scaling.copyFrom(\n scene.useRightHandedSystem\n ? new Vector3(metersPerUnit, metersPerUnit, metersPerUnit)\n : zUp\n ? new Vector3(metersPerUnit, -metersPerUnit, metersPerUnit)\n : new Vector3(metersPerUnit, metersPerUnit, -metersPerUnit)\n );\n break;\n }\n case Command.Texture: {\n const id = payload.u32();\n if (textures.has(id)) {\n throw new Error(`Duplicate USD texture ${id}.`);\n }\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const mime = mimeType(payload.u32());\n const imageOffset = payload.u32();\n const imageLength = payload.u32();\n const coordinatesIndex = payload.u32();\n const transformOffset = payload.u32();\n const wrapU = payload.u32();\n const wrapV = payload.u32();\n const sourceColorSpace = payload.u32();\n const valueTransformOffset = payload.u32();\n assertRange(dataBuffer, transformOffset, 5, 4, \"texture transform\");\n assertRange(dataBuffer, valueTransformOffset, 8, 4, \"texture value transform\");\n assertRange(dataBuffer, imageOffset, imageLength, 1, \"texture image\");\n if (sourceColorSpace < USDTextureColorSpace.Auto || sourceColorSpace > USDTextureColorSpace.SRGB) {\n throw new Error(`Invalid USD texture color space ${sourceColorSpace}.`);\n }\n const transform = new Float32Array(dataBuffer, transformOffset, 5);\n const valueTransform = new Float32Array(dataBuffer, valueTransformOffset, 8);\n if (![...transform, ...valueTransform].every(Number.isFinite)) {\n throw new Error(`USD texture ${id} has a non-finite transform.`);\n }\n const bytes = new Uint8Array(dataBuffer, imageOffset, imageLength);\n const url = URL.createObjectURL(new Blob([bytes], { type: mime }));\n textureUrls.add(url);\n let resolveLoad!: () => void;\n let rejectLoad!: (error: Error) => void;\n const loaded = new Promise<void>((resolve, reject) => {\n resolveLoad = resolve;\n rejectLoad = reject;\n });\n textureLoads.push(loaded);\n const texture = new Texture(url, scene, false, false, Texture.TRILINEAR_SAMPLINGMODE, resolveLoad, (message, exception) => {\n URL.revokeObjectURL(url);\n rejectLoad(exception instanceof Error ? exception : new Error(message || `Could not load texture '${url}'.`));\n });\n trackAsset(container.textures, texture);\n texture.onDisposeObservable.addOnce(() => URL.revokeObjectURL(url));\n texture.name = stringAt(dataBuffer, nameOffset, nameLength);\n texture.coordinatesIndex = coordinatesIndex;\n texture.uScale = transform[0];\n texture.vScale = transform[1];\n texture.uRotationCenter = 0;\n texture.vRotationCenter = 0;\n texture.uOffset = transform[2] - transform[1] * Math.sin(transform[4]);\n texture.vOffset = 1 - transform[1] * Math.cos(transform[4]) - transform[3];\n texture.wAng = -transform[4];\n texture.wrapU = wrapMode(wrapU);\n texture.wrapV = wrapMode(wrapV);\n texture.gammaSpace = sourceColorSpace !== USDTextureColorSpace.Raw;\n textures.set(id, {\n id,\n texture,\n sourceColorSpace,\n scale: valueTransform.subarray(0, 4),\n bias: valueTransform.subarray(4, 8),\n });\n break;\n }\n case Command.Material: {\n const id = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const baseOffset = payload.u32();\n const emissiveOffset = payload.u32();\n const metallic = payload.f32();\n const roughness = payload.f32();\n const normalScale = payload.f32();\n const alphaCutoff = payload.f32();\n const flags = payload.u32();\n const textureIds = Array.from({ length: 7 }, () => payload.u32());\n const textureChannels = Array.from({ length: 7 }, () => payload.u32());\n assertRange(dataBuffer, baseOffset, 4, 4, \"material base color\");\n assertRange(dataBuffer, emissiveOffset, 3, 4, \"material emissive color\");\n const base = new Float32Array(dataBuffer, baseOffset, 4);\n const emissive = new Float32Array(dataBuffer, emissiveOffset, 3);\n const material = new PBRMaterial(stringAt(dataBuffer, nameOffset, nameLength), scene);\n trackAsset(container.materials, material);\n material.id = `usd-material-${id}`;\n material.albedoColor = new Color3(base[0], base[1], base[2]);\n material.alpha = base[3];\n material.metallic = metallic;\n material.roughness = roughness;\n material.emissiveColor = new Color3(emissive[0], emissive[1], emissive[2]);\n const doubleSided = Boolean(flags & MaterialFlags.DoubleSided);\n material.backFaceCulling = !doubleSided;\n material.twoSidedLighting = doubleSided;\n material.unlit = Boolean(flags & MaterialFlags.Unlit);\n if (flags & MaterialFlags.AlphaBlend) {\n material.transparencyMode = 2;\n }\n if (alphaCutoff > 0) {\n material.transparencyMode = 1;\n material.alphaCutOff = alphaCutoff;\n }\n materialTextureBindings.push({\n id,\n material,\n normalScale,\n base: binding(textureIds[0], textureChannels[0], \"base-color texture\"),\n opacity: binding(textureIds[1], textureChannels[1], \"opacity texture\"),\n normal: binding(textureIds[2], textureChannels[2], \"normal texture\"),\n metallic: binding(textureIds[3], textureChannels[3], \"metallic texture\"),\n roughness: binding(textureIds[4], textureChannels[4], \"roughness texture\"),\n occlusion: binding(textureIds[5], textureChannels[5], \"occlusion texture\"),\n emissive: binding(textureIds[6], textureChannels[6], \"emissive texture\"),\n });\n materials.set(id, material);\n break;\n }\n case Command.TransformNode: {\n const id = payload.u32();\n const parentId = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const matrixOffset = payload.u32();\n const node = new TransformNode(stringAt(dataBuffer, nameOffset, nameLength), scene);\n trackAsset(container.transformNodes, node);\n node.setPreTransformMatrix(matrixAt(dataBuffer, matrixOffset));\n Object.defineProperty(node, NODE_MATRIX_PROPERTY, {\n configurable: true,\n get: () => node.getPivotMatrix(),\n set: (matrix: Matrix) => node.setPreTransformMatrix(matrix),\n });\n nodes.set(id, node);\n if (parentId === MISSING_OFFSET) {\n node.parent = root ?? null;\n } else {\n pendingParents.push({ node, parentId });\n }\n break;\n }\n case Command.Skeleton: {\n const id = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const jointCount = payload.u32();\n const jointsOffset = payload.u32();\n const skeleton = new Skeleton(stringAt(dataBuffer, nameOffset, nameLength), `usd-skeleton-${id}`, scene);\n trackAsset(container.skeletons, skeleton);\n const jointView = new DataView(dataBuffer);\n assertRange(dataBuffer, jointsOffset, jointCount * 6, 4, \"skeleton joints\");\n const created: Bone[] = [];\n for (let index = 0; index < jointCount; ++index) {\n const offset = jointsOffset + index * 24;\n const parentIndex = jointView.getUint32(offset, true);\n const boneId = jointView.getUint32(offset + 4, true);\n const jointNameOffset = jointView.getUint32(offset + 8, true);\n const jointNameLength = jointView.getUint32(offset + 12, true);\n const restMatrixOffset = jointView.getUint32(offset + 16, true);\n const bindMatrixOffset = jointView.getUint32(offset + 20, true);\n if (parentIndex !== MISSING_OFFSET && parentIndex >= index) {\n throw new Error(`Skeleton ${id} has an invalid parent joint index.`);\n }\n const bone = new Bone(\n stringAt(dataBuffer, jointNameOffset, jointNameLength),\n skeleton,\n parentIndex === MISSING_OFFSET ? null : created[parentIndex],\n matrixAt(dataBuffer, restMatrixOffset),\n matrixAt(dataBuffer, restMatrixOffset),\n matrixAt(dataBuffer, bindMatrixOffset),\n index\n );\n created.push(bone);\n bones.set(boneId, bone);\n }\n skeletons.set(id, skeleton);\n break;\n }\n case Command.Geometry: {\n const id = payload.u32();\n geometries.set(id, {\n vertexCount: payload.u32(),\n indexCount: payload.u32(),\n flags: payload.u32(),\n positions: payload.u32(),\n normals: payload.u32(),\n tangents: payload.u32(),\n uv0: payload.u32(),\n colors: payload.u32(),\n joints0: payload.u32(),\n weights0: payload.u32(),\n joints1: payload.u32(),\n weights1: payload.u32(),\n indices: payload.u32(),\n influences: payload.u32(),\n });\n break;\n }\n case Command.Mesh: {\n const id = payload.u32();\n const nodeId = payload.u32();\n const geometryId = payload.u32();\n const materialId = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const flags = payload.u32();\n const skeletonId = payload.u32();\n const submeshesOffset = payload.u32();\n const submeshCount = payload.u32();\n const descriptor = geometries.get(geometryId);\n if (!descriptor) {\n throw new Error(`Mesh ${id} references missing geometry ${geometryId}.`);\n }\n const mesh = new Mesh(stringAt(dataBuffer, nameOffset, nameLength), scene);\n trackAsset(container.meshes, mesh);\n applyMeshOrientation(mesh, flags);\n mesh.parent = nodes.get(nodeId) ?? root ?? null;\n const vertexData = new VertexData();\n assertRange(dataBuffer, descriptor.positions, descriptor.vertexCount * 3, 4, \"positions\");\n vertexData.positions = new Float32Array(dataBuffer, descriptor.positions, descriptor.vertexCount * 3);\n if (descriptor.flags & GeometryFlags.Normals) {\n assertRange(dataBuffer, descriptor.normals, descriptor.vertexCount * 3, 4, \"normals\");\n vertexData.normals = new Float32Array(dataBuffer, descriptor.normals, descriptor.vertexCount * 3);\n }\n if (descriptor.flags & GeometryFlags.Tangents) {\n assertRange(dataBuffer, descriptor.tangents, descriptor.vertexCount * 4, 4, \"tangents\");\n vertexData.tangents = new Float32Array(dataBuffer, descriptor.tangents, descriptor.vertexCount * 4);\n }\n if (descriptor.flags & GeometryFlags.Uv0) {\n assertRange(dataBuffer, descriptor.uv0, descriptor.vertexCount * 2, 4, \"texture coordinates\");\n vertexData.uvs = new Float32Array(dataBuffer, descriptor.uv0, descriptor.vertexCount * 2);\n }\n if (descriptor.flags & GeometryFlags.Colors) {\n assertRange(dataBuffer, descriptor.colors, descriptor.vertexCount * 4, 4, \"vertex colors\");\n vertexData.colors = new Float32Array(dataBuffer, descriptor.colors, descriptor.vertexCount * 4);\n }\n if (descriptor.flags & GeometryFlags.Skin0) {\n assertRange(dataBuffer, descriptor.joints0, descriptor.vertexCount * 4, 2, \"joint indices\");\n assertRange(dataBuffer, descriptor.weights0, descriptor.vertexCount * 4, 4, \"joint weights\");\n vertexData.matricesIndices = Float32Array.from(new Uint16Array(dataBuffer, descriptor.joints0, descriptor.vertexCount * 4));\n vertexData.matricesWeights = new Float32Array(dataBuffer, descriptor.weights0, descriptor.vertexCount * 4);\n }\n if (descriptor.flags & GeometryFlags.Skin1) {\n assertRange(dataBuffer, descriptor.joints1, descriptor.vertexCount * 4, 2, \"extra joint indices\");\n assertRange(dataBuffer, descriptor.weights1, descriptor.vertexCount * 4, 4, \"extra joint weights\");\n vertexData.matricesIndicesExtra = Float32Array.from(new Uint16Array(dataBuffer, descriptor.joints1, descriptor.vertexCount * 4));\n vertexData.matricesWeightsExtra = new Float32Array(dataBuffer, descriptor.weights1, descriptor.vertexCount * 4);\n }\n assertRange(dataBuffer, descriptor.indices, descriptor.indexCount, 4, \"indices\");\n vertexData.indices = new Uint32Array(dataBuffer, descriptor.indices, descriptor.indexCount);\n vertexData.applyToMesh(mesh, true);\n if (mesh.geometry) {\n trackAsset(container.geometries, mesh.geometry);\n }\n mesh.numBoneInfluencers = Math.min(descriptor.influences, 8);\n if (skeletonId !== MISSING_OFFSET) {\n mesh.skeleton = skeletons.get(skeletonId) ?? null;\n }\n\n const submeshView = new DataView(dataBuffer);\n assertRange(dataBuffer, submeshesOffset, submeshCount * 5, 4, \"submeshes\");\n const doubleSided = Boolean(flags & MeshFlags.DoubleSided);\n if (submeshCount === 1 && materialId !== MISSING_OFFSET) {\n mesh.material = materialForMesh(materialId, doubleSided);\n } else {\n const multi = new MultiMaterial(`${mesh.name} materials`, scene);\n trackAsset(container.multiMaterials, multi);\n for (let index = 0; index < submeshCount; ++index) {\n const offset = submeshesOffset + index * 20;\n multi.subMaterials.push(materialForMesh(submeshView.getUint32(offset, true), doubleSided));\n }\n mesh.material = multi;\n }\n mesh.releaseSubMeshes();\n for (let index = 0; index < submeshCount; ++index) {\n const offset = submeshesOffset + index * 20;\n new SubMesh(\n index,\n submeshView.getUint32(offset + 12, true),\n submeshView.getUint32(offset + 16, true),\n submeshView.getUint32(offset + 4, true),\n submeshView.getUint32(offset + 8, true),\n mesh\n );\n }\n meshes.set(id, mesh);\n break;\n }\n case Command.MorphTarget: {\n const id = payload.u32();\n const meshId = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const vertexCount = payload.u32();\n const positionsOffset = payload.u32();\n const normalsOffset = payload.u32();\n const influence = payload.f32();\n const mesh = meshes.get(meshId);\n if (!mesh) {\n throw new Error(`Morph target references missing mesh ${meshId}.`);\n }\n if (morphTargets.has(id) || vertexCount !== mesh.getTotalVertices() || !Number.isFinite(influence)) {\n throw new Error(`Morph target ${id} has invalid metadata.`);\n }\n assertRange(dataBuffer, positionsOffset, vertexCount * 3, 4, \"morph target positions\");\n let manager = morphTargetManagers.get(meshId);\n if (!manager) {\n manager = new MorphTargetManager(scene, mesh.name);\n manager.areUpdatesFrozen = true;\n trackAsset(container.morphTargetManagers, manager);\n morphTargetManagers.set(meshId, manager);\n }\n const target = new MorphTarget(stringAt(dataBuffer, nameOffset, nameLength), influence, scene, manager);\n target.id = `usd-morph-target-${id}`;\n target.setPositions(new Float32Array(dataBuffer, positionsOffset, vertexCount * 3));\n if (normalsOffset !== MISSING_OFFSET) {\n assertRange(dataBuffer, normalsOffset, vertexCount * 3, 4, \"morph target normals\");\n target.setNormals(new Float32Array(dataBuffer, normalsOffset, vertexCount * 3));\n }\n manager.addTarget(target);\n morphTargets.set(id, target);\n break;\n }\n case Command.AnalyticPrimitive: {\n const id = payload.u32();\n const nodeId = payload.u32();\n const type = payload.u32();\n const materialId = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const flags = payload.u32();\n const axis = payload.u32();\n const sizeOrRadius = payload.f32();\n const height = payload.f32();\n const tessellation = payload.u32();\n const name = stringAt(dataBuffer, nameOffset, nameLength);\n if (!Number.isFinite(sizeOrRadius) || sizeOrRadius <= 0) {\n throw new Error(`Analytic primitive ${id} has an invalid size or radius.`);\n }\n if ((type === AnalyticPrimitiveType.Cylinder || type === AnalyticPrimitiveType.Cone) && (!Number.isFinite(height) || height <= 0)) {\n throw new Error(`Analytic primitive ${id} has an invalid height.`);\n }\n if (type !== AnalyticPrimitiveType.Cube && (!Number.isInteger(tessellation) || tessellation < 3 || tessellation > 512)) {\n throw new Error(`Analytic primitive ${id} has invalid tessellation.`);\n }\n let mesh: Mesh;\n switch (type) {\n case AnalyticPrimitiveType.Cube:\n mesh = CreateBox(name, { size: sizeOrRadius }, scene);\n break;\n case AnalyticPrimitiveType.Sphere:\n mesh = CreateSphere(\n name,\n {\n diameter: sizeOrRadius * 2,\n segments: tessellation,\n },\n scene\n );\n break;\n case AnalyticPrimitiveType.Cylinder:\n case AnalyticPrimitiveType.Cone:\n mesh = CreateCylinder(\n name,\n {\n height,\n diameterTop: type === AnalyticPrimitiveType.Cone ? 0 : sizeOrRadius * 2,\n diameterBottom: sizeOrRadius * 2,\n tessellation,\n },\n scene\n );\n break;\n default:\n throw new Error(`Unsupported analytic primitive type ${type}.`);\n }\n trackAsset(container.meshes, mesh);\n if (mesh.geometry) {\n trackAsset(container.geometries, mesh.geometry);\n }\n\n // Babylon builders emit left-handed local winding. Reverse only for USD's\n // default right-handed convention; normals already point outward.\n if (!(flags & MeshFlags.LeftHanded)) {\n const sourceIndices = mesh.getIndices();\n if (!sourceIndices) {\n throw new Error(`Analytic primitive ${id} has no generated indices.`);\n }\n const reversed = Array.from(sourceIndices);\n for (let index = 0; index < reversed.length; index += 3) {\n [reversed[index], reversed[index + 2]] = [reversed[index + 2], reversed[index]];\n }\n mesh.setIndices(reversed);\n }\n if (axis === PrimitiveAxis.X) {\n mesh.rotationQuaternion = Quaternion.RotationAxis(new Vector3(0, 0, 1), -Math.PI / 2);\n } else if (axis === PrimitiveAxis.Z) {\n mesh.rotationQuaternion = Quaternion.RotationAxis(new Vector3(1, 0, 0), Math.PI / 2);\n } else if (axis !== PrimitiveAxis.Y) {\n throw new Error(`Unsupported analytic primitive axis ${axis}.`);\n }\n applyMeshOrientation(mesh, flags);\n mesh.parent = nodes.get(nodeId) ?? root ?? null;\n mesh.material = materialForMesh(materialId, Boolean(flags & MeshFlags.DoubleSided));\n meshes.set(id, mesh);\n break;\n }\n case Command.Instance: {\n const sourceId = payload.u32();\n const nodeId = payload.u32();\n const nameOffset = payload.u32();\n const nameLength = payload.u32();\n const source = meshes.get(sourceId);\n if (!source) {\n throw new Error(`Instance references missing mesh ${sourceId}.`);\n }\n if (thinInstanceSources.has(sourceId)) {\n throw new Error(`Mesh ${sourceId} cannot mix classic and thin instances.`);\n }\n classicInstanceSources.add(sourceId);\n const instance = source.createInstance(stringAt(dataBuffer, nameOffset, nameLength));\n trackAsset(container.meshes, instance);\n instance.parent = nodes.get(nodeId) ?? root ?? null;\n break;\n }\n case Command.ThinInstances: {\n const sourceId = payload.u32();\n const transformsOffset = payload.u32();\n const instanceCount = payload.u32();\n const source = meshes.get(sourceId);\n if (!source) {\n throw new Error(`Thin instances reference missing mesh ${sourceId}.`);\n }\n if (thinInstanceSources.has(sourceId) || classicInstanceSources.has(sourceId)) {\n throw new Error(`Mesh ${sourceId} has duplicate or mixed thin instances.`);\n }\n assertRange(dataBuffer, transformsOffset, instanceCount * 16, 4, \"thin instance transforms\");\n source.thinInstanceSetBuffer(\"matrix\", new Float32Array(dataBuffer, transformsOffset, instanceCount * 16), 16, true);\n source.thinInstanceEnablePicking = true;\n thinInstanceSources.add(sourceId);\n break;\n }\n case Command.Animation: {\n const targetKind = payload.u32();\n const targetId = payload.u32();\n const property = payload.u32();\n const trackIndex = payload.u32();\n const keyCount = payload.u32();\n const timesOffset = payload.u32();\n const valuesOffset = payload.u32();\n const stride = payload.u32();\n if (targetKind !== AnimationTarget.Node && targetKind !== AnimationTarget.Bone && targetKind !== AnimationTarget.MorphTarget) {\n throw new Error(`Invalid animation target kind ${targetKind}.`);\n }\n if ((targetKind === AnimationTarget.MorphTarget) !== (property === AnimationProperty.Influence)) {\n throw new Error(`Invalid animation property ${property} for target kind ${targetKind}.`);\n }\n const expectedStride =\n property === AnimationProperty.Influence\n ? 1\n : property === AnimationProperty.Position || property === AnimationProperty.Scaling\n ? 3\n : property === AnimationProperty.RotationQuaternion\n ? 4\n : property === AnimationProperty.Matrix\n ? 16\n : 0;\n if (stride !== expectedStride) {\n throw new Error(`Invalid animation value stride ${stride} for property ${property}.`);\n }\n const target =\n targetKind === AnimationTarget.Node ? nodes.get(targetId) : targetKind === AnimationTarget.Bone ? bones.get(targetId) : morphTargets.get(targetId);\n if (!target) {\n break;\n }\n const propertyName =\n property === AnimationProperty.Position\n ? \"position\"\n : property === AnimationProperty.RotationQuaternion\n ? \"rotationQuaternion\"\n : property === AnimationProperty.Scaling\n ? \"scaling\"\n : property === AnimationProperty.Influence\n ? \"influence\"\n : targetKind === AnimationTarget.Node\n ? NODE_MATRIX_PROPERTY\n : \"_matrix\";\n const dataType =\n property === AnimationProperty.Influence\n ? Animation.ANIMATIONTYPE_FLOAT\n : property === AnimationProperty.RotationQuaternion\n ? Animation.ANIMATIONTYPE_QUATERNION\n : property === AnimationProperty.Matrix\n ? Animation.ANIMATIONTYPE_MATRIX\n : Animation.ANIMATIONTYPE_VECTOR3;\n const animation = new Animation(`USD ${propertyName}`, propertyName, timeCodesPerSecond, dataType, Animation.ANIMATIONLOOPMODE_CYCLE);\n assertRange(dataBuffer, timesOffset, keyCount, 4, \"animation times\");\n assertRange(dataBuffer, valuesOffset, keyCount * stride, 4, \"animation values\");\n const times = new Float32Array(dataBuffer, timesOffset, keyCount);\n const values = new Float32Array(dataBuffer, valuesOffset, keyCount * stride);\n animation.setKeys(\n Array.from({ length: keyCount }, (_, index) => ({\n frame: times[index],\n value:\n dataType === Animation.ANIMATIONTYPE_QUATERNION\n ? Quaternion.FromArray(values, index * stride)\n : dataType === Animation.ANIMATIONTYPE_MATRIX\n ? Matrix.FromArray(values, index * stride)\n : dataType === Animation.ANIMATIONTYPE_FLOAT\n ? values[index * stride]\n : Vector3.FromArray(values, index * stride),\n }))\n );\n let group = animationGroups.get(trackIndex);\n if (!group) {\n group = new AnimationGroup(`USD Animation ${trackIndex + 1}`, scene);\n animationGroups.set(trackIndex, group);\n trackAsset(container.animationGroups, group);\n }\n group.addTargetedAnimation(animation, target);\n break;\n }\n }\n }\n for (const [meshId, manager] of morphTargetManagers) {\n manager.areUpdatesFrozen = false;\n if (!manager.isUsingTextureForTargets && manager.numTargets <= MorphTargetManager.MaxActiveMorphTargetsInVertexAttributeMode) {\n manager.optimizeInfluencers = false;\n manager.numMaxInfluencers = manager.numTargets;\n }\n meshes.get(meshId)!.morphTargetManager = manager;\n }\n } finally {\n if (!addToScene) {\n scene._blockEntityCollection = previousBlockEntityCollection;\n }\n }\n\n await awaitAbortableAsync(Promise.all(textureLoads), signal);\n await awaitAbortableAsync(\n Promise.all(\n materialTextureBindings.map(async (bindings) => {\n await applyMaterialTextureBindingsAsync(bindings);\n })\n ),\n signal\n );\n for (const { node, parentId } of pendingParents) {\n node.parent = nodes.get(parentId) ?? root ?? null;\n }\n return { container, materializeMs: performance.now() - started };\n } catch (error) {\n rollingBack = true;\n // Decode callbacks can arrive after rollback; observe their rejections without\n // delaying cancellation on an image load that may never finish.\n void Promise.allSettled(textureLoads);\n void Promise.allSettled(processedTextures.values());\n container.dispose();\n for (const url of textureUrls) {\n URL.revokeObjectURL(url);\n }\n throw error;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@babylonjs/loaders",
|
|
3
|
-
"version": "9.26.
|
|
3
|
+
"version": "9.26.1",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"module": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
"postcompile": "build-tools -c add-js-to-es6"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@babylonjs/core": "9.26.
|
|
21
|
+
"@babylonjs/core": "9.26.1",
|
|
22
22
|
"@dev/build-tools": "^1.0.0",
|
|
23
23
|
"@dev/loaders": "^1.0.0",
|
|
24
|
-
"babylonjs-gltf2interface": "9.26.
|
|
24
|
+
"babylonjs-gltf2interface": "9.26.1"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"@babylonjs/core": "^9.0.0",
|