scorm-again 2.6.1 → 2.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aicc.js +163 -162
- package/dist/aicc.js.map +1 -1
- package/dist/aicc.min.js +1 -1
- package/dist/aicc.min.js.map +1 -1
- package/dist/esm/aicc.js +163 -162
- package/dist/esm/aicc.js.map +1 -1
- package/dist/esm/aicc.min.js +1 -1
- package/dist/esm/aicc.min.js.map +1 -1
- package/dist/esm/scorm-again.js +185 -177
- package/dist/esm/scorm-again.js.map +1 -1
- package/dist/esm/scorm-again.min.js +1 -1
- package/dist/esm/scorm-again.min.js.map +1 -1
- package/dist/esm/scorm12.js +163 -162
- package/dist/esm/scorm12.js.map +1 -1
- package/dist/esm/scorm12.min.js +1 -1
- package/dist/esm/scorm12.min.js.map +1 -1
- package/dist/esm/scorm2004.js +57 -48
- package/dist/esm/scorm2004.js.map +1 -1
- package/dist/esm/scorm2004.min.js +1 -1
- package/dist/esm/scorm2004.min.js.map +1 -1
- package/dist/scorm-again.js +185 -177
- package/dist/scorm-again.js.map +1 -1
- package/dist/scorm-again.min.js +1 -1
- package/dist/scorm-again.min.js.map +1 -1
- package/dist/scorm12.js +163 -162
- package/dist/scorm12.js.map +1 -1
- package/dist/scorm12.min.js +1 -1
- package/dist/scorm12.min.js.map +1 -1
- package/dist/scorm2004.js +57 -48
- package/dist/scorm2004.js.map +1 -1
- package/dist/scorm2004.min.js +1 -1
- package/dist/scorm2004.min.js.map +1 -1
- package/dist/types/AICC.d.ts +13 -0
- package/dist/types/BaseAPI.d.ts +71 -0
- package/dist/types/Scorm12API.d.ts +39 -0
- package/dist/types/Scorm2004API.d.ts +52 -0
- package/dist/types/ScormAgain.d.ts +4 -0
- package/dist/types/cmi/aicc/attempts.d.ts +19 -0
- package/dist/types/cmi/aicc/cmi.d.ts +34 -0
- package/dist/types/cmi/aicc/core.d.ts +57 -0
- package/dist/types/cmi/aicc/evaluation.d.ts +33 -0
- package/dist/types/cmi/aicc/paths.d.ts +35 -0
- package/dist/types/cmi/aicc/student_data.d.ts +20 -0
- package/dist/types/cmi/aicc/student_demographics.d.ts +61 -0
- package/dist/types/cmi/aicc/student_preferences.d.ts +34 -0
- package/dist/types/cmi/aicc/tries.d.ts +23 -0
- package/dist/types/cmi/aicc/validation.d.ts +1 -0
- package/dist/types/cmi/common/array.d.ts +19 -0
- package/dist/types/cmi/common/base_cmi.d.ts +13 -0
- package/dist/types/cmi/common/score.d.ts +38 -0
- package/dist/types/cmi/common/validation.d.ts +3 -0
- package/dist/types/cmi/scorm12/cmi.d.ts +45 -0
- package/dist/types/cmi/scorm12/interactions.d.ts +64 -0
- package/dist/types/cmi/scorm12/nav.d.ts +11 -0
- package/dist/types/cmi/scorm12/objectives.d.ts +22 -0
- package/dist/types/cmi/scorm12/student_data.d.ts +22 -0
- package/dist/types/cmi/scorm12/student_preference.d.ts +26 -0
- package/dist/types/cmi/scorm12/validation.d.ts +2 -0
- package/dist/types/cmi/scorm2004/adl.d.ts +71 -0
- package/dist/types/cmi/scorm2004/cmi.d.ts +103 -0
- package/dist/types/cmi/scorm2004/comments.d.ts +27 -0
- package/dist/types/cmi/scorm2004/interactions.d.ts +68 -0
- package/dist/types/cmi/scorm2004/learner_preference.d.ts +26 -0
- package/dist/types/cmi/scorm2004/objectives.d.ts +38 -0
- package/dist/types/cmi/scorm2004/score.d.ts +14 -0
- package/dist/types/cmi/scorm2004/validation.d.ts +2 -0
- package/dist/types/constants/api_constants.d.ts +49 -0
- package/dist/types/constants/default_settings.d.ts +2 -0
- package/dist/types/constants/enums.d.ts +23 -0
- package/dist/types/constants/error_codes.d.ts +6 -0
- package/dist/types/constants/language_constants.d.ts +2 -0
- package/dist/types/constants/regex.d.ts +82 -0
- package/dist/types/constants/response_constants.d.ts +16 -0
- package/dist/types/exceptions/aicc_exceptions.d.ts +4 -0
- package/dist/types/exceptions/scorm12_exceptions.d.ts +4 -0
- package/dist/types/exceptions/scorm2004_exceptions.d.ts +4 -0
- package/dist/types/exceptions.d.ts +18 -0
- package/dist/types/helpers/scheduled_commit.d.ts +10 -0
- package/dist/types/interfaces/IBaseAPI.d.ts +22 -0
- package/dist/types/types/api_types.d.ts +73 -0
- package/dist/types/utilities.d.ts +19 -0
- package/package.json +3 -2
- package/src/BaseAPI.ts +23 -16
- package/src/Scorm12API.ts +1 -3
- package/src/Scorm2004API.ts +14 -10
- package/src/constants/default_settings.ts +2 -2
- package/src/types/api_types.ts +27 -2
- package/test/AICC.spec.ts +2 -2
- package/test/Scorm12API.spec.ts +3 -3
- package/test/Scorm2004API.spec.ts +20 -20
- package/tsconfig.json +19 -6
package/dist/esm/aicc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aicc.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACmD;AACZ;AAKhC,IAAM,eAAe,GAAa;IACvC,UAAU,EAAE,KAAK;IACjB,iBAAiB,EAAE,EAAE;IACrB,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,KAAK;IACnB,gBAAgB,EAAE,MAAM;IACxB,qBAAqB,EAAE,gCAAgC;IACvD,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,kBAAY,CAAC,KAAK;IAC5B,qBAAqB,EAAE,KAAK;IAC5B,mBAAmB,EAAE,KAAK;IAC1B,wBAAwB,EAAE,KAAK;IAC/B,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,EAAE;IACd,kBAAkB,EAAE,KAAK;IACzB,SAAS,EAAE,MAAM;IACjB,eAAe,EAAE,UAAgB,QAAkB;;;;;;6BAC7C,QAAO,QAAQ,KAAK,WAAW,GAA/B,cAA+B;wBACZ,WAAM,QAAQ,CAAC,IAAI,EAAE;;wBAApC,YAAY,GAAG,SAAqB;wBACtC,UAAU,GAAG,IAAI,CAAC;wBACtB,IAAI,YAAY,EAAE,CAAC;4BACjB,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;wBACxC,CAAC;wBACD,IACE,UAAU,KAAK,IAAI;4BACnB,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAC7C,CAAC;4BACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gCAC5B,WAAO;wCACL,MAAM,EAAE,8BAAgB,CAAC,UAAU;wCACnC,SAAS,EAAE,CAAC;qCACb,EAAC;4BACJ,CAAC;iCAAM,CAAC;gCACN,WAAO;wCACL,MAAM,EAAE,8BAAgB,CAAC,WAAW;wCACpC,SAAS,EAAE,GAAG;qCACf,EAAC;4BACJ,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,WAAO;oCACL,MAAM,EAAE,UAAU,CAAC,MAAM;oCACzB,SAAS,EAAE,UAAU,CAAC,SAAS;wCAC7B,CAAC,CAAC,UAAU,CAAC,SAAS;wCACtB,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,8BAAgB,CAAC,UAAU;4CACjD,CAAC,CAAC,CAAC;4CACH,CAAC,CAAC,GAAG;iCACV,EAAC;wBACJ,CAAC;;4BAEH,WAAO;4BACL,MAAM,EAAE,8BAAgB,CAAC,WAAW;4BACpC,SAAS,EAAE,GAAG;yBACf,EAAC;;;;KACH;IACD,cAAc,EAAE,UAAU,YAAY;QACpC,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,YAAY,EAAE,UAAU,YAAsB,EAAE,UAAU;QACxD,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,GAAG,CAAC;YACT,KAAK,CAAC,CAAC;YACP,KAAK,OAAO,CAAC;YACb,KAAK,kBAAY,CAAC,KAAK;gBACrB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,GAAG,CAAC;YACT,KAAK,CAAC,CAAC;YACP,KAAK,MAAM,CAAC;YACZ,KAAK,kBAAY,CAAC,IAAI;gBACpB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,GAAG,CAAC;YACT,KAAK,CAAC,CAAC;YACP,KAAK,MAAM,CAAC;YACZ,KAAK,kBAAY,CAAC,IAAI;gBACpB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,GAAG,CAAC;YACT,KAAK,CAAC,CAAC;YACP,KAAK,OAAO,CAAC;YACb,KAAK,kBAAY,CAAC,KAAK;gBACrB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC1B,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IACD,UAAU,EAAE,EAAE;IACd,kBAAkB,EAAE,KAAK;IACzB,kBAAkB,EAAE,EAAE;CACvB,CAAC;;;;AC/FF;IAYE,yBAAY,GAAY,EAAE,IAAY,EAAE,QAAgB;QAVhD,eAAU,GAAG,KAAK,CAAC;QAWzB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAKD,gCAAM,GAAN;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAKD,iCAAO,GAAP;QAAA,iBAIC;QAHC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,CAAC;;4BAAY,WAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;4BAAtC,oBAAsC;;qBAAA,CAAC,EAAE,CAAC;QACzD,CAAC;IACH,CAAC;IACH,sBAAC;AAAD,CAAC;;;;;ACzC6C;AACC;AAEc;AACS;AAGP;AAEF;AACZ;AAMjD;IAWE,iBAAsB,WAAsB,EAAE,QAAmB;;QARzD,cAAS,GAAa,eAAe,CAAC;QAS5C,IAAI,eAAe,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,8BAAgB,CAAC,qBAAqB,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAExB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAEhC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAEjE,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,GAAG,kBAAY,CAAC,IAAI,CAAC;QACvC,CAAC;IACH,CAAC;IAkBD,6BAAW,GAAX,UAAY,QAAmB;QAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAY,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,CAAC,QAAQ,GAAG,kDAAK,IAAI,CAAC,QAAQ,GAAK,QAAQ,CAAE,CAAC;QAElD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,8BAAgB,CAAC,qBAAqB,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,CAAC;IASD,4BAAU,GAAV,UACE,YAAoB,EACpB,iBAA0B,EAC1B,kBAA2B;QAE3B,IAAI,WAAW,GAAG,8BAAgB,CAAC,WAAW,CAAC;QAE/C,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QACzE,CAAC;aAAM,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,8BAAgB,CAAC,iBAAiB,CAAC;YACvD,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YACzB,WAAW,GAAG,8BAAgB,CAAC,UAAU,CAAC;YAC1C,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW,EAAE,kBAAY,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAElC,OAAO,WAAW,CAAC;IACrB,CAAC;IA6ED,wBAAM,GAAN,UACE,YAAoB,EACpB,UAAkB,EAClB,YAAsB,EACtB,UAAmB;QAEnB,UAAU,GAAG,2BAAa,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAEjE,IAAI,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAMD,sBAAI,gCAAW;aAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;;;OAAA;IAMD,sBAAI,6BAAQ;aAAZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;aAMD,UAAa,QAAkB;YAC7B,IAAI,CAAC,SAAS,GAAG,kDAAK,IAAI,CAAC,SAAS,GAAK,QAAQ,CAAE,CAAC;QACtD,CAAC;;;OARA;IAgBK,2BAAS,GAAf,UACE,YAAoB,EACpB,eAAwB;;;;;;wBAEpB,WAAW,GAAG,8BAAgB,CAAC,WAAW,CAAC;6BAG7C,IAAI,CAAC,UAAU,CACb,eAAe,EACf,IAAI,CAAC,YAAY,CAAC,uBAAuB,EACzC,IAAI,CAAC,YAAY,CAAC,oBAAoB,CACvC,EAJD,cAIC;wBAED,IAAI,CAAC,YAAY,GAAG,8BAAgB,CAAC,gBAAgB,CAAC;wBAEzB,WAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;wBAAjD,MAAM,GAAiB,SAA0B;wBACvD,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;4BACpE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBACzC,CAAC;wBACD,WAAW;4BACT,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM;gCAC5C,CAAC,CAAC,MAAM,CAAC,MAAM;gCACf,CAAC,CAAC,8BAAgB,CAAC,WAAW,CAAC;wBAEnC,IAAI,eAAe;4BAAE,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;wBAE9C,WAAW,GAAG,8BAAgB,CAAC,UAAU,CAAC;wBAC1C,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;;wBAGtC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW,EAAE,kBAAY,CAAC,IAAI,CAAC,CAAC;wBACzE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;wBAElC,WAAO,WAAW,EAAC;;;;KACpB;IAUD,0BAAQ,GAAR,UACE,YAAoB,EACpB,eAAwB,EACxB,UAAkB;QAElB,IAAI,WAAW,GAAW,EAAE,CAAC;QAE7B,IACE,IAAI,CAAC,UAAU,CACb,eAAe,EACf,IAAI,CAAC,YAAY,CAAC,oBAAoB,EACtC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,EACD,CAAC;YACD,IAAI,eAAe;gBAAE,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YAC9C,IAAI,CAAC;gBACH,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,MAAM,CACT,YAAY,EACZ,cAAc,GAAG,WAAW,EAC5B,kBAAY,CAAC,IAAI,EACjB,UAAU,CACX,CAAC;QAEF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAElC,OAAO,WAAW,CAAC;IACrB,CAAC;IAYD,0BAAQ,GAAR,UACE,YAAoB,EACpB,cAAsB,EACtB,eAAwB,EACxB,UAAkB,EAClB,KAAU;QAEV,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,WAAW,GAAW,8BAAgB,CAAC,WAAW,CAAC;QAEvD,IACE,IAAI,CAAC,UAAU,CACb,eAAe,EACf,IAAI,CAAC,YAAY,CAAC,iBAAiB,EACnC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CACnC,EACD,CAAC;YACD,IAAI,eAAe;gBAAE,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YAC9C,IAAI,CAAC;gBACH,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,0BAA0B,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,GAAG,8BAAgB,CAAC,WAAW,CAAC;QAC7C,CAAC;QAID,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC7B,IAAI,CAAC,cAAc,CACjB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,EACtC,cAAc,CACf,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CACT,YAAY,EACZ,IAAI,GAAG,KAAK,GAAG,YAAY,GAAG,WAAW,EACzC,kBAAY,CAAC,IAAI,EACjB,UAAU,CACX,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAElC,OAAO,WAAW,CAAC;IACrB,CAAC;IAQK,wBAAM,GAAZ;0EACE,YAAoB,EACpB,eAAgC;;YAAhC,yDAAgC;;;;wBAEhC,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAExB,WAAW,GAAG,8BAAgB,CAAC,WAAW,CAAC;6BAG7C,IAAI,CAAC,UAAU,CACb,eAAe,EACf,IAAI,CAAC,YAAY,CAAC,kBAAkB,EACpC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACpC,EAJD,cAIC;wBAEc,WAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;wBAApC,MAAM,GAAG,SAA2B;wBAC1C,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;4BAC7C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBACzC,CAAC;wBACD,WAAW;4BACT,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM;gCAC5C,CAAC,CAAC,MAAM,CAAC,MAAM;gCACf,CAAC,CAAC,8BAAgB,CAAC,WAAW,CAAC;wBAEnC,IAAI,CAAC,MAAM,CACT,YAAY,EACZ,WAAW,GAAG,WAAW,EACzB,kBAAY,CAAC,KAAK,EAClB,aAAa,CACd,CAAC;wBAEF,IAAI,eAAe;4BAAE,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;wBAE9C,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;;wBAGtC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW,EAAE,kBAAY,CAAC,IAAI,CAAC,CAAC;wBACzE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;wBAElC,WAAO,WAAW,EAAC;;;;KACpB;IAOD,8BAAY,GAAZ,UAAa,YAAoB;QAC/B,IAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE/C,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW,EAAE,kBAAY,CAAC,IAAI,CAAC,CAAC;QAEzE,OAAO,WAAW,CAAC;IACrB,CAAC;IASD,gCAAc,GAAd,UAAe,YAAoB,EAAE,YAA6B;QAChE,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;YACjD,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW,EAAE,kBAAY,CAAC,IAAI,CAAC,CAAC;QAEzE,OAAO,WAAW,CAAC;IACrB,CAAC;IASD,+BAAa,GAAb,UAAc,YAAoB,EAAE,YAA6B;QAC/D,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;YACjD,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW,EAAE,kBAAY,CAAC,IAAI,CAAC,CAAC;QAEzE,OAAO,WAAW,CAAC;IACrB,CAAC;IAUD,4BAAU,GAAV,UACE,eAAwB,EACxB,eAAuB,EACvB,cAAsB;QAEtB,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,IAAI,eAAe,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAWD,2CAAyB,GAAzB,UACE,YAA6B,EAC7B,OAAwB;QAAxB,yCAAwB;QAExB,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAUD,6BAAW,GAAX,UAAY,WAAmB;QAC7B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAWD,6BAAW,GAAX,UAAY,WAAmB,EAAE,MAAW;QAC1C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAWD,oCAAkB,GAAlB,UACE,UAAkB,EAClB,SAAkB,EAClB,UAAkB,EAClB,KAAU;QAEV,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;YACrC,OAAO,8BAAgB,CAAC,WAAW,CAAC;QACtC,CAAC;QAED,IAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,SAAS,GAAc,IAAI,CAAC;QAChC,IAAI,WAAW,GAAG,8BAAgB,CAAC,WAAW,CAAC;QAC/C,IAAI,eAAe,GAAG,KAAK,CAAC;QAE5B,IAAM,mBAAmB,GAAG,2CAAoC,UAAU,eAAK,UAAU,+CAA4C,CAAC;QACtI,IAAM,gBAAgB,GAAG,SAAS;YAChC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB;YACxC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAE9B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YAChD,IAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAEjC,IAAI,GAAG,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,IAAI,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;oBAC1D,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;wBACzB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;oBAC5D,CAAC;yBAAM,CAAC;wBACN,SAAS,GAAG,kDACP,SAAS,KACZ,SAAS,EAAE,KAAK,GACjB,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;oBAC/D,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,IACE,2BAAa,CAAC,UAAU,EAAE,6BAA6B,CAAC;wBACxD,IAAI,CAAC,aAAa,EAAE,EACpB,CAAC;wBACD,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;oBAClD,CAAC;oBAED,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,GAAG,EAAE,CAAC;wBAC7C,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;wBAC7B,WAAW,GAAG,8BAAgB,CAAC,UAAU,CAAC;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;oBAC5D,MAAM;gBACR,CAAC;gBAED,IAAI,SAAS,YAAY,cAAQ,EAAE,CAAC;oBAClC,IAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAG/C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClB,IAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;wBAEzC,IAAI,IAAI,EAAE,CAAC;4BACT,SAAS,GAAG,IAAI,CAAC;4BACjB,eAAe,GAAG,IAAI,CAAC;wBACzB,CAAC;6BAAM,CAAC;4BACN,IAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CACnC,UAAU,EACV,KAAK,EACL,eAAe,CAChB,CAAC;4BACF,eAAe,GAAG,IAAI,CAAC;4BAEvB,IAAI,CAAC,QAAQ,EAAE,CAAC;gCACd,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;4BAC9D,CAAC;iCAAM,CAAC;gCACN,IAAI,SAAS,CAAC,WAAW;oCAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;gCAEjD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gCACpC,SAAS,GAAG,QAAQ,CAAC;4BACvB,CAAC;wBACH,CAAC;wBAGD,GAAG,EAAE,CAAC;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,WAAW,KAAK,8BAAgB,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CACT,UAAU,EACV,oDAA6C,UAAU,yBAAe,KAAK,CAAE,EAC7E,kBAAY,CAAC,IAAI,CAClB,CAAC;QACJ,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAUD,oCAAkB,GAAlB,UACE,UAAkB,EAClB,SAAkB,EAClB,UAAkB;QAElB,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;YACrC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,SAAS,GAAc,IAAI,CAAC;QAChC,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,IAAM,yBAAyB,GAAG,2CAAoC,UAAU,eAAK,UAAU,gCAA6B,CAAC;QAC7H,IAAM,mBAAmB,GAAG,2CAAoC,UAAU,eAAK,UAAU,+CAA4C,CAAC;QACtI,IAAM,gBAAgB,GAAG,SAAS;YAChC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB;YACxC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAE9B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YAChD,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAE3B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,GAAG,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;wBACxD,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;wBAC5D,OAAO;oBACT,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IACE,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU;oBAChD,OAAO,SAAS,CAAC,cAAc,IAAI,UAAU,EAC7C,CAAC;oBACD,IAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CACxC,CAAC,EACD,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAC7B,CAAC;oBACF,OAAO,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBAC1C,CAAC;qBAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;oBAC/D,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;oBAC5D,OAAO;gBACT,CAAC;YACH,CAAC;YAED,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;gBAC5D,MAAM;YACR,CAAC;YAED,IAAI,SAAS,YAAY,cAAQ,EAAE,CAAC;gBAClC,IAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAG/C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClB,IAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAEzC,IAAI,IAAI,EAAE,CAAC;wBACT,SAAS,GAAG,IAAI,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,eAAe,CAClB,IAAI,CAAC,YAAY,CAAC,qBAAqB,EACvC,yBAAyB,CAC1B,CAAC;wBACF,MAAM;oBACR,CAAC;oBAGD,GAAG,EAAE,CAAC;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;oBAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBACzD,CAAC;qBAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAClC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAOD,+BAAa,GAAb;QACE,OAAO,IAAI,CAAC,YAAY,KAAK,8BAAgB,CAAC,iBAAiB,CAAC;IAClE,CAAC;IAOD,kCAAgB,GAAhB;QACE,OAAO,IAAI,CAAC,YAAY,KAAK,8BAAgB,CAAC,qBAAqB,CAAC;IACtE,CAAC;IAOD,8BAAY,GAAZ;QACE,OAAO,IAAI,CAAC,YAAY,KAAK,8BAAgB,CAAC,gBAAgB,CAAC;IACjE,CAAC;IAQD,oBAAE,GAAF,UAAG,YAAoB,EAAE,QAAkB;QACzC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,IAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEvC,IAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAEtC,IAAI,UAAU,GAAG,IAAI,CAAC;YACtB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,YAAY,EAAE,YAAY;gBAC1B,UAAU,EAAE,UAAU;gBACtB,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CACT,IAAI,EACJ,gCAAyB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAE,EACpD,kBAAY,CAAC,IAAI,EACjB,YAAY,CACb,CAAC;QACJ,CAAC;IACH,CAAC;IAQD,qBAAG,GAAH,UAAI,YAAoB,EAAE,QAAkB;QAC1C,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gCACzC,CAAC;YACR,IAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;yCAAS;YAEvC,IAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAEtC,IAAI,UAAU,GAAG,IAAI,CAAC;YACtB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,IAAM,WAAW,GAAG,OAAK,aAAa,CAAC,SAAS,CAC9C,UAAC,GAAG;gBACF,UAAG,CAAC,YAAY,KAAK,YAAY;oBACjC,GAAG,CAAC,UAAU,KAAK,UAAU;oBAC7B,GAAG,CAAC,QAAQ,KAAK,QAAQ;YAFzB,CAEyB,CAC5B,CAAC;YACF,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;gBACvB,OAAK,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC1C,OAAK,MAAM,CACT,KAAK,EACL,kCAA2B,OAAK,aAAa,CAAC,MAAM,CAAE,EACtD,kBAAY,CAAC,IAAI,EACjB,YAAY,CACb,CAAC;YACJ,CAAC;;;QAzBH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE;kCAAxC,CAAC;;;SA0BT;IACH,CAAC;IAOD,uBAAK,GAAL,UAAM,YAAoB;QACxB,IAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gCACzC,CAAC;YACR,IAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;yCAAS;YAEvC,IAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAEtC,IAAI,UAAU,GAAG,IAAI,CAAC;YACtB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,OAAK,aAAa,GAAG,OAAK,aAAa,CAAC,MAAM,CAC5C,UAAC,GAAG;gBACF,UAAG,CAAC,YAAY,KAAK,YAAY,IAAI,GAAG,CAAC,UAAU,KAAK,UAAU;YAAlE,CAAkE,CACrE,CAAC;;;QAdJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE;kCAAxC,CAAC;;;SAeT;IACH,CAAC;IASD,kCAAgB,GAAhB,UAAiB,YAAoB,EAAE,UAAmB,EAAE,KAAW;QACrE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,kBAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,IAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACvC,IAAM,cAAc,GAAG,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC;YAC9D,IAAM,qBAAqB,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YACpD,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAC7B,IACE,UAAU;gBACV,QAAQ,CAAC,UAAU;gBACnB,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EACrE,CAAC;gBACD,gBAAgB;oBACd,UAAU,CAAC,OAAO,CAChB,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CACjE,KAAK,CAAC,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,gBAAgB,GAAG,QAAQ,CAAC,UAAU,KAAK,UAAU,CAAC;YACxD,CAAC;YAED,IAAI,cAAc,IAAI,CAAC,CAAC,qBAAqB,IAAI,gBAAgB,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,MAAM,CACT,kBAAkB,EAClB,+BAAwB,QAAQ,CAAC,YAAY,CAAE,EAC/C,kBAAY,CAAC,IAAI,EACjB,UAAU,CACX,CAAC;gBACF,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAQD,iCAAe,GAAf,UAAgB,WAAmB,EAAE,OAAgB;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,MAAM,CACT,iBAAiB,EACjB,WAAW,GAAG,IAAI,GAAG,OAAO,EAC5B,kBAAY,CAAC,KAAK,CACnB,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAOD,iCAAe,GAAf,UAAgB,OAAe;QAC7B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,8BAAgB,CAAC,WAAW,EAAE,CAAC;YACtE,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;QAC3B,CAAC;IACH,CAAC;IAOD,uCAAqB,GAArB,UAAsB,IAAe,EAAE,UAAmB;QAA1D,iBAkFC;QAjFC,IAAI,CAAC,UAAU,EAAE,CAAC;YAEhB,UAAU,GAAG,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CACX,4EAA4E,CAC7E,CAAC;YACF,OAAO;QACT,CAAC;QAUD,SAAS,WAAW,CAClB,CAAS,EACT,CAAS,EACT,SAAiB;YAEjB,IAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAEnC,IAAI,OAAO,CAAC;YACZ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChE,IAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;oBACpB,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBACxB,OAAO,CAAC,CAAC,CAAC;oBACZ,CAAC;yBAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;wBACjC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;4BACxB,OAAO,CAAC,CAAC;wBACX,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,CAAC,CAAC;wBACZ,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,CAAC;oBACX,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,GAAG,KAAK,CAAC;YACvB,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAM,WAAW,GAAG,oCAAoC,CAAC;QACzD,IAAM,WAAW,GAAG,kCAAkC,CAAC;QAEvD,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG;YAChD,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAGH,MAAM,CAAC,IAAI,CAAC,UAAU,EAAO,EAAE,EAAO;gBAAf,CAAC,UAAE,EAAE;gBAAI,CAAC,UAAE,EAAE;YACnC,IAAI,IAAI,CAAC;YACT,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACrD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACrD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACV,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACV,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,IAAI,GAAc,CAAC;QACnB,MAAM,CAAC,OAAO,CAAC,UAAC,OAAO;YACrB,GAAG,GAAG,EAAE,CAAC;YACT,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,KAAI,CAAC,YAAY,CAAC,uBAAS,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAQD,8BAAY,GAAZ,UAAa,IAAe,EAAE,UAAuB;QAAvB,4CAAuB;QACnD,IACE,CAAC,CAAC,UAAU,IAAI,UAAU,KAAK,EAAE,CAAC;YAClC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YACxC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EACxC,CAAC;YAED,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CACX,mEAAmE,CACpE,CAAC;YACF,OAAO;QACT,CAAC;QAED,UAAU,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;QAE3D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAGzB,KAAK,IAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnD,IAAM,iBAAiB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;gBACrE,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBAExB,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;oBACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACpD,IAAI,CAAC,YAAY,CACf,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACtB,iBAAiB,GAAG,GAAG,GAAG,CAAC,CAC5B,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;oBACxC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAOD,uCAAqB,GAArB;QACE,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAE,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,QAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAA5B,CAA4B,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAMD,uCAAqB,GAArB;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAClD,CAAC;IASK,oCAAkB,GAAxB;0EACE,GAAW,EACX,MAA6C,EAC7C,SAA0B;;;YAA1B,6CAA0B;;;;wBAEpB,GAAG,GAAG,IAAI,CAAC;wBACX,YAAY,GAAiB;4BACjC,MAAM,EAAE,8BAAgB,CAAC,WAAW;4BACpC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;yBACpC,CAAC;wBAIF,IAAI,SAAS,EAAE,CAAC;4BACd,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,UAAO,QAAQ;;;gDACjD,WAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;;4CAAtC,SAAsC,CAAC;;;;iCACxC,CAAC,CAAC;4BACH,WAAO;oCACL,MAAM,EAAE,8BAAgB,CAAC,UAAU;oCACnC,SAAS,EAAE,CAAC;iCACb,EAAC;wBACJ,CAAC;wBAEK,OAAO,GAAG,UACd,GAAW,EACX,MAA6C,EAC7C,QAAkB;;;;;;wCAGhB,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;wCACxB,WAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC;;wCAA/C,QAAQ,GAAG,SAAoC;wCAErD,WAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAC;;;wCAExC,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,GAAC,EAAE,kBAAY,CAAC,KAAK,CAAC,CAAC;wCACzD,GAAG,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;wCACpC,WAAO,YAAY,EAAC;;;;6BAEvB,CAAC;wBAEK,WAAM,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;4BAAhD,WAAO,SAAyC,EAAC;;;;KAClD;IAQD,gCAAc,GAAd,UAAe,IAAY,EAAE,QAAgB;QAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,EAAE,kBAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAKD,sCAAoB,GAApB;QACE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,SAAS,EAAE,kBAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IASO,yCAAuB,GAA/B,UACE,SAAoB,EACpB,SAAiB;QAEjB,OAAO,CACL,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;YAChD,MAAM,CAAC,wBAAwB,CAC7B,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAChC,SAAS,CACV,IAAI,IAAI;YACT,SAAS,IAAI,SAAS,CACvB,CAAC;IACJ,CAAC;IASO,4CAA0B,GAAlC,UAAmC,CAAM,EAAE,WAAmB;QAC5D,IAAI,CAAC,YAAY,0BAAe,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACzC,WAAW,GAAG,8BAAgB,CAAC,WAAW,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAQS,iCAAe,GAAzB,UACE,eAAwB;QAExB,IAAM,qBAAqB,GACzB,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACvD,IAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,wBAAwB;YACzD,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC;QAEhD,IAAI,CAAC,kBAAY,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,KAAK,CACX,sBAAsB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAClE,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IASa,8BAAY,GAA1B,UACE,GAAW,EACX,MAA8B;;;gBAE9B,WAAO,KAAK,CAAC,GAAG,EAAE;wBAChB,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;wBAC7B,IAAI,EAAE,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;wBACzE,OAAO,EAAE,kDACJ,IAAI,CAAC,QAAQ,CAAC,UAAU,KAC3B,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,GACpD;wBACD,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;wBACrE,SAAS,EAAE,IAAI;qBAChB,CAAC,EAAC;;;KACJ;IAQa,mCAAiB,GAA/B,UAAgC,QAAkB;;;;;;6BAE9C,QAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,KAAK,UAAU,GAAnD,cAAmD;wBAC/C,WAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC;;wBAA7C,cAA6C;;4BAC7C,WAAM,QAAQ,CAAC,IAAI,EAAE;;wBAArB,cAAqB;;;wBAHrB,MAAM,KAGe;wBAE3B,IACE,QAAQ,CAAC,MAAM,IAAI,GAAG;4BACtB,QAAQ,CAAC,MAAM,IAAI,GAAG;4BACtB,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,8BAAgB,CAAC,UAAU,CAAC,EACzE,CAAC;4BACD,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;wBACzC,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;wBACvC,CAAC;wBACD,WAAO,MAAM,EAAC;;;;KACf;IACH,cAAC;AAAD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AChxCuC;AACC;AACG;AACoC;AACvB;AAGM;AAK3B;AACI;AAE4B;AACpC;AACkB;AAKlD;IAA0B,uEAAO;IAK/B,qBAAY,QAAmB;QAA/B,iBAqBC;QApBC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBAC5C,QAAQ,CAAC,gBAAgB,GAAG,KAAK,CAAC;YACpC,CAAC;QACH,CAAC;QAED,cAAK,YAAC,kEAAc,EAAE,QAAQ,CAAC,SAAC;QAgB3B,uBAAiB,GAAG,KAAK,CAAC;QAd/B,KAAI,CAAC,GAAG,GAAG,IAAI,iDAAG,EAAE,CAAC;QACrB,KAAI,CAAC,GAAG,GAAG,IAAI,iDAAG,EAAE,CAAC;QAGrB,KAAI,CAAC,aAAa,GAAG,KAAI,CAAC,aAAa,CAAC;QACxC,KAAI,CAAC,SAAS,GAAG,KAAI,CAAC,SAAS,CAAC;QAChC,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC;QACpC,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC;QACpC,KAAI,CAAC,SAAS,GAAG,KAAI,CAAC,SAAS,CAAC;QAChC,KAAI,CAAC,eAAe,GAAG,KAAI,CAAC,eAAe,CAAC;QAC5C,KAAI,CAAC,iBAAiB,GAAG,KAAI,CAAC,iBAAiB,CAAC;QAChD,KAAI,CAAC,gBAAgB,GAAG,KAAI,CAAC,gBAAgB,CAAC;;IAChD,CAAC;IAmBD,2BAAK,GAAL,UAAM,QAAmB;;QACvB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE3B,UAAI,CAAC,GAAG,0CAAE,KAAK,EAAE,CAAC;QAClB,UAAI,CAAC,GAAG,0CAAE,KAAK,EAAE,CAAC;IACpB,CAAC;IAOD,mCAAa,GAAb;QACE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CACpB,eAAe,EACf,8BAA8B,EAC9B,0BAA0B,CAC3B,CAAC;IACJ,CAAC;IAOD,+BAAS,GAAT;QAAA,iBAKC;QAJC,CAAC;;;4BACC,WAAM,IAAI,CAAC,cAAc,EAAE;;wBAA3B,SAA2B,CAAC;;;;aAC7B,CAAC,EAAE,CAAC;QACL,OAAO,sEAAgB,CAAC,UAAU,CAAC;IACrC,CAAC;IAEK,oCAAc,GAApB;;;;;4BACiB,WAAM,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC;;wBAAhD,MAAM,GAAG,SAAuC;wBAEtD,IAAI,MAAM,KAAK,sEAAgB,CAAC,UAAU,EAAE,CAAC;4BAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;gCAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;oCAClC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;gCACxC,CAAC;qCAAM,CAAC;oCACN,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;gCAC5C,CAAC;4BACH,CAAC;iCAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;gCACtC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;4BACxC,CAAC;wBACH,CAAC;wBAED,WAAO,MAAM,EAAC;;;;KACf;IAQD,iCAAW,GAAX,UAAY,UAAkB;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IASD,iCAAW,GAAX,UAAY,UAAkB,EAAE,KAAU;QACxC,IAAI,UAAU,KAAK,wBAAwB,EAAE,CAAC;YAC5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAOD,+BAAS,GAAT;QAAA,iBASC;QARC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,CAAC;;;gCACC,WAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC;;4BAArC,SAAqC,CAAC;;;;iBACvC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,OAAO,sEAAgB,CAAC,UAAU,CAAC;IACrC,CAAC;IAOD,qCAAe,GAAf;QACE,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAC9C,CAAC;IAQD,uCAAiB,GAAjB,UAAkB,YAAoB;QACpC,OAAO,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;IAChE,CAAC;IAQD,sCAAgB,GAAhB,UAAiB,YAAoB;QACnC,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IASQ,iCAAW,GAApB,UAAqB,UAAkB,EAAE,KAAU;QACjD,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAQQ,iCAAW,GAApB,UAAqB,UAAkB;QACrC,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC;IAUD,qCAAe,GAAf,UACE,UAAkB,EAClB,MAAW,EACX,eAAwB;QAExB,IAAI,yDAAa,CAAC,UAAU,EAAE,yBAAyB,CAAC,EAAE,CAAC;YACzD,OAAO,IAAI,wEAAmB,EAAE,CAAC;QACnC,CAAC;aAAM,IACL,eAAe;YACf,yDAAa,CACX,UAAU,EACV,sDAAsD,CACvD,EACD,CAAC;YACD,OAAO,IAAI,4FAAqC,EAAE,CAAC;QACrD,CAAC;aAAM,IACL,eAAe;YACf,yDAAa,CAAC,UAAU,EAAE,+CAA+C,CAAC,EAC1E,CAAC;YACD,OAAO,IAAI,sFAA+B,EAAE,CAAC;QAC/C,CAAC;aAAM,IACL,CAAC,eAAe;YAChB,yDAAa,CAAC,UAAU,EAAE,2BAA2B,CAAC,EACtD,CAAC;YACD,OAAO,IAAI,4EAAqB,EAAE,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAQD,6CAAuB,GAAvB,UAAwB,WAAmB,EAAE,MAAW;IAExD,CAAC;IASQ,+CAAyB,GAAlC,UACE,WAA4B,EAC5B,MAAe;QAEf,IAAI,YAAY,GAAG,UAAU,CAAC;QAC9B,IAAI,aAAa,GAAG,UAAU,CAAC;QAG/B,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAClC,IAAI,uEAAiB,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;YACtD,YAAY;gBACV,uEAAiB,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC;YACjE,aAAa;gBACX,uEAAiB,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC;QACpE,CAAC;QAED,OAAO,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;IAC/C,CAAC;IAOD,gDAA0B,GAA1B,UAA2B,MAAmB;QAE5C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACxB,CAAC;IAQD,qCAAe,GAAf,UAAgB,eAAwB;QACtC,IAAM,SAAS,GAAc,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE1D,IAAI,eAAe,EAAE,CAAC;YACpB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACjE,CAAC;QAED,IAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAM,SAAS,GAAc,+CAAiB,CAAC,SAAS,CAAC,CAAC;QAC1D,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YACvC,KAAK,WAAW;gBACd,OAAO,+CAAiB,CAAC,SAAS,CAAC,CAAC;YACtC,KAAK,QAAQ;gBACX,KAAK,IAAM,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC7B,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;wBAC5C,MAAM,CAAC,IAAI,CAAC,UAAG,IAAI,cAAI,SAAS,CAAC,IAAI,CAAC,CAAE,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,KAAK,MAAM,CAAC;YACZ;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAOD,wCAAkB,GAAlB,UAAmB,eAAwB;QACzC,IAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QACxD,IAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACvD,IAAM,gBAAgB,GAAG,wDAA0B,CACjD,eAAe,EACf,2DAAa,CAAC,WAAW,CAC1B,CAAC;QACF,IAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;QACjD,IAAI,gBAAgB,GAAG,8DAAgB,CAAC,OAAO,CAAC;QAChD,IAAI,aAAa,GAAG,2DAAa,CAAC,OAAO,CAAC;QAC1C,IAAI,YAAY,EAAE,CAAC;YACjB,gBAAgB;gBACd,YAAY,KAAK,WAAW,IAAI,YAAY,KAAK,QAAQ;oBACvD,CAAC,CAAC,8DAAgB,CAAC,SAAS;oBAC5B,CAAC,CAAC,8DAAgB,CAAC,UAAU,CAAC;YAClC,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAC9B,aAAa,GAAG,2DAAa,CAAC,MAAM,CAAC;YACvC,CAAC;iBAAM,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,aAAa,GAAG,2DAAa,CAAC,MAAM,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,IAAI,WAAW,GAAgB,IAAI,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,WAAW,GAAG,EAAE,CAAC;YAEjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAChD,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAChD,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAChD,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,IAAM,YAAY,GAAiB;YACjC,aAAa,EAAE,aAAa;YAC5B,gBAAgB,EAAE,gBAAgB;YAClC,WAAW,EAAE,SAAS;YACtB,gBAAgB,EAAE,gBAAgB;SACnC,CAAC;QACF,IAAI,WAAW,EAAE,CAAC;YAChB,YAAY,CAAC,KAAK,GAAG,WAAW,CAAC;QACnC,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAQK,+BAAS,GAAf,UAAgB,eAAwB;;;;;;;wBACtC,IAAI,eAAe,EAAE,CAAC;4BACd,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;4BACnD,IACE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa;gCAC5B,CAAC,CAAC,IAAI,CAAC,iBAAiB;oCACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,eAAe,CAAC,EAClD,CAAC;gCACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;4BAC5C,CAAC;4BAED,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gCAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oCACtC,IACE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;wCAC9B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,KAAK,EAAE;wCAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,EAC9B,CAAC;wCACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa;4CACzB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gDACnC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC;gDAC7C,CAAC,CAAC,QAAQ;gDACV,CAAC,CAAC,QAAQ,CAAC;oCACjB,CAAC;gCACH,CAAC;4BACH,CAAC;iCAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gCAClD,IACE,CAAC,uBAAI,CAAC,YAAY,0CAAE,GAAG,0CAAE,IAAI,0CAAE,aAAa,KAAI,EAAE,CAAC,KAAK,EAAE;oCAC1D,cAAc,KAAK,eAAe,EAClC,CAAC;oCACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;gCAC1C,CAAC;4BACH,CAAC;wBACH,CAAC;wBAEK,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;6BACvD,QAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,KAAK,QAAQ,GAA9C,cAA8C;wBACzC,WAAM,IAAI,CAAC,kBAAkB,CAClC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,YAAY,EACZ,eAAe,CAChB;4BAJD,WAAO,SAIN,EAAC;4BAEF,WAAO;4BACL,MAAM,EAAE,sEAAgB,CAAC,UAAU;4BACnC,SAAS,EAAE,CAAC;yBACb,EAAC;;;;KAEL;IACH,kBAAC;AAAD,CAAC,CAhayB,gDAAO,GAgahC;AAEoC;;;;;;;;;;;;;;;;;ACxbA;AACuB;AACC;AAK7D;IAA8B,mEAAO;IAUnC,kBAAY,MAIX;QACC,kBAAK,WAAE,SAAC;QACR,KAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC;QAClC,KAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,IAAI,kEAAc,CAAC,OAAO,CAAC;QAC7D,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,IAAI,iEAAwB,CAAC;QACjE,KAAI,CAAC,UAAU,GAAG,EAAE,CAAC;;IACvB,CAAC;IAKD,wBAAK,GAAL,UAAM,IAAqB;QAArB,mCAAqB;QACzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACvB,CAAC;aAAM,CAAC;YAEN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAKD,sBAAI,+BAAS;aAAb;YACE,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;aAMD,UAAc,SAAiB;YAC7B,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;;;OARA;IAcD,sBAAI,4BAAM;aAAV;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAChC,CAAC;aAMD,UAAW,MAAc;YACvB,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;;;OARA;IAcD,yBAAM,GAAN;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,eAAC;AAAD,CAAC,CAjF6B,8CAAO,GAiFpC;;;;;;;;;;;;;;;;ACrFD;IAAA;QACE,eAAU,GAAI,KAAK,CAAC;QACV,iBAAY,GAAG,KAAK,CAAC;IAmCjC,CAAC;IA5BC,sBAAI,gCAAW;aAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;;;OAAA;IAMD,sBAAI,+BAAU;aAAd;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;;;OAAA;IAKD,4BAAU,GAAV;QACE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAMD,8BAAY,GAAZ;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC;IAGH,cAAC;AAAD,CAAC;;AAKD;IAA0C,sEAAO;IAAjD;;IAEA,CAAC;IAAD,kBAAC;AAAD,CAAC,CAFyC,OAAO,GAEhD;;;;;;;;;;;;;;;;;;;;AC/CiE;AACZ;AACjB;AAC4B;AACJ;AAM7D;IAA8B,mEAAO;IAyBnC,kBAAY,MASX;QACC,kBAAK,WAAE,SAAC;QA3BA,UAAI,GAAG,EAAE,CAAC;QACV,UAAI,GAAG,EAAE,CAAC;QA4BlB,KAAI,CAAC,UAAU,GAAG,MAAM,CAAC,cAAc,IAAI,uEAAiB,CAAC,cAAc,CAAC;QAC5E,KAAI,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,WAAW;YACtC,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,2DAAa,CAAC,WAAW,CAAC;QAC9B,KAAI,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,KAAI,CAAC,oBAAoB;YACvB,MAAM,CAAC,gBAAgB,IAAI,kEAAc,CAAC,iBAAiB,CAAC;QAC9D,KAAI,CAAC,mBAAmB;YACtB,MAAM,CAAC,eAAe,IAAI,kEAAc,CAAC,aAAa,CAAC;QACzD,KAAI,CAAC,oBAAoB;YACvB,MAAM,CAAC,gBAAgB,IAAI,kEAAc,CAAC,kBAAkB,CAAC;QAC/D,KAAI,CAAC,eAAe,GAAG,MAAM,CAAC,YAAY,IAAI,2DAAa,CAAC,UAAU,CAAC;QACvE,KAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;;IACzC,CAAC;IAKD,wBAAK,GAAL;QACE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAMD,sBAAI,+BAAS;aAAb;YACE,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;aAMD,UAAc,SAAiB;YAC7B,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC1D,CAAC;;;OARA;IAcD,sBAAI,yBAAG;aAAP;YACE,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;aAMD,UAAQ,GAAW;YACjB,IACE,6DAAgB,CACd,GAAG,EACH,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,aAAa,CACnB;gBACD,CAAC,CAAC,IAAI,CAAC,aAAa;oBAClB,4DAAe,CACb,GAAG,EACH,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,CACnB,CAAC,EACJ,CAAC;gBACD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;;;OAxBA;IA8BD,sBAAI,yBAAG;aAAP;YACE,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;aAMD,UAAQ,GAAW;YACjB,IACE,6DAAgB,CACd,GAAG,EACH,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,aAAa,CACnB;gBACD,CAAC,CAAC,IAAI,CAAC,aAAa;oBAClB,4DAAe,CACb,GAAG,EACH,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,CACnB,CAAC,EACJ,CAAC;gBACD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;;;OAxBA;IA8BD,sBAAI,yBAAG;aAAP;YACE,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;aAMD,UAAQ,GAAW;YACjB,IACE,6DAAgB,CACd,GAAG,EACH,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,aAAa,CACnB;gBACD,CAAC,CAAC,IAAI,CAAC,aAAa;oBAClB,4DAAe,CACb,GAAG,EACH,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,CACnB,CAAC,EACJ,CAAC;gBACD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;;;OAxBA;IAoCD,yBAAM,GAAN;QAKE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAM,MAAM,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,eAAC;AAAD,CAAC,CAnM6B,8CAAO,GAmMpC;;;;;;;;;;;;;;ACjMM,SAAS,gBAAgB,CAC9B,KAAa,EACb,YAAoB,EACpB,SAAiB,EACjB,UAA2C,EAC3C,gBAA0B;IAE1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAM,WAAW,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,gBAAgB,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACzD,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAWM,SAAS,eAAe,CAC7B,KAAU,EACV,YAAoB,EACpB,SAAiB,EACjB,UAA2C;IAE3C,IAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;IACpB,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3D4C;AACF;AACuB;AACZ;AACO;AACgB;AAClB;AACnB;AAMxC;IAA6B,yCAAO;IAIlC;QACE,kBAAK,WAAE,SAAC;QAqBF,gBAAU,GAAG,+BAAiB,CAAC,aAAa,CAAC;QAC7C,iBAAW,GAAG,EAAE,CAAC;QACjB,mBAAa,GAAG,EAAE,CAAC;QACnB,sBAAgB,GAAG,EAAE,CAAC;QACtB,aAAO,GAAG,EAAE,CAAC;QACb,oBAAc,GAAG,eAAe,CAAC;QACjC,YAAM,GAAG,EAAE,CAAC;QACZ,iBAAW,GAAG,EAAE,CAAC;QACjB,kBAAY,GAAG,QAAQ,CAAC;QACxB,WAAK,GAAG,EAAE,CAAC;QACX,mBAAa,GAAG,UAAU,CAAC;QAC3B,mBAAa,GAAG,EAAE,CAAC;QA/BzB,KAAI,CAAC,KAAK,GAAG,IAAI,cAAQ,CAAC;YACxB,cAAc,EAAE,+BAAiB,CAAC,cAAc;YAChD,WAAW,EAAE,mBAAa,CAAC,WAAW;YACtC,gBAAgB,EAAE,0BAAc,CAAC,iBAAiB;YAClD,eAAe,EAAE,0BAAc,CAAC,aAAa;YAC7C,gBAAgB,EAAE,0BAAc,CAAC,kBAAkB;YACnD,UAAU,EAAE,yCAAsB;SACnC,CAAC,CAAC;;IACL,CAAC;IAOQ,4BAAU,GAAnB;;QACE,gBAAK,CAAC,UAAU,WAAE,CAAC;QACnB,UAAI,CAAC,KAAK,0CAAE,UAAU,EAAE,CAAC;IAC3B,CAAC;IAkBD,uBAAK,GAAL;;QACE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAMjB,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;QAEhC,UAAI,CAAC,KAAK,0CAAE,KAAK,EAAE,CAAC;IACtB,CAAC;IAOD,sBAAI,8BAAS;aAAb;YACE,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;aAOD,UAAc,SAAiB;YAC7B,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,iBAAiB,CAAC,CAAC;QACrE,CAAC;;;OATA;IAeD,sBAAI,+BAAU;aAAd;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;aAMD,UAAe,UAAkB;YAC/B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,iBAAiB,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAChC,CAAC;QACH,CAAC;;;OAZA;IAkBD,sBAAI,iCAAY;aAAhB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;aAMD,UAAiB,YAAoB;YACnC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,iBAAiB,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YACpC,CAAC;QACH,CAAC;;;OAZA;IAkBD,sBAAI,oCAAe;aAAnB;YACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC/B,CAAC;aAMD,UAAoB,eAAuB;YACzC,IAAI,iCAAkB,CAAC,eAAe,EAAE,mBAAa,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1E,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;YAC1C,CAAC;QACH,CAAC;;;OAVA;IAgBD,sBAAI,2BAAM;aAAV;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;aAMD,UAAW,MAAc;YACvB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,iBAAiB,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACxB,CAAC;QACH,CAAC;;;OAZA;IAkBD,sBAAI,kCAAa;aAAjB;YACE,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;aAMD,UAAkB,aAAqB;YACrC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,iCAAkB,CAAC,aAAa,EAAE,mBAAa,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC/D,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;gBACtC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,iCAAkB,CAAC,aAAa,EAAE,mBAAa,CAAC,UAAU,CAAC,EAAE,CAAC;oBAChE,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;;;OAhBA;IAsBD,sBAAI,0BAAK;aAAT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;aAMD,UAAU,KAAa;YACrB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,iBAAiB,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;;;OAZA;IAkBD,sBAAI,+BAAU;aAAd;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;aAMD,UAAe,UAAkB;YAC/B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,iBAAiB,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAChC,CAAC;QACH,CAAC;;;OAZA;IAkBD,sBAAI,gCAAW;aAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;aAMD,UAAgB,WAAmB;YACjC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,iBAAiB,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;YAClC,CAAC;QACH,CAAC;;;OAZA;IAkBD,sBAAI,yBAAI;aAAR;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;aAMD,UAAS,IAAY;YACnB,IAAI,iCAAkB,CAAC,IAAI,EAAE,mBAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;;;OAVA;IAgBD,sBAAI,iCAAY;aAAhB;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;aAMD,UAAiB,YAAoB;YACnC,IAAI,iCAAkB,CAAC,YAAY,EAAE,mBAAa,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChE,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YACpC,CAAC;QACH,CAAC;;;OAVA;IAgBD,sBAAI,iCAAY;aAAhB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;aAMD,UAAiB,YAAoB;YACnC,IAAI,iCAAkB,CAAC,YAAY,EAAE,mBAAa,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC;gBACxE,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YACpC,CAAC;QACH,CAAC;;;OAVA;IAiBD,qCAAmB,GAAnB,UAAoB,UAA8B;QAChD,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;QACrC,IAAM,SAAS,GAAG,UAAU,CAAC;QAE7B,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAC3D,IAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;YACjD,WAAW,GAAG,4BAAuB,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,8BAAyB,CAC9B,IAAI,CAAC,WAAW,EAChB,WAAW,EACX,IAAI,MAAM,CAAC,mBAAa,CAAC,WAAW,CAAC,CACtC,CAAC;IACJ,CAAC;IAoBD,wBAAM,GAAN;QAYE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAM,MAAM,GAAG;YACb,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,cAAC;AAAD,CAAC,CA5W4B,gBAAO,GA4WnC;;;;;;;;;;;;;ACzXiE;AACL;AACP;AACuB;AAC5B;AACC;AACX;AACM;AACG;AACY;AACX;AAKjD;IAAyB,qCAAW;IAalC,aACE,YAAqB,EACrB,YAA6B,EAC7B,WAAqB;QAErB,kBAAK,WAAE,SAAC;QAjBO,gBAAU,GAAW,EAAE,CAAC;QACjC,eAAS,GAAW,KAAK,CAAC;QAC1B,kBAAY,GAAW,EAAE,CAAC;QAC1B,eAAS,GAAW,EAAE,CAAC;QACvB,wBAAkB,GAAW,EAAE,CAAC;QActC,IAAI,WAAW;YAAE,KAAI,CAAC,UAAU,EAAE,CAAC;QACnC,KAAI,CAAC,UAAU,GAAG,YAAY;YAC5B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,+BAAiB,CAAC,YAAY,CAAC;QACnC,KAAI,CAAC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,KAAI,CAAC,UAAU,GAAG,IAAI,wBAAa,EAAE,CAAC;QACtC,KAAI,CAAC,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,mCAAc,EAAE,CAAC;QACvE,KAAI,CAAC,kBAAkB,GAAG,IAAI,uCAAoB,EAAE,CAAC;QACrD,KAAI,CAAC,YAAY,GAAG,IAAI,4BAAe,EAAE,CAAC;;IAC5C,CAAC;IAWD,mBAAK,GAAL;;QACE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,UAAI,CAAC,IAAI,0CAAE,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,wBAAa,EAAE,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,4BAAe,EAAE,CAAC;QAC1C,UAAI,CAAC,YAAY,0CAAE,KAAK,EAAE,CAAC;QAC3B,UAAI,CAAC,kBAAkB,0CAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAKQ,wBAAU,GAAnB;;QACE,gBAAK,CAAC,UAAU,WAAE,CAAC;QACnB,UAAI,CAAC,IAAI,0CAAE,UAAU,EAAE,CAAC;QACxB,UAAI,CAAC,UAAU,0CAAE,UAAU,EAAE,CAAC;QAC9B,UAAI,CAAC,YAAY,0CAAE,UAAU,EAAE,CAAC;QAChC,UAAI,CAAC,kBAAkB,0CAAE,UAAU,EAAE,CAAC;QACtC,UAAI,CAAC,YAAY,0CAAE,UAAU,EAAE,CAAC;IAClC,CAAC;IAmBD,oBAAM,GAAN;QAWE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAM,MAAM,GAAG;YACb,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAMD,sBAAI,yBAAQ;aAAZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;aAMD,UAAa,QAAgB;YAC3B,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,iBAAiB,CAAC,CAAC;QACrE,CAAC;;;OARA;IAcD,sBAAI,0BAAS;aAAb;YACE,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;aAMD,UAAc,SAAiB;YAC7B,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,iBAAiB,CAAC,CAAC;QACrE,CAAC;;;OARA;IAcD,sBAAI,6BAAY;aAAhB;;YACE,OAAO,UAAI,CAAC,IAAI,0CAAE,YAAY,CAAC;QACjC,CAAC;aAMD,UAAiB,YAAoB;YACnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;YACxC,CAAC;QACH,CAAC;;;OAVA;IAgBD,sBAAI,4BAAW;aAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;aAMD,UAAgB,WAAmB;YACjC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,iBAAiB,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;YAClC,CAAC;QACH,CAAC;;;OAZA;IAkBD,sBAAI,yBAAQ;aAAZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;aAMD,UAAa,QAAgB;YAC3B,IAAI,iCAAkB,CAAC,QAAQ,EAAE,mBAAa,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC;gBACpE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC5B,CAAC;QACH,CAAC;;;OAVA;IAgBD,sBAAI,kCAAiB;aAArB;YACE,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;aAMD,UAAsB,iBAAyB;YAC7C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,yCAAsB,CAAC,0BAAc,CAAC,iBAAiB,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;YAC9C,CAAC;QACH,CAAC;;;OAZA;IAmBD,iCAAmB,GAAnB;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IACH,UAAC;AAAD,CAAC,CA/NwB,oBAAW,GA+NnC;;;;;;;;;;;;;;;;;;;;;;;;;AC9O0C;AACuB;AACL;AACgB;AAChC;AACwB;AACf;AAMtD;IAAqC,0EAAQ;IAI3C;QACE,aAAK,YAAC;YACJ,QAAQ,EAAE,uEAAiB,CAAC,qBAAqB;YACjD,SAAS,EAAE,kEAAc,CAAC,iBAAiB;YAC3C,UAAU,EAAE,kFAAsB;SACnC,CAAC,SAAC;IACL,CAAC;IACH,sBAAC;AAAD,CAAC,CAXoC,mDAAQ,GAW5C;;AAMD;IAA2C,gFAAO;IAIhD;QACE,kBAAK,WAAE,SAAC;QAyBF,SAAG,GAAG,EAAE,CAAC;QACT,WAAK,GAAG,EAAE,CAAC;QACX,WAAK,GAAG,EAAE,CAAC;QACX,gBAAU,GAAG,EAAE,CAAC;QAChB,uBAAiB,GAAG,EAAE,CAAC;QACvB,aAAO,GAAG,EAAE,CAAC;QACb,cAAQ,GAAG,EAAE,CAAC;QA9BpB,KAAI,CAAC,UAAU,GAAG,IAAI,mDAAQ,CAAC;YAC7B,SAAS,EAAE,kEAAc,CAAC,iBAAiB;YAC3C,UAAU,EAAE,kFAAsB;YAClC,QAAQ,EAAE,uEAAiB,CAAC,mBAAmB;SAChD,CAAC,CAAC;QACH,KAAI,CAAC,iBAAiB,GAAG,IAAI,mDAAQ,CAAC;YACpC,SAAS,EAAE,kEAAc,CAAC,iBAAiB;YAC3C,UAAU,EAAE,kFAAsB;YAClC,QAAQ,EAAE,uEAAiB,CAAC,0BAA0B;SACvD,CAAC,CAAC;;IACL,CAAC;IAQQ,0CAAU,GAAnB;;QACE,gBAAK,CAAC,UAAU,WAAE,CAAC;QACnB,UAAI,CAAC,UAAU,0CAAE,UAAU,EAAE,CAAC;QAC9B,UAAI,CAAC,iBAAiB,0CAAE,UAAU,EAAE,CAAC;IACvC,CAAC;IAaQ,qCAAK,GAAd;;QACE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QAEnB,UAAI,CAAC,UAAU,0CAAE,KAAK,EAAE,CAAC;QACzB,UAAI,CAAC,iBAAiB,0CAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAMD,sBAAI,qCAAE;aAAN;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC;aAMD,UAAO,EAAU;YACf,IAAI,+DAAkB,CAAC,EAAE,EAAE,2DAAa,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;;;OAVA;IAgBD,sBAAI,uCAAI;aAAR;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;aAMD,UAAS,IAAY;YACnB,IAAI,+DAAkB,CAAC,IAAI,EAAE,2DAAa,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;;;OAVA;IAgBD,sBAAI,uCAAI;aAAR;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;aAMD,UAAS,IAAY;YACnB,IAAI,+DAAkB,CAAC,IAAI,EAAE,2DAAa,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;;;OAVA;IAgBD,sBAAI,4CAAS;aAAb;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;aAMD,UAAc,SAAiB;YAC7B,IACE,+DAAkB,CAAC,SAAS,EAAE,2DAAa,CAAC,UAAU,CAAC;gBACvD,8DAAiB,CAAC,SAAS,EAAE,2DAAa,CAAC,eAAe,CAAC,EAC3D,CAAC;gBACD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC9B,CAAC;QACH,CAAC;;;OAbA;IAmBD,sBAAI,mDAAgB;aAApB;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;aAMD,UAAqB,gBAAwB;YAC3C,IAAI,+DAAkB,CAAC,gBAAgB,EAAE,2DAAa,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1E,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;YAC5C,CAAC;QACH,CAAC;;;OAVA;IAgBD,sBAAI,yCAAM;aAAV;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;aAMD,UAAW,MAAc;YACvB,IAAI,+DAAkB,CAAC,MAAM,EAAE,2DAAa,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACxB,CAAC;QACH,CAAC;;;OAVA;IAgBD,sBAAI,0CAAO;aAAX;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;aAMD,UAAY,OAAe;YACzB,IAAI,+DAAkB,CAAC,OAAO,EAAE,2DAAa,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YAC1B,CAAC;QACH,CAAC;;;OAVA;IA6BD,sCAAM,GAAN;QAWE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,4BAAC;AAAD,CAAC,CAzP0C,qDAAO,GAyPjD;;AAMD;IAAqD,0FAAO;IAI1D;QACE,kBAAK,WAAE,SAAC;QAGF,SAAG,GAAG,EAAE,CAAC;;IAFjB,CAAC;IAOD,+CAAK,GAAL;QACE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,CAAC;IAMD,sBAAI,+CAAE;aAAN;YACE,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC;aAMD,UAAO,EAAU;YACf,IAAI,+DAAkB,CAAC,EAAE,EAAE,2DAAa,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;;;OAVA;IAoBD,gDAAM,GAAN;QAGE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,IAAI,CAAC,EAAE;SACZ,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,sCAAC;AAAD,CAAC,CAtDoD,qDAAO,GAsD3D;;AAMD;IAA2D,gGAAO;IAIhE;QACE,kBAAK,WAAE,SAAC;QAGF,cAAQ,GAAG,EAAE,CAAC;;IAFtB,CAAC;IAOD,qDAAK,GAAL;QACE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAMD,sBAAI,0DAAO;aAAX;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;aAMD,UAAY,OAAe;YACzB,IAAI,+DAAkB,CAAC,OAAO,EAAE,2DAAa,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YAC1B,CAAC;QACH,CAAC;;;OAVA;IAoBD,sDAAM,GAAN;QAGE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAM,MAAM,GAAG;YACb,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,4CAAC;AAAD,CAAC,CAzD0D,qDAAO,GAyDjE;;;;;;;;;;;;;;;;;;ACjZ4C;AACK;AACI;AAKtD;IAAyB,8DAAO;IAI9B;QACE,kBAAK,WAAE,SAAC;QAWF,YAAM,GAAG,EAAE,CAAC;;IAVpB,CAAC;IAKD,mBAAK,GAAL;QACE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAQD,sBAAI,sBAAK;aAAT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;aAMD,UAAU,KAAa;YACrB,IAAI,+DAAkB,CAAC,KAAK,EAAE,2DAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;;;OAVA;IAoBD,oBAAM,GAAN;QAGE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAM,MAAM,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,UAAC;AAAD,CAAC,CAtDwB,qDAAO,GAsD/B;;;;;;;;;;;;;;;;;;;;;;;;AC7D4C;AACF;AACuB;AACZ;AACO;AACgB;AAC3B;AACP;AAM3C;IAAmC,wEAAQ;IAIzC;QACE,aAAK,YAAC;YACJ,QAAQ,EAAE,uEAAiB,CAAC,mBAAmB;YAC/C,SAAS,EAAE,kEAAc,CAAC,iBAAiB;YAC3C,UAAU,EAAE,kFAAsB;SACnC,CAAC,SAAC;IACL,CAAC;IACH,oBAAC;AAAD,CAAC,CAXkC,mDAAQ,GAW1C;;AAMD;IAAyC,8EAAO;IAI9C;QACE,kBAAK,WAAE,SAAC;QAaF,SAAG,GAAG,EAAE,CAAC;QACT,aAAO,GAAG,EAAE,CAAC;QAbnB,KAAI,CAAC,KAAK,GAAG,IAAI,mDAAQ,CAAC;YACxB,cAAc,EAAE,uEAAiB,CAAC,cAAc;YAChD,WAAW,EAAE,2DAAa,CAAC,WAAW;YACtC,gBAAgB,EAAE,kEAAc,CAAC,iBAAiB;YAClD,eAAe,EAAE,kEAAc,CAAC,aAAa;YAC7C,gBAAgB,EAAE,kEAAc,CAAC,kBAAkB;YACnD,UAAU,EAAE,kFAAsB;SACnC,CAAC,CAAC;;IACL,CAAC;IAUD,mCAAK,GAAL;;QACE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,UAAI,CAAC,KAAK,0CAAE,KAAK,EAAE,CAAC;IACtB,CAAC;IAMD,sBAAI,mCAAE;aAAN;YACE,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC;aAMD,UAAO,EAAU;YACf,IAAI,+DAAkB,CAAC,EAAE,EAAE,2DAAa,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;;;OAVA;IAgBD,sBAAI,uCAAM;aAAV;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;aAMD,UAAW,MAAc;YACvB,IAAI,+DAAkB,CAAC,MAAM,EAAE,2DAAa,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACxB,CAAC;QACH,CAAC;;;OAVA;IAsBD,oCAAM,GAAN;QAKE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,0BAAC;AAAD,CAAC,CA3FwC,qDAAO,GA2F/C;;;;;;;;;;;;;;;;;;;ACzH4C;AACqB;AACW;AAChB;AAM7D;IAAoC,yEAAO;IAUzC,wBAAY,qBAA8B;QACxC,kBAAK,WAAE,SAAC;QATF,oBAAc,GAAG,EAAE,CAAC;QACpB,uBAAiB,GAAG,EAAE,CAAC;QACvB,wBAAkB,GAAG,EAAE,CAAC;QAQ9B,KAAI,CAAC,UAAU,GAAG,qBAAqB;YACrC,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,uEAAiB,CAAC,qBAAqB,CAAC;;IAC9C,CAAC;IAKD,8BAAK,GAAL;QACE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAOD,sBAAI,qCAAS;aAAb;YACE,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;aAOD,UAAc,SAAiB;YAC7B,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,iBAAiB,CAAC,CAAC;QACrE,CAAC;;;OATA;IAeD,sBAAI,yCAAa;aAAjB;YACE,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;aAMD,UAAkB,aAAqB;YACrC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,iBAAiB,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;YACtC,CAAC;QACH,CAAC;;;OAZA;IAkBD,sBAAI,4CAAgB;aAApB;YACE,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;aAMD,UAAqB,gBAAwB;YAC3C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,iBAAiB,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;YAC5C,CAAC;QACH,CAAC;;;OAZA;IAkBD,sBAAI,6CAAiB;aAArB;YACE,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;aAMD,UAAsB,iBAAyB;YAC7C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,iBAAiB,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;YAC9C,CAAC;QACH,CAAC;;;OAZA;IAyBD,+BAAM,GAAN;QAKE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAM,MAAM,GAAG;YACb,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,qBAAC;AAAD,CAAC,CA/HmC,qDAAO,GA+H1C;;;;;;;;;;;;;;;;;;;;;ACxI4C;AACqB;AACW;AACR;AACf;AACO;AAM7D;IAA0C,+EAAO;IAO/C,8BAAY,2BAAoC;QAC9C,kBAAK,WAAE,SAAC;QAMF,YAAM,GAAG,EAAE,CAAC;QACZ,eAAS,GAAG,EAAE,CAAC;QACf,YAAM,GAAG,EAAE,CAAC;QACZ,WAAK,GAAG,EAAE,CAAC;QARjB,KAAI,CAAC,UAAU,GAAG,2BAA2B;YAC3C,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,uEAAiB,CAAC,2BAA2B,CAAC;;IACpD,CAAC;IAUD,oCAAK,GAAL;QACE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAOD,sBAAI,2CAAS;aAAb;YACE,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;aAOD,UAAc,SAAiB;YAC7B,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,iBAAiB,CAAC,CAAC;QACrE,CAAC;;;OATA;IAeD,sBAAI,uCAAK;aAAT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;aAMD,UAAU,KAAa;YACrB,IACE,+DAAkB,CAAC,KAAK,EAAE,2DAAa,CAAC,WAAW,CAAC;gBACpD,8DAAiB,CAAC,KAAK,EAAE,2DAAa,CAAC,WAAW,CAAC,EACnD,CAAC;gBACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;;;OAbA;IAmBD,sBAAI,0CAAQ;aAAZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;aAMD,UAAa,QAAgB;YAC3B,IAAI,+DAAkB,CAAC,QAAQ,EAAE,2DAAa,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC5B,CAAC;QACH,CAAC;;;OAVA;IAgBD,sBAAI,uCAAK;aAAT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;aAMD,UAAU,KAAa;YACrB,IACE,+DAAkB,CAAC,KAAK,EAAE,2DAAa,CAAC,WAAW,CAAC;gBACpD,8DAAiB,CAAC,KAAK,EAAE,2DAAa,CAAC,WAAW,CAAC,EACnD,CAAC;gBACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;;;OAbA;IAmBD,sBAAI,sCAAI;aAAR;YACE,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;aAMD,UAAS,IAAY;YACnB,IACE,+DAAkB,CAAC,IAAI,EAAE,2DAAa,CAAC,WAAW,CAAC;gBACnD,8DAAiB,CAAC,IAAI,EAAE,2DAAa,CAAC,UAAU,CAAC,EACjD,CAAC;gBACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;;;OAbA;IA2BD,qCAAM,GAAN;QAME,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAM,MAAM,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,2BAAC;AAAD,CAAC,CAzJyC,qDAAO,GAyJhD;;;;;;;;;;;;;;;;;ACpKwE;AACZ;AACgB;AAStE,SAAS,kBAAkB,CAChC,KAAa,EACb,YAAoB,EACpB,gBAA0B;IAE1B,OAAO,oEAAgB,CACrB,KAAK,EACL,YAAY,EACZ,kEAAc,CAAC,aAAa,EAC5B,kFAAsB,EACtB,gBAAgB,CACjB,CAAC;AACJ,CAAC;AASM,SAAS,iBAAiB,CAC/B,KAAU,EACV,YAAoB,EACpB,gBAA0B;IAE1B,IAAI,CAAC,gBAAgB,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,kFAAsB,CAAC,kEAAc,CAAC,kBAAkB,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,mEAAe,CACpB,KAAK,EACL,YAAY,EACZ,kEAAc,CAAC,kBAAkB,EACjC,kFAAsB,CACvB,CAAC;AACJ,CAAC;;;;;;;;;;;;;;;;;ACGM,IAAM,gBAAgB,GAAoB;IAC/C,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,OAAO;IACpB,qBAAqB,EAAE,CAAC;IACxB,iBAAiB,EAAE,CAAC;IACpB,gBAAgB,EAAE,CAAC;CACpB,CAAC;AAEK,IAAM,iBAAiB,GAAmB;IAE/C,YAAY,EACV,gGAAgG;IAClG,aAAa,EACX,mHAAmH;IACrH,cAAc,EAAE,aAAa;IAC7B,iBAAiB,EAAE,uBAAuB;IAC1C,mBAAmB,EAAE,iBAAiB;IACtC,0BAA0B,EAAE,SAAS;IACrC,qBAAqB,EAAE,kDAAkD;IACzE,2BAA2B,EAAE,2BAA2B;IACxD,qBAAqB,EACnB,qFAAqF;IACvF,kBAAkB,EAAE;QAClB,KAAK,EAAE;YACL,YAAY,EAAE,mBAAmB;YACjC,aAAa,EACX,gGAAgG;SACnG;QACD,KAAK,EAAE;YACL,YAAY,EAAE,wBAAwB;YACtC,aAAa,EACX,gGAAgG;SACnG;QACD,KAAK,EAAE;YACL,YAAY,EAAE,8BAA8B;YAC5C,aAAa,EACX,sKAAsK;SACzK;QACD,KAAK,EAAE;YACL,YAAY,EAAE,0CAA0C;YACxD,aAAa,EACX,gKAAgK;SACnK;QACD,KAAK,EAAE;YACL,YAAY,EAAE,iBAAiB;YAC/B,aAAa,EACX,uEAAuE;SAC1E;QACD,KAAK,EAAE;YACL,YAAY,EAAE,uBAAuB;YACrC,aAAa,EACX,mNAAmN;SACtN;QACD,KAAK,EAAE;YACL,YAAY,EAAE,yCAAyC;YACvD,aAAa,EACX,0IAA0I;SAC7I;QACD,KAAK,EAAE;YACL,YAAY,EAAE,sBAAsB;YACpC,aAAa,EACX,yEAAyE;SAC5E;QACD,KAAK,EAAE;YACL,YAAY,EAAE,uBAAuB;YACrC,aAAa,EACX,6EAA6E;SAChF;QACD,KAAK,EAAE;YACL,YAAY,EAAE,qBAAqB;YACnC,aAAa,EACX,qHAAqH;SACxH;QACD,KAAK,EAAE;YACL,YAAY,EAAE,4BAA4B;YAC1C,aAAa,EACX,+HAA+H;SAClI;QACD,KAAK,EAAE;YACL,YAAY,EAAE,uCAAuC;YACrD,aAAa,EACX,yLAAyL;SAC5L;KACF;CACF,CAAC;AACK,IAAM,cAAc,uGACtB,iBAAiB,GACjB;IACD,YAAY,EACV,2GAA2G;IAC7G,2BAA2B,EACzB,wFAAwF;IAC1F,qBAAqB,EACnB,uEAAuE;IACzE,6BAA6B,EAC3B,2IAA2I;IAC7I,cAAc,EAAE,mBAAmB;IACnC,wBAAwB,EAAE,qBAAqB;IAC/C,cAAc,EAAE,uDAAuD;CACxE,CACF,CAAC;AAEK,IAAM,mBAAmB,GAAuB;IAErD,YAAY,EACV,sTAAsT;IACxT,iBAAiB,EAAE,4BAA4B;IAC/C,cAAc,EAAE,oBAAoB;IACpC,mBAAmB,EACjB,wEAAwE;IAC1E,0BAA0B,EAAE,SAAS;IACrC,qBAAqB,EAAE,kDAAkD;IACzE,2BAA2B,EACzB,sDAAsD;IACxD,qBAAqB,EACnB,sGAAsG;IACxG,iBAAiB,EAAE,UAAU;IAC7B,kBAAkB,EAAE;QAClB,GAAG,EAAE;YACH,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE,0DAA0D;SAC1E;QACD,KAAK,EAAE;YACL,YAAY,EAAE,mBAAmB;YACjC,aAAa,EACX,8FAA8F;SACjG;QACD,KAAK,EAAE;YACL,YAAY,EAAE,gCAAgC;YAC9C,aAAa,EAAE,kDAAkD;SAClE;QACD,KAAK,EAAE;YACL,YAAY,EAAE,qBAAqB;YACnC,aAAa,EACX,kEAAkE;SACrE;QACD,KAAK,EAAE;YACL,YAAY,EAAE,6BAA6B;YAC3C,aAAa,EACX,iEAAiE;SACpE;QACD,KAAK,EAAE;YACL,YAAY,EAAE,6BAA6B;YAC3C,aAAa,EAAE,iDAAiD;SACjE;QACD,KAAK,EAAE;YACL,YAAY,EAAE,mCAAmC;YACjD,aAAa,EACX,6EAA6E;SAChF;QACD,KAAK,EAAE;YACL,YAAY,EAAE,+BAA+B;YAC7C,aAAa,EACX,gEAAgE;SACnE;QACD,KAAK,EAAE;YACL,YAAY,EAAE,qCAAqC;YACnD,aAAa,EACX,4EAA4E;SAC/E;QACD,KAAK,EAAE;YACL,YAAY,EAAE,iCAAiC;YAC/C,aAAa,EACX,0EAA0E;SAC7E;QACD,KAAK,EAAE;YACL,YAAY,EAAE,kCAAkC;YAChD,aAAa,EACX,4EAA4E;SAC/E;QACD,KAAK,EAAE;YACL,YAAY,EAAE,8BAA8B;YAC5C,aAAa,EACX,0EAA0E;SAC7E;QACD,KAAK,EAAE;YACL,YAAY,EAAE,8BAA8B;YAC5C,aAAa,EACX,0EAA0E;SAC7E;QACD,KAAK,EAAE;YACL,YAAY,EAAE,0BAA0B;YACxC,aAAa,EACX,wEAAwE;SAC3E;QACD,KAAK,EAAE;YACL,YAAY,EAAE,wBAAwB;YACtC,aAAa,EACX,6JAA6J;SAChK;QACD,KAAK,EAAE;YACL,YAAY,EAAE,qBAAqB;YACnC,aAAa,EACX,4HAA4H;SAC/H;QACD,KAAK,EAAE;YACL,YAAY,EAAE,qBAAqB;YACnC,aAAa,EACX,4HAA4H;SAC/H;QACD,KAAK,EAAE;YACL,YAAY,EAAE,wBAAwB;YACtC,aAAa,EACX,0HAA0H;SAC7H;QACD,KAAK,EAAE;YACL,YAAY,EAAE,8BAA8B;YAC5C,aAAa,EACX,qGAAqG;SACxG;QACD,KAAK,EAAE;YACL,YAAY,EAAE,kCAAkC;YAChD,aAAa,EACX,uMAAuM;SAC1M;QACD,KAAK,EAAE;YACL,YAAY,EAAE,0CAA0C;YACxD,aAAa,EACX,mLAAmL;SACtL;QACD,KAAK,EAAE;YACL,YAAY,EAAE,iCAAiC;YAC/C,aAAa,EACX,sEAAsE;SACzE;QACD,KAAK,EAAE;YACL,YAAY,EAAE,kCAAkC;YAChD,aAAa,EACX,0EAA0E;SAC7E;QACD,KAAK,EAAE;YACL,YAAY,EAAE,kCAAkC;YAChD,aAAa,EACX,kHAAkH;SACrH;QACD,KAAK,EAAE;YACL,YAAY,EAAE,uCAAuC;YACrD,aAAa,EACX,4HAA4H;SAC/H;QACD,KAAK,EAAE;YACL,YAAY,EAAE,uCAAuC;YACrD,aAAa,EACX,yLAAyL;SAC5L;KACF;CACF,CAAC;;;;;;;;;;;;;;;ACxSF,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,iCAAmB;IACnB,2BAAa;IACb,6BAAe;AACjB,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAED,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB;IACjB,kCAAiB;IACjB,oCAAmB;AACrB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,2CAAuB;IACvB,6CAAyB;IACzB,uCAAmB;AACrB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,yCAAC;IACD,iDAAK;IACL,+CAAI;IACJ,+CAAI;IACJ,iDAAK;IACL,+CAAI;AACN,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB;;;;;;;;;;;;;;;;ACrBM,IAAM,aAAa,GAAc;IACtC,OAAO,EAAE,GAAG;IACZ,qBAAqB,EAAE,GAAG;IAC1B,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,GAAG;IACf,mBAAmB,EAAE,GAAG;IACxB,uBAAuB,EAAE,GAAG;IAC5B,oBAAoB,EAAE,GAAG;IACzB,oBAAoB,EAAE,GAAG;IACzB,mBAAmB,EAAE,GAAG;IACxB,iBAAiB,EAAE,GAAG;IACtB,gBAAgB,EAAE,GAAG;IACrB,kBAAkB,EAAE,GAAG;IACvB,iBAAiB,EAAE,GAAG;IACtB,cAAc,EAAE,GAAG;IACnB,cAAc,EAAE,GAAG;IACnB,WAAW,EAAE,GAAG;IAChB,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,GAAG;IACxB,sBAAsB,EAAE,GAAG;IAC3B,oBAAoB,EAAE,GAAG;IACzB,qBAAqB,EAAE,GAAG;IAC1B,qBAAqB,EAAE,GAAG;IAC1B,iBAAiB,EAAE,GAAG;IACtB,iBAAiB,EAAE,GAAG;IACtB,kBAAkB,EAAE,GAAG;IACvB,aAAa,EAAE,GAAG;IAClB,kBAAkB,EAAE,GAAG;IACvB,0BAA0B,EAAE,GAAG;CAChC,CAAC;AAEK,IAAM,cAAc,uGACtB,aAAa,KAChB,oBAAoB,EAAE,GAAG,EACzB,iBAAiB,EAAE,GAAG,EACtB,kBAAkB,EAAE,GAAG,EACvB,cAAc,EAAE,GAAG,EACnB,cAAc,EAAE,GAAG,EACnB,WAAW,EAAE,GAAG,EAChB,oBAAoB,EAAE,GAAG,EACzB,qBAAqB,EAAE,GAAG,EAC1B,qBAAqB,EAAE,GAAG,EAC1B,iBAAiB,EAAE,GAAG,EACtB,iBAAiB,EAAE,GAAG,EACtB,kBAAkB,EAAE,GAAG,EACvB,aAAa,EAAE,GAAG,EAClB,kBAAkB,EAAE,GAAG,EACvB,0BAA0B,EAAE,GAAG,GAChC,CAAC;AAEK,IAAM,gBAAgB,uGACxB,aAAa,KAChB,qBAAqB,EAAE,GAAG,EAC1B,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,GAAG,EACf,mBAAmB,EAAE,GAAG,EACxB,uBAAuB,EAAE,GAAG,EAC5B,qBAAqB,EAAE,GAAG,EAC1B,oBAAoB,EAAE,GAAG,EACzB,mBAAmB,EAAE,GAAG,EACxB,iBAAiB,EAAE,GAAG,EACtB,gBAAgB,EAAE,GAAG,EACrB,kBAAkB,EAAE,GAAG,EACvB,iBAAiB,EAAE,GAAG,EACtB,cAAc,EAAE,GAAG,EACnB,mBAAmB,EAAE,GAAG,EACxB,mBAAmB,EAAE,GAAG,EACxB,sBAAsB,EAAE,GAAG,EAC3B,oBAAoB,EAAE,GAAG,EACzB,qBAAqB,EAAE,GAAG,EAC1B,qBAAqB,EAAE,GAAG,EAC1B,iBAAiB,EAAE,GAAG,EACtB,kBAAkB,EAAE,GAAG,EACvB,aAAa,EAAE,GAAG,EAClB,kBAAkB,EAAE,GAAG,EACvB,0BAA0B,EAAE,GAAG,GAChC,CAAC;;;;;;;;;;;;;;;;AChFK,IAAM,aAAa,GAAG;IAC3B,YAAY,EAAE,YAAY;IAC1B,aAAa,EAAE,aAAa;IAC5B,OAAO,EAAE,uDAAuD;IAChE,WAAW,EAAE,mDAAmD;IAEhE,UAAU,EAAE,QAAQ;IACpB,WAAW,EAAE,cAAc;IAC3B,UAAU,EAAE,4BAA4B;IAExC,aAAa,EAAE,+BAA+B;IAC9C,WAAW,EAAE,YAAY;IAEzB,QAAQ,EAAE,aAAa;IAEvB,SAAS,EAAE,gDAAgD;IAC3D,UAAU,EAAE,8DAA8D;IAC1E,OAAO,EAAE,8BAA8B;IACvC,OAAO,EACL,8EAA8E;IAChF,SAAS,EACP,mEAAmE;IACrE,QAAQ,EAAE,uBAAuB;IAEjC,WAAW,EAAE,OAAO;IACpB,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,UAAU;IACvB,eAAe,EAAE,UAAU;IAC3B,UAAU,EAAE,MAAM;CACnB,CAAC;AACK,IAAM,UAAU,GAAG,oGACrB,aAAa,GACb;IACD,aAAa,EAAE,cAAc;CAC9B,CACF,CAAC;AACK,IAAM,eAAe,GAAG;IAC7B,YAAY,EAAE,4BAA4B;IAC1C,YAAY,EAAE,4BAA4B;IAC1C,aAAa,EAAE,6BAA6B;IAC5C,aAAa,EAAE,6BAA6B;IAC5C,cAAc,EAAE,8BAA8B;IAC9C,OAAO,EAAE,+CAA+C;IAExD,gBAAgB,EACd,0EAA0E;IAE5E,SAAS,EAAE,6DAA6D;IAExE,kBAAkB,EAChB,qEAAqE;IAEvE,iBAAiB,EACf,2EAA2E;IAE7E,OAAO,EACL,0RAA0R;IAC5R,WAAW,EACT,4HAA4H;IAC9H,UAAU,EAAE,QAAQ;IACpB,WAAW,EAAE,cAAc;IAC3B,UAAU,EAAE,mCAAmC;IAC/C,aAAa,EAAE,yBAAyB;IACxC,kBAAkB,EAAE,yBAAyB;IAC7C,iBAAiB,EACf,wEAAwE;IAE1E,WAAW,EAAE,MAAM;IAEnB,QAAQ,EAAE,aAAa;IACvB,aAAa,EAAE,WAAW;IAE1B,UAAU,EAAE,gDAAgD;IAC5D,UAAU,EAAE,2BAA2B;IACvC,OAAO,EAAE,oCAAoC;IAC7C,OAAO,EACL,iGAAiG;IACnG,SAAS,EACP,6EAA6E;IAC/E,QAAQ,EACN,6LAA6L;IAE/L,UAAU,EAAE,wBAAwB;IACpC,SAAS,EAAE,kCAAkC;IAE7C,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,MAAM;IAClB,cAAc,EAAE,KAAK;CACtB,CAAC;;;;;;;;;;;;;;;ACpFF;IAA8C,mFAAK;IACjD,kCAAY,SAAiB;QAC3B,kBAAK,YAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAC;QAC5B,KAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,KAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;;IACrC,CAAC;IAQD,sBAAI,+CAAS;aAAb;YACE,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;;;OAAA;IACH,+BAAC;AAAD,CAAC,CAhB6C,KAAK,GAgBlD;;AAKD;IACU,0EAAwB;IAShC,yBACE,SAAiB,EACjB,YAAoB,EACpB,eAAwB;QAExB,kBAAK,YAAC,SAAS,CAAC,SAAC;QASF,sBAAgB,GAAW,EAAE,CAAC;QAR7C,KAAI,CAAC,OAAO,GAAG,YAAY,CAAC;QAC5B,KAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,eAAe,EAAE,CAAC;YACpB,KAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QAC1C,CAAC;;IACH,CAAC;IASD,sBAAI,yCAAY;aAAhB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;;;OAAA;IAMD,sBAAI,4CAAe;aAAnB;YACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC/B,CAAC;;;OAAA;IACH,sBAAC;AAAD,CAAC,CAxCS,wBAAwB,GAwCjC;;;;;;;;;;;;;;;;;ACpE+C;AACe;AAE/D,IAAM,cAAc,GAAG,uEAAiB,CAAC,kBAAkB,CAAC;AAK5D;IAA4C,iFAAe;IAKzD,gCAAY,SAAiB;QAA7B,iBAcC;QAbC,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YAC9D,cAAK,YACH,SAAS,EACT,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAC9C,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAChD,SAAC;QACJ,CAAC;aAAM,CAAC;YACN,cAAK,YACH,GAAG,EACH,cAAc,CAAC,KAAK,CAAC,CAAC,YAAY,EAClC,cAAc,CAAC,KAAK,CAAC,CAAC,aAAa,CACpC,SAAC;QACJ,CAAC;;IACH,CAAC;IACH,6BAAC;AAAD,CAAC,CApB2C,wDAAe,GAoB1D;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BM,IAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,IAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,IAAM,gBAAgB,GAAG,EAAE,GAAG,kBAAkB,CAAC;AACjD,IAAM,eAAe,GAAG,EAAE,GAAG,gBAAgB,CAAC;AAUrD,IAAM,YAAY,GAAgB;IAChC,CAAC,EAAE,eAAe;IAClB,CAAC,EAAE,gBAAgB;IACnB,CAAC,EAAE,kBAAkB;IACrB,CAAC,EAAE,kBAAkB;CACtB,CAAC;AAQK,SAAS,kBAAkB,CAAC,YAA2B;IAE5D,IAAI,CAAC,YAAY,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,gBAAgB,CAAC,CAAC;IAC1D,IAAM,OAAO,GAAG,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC9C,IAAM,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAExC,IAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IACrC,IAAM,EAAE,GAAG,YAAY,GAAG,GAAG,CAAC;IAC9B,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,IAAI,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;QAED,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CACL,CAAC,KAAK,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,KAAK,CAC1E,CAAC;AACJ,CAAC;AAQM,SAAS,uBAAuB,CAAC,OAAsB;IAE5D,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,QAAQ,GAAG,GAAG,CAAC;IACnB,IAAI,SAAS,GAAG,OAAO,CAAC;IACxB,KAAK,IAAM,eAAe,IAAI,YAAY,EAAE,CAAC;QAC3C,IAAM,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC,CAAC;QACpD,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC;QAExC,IAAI,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QAID,IAAI,eAAe,KAAK,GAAG,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAC7C,KAAK,IAAI,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,IACE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gBACxB,eAAe,KAAK,GAAG;gBACvB,eAAe,KAAK,GAAG;gBACvB,eAAe,KAAK,GAAG,CAAC;gBAC1B,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAC5B,CAAC;gBACD,QAAQ,IAAI,GAAG,CAAC;YAClB,CAAC;YAED,QAAQ,IAAI,UAAG,KAAK,SAAG,eAAe,CAAE,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AASM,SAAS,gBAAgB,CAC9B,UAA4C,EAC5C,SAA0B;IAE1B,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,SAAS,EAAE,CAAC;QACtE,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,SAAS,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC;AAC/C,CAAC;AASM,SAAS,oBAAoB,CAClC,QAAuB,EACvB,aAA8B;IAE9B,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,aAAa,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,CAAC;IACX,CAAC;IAEK,SACJ,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EADvC,KAAK,UAAE,CAAC,UAAI,IAAI,UAAE,KAAK,UAAE,OAAO,UAAE,OAAO,QACF,CAAC;IACjD,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;IACjC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC;IACxC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC;IACxC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;IACjD,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;IACxD,OAAO,MAAM,CAAC;AAChB,CAAC;AAUM,SAAS,eAAe,CAC7B,KAAa,EACb,MAAc,EACd,aAA8B;IAE9B,IAAM,KAAK,GACT,OAAO,aAAa,KAAK,QAAQ;QAC/B,CAAC,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC;QAC3B,CAAC,CAAC,aAAa,CAAC;IACpB,OAAO,uBAAuB,CAC5B,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CACzE,CAAC;AACJ,CAAC;AAUM,SAAS,oBAAoB,CAClC,KAAa,EACb,MAAc,EACd,SAA0B;IAE1B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,SAAS,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,kBAAkB,CACvB,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CACzE,CAAC;AACJ,CAAC;AAOM,SAAS,OAAO,CAAC,IAAkB;IACxC,IAAM,MAAM,GAAiB,EAAE,CAAC;IAOhC,SAAS,OAAO,CAAC,GAAQ,EAAE,IAAS;QAClC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QACrB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,GAAG,IAAI,CAAC;YAEnB,KAAK,IAAM,CAAC,IAAI,GAAG,EAAE,CAAC;gBACpB,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;oBACnC,OAAO,GAAG,KAAK,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YAED,IAAI,OAAO,IAAI,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC;AAOM,SAAS,SAAS,CAAC,IAAkB;IAC1C,YAAY,CAAC;IAEb,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,IAAM,KAAK,GAAG,yBAAyB,CAAC;IACxC,IAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,KAAK,IAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACpC,IAAI,GAAG,GAAG,MAAM,CAAC;YACjB,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEtB,OAAO,CAAC,EAAE,CAAC;gBACT,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChD,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC;AAC9B,CAAC;AAOM,SAAS,aAAa,CAAC,GAAW;IACvC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACtE,IAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;AAC3B,CAAC;AAUM,SAAS,aAAa,CAC3B,YAAoB,EACpB,OAAe,EACf,UAAmB;IAEnB,IAAM,UAAU,GAAG,EAAE,CAAC;IACtB,IAAI,aAAa,GAAG,EAAE,CAAC;IAEvB,aAAa,IAAI,YAAY,CAAC;IAE9B,IAAI,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC;IAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,aAAa,IAAI,GAAG,CAAC;IACvB,CAAC;IAED,aAAa,IAAI,IAAI,CAAC;IAEtB,IAAI,UAAU,EAAE,CAAC;QACf,IAAM,oBAAoB,GAAG,EAAE,CAAC;QAEhC,aAAa,IAAI,UAAU,CAAC;QAE5B,SAAS,GAAG,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC;QAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,aAAa,IAAI,GAAG,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,aAAa,IAAI,OAAO,CAAC;IAC3B,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AASM,SAAS,aAAa,CAAC,GAAW,EAAE,MAAc;IACvD,OAAO,IAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,CAAC,MAAM,CAAC,MAAK,IAAI,CAAC;AACrC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjVD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,gBAAgB,sCAAsC,kBAAkB;AACjF,wBAAwB;AACxB;AACA;;AAEO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEO;AACP;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,2DAA2D,cAAc;AACzE;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;;AAEO;AACP,kCAAkC;AAClC;;AAEO;AACP,uBAAuB,uFAAuF;AAC9G;AACA;AACA,yGAAyG;AACzG;AACA,sCAAsC,QAAQ;AAC9C;AACA,gEAAgE;AAChE;AACA,8CAA8C,yFAAyF;AACvI,8DAA8D,2CAA2C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA,4CAA4C,yEAAyE;AACrH;;AAEO;AACP;AACA;;AAEO;AACP,0BAA0B,+DAA+D,iBAAiB;AAC1G;AACA,kCAAkC,MAAM,+BAA+B,YAAY;AACnF,iCAAiC,MAAM,mCAAmC,YAAY;AACtF,8BAA8B;AAC9B;AACA,GAAG;AACH;;AAEO;AACP,YAAY,6BAA6B,0BAA0B,cAAc,qBAAqB;AACtG,2IAA2I,cAAc;AACzJ,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iCAAiC,SAAS;AAC1C,iCAAiC,WAAW,UAAU;AACtD,wCAAwC,cAAc;AACtD;AACA,4GAA4G,OAAO;AACnH,+EAA+E,iBAAiB;AAChG,uDAAuD,gBAAgB,QAAQ;AAC/E,6CAA6C,gBAAgB,gBAAgB;AAC7E;AACA,gCAAgC;AAChC;AACA;AACA,QAAQ,YAAY,aAAa,SAAS,UAAU;AACpD,kCAAkC,SAAS;AAC3C;AACA;;AAEO;AACP;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACO;AACP,2BAA2B,sBAAsB;AACjD;AACA;AACA;;AAEA;AACO;AACP,gDAAgD,QAAQ;AACxD,uCAAuC,QAAQ;AAC/C,uDAAuD,QAAQ;AAC/D;AACA;AACA;;AAEO;AACP,2EAA2E,OAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,wMAAwM,cAAc;AACtN,4BAA4B,sBAAsB;AAClD,wBAAwB,YAAY,sBAAsB,qCAAqC,2CAA2C,MAAM;AAChJ,0BAA0B,MAAM,iBAAiB,YAAY;AAC7D,qBAAqB;AACrB,4BAA4B;AAC5B,2BAA2B;AAC3B,0BAA0B;AAC1B;;AAEO;AACP;AACA,eAAe,6CAA6C,UAAU,sDAAsD,cAAc;AAC1I,wBAAwB,6BAA6B,oBAAoB,uCAAuC,kBAAkB;AAClI;;AAEO;AACP;AACA;AACA,yGAAyG,uFAAuF,cAAc;AAC9M,qBAAqB,8BAA8B,gDAAgD,wDAAwD;AAC3J,2CAA2C,sCAAsC,UAAU,mBAAmB,IAAI;AAClH;;AAEO;AACP,+BAA+B,uCAAuC,YAAY,KAAK,OAAO;AAC9F;AACA;;AAEA;AACA,wCAAwC,4BAA4B;AACpE,CAAC;AACD;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,2CAA2C;AAC3C;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,MAAM,oBAAoB,YAAY;AAC5E,qBAAqB,8CAA8C;AACnE;AACA;AACA,qBAAqB,aAAa;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,SAAS,gBAAgB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+DAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;SCzXF;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA;;;;;UCPA,8CAA8C;;;;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","sources":["webpack://scorm-again/./src/constants/default_settings.ts","webpack://scorm-again/./src/helpers/scheduled_commit.ts","webpack://scorm-again/./src/BaseAPI.ts","webpack://scorm-again/./src/Scorm12API.ts","webpack://scorm-again/./src/cmi/common/array.ts","webpack://scorm-again/./src/cmi/common/base_cmi.ts","webpack://scorm-again/./src/cmi/common/score.ts","webpack://scorm-again/./src/cmi/common/validation.ts","webpack://scorm-again/./src/cmi/aicc/core.ts","webpack://scorm-again/./src/cmi/scorm12/cmi.ts","webpack://scorm-again/./src/cmi/scorm12/interactions.ts","webpack://scorm-again/./src/cmi/scorm12/nav.ts","webpack://scorm-again/./src/cmi/scorm12/objectives.ts","webpack://scorm-again/./src/cmi/scorm12/student_data.ts","webpack://scorm-again/./src/cmi/scorm12/student_preference.ts","webpack://scorm-again/./src/cmi/scorm12/validation.ts","webpack://scorm-again/./src/constants/api_constants.ts","webpack://scorm-again/./src/constants/enums.ts","webpack://scorm-again/./src/constants/error_codes.ts","webpack://scorm-again/./src/constants/regex.ts","webpack://scorm-again/./src/exceptions.ts","webpack://scorm-again/./src/exceptions/scorm12_exceptions.ts","webpack://scorm-again/./src/utilities.ts","webpack://scorm-again/./node_modules/tslib/tslib.es6.mjs","webpack://scorm-again/webpack/bootstrap","webpack://scorm-again/webpack/runtime/define property getters","webpack://scorm-again/webpack/runtime/hasOwnProperty shorthand","webpack://scorm-again/webpack/runtime/make namespace object","webpack://scorm-again/./src/exceptions/aicc_exceptions.ts","webpack://scorm-again/./src/cmi/aicc/validation.ts","webpack://scorm-again/./src/cmi/aicc/evaluation.ts","webpack://scorm-again/./src/cmi/aicc/student_preferences.ts","webpack://scorm-again/./src/cmi/aicc/student_demographics.ts","webpack://scorm-again/./src/cmi/aicc/tries.ts","webpack://scorm-again/./src/cmi/aicc/attempts.ts","webpack://scorm-again/./src/cmi/aicc/student_data.ts","webpack://scorm-again/./src/cmi/aicc/paths.ts","webpack://scorm-again/./src/cmi/aicc/cmi.ts","webpack://scorm-again/./src/AICC.ts"],"sourcesContent":["import { LogLevel, ResultObject, Settings } from \"../types/api_types\";\nimport { global_constants } from \"./api_constants\";\nimport { LogLevelEnum } from \"./enums\";\n\n/**\n * Default settings for the SCORM API\n */\nexport const DefaultSettings: Settings = {\n autocommit: false,\n autocommitSeconds: 10,\n asyncCommit: false,\n sendFullCommit: true,\n lmsCommitUrl: false,\n dataCommitFormat: \"json\",\n commitRequestDataType: \"application/json;charset=UTF-8\",\n autoProgress: false,\n logLevel: LogLevelEnum.ERROR,\n selfReportSessionTime: false,\n alwaysSendTotalTime: false,\n renderCommonCommitFields: false,\n strict_errors: true,\n xhrHeaders: {},\n xhrWithCredentials: false,\n fetchMode: \"cors\",\n responseHandler: async function (response: Response): Promise<ResultObject> {\n if (typeof response !== \"undefined\") {\n const responseText = await response.text();\n let httpResult = null;\n if (responseText) {\n httpResult = JSON.parse(responseText);\n }\n if (\n httpResult === null ||\n !{}.hasOwnProperty.call(httpResult, \"result\")\n ) {\n if (response.status === 200) {\n return {\n result: global_constants.SCORM_TRUE,\n errorCode: 0,\n };\n } else {\n return {\n result: global_constants.SCORM_FALSE,\n errorCode: 101,\n };\n }\n } else {\n return {\n result: httpResult.result,\n errorCode: httpResult.errorCode\n ? httpResult.errorCode\n : httpResult.result === global_constants.SCORM_TRUE\n ? 0\n : 101,\n };\n }\n }\n return {\n result: global_constants.SCORM_FALSE,\n errorCode: 101,\n };\n },\n requestHandler: function (commitObject) {\n return commitObject;\n },\n onLogMessage: function (messageLevel: LogLevel, logMessage) {\n switch (messageLevel) {\n case \"4\":\n case 4:\n case \"ERROR\":\n case LogLevelEnum.ERROR:\n console.error(logMessage);\n break;\n case \"3\":\n case 3:\n case \"WARN\":\n case LogLevelEnum.WARN:\n console.warn(logMessage);\n break;\n case \"2\":\n case 2:\n case \"INFO\":\n case LogLevelEnum.INFO:\n console.info(logMessage);\n break;\n case \"1\":\n case 1:\n case \"DEBUG\":\n case LogLevelEnum.DEBUG:\n if (console.debug) {\n console.debug(logMessage);\n } else {\n console.log(logMessage);\n }\n break;\n }\n },\n scoItemIds: [],\n scoItemIdValidator: false,\n globalObjectiveIds: [],\n};\n","import BaseAPI from \"../BaseAPI\";\n\n/**\n * Private class that wraps a timeout call to the commit() function\n */\nexport class ScheduledCommit {\n private _API;\n private _cancelled = false;\n private readonly _timeout;\n private readonly _callback;\n\n /**\n * Constructor for ScheduledCommit\n * @param {BaseAPI} API\n * @param {number} when\n * @param {string} callback\n */\n constructor(API: BaseAPI, when: number, callback: string) {\n this._API = API;\n this._timeout = setTimeout(this.wrapper.bind(this), when);\n this._callback = callback;\n }\n\n /**\n * Cancel any currently scheduled commit\n */\n cancel() {\n this._cancelled = true;\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n }\n\n /**\n * Wrap the API commit call to check if the call has already been cancelled\n */\n wrapper() {\n if (!this._cancelled) {\n (async () => await this._API.commit(this._callback))();\n }\n }\n}\n","import { CMIArray } from \"./cmi/common/array\";\nimport { ValidationError } from \"./exceptions\";\nimport { ErrorCode } from \"./constants/error_codes\";\nimport { global_constants } from \"./constants/api_constants\";\nimport { formatMessage, stringMatches, unflatten } from \"./utilities\";\nimport { BaseCMI } from \"./cmi/common/base_cmi\";\nimport { CommitObject, LogLevel, RefObject, ResultObject, Settings } from \"./types/api_types\";\nimport { DefaultSettings } from \"./constants/default_settings\";\nimport { IBaseAPI } from \"./interfaces/IBaseAPI\";\nimport { ScheduledCommit } from \"./helpers/scheduled_commit\";\nimport { LogLevelEnum } from \"./constants/enums\";\n\n/**\n * Base API class for AICC, SCORM 1.2, and SCORM 2004. Should be considered\n * abstract, and never initialized on its own.\n */\nexport default abstract class BaseAPI implements IBaseAPI {\n private _timeout?: ScheduledCommit;\n private readonly _error_codes: ErrorCode;\n private _settings: Settings = DefaultSettings;\n\n /**\n * Constructor for Base API class. Sets some shared API fields, as well as\n * sets up options for the API.\n * @param {ErrorCode} error_codes\n * @param {Settings} settings\n */\n protected constructor(error_codes: ErrorCode, settings?: Settings) {\n if (new.target === BaseAPI) {\n throw new TypeError(\"Cannot construct BaseAPI instances directly\");\n }\n this.currentState = global_constants.STATE_NOT_INITIALIZED;\n this.lastErrorCode = \"0\";\n this.listenerArray = [];\n\n this._error_codes = error_codes;\n\n if (settings) {\n this.settings = settings;\n }\n this.apiLogLevel = this.settings.logLevel;\n this.selfReportSessionTime = this.settings.selfReportSessionTime;\n\n if (this.apiLogLevel === undefined) {\n this.apiLogLevel = LogLevelEnum.NONE;\n }\n }\n\n public abstract cmi: BaseCMI;\n public startingData?: RefObject;\n\n public currentState: number;\n public lastErrorCode: string;\n public listenerArray: any[];\n public apiLogLevel: LogLevel;\n public selfReportSessionTime: boolean;\n\n abstract reset(settings?: Settings): void;\n\n /**\n * Common reset method for all APIs. New settings are merged with the existing settings.\n * @param {Settings} settings\n * @protected\n */\n commonReset(settings?: Settings): void {\n this.apiLog(\"reset\", \"Called\", LogLevelEnum.INFO);\n\n this.settings = { ...this.settings, ...settings };\n\n this.clearScheduledCommit();\n this.currentState = global_constants.STATE_NOT_INITIALIZED;\n this.lastErrorCode = \"0\";\n this.listenerArray = [];\n this.startingData = undefined;\n }\n\n /**\n * Initialize the API\n * @param {string} callbackName\n * @param {string} initializeMessage\n * @param {string} terminationMessage\n * @return {string}\n */\n initialize(\n callbackName: string,\n initializeMessage?: string,\n terminationMessage?: string,\n ): string {\n let returnValue = global_constants.SCORM_FALSE;\n\n if (this.isInitialized()) {\n this.throwSCORMError(this._error_codes.INITIALIZED, initializeMessage);\n } else if (this.isTerminated()) {\n this.throwSCORMError(this._error_codes.TERMINATED, terminationMessage);\n } else {\n if (this.selfReportSessionTime) {\n this.cmi.setStartTime();\n }\n\n this.currentState = global_constants.STATE_INITIALIZED;\n this.lastErrorCode = \"0\";\n returnValue = global_constants.SCORM_TRUE;\n this.processListeners(callbackName);\n }\n\n this.apiLog(callbackName, \"returned: \" + returnValue, LogLevelEnum.INFO);\n this.clearSCORMError(returnValue);\n\n return returnValue;\n }\n\n abstract lmsInitialize(): string;\n\n abstract lmsFinish(): string;\n\n abstract lmsGetValue(CMIElement: string): string;\n\n abstract lmsSetValue(CMIElement: string, value: any): string;\n\n abstract lmsCommit(): string;\n\n abstract lmsGetLastError(): string;\n\n abstract lmsGetErrorString(CMIErrorCode: string | number): string;\n\n abstract lmsGetDiagnostic(CMIErrorCode: string | number): string;\n\n /**\n * Abstract method for validating that a response is correct.\n *\n * @param {string} _CMIElement\n * @param {any} _value\n */\n abstract validateCorrectResponse(_CMIElement: string, _value: any): void;\n\n /**\n * Gets or builds a new child element to add to the array.\n * APIs that inherit BaseAPI should override this method.\n *\n * @param {string} _CMIElement - unused\n * @param {*} _value - unused\n * @param {boolean} _foundFirstIndex - unused\n * @return {BaseCMI|null}\n * @abstract\n */\n abstract getChildElement(\n _CMIElement: string,\n _value: any,\n _foundFirstIndex: boolean,\n ): BaseCMI | null;\n\n /**\n * Attempts to store the data to the LMS, logs data if no LMS configured\n * APIs that inherit BaseAPI should override this function\n *\n * @param {boolean} _calculateTotalTime\n * @return {ResultObject}\n * @abstract\n */\n abstract storeData(_calculateTotalTime: boolean): Promise<ResultObject>;\n\n /**\n * Render the cmi object to the proper format for LMS commit\n * APIs that inherit BaseAPI should override this function\n *\n * @param {boolean} _terminateCommit\n * @return {RefObject|Array}\n * @abstract\n */\n abstract renderCommitCMI(_terminateCommit: boolean): RefObject | Array<any>;\n\n /**\n * Render the commit object to the shortened format for LMS commit\n * @param {boolean} _terminateCommit\n * @return {CommitObject}\n */\n abstract renderCommitObject(_terminateCommit: boolean): CommitObject;\n\n /**\n * Logging for all SCORM actions\n *\n * @param {string} functionName\n * @param {string} logMessage\n * @param {number} messageLevel\n * @param {string} CMIElement\n */\n apiLog(\n functionName: string,\n logMessage: string,\n messageLevel: LogLevel,\n CMIElement?: string,\n ) {\n logMessage = formatMessage(functionName, logMessage, CMIElement);\n\n if (messageLevel >= this.apiLogLevel) {\n this.settings.onLogMessage(messageLevel, logMessage);\n }\n }\n\n /**\n * Getter for _error_codes\n * @return {ErrorCode}\n */\n get error_codes(): ErrorCode {\n return this._error_codes;\n }\n\n /**\n * Getter for _settings\n * @return {Settings}\n */\n get settings(): Settings {\n return this._settings;\n }\n\n /**\n * Setter for _settings\n * @param {Settings} settings\n */\n set settings(settings: Settings) {\n this._settings = { ...this._settings, ...settings };\n }\n\n /**\n * Terminates the current run of the API\n * @param {string} callbackName\n * @param {boolean} checkTerminated\n * @return {string}\n */\n async terminate(\n callbackName: string,\n checkTerminated: boolean,\n ): Promise<string> {\n let returnValue = global_constants.SCORM_FALSE;\n\n if (\n this.checkState(\n checkTerminated,\n this._error_codes.TERMINATION_BEFORE_INIT,\n this._error_codes.MULTIPLE_TERMINATION,\n )\n ) {\n this.currentState = global_constants.STATE_TERMINATED;\n\n const result: ResultObject = await this.storeData(true);\n if (typeof result.errorCode !== \"undefined\" && result.errorCode > 0) {\n this.throwSCORMError(result.errorCode);\n }\n returnValue =\n typeof result !== \"undefined\" && result.result\n ? result.result\n : global_constants.SCORM_FALSE;\n\n if (checkTerminated) this.lastErrorCode = \"0\";\n\n returnValue = global_constants.SCORM_TRUE;\n this.processListeners(callbackName);\n }\n\n this.apiLog(callbackName, \"returned: \" + returnValue, LogLevelEnum.INFO);\n this.clearSCORMError(returnValue);\n\n return returnValue;\n }\n\n /**\n * Get the value of the CMIElement.\n *\n * @param {string} callbackName\n * @param {boolean} checkTerminated\n * @param {string} CMIElement\n * @return {string}\n */\n getValue(\n callbackName: string,\n checkTerminated: boolean,\n CMIElement: string,\n ): string {\n let returnValue: string = \"\";\n\n if (\n this.checkState(\n checkTerminated,\n this._error_codes.RETRIEVE_BEFORE_INIT,\n this._error_codes.RETRIEVE_AFTER_TERM,\n )\n ) {\n if (checkTerminated) this.lastErrorCode = \"0\";\n try {\n returnValue = this.getCMIValue(CMIElement);\n } catch (e) {\n returnValue = this.handleValueAccessException(e, returnValue);\n }\n this.processListeners(callbackName, CMIElement);\n }\n\n this.apiLog(\n callbackName,\n \": returned: \" + returnValue,\n LogLevelEnum.INFO,\n CMIElement,\n );\n\n if (returnValue === undefined) {\n return \"\";\n }\n\n this.clearSCORMError(returnValue);\n\n return returnValue;\n }\n\n /**\n * Sets the value of the CMIElement.\n *\n * @param {string} callbackName\n * @param {string} commitCallback\n * @param {boolean} checkTerminated\n * @param {string} CMIElement\n * @param {*} value\n * @return {string}\n */\n setValue(\n callbackName: string,\n commitCallback: string,\n checkTerminated: boolean,\n CMIElement: string,\n value: any,\n ): string {\n if (value !== undefined) {\n value = String(value);\n }\n let returnValue: string = global_constants.SCORM_FALSE;\n\n if (\n this.checkState(\n checkTerminated,\n this._error_codes.STORE_BEFORE_INIT,\n this._error_codes.STORE_AFTER_TERM,\n )\n ) {\n if (checkTerminated) this.lastErrorCode = \"0\";\n try {\n returnValue = this.setCMIValue(CMIElement, value);\n } catch (e) {\n this.handleValueAccessException(e, returnValue);\n }\n this.processListeners(callbackName, CMIElement, value);\n }\n\n if (returnValue === undefined) {\n returnValue = global_constants.SCORM_FALSE;\n }\n\n // If we didn't have any errors while setting the data, go ahead and\n // schedule a commit, if autocommit is turned on\n if (String(this.lastErrorCode) === \"0\") {\n if (this.settings.autocommit) {\n this.scheduleCommit(\n this.settings.autocommitSeconds * 1000,\n commitCallback,\n );\n }\n }\n\n this.apiLog(\n callbackName,\n \": \" + value + \": result: \" + returnValue,\n LogLevelEnum.INFO,\n CMIElement,\n );\n this.clearSCORMError(returnValue);\n\n return returnValue;\n }\n\n /**\n * Orders LMS to store all content parameters\n * @param {string} callbackName\n * @param {boolean} checkTerminated\n * @return {string}\n */\n async commit(\n callbackName: string,\n checkTerminated: boolean = false,\n ): Promise<string> {\n this.clearScheduledCommit();\n\n let returnValue = global_constants.SCORM_FALSE;\n\n if (\n this.checkState(\n checkTerminated,\n this._error_codes.COMMIT_BEFORE_INIT,\n this._error_codes.COMMIT_AFTER_TERM,\n )\n ) {\n const result = await this.storeData(false);\n if (result.errorCode && result.errorCode > 0) {\n this.throwSCORMError(result.errorCode);\n }\n returnValue =\n typeof result !== \"undefined\" && result.result\n ? result.result\n : global_constants.SCORM_FALSE;\n\n this.apiLog(\n callbackName,\n \" Result: \" + returnValue,\n LogLevelEnum.DEBUG,\n \"HttpRequest\",\n );\n\n if (checkTerminated) this.lastErrorCode = \"0\";\n\n this.processListeners(callbackName);\n }\n\n this.apiLog(callbackName, \"returned: \" + returnValue, LogLevelEnum.INFO);\n this.clearSCORMError(returnValue);\n\n return returnValue;\n }\n\n /**\n * Returns last error code\n * @param {string} callbackName\n * @return {string}\n */\n getLastError(callbackName: string): string {\n const returnValue = String(this.lastErrorCode);\n\n this.processListeners(callbackName);\n\n this.apiLog(callbackName, \"returned: \" + returnValue, LogLevelEnum.INFO);\n\n return returnValue;\n }\n\n /**\n * Returns the errorNumber error description\n *\n * @param {string} callbackName\n * @param {(string|number)} CMIErrorCode\n * @return {string}\n */\n getErrorString(callbackName: string, CMIErrorCode: string | number): string {\n let returnValue = \"\";\n\n if (CMIErrorCode !== null && CMIErrorCode !== \"\") {\n returnValue = this.getLmsErrorMessageDetails(CMIErrorCode);\n this.processListeners(callbackName);\n }\n\n this.apiLog(callbackName, \"returned: \" + returnValue, LogLevelEnum.INFO);\n\n return returnValue;\n }\n\n /**\n * Returns a comprehensive description of the errorNumber error.\n *\n * @param {string} callbackName\n * @param {(string|number)} CMIErrorCode\n * @return {string}\n */\n getDiagnostic(callbackName: string, CMIErrorCode: string | number): string {\n let returnValue = \"\";\n\n if (CMIErrorCode !== null && CMIErrorCode !== \"\") {\n returnValue = this.getLmsErrorMessageDetails(CMIErrorCode, true);\n this.processListeners(callbackName);\n }\n\n this.apiLog(callbackName, \"returned: \" + returnValue, LogLevelEnum.INFO);\n\n return returnValue;\n }\n\n /**\n * Checks the LMS state and ensures it has been initialized.\n *\n * @param {boolean} checkTerminated\n * @param {number} beforeInitError\n * @param {number} afterTermError\n * @return {boolean}\n */\n checkState(\n checkTerminated: boolean,\n beforeInitError: number,\n afterTermError: number,\n ): boolean {\n if (this.isNotInitialized()) {\n this.throwSCORMError(beforeInitError);\n return false;\n } else if (checkTerminated && this.isTerminated()) {\n this.throwSCORMError(afterTermError);\n return false;\n }\n\n return true;\n }\n\n /**\n * Returns the message that corresponds to errorNumber\n * APIs that inherit BaseAPI should override this function\n *\n * @param {(string|number)} _errorNumber\n * @param {boolean} _detail\n * @return {string}\n * @abstract\n */\n getLmsErrorMessageDetails(\n _errorNumber: string | number,\n _detail: boolean = false,\n ): string {\n throw new Error(\n \"The getLmsErrorMessageDetails method has not been implemented\",\n );\n }\n\n /**\n * Gets the value for the specific element.\n * APIs that inherit BaseAPI should override this function\n *\n * @param {string} _CMIElement\n * @return {string}\n * @abstract\n */\n getCMIValue(_CMIElement: string): string {\n throw new Error(\"The getCMIValue method has not been implemented\");\n }\n\n /**\n * Sets the value for the specific element.\n * APIs that inherit BaseAPI should override this function\n *\n * @param {string} _CMIElement\n * @param {any} _value\n * @return {string}\n * @abstract\n */\n setCMIValue(_CMIElement: string, _value: any): string {\n throw new Error(\"The setCMIValue method has not been implemented\");\n }\n\n /**\n * Shared API method to set a valid for a given element.\n *\n * @param {string} methodName\n * @param {boolean} scorm2004\n * @param {string} CMIElement\n * @param {any} value\n * @return {string}\n */\n _commonSetCMIValue(\n methodName: string,\n scorm2004: boolean,\n CMIElement: string,\n value: any,\n ): string {\n if (!CMIElement || CMIElement === \"\") {\n return global_constants.SCORM_FALSE;\n }\n\n const structure = CMIElement.split(\".\");\n let refObject: RefObject = this;\n let returnValue = global_constants.SCORM_FALSE;\n let foundFirstIndex = false;\n\n const invalidErrorMessage = `The data model element passed to ${methodName} (${CMIElement}) is not a valid SCORM data model element.`;\n const invalidErrorCode = scorm2004\n ? this._error_codes.UNDEFINED_DATA_MODEL\n : this._error_codes.GENERAL;\n\n for (let idx = 0; idx < structure.length; idx++) {\n const attribute = structure[idx];\n\n if (idx === structure.length - 1) {\n if (scorm2004 && attribute.substring(0, 8) === \"{target=\") {\n if (this.isInitialized()) {\n this.throwSCORMError(this._error_codes.READ_ONLY_ELEMENT);\n } else {\n refObject = {\n ...refObject,\n attribute: value,\n };\n }\n } else if (!this._checkObjectHasProperty(refObject, attribute)) {\n this.throwSCORMError(invalidErrorCode, invalidErrorMessage);\n } else {\n if (\n stringMatches(CMIElement, \"\\\\.correct_responses\\\\.\\\\d+\") &&\n this.isInitialized()\n ) {\n this.validateCorrectResponse(CMIElement, value);\n }\n\n if (!scorm2004 || this.lastErrorCode === \"0\") {\n refObject[attribute] = value;\n returnValue = global_constants.SCORM_TRUE;\n }\n }\n } else {\n refObject = refObject[attribute];\n if (!refObject) {\n this.throwSCORMError(invalidErrorCode, invalidErrorMessage);\n break;\n }\n\n if (refObject instanceof CMIArray) {\n const index = parseInt(structure[idx + 1], 10);\n\n // SCO is trying to set an item on an array\n if (!isNaN(index)) {\n const item = refObject.childArray[index];\n\n if (item) {\n refObject = item;\n foundFirstIndex = true;\n } else {\n const newChild = this.getChildElement(\n CMIElement,\n value,\n foundFirstIndex,\n );\n foundFirstIndex = true;\n\n if (!newChild) {\n this.throwSCORMError(invalidErrorCode, invalidErrorMessage);\n } else {\n if (refObject.initialized) newChild.initialize();\n\n refObject.childArray.push(newChild);\n refObject = newChild;\n }\n }\n\n // Have to update idx value to skip the array position\n idx++;\n }\n }\n }\n }\n\n if (returnValue === global_constants.SCORM_FALSE) {\n this.apiLog(\n methodName,\n `There was an error setting the value for: ${CMIElement}, value of: ${value}`,\n LogLevelEnum.WARN,\n );\n }\n\n return returnValue;\n }\n\n /**\n * Gets a value from the CMI Object\n *\n * @param {string} methodName\n * @param {boolean} scorm2004\n * @param {string} CMIElement\n * @return {any}\n */\n _commonGetCMIValue(\n methodName: string,\n scorm2004: boolean,\n CMIElement: string,\n ): any {\n if (!CMIElement || CMIElement === \"\") {\n return \"\";\n }\n\n const structure = CMIElement.split(\".\");\n let refObject: RefObject = this;\n let attribute = null;\n\n const uninitializedErrorMessage = `The data model element passed to ${methodName} (${CMIElement}) has not been initialized.`;\n const invalidErrorMessage = `The data model element passed to ${methodName} (${CMIElement}) is not a valid SCORM data model element.`;\n const invalidErrorCode = scorm2004\n ? this._error_codes.UNDEFINED_DATA_MODEL\n : this._error_codes.GENERAL;\n\n for (let idx = 0; idx < structure.length; idx++) {\n attribute = structure[idx];\n\n if (!scorm2004) {\n if (idx === structure.length - 1) {\n if (!this._checkObjectHasProperty(refObject, attribute)) {\n this.throwSCORMError(invalidErrorCode, invalidErrorMessage);\n return;\n }\n }\n } else {\n if (\n String(attribute).substring(0, 8) === \"{target=\" &&\n typeof refObject._isTargetValid == \"function\"\n ) {\n const target = String(attribute).substring(\n 8,\n String(attribute).length - 9,\n );\n return refObject._isTargetValid(target);\n } else if (!this._checkObjectHasProperty(refObject, attribute)) {\n this.throwSCORMError(invalidErrorCode, invalidErrorMessage);\n return;\n }\n }\n\n refObject = refObject[attribute];\n if (refObject === undefined) {\n this.throwSCORMError(invalidErrorCode, invalidErrorMessage);\n break;\n }\n\n if (refObject instanceof CMIArray) {\n const index = parseInt(structure[idx + 1], 10);\n\n // SCO is trying to set an item on an array\n if (!isNaN(index)) {\n const item = refObject.childArray[index];\n\n if (item) {\n refObject = item;\n } else {\n this.throwSCORMError(\n this._error_codes.VALUE_NOT_INITIALIZED,\n uninitializedErrorMessage,\n );\n break;\n }\n\n // Have to update idx value to skip the array position\n idx++;\n }\n }\n }\n\n if (refObject === null || refObject === undefined) {\n if (!scorm2004) {\n if (attribute === \"_children\") {\n this.throwSCORMError(this._error_codes.CHILDREN_ERROR);\n } else if (attribute === \"_count\") {\n this.throwSCORMError(this._error_codes.COUNT_ERROR);\n }\n }\n } else {\n return refObject;\n }\n }\n\n /**\n * Returns true if the API's current state is STATE_INITIALIZED\n *\n * @return {boolean}\n */\n isInitialized(): boolean {\n return this.currentState === global_constants.STATE_INITIALIZED;\n }\n\n /**\n * Returns true if the API's current state is STATE_NOT_INITIALIZED\n *\n * @return {boolean}\n */\n isNotInitialized(): boolean {\n return this.currentState === global_constants.STATE_NOT_INITIALIZED;\n }\n\n /**\n * Returns true if the API's current state is STATE_TERMINATED\n *\n * @return {boolean}\n */\n isTerminated(): boolean {\n return this.currentState === global_constants.STATE_TERMINATED;\n }\n\n /**\n * Provides a mechanism for attaching to a specific SCORM event\n *\n * @param {string} listenerName\n * @param {function} callback\n */\n on(listenerName: string, callback: Function) {\n if (!callback) return;\n\n const listenerFunctions = listenerName.split(\" \");\n for (let i = 0; i < listenerFunctions.length; i++) {\n const listenerSplit = listenerFunctions[i].split(\".\");\n if (listenerSplit.length === 0) return;\n\n const functionName = listenerSplit[0];\n\n let CMIElement = null;\n if (listenerSplit.length > 1) {\n CMIElement = listenerName.replace(functionName + \".\", \"\");\n }\n\n this.listenerArray.push({\n functionName: functionName,\n CMIElement: CMIElement,\n callback: callback,\n });\n\n this.apiLog(\n \"on\",\n `Added event listener: ${this.listenerArray.length}`,\n LogLevelEnum.INFO,\n functionName,\n );\n }\n }\n\n /**\n * Provides a mechanism for detaching a specific SCORM event listener\n *\n * @param {string} listenerName\n * @param {function} callback\n */\n off(listenerName: string, callback: Function) {\n if (!callback) return;\n\n const listenerFunctions = listenerName.split(\" \");\n for (let i = 0; i < listenerFunctions.length; i++) {\n const listenerSplit = listenerFunctions[i].split(\".\");\n if (listenerSplit.length === 0) return;\n\n const functionName = listenerSplit[0];\n\n let CMIElement = null;\n if (listenerSplit.length > 1) {\n CMIElement = listenerName.replace(functionName + \".\", \"\");\n }\n\n const removeIndex = this.listenerArray.findIndex(\n (obj) =>\n obj.functionName === functionName &&\n obj.CMIElement === CMIElement &&\n obj.callback === callback,\n );\n if (removeIndex !== -1) {\n this.listenerArray.splice(removeIndex, 1);\n this.apiLog(\n \"off\",\n `Removed event listener: ${this.listenerArray.length}`,\n LogLevelEnum.INFO,\n functionName,\n );\n }\n }\n }\n\n /**\n * Provides a mechanism for clearing all listeners from a specific SCORM event\n *\n * @param {string} listenerName\n */\n clear(listenerName: string) {\n const listenerFunctions = listenerName.split(\" \");\n for (let i = 0; i < listenerFunctions.length; i++) {\n const listenerSplit = listenerFunctions[i].split(\".\");\n if (listenerSplit.length === 0) return;\n\n const functionName = listenerSplit[0];\n\n let CMIElement = null;\n if (listenerSplit.length > 1) {\n CMIElement = listenerName.replace(functionName + \".\", \"\");\n }\n\n this.listenerArray = this.listenerArray.filter(\n (obj) =>\n obj.functionName !== functionName && obj.CMIElement !== CMIElement,\n );\n }\n }\n\n /**\n * Processes any 'on' listeners that have been created\n *\n * @param {string} functionName\n * @param {string} CMIElement\n * @param {any} value\n */\n processListeners(functionName: string, CMIElement?: string, value?: any) {\n this.apiLog(functionName, value, LogLevelEnum.INFO, CMIElement);\n for (let i = 0; i < this.listenerArray.length; i++) {\n const listener = this.listenerArray[i];\n const functionsMatch = listener.functionName === functionName;\n const listenerHasCMIElement = !!listener.CMIElement;\n let CMIElementsMatch = false;\n if (\n CMIElement &&\n listener.CMIElement &&\n listener.CMIElement.substring(listener.CMIElement.length - 1) === \"*\"\n ) {\n CMIElementsMatch =\n CMIElement.indexOf(\n listener.CMIElement.substring(0, listener.CMIElement.length - 1),\n ) === 0;\n } else {\n CMIElementsMatch = listener.CMIElement === CMIElement;\n }\n\n if (functionsMatch && (!listenerHasCMIElement || CMIElementsMatch)) {\n this.apiLog(\n \"processListeners\",\n `Processing listener: ${listener.functionName}`,\n LogLevelEnum.INFO,\n CMIElement,\n );\n listener.callback(CMIElement, value);\n }\n }\n }\n\n /**\n * Throws a SCORM error\n *\n * @param {number} errorNumber\n * @param {string} message\n */\n throwSCORMError(errorNumber: number, message?: string) {\n if (!message) {\n message = this.getLmsErrorMessageDetails(errorNumber);\n }\n\n this.apiLog(\n \"throwSCORMError\",\n errorNumber + \": \" + message,\n LogLevelEnum.ERROR,\n );\n\n this.lastErrorCode = String(errorNumber);\n }\n\n /**\n * Clears the last SCORM error code on success.\n *\n * @param {string} success\n */\n clearSCORMError(success: string) {\n if (success !== undefined && success !== global_constants.SCORM_FALSE) {\n this.lastErrorCode = \"0\";\n }\n }\n\n /**\n * Load the CMI from a flattened JSON object\n * @param {RefObject} json\n * @param {string} CMIElement\n */\n loadFromFlattenedJSON(json: RefObject, CMIElement?: string) {\n if (!CMIElement) {\n // by default, we start from a blank string because we're expecting each element to start with `cmi`\n CMIElement = \"\";\n }\n if (!this.isNotInitialized()) {\n console.error(\n \"loadFromFlattenedJSON can only be called before the call to lmsInitialize.\",\n );\n return;\n }\n\n /**\n * Tests two strings against a given regular expression pattern and determines a numeric or null result based on the matching criterion.\n *\n * @param {string} a - The first string to be tested against the pattern.\n * @param {string} c - The second string to be tested against the pattern.\n * @param {RegExp} a_pattern - The regular expression pattern to test the strings against.\n * @return {number | null} A numeric result based on the matching criterion, or null if the strings do not match the pattern.\n */\n function testPattern(\n a: string,\n c: string,\n a_pattern: RegExp,\n ): number | null {\n const a_match = a.match(a_pattern);\n\n let c_match;\n if (a_match !== null && (c_match = c.match(a_pattern)) !== null) {\n const a_num = Number(a_match[2]);\n const c_num = Number(c_match[2]);\n if (a_num === c_num) {\n if (a_match[3] === \"id\") {\n return -1;\n } else if (a_match[3] === \"type\") {\n if (c_match[3] === \"id\") {\n return 1;\n } else {\n return -1;\n }\n } else {\n return 1;\n }\n }\n return a_num - c_num;\n }\n\n return null;\n }\n\n const int_pattern = /^(cmi\\.interactions\\.)(\\d+)\\.(.*)$/;\n const obj_pattern = /^(cmi\\.objectives\\.)(\\d+)\\.(.*)$/;\n\n const result = Object.keys(json).map(function (key) {\n return [String(key), json[key]];\n });\n\n // CMI interactions need to have id and type loaded before any other fields\n result.sort(function ([a, _b], [c, _d]) {\n let test;\n if ((test = testPattern(a, c, int_pattern)) !== null) {\n return test;\n }\n if ((test = testPattern(a, c, obj_pattern)) !== null) {\n return test;\n }\n\n if (a < c) {\n return -1;\n }\n if (a > c) {\n return 1;\n }\n return 0;\n });\n\n let obj: RefObject;\n result.forEach((element) => {\n obj = {};\n obj[element[0]] = element[1];\n this.loadFromJSON(unflatten(obj), CMIElement);\n });\n }\n\n /**\n * Loads CMI data from a JSON object.\n *\n * @param {RefObject} json\n * @param {string} CMIElement\n */\n loadFromJSON(json: RefObject, CMIElement: string = \"\") {\n if (\n (!CMIElement || CMIElement === \"\") &&\n !Object.hasOwnProperty.call(json, \"cmi\") &&\n !Object.hasOwnProperty.call(json, \"adl\")\n ) {\n // providing a backward compatibility for the old v1 API\n CMIElement = \"cmi\";\n }\n\n if (!this.isNotInitialized()) {\n console.error(\n \"loadFromJSON can only be called before the call to lmsInitialize.\",\n );\n return;\n }\n\n CMIElement = CMIElement !== undefined ? CMIElement : \"cmi\";\n\n this.startingData = json;\n\n // could this be refactored down to flatten(json) then setCMIValue on each?\n for (const key in json) {\n if ({}.hasOwnProperty.call(json, key) && json[key]) {\n const currentCMIElement = (CMIElement ? CMIElement + \".\" : \"\") + key;\n const value = json[key];\n\n if (value[\"childArray\"]) {\n for (let i = 0; i < value[\"childArray\"].length; i++) {\n this.loadFromJSON(\n value[\"childArray\"][i],\n currentCMIElement + \".\" + i,\n );\n }\n } else if (value.constructor === Object) {\n this.loadFromJSON(value, currentCMIElement);\n } else {\n this.setCMIValue(currentCMIElement, value);\n }\n }\n }\n }\n\n /**\n * Render the CMI object to JSON for sending to an LMS.\n *\n * @return {string}\n */\n renderCMIToJSONString(): string {\n const cmi = this.cmi;\n // Do we want/need to return fields that have no set value?\n if (this.settings.sendFullCommit) {\n return JSON.stringify({ cmi });\n }\n return JSON.stringify({ cmi }, (k, v) => (v === undefined ? null : v), 2);\n }\n\n /**\n * Returns a JS object representing the current cmi\n * @return {object}\n */\n renderCMIToJSONObject(): object {\n return JSON.parse(this.renderCMIToJSONString());\n }\n\n /**\n * Send the request to the LMS\n * @param {string} url\n * @param {CommitObject|RefObject|Array} params\n * @param {boolean} immediate\n * @return {ResultObject}\n */\n async processHttpRequest(\n url: string,\n params: CommitObject | RefObject | Array<any>,\n immediate: boolean = false,\n ): Promise<ResultObject> {\n const api = this;\n const genericError: ResultObject = {\n result: global_constants.SCORM_FALSE,\n errorCode: this.error_codes.GENERAL,\n };\n\n // if we are terminating the module or closing the browser window/tab, we need to make this fetch ASAP.\n // Some browsers, especially Chrome, do not like synchronous requests to be made when the window is closing.\n if (immediate) {\n this.performFetch(url, params).then(async (response) => {\n await this.transformResponse(response);\n });\n return {\n result: global_constants.SCORM_TRUE,\n errorCode: 0,\n };\n }\n\n const process = async (\n url: string,\n params: CommitObject | RefObject | Array<any>,\n settings: Settings,\n ): Promise<ResultObject> => {\n try {\n params = settings.requestHandler(params);\n const response = await this.performFetch(url, params);\n\n return this.transformResponse(response);\n } catch (e) {\n this.apiLog(\"processHttpRequest\", e, LogLevelEnum.ERROR);\n api.processListeners(\"CommitError\");\n return genericError;\n }\n };\n\n return await process(url, params, this.settings);\n }\n\n /**\n * Throws a SCORM error\n *\n * @param {number} when - the number of milliseconds to wait before committing\n * @param {string} callback - the name of the commit event callback\n */\n scheduleCommit(when: number, callback: string) {\n if (!this._timeout) {\n this._timeout = new ScheduledCommit(this, when, callback);\n this.apiLog(\"scheduleCommit\", \"scheduled\", LogLevelEnum.DEBUG, \"\");\n }\n }\n\n /**\n * Clears and cancels any currently scheduled commits\n */\n clearScheduledCommit() {\n if (this._timeout) {\n this._timeout.cancel();\n this._timeout = undefined;\n this.apiLog(\"clearScheduledCommit\", \"cleared\", LogLevelEnum.DEBUG, \"\");\n }\n }\n\n /**\n * Check to see if the specific object has the given property\n * @param {RefObject} refObject\n * @param {string} attribute\n * @return {boolean}\n * @private\n */\n private _checkObjectHasProperty(\n refObject: RefObject,\n attribute: string,\n ): boolean {\n return (\n Object.hasOwnProperty.call(refObject, attribute) ||\n Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(refObject),\n attribute,\n ) != null ||\n attribute in refObject\n );\n }\n\n /**\n * Handles the error that occurs when trying to access a value\n * @param {any} e\n * @param {string} returnValue\n * @return {string}\n * @private\n */\n private handleValueAccessException(e: any, returnValue: string): string {\n if (e instanceof ValidationError) {\n this.lastErrorCode = String(e.errorCode);\n returnValue = global_constants.SCORM_FALSE;\n } else {\n if (e instanceof Error && e.message) {\n console.error(e.message);\n } else {\n console.error(e);\n }\n this.throwSCORMError(this._error_codes.GENERAL);\n }\n return returnValue;\n }\n\n /**\n * Builds the commit object to be sent to the LMS\n * @param {boolean} terminateCommit\n * @return {CommitObject|RefObject|Array}\n * @private\n */\n protected getCommitObject(\n terminateCommit: boolean,\n ): CommitObject | RefObject | Array<any> {\n const shouldTerminateCommit =\n terminateCommit || this.settings.alwaysSendTotalTime;\n const commitObject = this.settings.renderCommonCommitFields\n ? this.renderCommitObject(shouldTerminateCommit)\n : this.renderCommitCMI(shouldTerminateCommit);\n\n if ([LogLevelEnum.DEBUG, \"1\", 1, \"DEBUG\"].includes(this.apiLogLevel)) {\n console.debug(\n \"Commit (terminated: \" + (terminateCommit ? \"yes\" : \"no\") + \"): \",\n );\n console.debug(commitObject);\n }\n return commitObject;\n }\n\n /**\n * Perform the fetch request to the LMS\n * @param {string} url\n * @param {RefObject|Array} params\n * @return {Promise<Response>}\n * @private\n */\n private async performFetch(\n url: string,\n params: RefObject | Array<any>,\n ): Promise<Response> {\n return fetch(url, {\n method: \"POST\",\n mode: this.settings.fetchMode,\n body: params instanceof Array ? params.join(\"&\") : JSON.stringify(params),\n headers: {\n ...this.settings.xhrHeaders,\n \"Content-Type\": this.settings.commitRequestDataType,\n },\n credentials: this.settings.xhrWithCredentials ? \"include\" : undefined,\n keepalive: true,\n });\n }\n\n /**\n * Transforms the response from the LMS to a ResultObject\n * @param {Response} response\n * @return {Promise<ResultObject>}\n * @private\n */\n private async transformResponse(response: Response): Promise<ResultObject> {\n const result =\n typeof this.settings.responseHandler === \"function\"\n ? await this.settings.responseHandler(response)\n : await response.json();\n\n if (\n response.status >= 200 &&\n response.status <= 299 &&\n (result.result === true || result.result === global_constants.SCORM_TRUE)\n ) {\n this.processListeners(\"CommitSuccess\");\n } else {\n this.processListeners(\"CommitError\");\n }\n return result;\n }\n}\n","import { CMI } from \"./cmi/scorm12/cmi\";\nimport * as Utilities from \"./utilities\";\nimport { stringMatches } from \"./utilities\";\nimport { global_constants, scorm12_constants } from \"./constants/api_constants\";\nimport { scorm12_errors } from \"./constants/error_codes\";\n\nimport { BaseCMI } from \"./cmi/common/base_cmi\";\nimport { CMIObjectivesObject } from \"./cmi/scorm12/objectives\";\nimport {\n CMIInteractionsCorrectResponsesObject,\n CMIInteractionsObject,\n CMIInteractionsObjectivesObject\n} from \"./cmi/scorm12/interactions\";\nimport { NAV } from \"./cmi/scorm12/nav\";\nimport { CommitObject, RefObject, ResultObject, ScoreObject, Settings } from \"./types/api_types\";\nimport { CompletionStatus, SuccessStatus } from \"./constants/enums\";\nimport BaseAPI from \"./BaseAPI\";\nimport { scorm12_regex } from \"./constants/regex\";\n\n/**\n * API class for SCORM 1.2\n */\nclass Scorm12Impl extends BaseAPI {\n /**\n * Constructor for SCORM 1.2 API\n * @param {object} settings\n */\n constructor(settings?: Settings) {\n if (settings) {\n if (settings.mastery_override === undefined) {\n settings.mastery_override = false;\n }\n }\n\n super(scorm12_errors, settings);\n\n this.cmi = new CMI();\n this.nav = new NAV();\n\n // Rename functions to match 1.2 Spec and expose to modules\n this.LMSInitialize = this.lmsInitialize;\n this.LMSFinish = this.lmsFinish;\n this.LMSGetValue = this.lmsGetValue;\n this.LMSSetValue = this.lmsSetValue;\n this.LMSCommit = this.lmsCommit;\n this.LMSGetLastError = this.lmsGetLastError;\n this.LMSGetErrorString = this.lmsGetErrorString;\n this.LMSGetDiagnostic = this.lmsGetDiagnostic;\n }\n\n public statusSetByModule = false;\n\n cmi: CMI;\n nav: NAV;\n\n LMSInitialize: () => string;\n LMSFinish: () => string;\n LMSGetValue: (CMIElement: string) => string;\n LMSSetValue: (CMIElement: string, value: any) => string;\n LMSCommit: () => string;\n LMSGetLastError: () => string;\n LMSGetErrorString: (CMIErrorCode: string) => string;\n LMSGetDiagnostic: (CMIErrorCode: string) => string;\n\n /**\n * Called when the API needs to be reset\n */\n reset(settings?: Settings) {\n this.commonReset(settings);\n\n this.cmi?.reset();\n this.nav?.reset();\n }\n\n /**\n * lmsInitialize function from SCORM 1.2 Spec\n *\n * @return {string} bool\n */\n lmsInitialize(): string {\n this.cmi.initialize();\n if (this.cmi.core.lesson_status) {\n this.statusSetByModule = true;\n } else {\n this.cmi.core.lesson_status = \"not attempted\";\n }\n return this.initialize(\n \"LMSInitialize\",\n \"LMS was already initialized!\",\n \"LMS is already finished!\",\n );\n }\n\n /**\n * LMSFinish function from SCORM 1.2 Spec\n *\n * @return {string} bool\n */\n lmsFinish(): string {\n (async () => {\n await this.internalFinish();\n })();\n return global_constants.SCORM_TRUE;\n }\n\n async internalFinish(): Promise<string> {\n const result = await this.terminate(\"LMSFinish\", true);\n\n if (result === global_constants.SCORM_TRUE) {\n if (this.nav.event !== \"\") {\n if (this.nav.event === \"continue\") {\n this.processListeners(\"SequenceNext\");\n } else {\n this.processListeners(\"SequencePrevious\");\n }\n } else if (this.settings.autoProgress) {\n this.processListeners(\"SequenceNext\");\n }\n }\n\n return result;\n }\n\n /**\n * LMSGetValue function from SCORM 1.2 Spec\n *\n * @param {string} CMIElement\n * @return {string}\n */\n lmsGetValue(CMIElement: string): string {\n return this.getValue(\"LMSGetValue\", false, CMIElement);\n }\n\n /**\n * LMSSetValue function from SCORM 1.2 Spec\n *\n * @param {string} CMIElement\n * @param {*} value\n * @return {string}\n */\n lmsSetValue(CMIElement: string, value: any): string {\n if (CMIElement === \"cmi.core.lesson_status\") {\n this.statusSetByModule = true;\n }\n return this.setValue(\"LMSSetValue\", \"LMSCommit\", false, CMIElement, value);\n }\n\n /**\n * LMSCommit function from SCORM 1.2 Spec\n *\n * @return {string} bool\n */\n lmsCommit(): string {\n if (this.settings.asyncCommit) {\n this.scheduleCommit(500, \"LMSCommit\");\n } else {\n (async () => {\n await this.commit(\"LMSCommit\", false);\n })();\n }\n return global_constants.SCORM_TRUE;\n }\n\n /**\n * LMSGetLastError function from SCORM 1.2 Spec\n *\n * @return {string}\n */\n lmsGetLastError(): string {\n return this.getLastError(\"LMSGetLastError\");\n }\n\n /**\n * LMSGetErrorString function from SCORM 1.2 Spec\n *\n * @param {string} CMIErrorCode\n * @return {string}\n */\n lmsGetErrorString(CMIErrorCode: string): string {\n return this.getErrorString(\"LMSGetErrorString\", CMIErrorCode);\n }\n\n /**\n * LMSGetDiagnostic function from SCORM 1.2 Spec\n *\n * @param {string} CMIErrorCode\n * @return {string}\n */\n lmsGetDiagnostic(CMIErrorCode: string): string {\n return this.getDiagnostic(\"LMSGetDiagnostic\", CMIErrorCode);\n }\n\n /**\n * Sets a value on the CMI Object\n *\n * @param {string} CMIElement\n * @param {*} value\n * @return {string}\n */\n override setCMIValue(CMIElement: string, value: any): string {\n return this._commonSetCMIValue(\"LMSSetValue\", false, CMIElement, value);\n }\n\n /**\n * Gets a value from the CMI Object\n *\n * @param {string} CMIElement\n * @return {*}\n */\n override getCMIValue(CMIElement: string): any {\n return this._commonGetCMIValue(\"getCMIValue\", false, CMIElement);\n }\n\n /**\n * Gets or builds a new child element to add to the array.\n *\n * @param {string} CMIElement\n * @param {*} _value\n * @param {boolean} foundFirstIndex\n * @return {BaseCMI|null}\n */\n getChildElement(\n CMIElement: string,\n _value: any,\n foundFirstIndex: boolean,\n ): BaseCMI | null {\n if (stringMatches(CMIElement, \"cmi\\\\.objectives\\\\.\\\\d+\")) {\n return new CMIObjectivesObject();\n } else if (\n foundFirstIndex &&\n stringMatches(\n CMIElement,\n \"cmi\\\\.interactions\\\\.\\\\d+\\\\.correct_responses\\\\.\\\\d+\",\n )\n ) {\n return new CMIInteractionsCorrectResponsesObject();\n } else if (\n foundFirstIndex &&\n stringMatches(CMIElement, \"cmi\\\\.interactions\\\\.\\\\d+\\\\.objectives\\\\.\\\\d+\")\n ) {\n return new CMIInteractionsObjectivesObject();\n } else if (\n !foundFirstIndex &&\n stringMatches(CMIElement, \"cmi\\\\.interactions\\\\.\\\\d+\")\n ) {\n return new CMIInteractionsObject();\n }\n\n return null;\n }\n\n /**\n * Validates Correct Response values\n *\n * @param {string} _CMIElement\n * @param {*} _value\n */\n validateCorrectResponse(_CMIElement: string, _value: any) {\n // do nothing\n }\n\n /**\n * Returns the message that corresponds to errorNumber.\n *\n * @param {number|string} errorNumber\n * @param {boolean} detail\n * @return {string}\n */\n override getLmsErrorMessageDetails(\n errorNumber: number | string,\n detail: boolean,\n ): string {\n let basicMessage = \"No Error\";\n let detailMessage = \"No Error\";\n\n // Set error number to string since inconsistent from modules if string or number\n errorNumber = String(errorNumber);\n if (scorm12_constants.error_descriptions[errorNumber]) {\n basicMessage =\n scorm12_constants.error_descriptions[errorNumber].basicMessage;\n detailMessage =\n scorm12_constants.error_descriptions[errorNumber].detailMessage;\n }\n\n return detail ? detailMessage : basicMessage;\n }\n\n /**\n * Replace the whole API with another\n *\n * @param {Scorm12Impl} newAPI\n */\n replaceWithAnotherScormAPI(newAPI: Scorm12Impl) {\n // Data Model\n this.cmi = newAPI.cmi;\n }\n\n /**\n * Render the cmi object to the proper format for LMS commit\n *\n * @param {boolean} terminateCommit\n * @return {object|Array}\n */\n renderCommitCMI(terminateCommit: boolean): object | Array<any> {\n const cmiExport: RefObject = this.renderCMIToJSONObject();\n\n if (terminateCommit) {\n cmiExport.cmi.core.total_time = this.cmi.getCurrentTotalTime();\n }\n\n const result = [];\n const flattened: RefObject = Utilities.flatten(cmiExport);\n switch (this.settings.dataCommitFormat) {\n case \"flattened\":\n return Utilities.flatten(cmiExport);\n case \"params\":\n for (const item in flattened) {\n if ({}.hasOwnProperty.call(flattened, item)) {\n result.push(`${item}=${flattened[item]}`);\n }\n }\n return result;\n case \"json\":\n default:\n return cmiExport;\n }\n }\n\n /**\n * Render the cmi object to the proper format for LMS commit\n * @param {boolean} terminateCommit\n * @return {CommitObject}\n */\n renderCommitObject(terminateCommit: boolean): CommitObject {\n const cmiExport = this.renderCommitCMI(terminateCommit);\n const totalTimeHHMMSS = this.cmi.getCurrentTotalTime();\n const totalTimeSeconds = Utilities.getTimeAsSeconds(\n totalTimeHHMMSS,\n scorm12_regex.CMITimespan,\n );\n const lessonStatus = this.cmi.core.lesson_status;\n let completionStatus = CompletionStatus.unknown;\n let successStatus = SuccessStatus.unknown;\n if (lessonStatus) {\n completionStatus =\n lessonStatus === \"completed\" || lessonStatus === \"passed\"\n ? CompletionStatus.completed\n : CompletionStatus.incomplete;\n if (lessonStatus === \"passed\") {\n successStatus = SuccessStatus.passed;\n } else if (lessonStatus === \"failed\") {\n successStatus = SuccessStatus.failed;\n }\n }\n\n const score = this.cmi.core.score;\n let scoreObject: ScoreObject = null;\n if (score) {\n scoreObject = {};\n\n if (!Number.isNaN(Number.parseFloat(score.raw))) {\n scoreObject.raw = Number.parseFloat(score.raw);\n }\n if (!Number.isNaN(Number.parseFloat(score.min))) {\n scoreObject.min = Number.parseFloat(score.min);\n }\n if (!Number.isNaN(Number.parseFloat(score.max))) {\n scoreObject.max = Number.parseFloat(score.max);\n }\n }\n\n const commitObject: CommitObject = {\n successStatus: successStatus,\n completionStatus: completionStatus,\n runtimeData: cmiExport,\n totalTimeSeconds: totalTimeSeconds,\n };\n if (scoreObject) {\n commitObject.score = scoreObject;\n }\n return commitObject;\n }\n\n /**\n * Attempts to store the data to the LMS\n *\n * @param {boolean} terminateCommit\n * @return {ResultObject}\n */\n async storeData(terminateCommit: boolean): Promise<ResultObject> {\n if (terminateCommit) {\n const originalStatus = this.cmi.core.lesson_status;\n if (\n !this.cmi.core.lesson_status ||\n (!this.statusSetByModule &&\n this.cmi.core.lesson_status === \"not attempted\")\n ) {\n this.cmi.core.lesson_status = \"completed\";\n }\n\n if (this.cmi.core.lesson_mode === \"normal\") {\n if (this.cmi.core.credit === \"credit\") {\n if (\n this.settings.mastery_override &&\n this.cmi.student_data.mastery_score !== \"\" &&\n this.cmi.core.score.raw !== \"\"\n ) {\n this.cmi.core.lesson_status =\n parseFloat(this.cmi.core.score.raw) >=\n parseFloat(this.cmi.student_data.mastery_score)\n ? \"passed\"\n : \"failed\";\n }\n }\n } else if (this.cmi.core.lesson_mode === \"browse\") {\n if (\n (this.startingData?.cmi?.core?.lesson_status || \"\") === \"\" &&\n originalStatus === \"not attempted\"\n ) {\n this.cmi.core.lesson_status = \"browsed\";\n }\n }\n }\n\n const commitObject = this.getCommitObject(terminateCommit);\n if (typeof this.settings.lmsCommitUrl === \"string\") {\n return await this.processHttpRequest(\n this.settings.lmsCommitUrl,\n commitObject,\n terminateCommit,\n );\n } else {\n return {\n result: global_constants.SCORM_TRUE,\n errorCode: 0,\n };\n }\n }\n}\n\nexport { Scorm12Impl as Scorm12API };\n","import { BaseCMI } from \"./base_cmi\";\nimport { BaseScormValidationError } from \"../../exceptions\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\n\n/**\n * Base class for cmi *.n objects\n */\nexport class CMIArray extends BaseCMI {\n private readonly _errorCode: number;\n private readonly _errorClass: typeof BaseScormValidationError;\n private readonly __children: string;\n public childArray: any[];\n\n /**\n * Constructor cmi *.n arrays\n * @param {object} params\n */\n constructor(params: {\n children: string;\n errorCode?: number;\n errorClass?: typeof BaseScormValidationError;\n }) {\n super();\n this.__children = params.children;\n this._errorCode = params.errorCode || scorm12_errors.GENERAL;\n this._errorClass = params.errorClass || BaseScormValidationError;\n this.childArray = [];\n }\n\n /**\n * Called when the API has been reset\n */\n reset(wipe: boolean = false): void {\n this._initialized = false;\n if (wipe) {\n this.childArray = [];\n } else {\n // Reset all children\n for (let i = 0; i < this.childArray.length; i++) {\n this.childArray[i].reset();\n }\n }\n }\n /**\n * Getter for _children\n * @return {string}\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Setter for _children. Just throws an error.\n * @param {string} _children\n */\n set _children(_children: string) {\n throw new this._errorClass(this._errorCode);\n }\n\n /**\n * Getter for _count\n * @return {number}\n */\n get _count(): number {\n return this.childArray.length;\n }\n\n /**\n * Setter for _count. Just throws an error.\n * @param {number} _count\n */\n set _count(_count: number) {\n throw new this._errorClass(this._errorCode);\n }\n\n /**\n * toJSON for *.n arrays\n * @return {object}\n */\n toJSON(): object {\n this.jsonString = true;\n const result: { [key: string]: any } = {};\n for (let i = 0; i < this.childArray.length; i++) {\n result[i + \"\"] = this.childArray[i];\n }\n delete this.jsonString;\n return result;\n }\n}\n","/**\n * Base class for API cmi objects\n */\nexport abstract class BaseCMI {\n jsonString? = false;\n protected _initialized = false;\n private _start_time: number | undefined;\n\n /**\n * Getter for _initialized\n * @return {boolean}\n */\n get initialized(): boolean {\n return this._initialized;\n }\n\n /**\n * Getter for _start_time\n * @return {number | undefined}\n */\n get start_time(): number | undefined {\n return this._start_time;\n }\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n initialize(): void {\n this._initialized = true;\n }\n\n /**\n * Called when the player should override the 'session_time' provided by\n * the module\n */\n setStartTime(): void {\n this._start_time = new Date().getTime();\n }\n\n abstract reset(): void;\n}\n\n/**\n * Base class for cmi root objects\n */\nexport abstract class BaseRootCMI extends BaseCMI {\n abstract getCurrentTotalTime(): string;\n}\n","import { scorm12_constants } from \"../../constants/api_constants\";\nimport { scorm12_regex } from \"../../constants/regex\";\nimport { BaseCMI } from \"./base_cmi\";\nimport { checkValidFormat, checkValidRange } from \"./validation\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { BaseScormValidationError } from \"../../exceptions\";\n\n/**\n * Base class for cmi *.score objects\n */\nexport class CMIScore extends BaseCMI {\n private readonly __children: string;\n private readonly __score_range: string | false;\n private readonly __invalid_error_code: number;\n private readonly __invalid_type_code: number;\n private readonly __invalid_range_code: number;\n private readonly __decimal_regex: string;\n private readonly __error_class: typeof BaseScormValidationError;\n protected _raw = \"\";\n protected _min = \"\";\n protected _max: string;\n\n /**\n * Constructor for *.score\n * @param {\n * score_children: string,\n * score_range: string,\n * max: string,\n * invalidErrorCode: number,\n * invalidTypeCode: number,\n * invalidRangeCode: number,\n * decimalRegex: string,\n * errorClass: typeof BaseScormValidationError\n * } params\n */\n constructor(params: {\n score_children?: string;\n score_range?: string;\n max?: string;\n invalidErrorCode?: number;\n invalidTypeCode?: number;\n invalidRangeCode?: number;\n decimalRegex?: string;\n errorClass: typeof BaseScormValidationError;\n }) {\n super();\n\n this.__children = params.score_children || scorm12_constants.score_children;\n this.__score_range = !params.score_range\n ? false\n : scorm12_regex.score_range;\n this._max = params.max || params.max === \"\" ? params.max : \"100\";\n this.__invalid_error_code =\n params.invalidErrorCode || scorm12_errors.INVALID_SET_VALUE;\n this.__invalid_type_code =\n params.invalidTypeCode || scorm12_errors.TYPE_MISMATCH;\n this.__invalid_range_code =\n params.invalidRangeCode || scorm12_errors.VALUE_OUT_OF_RANGE;\n this.__decimal_regex = params.decimalRegex || scorm12_regex.CMIDecimal;\n this.__error_class = params.errorClass;\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n }\n\n /**\n * Getter for _children\n * @return {string}\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Setter for _children. Just throws an error.\n * @param {string} _children\n */\n set _children(_children: string) {\n throw new this.__error_class(this.__invalid_error_code);\n }\n\n /**\n * Getter for _raw\n * @return {string}\n */\n get raw(): string {\n return this._raw;\n }\n\n /**\n * Setter for _raw\n * @param {string} raw\n */\n set raw(raw: string) {\n if (\n checkValidFormat(\n raw,\n this.__decimal_regex,\n this.__invalid_type_code,\n this.__error_class,\n ) &&\n (!this.__score_range ||\n checkValidRange(\n raw,\n this.__score_range,\n this.__invalid_range_code,\n this.__error_class,\n ))\n ) {\n this._raw = raw;\n }\n }\n\n /**\n * Getter for _min\n * @return {string}\n */\n get min(): string {\n return this._min;\n }\n\n /**\n * Setter for _min\n * @param {string} min\n */\n set min(min: string) {\n if (\n checkValidFormat(\n min,\n this.__decimal_regex,\n this.__invalid_type_code,\n this.__error_class,\n ) &&\n (!this.__score_range ||\n checkValidRange(\n min,\n this.__score_range,\n this.__invalid_range_code,\n this.__error_class,\n ))\n ) {\n this._min = min;\n }\n }\n\n /**\n * Getter for _max\n * @return {string}\n */\n get max(): string {\n return this._max;\n }\n\n /**\n * Setter for _max\n * @param {string} max\n */\n set max(max: string) {\n if (\n checkValidFormat(\n max,\n this.__decimal_regex,\n this.__invalid_type_code,\n this.__error_class,\n ) &&\n (!this.__score_range ||\n checkValidRange(\n max,\n this.__score_range,\n this.__invalid_range_code,\n this.__error_class,\n ))\n ) {\n this._max = max;\n }\n }\n\n /**\n * toJSON for *.score\n * @return {\n * {\n * min: string,\n * max: string,\n * raw: string\n * }\n * }\n */\n toJSON(): {\n min: string;\n max: string;\n raw: string;\n } {\n this.jsonString = true;\n const result = {\n raw: this.raw,\n min: this.min,\n max: this.max,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseScormValidationError } from \"../../exceptions\";\n\n/**\n * Check if the value matches the proper format. If not, throw proper error code.\n *\n * @param {string} value\n * @param {string} regexPattern\n * @param {number} errorCode\n * @param {typeof BaseScormValidationError} errorClass\n * @param {boolean} [allowEmptyString]\n * @return {boolean}\n */\nexport function checkValidFormat(\n value: string,\n regexPattern: string,\n errorCode: number,\n errorClass: typeof BaseScormValidationError,\n allowEmptyString?: boolean,\n): boolean {\n if (typeof value !== \"string\") {\n return false;\n }\n const formatRegex = new RegExp(regexPattern);\n const matches = value.match(formatRegex);\n if (allowEmptyString && value === \"\") {\n return true;\n }\n if (value === undefined || !matches || matches[0] === \"\") {\n throw new errorClass(errorCode);\n }\n return true;\n}\n\n/**\n * Check if the value matches the proper range. If not, throw proper error code.\n *\n * @param {any} value\n * @param {string} rangePattern\n * @param {number} errorCode\n * @param {typeof BaseScormValidationError} errorClass\n * @return {boolean}\n */\nexport function checkValidRange(\n value: any,\n rangePattern: string,\n errorCode: number,\n errorClass: typeof BaseScormValidationError,\n): boolean {\n const ranges = rangePattern.split(\"#\");\n value = value * 1.0;\n if (value >= ranges[0]) {\n if (ranges[1] === \"*\" || value <= ranges[1]) {\n return true;\n } else {\n throw new errorClass(errorCode);\n }\n } else {\n throw new errorClass(errorCode);\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { CMIScore } from \"../common/score\";\nimport { scorm12_constants } from \"../../constants/api_constants\";\nimport { scorm12_regex } from \"../../constants/regex\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\nimport { check12ValidFormat } from \"../scorm12/validation\";\nimport * as Util from \"../../utilities\";\n\n/**\n * Class representing the `cmi.core` object\n * @extends BaseCMI\n */\nexport class CMICore extends BaseCMI {\n /**\n * Constructor for `cmi.core`\n */\n constructor() {\n super();\n this.score = new CMIScore({\n score_children: scorm12_constants.score_children,\n score_range: scorm12_regex.score_range,\n invalidErrorCode: scorm12_errors.INVALID_SET_VALUE,\n invalidTypeCode: scorm12_errors.TYPE_MISMATCH,\n invalidRangeCode: scorm12_errors.VALUE_OUT_OF_RANGE,\n errorClass: Scorm12ValidationError,\n });\n }\n\n public readonly score: CMIScore;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.score?.initialize();\n }\n\n private __children = scorm12_constants.core_children;\n private _student_id = \"\";\n private _student_name = \"\";\n private _lesson_location = \"\";\n private _credit = \"\";\n private _lesson_status = \"not attempted\";\n private _entry = \"\";\n private _total_time = \"\";\n private _lesson_mode = \"normal\";\n private _exit = \"\";\n private _session_time = \"00:00:00\";\n private _suspend_data = \"\";\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n\n this._exit = \"\";\n this._entry = \"\";\n\n /**\n * Resetting ensures we accurately track the time spent on each individual SCO session independently. Each new\n * session should start from zero, so we can reset cmi.core.session_time at the beginning of each session.\n */\n this._session_time = \"00:00:00\";\n\n this.score?.reset();\n }\n\n /**\n * Getter for __children\n * @return {string}\n * @private\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Setter for __children. Just throws an error.\n * @param {string} _children\n * @private\n */\n set _children(_children: string) {\n throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);\n }\n\n /**\n * Getter for _student_id\n * @return {string}\n */\n get student_id(): string {\n return this._student_id;\n }\n\n /**\n * Setter for _student_id. Can only be called before initialization.\n * @param {string} student_id\n */\n set student_id(student_id: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._student_id = student_id;\n }\n }\n\n /**\n * Getter for _student_name\n * @return {string}\n */\n get student_name(): string {\n return this._student_name;\n }\n\n /**\n * Setter for _student_name. Can only be called before initialization.\n * @param {string} student_name\n */\n set student_name(student_name: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._student_name = student_name;\n }\n }\n\n /**\n * Getter for _lesson_location\n * @return {string}\n */\n get lesson_location(): string {\n return this._lesson_location;\n }\n\n /**\n * Setter for _lesson_location\n * @param {string} lesson_location\n */\n set lesson_location(lesson_location: string) {\n if (check12ValidFormat(lesson_location, scorm12_regex.CMIString256, true)) {\n this._lesson_location = lesson_location;\n }\n }\n\n /**\n * Getter for _credit\n * @return {string}\n */\n get credit(): string {\n return this._credit;\n }\n\n /**\n * Setter for _credit. Can only be called before initialization.\n * @param {string} credit\n */\n set credit(credit: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._credit = credit;\n }\n }\n\n /**\n * Getter for _lesson_status\n * @return {string}\n */\n get lesson_status(): string {\n return this._lesson_status;\n }\n\n /**\n * Setter for _lesson_status\n * @param {string} lesson_status\n */\n set lesson_status(lesson_status: string) {\n if (this.initialized) {\n if (check12ValidFormat(lesson_status, scorm12_regex.CMIStatus)) {\n this._lesson_status = lesson_status;\n }\n } else {\n if (check12ValidFormat(lesson_status, scorm12_regex.CMIStatus2)) {\n this._lesson_status = lesson_status;\n }\n }\n }\n\n /**\n * Getter for _entry\n * @return {string}\n */\n get entry(): string {\n return this._entry;\n }\n\n /**\n * Setter for _entry. Can only be called before initialization.\n * @param {string} entry\n */\n set entry(entry: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._entry = entry;\n }\n }\n\n /**\n * Getter for _total_time\n * @return {string}\n */\n get total_time(): string {\n return this._total_time;\n }\n\n /**\n * Setter for _total_time. Can only be called before initialization.\n * @param {string} total_time\n */\n set total_time(total_time: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._total_time = total_time;\n }\n }\n\n /**\n * Getter for _lesson_mode\n * @return {string}\n */\n get lesson_mode(): string {\n return this._lesson_mode;\n }\n\n /**\n * Setter for _lesson_mode. Can only be called before initialization.\n * @param {string} lesson_mode\n */\n set lesson_mode(lesson_mode: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._lesson_mode = lesson_mode;\n }\n }\n\n /**\n * Getter for _exit. Should only be called during JSON export.\n * @return {string}\n */\n get exit(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._exit;\n }\n\n /**\n * Setter for _exit\n * @param {string} exit\n */\n set exit(exit: string) {\n if (check12ValidFormat(exit, scorm12_regex.CMIExit, true)) {\n this._exit = exit;\n }\n }\n\n /**\n * Getter for _session_time. Should only be called during JSON export.\n * @return {string}\n */\n get session_time(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._session_time;\n }\n\n /**\n * Setter for _session_time\n * @param {string} session_time\n */\n set session_time(session_time: string) {\n if (check12ValidFormat(session_time, scorm12_regex.CMITimespan)) {\n this._session_time = session_time;\n }\n }\n\n /**\n * Getter for _suspend_data\n * @return {string}\n */\n get suspend_data(): string {\n return this._suspend_data;\n }\n\n /**\n * Setter for _suspend_data\n * @param {string} suspend_data\n */\n set suspend_data(suspend_data: string) {\n if (check12ValidFormat(suspend_data, scorm12_regex.CMIString4096, true)) {\n this._suspend_data = suspend_data;\n }\n }\n\n /**\n * Adds the current session time to the existing total time.\n * @param {number} start_time\n * @return {string}\n */\n getCurrentTotalTime(start_time: number | undefined): string {\n let sessionTime = this._session_time;\n const startTime = start_time;\n\n if (typeof startTime !== \"undefined\" && startTime !== null) {\n const seconds = new Date().getTime() - startTime;\n sessionTime = Util.getSecondsAsHHMMSS(seconds / 1000);\n }\n\n return Util.addHHMMSSTimeStrings(\n this._total_time,\n sessionTime,\n new RegExp(scorm12_regex.CMITimespan),\n );\n }\n\n /**\n * toJSON for cmi.core\n *\n * @return {\n * {\n * student_name: string,\n * entry: string,\n * exit: string,\n * score: CMIScore,\n * student_id: string,\n * lesson_mode: string,\n * lesson_location: string,\n * lesson_status: string,\n * credit: string,\n * session_time: string\n * }\n * }\n */\n toJSON(): {\n student_name: string;\n entry: string;\n exit: string;\n score: CMIScore;\n student_id: string;\n lesson_mode: string;\n lesson_location: string;\n lesson_status: string;\n credit: string;\n session_time: string;\n } {\n this.jsonString = true;\n const result = {\n student_id: this.student_id,\n student_name: this.student_name,\n lesson_location: this.lesson_location,\n credit: this.credit,\n lesson_status: this.lesson_status,\n entry: this.entry,\n lesson_mode: this.lesson_mode,\n exit: this.exit,\n session_time: this.session_time,\n score: this.score,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { scorm12_constants } from \"../../constants/api_constants\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { scorm12_regex } from \"../../constants/regex\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\nimport { BaseRootCMI } from \"../common/base_cmi\";\nimport { check12ValidFormat } from \"./validation\";\nimport { CMICore } from \"../aicc/core\";\nimport { CMIObjectives } from \"./objectives\";\nimport { CMIStudentData } from \"./student_data\";\nimport { CMIStudentPreference } from \"./student_preference\";\nimport { CMIInteractions } from \"./interactions\";\n\n/**\n * Class representing the cmi object for SCORM 1.2\n */\nexport class CMI extends BaseRootCMI {\n private readonly __children: string = \"\";\n private __version: string = \"3.4\";\n private _launch_data: string = \"\";\n private _comments: string = \"\";\n private _comments_from_lms: string = \"\";\n\n /**\n * Constructor for the SCORM 1.2 cmi object\n * @param {string} cmi_children\n * @param {(CMIStudentData|AICCCMIStudentData)} student_data\n * @param {boolean} initialized\n */\n constructor(\n cmi_children?: string,\n student_data?: CMIStudentData,\n initialized?: boolean,\n ) {\n super();\n if (initialized) this.initialize();\n this.__children = cmi_children\n ? cmi_children\n : scorm12_constants.cmi_children;\n this.core = new CMICore();\n this.objectives = new CMIObjectives();\n this.student_data = student_data ? student_data : new CMIStudentData();\n this.student_preference = new CMIStudentPreference();\n this.interactions = new CMIInteractions();\n }\n\n public core: CMICore;\n public objectives: CMIObjectives;\n public student_data: CMIStudentData;\n public student_preference: CMIStudentPreference;\n public interactions: CMIInteractions;\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n\n this._launch_data = \"\";\n this._comments = \"\";\n this.core?.reset();\n this.objectives = new CMIObjectives();\n this.interactions = new CMIInteractions();\n this.student_data?.reset();\n this.student_preference?.reset();\n }\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.core?.initialize();\n this.objectives?.initialize();\n this.student_data?.initialize();\n this.student_preference?.initialize();\n this.interactions?.initialize();\n }\n\n /**\n * toJSON for cmi\n *\n * @return {\n * {\n * suspend_data: string,\n * launch_data: string,\n * comments: string,\n * comments_from_lms: string,\n * core: CMICore,\n * objectives: CMIObjectives,\n * student_data: CMIStudentData,\n * student_preference: CMIStudentPreference,\n * interactions: CMIInteractions\n * }\n * }\n */\n toJSON(): {\n suspend_data: string;\n launch_data: string;\n comments: string;\n comments_from_lms: string;\n core: CMICore;\n objectives: CMIObjectives;\n student_data: CMIStudentData;\n student_preference: CMIStudentPreference;\n interactions: CMIInteractions;\n } {\n this.jsonString = true;\n const result = {\n suspend_data: this.suspend_data,\n launch_data: this.launch_data,\n comments: this.comments,\n comments_from_lms: this.comments_from_lms,\n core: this.core,\n objectives: this.objectives,\n student_data: this.student_data,\n student_preference: this.student_preference,\n interactions: this.interactions,\n };\n delete this.jsonString;\n return result;\n }\n\n /**\n * Getter for __version\n * @return {string}\n */\n get _version(): string {\n return this.__version;\n }\n\n /**\n * Setter for __version. Just throws an error.\n * @param {string} _version\n */\n set _version(_version: string) {\n throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);\n }\n\n /**\n * Getter for __children\n * @return {string}\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Setter for __version. Just throws an error.\n * @param {string} _children\n */\n set _children(_children: string) {\n throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);\n }\n\n /**\n * Getter for _suspend_data\n * @return {string}\n */\n get suspend_data(): string {\n return this.core?.suspend_data;\n }\n\n /**\n * Setter for _suspend_data\n * @param {string} suspend_data\n */\n set suspend_data(suspend_data: string) {\n if (this.core) {\n this.core.suspend_data = suspend_data;\n }\n }\n\n /**\n * Getter for _launch_data\n * @return {string}\n */\n get launch_data(): string {\n return this._launch_data;\n }\n\n /**\n * Setter for _launch_data. Can only be called before initialization.\n * @param {string} launch_data\n */\n set launch_data(launch_data: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._launch_data = launch_data;\n }\n }\n\n /**\n * Getter for _comments\n * @return {string}\n */\n get comments(): string {\n return this._comments;\n }\n\n /**\n * Setter for _comments\n * @param {string} comments\n */\n set comments(comments: string) {\n if (check12ValidFormat(comments, scorm12_regex.CMIString4096, true)) {\n this._comments = comments;\n }\n }\n\n /**\n * Getter for _comments_from_lms\n * @return {string}\n */\n get comments_from_lms(): string {\n return this._comments_from_lms;\n }\n\n /**\n * Setter for _comments_from_lms. Can only be called before initialization.\n * @param {string} comments_from_lms\n */\n set comments_from_lms(comments_from_lms: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._comments_from_lms = comments_from_lms;\n }\n }\n\n /**\n * Adds the current session time to the existing total time.\n *\n * @return {string}\n */\n getCurrentTotalTime(): string {\n return this.core.getCurrentTotalTime(this.start_time);\n }\n}\n","import { CMIArray } from \"../common/array\";\nimport { scorm12_constants } from \"../../constants/api_constants\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\nimport { BaseCMI } from \"../common/base_cmi\";\nimport { check12ValidFormat, check12ValidRange } from \"./validation\";\nimport { scorm12_regex } from \"../../constants/regex\";\n\n/**\n * Class representing the SCORM 1.2 `cmi.interactions`\n * @extends CMIArray\n */\nexport class CMIInteractions extends CMIArray {\n /**\n * Constructor for `cmi.interactions`\n */\n constructor() {\n super({\n children: scorm12_constants.interactions_children,\n errorCode: scorm12_errors.INVALID_SET_VALUE,\n errorClass: Scorm12ValidationError,\n });\n }\n}\n\n/**\n * Class representing SCORM 1.2's cmi.interactions.n object\n * @extends BaseCMI\n */\nexport class CMIInteractionsObject extends BaseCMI {\n /**\n * Constructor for cmi.interactions.n object\n */\n constructor() {\n super();\n this.objectives = new CMIArray({\n errorCode: scorm12_errors.INVALID_SET_VALUE,\n errorClass: Scorm12ValidationError,\n children: scorm12_constants.objectives_children,\n });\n this.correct_responses = new CMIArray({\n errorCode: scorm12_errors.INVALID_SET_VALUE,\n errorClass: Scorm12ValidationError,\n children: scorm12_constants.correct_responses_children,\n });\n }\n\n public readonly objectives: CMIArray;\n public readonly correct_responses: CMIArray;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.objectives?.initialize();\n this.correct_responses?.initialize();\n }\n\n private _id = \"\";\n private _time = \"\";\n private _type = \"\";\n private _weighting = \"\";\n private _student_response = \"\";\n private _result = \"\";\n private _latency = \"\";\n\n /**\n * Called when the API has been reset\n */\n override reset(): void {\n this._initialized = false;\n\n this._id = \"\";\n this._time = \"\";\n this._type = \"\";\n this._weighting = \"\";\n this._student_response = \"\";\n this._result = \"\";\n this._latency = \"\";\n\n this.objectives?.reset();\n this.correct_responses?.reset();\n }\n\n /**\n * Getter for _id. Should only be called during JSON export.\n * @return {string}\n */\n get id(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._id;\n }\n\n /**\n * Setter for _id\n * @param {string} id\n */\n set id(id: string) {\n if (check12ValidFormat(id, scorm12_regex.CMIIdentifier)) {\n this._id = id;\n }\n }\n\n /**\n * Getter for _time. Should only be called during JSON export.\n * @return {string}\n */\n get time(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._time;\n }\n\n /**\n * Setter for _time\n * @param {string} time\n */\n set time(time: string) {\n if (check12ValidFormat(time, scorm12_regex.CMITime)) {\n this._time = time;\n }\n }\n\n /**\n * Getter for _type. Should only be called during JSON export.\n * @return {string}\n */\n get type(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._type;\n }\n\n /**\n * Setter for _type\n * @param {string} type\n */\n set type(type: string) {\n if (check12ValidFormat(type, scorm12_regex.CMIType)) {\n this._type = type;\n }\n }\n\n /**\n * Getter for _weighting. Should only be called during JSON export.\n * @return {string}\n */\n get weighting(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._weighting;\n }\n\n /**\n * Setter for _weighting\n * @param {string} weighting\n */\n set weighting(weighting: string) {\n if (\n check12ValidFormat(weighting, scorm12_regex.CMIDecimal) &&\n check12ValidRange(weighting, scorm12_regex.weighting_range)\n ) {\n this._weighting = weighting;\n }\n }\n\n /**\n * Getter for _student_response. Should only be called during JSON export.\n * @return {string}\n */\n get student_response(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._student_response;\n }\n\n /**\n * Setter for _student_response\n * @param {string} student_response\n */\n set student_response(student_response: string) {\n if (check12ValidFormat(student_response, scorm12_regex.CMIFeedback, true)) {\n this._student_response = student_response;\n }\n }\n\n /**\n * Getter for _result. Should only be called during JSON export.\n * @return {string}\n */\n get result(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._result;\n }\n\n /**\n * Setter for _result\n * @param {string} result\n */\n set result(result: string) {\n if (check12ValidFormat(result, scorm12_regex.CMIResult)) {\n this._result = result;\n }\n }\n\n /**\n * Getter for _latency. Should only be called during JSON export.\n * @return {string}\n */\n get latency(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._latency;\n }\n\n /**\n * Setter for _latency\n * @param {string} latency\n */\n set latency(latency: string) {\n if (check12ValidFormat(latency, scorm12_regex.CMITimespan)) {\n this._latency = latency;\n }\n }\n\n /**\n * toJSON for cmi.interactions.n\n *\n * @return {\n * {\n * id: string,\n * time: string,\n * type: string,\n * weighting: string,\n * student_response: string,\n * result: string,\n * latency: string,\n * objectives: CMIArray,\n * correct_responses: CMIArray\n * }\n * }\n */\n toJSON(): {\n id: string;\n time: string;\n type: string;\n weighting: string;\n student_response: string;\n result: string;\n latency: string;\n objectives: CMIArray;\n correct_responses: CMIArray;\n } {\n this.jsonString = true;\n const result = {\n id: this.id,\n time: this.time,\n type: this.type,\n weighting: this.weighting,\n student_response: this.student_response,\n result: this.result,\n latency: this.latency,\n objectives: this.objectives,\n correct_responses: this.correct_responses,\n };\n delete this.jsonString;\n return result;\n }\n}\n\n/**\n * Class representing SCORM 1.2's cmi.interactions.n.objectives.n object\n * @extends BaseCMI\n */\nexport class CMIInteractionsObjectivesObject extends BaseCMI {\n /**\n * Constructor for cmi.interactions.n.objectives.n\n */\n constructor() {\n super();\n }\n\n private _id = \"\";\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n this._id = \"\";\n }\n\n /**\n * Getter for _id\n * @return {string}\n */\n get id(): string {\n return this._id;\n }\n\n /**\n * Setter for _id\n * @param {string} id\n */\n set id(id: string) {\n if (check12ValidFormat(id, scorm12_regex.CMIIdentifier)) {\n this._id = id;\n }\n }\n\n /**\n * toJSON for cmi.interactions.n.objectives.n\n * @return {\n * {\n * id: string\n * }\n * }\n */\n toJSON(): {\n id: string;\n } {\n this.jsonString = true;\n const result = {\n id: this.id,\n };\n delete this.jsonString;\n return result;\n }\n}\n\n/**\n * Class representing SCORM 1.2's cmi.interactions.correct_responses.n object\n * @extends BaseCMI\n */\nexport class CMIInteractionsCorrectResponsesObject extends BaseCMI {\n /**\n * Constructor for cmi.interactions.correct_responses.n\n */\n constructor() {\n super();\n }\n\n private _pattern = \"\";\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n this._pattern = \"\";\n }\n\n /**\n * Getter for _pattern\n * @return {string}\n */\n get pattern(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._pattern;\n }\n\n /**\n * Setter for _pattern\n * @param {string} pattern\n */\n set pattern(pattern: string) {\n if (check12ValidFormat(pattern, scorm12_regex.CMIFeedback, true)) {\n this._pattern = pattern;\n }\n }\n\n /**\n * toJSON for cmi.interactions.correct_responses.n\n * @return {\n * {\n * pattern: string\n * }\n * }\n */\n toJSON(): {\n pattern: string;\n } {\n this.jsonString = true;\n const result = {\n pattern: this._pattern,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { check12ValidFormat } from \"./validation\";\nimport { scorm12_regex } from \"../../constants/regex\";\n\n/**\n * Class for AICC Navigation object\n */\nexport class NAV extends BaseCMI {\n /**\n * Constructor for NAV object\n */\n constructor() {\n super();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._event = \"\";\n this._initialized = false;\n }\n\n private _event = \"\";\n\n /**\n * Getter for _event\n * @return {string}\n */\n get event(): string {\n return this._event;\n }\n\n /**\n * Setter for _event\n * @param {string} event\n */\n set event(event: string) {\n if (check12ValidFormat(event, scorm12_regex.NAVEvent)) {\n this._event = event;\n }\n }\n\n /**\n * toJSON for nav object\n * @return {\n * {\n * event: string\n * }\n * }\n */\n toJSON(): {\n event: string;\n } {\n this.jsonString = true;\n const result = {\n event: this.event,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { CMIScore } from \"../common/score\";\nimport { scorm12_constants } from \"../../constants/api_constants\";\nimport { scorm12_regex } from \"../../constants/regex\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\nimport { check12ValidFormat } from \"./validation\";\nimport { CMIArray } from \"../common/array\";\n\n/**\n * Class representing SCORM 1.2's `cmi.objectives` object\n * @extends CMIArray\n */\nexport class CMIObjectives extends CMIArray {\n /**\n * Constructor for `cmi.objectives`\n */\n constructor() {\n super({\n children: scorm12_constants.objectives_children,\n errorCode: scorm12_errors.INVALID_SET_VALUE,\n errorClass: Scorm12ValidationError,\n });\n }\n}\n\n/**\n * Class representing SCORM 1.2's cmi.objectives.n object\n * @extends BaseCMI\n */\nexport class CMIObjectivesObject extends BaseCMI {\n /**\n * Constructor for cmi.objectives.n\n */\n constructor() {\n super();\n this.score = new CMIScore({\n score_children: scorm12_constants.score_children,\n score_range: scorm12_regex.score_range,\n invalidErrorCode: scorm12_errors.INVALID_SET_VALUE,\n invalidTypeCode: scorm12_errors.TYPE_MISMATCH,\n invalidRangeCode: scorm12_errors.VALUE_OUT_OF_RANGE,\n errorClass: Scorm12ValidationError,\n });\n }\n\n public readonly score: CMIScore;\n\n private _id = \"\";\n private _status = \"\";\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n this._id = \"\";\n this._status = \"\";\n this.score?.reset();\n }\n\n /**\n * Getter for _id\n * @return {string}\n */\n get id(): string {\n return this._id;\n }\n\n /**\n * Setter for _id\n * @param {string} id\n */\n set id(id: string) {\n if (check12ValidFormat(id, scorm12_regex.CMIIdentifier)) {\n this._id = id;\n }\n }\n\n /**\n * Getter for _status\n * @return {string}\n */\n get status(): string {\n return this._status;\n }\n\n /**\n * Setter for _status\n * @param {string} status\n */\n set status(status: string) {\n if (check12ValidFormat(status, scorm12_regex.CMIStatus2)) {\n this._status = status;\n }\n }\n\n /**\n * toJSON for cmi.objectives.n\n * @return {\n * {\n * id: string,\n * status: string,\n * score: CMIScore\n * }\n * }\n */\n toJSON(): {\n id: string;\n status: string;\n score: CMIScore;\n } {\n this.jsonString = true;\n const result = {\n id: this.id,\n status: this.status,\n score: this.score,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { scorm12_constants } from \"../../constants/api_constants\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\n\n/**\n * Class representing the SCORM 1.2 cmi.student_data object\n * @extends BaseCMI\n */\nexport class CMIStudentData extends BaseCMI {\n private readonly __children;\n private _mastery_score = \"\";\n private _max_time_allowed = \"\";\n private _time_limit_action = \"\";\n\n /**\n * Constructor for cmi.student_data\n * @param {string} student_data_children\n */\n constructor(student_data_children?: string) {\n super();\n this.__children = student_data_children\n ? student_data_children\n : scorm12_constants.student_data_children;\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n }\n\n /**\n * Getter for __children\n * @return {string}\n * @private\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Setter for __children. Just throws an error.\n * @param {string} _children\n * @private\n */\n set _children(_children: string) {\n throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);\n }\n\n /**\n * Getter for _master_score\n * @return {string}\n */\n get mastery_score(): string {\n return this._mastery_score;\n }\n\n /**\n * Setter for _master_score. Can only be called before initialization.\n * @param {string} mastery_score\n */\n set mastery_score(mastery_score: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._mastery_score = mastery_score;\n }\n }\n\n /**\n * Getter for _max_time_allowed\n * @return {string}\n */\n get max_time_allowed(): string {\n return this._max_time_allowed;\n }\n\n /**\n * Setter for _max_time_allowed. Can only be called before initialization.\n * @param {string} max_time_allowed\n */\n set max_time_allowed(max_time_allowed: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._max_time_allowed = max_time_allowed;\n }\n }\n\n /**\n * Getter for _time_limit_action\n * @return {string}\n */\n get time_limit_action(): string {\n return this._time_limit_action;\n }\n\n /**\n * Setter for _time_limit_action. Can only be called before initialization.\n * @param {string} time_limit_action\n */\n set time_limit_action(time_limit_action: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._time_limit_action = time_limit_action;\n }\n }\n\n /**\n * toJSON for cmi.student_data\n *\n * @return {\n * {\n * max_time_allowed: string,\n * time_limit_action: string,\n * mastery_score: string\n * }\n * }\n */\n toJSON(): {\n mastery_score: string;\n max_time_allowed: string;\n time_limit_action: string;\n } {\n this.jsonString = true;\n const result = {\n mastery_score: this.mastery_score,\n max_time_allowed: this.max_time_allowed,\n time_limit_action: this.time_limit_action,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { scorm12_constants } from \"../../constants/api_constants\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\nimport { check12ValidFormat, check12ValidRange } from \"./validation\";\nimport { scorm12_regex } from \"../../constants/regex\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\n\n/**\n * Class representing the SCORM 1.2 cmi.student_preference object\n * @extends BaseCMI\n */\nexport class CMIStudentPreference extends BaseCMI {\n private readonly __children;\n\n /**\n * Constructor for cmi.student_preference\n * @param {string} student_preference_children\n */\n constructor(student_preference_children?: string) {\n super();\n this.__children = student_preference_children\n ? student_preference_children\n : scorm12_constants.student_preference_children;\n }\n\n private _audio = \"\";\n private _language = \"\";\n private _speed = \"\";\n private _text = \"\";\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n }\n\n /**\n * Getter for __children\n * @return {string}\n * @private\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Setter for __children. Just throws an error.\n * @param {string} _children\n * @private\n */\n set _children(_children: string) {\n throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);\n }\n\n /**\n * Getter for _audio\n * @return {string}\n */\n get audio(): string {\n return this._audio;\n }\n\n /**\n * Setter for _audio\n * @param {string} audio\n */\n set audio(audio: string) {\n if (\n check12ValidFormat(audio, scorm12_regex.CMISInteger) &&\n check12ValidRange(audio, scorm12_regex.audio_range)\n ) {\n this._audio = audio;\n }\n }\n\n /**\n * Getter for _language\n * @return {string}\n */\n get language(): string {\n return this._language;\n }\n\n /**\n * Setter for _language\n * @param {string} language\n */\n set language(language: string) {\n if (check12ValidFormat(language, scorm12_regex.CMIString256)) {\n this._language = language;\n }\n }\n\n /**\n * Getter for _speed\n * @return {string}\n */\n get speed(): string {\n return this._speed;\n }\n\n /**\n * Setter for _speed\n * @param {string} speed\n */\n set speed(speed: string) {\n if (\n check12ValidFormat(speed, scorm12_regex.CMISInteger) &&\n check12ValidRange(speed, scorm12_regex.speed_range)\n ) {\n this._speed = speed;\n }\n }\n\n /**\n * Getter for _text\n * @return {string}\n */\n get text(): string {\n return this._text;\n }\n\n /**\n * Setter for _text\n * @param {string} text\n */\n set text(text: string) {\n if (\n check12ValidFormat(text, scorm12_regex.CMISInteger) &&\n check12ValidRange(text, scorm12_regex.text_range)\n ) {\n this._text = text;\n }\n }\n\n /**\n * toJSON for cmi.student_preference\n *\n * @return {\n * {\n * audio: string,\n * language: string,\n * speed: string,\n * text: string\n * }\n * }\n */\n toJSON(): {\n audio: string;\n language: string;\n speed: string;\n text: string;\n } {\n this.jsonString = true;\n const result = {\n audio: this.audio,\n language: this.language,\n speed: this.speed,\n text: this.text,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { checkValidFormat, checkValidRange } from \"../common/validation\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\n\n/**\n * Helper method, no reason to have to pass the same error codes every time\n * @param {string} value\n * @param {string} regexPattern\n * @param {boolean} allowEmptyString\n * @return {boolean}\n */\nexport function check12ValidFormat(\n value: string,\n regexPattern: string,\n allowEmptyString?: boolean,\n): boolean {\n return checkValidFormat(\n value,\n regexPattern,\n scorm12_errors.TYPE_MISMATCH,\n Scorm12ValidationError,\n allowEmptyString,\n );\n}\n\n/**\n * Helper method, no reason to have to pass the same error codes every time\n * @param {string} value\n * @param {string} rangePattern\n * @param {boolean} allowEmptyString\n * @return {boolean}\n */\nexport function check12ValidRange(\n value: any,\n rangePattern: string,\n allowEmptyString?: boolean,\n): boolean {\n if (!allowEmptyString && value === \"\") {\n throw new Scorm12ValidationError(scorm12_errors.VALUE_OUT_OF_RANGE);\n }\n\n return checkValidRange(\n value,\n rangePattern,\n scorm12_errors.VALUE_OUT_OF_RANGE,\n Scorm12ValidationError,\n );\n}\n","interface ErrorDescription {\n basicMessage: string;\n detailMessage: string;\n}\n\ninterface ErrorDescriptions {\n [key: string]: ErrorDescription;\n}\n\ninterface ScormConstants {\n cmi_children: string;\n core_children: string;\n score_children: string;\n comments_children: string;\n objectives_children: string;\n correct_responses_children: string;\n student_data_children: string;\n student_preference_children: string;\n interactions_children: string;\n error_descriptions: ErrorDescriptions;\n}\n\ninterface AiccConstants extends ScormConstants {\n student_demographics_children: string;\n tries_children: string;\n attempt_records_children: string;\n paths_children: string;\n}\n\ninterface Scorm2004Constants {\n cmi_children: string;\n comments_children: string;\n score_children: string;\n objectives_children: string;\n correct_responses_children: string;\n student_data_children: string;\n student_preference_children: string;\n interactions_children: string;\n adl_data_children: string;\n error_descriptions: ErrorDescriptions;\n}\n\ninterface GlobalConstants {\n SCORM_TRUE: string;\n SCORM_FALSE: string;\n STATE_NOT_INITIALIZED: number;\n STATE_INITIALIZED: number;\n STATE_TERMINATED: number;\n}\n\nexport const global_constants: GlobalConstants = {\n SCORM_TRUE: \"true\",\n SCORM_FALSE: \"false\",\n STATE_NOT_INITIALIZED: 0,\n STATE_INITIALIZED: 1,\n STATE_TERMINATED: 2,\n};\n\nexport const scorm12_constants: ScormConstants = {\n // Children lists\n cmi_children:\n \"core,suspend_data,launch_data,comments,objectives,student_data,student_preference,interactions\",\n core_children:\n \"student_id,student_name,lesson_location,credit,lesson_status,entry,score,total_time,lesson_mode,exit,session_time\",\n score_children: \"raw,min,max\",\n comments_children: \"content,location,time\",\n objectives_children: \"id,score,status\",\n correct_responses_children: \"pattern\",\n student_data_children: \"mastery_score,max_time_allowed,time_limit_action\",\n student_preference_children: \"audio,language,speed,text\",\n interactions_children:\n \"id,objectives,time,type,correct_responses,weighting,student_response,result,latency\",\n error_descriptions: {\n \"101\": {\n basicMessage: \"General Exception\",\n detailMessage:\n \"No specific error code exists to describe the error. Use LMSGetDiagnostic for more information\",\n },\n \"201\": {\n basicMessage: \"Invalid argument error\",\n detailMessage:\n \"Indicates that an argument represents an invalid data model element or is otherwise incorrect.\",\n },\n \"202\": {\n basicMessage: \"Element cannot have children\",\n detailMessage:\n 'Indicates that LMSGetValue was called with a data model element name that ends in \"_children\" for a data model element that does not support the \"_children\" suffix.',\n },\n \"203\": {\n basicMessage: \"Element not an array - cannot have count\",\n detailMessage:\n 'Indicates that LMSGetValue was called with a data model element name that ends in \"_count\" for a data model element that does not support the \"_count\" suffix.',\n },\n \"301\": {\n basicMessage: \"Not initialized\",\n detailMessage:\n \"Indicates that an API call was made before the call to lmsInitialize.\",\n },\n \"401\": {\n basicMessage: \"Not implemented error\",\n detailMessage:\n \"The data model element indicated in a call to LMSGetValue or LMSSetValue is valid, but was not implemented by this LMS. SCORM 1.2 defines a set of data model elements as being optional for an LMS to implement.\",\n },\n \"402\": {\n basicMessage: \"Invalid set value, element is a keyword\",\n detailMessage:\n 'Indicates that LMSSetValue was called on a data model element that represents a keyword (elements that end in \"_children\" and \"_count\").',\n },\n \"403\": {\n basicMessage: \"Element is read only\",\n detailMessage:\n \"LMSSetValue was called with a data model element that can only be read.\",\n },\n \"404\": {\n basicMessage: \"Element is write only\",\n detailMessage:\n \"LMSGetValue was called on a data model element that can only be written to.\",\n },\n \"405\": {\n basicMessage: \"Incorrect Data Type\",\n detailMessage:\n \"LMSSetValue was called with a value that is not consistent with the data format of the supplied data model element.\",\n },\n \"407\": {\n basicMessage: \"Element Value Out Of Range\",\n detailMessage:\n \"The numeric value supplied to a LMSSetValue call is outside of the numeric range allowed for the supplied data model element.\",\n },\n \"408\": {\n basicMessage: \"Data Model Dependency Not Established\",\n detailMessage:\n \"Some data model elements cannot be set until another data model element was set. This error condition indicates that the prerequisite element was not set before the dependent element.\",\n },\n },\n};\nexport const aicc_constants: AiccConstants = {\n ...scorm12_constants,\n ...{\n cmi_children:\n \"core,suspend_data,launch_data,comments,objectives,student_data,student_preference,interactions,evaluation\",\n student_preference_children:\n \"audio,language,lesson_type,speed,text,text_color,text_location,text_size,video,windows\",\n student_data_children:\n \"attempt_number,tries,mastery_score,max_time_allowed,time_limit_action\",\n student_demographics_children:\n \"city,class,company,country,experience,familiar_name,instructor_name,title,native_language,state,street_address,telephone,years_experience\",\n tries_children: \"time,status,score\",\n attempt_records_children: \"score,lesson_status\",\n paths_children: \"location_id,date,time,status,why_left,time_in_element\",\n },\n};\n\nexport const scorm2004_constants: Scorm2004Constants = {\n // Children lists\n cmi_children:\n \"_version,comments_from_learner,comments_from_lms,completion_status,credit,entry,exit,interactions,launch_data,learner_id,learner_name,learner_preference,location,max_time_allowed,mode,objectives,progress_measure,scaled_passing_score,score,session_time,success_status,suspend_data,time_limit_action,total_time\",\n comments_children: \"comment,timestamp,location\",\n score_children: \"max,raw,scaled,min\",\n objectives_children:\n \"progress_measure,completion_status,success_status,description,score,id\",\n correct_responses_children: \"pattern\",\n student_data_children: \"mastery_score,max_time_allowed,time_limit_action\",\n student_preference_children:\n \"audio_level,audio_captioning,delivery_speed,language\",\n interactions_children:\n \"id,type,objectives,timestamp,correct_responses,weighting,learner_response,result,latency,description\",\n adl_data_children: \"id,store\",\n error_descriptions: {\n \"0\": {\n basicMessage: \"No Error\",\n detailMessage: \"No error occurred, the previous API call was successful.\",\n },\n \"101\": {\n basicMessage: \"General Exception\",\n detailMessage:\n \"No specific error code exists to describe the error. Use GetDiagnostic for more information.\",\n },\n \"102\": {\n basicMessage: \"General Initialization Failure\",\n detailMessage: \"Call to Initialize failed for an unknown reason.\",\n },\n \"103\": {\n basicMessage: \"Already Initialized\",\n detailMessage:\n \"Call to Initialize failed because Initialize was already called.\",\n },\n \"104\": {\n basicMessage: \"Content Instance Terminated\",\n detailMessage:\n \"Call to Initialize failed because Terminate was already called.\",\n },\n \"111\": {\n basicMessage: \"General Termination Failure\",\n detailMessage: \"Call to Terminate failed for an unknown reason.\",\n },\n \"112\": {\n basicMessage: \"Termination Before Initialization\",\n detailMessage:\n \"Call to Terminate failed because it was made before the call to Initialize.\",\n },\n \"113\": {\n basicMessage: \"Termination After Termination\",\n detailMessage:\n \"Call to Terminate failed because Terminate was already called.\",\n },\n \"122\": {\n basicMessage: \"Retrieve Data Before Initialization\",\n detailMessage:\n \"Call to GetValue failed because it was made before the call to Initialize.\",\n },\n \"123\": {\n basicMessage: \"Retrieve Data After Termination\",\n detailMessage:\n \"Call to GetValue failed because it was made after the call to Terminate.\",\n },\n \"132\": {\n basicMessage: \"Store Data Before Initialization\",\n detailMessage:\n \"Call to SetValue failed because it was made before the call to Initialize.\",\n },\n \"133\": {\n basicMessage: \"Store Data After Termination\",\n detailMessage:\n \"Call to SetValue failed because it was made after the call to Terminate.\",\n },\n \"142\": {\n basicMessage: \"Commit Before Initialization\",\n detailMessage:\n \"Call to Commit failed because it was made before the call to Initialize.\",\n },\n \"143\": {\n basicMessage: \"Commit After Termination\",\n detailMessage:\n \"Call to Commit failed because it was made after the call to Terminate.\",\n },\n \"201\": {\n basicMessage: \"General Argument Error\",\n detailMessage:\n \"An invalid argument was passed to an API method (usually indicates that Initialize, Commit or Terminate did not receive the expected empty string argument.\",\n },\n \"301\": {\n basicMessage: \"General Get Failure\",\n detailMessage:\n \"Indicates a failed GetValue call where no other specific error code is applicable. Use GetDiagnostic for more information.\",\n },\n \"351\": {\n basicMessage: \"General Set Failure\",\n detailMessage:\n \"Indicates a failed SetValue call where no other specific error code is applicable. Use GetDiagnostic for more information.\",\n },\n \"391\": {\n basicMessage: \"General Commit Failure\",\n detailMessage:\n \"Indicates a failed Commit call where no other specific error code is applicable. Use GetDiagnostic for more information.\",\n },\n \"401\": {\n basicMessage: \"Undefined Data Model Element\",\n detailMessage:\n \"The data model element name passed to GetValue or SetValue is not a valid SCORM data model element.\",\n },\n \"402\": {\n basicMessage: \"Unimplemented Data Model Element\",\n detailMessage:\n \"The data model element indicated in a call to GetValue or SetValue is valid, but was not implemented by this LMS. In SCORM 2004, this error would indicate an LMS that is not fully SCORM conformant.\",\n },\n \"403\": {\n basicMessage: \"Data Model Element Value Not Initialized\",\n detailMessage:\n \"Attempt to read a data model element that has not been initialized by the LMS or through a SetValue call. This error condition is often reached during normal execution of a SCO.\",\n },\n \"404\": {\n basicMessage: \"Data Model Element Is Read Only\",\n detailMessage:\n \"SetValue was called with a data model element that can only be read.\",\n },\n \"405\": {\n basicMessage: \"Data Model Element Is Write Only\",\n detailMessage:\n \"GetValue was called on a data model element that can only be written to.\",\n },\n \"406\": {\n basicMessage: \"Data Model Element Type Mismatch\",\n detailMessage:\n \"SetValue was called with a value that is not consistent with the data format of the supplied data model element.\",\n },\n \"407\": {\n basicMessage: \"Data Model Element Value Out Of Range\",\n detailMessage:\n \"The numeric value supplied to a SetValue call is outside of the numeric range allowed for the supplied data model element.\",\n },\n \"408\": {\n basicMessage: \"Data Model Dependency Not Established\",\n detailMessage:\n \"Some data model elements cannot be set until another data model element was set. This error condition indicates that the prerequisite element was not set before the dependent element.\",\n },\n },\n};\n","export enum NAVBoolean {\n unknown = \"unknown\",\n true = \"true\",\n false = \"false\",\n}\n\nexport enum SuccessStatus {\n passed = \"passed\",\n failed = \"failed\",\n unknown = \"unknown\",\n}\n\nexport enum CompletionStatus {\n completed = \"completed\",\n incomplete = \"incomplete\",\n unknown = \"unknown\",\n}\n\nexport enum LogLevelEnum {\n _,\n DEBUG,\n INFO,\n WARN,\n ERROR,\n NONE,\n}\n","export type ErrorCode = {\n [key: string]: number;\n};\n\nexport const global_errors: ErrorCode = {\n GENERAL: 101,\n INITIALIZATION_FAILED: 101,\n INITIALIZED: 101,\n TERMINATED: 101,\n TERMINATION_FAILURE: 101,\n TERMINATION_BEFORE_INIT: 101,\n MULTIPLE_TERMINATION: 101,\n RETRIEVE_BEFORE_INIT: 101,\n RETRIEVE_AFTER_TERM: 101,\n STORE_BEFORE_INIT: 101,\n STORE_AFTER_TERM: 101,\n COMMIT_BEFORE_INIT: 101,\n COMMIT_AFTER_TERM: 101,\n ARGUMENT_ERROR: 101,\n CHILDREN_ERROR: 101,\n COUNT_ERROR: 101,\n GENERAL_GET_FAILURE: 101,\n GENERAL_SET_FAILURE: 101,\n GENERAL_COMMIT_FAILURE: 101,\n UNDEFINED_DATA_MODEL: 101,\n UNIMPLEMENTED_ELEMENT: 101,\n VALUE_NOT_INITIALIZED: 101,\n INVALID_SET_VALUE: 101,\n READ_ONLY_ELEMENT: 101,\n WRITE_ONLY_ELEMENT: 101,\n TYPE_MISMATCH: 101,\n VALUE_OUT_OF_RANGE: 101,\n DEPENDENCY_NOT_ESTABLISHED: 101,\n};\n\nexport const scorm12_errors: ErrorCode = {\n ...global_errors,\n RETRIEVE_BEFORE_INIT: 301,\n STORE_BEFORE_INIT: 301,\n COMMIT_BEFORE_INIT: 301,\n ARGUMENT_ERROR: 201,\n CHILDREN_ERROR: 202,\n COUNT_ERROR: 203,\n UNDEFINED_DATA_MODEL: 401,\n UNIMPLEMENTED_ELEMENT: 401,\n VALUE_NOT_INITIALIZED: 301,\n INVALID_SET_VALUE: 402,\n READ_ONLY_ELEMENT: 403,\n WRITE_ONLY_ELEMENT: 404,\n TYPE_MISMATCH: 405,\n VALUE_OUT_OF_RANGE: 407,\n DEPENDENCY_NOT_ESTABLISHED: 408,\n};\n\nexport const scorm2004_errors: ErrorCode = {\n ...global_errors,\n INITIALIZATION_FAILED: 102,\n INITIALIZED: 103,\n TERMINATED: 104,\n TERMINATION_FAILURE: 111,\n TERMINATION_BEFORE_INIT: 112,\n MULTIPLE_TERMINATIONS: 113,\n RETRIEVE_BEFORE_INIT: 122,\n RETRIEVE_AFTER_TERM: 123,\n STORE_BEFORE_INIT: 132,\n STORE_AFTER_TERM: 133,\n COMMIT_BEFORE_INIT: 142,\n COMMIT_AFTER_TERM: 143,\n ARGUMENT_ERROR: 201,\n GENERAL_GET_FAILURE: 301,\n GENERAL_SET_FAILURE: 351,\n GENERAL_COMMIT_FAILURE: 391,\n UNDEFINED_DATA_MODEL: 401,\n UNIMPLEMENTED_ELEMENT: 402,\n VALUE_NOT_INITIALIZED: 403,\n READ_ONLY_ELEMENT: 404,\n WRITE_ONLY_ELEMENT: 405,\n TYPE_MISMATCH: 406,\n VALUE_OUT_OF_RANGE: 407,\n DEPENDENCY_NOT_ESTABLISHED: 408,\n};\n","export const scorm12_regex = {\n CMIString256: \"^.{0,255}$\",\n CMIString4096: \"^.{0,4096}$\",\n CMITime: \"^(?:[01]\\\\d|2[0123]):(?:[012345]\\\\d):(?:[012345]\\\\d)$\",\n CMITimespan: \"^([0-9]{2,}):([0-9]{2}):([0-9]{2})(.[0-9]{1,2})?$\",\n\n CMIInteger: \"^\\\\d+$\",\n CMISInteger: \"^-?([0-9]+)$\",\n CMIDecimal: \"^-?([0-9]{0,3})(.[0-9]*)?$\",\n\n CMIIdentifier: \"^[\\\\u0021-\\\\u007E\\\\s]{0,255}$\",\n CMIFeedback: \"^.{0,255}$\",\n // This must be redefined\n CMIIndex: \"[._](\\\\d+).\",\n // Vocabulary Data Type Definition\n CMIStatus: \"^(passed|completed|failed|incomplete|browsed)$\",\n CMIStatus2: \"^(passed|completed|failed|incomplete|browsed|not attempted)$\",\n CMIExit: \"^(time-out|suspend|logout|)$\",\n CMIType:\n \"^(true-false|choice|fill-in|matching|performance|sequencing|likert|numeric)$\",\n CMIResult:\n \"^(correct|wrong|unanticipated|neutral|([0-9]{0,3})?(\\\\.[0-9]*)?)$\",\n NAVEvent: \"^(previous|continue)$\",\n // Data ranges\n score_range: \"0#100\",\n audio_range: \"-1#100\",\n speed_range: \"-100#100\",\n weighting_range: \"-100#100\",\n text_range: \"-1#1\",\n};\nexport const aicc_regex = {\n ...scorm12_regex,\n ...{\n CMIIdentifier: \"^\\\\w{1,255}$\",\n },\n};\nexport const scorm2004_regex = {\n CMIString200: \"^[\\\\u0000-\\\\uFFFF]{0,200}$\",\n CMIString250: \"^[\\\\u0000-\\\\uFFFF]{0,250}$\",\n CMIString1000: \"^[\\\\u0000-\\\\uFFFF]{0,1000}$\",\n CMIString4000: \"^[\\\\u0000-\\\\uFFFF]{0,4000}$\",\n CMIString64000: \"^[\\\\u0000-\\\\uFFFF]{0,64000}$\",\n CMILang: \"^([a-zA-Z]{2,3}|i|x)(-[a-zA-Z0-9-]{2,8})?$|^$\",\n\n CMILangString250:\n \"^({lang=([a-zA-Z]{2,3}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,250}$)?$\",\n\n CMILangcr: \"^(({lang=([a-zA-Z]{2,3}|i|x)?(-[a-zA-Z0-9-]{2,8})?}))(.*?)$\",\n\n CMILangString250cr:\n \"^(({lang=([a-zA-Z]{2,3}|i|x)?(-[a-zA-Z0-9-]{2,8})?})?(.{0,250})?)?$\",\n\n CMILangString4000:\n \"^({lang=([a-zA-Z]{2,3}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,4000}$)?$\",\n\n CMITime:\n \"^(19[7-9]{1}[0-9]{1}|20[0-2]{1}[0-9]{1}|203[0-8]{1})((-(0[1-9]{1}|1[0-2]{1}))((-(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]{1}))(T([0-1]{1}[0-9]{1}|2[0-3]{1})((:[0-5]{1}[0-9]{1})((:[0-5]{1}[0-9]{1})((\\\\.[0-9]{1,2})((Z|([+|-]([0-1]{1}[0-9]{1}|2[0-3]{1})))(:[0-5]{1}[0-9]{1})?)?)?)?)?)?)?)?$\",\n CMITimespan:\n \"^P(?:([.,\\\\d]+)Y)?(?:([.,\\\\d]+)M)?(?:([.,\\\\d]+)W)?(?:([.,\\\\d]+)D)?(?:T?(?:([.,\\\\d]+)H)?(?:([.,\\\\d]+)M)?(?:([.,\\\\d]+)S)?)?$\",\n CMIInteger: \"^\\\\d+$\",\n CMISInteger: \"^-?([0-9]+)$\",\n CMIDecimal: \"^-?([0-9]{1,5})(\\\\.[0-9]{1,18})?$\",\n CMIIdentifier: \"^\\\\S{1,250}[a-zA-Z0-9]$\",\n CMIShortIdentifier: \"^[\\\\w\\\\.\\\\-\\\\_]{1,250}$\",\n CMILongIdentifier:\n \"^(?:(?!urn:)\\\\S{1,4000}|urn:[A-Za-z0-9-]{1,31}:\\\\S{1,4000}|.{1,4000})$\",\n // need to re-examine this\n CMIFeedback: \"^.*$\",\n // This must be redefined\n CMIIndex: \"[._](\\\\d+).\",\n CMIIndexStore: \".N(\\\\d+).\",\n // Vocabulary Data Type Definition\n CMICStatus: \"^(completed|incomplete|not attempted|unknown)$\",\n CMISStatus: \"^(passed|failed|unknown)$\",\n CMIExit: \"^(time-out|suspend|logout|normal)$\",\n CMIType:\n \"^(true-false|choice|fill-in|long-fill-in|matching|performance|sequencing|likert|numeric|other)$\",\n CMIResult:\n \"^(correct|incorrect|unanticipated|neutral|-?([0-9]{1,4})(\\\\.[0-9]{1,18})?)$\",\n NAVEvent:\n \"^(previous|continue|exit|exitAll|abandon|abandonAll|suspendAll|_none_|(\\\\{target=(?<choice_target>\\\\S{0,}[a-zA-Z0-9-_]+)})?choice|(\\\\{target=(?<jump_target>\\\\S{0,}[a-zA-Z0-9-_]+)})?jump)$\",\n\n NAVBoolean: \"^(unknown|true|false$)\",\n NAVTarget: \"^{target=\\\\S{0,}[a-zA-Z0-9-_]+}$\",\n // Data ranges\n scaled_range: \"-1#1\",\n audio_range: \"0#*\",\n speed_range: \"0#*\",\n text_range: \"-1#1\",\n progress_range: \"0#1\",\n};\n","type APIError = {\n errorCode: number;\n errorMessage: string;\n detailedMessage: string;\n};\n\nexport class BaseScormValidationError extends Error {\n constructor(errorCode: number) {\n super(errorCode.toString());\n this._errorCode = errorCode;\n this.name = \"ScormValidationError\";\n }\n\n private readonly _errorCode: number;\n\n /**\n * Getter for _errorCode\n * @return {number}\n */\n get errorCode(): number {\n return this._errorCode;\n }\n}\n\n/**\n * Base Validation Exception\n */\nexport class ValidationError\n extends BaseScormValidationError\n implements APIError\n{\n /**\n * Constructor to take in an error message and code\n * @param {number} errorCode\n * @param {string} errorMessage\n * @param {string} detailedMessage\n */\n constructor(\n errorCode: number,\n errorMessage: string,\n detailedMessage?: string,\n ) {\n super(errorCode);\n this.message = errorMessage;\n this._errorMessage = errorMessage;\n if (detailedMessage) {\n this._detailedMessage = detailedMessage;\n }\n }\n\n private readonly _errorMessage: string;\n private readonly _detailedMessage: string = \"\";\n\n /**\n * Getter for _errorMessage\n * @return {string}\n */\n get errorMessage(): string {\n return this._errorMessage;\n }\n\n /**\n * Getter for _detailedMessage\n * @return {string}\n */\n get detailedMessage(): string {\n return this._detailedMessage;\n }\n}\n","import { ValidationError } from \"../exceptions\";\nimport { scorm12_constants } from \"../constants/api_constants\";\n\nconst scorm12_errors = scorm12_constants.error_descriptions;\n\n/**\n * SCORM 1.2 Validation Error\n */\nexport class Scorm12ValidationError extends ValidationError {\n /**\n * Constructor to take in an error code\n * @param {number} errorCode\n */\n constructor(errorCode: number) {\n if ({}.hasOwnProperty.call(scorm12_errors, String(errorCode))) {\n super(\n errorCode,\n scorm12_errors[String(errorCode)].basicMessage,\n scorm12_errors[String(errorCode)].detailMessage,\n );\n } else {\n super(\n 101,\n scorm12_errors[\"101\"].basicMessage,\n scorm12_errors[\"101\"].detailMessage,\n );\n }\n }\n}\n","export const SECONDS_PER_SECOND = 1.0;\nexport const SECONDS_PER_MINUTE = 60;\nexport const SECONDS_PER_HOUR = 60 * SECONDS_PER_MINUTE;\nexport const SECONDS_PER_DAY = 24 * SECONDS_PER_HOUR;\n\ntype Designation = {\n [key: string]: number;\n};\n\ntype StringKeyMap = {\n [key: string]: any;\n};\n\nconst designations: Designation = {\n D: SECONDS_PER_DAY,\n H: SECONDS_PER_HOUR,\n M: SECONDS_PER_MINUTE,\n S: SECONDS_PER_SECOND,\n};\n\n/**\n * Converts a Number to a String of HH:MM:SS\n *\n * @param {number} totalSeconds\n * @return {string}\n */\nexport function getSecondsAsHHMMSS(totalSeconds: number | null): string {\n // SCORM spec does not deal with negative durations, give zero back\n if (!totalSeconds || totalSeconds <= 0) {\n return \"00:00:00\";\n }\n\n const hours = Math.floor(totalSeconds / SECONDS_PER_HOUR);\n const dateObj = new Date(totalSeconds * 1000);\n const minutes = dateObj.getUTCMinutes();\n // make sure we add any possible decimal value\n const seconds = dateObj.getSeconds();\n const ms = totalSeconds % 1.0;\n let msStr = \"\";\n\n if (countDecimals(ms) > 0) {\n if (countDecimals(ms) > 2) {\n msStr = ms.toFixed(2);\n } else {\n msStr = String(ms);\n }\n\n msStr = \".\" + msStr.split(\".\")[1];\n }\n\n return (\n (hours + \":\" + minutes + \":\" + seconds).replace(/\\b\\d\\b/g, \"0$&\") + msStr\n );\n}\n\n/**\n * Calculate the number of seconds from ISO 8601 Duration\n *\n * @param {number} seconds\n * @return {string}\n */\nexport function getSecondsAsISODuration(seconds: number | null): string {\n // SCORM spec does not deal with negative durations, give zero back\n if (!seconds || seconds <= 0) {\n return \"PT0S\";\n }\n\n let duration = \"P\";\n let remainder = seconds;\n for (const designationsKey in designations) {\n const current_seconds = designations[designationsKey];\n let value = Math.floor(remainder / current_seconds);\n remainder = remainder % current_seconds;\n\n if (countDecimals(remainder) > 2) {\n remainder = Number(Number(remainder).toFixed(2));\n }\n\n // If we have anything left in the remainder, and we're currently adding\n // seconds to the duration, go ahead and add the decimal to the seconds\n if (designationsKey === \"S\" && remainder > 0) {\n value += remainder;\n }\n\n if (value) {\n if (\n (duration.indexOf(\"D\") > 0 ||\n designationsKey === \"H\" ||\n designationsKey === \"M\" ||\n designationsKey === \"S\") &&\n duration.indexOf(\"T\") === -1\n ) {\n duration += \"T\";\n }\n\n duration += `${value}${designationsKey}`;\n }\n }\n return duration;\n}\n\n/**\n * Calculate the number of seconds from HH:MM:SS.DDDDDD\n *\n * @param {string} timeString\n * @param {RegExp} timeRegex\n * @return {number}\n */\nexport function getTimeAsSeconds(\n timeString: string | number | boolean | null,\n timeRegex: RegExp | string,\n): number {\n if (typeof timeString === \"number\" || typeof timeString === \"boolean\") {\n timeString = String(timeString);\n }\n if (typeof timeRegex === \"string\") {\n timeRegex = new RegExp(timeRegex);\n }\n if (!timeString || !timeString.match(timeRegex)) {\n return 0;\n }\n\n const parts = timeString.split(\":\");\n const hours = Number(parts[0]);\n const minutes = Number(parts[1]);\n const seconds = Number(parts[2]);\n return hours * 3600 + minutes * 60 + seconds;\n}\n\n/**\n * Calculate the number of seconds from ISO 8601 Duration\n *\n * @param {string} duration\n * @param {RegExp} durationRegex\n * @return {number}\n */\nexport function getDurationAsSeconds(\n duration: string | null,\n durationRegex: RegExp | string,\n): number {\n if (typeof durationRegex === \"string\") {\n durationRegex = new RegExp(durationRegex);\n }\n\n if (!duration || !duration.match(durationRegex)) {\n return 0;\n }\n\n const [, years, _, , days, hours, minutes, seconds] =\n new RegExp(durationRegex).exec(duration) || [];\n let result = 0.0;\n result += Number(seconds) || 0.0;\n result += Number(minutes) * 60.0 || 0.0;\n result += Number(hours) * 3600.0 || 0.0;\n result += Number(days) * (60 * 60 * 24.0) || 0.0;\n result += Number(years) * (60 * 60 * 24 * 365.0) || 0.0;\n return result;\n}\n\n/**\n * Adds together two ISO8601 Duration strings\n *\n * @param {string} first\n * @param {string} second\n * @param {RegExp|string} durationRegex\n * @return {string}\n */\nexport function addTwoDurations(\n first: string,\n second: string,\n durationRegex: RegExp | string,\n): string {\n const regex: RegExp =\n typeof durationRegex === \"string\"\n ? new RegExp(durationRegex)\n : durationRegex;\n return getSecondsAsISODuration(\n getDurationAsSeconds(first, regex) + getDurationAsSeconds(second, regex),\n );\n}\n\n/**\n * Add together two HH:MM:SS.DD strings\n *\n * @param {string} first\n * @param {string} second\n * @param {RegExp} timeRegex\n * @return {string}\n */\nexport function addHHMMSSTimeStrings(\n first: string,\n second: string,\n timeRegex: RegExp | string,\n): string {\n if (typeof timeRegex === \"string\") {\n timeRegex = new RegExp(timeRegex);\n }\n return getSecondsAsHHMMSS(\n getTimeAsSeconds(first, timeRegex) + getTimeAsSeconds(second, timeRegex),\n );\n}\n\n/**\n * Flatten a JSON object down to string paths for each values\n * @param {object} data\n * @return {object}\n */\nexport function flatten(data: StringKeyMap): object {\n const result: StringKeyMap = {};\n\n /**\n * Recurse through the object\n * @param {*} cur\n * @param {*} prop\n */\n function recurse(cur: any, prop: any) {\n if (Object(cur) !== cur) {\n result[prop] = cur;\n } else if (Array.isArray(cur)) {\n for (let i = 0, l = cur.length; i < l; i++) {\n recurse(cur[i], prop + \"[\" + i + \"]\");\n if (l === 0) result[prop] = [];\n }\n } else {\n let isEmpty = true;\n\n for (const p in cur) {\n if ({}.hasOwnProperty.call(cur, p)) {\n isEmpty = false;\n recurse(cur[p], prop ? prop + \".\" + p : p);\n }\n }\n\n if (isEmpty && prop) result[prop] = {};\n }\n }\n\n recurse(data, \"\");\n return result;\n}\n\n/**\n * Un-flatten a flat JSON object\n * @param {object} data\n * @return {object}\n */\nexport function unflatten(data: StringKeyMap): object {\n \"use strict\";\n\n if (Object(data) !== data || Array.isArray(data)) return data;\n const regex = /\\.?([^.[\\]]+)|\\[(\\d+)]/g;\n const result: StringKeyMap = {};\n\n for (const p in data) {\n if ({}.hasOwnProperty.call(data, p)) {\n let cur = result;\n let prop = \"\";\n let m = regex.exec(p);\n\n while (m) {\n cur = cur[prop] || (cur[prop] = m[2] ? [] : {});\n prop = m[2] || m[1];\n m = regex.exec(p);\n }\n\n cur[prop] = data[p];\n }\n }\n\n return result[\"\"] || result;\n}\n\n/**\n * Counts the number of decimal places\n * @param {number} num\n * @return {number}\n */\nexport function countDecimals(num: number): number {\n if (Math.floor(num) === num || String(num).indexOf(\".\") < 0) return 0;\n const parts = num.toString().split(\".\")[1];\n return parts.length || 0;\n}\n\n/**\n * Formats the SCORM messages for easy reading\n *\n * @param {string} functionName\n * @param {string} message\n * @param {string} CMIElement\n * @return {string}\n */\nexport function formatMessage(\n functionName: string,\n message: string,\n CMIElement?: string,\n): string {\n const baseLength = 20;\n let messageString = \"\";\n\n messageString += functionName;\n\n let fillChars = baseLength - messageString.length;\n\n for (let i = 0; i < fillChars; i++) {\n messageString += \" \";\n }\n\n messageString += \": \";\n\n if (CMIElement) {\n const CMIElementBaseLength = 70;\n\n messageString += CMIElement;\n\n fillChars = CMIElementBaseLength - messageString.length;\n\n for (let j = 0; j < fillChars; j++) {\n messageString += \" \";\n }\n }\n\n if (message) {\n messageString += message;\n }\n\n return messageString;\n}\n\n/**\n * Checks to see if {str} contains {tester}\n *\n * @param {string} str String to check against\n * @param {string} tester String to check for\n * @return {boolean}\n */\nexport function stringMatches(str: string, tester: string): boolean {\n return str?.match(tester) !== null;\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { ValidationError } from \"../exceptions\";\nimport { aicc_constants } from \"../constants/api_constants\";\n\nconst aicc_errors = aicc_constants.error_descriptions;\n\n/**\n * AICC Validation Error\n */\nexport class AICCValidationError extends ValidationError {\n /**\n * Constructor to take in an error code\n * @param {number} errorCode\n */\n constructor(errorCode: number) {\n if ({}.hasOwnProperty.call(aicc_errors, String(errorCode))) {\n super(\n errorCode,\n aicc_errors[String(errorCode)].basicMessage,\n aicc_errors[String(errorCode)].detailMessage,\n );\n } else {\n super(\n 101,\n aicc_errors[\"101\"].basicMessage,\n aicc_errors[\"101\"].detailMessage,\n );\n }\n }\n}\n","import { checkValidFormat } from \"../common/validation\";\nimport { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\n\n/**\n * Helper method, no reason to have to pass the same error codes every time\n * @param {string} value\n * @param {string} regexPattern\n * @param {boolean} allowEmptyString\n * @return {boolean}\n */\nexport function checkAICCValidFormat(\n value: string,\n regexPattern: string,\n allowEmptyString?: boolean,\n): boolean {\n return checkValidFormat(\n value,\n regexPattern,\n scorm12_errors.TYPE_MISMATCH,\n AICCValidationError,\n allowEmptyString,\n );\n}\n","import { CMIArray } from \"../common/array\";\nimport { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { BaseCMI } from \"../common/base_cmi\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { checkAICCValidFormat } from \"./validation\";\nimport { aicc_regex } from \"../../constants/regex\";\n\n/**\n * AICC Evaluation object\n */\nexport class CMIEvaluation extends BaseCMI {\n /**\n * Constructor for AICC Evaluation object\n */\n constructor() {\n super();\n this.comments = new CMIEvaluationComments();\n }\n\n public comments: CMIEvaluationComments;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.comments?.initialize();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n this.comments?.reset();\n }\n\n /**\n * toJSON for cmi.evaluation object\n * @return {{comments: CMIEvaluationComments}}\n */\n toJSON(): {\n comments: CMIEvaluationComments;\n } {\n this.jsonString = true;\n const result = {\n comments: this.comments,\n };\n delete this.jsonString;\n return result;\n }\n}\n\n/**\n * Class representing AICC's cmi.evaluation.comments object\n */\n\nclass CMIEvaluationComments extends CMIArray {\n /**\n * Constructor for AICC Evaluation Comments object\n */\n constructor() {\n super({\n children: aicc_constants.comments_children,\n errorCode: scorm12_errors.INVALID_SET_VALUE,\n errorClass: AICCValidationError,\n });\n }\n}\n\n/**\n * Class for AICC Evaluation Comments\n */\nexport class CMIEvaluationCommentsObject extends BaseCMI {\n private _content = \"\";\n private _location = \"\";\n private _time = \"\";\n\n /**\n * Constructor for Evaluation Comments\n */\n constructor() {\n super();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n\n this._content = \"\";\n this._location = \"\";\n this._time = \"\";\n }\n\n /**\n * Getter for _content\n * @return {string}\n */\n get content(): string {\n return this._content;\n }\n\n /**\n * Setter for _content\n * @param {string} content\n */\n set content(content: string) {\n if (checkAICCValidFormat(content, aicc_regex.CMIString256)) {\n this._content = content;\n }\n }\n\n /**\n * Getter for _location\n * @return {string}\n */\n get location(): string {\n return this._location;\n }\n\n /**\n * Setter for _location\n * @param {string} location\n */\n set location(location: string) {\n if (checkAICCValidFormat(location, aicc_regex.CMIString256)) {\n this._location = location;\n }\n }\n\n /**\n * Getter for _time\n * @return {string}\n */\n get time(): string {\n return this._time;\n }\n\n /**\n * Setting for _time\n * @param {string} time\n */\n set time(time: string) {\n if (checkAICCValidFormat(time, aicc_regex.CMITime)) {\n this._time = time;\n }\n }\n\n /**\n * toJSON for cmi.evaluation.comments.n object\n * @return {\n * {\n * content: string,\n * location: string,\n * time: string\n * }\n * }\n */\n toJSON(): {\n content: string;\n location: string;\n time: string;\n } {\n this.jsonString = true;\n const result = {\n content: this.content,\n location: this.location,\n time: this.time,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { CMIArray } from \"../common/array\";\nimport { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { checkAICCValidFormat } from \"./validation\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { aicc_regex } from \"../../constants/regex\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { CMIStudentPreference } from \"../scorm12/student_preference\";\n\n/**\n * StudentPreferences class for AICC\n */\nexport class AICCStudentPreferences extends CMIStudentPreference {\n /**\n * Constructor for AICC Student Preferences object\n */\n constructor() {\n super(aicc_constants.student_preference_children);\n this.windows = new CMIArray({\n errorCode: scorm12_errors.INVALID_SET_VALUE,\n errorClass: AICCValidationError,\n children: \"\",\n });\n }\n\n public windows: CMIArray;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.windows?.initialize();\n }\n\n private _lesson_type = \"\";\n private _text_color = \"\";\n private _text_location = \"\";\n private _text_size = \"\";\n private _video = \"\";\n\n /**\n * Getter for _lesson_type\n * @return {string}\n */\n get lesson_type(): string {\n return this._lesson_type;\n }\n\n /**\n * Setter for _lesson_type\n * @param {string} lesson_type\n */\n set lesson_type(lesson_type: string) {\n if (checkAICCValidFormat(lesson_type, aicc_regex.CMIString256)) {\n this._lesson_type = lesson_type;\n }\n }\n\n /**\n * Getter for _text_color\n * @return {string}\n */\n get text_color(): string {\n return this._text_color;\n }\n\n /**\n * Setter for _text_color\n * @param {string} text_color\n */\n set text_color(text_color: string) {\n if (checkAICCValidFormat(text_color, aicc_regex.CMIString256)) {\n this._text_color = text_color;\n }\n }\n\n /**\n * Getter for _text_location\n * @return {string}\n */\n get text_location(): string {\n return this._text_location;\n }\n\n /**\n * Setter for _text_location\n * @param {string} text_location\n */\n set text_location(text_location: string) {\n if (checkAICCValidFormat(text_location, aicc_regex.CMIString256)) {\n this._text_location = text_location;\n }\n }\n\n /**\n * Getter for _text_size\n * @return {string}\n */\n get text_size(): string {\n return this._text_size;\n }\n\n /**\n * Setter for _text_size\n * @param {string} text_size\n */\n set text_size(text_size: string) {\n if (checkAICCValidFormat(text_size, aicc_regex.CMIString256)) {\n this._text_size = text_size;\n }\n }\n\n /**\n * Getter for _video\n * @return {string}\n */\n get video(): string {\n return this._video;\n }\n\n /**\n * Setter for _video\n * @param {string} video\n */\n set video(video: string) {\n if (checkAICCValidFormat(video, aicc_regex.CMIString256)) {\n this._video = video;\n }\n }\n\n /**\n * toJSON for cmi.student_preference\n *\n * @return {\n * {\n * audio: string,\n * language: string,\n * speed: string,\n * text: string,\n * text_color: string,\n * text_location: string,\n * text_size: string,\n * video: string,\n * windows: CMIArray\n * }\n * }\n */\n override toJSON(): {\n audio: string;\n language: string;\n lesson_type: string;\n speed: string;\n text: string;\n text_color: string;\n text_location: string;\n text_size: string;\n video: string;\n windows: CMIArray;\n } {\n this.jsonString = true;\n const result = {\n audio: this.audio,\n language: this.language,\n lesson_type: this.lesson_type,\n speed: this.speed,\n text: this.text,\n text_color: this.text_color,\n text_location: this.text_location,\n text_size: this.text_size,\n video: this.video,\n windows: this.windows,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\n\n/**\n * Class representing the AICC cmi.student_demographics object\n */\nexport class CMIStudentDemographics extends BaseCMI {\n private __children = aicc_constants.student_demographics_children;\n private _city = \"\";\n private _class = \"\";\n private _company = \"\";\n private _country = \"\";\n private _experience = \"\";\n private _familiar_name = \"\";\n private _instructor_name = \"\";\n private _title = \"\";\n private _native_language = \"\";\n private _state = \"\";\n private _street_address = \"\";\n private _telephone = \"\";\n private _years_experience = \"\";\n\n /**\n * Constructor for AICC StudentDemographics object\n */\n constructor() {\n super();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n }\n\n /**\n * Getter for _children\n * @return {string}\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Getter for city\n * @return {string}\n */\n get city(): string {\n return this._city;\n }\n\n /**\n * Setter for _city. Sets an error if trying to set after\n * initialization.\n * @param {string} city\n */\n set city(city: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._city = city;\n }\n }\n\n /**\n * Getter for class\n * @return {string}\n */\n get class(): string {\n return this._class;\n }\n\n /**\n * Setter for _class. Sets an error if trying to set after\n * initialization.\n * @param {string} clazz\n */\n set class(clazz: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._class = clazz;\n }\n }\n\n /**\n * Getter for company\n * @return {string}\n */\n get company(): string {\n return this._company;\n }\n\n /**\n * Setter for _company. Sets an error if trying to set after\n * initialization.\n * @param {string} company\n */\n set company(company: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._company = company;\n }\n }\n\n /**\n * Getter for country\n * @return {string}\n */\n get country(): string {\n return this._country;\n }\n\n /**\n * Setter for _country. Sets an error if trying to set after\n * initialization.\n * @param {string} country\n */\n set country(country: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._country = country;\n }\n }\n\n /**\n * Getter for experience\n * @return {string}\n */\n get experience(): string {\n return this._experience;\n }\n\n /**\n * Setter for _experience. Sets an error if trying to set after\n * initialization.\n * @param {string} experience\n */\n set experience(experience: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._experience = experience;\n }\n }\n\n /**\n * Getter for familiar_name\n * @return {string}\n */\n get familiar_name(): string {\n return this._familiar_name;\n }\n\n /**\n * Setter for _familiar_name. Sets an error if trying to set after\n * initialization.\n * @param {string} familiar_name\n */\n set familiar_name(familiar_name: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._familiar_name = familiar_name;\n }\n }\n\n /**\n * Getter for instructor_name\n * @return {string}\n */\n get instructor_name(): string {\n return this._instructor_name;\n }\n\n /**\n * Setter for _instructor_name. Sets an error if trying to set after\n * initialization.\n * @param {string} instructor_name\n */\n set instructor_name(instructor_name: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._instructor_name = instructor_name;\n }\n }\n\n /**\n * Getter for title\n * @return {string}\n */\n get title(): string {\n return this._title;\n }\n\n /**\n * Setter for _title. Sets an error if trying to set after\n * initialization.\n * @param {string} title\n */\n set title(title: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._title = title;\n }\n }\n\n /**\n * Getter for native_language\n * @return {string}\n */\n get native_language(): string {\n return this._native_language;\n }\n\n /**\n * Setter for _native_language. Sets an error if trying to set after\n * initialization.\n * @param {string} native_language\n */\n set native_language(native_language: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._native_language = native_language;\n }\n }\n\n /**\n * Getter for state\n * @return {string}\n */\n get state(): string {\n return this._state;\n }\n\n /**\n * Setter for _state. Sets an error if trying to set after\n * initialization.\n * @param {string} state\n */\n set state(state: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._state = state;\n }\n }\n\n /**\n * Getter for street_address\n * @return {string}\n */\n get street_address(): string {\n return this._street_address;\n }\n\n /**\n * Setter for _street_address. Sets an error if trying to set after\n * initialization.\n * @param {string} street_address\n */\n set street_address(street_address: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._street_address = street_address;\n }\n }\n\n /**\n * Getter for telephone\n * @return {string}\n */\n get telephone(): string {\n return this._telephone;\n }\n\n /**\n * Setter for _telephone. Sets an error if trying to set after\n * initialization.\n * @param {string} telephone\n */\n set telephone(telephone: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._telephone = telephone;\n }\n }\n\n /**\n * Getter for years_experience\n * @return {string}\n */\n get years_experience(): string {\n return this._years_experience;\n }\n\n /**\n * Setter for _years_experience. Sets an error if trying to set after\n * initialization.\n * @param {string} years_experience\n */\n set years_experience(years_experience: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._years_experience = years_experience;\n }\n }\n\n /**\n * toJSON for cmi.student_demographics object\n * @return {\n * {\n * city: string,\n * class: string,\n * company: string,\n * country: string,\n * experience: string,\n * familiar_name: string,\n * instructor_name: string,\n * title: string,\n * native_language: string,\n * state: string,\n * street_address: string,\n * telephone: string,\n * years_experience: string\n * }\n * }\n */\n toJSON(): {\n city: string;\n class: string;\n company: string;\n country: string;\n experience: string;\n familiar_name: string;\n instructor_name: string;\n title: string;\n native_language: string;\n state: string;\n street_address: string;\n telephone: string;\n years_experience: string;\n } {\n this.jsonString = true;\n const result = {\n city: this.city,\n class: this.class,\n company: this.company,\n country: this.country,\n experience: this.experience,\n familiar_name: this.familiar_name,\n instructor_name: this.instructor_name,\n title: this.title,\n native_language: this.native_language,\n state: this.state,\n street_address: this.street_address,\n telephone: this.telephone,\n years_experience: this.years_experience,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { CMIArray } from \"../common/array\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { BaseCMI } from \"../common/base_cmi\";\nimport { CMIScore } from \"../common/score\";\nimport { aicc_regex } from \"../../constants/regex\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { checkAICCValidFormat } from \"./validation\";\n\n/**\n * Class representing the AICC cmi.student_data.tries object\n */\nexport class CMITries extends CMIArray {\n /**\n * Constructor for inline Tries Array class\n */\n constructor() {\n super({\n children: aicc_constants.tries_children,\n });\n }\n}\n\n/**\n * Class for AICC Tries\n */\nexport class CMITriesObject extends BaseCMI {\n private _status = \"\";\n private _time = \"\";\n\n /**\n * Constructor for AICC Tries object\n */\n constructor() {\n super();\n this.score = new CMIScore({\n score_children: aicc_constants.score_children,\n score_range: aicc_regex.score_range,\n invalidErrorCode: scorm12_errors.INVALID_SET_VALUE,\n invalidTypeCode: scorm12_errors.TYPE_MISMATCH,\n invalidRangeCode: scorm12_errors.VALUE_OUT_OF_RANGE,\n errorClass: AICCValidationError,\n });\n }\n\n public score: CMIScore;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.score?.initialize();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n this._status = \"\";\n this._time = \"\";\n this.score?.reset();\n }\n\n /**\n * Getter for _status\n * @return {string}\n */\n get status(): string {\n return this._status;\n }\n\n /**\n * Setter for _status\n * @param {string} status\n */\n set status(status: string) {\n if (checkAICCValidFormat(status, aicc_regex.CMIStatus2)) {\n this._status = status;\n }\n }\n\n /**\n * Getter for _time\n * @return {string}\n */\n get time(): string {\n return this._time;\n }\n\n /**\n * Setter for _time\n * @param {string} time\n */\n set time(time: string) {\n if (checkAICCValidFormat(time, aicc_regex.CMITime)) {\n this._time = time;\n }\n }\n\n /**\n * toJSON for cmi.student_data.tries.n object\n * @return {\n * {\n * status: string,\n * time: string,\n * score: CMIScore\n * }\n * }\n */\n toJSON(): {\n status: string;\n time: string;\n score: CMIScore;\n } {\n this.jsonString = true;\n const result = {\n status: this.status,\n time: this.time,\n score: this.score,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { CMIScore } from \"../common/score\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { aicc_regex } from \"../../constants/regex\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { checkAICCValidFormat } from \"./validation\";\nimport { CMIArray } from \"../common/array\";\n\n/**\n * Class for cmi.student_data.attempt_records array\n */\nexport class CMIAttemptRecords extends CMIArray {\n /**\n * Constructor for inline Tries Array class\n */\n constructor() {\n super({\n children: aicc_constants.attempt_records_children,\n });\n }\n}\n\n/**\n * Class for AICC Attempt Records\n */\nexport class CMIAttemptRecordsObject extends BaseCMI {\n private _lesson_status = \"\";\n\n /**\n * Constructor for AICC Attempt Records object\n */\n constructor() {\n super();\n this.score = new CMIScore({\n score_children: aicc_constants.score_children,\n score_range: aicc_regex.score_range,\n invalidErrorCode: scorm12_errors.INVALID_SET_VALUE,\n invalidTypeCode: scorm12_errors.TYPE_MISMATCH,\n invalidRangeCode: scorm12_errors.VALUE_OUT_OF_RANGE,\n errorClass: AICCValidationError,\n });\n }\n\n public score: CMIScore;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n\n this._lesson_status = \"\";\n this.score?.initialize();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n this.score?.reset();\n }\n\n /**\n * Getter for _lesson_status\n * @return {string}\n */\n get lesson_status(): string {\n return this._lesson_status;\n }\n\n /**\n * Setter for _lesson_status\n * @param {string} lesson_status\n */\n set lesson_status(lesson_status: string) {\n if (checkAICCValidFormat(lesson_status, aicc_regex.CMIStatus2)) {\n this._lesson_status = lesson_status;\n }\n }\n\n /**\n * toJSON for cmi.student_data.attempt_records.n object\n * @return {\n * {\n * lesson_status: string,\n * score: CMIScore\n * }\n * }\n */\n toJSON(): {\n lesson_status: string;\n score: CMIScore;\n } {\n this.jsonString = true;\n const result = {\n lesson_status: this.lesson_status,\n score: this.score,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { CMITries } from \"./tries\";\nimport { CMIStudentData } from \"../scorm12/student_data\";\nimport { CMIAttemptRecords } from \"./attempts\";\n\n/**\n * StudentData class for AICC\n */\nexport class AICCCMIStudentData extends CMIStudentData {\n /**\n * Constructor for AICC StudentData object\n */\n constructor() {\n super(aicc_constants.student_data_children);\n this.tries = new CMITries();\n this.attempt_records = new CMIAttemptRecords();\n }\n\n public tries: CMITries;\n public attempt_records: CMIAttemptRecords;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.tries?.initialize();\n this.attempt_records?.initialize();\n }\n\n /**\n * Called when the API has been reset\n */\n override reset(): void {\n this._initialized = false;\n this.tries?.reset(true);\n this.attempt_records?.reset(true);\n }\n\n private _tries_during_lesson = \"\";\n\n /**\n * Getter for tries_during_lesson\n * @return {string}\n */\n get tries_during_lesson(): string {\n return this._tries_during_lesson;\n }\n\n /**\n * Setter for _tries_during_lesson. Sets an error if trying to set after\n * initialization.\n * @param {string} tries_during_lesson\n */\n set tries_during_lesson(tries_during_lesson: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._tries_during_lesson = tries_during_lesson;\n }\n }\n\n /**\n * toJSON for cmi.student_data object\n * @return {\n * {\n * mastery_score: string,\n * max_time_allowed: string,\n * time_limit_action: string,\n * tries: CMITries,\n * attempt_records: CMIAttemptRecords\n * }\n * }\n */\n override toJSON(): {\n mastery_score: string;\n max_time_allowed: string;\n time_limit_action: string;\n tries: CMITries;\n attempt_records: CMIAttemptRecords;\n } {\n this.jsonString = true;\n const result = {\n mastery_score: this.mastery_score,\n max_time_allowed: this.max_time_allowed,\n time_limit_action: this.time_limit_action,\n tries: this.tries,\n attempt_records: this.attempt_records,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { checkAICCValidFormat } from \"./validation\";\nimport { CMIArray } from \"../common/array\";\nimport { aicc_regex } from \"../../constants/regex\";\nimport { aicc_constants } from \"../../constants/api_constants\";\n\n/**\n * Class representing the AICC `cmi.paths` object\n */\nexport class CMIPaths extends CMIArray {\n /**\n * Constructor for inline Paths Array class\n */\n constructor() {\n super({\n children: aicc_constants.paths_children,\n });\n }\n}\n\n/**\n * Class for AICC Paths\n */\nexport class CMIPathsObject extends BaseCMI {\n private _location_id = \"\";\n private _date = \"\";\n private _time = \"\";\n private _status = \"\";\n private _why_left = \"\";\n private _time_in_element = \"\";\n\n /**\n * Constructor for AICC Paths objects\n */\n constructor() {\n super();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n\n this._location_id = \"\";\n this._date = \"\";\n this._time = \"\";\n this._status = \"\";\n this._why_left = \"\";\n this._time_in_element = \"\";\n }\n\n /**\n * Getter for _location_id\n * @return {string}\n */\n get location_id(): string {\n return this._location_id;\n }\n\n /**\n * Setter for _location_id\n * @param {string} location_id\n */\n set location_id(location_id: string) {\n if (checkAICCValidFormat(location_id, aicc_regex.CMIString256)) {\n this._location_id = location_id;\n }\n }\n\n /**\n * Getter for _date\n * @return {string}\n */\n get date(): string {\n return this._date;\n }\n\n /**\n * Setter for _date\n * @param {string} date\n */\n set date(date: string) {\n if (checkAICCValidFormat(date, aicc_regex.CMIString256)) {\n this._date = date;\n }\n }\n\n /**\n * Getter for _time\n * @return {string}\n */\n get time(): string {\n return this._time;\n }\n\n /**\n * Setter for _time\n * @param {string} time\n */\n set time(time: string) {\n if (checkAICCValidFormat(time, aicc_regex.CMITime)) {\n this._time = time;\n }\n }\n\n /**\n * Getter for _status\n * @return {string}\n */\n get status(): string {\n return this._status;\n }\n\n /**\n * Setter for _status\n * @param {string} status\n */\n set status(status: string) {\n if (checkAICCValidFormat(status, aicc_regex.CMIStatus2)) {\n this._status = status;\n }\n }\n\n /**\n * Getter for _why_left\n * @return {string}\n */\n get why_left(): string {\n return this._why_left;\n }\n\n /**\n * Setter for _why_left\n * @param {string} why_left\n */\n set why_left(why_left: string) {\n if (checkAICCValidFormat(why_left, aicc_regex.CMIString256)) {\n this._why_left = why_left;\n }\n }\n\n /**\n * Getter for _time_in_element\n * @return {string}\n */\n get time_in_element(): string {\n return this._time_in_element;\n }\n\n /**\n * Setter for _time_in_element\n * @param {string} time_in_element\n */\n set time_in_element(time_in_element: string) {\n if (checkAICCValidFormat(time_in_element, aicc_regex.CMITime)) {\n this._time_in_element = time_in_element;\n }\n }\n\n /**\n * toJSON for cmi.paths.n object\n * @return {\n * {\n * location_id: string,\n * date: string,\n * time: string,\n * status: string,\n * why_left: string,\n * time_in_element: string\n * }\n * }\n */\n toJSON(): {\n location_id: string;\n date: string;\n time: string;\n status: string;\n why_left: string;\n time_in_element: string;\n } {\n this.jsonString = true;\n const result = {\n location_id: this.location_id,\n date: this.date,\n time: this.time,\n status: this.status,\n why_left: this.why_left,\n time_in_element: this.time_in_element,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import * as Scorm12CMI from \"../scorm12/cmi\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { CMIEvaluation } from \"./evaluation\";\nimport { AICCStudentPreferences } from \"./student_preferences\";\nimport { CMIStudentDemographics } from \"./student_demographics\";\nimport { AICCCMIStudentData } from \"./student_data\";\nimport { CMIPaths } from \"./paths\";\nimport { CMICore } from \"./core\";\nimport { CMIObjectives } from \"../scorm12/objectives\";\nimport { CMIStudentData } from \"../scorm12/student_data\";\nimport { CMIStudentPreference } from \"../scorm12/student_preference\";\nimport { CMIInteractions } from \"../scorm12/interactions\";\n\n/**\n * CMI Class for AICC\n */\nexport class CMI extends Scorm12CMI.CMI {\n /**\n * Constructor for AICC CMI object\n * @param {boolean} initialized\n */\n constructor(initialized: boolean = false) {\n super(aicc_constants.cmi_children);\n if (initialized) this.initialize();\n this.student_preference = new AICCStudentPreferences();\n this.student_data = new AICCCMIStudentData();\n this.student_demographics = new CMIStudentDemographics();\n this.evaluation = new CMIEvaluation();\n this.paths = new CMIPaths();\n }\n\n public override student_data: AICCCMIStudentData;\n public override student_preference: AICCStudentPreferences;\n public student_demographics: CMIStudentDemographics;\n public evaluation: CMIEvaluation;\n public paths: CMIPaths;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.student_preference?.initialize();\n this.student_data?.initialize();\n this.student_demographics?.initialize();\n this.evaluation?.initialize();\n this.paths?.initialize();\n }\n\n /**\n * toJSON for cmi\n *\n * @return {\n * {\n * suspend_data: string,\n * launch_data: string,\n * comments: string,\n * comments_from_lms: string,\n * core: CMICore,\n * objectives: CMIObjectives,\n * student_data: CMIStudentData,\n * student_preference: CMIStudentPreference,\n * interactions: CMIInteractions,\n * paths: CMIPaths\n * }\n * }\n */\n override toJSON(): {\n suspend_data: string;\n launch_data: string;\n comments: string;\n comments_from_lms: string;\n core: CMICore;\n objectives: CMIObjectives;\n student_data: CMIStudentData;\n student_preference: CMIStudentPreference;\n student_demographics: CMIStudentDemographics;\n interactions: CMIInteractions;\n evaluation: CMIEvaluation;\n paths: CMIPaths;\n } {\n this.jsonString = true;\n const result = {\n suspend_data: this.suspend_data,\n launch_data: this.launch_data,\n comments: this.comments,\n comments_from_lms: this.comments_from_lms,\n core: this.core,\n objectives: this.objectives,\n student_data: this.student_data,\n student_preference: this.student_preference,\n student_demographics: this.student_demographics,\n interactions: this.interactions,\n evaluation: this.evaluation,\n paths: this.paths,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { Scorm12API } from \"./Scorm12API\";\nimport { CMI } from \"./cmi/aicc/cmi\";\n\nimport { BaseCMI } from \"./cmi/common/base_cmi\";\nimport { CMITriesObject } from \"./cmi/aicc/tries\";\nimport { CMIAttemptRecordsObject } from \"./cmi/aicc/attempts\";\nimport { CMIEvaluationCommentsObject } from \"./cmi/aicc/evaluation\";\nimport { NAV } from \"./cmi/scorm12/nav\";\nimport { CMIPathsObject } from \"./cmi/aicc/paths\";\nimport { Settings } from \"./types/api_types\";\nimport { stringMatches } from \"./utilities\";\n\n/**\n * The AICC API class\n */\nclass AICCImpl extends Scorm12API {\n /**\n * Constructor to create AICC API object\n * @param {Settings} settings\n */\n constructor(settings?: Settings) {\n super(settings);\n\n this.cmi = new CMI();\n this.nav = new NAV();\n }\n\n override cmi: CMI;\n override nav: NAV;\n\n /**\n * Gets or builds a new child element to add to the array.\n *\n * @param {string} CMIElement\n * @param {any} value\n * @param {boolean} foundFirstIndex\n * @return {BaseCMI | null}\n */\n override getChildElement(\n CMIElement: string,\n value: any,\n foundFirstIndex: boolean,\n ): BaseCMI | null {\n let newChild = super.getChildElement(CMIElement, value, foundFirstIndex);\n\n if (!newChild) {\n if (stringMatches(CMIElement, \"cmi\\\\.evaluation\\\\.comments\\\\.\\\\d+\")) {\n newChild = new CMIEvaluationCommentsObject();\n } else if (\n stringMatches(CMIElement, \"cmi\\\\.student_data\\\\.tries\\\\.\\\\d+\")\n ) {\n newChild = new CMITriesObject();\n } else if (\n stringMatches(CMIElement, \"cmi\\\\.student_data\\\\.attempt_records\\\\.\\\\d+\")\n ) {\n newChild = new CMIAttemptRecordsObject();\n } else if (stringMatches(CMIElement, \"cmi\\\\.paths\\\\.\\\\d+\")) {\n newChild = new CMIPathsObject();\n }\n }\n\n return newChild;\n }\n\n /**\n * Replace the whole API with another\n *\n * @param {AICCImpl} newAPI\n */\n override replaceWithAnotherScormAPI(newAPI: AICCImpl) {\n // Data Model\n this.cmi = newAPI.cmi;\n this.nav = newAPI.nav;\n }\n}\n\nexport { AICCImpl as AICC };\n"],"names":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"aicc.js","mappings":"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YAAY;AAC7D,qBAAqB;AACrB,4BAA4B;AAC5B,2BAA2B;AAC3B,0BAA0B;AAC1B;;AAEO;AACP;AACA,eAAe,6CAA6C,UAAU,sDAAsD,cAAc;AAC1I,wBAAwB,6BAA6B,oBAAoB,uCAAuC,kBAAkB;AAClI;;AAEO;AACP;AACA;AACA,yGAAyG,uFAAuF,cAAc;AAC9M,qBAAqB,8BAA8B,gDAAgD,wDAAwD;AAC3J,2CAA2C,sCAAsC,UAAU,mBAAmB,IAAI;AAClH;;AAEO;AACP,+BAA+B,uCAAuC,YAAY,KAAK,OAAO;AAC9F;AACA;;AAEA;AACA,wCAAwC,4BAA4B;AACpE,CAAC;AACD;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,2CAA2C;AAC3C;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,MAAM,oBAAoB,YAAY;AAC5E,qBAAqB,8CAA8C;AACnE;AACA;AACA,qBAAqB,aAAa;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,SAAS,gBAAgB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+DAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;SCzXF;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA;;;;;UCPA,8CAA8C;;;;;UCA9C;UACA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","sources":["webpack://scorm-again/./src/constants/default_settings.ts","webpack://scorm-again/./src/helpers/scheduled_commit.ts","webpack://scorm-again/./src/BaseAPI.ts","webpack://scorm-again/./src/Scorm12API.ts","webpack://scorm-again/./src/cmi/common/array.ts","webpack://scorm-again/./src/cmi/common/base_cmi.ts","webpack://scorm-again/./src/cmi/common/score.ts","webpack://scorm-again/./src/cmi/common/validation.ts","webpack://scorm-again/./src/cmi/aicc/core.ts","webpack://scorm-again/./src/cmi/scorm12/cmi.ts","webpack://scorm-again/./src/cmi/scorm12/interactions.ts","webpack://scorm-again/./src/cmi/scorm12/nav.ts","webpack://scorm-again/./src/cmi/scorm12/objectives.ts","webpack://scorm-again/./src/cmi/scorm12/student_data.ts","webpack://scorm-again/./src/cmi/scorm12/student_preference.ts","webpack://scorm-again/./src/cmi/scorm12/validation.ts","webpack://scorm-again/./src/constants/api_constants.ts","webpack://scorm-again/./src/constants/enums.ts","webpack://scorm-again/./src/constants/error_codes.ts","webpack://scorm-again/./src/constants/regex.ts","webpack://scorm-again/./src/exceptions.ts","webpack://scorm-again/./src/exceptions/scorm12_exceptions.ts","webpack://scorm-again/./src/utilities.ts","webpack://scorm-again/./node_modules/tslib/tslib.es6.mjs","webpack://scorm-again/webpack/bootstrap","webpack://scorm-again/webpack/runtime/define property getters","webpack://scorm-again/webpack/runtime/hasOwnProperty shorthand","webpack://scorm-again/webpack/runtime/make namespace object","webpack://scorm-again/./src/exceptions/aicc_exceptions.ts","webpack://scorm-again/./src/cmi/aicc/validation.ts","webpack://scorm-again/./src/cmi/aicc/evaluation.ts","webpack://scorm-again/./src/cmi/aicc/student_preferences.ts","webpack://scorm-again/./src/cmi/aicc/student_demographics.ts","webpack://scorm-again/./src/cmi/aicc/tries.ts","webpack://scorm-again/./src/cmi/aicc/attempts.ts","webpack://scorm-again/./src/cmi/aicc/student_data.ts","webpack://scorm-again/./src/cmi/aicc/paths.ts","webpack://scorm-again/./src/cmi/aicc/cmi.ts","webpack://scorm-again/./src/AICC.ts"],"sourcesContent":["import { InternalSettings, LogLevel, ResultObject } from \"../types/api_types\";\nimport { global_constants } from \"./api_constants\";\nimport { LogLevelEnum } from \"./enums\";\n\n/**\n * Default settings for the SCORM API\n */\nexport const DefaultSettings: InternalSettings = {\n autocommit: false,\n autocommitSeconds: 10,\n asyncCommit: false,\n sendFullCommit: true,\n lmsCommitUrl: false,\n dataCommitFormat: \"json\",\n commitRequestDataType: \"application/json;charset=UTF-8\",\n autoProgress: false,\n logLevel: LogLevelEnum.ERROR,\n selfReportSessionTime: false,\n alwaysSendTotalTime: false,\n renderCommonCommitFields: false,\n strict_errors: true,\n xhrHeaders: {},\n xhrWithCredentials: false,\n fetchMode: \"cors\",\n responseHandler: async function (response: Response): Promise<ResultObject> {\n if (typeof response !== \"undefined\") {\n const responseText = await response.text();\n let httpResult = null;\n if (responseText) {\n httpResult = JSON.parse(responseText);\n }\n if (\n httpResult === null ||\n !{}.hasOwnProperty.call(httpResult, \"result\")\n ) {\n if (response.status === 200) {\n return {\n result: global_constants.SCORM_TRUE,\n errorCode: 0,\n };\n } else {\n return {\n result: global_constants.SCORM_FALSE,\n errorCode: 101,\n };\n }\n } else {\n return {\n result: httpResult.result,\n errorCode: httpResult.errorCode\n ? httpResult.errorCode\n : httpResult.result === global_constants.SCORM_TRUE\n ? 0\n : 101,\n };\n }\n }\n return {\n result: global_constants.SCORM_FALSE,\n errorCode: 101,\n };\n },\n requestHandler: function (commitObject) {\n return commitObject;\n },\n onLogMessage: function (messageLevel: LogLevel, logMessage) {\n switch (messageLevel) {\n case \"4\":\n case 4:\n case \"ERROR\":\n case LogLevelEnum.ERROR:\n console.error(logMessage);\n break;\n case \"3\":\n case 3:\n case \"WARN\":\n case LogLevelEnum.WARN:\n console.warn(logMessage);\n break;\n case \"2\":\n case 2:\n case \"INFO\":\n case LogLevelEnum.INFO:\n console.info(logMessage);\n break;\n case \"1\":\n case 1:\n case \"DEBUG\":\n case LogLevelEnum.DEBUG:\n if (console.debug) {\n console.debug(logMessage);\n } else {\n console.log(logMessage);\n }\n break;\n }\n },\n scoItemIds: [],\n scoItemIdValidator: false,\n globalObjectiveIds: [],\n};\n","import BaseAPI from \"../BaseAPI\";\n\n/**\n * Private class that wraps a timeout call to the commit() function\n */\nexport class ScheduledCommit {\n private _API;\n private _cancelled = false;\n private readonly _timeout;\n private readonly _callback;\n\n /**\n * Constructor for ScheduledCommit\n * @param {BaseAPI} API\n * @param {number} when\n * @param {string} callback\n */\n constructor(API: BaseAPI, when: number, callback: string) {\n this._API = API;\n this._timeout = setTimeout(this.wrapper.bind(this), when);\n this._callback = callback;\n }\n\n /**\n * Cancel any currently scheduled commit\n */\n cancel() {\n this._cancelled = true;\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n }\n\n /**\n * Wrap the API commit call to check if the call has already been cancelled\n */\n wrapper() {\n if (!this._cancelled) {\n (async () => await this._API.commit(this._callback))();\n }\n }\n}\n","import { CMIArray } from \"./cmi/common/array\";\nimport { ValidationError } from \"./exceptions\";\nimport { ErrorCode } from \"./constants/error_codes\";\nimport { global_constants } from \"./constants/api_constants\";\nimport { formatMessage, stringMatches, unflatten } from \"./utilities\";\nimport { BaseCMI } from \"./cmi/common/base_cmi\";\nimport { CommitObject, InternalSettings, LogLevel, RefObject, ResultObject, Settings } from \"./types/api_types\";\nimport { DefaultSettings } from \"./constants/default_settings\";\nimport { IBaseAPI } from \"./interfaces/IBaseAPI\";\nimport { ScheduledCommit } from \"./helpers/scheduled_commit\";\nimport { LogLevelEnum } from \"./constants/enums\";\n\n/**\n * Base API class for AICC, SCORM 1.2, and SCORM 2004. Should be considered\n * abstract, and never initialized on its own.\n */\nexport default abstract class BaseAPI implements IBaseAPI {\n private _timeout?: ScheduledCommit | undefined;\n private readonly _error_codes: ErrorCode;\n private _settings: InternalSettings = DefaultSettings;\n\n /**\n * Constructor for Base API class. Sets some shared API fields, as well as\n * sets up options for the API.\n * @param {ErrorCode} error_codes\n * @param {Settings} settings\n */\n protected constructor(error_codes: ErrorCode, settings?: Settings) {\n if (new.target === BaseAPI) {\n throw new TypeError(\"Cannot construct BaseAPI instances directly\");\n }\n this.currentState = global_constants.STATE_NOT_INITIALIZED;\n this.lastErrorCode = \"0\";\n this.listenerArray = [];\n\n this._error_codes = error_codes;\n\n if (settings) {\n this.settings = {\n ...DefaultSettings,\n ...settings,\n } as InternalSettings;\n }\n this.apiLogLevel = this.settings.logLevel ?? LogLevelEnum.ERROR;\n this.selfReportSessionTime = this.settings.selfReportSessionTime ?? false;\n }\n\n public abstract cmi: BaseCMI;\n public startingData?: RefObject;\n\n public currentState: number;\n public lastErrorCode: string;\n public listenerArray: any[];\n public apiLogLevel: LogLevel;\n public selfReportSessionTime: boolean;\n\n abstract reset(settings?: Settings): void;\n\n /**\n * Common reset method for all APIs. New settings are merged with the existing settings.\n * @param {Settings} settings\n * @protected\n */\n commonReset(settings?: Settings): void {\n this.apiLog(\"reset\", \"Called\", LogLevelEnum.INFO);\n\n this.settings = { ...this.settings, ...settings };\n\n this.clearScheduledCommit();\n this.currentState = global_constants.STATE_NOT_INITIALIZED;\n this.lastErrorCode = \"0\";\n this.listenerArray = [];\n this.startingData = {};\n }\n\n /**\n * Initialize the API\n * @param {string} callbackName\n * @param {string} initializeMessage\n * @param {string} terminationMessage\n * @return {string}\n */\n initialize(\n callbackName: string,\n initializeMessage?: string,\n terminationMessage?: string,\n ): string {\n let returnValue = global_constants.SCORM_FALSE;\n\n if (this.isInitialized()) {\n this.throwSCORMError(this._error_codes.INITIALIZED, initializeMessage);\n } else if (this.isTerminated()) {\n this.throwSCORMError(this._error_codes.TERMINATED, terminationMessage);\n } else {\n if (this.selfReportSessionTime) {\n this.cmi.setStartTime();\n }\n\n this.currentState = global_constants.STATE_INITIALIZED;\n this.lastErrorCode = \"0\";\n returnValue = global_constants.SCORM_TRUE;\n this.processListeners(callbackName);\n }\n\n this.apiLog(callbackName, \"returned: \" + returnValue, LogLevelEnum.INFO);\n this.clearSCORMError(returnValue);\n\n return returnValue;\n }\n\n abstract lmsInitialize(): string;\n\n abstract lmsFinish(): string;\n\n abstract lmsGetValue(CMIElement: string): string;\n\n abstract lmsSetValue(CMIElement: string, value: any): string;\n\n abstract lmsCommit(): string;\n\n abstract lmsGetLastError(): string;\n\n abstract lmsGetErrorString(CMIErrorCode: string | number): string;\n\n abstract lmsGetDiagnostic(CMIErrorCode: string | number): string;\n\n /**\n * Abstract method for validating that a response is correct.\n *\n * @param {string} _CMIElement\n * @param {any} _value\n */\n abstract validateCorrectResponse(_CMIElement: string, _value: any): void;\n\n /**\n * Gets or builds a new child element to add to the array.\n * APIs that inherit BaseAPI should override this method.\n *\n * @param {string} _CMIElement - unused\n * @param {*} _value - unused\n * @param {boolean} _foundFirstIndex - unused\n * @return {BaseCMI|null}\n * @abstract\n */\n abstract getChildElement(\n _CMIElement: string,\n _value: any,\n _foundFirstIndex: boolean,\n ): BaseCMI | null;\n\n /**\n * Attempts to store the data to the LMS, logs data if no LMS configured\n * APIs that inherit BaseAPI should override this function\n *\n * @param {boolean} _calculateTotalTime\n * @return {ResultObject}\n * @abstract\n */\n abstract storeData(_calculateTotalTime: boolean): Promise<ResultObject>;\n\n /**\n * Render the cmi object to the proper format for LMS commit\n * APIs that inherit BaseAPI should override this function\n *\n * @param {boolean} _terminateCommit\n * @return {RefObject|Array}\n * @abstract\n */\n abstract renderCommitCMI(_terminateCommit: boolean): RefObject | Array<any>;\n\n /**\n * Render the commit object to the shortened format for LMS commit\n * @param {boolean} _terminateCommit\n * @return {CommitObject}\n */\n abstract renderCommitObject(_terminateCommit: boolean): CommitObject;\n\n /**\n * Logging for all SCORM actions\n *\n * @param {string} functionName\n * @param {string} logMessage\n * @param {number} messageLevel\n * @param {string} CMIElement\n */\n apiLog(\n functionName: string,\n logMessage: string,\n messageLevel: LogLevel,\n CMIElement?: string,\n ) {\n logMessage = formatMessage(functionName, logMessage, CMIElement);\n\n if (messageLevel >= this.apiLogLevel) {\n this.settings.onLogMessage(messageLevel, logMessage);\n }\n }\n\n /**\n * Getter for _error_codes\n * @return {ErrorCode}\n */\n get error_codes(): ErrorCode {\n return this._error_codes;\n }\n\n /**\n * Getter for _settings\n * @return {Settings}\n */\n get settings(): InternalSettings {\n return this._settings;\n }\n\n /**\n * Setter for _settings\n * @param {Settings} settings\n */\n set settings(settings: Settings) {\n this._settings = { ...this._settings, ...settings };\n }\n\n /**\n * Terminates the current run of the API\n * @param {string} callbackName\n * @param {boolean} checkTerminated\n * @return {string}\n */\n async terminate(\n callbackName: string,\n checkTerminated: boolean,\n ): Promise<string> {\n let returnValue = global_constants.SCORM_FALSE;\n\n if (\n this.checkState(\n checkTerminated,\n this._error_codes.TERMINATION_BEFORE_INIT,\n this._error_codes.MULTIPLE_TERMINATION,\n )\n ) {\n this.currentState = global_constants.STATE_TERMINATED;\n\n const result: ResultObject = await this.storeData(true);\n if (typeof result.errorCode !== \"undefined\" && result.errorCode > 0) {\n this.throwSCORMError(result.errorCode);\n }\n returnValue =\n typeof result !== \"undefined\" && result.result\n ? result.result\n : global_constants.SCORM_FALSE;\n\n if (checkTerminated) this.lastErrorCode = \"0\";\n\n returnValue = global_constants.SCORM_TRUE;\n this.processListeners(callbackName);\n }\n\n this.apiLog(callbackName, \"returned: \" + returnValue, LogLevelEnum.INFO);\n this.clearSCORMError(returnValue);\n\n return returnValue;\n }\n\n /**\n * Get the value of the CMIElement.\n *\n * @param {string} callbackName\n * @param {boolean} checkTerminated\n * @param {string} CMIElement\n * @return {string}\n */\n getValue(\n callbackName: string,\n checkTerminated: boolean,\n CMIElement: string,\n ): string {\n let returnValue: string = \"\";\n\n if (\n this.checkState(\n checkTerminated,\n this._error_codes.RETRIEVE_BEFORE_INIT,\n this._error_codes.RETRIEVE_AFTER_TERM,\n )\n ) {\n if (checkTerminated) this.lastErrorCode = \"0\";\n try {\n returnValue = this.getCMIValue(CMIElement);\n } catch (e) {\n returnValue = this.handleValueAccessException(e, returnValue);\n }\n this.processListeners(callbackName, CMIElement);\n }\n\n this.apiLog(\n callbackName,\n \": returned: \" + returnValue,\n LogLevelEnum.INFO,\n CMIElement,\n );\n\n if (returnValue === undefined) {\n return \"\";\n }\n\n this.clearSCORMError(returnValue);\n\n return returnValue;\n }\n\n /**\n * Sets the value of the CMIElement.\n *\n * @param {string} callbackName\n * @param {string} commitCallback\n * @param {boolean} checkTerminated\n * @param {string} CMIElement\n * @param {*} value\n * @return {string}\n */\n setValue(\n callbackName: string,\n commitCallback: string,\n checkTerminated: boolean,\n CMIElement: string,\n value: any,\n ): string {\n if (value !== undefined) {\n value = String(value);\n }\n let returnValue: string = global_constants.SCORM_FALSE;\n\n if (\n this.checkState(\n checkTerminated,\n this._error_codes.STORE_BEFORE_INIT,\n this._error_codes.STORE_AFTER_TERM,\n )\n ) {\n if (checkTerminated) this.lastErrorCode = \"0\";\n try {\n returnValue = this.setCMIValue(CMIElement, value);\n } catch (e) {\n this.handleValueAccessException(e, returnValue);\n }\n this.processListeners(callbackName, CMIElement, value);\n }\n\n if (returnValue === undefined) {\n returnValue = global_constants.SCORM_FALSE;\n }\n\n // If we didn't have any errors while setting the data, go ahead and\n // schedule a commit, if autocommit is turned on\n if (String(this.lastErrorCode) === \"0\") {\n if (this.settings.autocommit) {\n this.scheduleCommit(\n this.settings.autocommitSeconds * 1000,\n commitCallback,\n );\n }\n }\n\n this.apiLog(\n callbackName,\n \": \" + value + \": result: \" + returnValue,\n LogLevelEnum.INFO,\n CMIElement,\n );\n this.clearSCORMError(returnValue);\n\n return returnValue;\n }\n\n /**\n * Orders LMS to store all content parameters\n * @param {string} callbackName\n * @param {boolean} checkTerminated\n * @return {string}\n */\n async commit(\n callbackName: string,\n checkTerminated: boolean = false,\n ): Promise<string> {\n this.clearScheduledCommit();\n\n let returnValue = global_constants.SCORM_FALSE;\n\n if (\n this.checkState(\n checkTerminated,\n this._error_codes.COMMIT_BEFORE_INIT,\n this._error_codes.COMMIT_AFTER_TERM,\n )\n ) {\n const result = await this.storeData(false);\n if (result.errorCode && result.errorCode > 0) {\n this.throwSCORMError(result.errorCode);\n }\n returnValue =\n typeof result !== \"undefined\" && result.result\n ? result.result\n : global_constants.SCORM_FALSE;\n\n this.apiLog(\n callbackName,\n \" Result: \" + returnValue,\n LogLevelEnum.DEBUG,\n \"HttpRequest\",\n );\n\n if (checkTerminated) this.lastErrorCode = \"0\";\n\n this.processListeners(callbackName);\n }\n\n this.apiLog(callbackName, \"returned: \" + returnValue, LogLevelEnum.INFO);\n this.clearSCORMError(returnValue);\n\n return returnValue;\n }\n\n /**\n * Returns last error code\n * @param {string} callbackName\n * @return {string}\n */\n getLastError(callbackName: string): string {\n const returnValue = String(this.lastErrorCode);\n\n this.processListeners(callbackName);\n\n this.apiLog(callbackName, \"returned: \" + returnValue, LogLevelEnum.INFO);\n\n return returnValue;\n }\n\n /**\n * Returns the errorNumber error description\n *\n * @param {string} callbackName\n * @param {(string|number)} CMIErrorCode\n * @return {string}\n */\n getErrorString(callbackName: string, CMIErrorCode: string | number): string {\n let returnValue = \"\";\n\n if (CMIErrorCode !== null && CMIErrorCode !== \"\") {\n returnValue = this.getLmsErrorMessageDetails(CMIErrorCode);\n this.processListeners(callbackName);\n }\n\n this.apiLog(callbackName, \"returned: \" + returnValue, LogLevelEnum.INFO);\n\n return returnValue;\n }\n\n /**\n * Returns a comprehensive description of the errorNumber error.\n *\n * @param {string} callbackName\n * @param {(string|number)} CMIErrorCode\n * @return {string}\n */\n getDiagnostic(callbackName: string, CMIErrorCode: string | number): string {\n let returnValue = \"\";\n\n if (CMIErrorCode !== null && CMIErrorCode !== \"\") {\n returnValue = this.getLmsErrorMessageDetails(CMIErrorCode, true);\n this.processListeners(callbackName);\n }\n\n this.apiLog(callbackName, \"returned: \" + returnValue, LogLevelEnum.INFO);\n\n return returnValue;\n }\n\n /**\n * Checks the LMS state and ensures it has been initialized.\n *\n * @param {boolean} checkTerminated\n * @param {number} beforeInitError\n * @param {number} afterTermError\n * @return {boolean}\n */\n checkState(\n checkTerminated: boolean,\n beforeInitError: number,\n afterTermError: number,\n ): boolean {\n if (this.isNotInitialized()) {\n this.throwSCORMError(beforeInitError);\n return false;\n } else if (checkTerminated && this.isTerminated()) {\n this.throwSCORMError(afterTermError);\n return false;\n }\n\n return true;\n }\n\n /**\n * Returns the message that corresponds to errorNumber\n * APIs that inherit BaseAPI should override this function\n *\n * @param {(string|number)} _errorNumber\n * @param {boolean} _detail\n * @return {string}\n * @abstract\n */\n getLmsErrorMessageDetails(\n _errorNumber: string | number,\n _detail: boolean = false,\n ): string {\n throw new Error(\n \"The getLmsErrorMessageDetails method has not been implemented\",\n );\n }\n\n /**\n * Gets the value for the specific element.\n * APIs that inherit BaseAPI should override this function\n *\n * @param {string} _CMIElement\n * @return {string}\n * @abstract\n */\n getCMIValue(_CMIElement: string): string {\n throw new Error(\"The getCMIValue method has not been implemented\");\n }\n\n /**\n * Sets the value for the specific element.\n * APIs that inherit BaseAPI should override this function\n *\n * @param {string} _CMIElement\n * @param {any} _value\n * @return {string}\n * @abstract\n */\n setCMIValue(_CMIElement: string, _value: any): string {\n throw new Error(\"The setCMIValue method has not been implemented\");\n }\n\n /**\n * Shared API method to set a valid for a given element.\n *\n * @param {string} methodName\n * @param {boolean} scorm2004\n * @param {string} CMIElement\n * @param {any} value\n * @return {string}\n */\n _commonSetCMIValue(\n methodName: string,\n scorm2004: boolean,\n CMIElement: string,\n value: any,\n ): string {\n if (!CMIElement || CMIElement === \"\") {\n return global_constants.SCORM_FALSE;\n }\n\n const structure = CMIElement.split(\".\");\n let refObject: RefObject = this;\n let returnValue = global_constants.SCORM_FALSE;\n let foundFirstIndex = false;\n\n const invalidErrorMessage = `The data model element passed to ${methodName} (${CMIElement}) is not a valid SCORM data model element.`;\n const invalidErrorCode = scorm2004\n ? this._error_codes.UNDEFINED_DATA_MODEL\n : this._error_codes.GENERAL;\n\n for (let idx = 0; idx < structure.length; idx++) {\n const attribute = structure[idx];\n\n if (idx === structure.length - 1) {\n if (scorm2004 && attribute.substring(0, 8) === \"{target=\") {\n if (this.isInitialized()) {\n this.throwSCORMError(this._error_codes.READ_ONLY_ELEMENT);\n } else {\n refObject = {\n ...refObject,\n attribute: value,\n };\n }\n } else if (!this._checkObjectHasProperty(refObject, attribute)) {\n this.throwSCORMError(invalidErrorCode, invalidErrorMessage);\n } else {\n if (\n stringMatches(CMIElement, \"\\\\.correct_responses\\\\.\\\\d+\") &&\n this.isInitialized()\n ) {\n this.validateCorrectResponse(CMIElement, value);\n }\n\n if (!scorm2004 || this.lastErrorCode === \"0\") {\n refObject[attribute] = value;\n returnValue = global_constants.SCORM_TRUE;\n }\n }\n } else {\n refObject = refObject[attribute];\n if (!refObject) {\n this.throwSCORMError(invalidErrorCode, invalidErrorMessage);\n break;\n }\n\n if (refObject instanceof CMIArray) {\n const index = parseInt(structure[idx + 1], 10);\n\n // SCO is trying to set an item on an array\n if (!isNaN(index)) {\n const item = refObject.childArray[index];\n\n if (item) {\n refObject = item;\n foundFirstIndex = true;\n } else {\n const newChild = this.getChildElement(\n CMIElement,\n value,\n foundFirstIndex,\n );\n foundFirstIndex = true;\n\n if (!newChild) {\n this.throwSCORMError(invalidErrorCode, invalidErrorMessage);\n } else {\n if (refObject.initialized) newChild.initialize();\n\n refObject.childArray.push(newChild);\n refObject = newChild;\n }\n }\n\n // Have to update idx value to skip the array position\n idx++;\n }\n }\n }\n }\n\n if (returnValue === global_constants.SCORM_FALSE) {\n this.apiLog(\n methodName,\n `There was an error setting the value for: ${CMIElement}, value of: ${value}`,\n LogLevelEnum.WARN,\n );\n }\n\n return returnValue;\n }\n\n /**\n * Gets a value from the CMI Object\n *\n * @param {string} methodName\n * @param {boolean} scorm2004\n * @param {string} CMIElement\n * @return {any}\n */\n _commonGetCMIValue(\n methodName: string,\n scorm2004: boolean,\n CMIElement: string,\n ): any {\n if (!CMIElement || CMIElement === \"\") {\n return \"\";\n }\n\n const structure = CMIElement.split(\".\");\n let refObject: RefObject = this;\n let attribute = null;\n\n const uninitializedErrorMessage = `The data model element passed to ${methodName} (${CMIElement}) has not been initialized.`;\n const invalidErrorMessage = `The data model element passed to ${methodName} (${CMIElement}) is not a valid SCORM data model element.`;\n const invalidErrorCode = scorm2004\n ? this._error_codes.UNDEFINED_DATA_MODEL\n : this._error_codes.GENERAL;\n\n for (let idx = 0; idx < structure.length; idx++) {\n attribute = structure[idx];\n\n if (!scorm2004) {\n if (idx === structure.length - 1) {\n if (!this._checkObjectHasProperty(refObject, attribute)) {\n this.throwSCORMError(invalidErrorCode, invalidErrorMessage);\n return;\n }\n }\n } else {\n if (\n String(attribute).substring(0, 8) === \"{target=\" &&\n typeof refObject._isTargetValid == \"function\"\n ) {\n const target = String(attribute).substring(\n 8,\n String(attribute).length - 9,\n );\n return refObject._isTargetValid(target);\n } else if (!this._checkObjectHasProperty(refObject, attribute)) {\n this.throwSCORMError(invalidErrorCode, invalidErrorMessage);\n return;\n }\n }\n\n refObject = refObject[attribute];\n if (refObject === undefined) {\n this.throwSCORMError(invalidErrorCode, invalidErrorMessage);\n break;\n }\n\n if (refObject instanceof CMIArray) {\n const index = parseInt(structure[idx + 1], 10);\n\n // SCO is trying to set an item on an array\n if (!isNaN(index)) {\n const item = refObject.childArray[index];\n\n if (item) {\n refObject = item;\n } else {\n this.throwSCORMError(\n this._error_codes.VALUE_NOT_INITIALIZED,\n uninitializedErrorMessage,\n );\n break;\n }\n\n // Have to update idx value to skip the array position\n idx++;\n }\n }\n }\n\n if (refObject === null || refObject === undefined) {\n if (!scorm2004) {\n if (attribute === \"_children\") {\n this.throwSCORMError(this._error_codes.CHILDREN_ERROR);\n } else if (attribute === \"_count\") {\n this.throwSCORMError(this._error_codes.COUNT_ERROR);\n }\n }\n } else {\n return refObject;\n }\n }\n\n /**\n * Returns true if the API's current state is STATE_INITIALIZED\n *\n * @return {boolean}\n */\n isInitialized(): boolean {\n return this.currentState === global_constants.STATE_INITIALIZED;\n }\n\n /**\n * Returns true if the API's current state is STATE_NOT_INITIALIZED\n *\n * @return {boolean}\n */\n isNotInitialized(): boolean {\n return this.currentState === global_constants.STATE_NOT_INITIALIZED;\n }\n\n /**\n * Returns true if the API's current state is STATE_TERMINATED\n *\n * @return {boolean}\n */\n isTerminated(): boolean {\n return this.currentState === global_constants.STATE_TERMINATED;\n }\n\n /**\n * Provides a mechanism for attaching to a specific SCORM event\n *\n * @param {string} listenerName\n * @param {function} callback\n */\n on(listenerName: string, callback: Function) {\n if (!callback) return;\n\n const listenerFunctions = listenerName.split(\" \");\n for (let i = 0; i < listenerFunctions.length; i++) {\n const listenerSplit = listenerFunctions[i].split(\".\");\n if (listenerSplit.length === 0) return;\n\n const functionName = listenerSplit[0];\n\n let CMIElement = null;\n if (listenerSplit.length > 1) {\n CMIElement = listenerName.replace(functionName + \".\", \"\");\n }\n\n this.listenerArray.push({\n functionName: functionName,\n CMIElement: CMIElement,\n callback: callback,\n });\n\n this.apiLog(\n \"on\",\n `Added event listener: ${this.listenerArray.length}`,\n LogLevelEnum.INFO,\n functionName,\n );\n }\n }\n\n /**\n * Provides a mechanism for detaching a specific SCORM event listener\n *\n * @param {string} listenerName\n * @param {function} callback\n */\n off(listenerName: string, callback: Function) {\n if (!callback) return;\n\n const listenerFunctions = listenerName.split(\" \");\n for (let i = 0; i < listenerFunctions.length; i++) {\n const listenerSplit = listenerFunctions[i].split(\".\");\n if (listenerSplit.length === 0) return;\n\n const functionName = listenerSplit[0];\n\n let CMIElement = null;\n if (listenerSplit.length > 1) {\n CMIElement = listenerName.replace(functionName + \".\", \"\");\n }\n\n const removeIndex = this.listenerArray.findIndex(\n (obj) =>\n obj.functionName === functionName &&\n obj.CMIElement === CMIElement &&\n obj.callback === callback,\n );\n if (removeIndex !== -1) {\n this.listenerArray.splice(removeIndex, 1);\n this.apiLog(\n \"off\",\n `Removed event listener: ${this.listenerArray.length}`,\n LogLevelEnum.INFO,\n functionName,\n );\n }\n }\n }\n\n /**\n * Provides a mechanism for clearing all listeners from a specific SCORM event\n *\n * @param {string} listenerName\n */\n clear(listenerName: string) {\n const listenerFunctions = listenerName.split(\" \");\n for (let i = 0; i < listenerFunctions.length; i++) {\n const listenerSplit = listenerFunctions[i].split(\".\");\n if (listenerSplit.length === 0) return;\n\n const functionName = listenerSplit[0];\n\n let CMIElement = null;\n if (listenerSplit.length > 1) {\n CMIElement = listenerName.replace(functionName + \".\", \"\");\n }\n\n this.listenerArray = this.listenerArray.filter(\n (obj) =>\n obj.functionName !== functionName && obj.CMIElement !== CMIElement,\n );\n }\n }\n\n /**\n * Processes any 'on' listeners that have been created\n *\n * @param {string} functionName\n * @param {string} CMIElement\n * @param {any} value\n */\n processListeners(functionName: string, CMIElement?: string, value?: any) {\n this.apiLog(functionName, value, LogLevelEnum.INFO, CMIElement);\n for (let i = 0; i < this.listenerArray.length; i++) {\n const listener = this.listenerArray[i];\n const functionsMatch = listener.functionName === functionName;\n const listenerHasCMIElement = !!listener.CMIElement;\n let CMIElementsMatch = false;\n if (\n CMIElement &&\n listener.CMIElement &&\n listener.CMIElement.substring(listener.CMIElement.length - 1) === \"*\"\n ) {\n CMIElementsMatch =\n CMIElement.indexOf(\n listener.CMIElement.substring(0, listener.CMIElement.length - 1),\n ) === 0;\n } else {\n CMIElementsMatch = listener.CMIElement === CMIElement;\n }\n\n if (functionsMatch && (!listenerHasCMIElement || CMIElementsMatch)) {\n this.apiLog(\n \"processListeners\",\n `Processing listener: ${listener.functionName}`,\n LogLevelEnum.INFO,\n CMIElement,\n );\n listener.callback(CMIElement, value);\n }\n }\n }\n\n /**\n * Throws a SCORM error\n *\n * @param {number} errorNumber\n * @param {string} message\n */\n throwSCORMError(errorNumber: number, message?: string) {\n if (!message) {\n message = this.getLmsErrorMessageDetails(errorNumber);\n }\n\n this.apiLog(\n \"throwSCORMError\",\n errorNumber + \": \" + message,\n LogLevelEnum.ERROR,\n );\n\n this.lastErrorCode = String(errorNumber);\n }\n\n /**\n * Clears the last SCORM error code on success.\n *\n * @param {string} success\n */\n clearSCORMError(success: string) {\n if (success !== undefined && success !== global_constants.SCORM_FALSE) {\n this.lastErrorCode = \"0\";\n }\n }\n\n /**\n * Load the CMI from a flattened JSON object\n * @param {RefObject} json\n * @param {string} CMIElement\n */\n loadFromFlattenedJSON(json: RefObject, CMIElement?: string) {\n if (!CMIElement) {\n // by default, we start from a blank string because we're expecting each element to start with `cmi`\n CMIElement = \"\";\n }\n if (!this.isNotInitialized()) {\n console.error(\n \"loadFromFlattenedJSON can only be called before the call to lmsInitialize.\",\n );\n return;\n }\n\n /**\n * Tests two strings against a given regular expression pattern and determines a numeric or null result based on the matching criterion.\n *\n * @param {string} a - The first string to be tested against the pattern.\n * @param {string} c - The second string to be tested against the pattern.\n * @param {RegExp} a_pattern - The regular expression pattern to test the strings against.\n * @return {number | null} A numeric result based on the matching criterion, or null if the strings do not match the pattern.\n */\n function testPattern(\n a: string,\n c: string,\n a_pattern: RegExp,\n ): number | null {\n const a_match = a.match(a_pattern);\n\n let c_match;\n if (a_match !== null && (c_match = c.match(a_pattern)) !== null) {\n const a_num = Number(a_match[2]);\n const c_num = Number(c_match[2]);\n if (a_num === c_num) {\n if (a_match[3] === \"id\") {\n return -1;\n } else if (a_match[3] === \"type\") {\n if (c_match[3] === \"id\") {\n return 1;\n } else {\n return -1;\n }\n } else {\n return 1;\n }\n }\n return a_num - c_num;\n }\n\n return null;\n }\n\n const int_pattern = /^(cmi\\.interactions\\.)(\\d+)\\.(.*)$/;\n const obj_pattern = /^(cmi\\.objectives\\.)(\\d+)\\.(.*)$/;\n\n const result = Object.keys(json).map(function (key) {\n return [String(key), json[key]];\n });\n\n // CMI interactions need to have id and type loaded before any other fields\n result.sort(function ([a, _b], [c, _d]) {\n let test;\n if ((test = testPattern(a, c, int_pattern)) !== null) {\n return test;\n }\n if ((test = testPattern(a, c, obj_pattern)) !== null) {\n return test;\n }\n\n if (a < c) {\n return -1;\n }\n if (a > c) {\n return 1;\n }\n return 0;\n });\n\n let obj: RefObject;\n result.forEach((element) => {\n obj = {};\n obj[element[0]] = element[1];\n this.loadFromJSON(unflatten(obj), CMIElement);\n });\n }\n\n /**\n * Loads CMI data from a JSON object.\n *\n * @param {RefObject} json\n * @param {string} CMIElement\n */\n loadFromJSON(json: RefObject, CMIElement: string = \"\") {\n if (\n (!CMIElement || CMIElement === \"\") &&\n !Object.hasOwnProperty.call(json, \"cmi\") &&\n !Object.hasOwnProperty.call(json, \"adl\")\n ) {\n // providing a backward compatibility for the old v1 API\n CMIElement = \"cmi\";\n }\n\n if (!this.isNotInitialized()) {\n console.error(\n \"loadFromJSON can only be called before the call to lmsInitialize.\",\n );\n return;\n }\n\n CMIElement = CMIElement !== undefined ? CMIElement : \"cmi\";\n\n this.startingData = json;\n\n // could this be refactored down to flatten(json) then setCMIValue on each?\n for (const key in json) {\n if ({}.hasOwnProperty.call(json, key) && json[key]) {\n const currentCMIElement = (CMIElement ? CMIElement + \".\" : \"\") + key;\n const value = json[key];\n\n if (value[\"childArray\"]) {\n for (let i = 0; i < value[\"childArray\"].length; i++) {\n this.loadFromJSON(\n value[\"childArray\"][i],\n currentCMIElement + \".\" + i,\n );\n }\n } else if (value.constructor === Object) {\n this.loadFromJSON(value, currentCMIElement);\n } else {\n this.setCMIValue(currentCMIElement, value);\n }\n }\n }\n }\n\n /**\n * Render the CMI object to JSON for sending to an LMS.\n *\n * @return {string}\n */\n renderCMIToJSONString(): string {\n const cmi = this.cmi;\n // Do we want/need to return fields that have no set value?\n if (this.settings.sendFullCommit) {\n return JSON.stringify({ cmi });\n }\n return JSON.stringify({ cmi }, (k, v) => (v === undefined ? null : v), 2);\n }\n\n /**\n * Returns a JS object representing the current cmi\n * @return {object}\n */\n renderCMIToJSONObject(): object {\n return JSON.parse(this.renderCMIToJSONString());\n }\n\n /**\n * Send the request to the LMS\n * @param {string} url\n * @param {CommitObject|RefObject|Array} params\n * @param {boolean} immediate\n * @return {ResultObject}\n */\n async processHttpRequest(\n url: string,\n params: CommitObject | RefObject | Array<any>,\n immediate: boolean = false,\n ): Promise<ResultObject> {\n const api = this;\n const genericError: ResultObject = {\n result: global_constants.SCORM_FALSE,\n errorCode: this.error_codes.GENERAL,\n };\n\n // if we are terminating the module or closing the browser window/tab, we need to make this fetch ASAP.\n // Some browsers, especially Chrome, do not like synchronous requests to be made when the window is closing.\n if (immediate) {\n this.performFetch(url, params).then(async (response) => {\n await this.transformResponse(response);\n });\n return {\n result: global_constants.SCORM_TRUE,\n errorCode: 0,\n };\n }\n\n const process = async (\n url: string,\n params: CommitObject | RefObject | Array<any>,\n settings: InternalSettings,\n ): Promise<ResultObject> => {\n try {\n params = settings.requestHandler(params);\n const response = await this.performFetch(url, params);\n\n return this.transformResponse(response);\n } catch (e) {\n this.apiLog(\"processHttpRequest\", e, LogLevelEnum.ERROR);\n api.processListeners(\"CommitError\");\n return genericError;\n }\n };\n\n return await process(url, params, this.settings);\n }\n\n /**\n * Throws a SCORM error\n *\n * @param {number} when - the number of milliseconds to wait before committing\n * @param {string} callback - the name of the commit event callback\n */\n scheduleCommit(when: number, callback: string) {\n if (!this._timeout) {\n this._timeout = new ScheduledCommit(this, when, callback);\n this.apiLog(\"scheduleCommit\", \"scheduled\", LogLevelEnum.DEBUG, \"\");\n }\n }\n\n /**\n * Clears and cancels any currently scheduled commits\n */\n clearScheduledCommit() {\n if (this._timeout) {\n this._timeout.cancel();\n this._timeout = undefined;\n this.apiLog(\"clearScheduledCommit\", \"cleared\", LogLevelEnum.DEBUG, \"\");\n }\n }\n\n /**\n * Check to see if the specific object has the given property\n * @param {RefObject} refObject\n * @param {string} attribute\n * @return {boolean}\n * @private\n */\n private _checkObjectHasProperty(\n refObject: RefObject,\n attribute: string,\n ): boolean {\n return (\n Object.hasOwnProperty.call(refObject, attribute) ||\n Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(refObject),\n attribute,\n ) != null ||\n attribute in refObject\n );\n }\n\n /**\n * Handles the error that occurs when trying to access a value\n * @param {any} e\n * @param {string} returnValue\n * @return {string}\n * @private\n */\n private handleValueAccessException(e: any, returnValue: string): string {\n if (e instanceof ValidationError) {\n this.lastErrorCode = String(e.errorCode);\n returnValue = global_constants.SCORM_FALSE;\n } else {\n if (e instanceof Error && e.message) {\n console.error(e.message);\n } else {\n console.error(e);\n }\n this.throwSCORMError(this._error_codes.GENERAL);\n }\n return returnValue;\n }\n\n /**\n * Builds the commit object to be sent to the LMS\n * @param {boolean} terminateCommit\n * @return {CommitObject|RefObject|Array}\n * @private\n */\n protected getCommitObject(\n terminateCommit: boolean,\n ): CommitObject | RefObject | Array<any> {\n const shouldTerminateCommit =\n terminateCommit || this.settings.alwaysSendTotalTime;\n const commitObject = this.settings.renderCommonCommitFields\n ? this.renderCommitObject(shouldTerminateCommit)\n : this.renderCommitCMI(shouldTerminateCommit);\n\n if ([LogLevelEnum.DEBUG, \"1\", 1, \"DEBUG\"].includes(this.apiLogLevel)) {\n console.debug(\n \"Commit (terminated: \" + (terminateCommit ? \"yes\" : \"no\") + \"): \",\n );\n console.debug(commitObject);\n }\n return commitObject;\n }\n\n /**\n * Perform the fetch request to the LMS\n * @param {string} url\n * @param {RefObject|Array} params\n * @return {Promise<Response>}\n * @private\n */\n private async performFetch(\n url: string,\n params: RefObject | Array<any>,\n ): Promise<Response> {\n let init = {\n method: \"POST\",\n mode: this.settings.fetchMode,\n body: params instanceof Array ? params.join(\"&\") : JSON.stringify(params),\n headers: {\n ...this.settings.xhrHeaders,\n \"Content-Type\": this.settings.commitRequestDataType,\n },\n keepalive: true,\n } as RequestInit;\n\n if (this.settings.xhrWithCredentials) {\n init = {\n ...init,\n credentials: \"include\",\n };\n }\n\n return fetch(url, init);\n }\n\n /**\n * Transforms the response from the LMS to a ResultObject\n * @param {Response} response\n * @return {Promise<ResultObject>}\n * @private\n */\n private async transformResponse(response: Response): Promise<ResultObject> {\n const result =\n typeof this.settings.responseHandler === \"function\"\n ? await this.settings.responseHandler(response)\n : await response.json();\n\n if (\n response.status >= 200 &&\n response.status <= 299 &&\n (result.result === true || result.result === global_constants.SCORM_TRUE)\n ) {\n this.processListeners(\"CommitSuccess\");\n } else {\n this.processListeners(\"CommitError\");\n }\n return result;\n }\n}\n","import { CMI } from \"./cmi/scorm12/cmi\";\nimport * as Utilities from \"./utilities\";\nimport { stringMatches } from \"./utilities\";\nimport { global_constants, scorm12_constants } from \"./constants/api_constants\";\nimport { scorm12_errors } from \"./constants/error_codes\";\n\nimport { BaseCMI } from \"./cmi/common/base_cmi\";\nimport { CMIObjectivesObject } from \"./cmi/scorm12/objectives\";\nimport {\n CMIInteractionsCorrectResponsesObject,\n CMIInteractionsObject,\n CMIInteractionsObjectivesObject\n} from \"./cmi/scorm12/interactions\";\nimport { NAV } from \"./cmi/scorm12/nav\";\nimport { CommitObject, RefObject, ResultObject, ScoreObject, Settings } from \"./types/api_types\";\nimport { CompletionStatus, SuccessStatus } from \"./constants/enums\";\nimport BaseAPI from \"./BaseAPI\";\nimport { scorm12_regex } from \"./constants/regex\";\n\n/**\n * API class for SCORM 1.2\n */\nclass Scorm12Impl extends BaseAPI {\n /**\n * Constructor for SCORM 1.2 API\n * @param {object} settings\n */\n constructor(settings?: Settings) {\n if (settings) {\n if (settings.mastery_override === undefined) {\n settings.mastery_override = false;\n }\n }\n\n super(scorm12_errors, settings);\n\n this.cmi = new CMI();\n this.nav = new NAV();\n\n // Rename functions to match 1.2 Spec and expose to modules\n this.LMSInitialize = this.lmsInitialize;\n this.LMSFinish = this.lmsFinish;\n this.LMSGetValue = this.lmsGetValue;\n this.LMSSetValue = this.lmsSetValue;\n this.LMSCommit = this.lmsCommit;\n this.LMSGetLastError = this.lmsGetLastError;\n this.LMSGetErrorString = this.lmsGetErrorString;\n this.LMSGetDiagnostic = this.lmsGetDiagnostic;\n }\n\n public statusSetByModule = false;\n\n cmi: CMI;\n nav: NAV;\n\n LMSInitialize: () => string;\n LMSFinish: () => string;\n LMSGetValue: (CMIElement: string) => string;\n LMSSetValue: (CMIElement: string, value: any) => string;\n LMSCommit: () => string;\n LMSGetLastError: () => string;\n LMSGetErrorString: (CMIErrorCode: string) => string;\n LMSGetDiagnostic: (CMIErrorCode: string) => string;\n\n /**\n * Called when the API needs to be reset\n */\n reset(settings?: Settings) {\n this.commonReset(settings);\n\n this.cmi?.reset();\n this.nav?.reset();\n }\n\n /**\n * lmsInitialize function from SCORM 1.2 Spec\n *\n * @return {string} bool\n */\n lmsInitialize(): string {\n this.cmi.initialize();\n if (this.cmi.core.lesson_status) {\n this.statusSetByModule = true;\n } else {\n this.cmi.core.lesson_status = \"not attempted\";\n }\n return this.initialize(\n \"LMSInitialize\",\n \"LMS was already initialized!\",\n \"LMS is already finished!\",\n );\n }\n\n /**\n * LMSFinish function from SCORM 1.2 Spec\n *\n * @return {string} bool\n */\n lmsFinish(): string {\n (async () => {\n await this.internalFinish();\n })();\n return global_constants.SCORM_TRUE;\n }\n\n async internalFinish(): Promise<string> {\n const result = await this.terminate(\"LMSFinish\", true);\n\n if (result === global_constants.SCORM_TRUE) {\n if (this.nav.event !== \"\") {\n if (this.nav.event === \"continue\") {\n this.processListeners(\"SequenceNext\");\n } else {\n this.processListeners(\"SequencePrevious\");\n }\n } else if (this.settings.autoProgress) {\n this.processListeners(\"SequenceNext\");\n }\n }\n\n return result;\n }\n\n /**\n * LMSGetValue function from SCORM 1.2 Spec\n *\n * @param {string} CMIElement\n * @return {string}\n */\n lmsGetValue(CMIElement: string): string {\n return this.getValue(\"LMSGetValue\", false, CMIElement);\n }\n\n /**\n * LMSSetValue function from SCORM 1.2 Spec\n *\n * @param {string} CMIElement\n * @param {*} value\n * @return {string}\n */\n lmsSetValue(CMIElement: string, value: any): string {\n if (CMIElement === \"cmi.core.lesson_status\") {\n this.statusSetByModule = true;\n }\n return this.setValue(\"LMSSetValue\", \"LMSCommit\", false, CMIElement, value);\n }\n\n /**\n * LMSCommit function from SCORM 1.2 Spec\n *\n * @return {string} bool\n */\n lmsCommit(): string {\n if (this.settings.asyncCommit) {\n this.scheduleCommit(500, \"LMSCommit\");\n } else {\n (async () => {\n await this.commit(\"LMSCommit\", false);\n })();\n }\n return global_constants.SCORM_TRUE;\n }\n\n /**\n * LMSGetLastError function from SCORM 1.2 Spec\n *\n * @return {string}\n */\n lmsGetLastError(): string {\n return this.getLastError(\"LMSGetLastError\");\n }\n\n /**\n * LMSGetErrorString function from SCORM 1.2 Spec\n *\n * @param {string} CMIErrorCode\n * @return {string}\n */\n lmsGetErrorString(CMIErrorCode: string): string {\n return this.getErrorString(\"LMSGetErrorString\", CMIErrorCode);\n }\n\n /**\n * LMSGetDiagnostic function from SCORM 1.2 Spec\n *\n * @param {string} CMIErrorCode\n * @return {string}\n */\n lmsGetDiagnostic(CMIErrorCode: string): string {\n return this.getDiagnostic(\"LMSGetDiagnostic\", CMIErrorCode);\n }\n\n /**\n * Sets a value on the CMI Object\n *\n * @param {string} CMIElement\n * @param {*} value\n * @return {string}\n */\n override setCMIValue(CMIElement: string, value: any): string {\n return this._commonSetCMIValue(\"LMSSetValue\", false, CMIElement, value);\n }\n\n /**\n * Gets a value from the CMI Object\n *\n * @param {string} CMIElement\n * @return {*}\n */\n override getCMIValue(CMIElement: string): any {\n return this._commonGetCMIValue(\"getCMIValue\", false, CMIElement);\n }\n\n /**\n * Gets or builds a new child element to add to the array.\n *\n * @param {string} CMIElement\n * @param {*} _value\n * @param {boolean} foundFirstIndex\n * @return {BaseCMI|null}\n */\n getChildElement(\n CMIElement: string,\n _value: any,\n foundFirstIndex: boolean,\n ): BaseCMI | null {\n if (stringMatches(CMIElement, \"cmi\\\\.objectives\\\\.\\\\d+\")) {\n return new CMIObjectivesObject();\n } else if (\n foundFirstIndex &&\n stringMatches(\n CMIElement,\n \"cmi\\\\.interactions\\\\.\\\\d+\\\\.correct_responses\\\\.\\\\d+\",\n )\n ) {\n return new CMIInteractionsCorrectResponsesObject();\n } else if (\n foundFirstIndex &&\n stringMatches(CMIElement, \"cmi\\\\.interactions\\\\.\\\\d+\\\\.objectives\\\\.\\\\d+\")\n ) {\n return new CMIInteractionsObjectivesObject();\n } else if (\n !foundFirstIndex &&\n stringMatches(CMIElement, \"cmi\\\\.interactions\\\\.\\\\d+\")\n ) {\n return new CMIInteractionsObject();\n }\n\n return null;\n }\n\n /**\n * Validates Correct Response values\n *\n * @param {string} _CMIElement\n * @param {*} _value\n */\n validateCorrectResponse(_CMIElement: string, _value: any) {\n // do nothing\n }\n\n /**\n * Returns the message that corresponds to errorNumber.\n *\n * @param {number|string} errorNumber\n * @param {boolean} detail\n * @return {string}\n */\n override getLmsErrorMessageDetails(\n errorNumber: number | string,\n detail: boolean,\n ): string {\n let basicMessage = \"No Error\";\n let detailMessage = \"No Error\";\n\n // Set error number to string since inconsistent from modules if string or number\n errorNumber = String(errorNumber);\n if (scorm12_constants.error_descriptions[errorNumber]) {\n basicMessage =\n scorm12_constants.error_descriptions[errorNumber].basicMessage;\n detailMessage =\n scorm12_constants.error_descriptions[errorNumber].detailMessage;\n }\n\n return detail ? detailMessage : basicMessage;\n }\n\n /**\n * Replace the whole API with another\n *\n * @param {Scorm12Impl} newAPI\n */\n replaceWithAnotherScormAPI(newAPI: Scorm12Impl) {\n // Data Model\n this.cmi = newAPI.cmi;\n }\n\n /**\n * Render the cmi object to the proper format for LMS commit\n *\n * @param {boolean} terminateCommit\n * @return {object|Array}\n */\n renderCommitCMI(terminateCommit: boolean): object | Array<any> {\n const cmiExport: RefObject = this.renderCMIToJSONObject();\n\n if (terminateCommit) {\n cmiExport.cmi.core.total_time = this.cmi.getCurrentTotalTime();\n }\n\n const result = [];\n const flattened: RefObject = Utilities.flatten(cmiExport);\n switch (this.settings.dataCommitFormat) {\n case \"flattened\":\n return Utilities.flatten(cmiExport);\n case \"params\":\n for (const item in flattened) {\n if ({}.hasOwnProperty.call(flattened, item)) {\n result.push(`${item}=${flattened[item]}`);\n }\n }\n return result;\n case \"json\":\n default:\n return cmiExport;\n }\n }\n\n /**\n * Render the cmi object to the proper format for LMS commit\n * @param {boolean} terminateCommit\n * @return {CommitObject}\n */\n renderCommitObject(terminateCommit: boolean): CommitObject {\n const cmiExport = this.renderCommitCMI(terminateCommit);\n const totalTimeHHMMSS = this.cmi.getCurrentTotalTime();\n const totalTimeSeconds = Utilities.getTimeAsSeconds(\n totalTimeHHMMSS,\n scorm12_regex.CMITimespan,\n );\n const lessonStatus = this.cmi.core.lesson_status;\n let completionStatus = CompletionStatus.unknown;\n let successStatus = SuccessStatus.unknown;\n if (lessonStatus) {\n completionStatus =\n lessonStatus === \"completed\" || lessonStatus === \"passed\"\n ? CompletionStatus.completed\n : CompletionStatus.incomplete;\n if (lessonStatus === \"passed\") {\n successStatus = SuccessStatus.passed;\n } else if (lessonStatus === \"failed\") {\n successStatus = SuccessStatus.failed;\n }\n }\n\n const score = this.cmi.core.score;\n const scoreObject: ScoreObject = {};\n if (score) {\n if (!Number.isNaN(Number.parseFloat(score.raw))) {\n scoreObject.raw = Number.parseFloat(score.raw);\n }\n if (!Number.isNaN(Number.parseFloat(score.min))) {\n scoreObject.min = Number.parseFloat(score.min);\n }\n if (!Number.isNaN(Number.parseFloat(score.max))) {\n scoreObject.max = Number.parseFloat(score.max);\n }\n }\n\n const commitObject: CommitObject = {\n successStatus: successStatus,\n completionStatus: completionStatus,\n runtimeData: cmiExport,\n totalTimeSeconds: totalTimeSeconds,\n };\n if (scoreObject) {\n commitObject.score = scoreObject;\n }\n return commitObject;\n }\n\n /**\n * Attempts to store the data to the LMS\n *\n * @param {boolean} terminateCommit\n * @return {ResultObject}\n */\n async storeData(terminateCommit: boolean): Promise<ResultObject> {\n if (terminateCommit) {\n const originalStatus = this.cmi.core.lesson_status;\n if (\n !this.cmi.core.lesson_status ||\n (!this.statusSetByModule &&\n this.cmi.core.lesson_status === \"not attempted\")\n ) {\n this.cmi.core.lesson_status = \"completed\";\n }\n\n if (this.cmi.core.lesson_mode === \"normal\") {\n if (this.cmi.core.credit === \"credit\") {\n if (\n this.settings.mastery_override &&\n this.cmi.student_data.mastery_score !== \"\" &&\n this.cmi.core.score.raw !== \"\"\n ) {\n this.cmi.core.lesson_status =\n parseFloat(this.cmi.core.score.raw) >=\n parseFloat(this.cmi.student_data.mastery_score)\n ? \"passed\"\n : \"failed\";\n }\n }\n } else if (this.cmi.core.lesson_mode === \"browse\") {\n if (\n (this.startingData?.cmi?.core?.lesson_status || \"\") === \"\" &&\n originalStatus === \"not attempted\"\n ) {\n this.cmi.core.lesson_status = \"browsed\";\n }\n }\n }\n\n const commitObject = this.getCommitObject(terminateCommit);\n if (typeof this.settings.lmsCommitUrl === \"string\") {\n return await this.processHttpRequest(\n this.settings.lmsCommitUrl,\n commitObject,\n terminateCommit,\n );\n } else {\n return {\n result: global_constants.SCORM_TRUE,\n errorCode: 0,\n };\n }\n }\n}\n\nexport { Scorm12Impl as Scorm12API };\n","import { BaseCMI } from \"./base_cmi\";\nimport { BaseScormValidationError } from \"../../exceptions\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\n\n/**\n * Base class for cmi *.n objects\n */\nexport class CMIArray extends BaseCMI {\n private readonly _errorCode: number;\n private readonly _errorClass: typeof BaseScormValidationError;\n private readonly __children: string;\n public childArray: any[];\n\n /**\n * Constructor cmi *.n arrays\n * @param {object} params\n */\n constructor(params: {\n children: string;\n errorCode?: number;\n errorClass?: typeof BaseScormValidationError;\n }) {\n super();\n this.__children = params.children;\n this._errorCode = params.errorCode || scorm12_errors.GENERAL;\n this._errorClass = params.errorClass || BaseScormValidationError;\n this.childArray = [];\n }\n\n /**\n * Called when the API has been reset\n */\n reset(wipe: boolean = false): void {\n this._initialized = false;\n if (wipe) {\n this.childArray = [];\n } else {\n // Reset all children\n for (let i = 0; i < this.childArray.length; i++) {\n this.childArray[i].reset();\n }\n }\n }\n /**\n * Getter for _children\n * @return {string}\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Setter for _children. Just throws an error.\n * @param {string} _children\n */\n set _children(_children: string) {\n throw new this._errorClass(this._errorCode);\n }\n\n /**\n * Getter for _count\n * @return {number}\n */\n get _count(): number {\n return this.childArray.length;\n }\n\n /**\n * Setter for _count. Just throws an error.\n * @param {number} _count\n */\n set _count(_count: number) {\n throw new this._errorClass(this._errorCode);\n }\n\n /**\n * toJSON for *.n arrays\n * @return {object}\n */\n toJSON(): object {\n this.jsonString = true;\n const result: { [key: string]: any } = {};\n for (let i = 0; i < this.childArray.length; i++) {\n result[i + \"\"] = this.childArray[i];\n }\n delete this.jsonString;\n return result;\n }\n}\n","/**\n * Base class for API cmi objects\n */\nexport abstract class BaseCMI {\n jsonString? = false;\n protected _initialized = false;\n private _start_time: number | undefined;\n\n /**\n * Getter for _initialized\n * @return {boolean}\n */\n get initialized(): boolean {\n return this._initialized;\n }\n\n /**\n * Getter for _start_time\n * @return {number | undefined}\n */\n get start_time(): number | undefined {\n return this._start_time;\n }\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n initialize(): void {\n this._initialized = true;\n }\n\n /**\n * Called when the player should override the 'session_time' provided by\n * the module\n */\n setStartTime(): void {\n this._start_time = new Date().getTime();\n }\n\n abstract reset(): void;\n}\n\n/**\n * Base class for cmi root objects\n */\nexport abstract class BaseRootCMI extends BaseCMI {\n abstract getCurrentTotalTime(): string;\n}\n","import { scorm12_constants } from \"../../constants/api_constants\";\nimport { scorm12_regex } from \"../../constants/regex\";\nimport { BaseCMI } from \"./base_cmi\";\nimport { checkValidFormat, checkValidRange } from \"./validation\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { BaseScormValidationError } from \"../../exceptions\";\n\n/**\n * Base class for cmi *.score objects\n */\nexport class CMIScore extends BaseCMI {\n private readonly __children: string;\n private readonly __score_range: string | false;\n private readonly __invalid_error_code: number;\n private readonly __invalid_type_code: number;\n private readonly __invalid_range_code: number;\n private readonly __decimal_regex: string;\n private readonly __error_class: typeof BaseScormValidationError;\n protected _raw = \"\";\n protected _min = \"\";\n protected _max: string;\n\n /**\n * Constructor for *.score\n * @param {\n * score_children: string,\n * score_range: string,\n * max: string,\n * invalidErrorCode: number,\n * invalidTypeCode: number,\n * invalidRangeCode: number,\n * decimalRegex: string,\n * errorClass: typeof BaseScormValidationError\n * } params\n */\n constructor(params: {\n score_children?: string;\n score_range?: string;\n max?: string;\n invalidErrorCode?: number;\n invalidTypeCode?: number;\n invalidRangeCode?: number;\n decimalRegex?: string;\n errorClass: typeof BaseScormValidationError;\n }) {\n super();\n\n this.__children = params.score_children || scorm12_constants.score_children;\n this.__score_range = !params.score_range\n ? false\n : scorm12_regex.score_range;\n this._max = params.max || params.max === \"\" ? params.max : \"100\";\n this.__invalid_error_code =\n params.invalidErrorCode || scorm12_errors.INVALID_SET_VALUE;\n this.__invalid_type_code =\n params.invalidTypeCode || scorm12_errors.TYPE_MISMATCH;\n this.__invalid_range_code =\n params.invalidRangeCode || scorm12_errors.VALUE_OUT_OF_RANGE;\n this.__decimal_regex = params.decimalRegex || scorm12_regex.CMIDecimal;\n this.__error_class = params.errorClass;\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n }\n\n /**\n * Getter for _children\n * @return {string}\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Setter for _children. Just throws an error.\n * @param {string} _children\n */\n set _children(_children: string) {\n throw new this.__error_class(this.__invalid_error_code);\n }\n\n /**\n * Getter for _raw\n * @return {string}\n */\n get raw(): string {\n return this._raw;\n }\n\n /**\n * Setter for _raw\n * @param {string} raw\n */\n set raw(raw: string) {\n if (\n checkValidFormat(\n raw,\n this.__decimal_regex,\n this.__invalid_type_code,\n this.__error_class,\n ) &&\n (!this.__score_range ||\n checkValidRange(\n raw,\n this.__score_range,\n this.__invalid_range_code,\n this.__error_class,\n ))\n ) {\n this._raw = raw;\n }\n }\n\n /**\n * Getter for _min\n * @return {string}\n */\n get min(): string {\n return this._min;\n }\n\n /**\n * Setter for _min\n * @param {string} min\n */\n set min(min: string) {\n if (\n checkValidFormat(\n min,\n this.__decimal_regex,\n this.__invalid_type_code,\n this.__error_class,\n ) &&\n (!this.__score_range ||\n checkValidRange(\n min,\n this.__score_range,\n this.__invalid_range_code,\n this.__error_class,\n ))\n ) {\n this._min = min;\n }\n }\n\n /**\n * Getter for _max\n * @return {string}\n */\n get max(): string {\n return this._max;\n }\n\n /**\n * Setter for _max\n * @param {string} max\n */\n set max(max: string) {\n if (\n checkValidFormat(\n max,\n this.__decimal_regex,\n this.__invalid_type_code,\n this.__error_class,\n ) &&\n (!this.__score_range ||\n checkValidRange(\n max,\n this.__score_range,\n this.__invalid_range_code,\n this.__error_class,\n ))\n ) {\n this._max = max;\n }\n }\n\n /**\n * toJSON for *.score\n * @return {\n * {\n * min: string,\n * max: string,\n * raw: string\n * }\n * }\n */\n toJSON(): {\n min: string;\n max: string;\n raw: string;\n } {\n this.jsonString = true;\n const result = {\n raw: this.raw,\n min: this.min,\n max: this.max,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseScormValidationError } from \"../../exceptions\";\n\n/**\n * Check if the value matches the proper format. If not, throw proper error code.\n *\n * @param {string} value\n * @param {string} regexPattern\n * @param {number} errorCode\n * @param {typeof BaseScormValidationError} errorClass\n * @param {boolean} [allowEmptyString]\n * @return {boolean}\n */\nexport function checkValidFormat(\n value: string,\n regexPattern: string,\n errorCode: number,\n errorClass: typeof BaseScormValidationError,\n allowEmptyString?: boolean,\n): boolean {\n if (typeof value !== \"string\") {\n return false;\n }\n const formatRegex = new RegExp(regexPattern);\n const matches = value.match(formatRegex);\n if (allowEmptyString && value === \"\") {\n return true;\n }\n if (value === undefined || !matches || matches[0] === \"\") {\n throw new errorClass(errorCode);\n }\n return true;\n}\n\n/**\n * Check if the value matches the proper range. If not, throw proper error code.\n *\n * @param {any} value\n * @param {string} rangePattern\n * @param {number} errorCode\n * @param {typeof BaseScormValidationError} errorClass\n * @return {boolean}\n */\nexport function checkValidRange(\n value: any,\n rangePattern: string,\n errorCode: number,\n errorClass: typeof BaseScormValidationError,\n): boolean {\n const ranges = rangePattern.split(\"#\");\n value = value * 1.0;\n if (value >= ranges[0]) {\n if (ranges[1] === \"*\" || value <= ranges[1]) {\n return true;\n } else {\n throw new errorClass(errorCode);\n }\n } else {\n throw new errorClass(errorCode);\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { CMIScore } from \"../common/score\";\nimport { scorm12_constants } from \"../../constants/api_constants\";\nimport { scorm12_regex } from \"../../constants/regex\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\nimport { check12ValidFormat } from \"../scorm12/validation\";\nimport * as Util from \"../../utilities\";\n\n/**\n * Class representing the `cmi.core` object\n * @extends BaseCMI\n */\nexport class CMICore extends BaseCMI {\n /**\n * Constructor for `cmi.core`\n */\n constructor() {\n super();\n this.score = new CMIScore({\n score_children: scorm12_constants.score_children,\n score_range: scorm12_regex.score_range,\n invalidErrorCode: scorm12_errors.INVALID_SET_VALUE,\n invalidTypeCode: scorm12_errors.TYPE_MISMATCH,\n invalidRangeCode: scorm12_errors.VALUE_OUT_OF_RANGE,\n errorClass: Scorm12ValidationError,\n });\n }\n\n public readonly score: CMIScore;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.score?.initialize();\n }\n\n private __children = scorm12_constants.core_children;\n private _student_id = \"\";\n private _student_name = \"\";\n private _lesson_location = \"\";\n private _credit = \"\";\n private _lesson_status = \"not attempted\";\n private _entry = \"\";\n private _total_time = \"\";\n private _lesson_mode = \"normal\";\n private _exit = \"\";\n private _session_time = \"00:00:00\";\n private _suspend_data = \"\";\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n\n this._exit = \"\";\n this._entry = \"\";\n\n /**\n * Resetting ensures we accurately track the time spent on each individual SCO session independently. Each new\n * session should start from zero, so we can reset cmi.core.session_time at the beginning of each session.\n */\n this._session_time = \"00:00:00\";\n\n this.score?.reset();\n }\n\n /**\n * Getter for __children\n * @return {string}\n * @private\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Setter for __children. Just throws an error.\n * @param {string} _children\n * @private\n */\n set _children(_children: string) {\n throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);\n }\n\n /**\n * Getter for _student_id\n * @return {string}\n */\n get student_id(): string {\n return this._student_id;\n }\n\n /**\n * Setter for _student_id. Can only be called before initialization.\n * @param {string} student_id\n */\n set student_id(student_id: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._student_id = student_id;\n }\n }\n\n /**\n * Getter for _student_name\n * @return {string}\n */\n get student_name(): string {\n return this._student_name;\n }\n\n /**\n * Setter for _student_name. Can only be called before initialization.\n * @param {string} student_name\n */\n set student_name(student_name: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._student_name = student_name;\n }\n }\n\n /**\n * Getter for _lesson_location\n * @return {string}\n */\n get lesson_location(): string {\n return this._lesson_location;\n }\n\n /**\n * Setter for _lesson_location\n * @param {string} lesson_location\n */\n set lesson_location(lesson_location: string) {\n if (check12ValidFormat(lesson_location, scorm12_regex.CMIString256, true)) {\n this._lesson_location = lesson_location;\n }\n }\n\n /**\n * Getter for _credit\n * @return {string}\n */\n get credit(): string {\n return this._credit;\n }\n\n /**\n * Setter for _credit. Can only be called before initialization.\n * @param {string} credit\n */\n set credit(credit: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._credit = credit;\n }\n }\n\n /**\n * Getter for _lesson_status\n * @return {string}\n */\n get lesson_status(): string {\n return this._lesson_status;\n }\n\n /**\n * Setter for _lesson_status\n * @param {string} lesson_status\n */\n set lesson_status(lesson_status: string) {\n if (this.initialized) {\n if (check12ValidFormat(lesson_status, scorm12_regex.CMIStatus)) {\n this._lesson_status = lesson_status;\n }\n } else {\n if (check12ValidFormat(lesson_status, scorm12_regex.CMIStatus2)) {\n this._lesson_status = lesson_status;\n }\n }\n }\n\n /**\n * Getter for _entry\n * @return {string}\n */\n get entry(): string {\n return this._entry;\n }\n\n /**\n * Setter for _entry. Can only be called before initialization.\n * @param {string} entry\n */\n set entry(entry: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._entry = entry;\n }\n }\n\n /**\n * Getter for _total_time\n * @return {string}\n */\n get total_time(): string {\n return this._total_time;\n }\n\n /**\n * Setter for _total_time. Can only be called before initialization.\n * @param {string} total_time\n */\n set total_time(total_time: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._total_time = total_time;\n }\n }\n\n /**\n * Getter for _lesson_mode\n * @return {string}\n */\n get lesson_mode(): string {\n return this._lesson_mode;\n }\n\n /**\n * Setter for _lesson_mode. Can only be called before initialization.\n * @param {string} lesson_mode\n */\n set lesson_mode(lesson_mode: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._lesson_mode = lesson_mode;\n }\n }\n\n /**\n * Getter for _exit. Should only be called during JSON export.\n * @return {string}\n */\n get exit(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._exit;\n }\n\n /**\n * Setter for _exit\n * @param {string} exit\n */\n set exit(exit: string) {\n if (check12ValidFormat(exit, scorm12_regex.CMIExit, true)) {\n this._exit = exit;\n }\n }\n\n /**\n * Getter for _session_time. Should only be called during JSON export.\n * @return {string}\n */\n get session_time(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._session_time;\n }\n\n /**\n * Setter for _session_time\n * @param {string} session_time\n */\n set session_time(session_time: string) {\n if (check12ValidFormat(session_time, scorm12_regex.CMITimespan)) {\n this._session_time = session_time;\n }\n }\n\n /**\n * Getter for _suspend_data\n * @return {string}\n */\n get suspend_data(): string {\n return this._suspend_data;\n }\n\n /**\n * Setter for _suspend_data\n * @param {string} suspend_data\n */\n set suspend_data(suspend_data: string) {\n if (check12ValidFormat(suspend_data, scorm12_regex.CMIString4096, true)) {\n this._suspend_data = suspend_data;\n }\n }\n\n /**\n * Adds the current session time to the existing total time.\n * @param {number} start_time\n * @return {string}\n */\n getCurrentTotalTime(start_time: number | undefined): string {\n let sessionTime = this._session_time;\n const startTime = start_time;\n\n if (typeof startTime !== \"undefined\" && startTime !== null) {\n const seconds = new Date().getTime() - startTime;\n sessionTime = Util.getSecondsAsHHMMSS(seconds / 1000);\n }\n\n return Util.addHHMMSSTimeStrings(\n this._total_time,\n sessionTime,\n new RegExp(scorm12_regex.CMITimespan),\n );\n }\n\n /**\n * toJSON for cmi.core\n *\n * @return {\n * {\n * student_name: string,\n * entry: string,\n * exit: string,\n * score: CMIScore,\n * student_id: string,\n * lesson_mode: string,\n * lesson_location: string,\n * lesson_status: string,\n * credit: string,\n * session_time: string\n * }\n * }\n */\n toJSON(): {\n student_name: string;\n entry: string;\n exit: string;\n score: CMIScore;\n student_id: string;\n lesson_mode: string;\n lesson_location: string;\n lesson_status: string;\n credit: string;\n session_time: string;\n } {\n this.jsonString = true;\n const result = {\n student_id: this.student_id,\n student_name: this.student_name,\n lesson_location: this.lesson_location,\n credit: this.credit,\n lesson_status: this.lesson_status,\n entry: this.entry,\n lesson_mode: this.lesson_mode,\n exit: this.exit,\n session_time: this.session_time,\n score: this.score,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { scorm12_constants } from \"../../constants/api_constants\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { scorm12_regex } from \"../../constants/regex\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\nimport { BaseRootCMI } from \"../common/base_cmi\";\nimport { check12ValidFormat } from \"./validation\";\nimport { CMICore } from \"../aicc/core\";\nimport { CMIObjectives } from \"./objectives\";\nimport { CMIStudentData } from \"./student_data\";\nimport { CMIStudentPreference } from \"./student_preference\";\nimport { CMIInteractions } from \"./interactions\";\n\n/**\n * Class representing the cmi object for SCORM 1.2\n */\nexport class CMI extends BaseRootCMI {\n private readonly __children: string = \"\";\n private __version: string = \"3.4\";\n private _launch_data: string = \"\";\n private _comments: string = \"\";\n private _comments_from_lms: string = \"\";\n\n /**\n * Constructor for the SCORM 1.2 cmi object\n * @param {string} cmi_children\n * @param {(CMIStudentData|AICCCMIStudentData)} student_data\n * @param {boolean} initialized\n */\n constructor(\n cmi_children?: string,\n student_data?: CMIStudentData,\n initialized?: boolean,\n ) {\n super();\n if (initialized) this.initialize();\n this.__children = cmi_children\n ? cmi_children\n : scorm12_constants.cmi_children;\n this.core = new CMICore();\n this.objectives = new CMIObjectives();\n this.student_data = student_data ? student_data : new CMIStudentData();\n this.student_preference = new CMIStudentPreference();\n this.interactions = new CMIInteractions();\n }\n\n public core: CMICore;\n public objectives: CMIObjectives;\n public student_data: CMIStudentData;\n public student_preference: CMIStudentPreference;\n public interactions: CMIInteractions;\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n\n this._launch_data = \"\";\n this._comments = \"\";\n this.core?.reset();\n this.objectives = new CMIObjectives();\n this.interactions = new CMIInteractions();\n this.student_data?.reset();\n this.student_preference?.reset();\n }\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.core?.initialize();\n this.objectives?.initialize();\n this.student_data?.initialize();\n this.student_preference?.initialize();\n this.interactions?.initialize();\n }\n\n /**\n * toJSON for cmi\n *\n * @return {\n * {\n * suspend_data: string,\n * launch_data: string,\n * comments: string,\n * comments_from_lms: string,\n * core: CMICore,\n * objectives: CMIObjectives,\n * student_data: CMIStudentData,\n * student_preference: CMIStudentPreference,\n * interactions: CMIInteractions\n * }\n * }\n */\n toJSON(): {\n suspend_data: string;\n launch_data: string;\n comments: string;\n comments_from_lms: string;\n core: CMICore;\n objectives: CMIObjectives;\n student_data: CMIStudentData;\n student_preference: CMIStudentPreference;\n interactions: CMIInteractions;\n } {\n this.jsonString = true;\n const result = {\n suspend_data: this.suspend_data,\n launch_data: this.launch_data,\n comments: this.comments,\n comments_from_lms: this.comments_from_lms,\n core: this.core,\n objectives: this.objectives,\n student_data: this.student_data,\n student_preference: this.student_preference,\n interactions: this.interactions,\n };\n delete this.jsonString;\n return result;\n }\n\n /**\n * Getter for __version\n * @return {string}\n */\n get _version(): string {\n return this.__version;\n }\n\n /**\n * Setter for __version. Just throws an error.\n * @param {string} _version\n */\n set _version(_version: string) {\n throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);\n }\n\n /**\n * Getter for __children\n * @return {string}\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Setter for __version. Just throws an error.\n * @param {string} _children\n */\n set _children(_children: string) {\n throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);\n }\n\n /**\n * Getter for _suspend_data\n * @return {string}\n */\n get suspend_data(): string {\n return this.core?.suspend_data;\n }\n\n /**\n * Setter for _suspend_data\n * @param {string} suspend_data\n */\n set suspend_data(suspend_data: string) {\n if (this.core) {\n this.core.suspend_data = suspend_data;\n }\n }\n\n /**\n * Getter for _launch_data\n * @return {string}\n */\n get launch_data(): string {\n return this._launch_data;\n }\n\n /**\n * Setter for _launch_data. Can only be called before initialization.\n * @param {string} launch_data\n */\n set launch_data(launch_data: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._launch_data = launch_data;\n }\n }\n\n /**\n * Getter for _comments\n * @return {string}\n */\n get comments(): string {\n return this._comments;\n }\n\n /**\n * Setter for _comments\n * @param {string} comments\n */\n set comments(comments: string) {\n if (check12ValidFormat(comments, scorm12_regex.CMIString4096, true)) {\n this._comments = comments;\n }\n }\n\n /**\n * Getter for _comments_from_lms\n * @return {string}\n */\n get comments_from_lms(): string {\n return this._comments_from_lms;\n }\n\n /**\n * Setter for _comments_from_lms. Can only be called before initialization.\n * @param {string} comments_from_lms\n */\n set comments_from_lms(comments_from_lms: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._comments_from_lms = comments_from_lms;\n }\n }\n\n /**\n * Adds the current session time to the existing total time.\n *\n * @return {string}\n */\n getCurrentTotalTime(): string {\n return this.core.getCurrentTotalTime(this.start_time);\n }\n}\n","import { CMIArray } from \"../common/array\";\nimport { scorm12_constants } from \"../../constants/api_constants\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\nimport { BaseCMI } from \"../common/base_cmi\";\nimport { check12ValidFormat, check12ValidRange } from \"./validation\";\nimport { scorm12_regex } from \"../../constants/regex\";\n\n/**\n * Class representing the SCORM 1.2 `cmi.interactions`\n * @extends CMIArray\n */\nexport class CMIInteractions extends CMIArray {\n /**\n * Constructor for `cmi.interactions`\n */\n constructor() {\n super({\n children: scorm12_constants.interactions_children,\n errorCode: scorm12_errors.INVALID_SET_VALUE,\n errorClass: Scorm12ValidationError,\n });\n }\n}\n\n/**\n * Class representing SCORM 1.2's cmi.interactions.n object\n * @extends BaseCMI\n */\nexport class CMIInteractionsObject extends BaseCMI {\n /**\n * Constructor for cmi.interactions.n object\n */\n constructor() {\n super();\n this.objectives = new CMIArray({\n errorCode: scorm12_errors.INVALID_SET_VALUE,\n errorClass: Scorm12ValidationError,\n children: scorm12_constants.objectives_children,\n });\n this.correct_responses = new CMIArray({\n errorCode: scorm12_errors.INVALID_SET_VALUE,\n errorClass: Scorm12ValidationError,\n children: scorm12_constants.correct_responses_children,\n });\n }\n\n public readonly objectives: CMIArray;\n public readonly correct_responses: CMIArray;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.objectives?.initialize();\n this.correct_responses?.initialize();\n }\n\n private _id = \"\";\n private _time = \"\";\n private _type = \"\";\n private _weighting = \"\";\n private _student_response = \"\";\n private _result = \"\";\n private _latency = \"\";\n\n /**\n * Called when the API has been reset\n */\n override reset(): void {\n this._initialized = false;\n\n this._id = \"\";\n this._time = \"\";\n this._type = \"\";\n this._weighting = \"\";\n this._student_response = \"\";\n this._result = \"\";\n this._latency = \"\";\n\n this.objectives?.reset();\n this.correct_responses?.reset();\n }\n\n /**\n * Getter for _id. Should only be called during JSON export.\n * @return {string}\n */\n get id(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._id;\n }\n\n /**\n * Setter for _id\n * @param {string} id\n */\n set id(id: string) {\n if (check12ValidFormat(id, scorm12_regex.CMIIdentifier)) {\n this._id = id;\n }\n }\n\n /**\n * Getter for _time. Should only be called during JSON export.\n * @return {string}\n */\n get time(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._time;\n }\n\n /**\n * Setter for _time\n * @param {string} time\n */\n set time(time: string) {\n if (check12ValidFormat(time, scorm12_regex.CMITime)) {\n this._time = time;\n }\n }\n\n /**\n * Getter for _type. Should only be called during JSON export.\n * @return {string}\n */\n get type(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._type;\n }\n\n /**\n * Setter for _type\n * @param {string} type\n */\n set type(type: string) {\n if (check12ValidFormat(type, scorm12_regex.CMIType)) {\n this._type = type;\n }\n }\n\n /**\n * Getter for _weighting. Should only be called during JSON export.\n * @return {string}\n */\n get weighting(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._weighting;\n }\n\n /**\n * Setter for _weighting\n * @param {string} weighting\n */\n set weighting(weighting: string) {\n if (\n check12ValidFormat(weighting, scorm12_regex.CMIDecimal) &&\n check12ValidRange(weighting, scorm12_regex.weighting_range)\n ) {\n this._weighting = weighting;\n }\n }\n\n /**\n * Getter for _student_response. Should only be called during JSON export.\n * @return {string}\n */\n get student_response(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._student_response;\n }\n\n /**\n * Setter for _student_response\n * @param {string} student_response\n */\n set student_response(student_response: string) {\n if (check12ValidFormat(student_response, scorm12_regex.CMIFeedback, true)) {\n this._student_response = student_response;\n }\n }\n\n /**\n * Getter for _result. Should only be called during JSON export.\n * @return {string}\n */\n get result(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._result;\n }\n\n /**\n * Setter for _result\n * @param {string} result\n */\n set result(result: string) {\n if (check12ValidFormat(result, scorm12_regex.CMIResult)) {\n this._result = result;\n }\n }\n\n /**\n * Getter for _latency. Should only be called during JSON export.\n * @return {string}\n */\n get latency(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._latency;\n }\n\n /**\n * Setter for _latency\n * @param {string} latency\n */\n set latency(latency: string) {\n if (check12ValidFormat(latency, scorm12_regex.CMITimespan)) {\n this._latency = latency;\n }\n }\n\n /**\n * toJSON for cmi.interactions.n\n *\n * @return {\n * {\n * id: string,\n * time: string,\n * type: string,\n * weighting: string,\n * student_response: string,\n * result: string,\n * latency: string,\n * objectives: CMIArray,\n * correct_responses: CMIArray\n * }\n * }\n */\n toJSON(): {\n id: string;\n time: string;\n type: string;\n weighting: string;\n student_response: string;\n result: string;\n latency: string;\n objectives: CMIArray;\n correct_responses: CMIArray;\n } {\n this.jsonString = true;\n const result = {\n id: this.id,\n time: this.time,\n type: this.type,\n weighting: this.weighting,\n student_response: this.student_response,\n result: this.result,\n latency: this.latency,\n objectives: this.objectives,\n correct_responses: this.correct_responses,\n };\n delete this.jsonString;\n return result;\n }\n}\n\n/**\n * Class representing SCORM 1.2's cmi.interactions.n.objectives.n object\n * @extends BaseCMI\n */\nexport class CMIInteractionsObjectivesObject extends BaseCMI {\n /**\n * Constructor for cmi.interactions.n.objectives.n\n */\n constructor() {\n super();\n }\n\n private _id = \"\";\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n this._id = \"\";\n }\n\n /**\n * Getter for _id\n * @return {string}\n */\n get id(): string {\n return this._id;\n }\n\n /**\n * Setter for _id\n * @param {string} id\n */\n set id(id: string) {\n if (check12ValidFormat(id, scorm12_regex.CMIIdentifier)) {\n this._id = id;\n }\n }\n\n /**\n * toJSON for cmi.interactions.n.objectives.n\n * @return {\n * {\n * id: string\n * }\n * }\n */\n toJSON(): {\n id: string;\n } {\n this.jsonString = true;\n const result = {\n id: this.id,\n };\n delete this.jsonString;\n return result;\n }\n}\n\n/**\n * Class representing SCORM 1.2's cmi.interactions.correct_responses.n object\n * @extends BaseCMI\n */\nexport class CMIInteractionsCorrectResponsesObject extends BaseCMI {\n /**\n * Constructor for cmi.interactions.correct_responses.n\n */\n constructor() {\n super();\n }\n\n private _pattern = \"\";\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n this._pattern = \"\";\n }\n\n /**\n * Getter for _pattern\n * @return {string}\n */\n get pattern(): string {\n if (!this.jsonString) {\n throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);\n }\n return this._pattern;\n }\n\n /**\n * Setter for _pattern\n * @param {string} pattern\n */\n set pattern(pattern: string) {\n if (check12ValidFormat(pattern, scorm12_regex.CMIFeedback, true)) {\n this._pattern = pattern;\n }\n }\n\n /**\n * toJSON for cmi.interactions.correct_responses.n\n * @return {\n * {\n * pattern: string\n * }\n * }\n */\n toJSON(): {\n pattern: string;\n } {\n this.jsonString = true;\n const result = {\n pattern: this._pattern,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { check12ValidFormat } from \"./validation\";\nimport { scorm12_regex } from \"../../constants/regex\";\n\n/**\n * Class for AICC Navigation object\n */\nexport class NAV extends BaseCMI {\n /**\n * Constructor for NAV object\n */\n constructor() {\n super();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._event = \"\";\n this._initialized = false;\n }\n\n private _event = \"\";\n\n /**\n * Getter for _event\n * @return {string}\n */\n get event(): string {\n return this._event;\n }\n\n /**\n * Setter for _event\n * @param {string} event\n */\n set event(event: string) {\n if (check12ValidFormat(event, scorm12_regex.NAVEvent)) {\n this._event = event;\n }\n }\n\n /**\n * toJSON for nav object\n * @return {\n * {\n * event: string\n * }\n * }\n */\n toJSON(): {\n event: string;\n } {\n this.jsonString = true;\n const result = {\n event: this.event,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { CMIScore } from \"../common/score\";\nimport { scorm12_constants } from \"../../constants/api_constants\";\nimport { scorm12_regex } from \"../../constants/regex\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\nimport { check12ValidFormat } from \"./validation\";\nimport { CMIArray } from \"../common/array\";\n\n/**\n * Class representing SCORM 1.2's `cmi.objectives` object\n * @extends CMIArray\n */\nexport class CMIObjectives extends CMIArray {\n /**\n * Constructor for `cmi.objectives`\n */\n constructor() {\n super({\n children: scorm12_constants.objectives_children,\n errorCode: scorm12_errors.INVALID_SET_VALUE,\n errorClass: Scorm12ValidationError,\n });\n }\n}\n\n/**\n * Class representing SCORM 1.2's cmi.objectives.n object\n * @extends BaseCMI\n */\nexport class CMIObjectivesObject extends BaseCMI {\n /**\n * Constructor for cmi.objectives.n\n */\n constructor() {\n super();\n this.score = new CMIScore({\n score_children: scorm12_constants.score_children,\n score_range: scorm12_regex.score_range,\n invalidErrorCode: scorm12_errors.INVALID_SET_VALUE,\n invalidTypeCode: scorm12_errors.TYPE_MISMATCH,\n invalidRangeCode: scorm12_errors.VALUE_OUT_OF_RANGE,\n errorClass: Scorm12ValidationError,\n });\n }\n\n public readonly score: CMIScore;\n\n private _id = \"\";\n private _status = \"\";\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n this._id = \"\";\n this._status = \"\";\n this.score?.reset();\n }\n\n /**\n * Getter for _id\n * @return {string}\n */\n get id(): string {\n return this._id;\n }\n\n /**\n * Setter for _id\n * @param {string} id\n */\n set id(id: string) {\n if (check12ValidFormat(id, scorm12_regex.CMIIdentifier)) {\n this._id = id;\n }\n }\n\n /**\n * Getter for _status\n * @return {string}\n */\n get status(): string {\n return this._status;\n }\n\n /**\n * Setter for _status\n * @param {string} status\n */\n set status(status: string) {\n if (check12ValidFormat(status, scorm12_regex.CMIStatus2)) {\n this._status = status;\n }\n }\n\n /**\n * toJSON for cmi.objectives.n\n * @return {\n * {\n * id: string,\n * status: string,\n * score: CMIScore\n * }\n * }\n */\n toJSON(): {\n id: string;\n status: string;\n score: CMIScore;\n } {\n this.jsonString = true;\n const result = {\n id: this.id,\n status: this.status,\n score: this.score,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { scorm12_constants } from \"../../constants/api_constants\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\n\n/**\n * Class representing the SCORM 1.2 cmi.student_data object\n * @extends BaseCMI\n */\nexport class CMIStudentData extends BaseCMI {\n private readonly __children;\n private _mastery_score = \"\";\n private _max_time_allowed = \"\";\n private _time_limit_action = \"\";\n\n /**\n * Constructor for cmi.student_data\n * @param {string} student_data_children\n */\n constructor(student_data_children?: string) {\n super();\n this.__children = student_data_children\n ? student_data_children\n : scorm12_constants.student_data_children;\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n }\n\n /**\n * Getter for __children\n * @return {string}\n * @private\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Setter for __children. Just throws an error.\n * @param {string} _children\n * @private\n */\n set _children(_children: string) {\n throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);\n }\n\n /**\n * Getter for _master_score\n * @return {string}\n */\n get mastery_score(): string {\n return this._mastery_score;\n }\n\n /**\n * Setter for _master_score. Can only be called before initialization.\n * @param {string} mastery_score\n */\n set mastery_score(mastery_score: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._mastery_score = mastery_score;\n }\n }\n\n /**\n * Getter for _max_time_allowed\n * @return {string}\n */\n get max_time_allowed(): string {\n return this._max_time_allowed;\n }\n\n /**\n * Setter for _max_time_allowed. Can only be called before initialization.\n * @param {string} max_time_allowed\n */\n set max_time_allowed(max_time_allowed: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._max_time_allowed = max_time_allowed;\n }\n }\n\n /**\n * Getter for _time_limit_action\n * @return {string}\n */\n get time_limit_action(): string {\n return this._time_limit_action;\n }\n\n /**\n * Setter for _time_limit_action. Can only be called before initialization.\n * @param {string} time_limit_action\n */\n set time_limit_action(time_limit_action: string) {\n if (this.initialized) {\n throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._time_limit_action = time_limit_action;\n }\n }\n\n /**\n * toJSON for cmi.student_data\n *\n * @return {\n * {\n * max_time_allowed: string,\n * time_limit_action: string,\n * mastery_score: string\n * }\n * }\n */\n toJSON(): {\n mastery_score: string;\n max_time_allowed: string;\n time_limit_action: string;\n } {\n this.jsonString = true;\n const result = {\n mastery_score: this.mastery_score,\n max_time_allowed: this.max_time_allowed,\n time_limit_action: this.time_limit_action,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { scorm12_constants } from \"../../constants/api_constants\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\nimport { check12ValidFormat, check12ValidRange } from \"./validation\";\nimport { scorm12_regex } from \"../../constants/regex\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\n\n/**\n * Class representing the SCORM 1.2 cmi.student_preference object\n * @extends BaseCMI\n */\nexport class CMIStudentPreference extends BaseCMI {\n private readonly __children;\n\n /**\n * Constructor for cmi.student_preference\n * @param {string} student_preference_children\n */\n constructor(student_preference_children?: string) {\n super();\n this.__children = student_preference_children\n ? student_preference_children\n : scorm12_constants.student_preference_children;\n }\n\n private _audio = \"\";\n private _language = \"\";\n private _speed = \"\";\n private _text = \"\";\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n }\n\n /**\n * Getter for __children\n * @return {string}\n * @private\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Setter for __children. Just throws an error.\n * @param {string} _children\n * @private\n */\n set _children(_children: string) {\n throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);\n }\n\n /**\n * Getter for _audio\n * @return {string}\n */\n get audio(): string {\n return this._audio;\n }\n\n /**\n * Setter for _audio\n * @param {string} audio\n */\n set audio(audio: string) {\n if (\n check12ValidFormat(audio, scorm12_regex.CMISInteger) &&\n check12ValidRange(audio, scorm12_regex.audio_range)\n ) {\n this._audio = audio;\n }\n }\n\n /**\n * Getter for _language\n * @return {string}\n */\n get language(): string {\n return this._language;\n }\n\n /**\n * Setter for _language\n * @param {string} language\n */\n set language(language: string) {\n if (check12ValidFormat(language, scorm12_regex.CMIString256)) {\n this._language = language;\n }\n }\n\n /**\n * Getter for _speed\n * @return {string}\n */\n get speed(): string {\n return this._speed;\n }\n\n /**\n * Setter for _speed\n * @param {string} speed\n */\n set speed(speed: string) {\n if (\n check12ValidFormat(speed, scorm12_regex.CMISInteger) &&\n check12ValidRange(speed, scorm12_regex.speed_range)\n ) {\n this._speed = speed;\n }\n }\n\n /**\n * Getter for _text\n * @return {string}\n */\n get text(): string {\n return this._text;\n }\n\n /**\n * Setter for _text\n * @param {string} text\n */\n set text(text: string) {\n if (\n check12ValidFormat(text, scorm12_regex.CMISInteger) &&\n check12ValidRange(text, scorm12_regex.text_range)\n ) {\n this._text = text;\n }\n }\n\n /**\n * toJSON for cmi.student_preference\n *\n * @return {\n * {\n * audio: string,\n * language: string,\n * speed: string,\n * text: string\n * }\n * }\n */\n toJSON(): {\n audio: string;\n language: string;\n speed: string;\n text: string;\n } {\n this.jsonString = true;\n const result = {\n audio: this.audio,\n language: this.language,\n speed: this.speed,\n text: this.text,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { checkValidFormat, checkValidRange } from \"../common/validation\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { Scorm12ValidationError } from \"../../exceptions/scorm12_exceptions\";\n\n/**\n * Helper method, no reason to have to pass the same error codes every time\n * @param {string} value\n * @param {string} regexPattern\n * @param {boolean} allowEmptyString\n * @return {boolean}\n */\nexport function check12ValidFormat(\n value: string,\n regexPattern: string,\n allowEmptyString?: boolean,\n): boolean {\n return checkValidFormat(\n value,\n regexPattern,\n scorm12_errors.TYPE_MISMATCH,\n Scorm12ValidationError,\n allowEmptyString,\n );\n}\n\n/**\n * Helper method, no reason to have to pass the same error codes every time\n * @param {string} value\n * @param {string} rangePattern\n * @param {boolean} allowEmptyString\n * @return {boolean}\n */\nexport function check12ValidRange(\n value: any,\n rangePattern: string,\n allowEmptyString?: boolean,\n): boolean {\n if (!allowEmptyString && value === \"\") {\n throw new Scorm12ValidationError(scorm12_errors.VALUE_OUT_OF_RANGE);\n }\n\n return checkValidRange(\n value,\n rangePattern,\n scorm12_errors.VALUE_OUT_OF_RANGE,\n Scorm12ValidationError,\n );\n}\n","interface ErrorDescription {\n basicMessage: string;\n detailMessage: string;\n}\n\ninterface ErrorDescriptions {\n [key: string]: ErrorDescription;\n}\n\ninterface ScormConstants {\n cmi_children: string;\n core_children: string;\n score_children: string;\n comments_children: string;\n objectives_children: string;\n correct_responses_children: string;\n student_data_children: string;\n student_preference_children: string;\n interactions_children: string;\n error_descriptions: ErrorDescriptions;\n}\n\ninterface AiccConstants extends ScormConstants {\n student_demographics_children: string;\n tries_children: string;\n attempt_records_children: string;\n paths_children: string;\n}\n\ninterface Scorm2004Constants {\n cmi_children: string;\n comments_children: string;\n score_children: string;\n objectives_children: string;\n correct_responses_children: string;\n student_data_children: string;\n student_preference_children: string;\n interactions_children: string;\n adl_data_children: string;\n error_descriptions: ErrorDescriptions;\n}\n\ninterface GlobalConstants {\n SCORM_TRUE: string;\n SCORM_FALSE: string;\n STATE_NOT_INITIALIZED: number;\n STATE_INITIALIZED: number;\n STATE_TERMINATED: number;\n}\n\nexport const global_constants: GlobalConstants = {\n SCORM_TRUE: \"true\",\n SCORM_FALSE: \"false\",\n STATE_NOT_INITIALIZED: 0,\n STATE_INITIALIZED: 1,\n STATE_TERMINATED: 2,\n};\n\nexport const scorm12_constants: ScormConstants = {\n // Children lists\n cmi_children:\n \"core,suspend_data,launch_data,comments,objectives,student_data,student_preference,interactions\",\n core_children:\n \"student_id,student_name,lesson_location,credit,lesson_status,entry,score,total_time,lesson_mode,exit,session_time\",\n score_children: \"raw,min,max\",\n comments_children: \"content,location,time\",\n objectives_children: \"id,score,status\",\n correct_responses_children: \"pattern\",\n student_data_children: \"mastery_score,max_time_allowed,time_limit_action\",\n student_preference_children: \"audio,language,speed,text\",\n interactions_children:\n \"id,objectives,time,type,correct_responses,weighting,student_response,result,latency\",\n error_descriptions: {\n \"101\": {\n basicMessage: \"General Exception\",\n detailMessage:\n \"No specific error code exists to describe the error. Use LMSGetDiagnostic for more information\",\n },\n \"201\": {\n basicMessage: \"Invalid argument error\",\n detailMessage:\n \"Indicates that an argument represents an invalid data model element or is otherwise incorrect.\",\n },\n \"202\": {\n basicMessage: \"Element cannot have children\",\n detailMessage:\n 'Indicates that LMSGetValue was called with a data model element name that ends in \"_children\" for a data model element that does not support the \"_children\" suffix.',\n },\n \"203\": {\n basicMessage: \"Element not an array - cannot have count\",\n detailMessage:\n 'Indicates that LMSGetValue was called with a data model element name that ends in \"_count\" for a data model element that does not support the \"_count\" suffix.',\n },\n \"301\": {\n basicMessage: \"Not initialized\",\n detailMessage:\n \"Indicates that an API call was made before the call to lmsInitialize.\",\n },\n \"401\": {\n basicMessage: \"Not implemented error\",\n detailMessage:\n \"The data model element indicated in a call to LMSGetValue or LMSSetValue is valid, but was not implemented by this LMS. SCORM 1.2 defines a set of data model elements as being optional for an LMS to implement.\",\n },\n \"402\": {\n basicMessage: \"Invalid set value, element is a keyword\",\n detailMessage:\n 'Indicates that LMSSetValue was called on a data model element that represents a keyword (elements that end in \"_children\" and \"_count\").',\n },\n \"403\": {\n basicMessage: \"Element is read only\",\n detailMessage:\n \"LMSSetValue was called with a data model element that can only be read.\",\n },\n \"404\": {\n basicMessage: \"Element is write only\",\n detailMessage:\n \"LMSGetValue was called on a data model element that can only be written to.\",\n },\n \"405\": {\n basicMessage: \"Incorrect Data Type\",\n detailMessage:\n \"LMSSetValue was called with a value that is not consistent with the data format of the supplied data model element.\",\n },\n \"407\": {\n basicMessage: \"Element Value Out Of Range\",\n detailMessage:\n \"The numeric value supplied to a LMSSetValue call is outside of the numeric range allowed for the supplied data model element.\",\n },\n \"408\": {\n basicMessage: \"Data Model Dependency Not Established\",\n detailMessage:\n \"Some data model elements cannot be set until another data model element was set. This error condition indicates that the prerequisite element was not set before the dependent element.\",\n },\n },\n};\nexport const aicc_constants: AiccConstants = {\n ...scorm12_constants,\n ...{\n cmi_children:\n \"core,suspend_data,launch_data,comments,objectives,student_data,student_preference,interactions,evaluation\",\n student_preference_children:\n \"audio,language,lesson_type,speed,text,text_color,text_location,text_size,video,windows\",\n student_data_children:\n \"attempt_number,tries,mastery_score,max_time_allowed,time_limit_action\",\n student_demographics_children:\n \"city,class,company,country,experience,familiar_name,instructor_name,title,native_language,state,street_address,telephone,years_experience\",\n tries_children: \"time,status,score\",\n attempt_records_children: \"score,lesson_status\",\n paths_children: \"location_id,date,time,status,why_left,time_in_element\",\n },\n};\n\nexport const scorm2004_constants: Scorm2004Constants = {\n // Children lists\n cmi_children:\n \"_version,comments_from_learner,comments_from_lms,completion_status,credit,entry,exit,interactions,launch_data,learner_id,learner_name,learner_preference,location,max_time_allowed,mode,objectives,progress_measure,scaled_passing_score,score,session_time,success_status,suspend_data,time_limit_action,total_time\",\n comments_children: \"comment,timestamp,location\",\n score_children: \"max,raw,scaled,min\",\n objectives_children:\n \"progress_measure,completion_status,success_status,description,score,id\",\n correct_responses_children: \"pattern\",\n student_data_children: \"mastery_score,max_time_allowed,time_limit_action\",\n student_preference_children:\n \"audio_level,audio_captioning,delivery_speed,language\",\n interactions_children:\n \"id,type,objectives,timestamp,correct_responses,weighting,learner_response,result,latency,description\",\n adl_data_children: \"id,store\",\n error_descriptions: {\n \"0\": {\n basicMessage: \"No Error\",\n detailMessage: \"No error occurred, the previous API call was successful.\",\n },\n \"101\": {\n basicMessage: \"General Exception\",\n detailMessage:\n \"No specific error code exists to describe the error. Use GetDiagnostic for more information.\",\n },\n \"102\": {\n basicMessage: \"General Initialization Failure\",\n detailMessage: \"Call to Initialize failed for an unknown reason.\",\n },\n \"103\": {\n basicMessage: \"Already Initialized\",\n detailMessage:\n \"Call to Initialize failed because Initialize was already called.\",\n },\n \"104\": {\n basicMessage: \"Content Instance Terminated\",\n detailMessage:\n \"Call to Initialize failed because Terminate was already called.\",\n },\n \"111\": {\n basicMessage: \"General Termination Failure\",\n detailMessage: \"Call to Terminate failed for an unknown reason.\",\n },\n \"112\": {\n basicMessage: \"Termination Before Initialization\",\n detailMessage:\n \"Call to Terminate failed because it was made before the call to Initialize.\",\n },\n \"113\": {\n basicMessage: \"Termination After Termination\",\n detailMessage:\n \"Call to Terminate failed because Terminate was already called.\",\n },\n \"122\": {\n basicMessage: \"Retrieve Data Before Initialization\",\n detailMessage:\n \"Call to GetValue failed because it was made before the call to Initialize.\",\n },\n \"123\": {\n basicMessage: \"Retrieve Data After Termination\",\n detailMessage:\n \"Call to GetValue failed because it was made after the call to Terminate.\",\n },\n \"132\": {\n basicMessage: \"Store Data Before Initialization\",\n detailMessage:\n \"Call to SetValue failed because it was made before the call to Initialize.\",\n },\n \"133\": {\n basicMessage: \"Store Data After Termination\",\n detailMessage:\n \"Call to SetValue failed because it was made after the call to Terminate.\",\n },\n \"142\": {\n basicMessage: \"Commit Before Initialization\",\n detailMessage:\n \"Call to Commit failed because it was made before the call to Initialize.\",\n },\n \"143\": {\n basicMessage: \"Commit After Termination\",\n detailMessage:\n \"Call to Commit failed because it was made after the call to Terminate.\",\n },\n \"201\": {\n basicMessage: \"General Argument Error\",\n detailMessage:\n \"An invalid argument was passed to an API method (usually indicates that Initialize, Commit or Terminate did not receive the expected empty string argument.\",\n },\n \"301\": {\n basicMessage: \"General Get Failure\",\n detailMessage:\n \"Indicates a failed GetValue call where no other specific error code is applicable. Use GetDiagnostic for more information.\",\n },\n \"351\": {\n basicMessage: \"General Set Failure\",\n detailMessage:\n \"Indicates a failed SetValue call where no other specific error code is applicable. Use GetDiagnostic for more information.\",\n },\n \"391\": {\n basicMessage: \"General Commit Failure\",\n detailMessage:\n \"Indicates a failed Commit call where no other specific error code is applicable. Use GetDiagnostic for more information.\",\n },\n \"401\": {\n basicMessage: \"Undefined Data Model Element\",\n detailMessage:\n \"The data model element name passed to GetValue or SetValue is not a valid SCORM data model element.\",\n },\n \"402\": {\n basicMessage: \"Unimplemented Data Model Element\",\n detailMessage:\n \"The data model element indicated in a call to GetValue or SetValue is valid, but was not implemented by this LMS. In SCORM 2004, this error would indicate an LMS that is not fully SCORM conformant.\",\n },\n \"403\": {\n basicMessage: \"Data Model Element Value Not Initialized\",\n detailMessage:\n \"Attempt to read a data model element that has not been initialized by the LMS or through a SetValue call. This error condition is often reached during normal execution of a SCO.\",\n },\n \"404\": {\n basicMessage: \"Data Model Element Is Read Only\",\n detailMessage:\n \"SetValue was called with a data model element that can only be read.\",\n },\n \"405\": {\n basicMessage: \"Data Model Element Is Write Only\",\n detailMessage:\n \"GetValue was called on a data model element that can only be written to.\",\n },\n \"406\": {\n basicMessage: \"Data Model Element Type Mismatch\",\n detailMessage:\n \"SetValue was called with a value that is not consistent with the data format of the supplied data model element.\",\n },\n \"407\": {\n basicMessage: \"Data Model Element Value Out Of Range\",\n detailMessage:\n \"The numeric value supplied to a SetValue call is outside of the numeric range allowed for the supplied data model element.\",\n },\n \"408\": {\n basicMessage: \"Data Model Dependency Not Established\",\n detailMessage:\n \"Some data model elements cannot be set until another data model element was set. This error condition indicates that the prerequisite element was not set before the dependent element.\",\n },\n },\n};\n","export enum NAVBoolean {\n unknown = \"unknown\",\n true = \"true\",\n false = \"false\",\n}\n\nexport enum SuccessStatus {\n passed = \"passed\",\n failed = \"failed\",\n unknown = \"unknown\",\n}\n\nexport enum CompletionStatus {\n completed = \"completed\",\n incomplete = \"incomplete\",\n unknown = \"unknown\",\n}\n\nexport enum LogLevelEnum {\n _,\n DEBUG,\n INFO,\n WARN,\n ERROR,\n NONE,\n}\n","export type ErrorCode = {\n [key: string]: number;\n};\n\nexport const global_errors: ErrorCode = {\n GENERAL: 101,\n INITIALIZATION_FAILED: 101,\n INITIALIZED: 101,\n TERMINATED: 101,\n TERMINATION_FAILURE: 101,\n TERMINATION_BEFORE_INIT: 101,\n MULTIPLE_TERMINATION: 101,\n RETRIEVE_BEFORE_INIT: 101,\n RETRIEVE_AFTER_TERM: 101,\n STORE_BEFORE_INIT: 101,\n STORE_AFTER_TERM: 101,\n COMMIT_BEFORE_INIT: 101,\n COMMIT_AFTER_TERM: 101,\n ARGUMENT_ERROR: 101,\n CHILDREN_ERROR: 101,\n COUNT_ERROR: 101,\n GENERAL_GET_FAILURE: 101,\n GENERAL_SET_FAILURE: 101,\n GENERAL_COMMIT_FAILURE: 101,\n UNDEFINED_DATA_MODEL: 101,\n UNIMPLEMENTED_ELEMENT: 101,\n VALUE_NOT_INITIALIZED: 101,\n INVALID_SET_VALUE: 101,\n READ_ONLY_ELEMENT: 101,\n WRITE_ONLY_ELEMENT: 101,\n TYPE_MISMATCH: 101,\n VALUE_OUT_OF_RANGE: 101,\n DEPENDENCY_NOT_ESTABLISHED: 101,\n};\n\nexport const scorm12_errors: ErrorCode = {\n ...global_errors,\n RETRIEVE_BEFORE_INIT: 301,\n STORE_BEFORE_INIT: 301,\n COMMIT_BEFORE_INIT: 301,\n ARGUMENT_ERROR: 201,\n CHILDREN_ERROR: 202,\n COUNT_ERROR: 203,\n UNDEFINED_DATA_MODEL: 401,\n UNIMPLEMENTED_ELEMENT: 401,\n VALUE_NOT_INITIALIZED: 301,\n INVALID_SET_VALUE: 402,\n READ_ONLY_ELEMENT: 403,\n WRITE_ONLY_ELEMENT: 404,\n TYPE_MISMATCH: 405,\n VALUE_OUT_OF_RANGE: 407,\n DEPENDENCY_NOT_ESTABLISHED: 408,\n};\n\nexport const scorm2004_errors: ErrorCode = {\n ...global_errors,\n INITIALIZATION_FAILED: 102,\n INITIALIZED: 103,\n TERMINATED: 104,\n TERMINATION_FAILURE: 111,\n TERMINATION_BEFORE_INIT: 112,\n MULTIPLE_TERMINATIONS: 113,\n RETRIEVE_BEFORE_INIT: 122,\n RETRIEVE_AFTER_TERM: 123,\n STORE_BEFORE_INIT: 132,\n STORE_AFTER_TERM: 133,\n COMMIT_BEFORE_INIT: 142,\n COMMIT_AFTER_TERM: 143,\n ARGUMENT_ERROR: 201,\n GENERAL_GET_FAILURE: 301,\n GENERAL_SET_FAILURE: 351,\n GENERAL_COMMIT_FAILURE: 391,\n UNDEFINED_DATA_MODEL: 401,\n UNIMPLEMENTED_ELEMENT: 402,\n VALUE_NOT_INITIALIZED: 403,\n READ_ONLY_ELEMENT: 404,\n WRITE_ONLY_ELEMENT: 405,\n TYPE_MISMATCH: 406,\n VALUE_OUT_OF_RANGE: 407,\n DEPENDENCY_NOT_ESTABLISHED: 408,\n};\n","export const scorm12_regex = {\n CMIString256: \"^.{0,255}$\",\n CMIString4096: \"^.{0,4096}$\",\n CMITime: \"^(?:[01]\\\\d|2[0123]):(?:[012345]\\\\d):(?:[012345]\\\\d)$\",\n CMITimespan: \"^([0-9]{2,}):([0-9]{2}):([0-9]{2})(.[0-9]{1,2})?$\",\n\n CMIInteger: \"^\\\\d+$\",\n CMISInteger: \"^-?([0-9]+)$\",\n CMIDecimal: \"^-?([0-9]{0,3})(.[0-9]*)?$\",\n\n CMIIdentifier: \"^[\\\\u0021-\\\\u007E\\\\s]{0,255}$\",\n CMIFeedback: \"^.{0,255}$\",\n // This must be redefined\n CMIIndex: \"[._](\\\\d+).\",\n // Vocabulary Data Type Definition\n CMIStatus: \"^(passed|completed|failed|incomplete|browsed)$\",\n CMIStatus2: \"^(passed|completed|failed|incomplete|browsed|not attempted)$\",\n CMIExit: \"^(time-out|suspend|logout|)$\",\n CMIType:\n \"^(true-false|choice|fill-in|matching|performance|sequencing|likert|numeric)$\",\n CMIResult:\n \"^(correct|wrong|unanticipated|neutral|([0-9]{0,3})?(\\\\.[0-9]*)?)$\",\n NAVEvent: \"^(previous|continue)$\",\n // Data ranges\n score_range: \"0#100\",\n audio_range: \"-1#100\",\n speed_range: \"-100#100\",\n weighting_range: \"-100#100\",\n text_range: \"-1#1\",\n};\nexport const aicc_regex = {\n ...scorm12_regex,\n ...{\n CMIIdentifier: \"^\\\\w{1,255}$\",\n },\n};\nexport const scorm2004_regex = {\n CMIString200: \"^[\\\\u0000-\\\\uFFFF]{0,200}$\",\n CMIString250: \"^[\\\\u0000-\\\\uFFFF]{0,250}$\",\n CMIString1000: \"^[\\\\u0000-\\\\uFFFF]{0,1000}$\",\n CMIString4000: \"^[\\\\u0000-\\\\uFFFF]{0,4000}$\",\n CMIString64000: \"^[\\\\u0000-\\\\uFFFF]{0,64000}$\",\n CMILang: \"^([a-zA-Z]{2,3}|i|x)(-[a-zA-Z0-9-]{2,8})?$|^$\",\n\n CMILangString250:\n \"^({lang=([a-zA-Z]{2,3}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,250}$)?$\",\n\n CMILangcr: \"^(({lang=([a-zA-Z]{2,3}|i|x)?(-[a-zA-Z0-9-]{2,8})?}))(.*?)$\",\n\n CMILangString250cr:\n \"^(({lang=([a-zA-Z]{2,3}|i|x)?(-[a-zA-Z0-9-]{2,8})?})?(.{0,250})?)?$\",\n\n CMILangString4000:\n \"^({lang=([a-zA-Z]{2,3}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,4000}$)?$\",\n\n CMITime:\n \"^(19[7-9]{1}[0-9]{1}|20[0-2]{1}[0-9]{1}|203[0-8]{1})((-(0[1-9]{1}|1[0-2]{1}))((-(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]{1}))(T([0-1]{1}[0-9]{1}|2[0-3]{1})((:[0-5]{1}[0-9]{1})((:[0-5]{1}[0-9]{1})((\\\\.[0-9]{1,2})((Z|([+|-]([0-1]{1}[0-9]{1}|2[0-3]{1})))(:[0-5]{1}[0-9]{1})?)?)?)?)?)?)?)?$\",\n CMITimespan:\n \"^P(?:([.,\\\\d]+)Y)?(?:([.,\\\\d]+)M)?(?:([.,\\\\d]+)W)?(?:([.,\\\\d]+)D)?(?:T?(?:([.,\\\\d]+)H)?(?:([.,\\\\d]+)M)?(?:([.,\\\\d]+)S)?)?$\",\n CMIInteger: \"^\\\\d+$\",\n CMISInteger: \"^-?([0-9]+)$\",\n CMIDecimal: \"^-?([0-9]{1,5})(\\\\.[0-9]{1,18})?$\",\n CMIIdentifier: \"^\\\\S{1,250}[a-zA-Z0-9]$\",\n CMIShortIdentifier: \"^[\\\\w\\\\.\\\\-\\\\_]{1,250}$\",\n CMILongIdentifier:\n \"^(?:(?!urn:)\\\\S{1,4000}|urn:[A-Za-z0-9-]{1,31}:\\\\S{1,4000}|.{1,4000})$\",\n // need to re-examine this\n CMIFeedback: \"^.*$\",\n // This must be redefined\n CMIIndex: \"[._](\\\\d+).\",\n CMIIndexStore: \".N(\\\\d+).\",\n // Vocabulary Data Type Definition\n CMICStatus: \"^(completed|incomplete|not attempted|unknown)$\",\n CMISStatus: \"^(passed|failed|unknown)$\",\n CMIExit: \"^(time-out|suspend|logout|normal)$\",\n CMIType:\n \"^(true-false|choice|fill-in|long-fill-in|matching|performance|sequencing|likert|numeric|other)$\",\n CMIResult:\n \"^(correct|incorrect|unanticipated|neutral|-?([0-9]{1,4})(\\\\.[0-9]{1,18})?)$\",\n NAVEvent:\n \"^(previous|continue|exit|exitAll|abandon|abandonAll|suspendAll|_none_|(\\\\{target=(?<choice_target>\\\\S{0,}[a-zA-Z0-9-_]+)})?choice|(\\\\{target=(?<jump_target>\\\\S{0,}[a-zA-Z0-9-_]+)})?jump)$\",\n\n NAVBoolean: \"^(unknown|true|false$)\",\n NAVTarget: \"^{target=\\\\S{0,}[a-zA-Z0-9-_]+}$\",\n // Data ranges\n scaled_range: \"-1#1\",\n audio_range: \"0#*\",\n speed_range: \"0#*\",\n text_range: \"-1#1\",\n progress_range: \"0#1\",\n};\n","type APIError = {\n errorCode: number;\n errorMessage: string;\n detailedMessage: string;\n};\n\nexport class BaseScormValidationError extends Error {\n constructor(errorCode: number) {\n super(errorCode.toString());\n this._errorCode = errorCode;\n this.name = \"ScormValidationError\";\n }\n\n private readonly _errorCode: number;\n\n /**\n * Getter for _errorCode\n * @return {number}\n */\n get errorCode(): number {\n return this._errorCode;\n }\n}\n\n/**\n * Base Validation Exception\n */\nexport class ValidationError\n extends BaseScormValidationError\n implements APIError\n{\n /**\n * Constructor to take in an error message and code\n * @param {number} errorCode\n * @param {string} errorMessage\n * @param {string} detailedMessage\n */\n constructor(\n errorCode: number,\n errorMessage: string,\n detailedMessage?: string,\n ) {\n super(errorCode);\n this.message = errorMessage;\n this._errorMessage = errorMessage;\n if (detailedMessage) {\n this._detailedMessage = detailedMessage;\n }\n }\n\n private readonly _errorMessage: string;\n private readonly _detailedMessage: string = \"\";\n\n /**\n * Getter for _errorMessage\n * @return {string}\n */\n get errorMessage(): string {\n return this._errorMessage;\n }\n\n /**\n * Getter for _detailedMessage\n * @return {string}\n */\n get detailedMessage(): string {\n return this._detailedMessage;\n }\n}\n","import { ValidationError } from \"../exceptions\";\nimport { scorm12_constants } from \"../constants/api_constants\";\n\nconst scorm12_errors = scorm12_constants.error_descriptions;\n\n/**\n * SCORM 1.2 Validation Error\n */\nexport class Scorm12ValidationError extends ValidationError {\n /**\n * Constructor to take in an error code\n * @param {number} errorCode\n */\n constructor(errorCode: number) {\n if ({}.hasOwnProperty.call(scorm12_errors, String(errorCode))) {\n super(\n errorCode,\n scorm12_errors[String(errorCode)].basicMessage,\n scorm12_errors[String(errorCode)].detailMessage,\n );\n } else {\n super(\n 101,\n scorm12_errors[\"101\"].basicMessage,\n scorm12_errors[\"101\"].detailMessage,\n );\n }\n }\n}\n","export const SECONDS_PER_SECOND = 1.0;\nexport const SECONDS_PER_MINUTE = 60;\nexport const SECONDS_PER_HOUR = 60 * SECONDS_PER_MINUTE;\nexport const SECONDS_PER_DAY = 24 * SECONDS_PER_HOUR;\n\ntype Designation = {\n [key: string]: number;\n};\n\ntype StringKeyMap = {\n [key: string]: any;\n};\n\nconst designations: Designation = {\n D: SECONDS_PER_DAY,\n H: SECONDS_PER_HOUR,\n M: SECONDS_PER_MINUTE,\n S: SECONDS_PER_SECOND,\n};\n\n/**\n * Converts a Number to a String of HH:MM:SS\n *\n * @param {number} totalSeconds\n * @return {string}\n */\nexport function getSecondsAsHHMMSS(totalSeconds: number | null): string {\n // SCORM spec does not deal with negative durations, give zero back\n if (!totalSeconds || totalSeconds <= 0) {\n return \"00:00:00\";\n }\n\n const hours = Math.floor(totalSeconds / SECONDS_PER_HOUR);\n const dateObj = new Date(totalSeconds * 1000);\n const minutes = dateObj.getUTCMinutes();\n // make sure we add any possible decimal value\n const seconds = dateObj.getSeconds();\n const ms = totalSeconds % 1.0;\n let msStr = \"\";\n\n if (countDecimals(ms) > 0) {\n if (countDecimals(ms) > 2) {\n msStr = ms.toFixed(2);\n } else {\n msStr = String(ms);\n }\n\n msStr = \".\" + msStr.split(\".\")[1];\n }\n\n return (\n (hours + \":\" + minutes + \":\" + seconds).replace(/\\b\\d\\b/g, \"0$&\") + msStr\n );\n}\n\n/**\n * Calculate the number of seconds from ISO 8601 Duration\n *\n * @param {number} seconds\n * @return {string}\n */\nexport function getSecondsAsISODuration(seconds: number | null): string {\n // SCORM spec does not deal with negative durations, give zero back\n if (!seconds || seconds <= 0) {\n return \"PT0S\";\n }\n\n let duration = \"P\";\n let remainder = seconds;\n for (const designationsKey in designations) {\n const current_seconds = designations[designationsKey];\n let value = Math.floor(remainder / current_seconds);\n remainder = remainder % current_seconds;\n\n if (countDecimals(remainder) > 2) {\n remainder = Number(Number(remainder).toFixed(2));\n }\n\n // If we have anything left in the remainder, and we're currently adding\n // seconds to the duration, go ahead and add the decimal to the seconds\n if (designationsKey === \"S\" && remainder > 0) {\n value += remainder;\n }\n\n if (value) {\n if (\n (duration.indexOf(\"D\") > 0 ||\n designationsKey === \"H\" ||\n designationsKey === \"M\" ||\n designationsKey === \"S\") &&\n duration.indexOf(\"T\") === -1\n ) {\n duration += \"T\";\n }\n\n duration += `${value}${designationsKey}`;\n }\n }\n return duration;\n}\n\n/**\n * Calculate the number of seconds from HH:MM:SS.DDDDDD\n *\n * @param {string} timeString\n * @param {RegExp} timeRegex\n * @return {number}\n */\nexport function getTimeAsSeconds(\n timeString: string | number | boolean | null,\n timeRegex: RegExp | string,\n): number {\n if (typeof timeString === \"number\" || typeof timeString === \"boolean\") {\n timeString = String(timeString);\n }\n if (typeof timeRegex === \"string\") {\n timeRegex = new RegExp(timeRegex);\n }\n if (!timeString || !timeString.match(timeRegex)) {\n return 0;\n }\n\n const parts = timeString.split(\":\");\n const hours = Number(parts[0]);\n const minutes = Number(parts[1]);\n const seconds = Number(parts[2]);\n return hours * 3600 + minutes * 60 + seconds;\n}\n\n/**\n * Calculate the number of seconds from ISO 8601 Duration\n *\n * @param {string} duration\n * @param {RegExp} durationRegex\n * @return {number}\n */\nexport function getDurationAsSeconds(\n duration: string | null,\n durationRegex: RegExp | string,\n): number {\n if (typeof durationRegex === \"string\") {\n durationRegex = new RegExp(durationRegex);\n }\n\n if (!duration || !duration.match(durationRegex)) {\n return 0;\n }\n\n const [, years, _, , days, hours, minutes, seconds] =\n new RegExp(durationRegex).exec(duration) || [];\n let result = 0.0;\n result += Number(seconds) || 0.0;\n result += Number(minutes) * 60.0 || 0.0;\n result += Number(hours) * 3600.0 || 0.0;\n result += Number(days) * (60 * 60 * 24.0) || 0.0;\n result += Number(years) * (60 * 60 * 24 * 365.0) || 0.0;\n return result;\n}\n\n/**\n * Adds together two ISO8601 Duration strings\n *\n * @param {string} first\n * @param {string} second\n * @param {RegExp|string} durationRegex\n * @return {string}\n */\nexport function addTwoDurations(\n first: string,\n second: string,\n durationRegex: RegExp | string,\n): string {\n const regex: RegExp =\n typeof durationRegex === \"string\"\n ? new RegExp(durationRegex)\n : durationRegex;\n return getSecondsAsISODuration(\n getDurationAsSeconds(first, regex) + getDurationAsSeconds(second, regex),\n );\n}\n\n/**\n * Add together two HH:MM:SS.DD strings\n *\n * @param {string} first\n * @param {string} second\n * @param {RegExp} timeRegex\n * @return {string}\n */\nexport function addHHMMSSTimeStrings(\n first: string,\n second: string,\n timeRegex: RegExp | string,\n): string {\n if (typeof timeRegex === \"string\") {\n timeRegex = new RegExp(timeRegex);\n }\n return getSecondsAsHHMMSS(\n getTimeAsSeconds(first, timeRegex) + getTimeAsSeconds(second, timeRegex),\n );\n}\n\n/**\n * Flatten a JSON object down to string paths for each values\n * @param {object} data\n * @return {object}\n */\nexport function flatten(data: StringKeyMap): object {\n const result: StringKeyMap = {};\n\n /**\n * Recurse through the object\n * @param {*} cur\n * @param {*} prop\n */\n function recurse(cur: any, prop: any) {\n if (Object(cur) !== cur) {\n result[prop] = cur;\n } else if (Array.isArray(cur)) {\n for (let i = 0, l = cur.length; i < l; i++) {\n recurse(cur[i], prop + \"[\" + i + \"]\");\n if (l === 0) result[prop] = [];\n }\n } else {\n let isEmpty = true;\n\n for (const p in cur) {\n if ({}.hasOwnProperty.call(cur, p)) {\n isEmpty = false;\n recurse(cur[p], prop ? prop + \".\" + p : p);\n }\n }\n\n if (isEmpty && prop) result[prop] = {};\n }\n }\n\n recurse(data, \"\");\n return result;\n}\n\n/**\n * Un-flatten a flat JSON object\n * @param {object} data\n * @return {object}\n */\nexport function unflatten(data: StringKeyMap): object {\n \"use strict\";\n\n if (Object(data) !== data || Array.isArray(data)) return data;\n const regex = /\\.?([^.[\\]]+)|\\[(\\d+)]/g;\n const result: StringKeyMap = {};\n\n for (const p in data) {\n if ({}.hasOwnProperty.call(data, p)) {\n let cur = result;\n let prop = \"\";\n let m = regex.exec(p);\n\n while (m) {\n cur = cur[prop] || (cur[prop] = m[2] ? [] : {});\n prop = m[2] || m[1];\n m = regex.exec(p);\n }\n\n cur[prop] = data[p];\n }\n }\n\n return result[\"\"] || result;\n}\n\n/**\n * Counts the number of decimal places\n * @param {number} num\n * @return {number}\n */\nexport function countDecimals(num: number): number {\n if (Math.floor(num) === num || String(num).indexOf(\".\") < 0) return 0;\n const parts = num.toString().split(\".\")[1];\n return parts.length || 0;\n}\n\n/**\n * Formats the SCORM messages for easy reading\n *\n * @param {string} functionName\n * @param {string} message\n * @param {string} CMIElement\n * @return {string}\n */\nexport function formatMessage(\n functionName: string,\n message: string,\n CMIElement?: string,\n): string {\n const baseLength = 20;\n let messageString = \"\";\n\n messageString += functionName;\n\n let fillChars = baseLength - messageString.length;\n\n for (let i = 0; i < fillChars; i++) {\n messageString += \" \";\n }\n\n messageString += \": \";\n\n if (CMIElement) {\n const CMIElementBaseLength = 70;\n\n messageString += CMIElement;\n\n fillChars = CMIElementBaseLength - messageString.length;\n\n for (let j = 0; j < fillChars; j++) {\n messageString += \" \";\n }\n }\n\n if (message) {\n messageString += message;\n }\n\n return messageString;\n}\n\n/**\n * Checks to see if {str} contains {tester}\n *\n * @param {string} str String to check against\n * @param {string} tester String to check for\n * @return {boolean}\n */\nexport function stringMatches(str: string, tester: string): boolean {\n return str?.match(tester) !== null;\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { ValidationError } from \"../exceptions\";\nimport { aicc_constants } from \"../constants/api_constants\";\n\nconst aicc_errors = aicc_constants.error_descriptions;\n\n/**\n * AICC Validation Error\n */\nexport class AICCValidationError extends ValidationError {\n /**\n * Constructor to take in an error code\n * @param {number} errorCode\n */\n constructor(errorCode: number) {\n if ({}.hasOwnProperty.call(aicc_errors, String(errorCode))) {\n super(\n errorCode,\n aicc_errors[String(errorCode)].basicMessage,\n aicc_errors[String(errorCode)].detailMessage,\n );\n } else {\n super(\n 101,\n aicc_errors[\"101\"].basicMessage,\n aicc_errors[\"101\"].detailMessage,\n );\n }\n }\n}\n","import { checkValidFormat } from \"../common/validation\";\nimport { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\n\n/**\n * Helper method, no reason to have to pass the same error codes every time\n * @param {string} value\n * @param {string} regexPattern\n * @param {boolean} allowEmptyString\n * @return {boolean}\n */\nexport function checkAICCValidFormat(\n value: string,\n regexPattern: string,\n allowEmptyString?: boolean,\n): boolean {\n return checkValidFormat(\n value,\n regexPattern,\n scorm12_errors.TYPE_MISMATCH,\n AICCValidationError,\n allowEmptyString,\n );\n}\n","import { CMIArray } from \"../common/array\";\nimport { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { BaseCMI } from \"../common/base_cmi\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { checkAICCValidFormat } from \"./validation\";\nimport { aicc_regex } from \"../../constants/regex\";\n\n/**\n * AICC Evaluation object\n */\nexport class CMIEvaluation extends BaseCMI {\n /**\n * Constructor for AICC Evaluation object\n */\n constructor() {\n super();\n this.comments = new CMIEvaluationComments();\n }\n\n public comments: CMIEvaluationComments;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.comments?.initialize();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n this.comments?.reset();\n }\n\n /**\n * toJSON for cmi.evaluation object\n * @return {{comments: CMIEvaluationComments}}\n */\n toJSON(): {\n comments: CMIEvaluationComments;\n } {\n this.jsonString = true;\n const result = {\n comments: this.comments,\n };\n delete this.jsonString;\n return result;\n }\n}\n\n/**\n * Class representing AICC's cmi.evaluation.comments object\n */\n\nclass CMIEvaluationComments extends CMIArray {\n /**\n * Constructor for AICC Evaluation Comments object\n */\n constructor() {\n super({\n children: aicc_constants.comments_children,\n errorCode: scorm12_errors.INVALID_SET_VALUE,\n errorClass: AICCValidationError,\n });\n }\n}\n\n/**\n * Class for AICC Evaluation Comments\n */\nexport class CMIEvaluationCommentsObject extends BaseCMI {\n private _content = \"\";\n private _location = \"\";\n private _time = \"\";\n\n /**\n * Constructor for Evaluation Comments\n */\n constructor() {\n super();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n\n this._content = \"\";\n this._location = \"\";\n this._time = \"\";\n }\n\n /**\n * Getter for _content\n * @return {string}\n */\n get content(): string {\n return this._content;\n }\n\n /**\n * Setter for _content\n * @param {string} content\n */\n set content(content: string) {\n if (checkAICCValidFormat(content, aicc_regex.CMIString256)) {\n this._content = content;\n }\n }\n\n /**\n * Getter for _location\n * @return {string}\n */\n get location(): string {\n return this._location;\n }\n\n /**\n * Setter for _location\n * @param {string} location\n */\n set location(location: string) {\n if (checkAICCValidFormat(location, aicc_regex.CMIString256)) {\n this._location = location;\n }\n }\n\n /**\n * Getter for _time\n * @return {string}\n */\n get time(): string {\n return this._time;\n }\n\n /**\n * Setting for _time\n * @param {string} time\n */\n set time(time: string) {\n if (checkAICCValidFormat(time, aicc_regex.CMITime)) {\n this._time = time;\n }\n }\n\n /**\n * toJSON for cmi.evaluation.comments.n object\n * @return {\n * {\n * content: string,\n * location: string,\n * time: string\n * }\n * }\n */\n toJSON(): {\n content: string;\n location: string;\n time: string;\n } {\n this.jsonString = true;\n const result = {\n content: this.content,\n location: this.location,\n time: this.time,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { CMIArray } from \"../common/array\";\nimport { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { checkAICCValidFormat } from \"./validation\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { aicc_regex } from \"../../constants/regex\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { CMIStudentPreference } from \"../scorm12/student_preference\";\n\n/**\n * StudentPreferences class for AICC\n */\nexport class AICCStudentPreferences extends CMIStudentPreference {\n /**\n * Constructor for AICC Student Preferences object\n */\n constructor() {\n super(aicc_constants.student_preference_children);\n this.windows = new CMIArray({\n errorCode: scorm12_errors.INVALID_SET_VALUE,\n errorClass: AICCValidationError,\n children: \"\",\n });\n }\n\n public windows: CMIArray;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.windows?.initialize();\n }\n\n private _lesson_type = \"\";\n private _text_color = \"\";\n private _text_location = \"\";\n private _text_size = \"\";\n private _video = \"\";\n\n /**\n * Getter for _lesson_type\n * @return {string}\n */\n get lesson_type(): string {\n return this._lesson_type;\n }\n\n /**\n * Setter for _lesson_type\n * @param {string} lesson_type\n */\n set lesson_type(lesson_type: string) {\n if (checkAICCValidFormat(lesson_type, aicc_regex.CMIString256)) {\n this._lesson_type = lesson_type;\n }\n }\n\n /**\n * Getter for _text_color\n * @return {string}\n */\n get text_color(): string {\n return this._text_color;\n }\n\n /**\n * Setter for _text_color\n * @param {string} text_color\n */\n set text_color(text_color: string) {\n if (checkAICCValidFormat(text_color, aicc_regex.CMIString256)) {\n this._text_color = text_color;\n }\n }\n\n /**\n * Getter for _text_location\n * @return {string}\n */\n get text_location(): string {\n return this._text_location;\n }\n\n /**\n * Setter for _text_location\n * @param {string} text_location\n */\n set text_location(text_location: string) {\n if (checkAICCValidFormat(text_location, aicc_regex.CMIString256)) {\n this._text_location = text_location;\n }\n }\n\n /**\n * Getter for _text_size\n * @return {string}\n */\n get text_size(): string {\n return this._text_size;\n }\n\n /**\n * Setter for _text_size\n * @param {string} text_size\n */\n set text_size(text_size: string) {\n if (checkAICCValidFormat(text_size, aicc_regex.CMIString256)) {\n this._text_size = text_size;\n }\n }\n\n /**\n * Getter for _video\n * @return {string}\n */\n get video(): string {\n return this._video;\n }\n\n /**\n * Setter for _video\n * @param {string} video\n */\n set video(video: string) {\n if (checkAICCValidFormat(video, aicc_regex.CMIString256)) {\n this._video = video;\n }\n }\n\n /**\n * toJSON for cmi.student_preference\n *\n * @return {\n * {\n * audio: string,\n * language: string,\n * speed: string,\n * text: string,\n * text_color: string,\n * text_location: string,\n * text_size: string,\n * video: string,\n * windows: CMIArray\n * }\n * }\n */\n override toJSON(): {\n audio: string;\n language: string;\n lesson_type: string;\n speed: string;\n text: string;\n text_color: string;\n text_location: string;\n text_size: string;\n video: string;\n windows: CMIArray;\n } {\n this.jsonString = true;\n const result = {\n audio: this.audio,\n language: this.language,\n lesson_type: this.lesson_type,\n speed: this.speed,\n text: this.text,\n text_color: this.text_color,\n text_location: this.text_location,\n text_size: this.text_size,\n video: this.video,\n windows: this.windows,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\n\n/**\n * Class representing the AICC cmi.student_demographics object\n */\nexport class CMIStudentDemographics extends BaseCMI {\n private __children = aicc_constants.student_demographics_children;\n private _city = \"\";\n private _class = \"\";\n private _company = \"\";\n private _country = \"\";\n private _experience = \"\";\n private _familiar_name = \"\";\n private _instructor_name = \"\";\n private _title = \"\";\n private _native_language = \"\";\n private _state = \"\";\n private _street_address = \"\";\n private _telephone = \"\";\n private _years_experience = \"\";\n\n /**\n * Constructor for AICC StudentDemographics object\n */\n constructor() {\n super();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n }\n\n /**\n * Getter for _children\n * @return {string}\n */\n get _children(): string {\n return this.__children;\n }\n\n /**\n * Getter for city\n * @return {string}\n */\n get city(): string {\n return this._city;\n }\n\n /**\n * Setter for _city. Sets an error if trying to set after\n * initialization.\n * @param {string} city\n */\n set city(city: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._city = city;\n }\n }\n\n /**\n * Getter for class\n * @return {string}\n */\n get class(): string {\n return this._class;\n }\n\n /**\n * Setter for _class. Sets an error if trying to set after\n * initialization.\n * @param {string} clazz\n */\n set class(clazz: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._class = clazz;\n }\n }\n\n /**\n * Getter for company\n * @return {string}\n */\n get company(): string {\n return this._company;\n }\n\n /**\n * Setter for _company. Sets an error if trying to set after\n * initialization.\n * @param {string} company\n */\n set company(company: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._company = company;\n }\n }\n\n /**\n * Getter for country\n * @return {string}\n */\n get country(): string {\n return this._country;\n }\n\n /**\n * Setter for _country. Sets an error if trying to set after\n * initialization.\n * @param {string} country\n */\n set country(country: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._country = country;\n }\n }\n\n /**\n * Getter for experience\n * @return {string}\n */\n get experience(): string {\n return this._experience;\n }\n\n /**\n * Setter for _experience. Sets an error if trying to set after\n * initialization.\n * @param {string} experience\n */\n set experience(experience: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._experience = experience;\n }\n }\n\n /**\n * Getter for familiar_name\n * @return {string}\n */\n get familiar_name(): string {\n return this._familiar_name;\n }\n\n /**\n * Setter for _familiar_name. Sets an error if trying to set after\n * initialization.\n * @param {string} familiar_name\n */\n set familiar_name(familiar_name: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._familiar_name = familiar_name;\n }\n }\n\n /**\n * Getter for instructor_name\n * @return {string}\n */\n get instructor_name(): string {\n return this._instructor_name;\n }\n\n /**\n * Setter for _instructor_name. Sets an error if trying to set after\n * initialization.\n * @param {string} instructor_name\n */\n set instructor_name(instructor_name: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._instructor_name = instructor_name;\n }\n }\n\n /**\n * Getter for title\n * @return {string}\n */\n get title(): string {\n return this._title;\n }\n\n /**\n * Setter for _title. Sets an error if trying to set after\n * initialization.\n * @param {string} title\n */\n set title(title: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._title = title;\n }\n }\n\n /**\n * Getter for native_language\n * @return {string}\n */\n get native_language(): string {\n return this._native_language;\n }\n\n /**\n * Setter for _native_language. Sets an error if trying to set after\n * initialization.\n * @param {string} native_language\n */\n set native_language(native_language: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._native_language = native_language;\n }\n }\n\n /**\n * Getter for state\n * @return {string}\n */\n get state(): string {\n return this._state;\n }\n\n /**\n * Setter for _state. Sets an error if trying to set after\n * initialization.\n * @param {string} state\n */\n set state(state: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._state = state;\n }\n }\n\n /**\n * Getter for street_address\n * @return {string}\n */\n get street_address(): string {\n return this._street_address;\n }\n\n /**\n * Setter for _street_address. Sets an error if trying to set after\n * initialization.\n * @param {string} street_address\n */\n set street_address(street_address: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._street_address = street_address;\n }\n }\n\n /**\n * Getter for telephone\n * @return {string}\n */\n get telephone(): string {\n return this._telephone;\n }\n\n /**\n * Setter for _telephone. Sets an error if trying to set after\n * initialization.\n * @param {string} telephone\n */\n set telephone(telephone: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._telephone = telephone;\n }\n }\n\n /**\n * Getter for years_experience\n * @return {string}\n */\n get years_experience(): string {\n return this._years_experience;\n }\n\n /**\n * Setter for _years_experience. Sets an error if trying to set after\n * initialization.\n * @param {string} years_experience\n */\n set years_experience(years_experience: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._years_experience = years_experience;\n }\n }\n\n /**\n * toJSON for cmi.student_demographics object\n * @return {\n * {\n * city: string,\n * class: string,\n * company: string,\n * country: string,\n * experience: string,\n * familiar_name: string,\n * instructor_name: string,\n * title: string,\n * native_language: string,\n * state: string,\n * street_address: string,\n * telephone: string,\n * years_experience: string\n * }\n * }\n */\n toJSON(): {\n city: string;\n class: string;\n company: string;\n country: string;\n experience: string;\n familiar_name: string;\n instructor_name: string;\n title: string;\n native_language: string;\n state: string;\n street_address: string;\n telephone: string;\n years_experience: string;\n } {\n this.jsonString = true;\n const result = {\n city: this.city,\n class: this.class,\n company: this.company,\n country: this.country,\n experience: this.experience,\n familiar_name: this.familiar_name,\n instructor_name: this.instructor_name,\n title: this.title,\n native_language: this.native_language,\n state: this.state,\n street_address: this.street_address,\n telephone: this.telephone,\n years_experience: this.years_experience,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { CMIArray } from \"../common/array\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { BaseCMI } from \"../common/base_cmi\";\nimport { CMIScore } from \"../common/score\";\nimport { aicc_regex } from \"../../constants/regex\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { checkAICCValidFormat } from \"./validation\";\n\n/**\n * Class representing the AICC cmi.student_data.tries object\n */\nexport class CMITries extends CMIArray {\n /**\n * Constructor for inline Tries Array class\n */\n constructor() {\n super({\n children: aicc_constants.tries_children,\n });\n }\n}\n\n/**\n * Class for AICC Tries\n */\nexport class CMITriesObject extends BaseCMI {\n private _status = \"\";\n private _time = \"\";\n\n /**\n * Constructor for AICC Tries object\n */\n constructor() {\n super();\n this.score = new CMIScore({\n score_children: aicc_constants.score_children,\n score_range: aicc_regex.score_range,\n invalidErrorCode: scorm12_errors.INVALID_SET_VALUE,\n invalidTypeCode: scorm12_errors.TYPE_MISMATCH,\n invalidRangeCode: scorm12_errors.VALUE_OUT_OF_RANGE,\n errorClass: AICCValidationError,\n });\n }\n\n public score: CMIScore;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.score?.initialize();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n this._status = \"\";\n this._time = \"\";\n this.score?.reset();\n }\n\n /**\n * Getter for _status\n * @return {string}\n */\n get status(): string {\n return this._status;\n }\n\n /**\n * Setter for _status\n * @param {string} status\n */\n set status(status: string) {\n if (checkAICCValidFormat(status, aicc_regex.CMIStatus2)) {\n this._status = status;\n }\n }\n\n /**\n * Getter for _time\n * @return {string}\n */\n get time(): string {\n return this._time;\n }\n\n /**\n * Setter for _time\n * @param {string} time\n */\n set time(time: string) {\n if (checkAICCValidFormat(time, aicc_regex.CMITime)) {\n this._time = time;\n }\n }\n\n /**\n * toJSON for cmi.student_data.tries.n object\n * @return {\n * {\n * status: string,\n * time: string,\n * score: CMIScore\n * }\n * }\n */\n toJSON(): {\n status: string;\n time: string;\n score: CMIScore;\n } {\n this.jsonString = true;\n const result = {\n status: this.status,\n time: this.time,\n score: this.score,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { CMIScore } from \"../common/score\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { aicc_regex } from \"../../constants/regex\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { checkAICCValidFormat } from \"./validation\";\nimport { CMIArray } from \"../common/array\";\n\n/**\n * Class for cmi.student_data.attempt_records array\n */\nexport class CMIAttemptRecords extends CMIArray {\n /**\n * Constructor for inline Tries Array class\n */\n constructor() {\n super({\n children: aicc_constants.attempt_records_children,\n });\n }\n}\n\n/**\n * Class for AICC Attempt Records\n */\nexport class CMIAttemptRecordsObject extends BaseCMI {\n private _lesson_status = \"\";\n\n /**\n * Constructor for AICC Attempt Records object\n */\n constructor() {\n super();\n this.score = new CMIScore({\n score_children: aicc_constants.score_children,\n score_range: aicc_regex.score_range,\n invalidErrorCode: scorm12_errors.INVALID_SET_VALUE,\n invalidTypeCode: scorm12_errors.TYPE_MISMATCH,\n invalidRangeCode: scorm12_errors.VALUE_OUT_OF_RANGE,\n errorClass: AICCValidationError,\n });\n }\n\n public score: CMIScore;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n\n this._lesson_status = \"\";\n this.score?.initialize();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n this.score?.reset();\n }\n\n /**\n * Getter for _lesson_status\n * @return {string}\n */\n get lesson_status(): string {\n return this._lesson_status;\n }\n\n /**\n * Setter for _lesson_status\n * @param {string} lesson_status\n */\n set lesson_status(lesson_status: string) {\n if (checkAICCValidFormat(lesson_status, aicc_regex.CMIStatus2)) {\n this._lesson_status = lesson_status;\n }\n }\n\n /**\n * toJSON for cmi.student_data.attempt_records.n object\n * @return {\n * {\n * lesson_status: string,\n * score: CMIScore\n * }\n * }\n */\n toJSON(): {\n lesson_status: string;\n score: CMIScore;\n } {\n this.jsonString = true;\n const result = {\n lesson_status: this.lesson_status,\n score: this.score,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { AICCValidationError } from \"../../exceptions/aicc_exceptions\";\nimport { scorm12_errors } from \"../../constants/error_codes\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { CMITries } from \"./tries\";\nimport { CMIStudentData } from \"../scorm12/student_data\";\nimport { CMIAttemptRecords } from \"./attempts\";\n\n/**\n * StudentData class for AICC\n */\nexport class AICCCMIStudentData extends CMIStudentData {\n /**\n * Constructor for AICC StudentData object\n */\n constructor() {\n super(aicc_constants.student_data_children);\n this.tries = new CMITries();\n this.attempt_records = new CMIAttemptRecords();\n }\n\n public tries: CMITries;\n public attempt_records: CMIAttemptRecords;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.tries?.initialize();\n this.attempt_records?.initialize();\n }\n\n /**\n * Called when the API has been reset\n */\n override reset(): void {\n this._initialized = false;\n this.tries?.reset(true);\n this.attempt_records?.reset(true);\n }\n\n private _tries_during_lesson = \"\";\n\n /**\n * Getter for tries_during_lesson\n * @return {string}\n */\n get tries_during_lesson(): string {\n return this._tries_during_lesson;\n }\n\n /**\n * Setter for _tries_during_lesson. Sets an error if trying to set after\n * initialization.\n * @param {string} tries_during_lesson\n */\n set tries_during_lesson(tries_during_lesson: string) {\n if (this.initialized) {\n throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);\n } else {\n this._tries_during_lesson = tries_during_lesson;\n }\n }\n\n /**\n * toJSON for cmi.student_data object\n * @return {\n * {\n * mastery_score: string,\n * max_time_allowed: string,\n * time_limit_action: string,\n * tries: CMITries,\n * attempt_records: CMIAttemptRecords\n * }\n * }\n */\n override toJSON(): {\n mastery_score: string;\n max_time_allowed: string;\n time_limit_action: string;\n tries: CMITries;\n attempt_records: CMIAttemptRecords;\n } {\n this.jsonString = true;\n const result = {\n mastery_score: this.mastery_score,\n max_time_allowed: this.max_time_allowed,\n time_limit_action: this.time_limit_action,\n tries: this.tries,\n attempt_records: this.attempt_records,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { BaseCMI } from \"../common/base_cmi\";\nimport { checkAICCValidFormat } from \"./validation\";\nimport { CMIArray } from \"../common/array\";\nimport { aicc_regex } from \"../../constants/regex\";\nimport { aicc_constants } from \"../../constants/api_constants\";\n\n/**\n * Class representing the AICC `cmi.paths` object\n */\nexport class CMIPaths extends CMIArray {\n /**\n * Constructor for inline Paths Array class\n */\n constructor() {\n super({\n children: aicc_constants.paths_children,\n });\n }\n}\n\n/**\n * Class for AICC Paths\n */\nexport class CMIPathsObject extends BaseCMI {\n private _location_id = \"\";\n private _date = \"\";\n private _time = \"\";\n private _status = \"\";\n private _why_left = \"\";\n private _time_in_element = \"\";\n\n /**\n * Constructor for AICC Paths objects\n */\n constructor() {\n super();\n }\n\n /**\n * Called when the API has been reset\n */\n reset(): void {\n this._initialized = false;\n\n this._location_id = \"\";\n this._date = \"\";\n this._time = \"\";\n this._status = \"\";\n this._why_left = \"\";\n this._time_in_element = \"\";\n }\n\n /**\n * Getter for _location_id\n * @return {string}\n */\n get location_id(): string {\n return this._location_id;\n }\n\n /**\n * Setter for _location_id\n * @param {string} location_id\n */\n set location_id(location_id: string) {\n if (checkAICCValidFormat(location_id, aicc_regex.CMIString256)) {\n this._location_id = location_id;\n }\n }\n\n /**\n * Getter for _date\n * @return {string}\n */\n get date(): string {\n return this._date;\n }\n\n /**\n * Setter for _date\n * @param {string} date\n */\n set date(date: string) {\n if (checkAICCValidFormat(date, aicc_regex.CMIString256)) {\n this._date = date;\n }\n }\n\n /**\n * Getter for _time\n * @return {string}\n */\n get time(): string {\n return this._time;\n }\n\n /**\n * Setter for _time\n * @param {string} time\n */\n set time(time: string) {\n if (checkAICCValidFormat(time, aicc_regex.CMITime)) {\n this._time = time;\n }\n }\n\n /**\n * Getter for _status\n * @return {string}\n */\n get status(): string {\n return this._status;\n }\n\n /**\n * Setter for _status\n * @param {string} status\n */\n set status(status: string) {\n if (checkAICCValidFormat(status, aicc_regex.CMIStatus2)) {\n this._status = status;\n }\n }\n\n /**\n * Getter for _why_left\n * @return {string}\n */\n get why_left(): string {\n return this._why_left;\n }\n\n /**\n * Setter for _why_left\n * @param {string} why_left\n */\n set why_left(why_left: string) {\n if (checkAICCValidFormat(why_left, aicc_regex.CMIString256)) {\n this._why_left = why_left;\n }\n }\n\n /**\n * Getter for _time_in_element\n * @return {string}\n */\n get time_in_element(): string {\n return this._time_in_element;\n }\n\n /**\n * Setter for _time_in_element\n * @param {string} time_in_element\n */\n set time_in_element(time_in_element: string) {\n if (checkAICCValidFormat(time_in_element, aicc_regex.CMITime)) {\n this._time_in_element = time_in_element;\n }\n }\n\n /**\n * toJSON for cmi.paths.n object\n * @return {\n * {\n * location_id: string,\n * date: string,\n * time: string,\n * status: string,\n * why_left: string,\n * time_in_element: string\n * }\n * }\n */\n toJSON(): {\n location_id: string;\n date: string;\n time: string;\n status: string;\n why_left: string;\n time_in_element: string;\n } {\n this.jsonString = true;\n const result = {\n location_id: this.location_id,\n date: this.date,\n time: this.time,\n status: this.status,\n why_left: this.why_left,\n time_in_element: this.time_in_element,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import * as Scorm12CMI from \"../scorm12/cmi\";\nimport { aicc_constants } from \"../../constants/api_constants\";\nimport { CMIEvaluation } from \"./evaluation\";\nimport { AICCStudentPreferences } from \"./student_preferences\";\nimport { CMIStudentDemographics } from \"./student_demographics\";\nimport { AICCCMIStudentData } from \"./student_data\";\nimport { CMIPaths } from \"./paths\";\nimport { CMICore } from \"./core\";\nimport { CMIObjectives } from \"../scorm12/objectives\";\nimport { CMIStudentData } from \"../scorm12/student_data\";\nimport { CMIStudentPreference } from \"../scorm12/student_preference\";\nimport { CMIInteractions } from \"../scorm12/interactions\";\n\n/**\n * CMI Class for AICC\n */\nexport class CMI extends Scorm12CMI.CMI {\n /**\n * Constructor for AICC CMI object\n * @param {boolean} initialized\n */\n constructor(initialized: boolean = false) {\n super(aicc_constants.cmi_children);\n if (initialized) this.initialize();\n this.student_preference = new AICCStudentPreferences();\n this.student_data = new AICCCMIStudentData();\n this.student_demographics = new CMIStudentDemographics();\n this.evaluation = new CMIEvaluation();\n this.paths = new CMIPaths();\n }\n\n public override student_data: AICCCMIStudentData;\n public override student_preference: AICCStudentPreferences;\n public student_demographics: CMIStudentDemographics;\n public evaluation: CMIEvaluation;\n public paths: CMIPaths;\n\n /**\n * Called when the API has been initialized after the CMI has been created\n */\n override initialize() {\n super.initialize();\n this.student_preference?.initialize();\n this.student_data?.initialize();\n this.student_demographics?.initialize();\n this.evaluation?.initialize();\n this.paths?.initialize();\n }\n\n /**\n * toJSON for cmi\n *\n * @return {\n * {\n * suspend_data: string,\n * launch_data: string,\n * comments: string,\n * comments_from_lms: string,\n * core: CMICore,\n * objectives: CMIObjectives,\n * student_data: CMIStudentData,\n * student_preference: CMIStudentPreference,\n * interactions: CMIInteractions,\n * paths: CMIPaths\n * }\n * }\n */\n override toJSON(): {\n suspend_data: string;\n launch_data: string;\n comments: string;\n comments_from_lms: string;\n core: CMICore;\n objectives: CMIObjectives;\n student_data: CMIStudentData;\n student_preference: CMIStudentPreference;\n student_demographics: CMIStudentDemographics;\n interactions: CMIInteractions;\n evaluation: CMIEvaluation;\n paths: CMIPaths;\n } {\n this.jsonString = true;\n const result = {\n suspend_data: this.suspend_data,\n launch_data: this.launch_data,\n comments: this.comments,\n comments_from_lms: this.comments_from_lms,\n core: this.core,\n objectives: this.objectives,\n student_data: this.student_data,\n student_preference: this.student_preference,\n student_demographics: this.student_demographics,\n interactions: this.interactions,\n evaluation: this.evaluation,\n paths: this.paths,\n };\n delete this.jsonString;\n return result;\n }\n}\n","import { Scorm12API } from \"./Scorm12API\";\nimport { CMI } from \"./cmi/aicc/cmi\";\n\nimport { BaseCMI } from \"./cmi/common/base_cmi\";\nimport { CMITriesObject } from \"./cmi/aicc/tries\";\nimport { CMIAttemptRecordsObject } from \"./cmi/aicc/attempts\";\nimport { CMIEvaluationCommentsObject } from \"./cmi/aicc/evaluation\";\nimport { NAV } from \"./cmi/scorm12/nav\";\nimport { CMIPathsObject } from \"./cmi/aicc/paths\";\nimport { Settings } from \"./types/api_types\";\nimport { stringMatches } from \"./utilities\";\n\n/**\n * The AICC API class\n */\nclass AICCImpl extends Scorm12API {\n /**\n * Constructor to create AICC API object\n * @param {Settings} settings\n */\n constructor(settings?: Settings) {\n super(settings);\n\n this.cmi = new CMI();\n this.nav = new NAV();\n }\n\n override cmi: CMI;\n override nav: NAV;\n\n /**\n * Gets or builds a new child element to add to the array.\n *\n * @param {string} CMIElement\n * @param {any} value\n * @param {boolean} foundFirstIndex\n * @return {BaseCMI | null}\n */\n override getChildElement(\n CMIElement: string,\n value: any,\n foundFirstIndex: boolean,\n ): BaseCMI | null {\n let newChild = super.getChildElement(CMIElement, value, foundFirstIndex);\n\n if (!newChild) {\n if (stringMatches(CMIElement, \"cmi\\\\.evaluation\\\\.comments\\\\.\\\\d+\")) {\n newChild = new CMIEvaluationCommentsObject();\n } else if (\n stringMatches(CMIElement, \"cmi\\\\.student_data\\\\.tries\\\\.\\\\d+\")\n ) {\n newChild = new CMITriesObject();\n } else if (\n stringMatches(CMIElement, \"cmi\\\\.student_data\\\\.attempt_records\\\\.\\\\d+\")\n ) {\n newChild = new CMIAttemptRecordsObject();\n } else if (stringMatches(CMIElement, \"cmi\\\\.paths\\\\.\\\\d+\")) {\n newChild = new CMIPathsObject();\n }\n }\n\n return newChild;\n }\n\n /**\n * Replace the whole API with another\n *\n * @param {AICCImpl} newAPI\n */\n override replaceWithAnotherScormAPI(newAPI: AICCImpl) {\n // Data Model\n this.cmi = newAPI.cmi;\n this.nav = newAPI.nav;\n }\n}\n\nexport { AICCImpl as AICC };\n"],"names":[],"sourceRoot":""}
|