babylonjs-loaders 6.36.1 → 6.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/babylon.glTF1FileLoader.js +9 -9
- package/babylon.glTF2FileLoader.js +195 -388
- package/babylon.glTF2FileLoader.min.js +1 -1
- package/babylon.glTF2FileLoader.min.js.map +1 -1
- package/babylon.glTFFileLoader.js +198 -391
- package/babylon.glTFFileLoader.min.js +1 -1
- package/babylon.glTFFileLoader.min.js.map +1 -1
- package/babylon.objFileLoader.js +7 -7
- package/babylon.stlFileLoader.js +5 -5
- package/babylonjs.loaders.d.ts +44 -53
- package/babylonjs.loaders.js +203 -396
- package/babylonjs.loaders.min.js +1 -1
- package/babylonjs.loaders.min.js.map +1 -1
- package/babylonjs.loaders.module.d.ts +91 -99
- package/package.json +3 -3
package/babylon.stlFileLoader.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
exports["babylonjs-loaders"] = factory(require("babylonjs"));
|
|
8
8
|
else
|
|
9
9
|
root["LOADERS"] = factory(root["BABYLON"]);
|
|
10
|
-
})((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this), (
|
|
10
|
+
})((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this), (__WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_tools__) => {
|
|
11
11
|
return /******/ (() => { // webpackBootstrap
|
|
12
12
|
/******/ "use strict";
|
|
13
13
|
/******/ var __webpack_modules__ = ({
|
|
@@ -38,7 +38,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
38
38
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
39
39
|
/* harmony export */ STLFileLoader: () => (/* binding */ STLFileLoader)
|
|
40
40
|
/* harmony export */ });
|
|
41
|
-
/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/assetContainer */ "babylonjs/Misc/
|
|
41
|
+
/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/assetContainer */ "babylonjs/Misc/tools");
|
|
42
42
|
/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_0__);
|
|
43
43
|
|
|
44
44
|
|
|
@@ -315,13 +315,13 @@ if (typeof globalObject !== "undefined") {
|
|
|
315
315
|
|
|
316
316
|
/***/ }),
|
|
317
317
|
|
|
318
|
-
/***/ "babylonjs/Misc/
|
|
318
|
+
/***/ "babylonjs/Misc/tools":
|
|
319
319
|
/*!****************************************************************************************************!*\
|
|
320
320
|
!*** external {"root":"BABYLON","commonjs":"babylonjs","commonjs2":"babylonjs","amd":"babylonjs"} ***!
|
|
321
321
|
\****************************************************************************************************/
|
|
322
322
|
/***/ ((module) => {
|
|
323
323
|
|
|
324
|
-
module.exports =
|
|
324
|
+
module.exports = __WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_tools__;
|
|
325
325
|
|
|
326
326
|
/***/ })
|
|
327
327
|
|
|
@@ -428,4 +428,4 @@ __webpack_exports__ = __webpack_exports__["default"];
|
|
|
428
428
|
/******/ })()
|
|
429
429
|
;
|
|
430
430
|
});
|
|
431
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi5zdGxGaWxlTG9hZGVyLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQ1ZBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0VBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFHQTs7O0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBNk9BO0FBcE9BOzs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExT0E7Ozs7QUFJQTtBQUNBO0FBc09BO0FBQUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2UkE7QUFDQTtBQUVBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7QUNoQkE7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNQQTs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL0xPQURFUlMvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL0xPQURFUlMvLi4vLi4vLi4vZGV2L2xvYWRlcnMvc3JjL1NUTC9pbmRleC50cyIsIndlYnBhY2s6Ly9MT0FERVJTLy4uLy4uLy4uL2Rldi9sb2FkZXJzL3NyYy9TVEwvc3RsRmlsZUxvYWRlci50cyIsIndlYnBhY2s6Ly9MT0FERVJTLy4uLy4uLy4uL2x0cy9sb2FkZXJzL3NyYy9sZWdhY3kvbGVnYWN5LXN0bEZpbGVMb2FkZXIudHMiLCJ3ZWJwYWNrOi8vTE9BREVSUy9leHRlcm5hbCB1bWQge1wicm9vdFwiOlwiQkFCWUxPTlwiLFwiY29tbW9uanNcIjpcImJhYnlsb25qc1wiLFwiY29tbW9uanMyXCI6XCJiYWJ5bG9uanNcIixcImFtZFwiOlwiYmFieWxvbmpzXCJ9Iiwid2VicGFjazovL0xPQURFUlMvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vTE9BREVSUy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9MT0FERVJTL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9MT0FERVJTL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vTE9BREVSUy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL0xPQURFUlMvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9MT0FERVJTLy4vc3JjL3N0bEZpbGVMb2FkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiYmFieWxvbmpzXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwiYmFieWxvbmpzLWxvYWRlcnNcIiwgW1wiYmFieWxvbmpzXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImJhYnlsb25qcy1sb2FkZXJzXCJdID0gZmFjdG9yeShyZXF1aXJlKFwiYmFieWxvbmpzXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJMT0FERVJTXCJdID0gZmFjdG9yeShyb290W1wiQkFCWUxPTlwiXSk7XG59KSgodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHRoaXMpLCAoX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9iYWJ5bG9uanNfTWlzY19vYnNlcnZhYmxlX18pID0+IHtcbnJldHVybiAiLCJleHBvcnQgKiBmcm9tIFwiLi9zdGxGaWxlTG9hZGVyXCI7XHJcbiIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xyXG5pbXBvcnQgdHlwZSB7IE51bGxhYmxlIH0gZnJvbSBcImNvcmUvdHlwZXNcIjtcclxuaW1wb3J0IHsgVG9vbHMgfSBmcm9tIFwiY29yZS9NaXNjL3Rvb2xzXCI7XHJcbmltcG9ydCB7IFZlcnRleEJ1ZmZlciB9IGZyb20gXCJjb3JlL0J1ZmZlcnMvYnVmZmVyXCI7XHJcbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RNZXNoIH0gZnJvbSBcImNvcmUvTWVzaGVzL2Fic3RyYWN0TWVzaFwiO1xyXG5pbXBvcnQgeyBNZXNoIH0gZnJvbSBcImNvcmUvTWVzaGVzL21lc2hcIjtcclxuaW1wb3J0IHR5cGUgeyBJU2NlbmVMb2FkZXJQbHVnaW4sIElTY2VuZUxvYWRlclBsdWdpbkV4dGVuc2lvbnMgfSBmcm9tIFwiY29yZS9Mb2FkaW5nL3NjZW5lTG9hZGVyXCI7XHJcbmltcG9ydCB7IFNjZW5lTG9hZGVyIH0gZnJvbSBcImNvcmUvTG9hZGluZy9zY2VuZUxvYWRlclwiO1xyXG5pbXBvcnQgeyBBc3NldENvbnRhaW5lciB9IGZyb20gXCJjb3JlL2Fzc2V0Q29udGFpbmVyXCI7XHJcbmltcG9ydCB0eXBlIHsgU2NlbmUgfSBmcm9tIFwiY29yZS9zY2VuZVwiO1xyXG5cclxuLyoqXHJcbiAqIFNUTCBmaWxlIHR5cGUgbG9hZGVyLlxyXG4gKiBUaGlzIGlzIGEgYmFieWxvbiBzY2VuZSBsb2FkZXIgcGx1Z2luLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNUTEZpbGVMb2FkZXIgaW1wbGVtZW50cyBJU2NlbmVMb2FkZXJQbHVnaW4ge1xyXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gICAgcHVibGljIHNvbGlkUGF0dGVybiA9IC9zb2xpZCAoXFxTKikoW1xcU1xcc10qPyllbmRzb2xpZFsgXSooXFxTKikvZztcclxuXHJcbiAgICAvKiogQGludGVybmFsICovXHJcbiAgICBwdWJsaWMgZmFjZXRzUGF0dGVybiA9IC9mYWNldChbXFxzXFxTXSo/KWVuZGZhY2V0L2c7XHJcbiAgICAvKiogQGludGVybmFsICovXHJcbiAgICBwdWJsaWMgbm9ybWFsUGF0dGVybiA9IC9ub3JtYWxbXFxzXSsoWy0rXT9bMC05XStcXC4/WzAtOV0qKFtlRV1bLStdP1swLTldKyk/KStbXFxzXSsoWy0rXT9bMC05XSpcXC4/WzAtOV0rKFtlRV1bLStdP1swLTldKyk/KStbXFxzXSsoWy0rXT9bMC05XSpcXC4/WzAtOV0rKFtlRV1bLStdP1swLTldKyk/KSsvZztcclxuICAgIC8qKiBAaW50ZXJuYWwgKi9cclxuICAgIHB1YmxpYyB2ZXJ0ZXhQYXR0ZXJuID0gL3ZlcnRleFtcXHNdKyhbLStdP1swLTldK1xcLj9bMC05XSooW2VFXVstK10/WzAtOV0rKT8pK1tcXHNdKyhbLStdP1swLTldKlxcLj9bMC05XSsoW2VFXVstK10/WzAtOV0rKT8pK1tcXHNdKyhbLStdP1swLTldKlxcLj9bMC05XSsoW2VFXVstK10/WzAtOV0rKT8pKy9nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgcGx1Z2luLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmFtZSA9IFwic3RsXCI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmVzIHRoZSBleHRlbnNpb25zIHRoZSBzdGwgbG9hZGVyIGlzIGFibGUgdG8gbG9hZC5cclxuICAgICAqIGZvcmNlIGRhdGEgdG8gY29tZSBpbiBhcyBhbiBBcnJheUJ1ZmZlclxyXG4gICAgICogd2UnbGwgY29udmVydCB0byBzdHJpbmcgaWYgaXQgbG9va3MgbGlrZSBpdCdzIGFuIEFTQ0lJIC5zdGxcclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4dGVuc2lvbnM6IElTY2VuZUxvYWRlclBsdWdpbkV4dGVuc2lvbnMgPSB7XHJcbiAgICAgICAgXCIuc3RsXCI6IHsgaXNCaW5hcnk6IHRydWUgfSxcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmVzIGlmIFkgYW5kIFogYXhlcyBhcmUgc3dhcHBlZCBvciBub3Qgd2hlbiBsb2FkaW5nIGFuIFNUTCBmaWxlLlxyXG4gICAgICogVGhlIGRlZmF1bHQgaXMgZmFsc2UgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gV2hlbiBzZXQgdG9cclxuICAgICAqIHRydWUsIGNvb3JkaW5hdGVzIGZyb20gdGhlIFNUTCBmaWxlIGFyZSB1c2VkIHdpdGhvdXQgY2hhbmdlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIERPX05PVF9BTFRFUl9GSUxFX0NPT1JESU5BVEVTID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvcnQgbWVzaGVzIGludG8gYSBzY2VuZS5cclxuICAgICAqIEBwYXJhbSBtZXNoZXNOYW1lcyBBbiBhcnJheSBvZiBtZXNoIG5hbWVzLCBhIHNpbmdsZSBtZXNoIG5hbWUsIG9yIGVtcHR5IHN0cmluZyBmb3IgYWxsIG1lc2hlcyB0aGF0IGZpbHRlciB3aGF0IG1lc2hlcyBhcmUgaW1wb3J0ZWRcclxuICAgICAqIEBwYXJhbSBzY2VuZSBUaGUgc2NlbmUgdG8gaW1wb3J0IGludG9cclxuICAgICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIGltcG9ydFxyXG4gICAgICogQHBhcmFtIHJvb3RVcmwgVGhlIHJvb3QgdXJsIGZvciBzY2VuZSBhbmQgcmVzb3VyY2VzXHJcbiAgICAgKiBAcGFyYW0gbWVzaGVzIFRoZSBtZXNoZXMgYXJyYXkgdG8gaW1wb3J0IGludG9cclxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgc3VjY2Vzc2Z1bCBvciBmYWxzZSBvdGhlcndpc2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIGltcG9ydE1lc2gobWVzaGVzTmFtZXM6IGFueSwgc2NlbmU6IFNjZW5lLCBkYXRhOiBhbnksIHJvb3RVcmw6IHN0cmluZywgbWVzaGVzOiBOdWxsYWJsZTxBYnN0cmFjdE1lc2hbXT4pOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgbWF0Y2hlcztcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc0JpbmFyeShkYXRhKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gYmluYXJ5IC5zdGxcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJhYnlsb25NZXNoID0gbmV3IE1lc2goXCJzdGxtZXNoXCIsIHNjZW5lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlQmluYXJ5KGJhYnlsb25NZXNoLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgIGlmIChtZXNoZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZXNoZXMucHVzaChiYWJ5bG9uTWVzaCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gQVNDSUkgLnN0bFxyXG5cclxuICAgICAgICAgICAgLy8gY29udmVydCB0byBzdHJpbmdcclxuICAgICAgICAgICAgZGF0YSA9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShuZXcgVWludDhBcnJheShkYXRhKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL2lmIGFycml2ZWQgaGVyZSwgZGF0YSBpcyBhIHN0cmluZywgY29udGFpbmluZyB0aGUgU1RMQSBkYXRhLlxyXG5cclxuICAgICAgICB3aGlsZSAoKG1hdGNoZXMgPSB0aGlzLnNvbGlkUGF0dGVybi5leGVjKGRhdGEpKSkge1xyXG4gICAgICAgICAgICBsZXQgbWVzaE5hbWUgPSBtYXRjaGVzWzFdO1xyXG4gICAgICAgICAgICBjb25zdCBtZXNoTmFtZUZyb21FbmQgPSBtYXRjaGVzWzNdO1xyXG4gICAgICAgICAgICBpZiAobWVzaE5hbWVGcm9tRW5kICYmIG1lc2hOYW1lICE9IG1lc2hOYW1lRnJvbUVuZCkge1xyXG4gICAgICAgICAgICAgICAgVG9vbHMuRXJyb3IoXCJFcnJvciBpbiBTVEwsIHNvbGlkIG5hbWUgIT0gZW5kc29saWQgbmFtZVwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gY2hlY2sgbWVzaGVzTmFtZXNcclxuICAgICAgICAgICAgaWYgKG1lc2hlc05hbWVzICYmIG1lc2hOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobWVzaGVzTmFtZXMgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbWVzaGVzTmFtZXMuaW5kZXhPZihtZXNoTmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWVzaE5hbWUgIT09IG1lc2hlc05hbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gc3RsIG1lc2ggbmFtZSBjYW4gYmUgZW1wdHkgYXMgd2VsbFxyXG4gICAgICAgICAgICBtZXNoTmFtZSA9IG1lc2hOYW1lIHx8IFwic3RsbWVzaFwiO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgYmFieWxvbk1lc2ggPSBuZXcgTWVzaChtZXNoTmFtZSwgc2NlbmUpO1xyXG4gICAgICAgICAgICB0aGlzLl9wYXJzZUFTQ0lJKGJhYnlsb25NZXNoLCBtYXRjaGVzWzJdKTtcclxuICAgICAgICAgICAgaWYgKG1lc2hlcykge1xyXG4gICAgICAgICAgICAgICAgbWVzaGVzLnB1c2goYmFieWxvbk1lc2gpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvYWQgaW50byBhIHNjZW5lLlxyXG4gICAgICogQHBhcmFtIHNjZW5lIFRoZSBzY2VuZSB0byBsb2FkIGludG9cclxuICAgICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIGltcG9ydFxyXG4gICAgICogQHBhcmFtIHJvb3RVcmwgVGhlIHJvb3QgdXJsIGZvciBzY2VuZSBhbmQgcmVzb3VyY2VzXHJcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwgb3IgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsb2FkKHNjZW5lOiBTY2VuZSwgZGF0YTogYW55LCByb290VXJsOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmltcG9ydE1lc2gobnVsbCwgc2NlbmUsIGRhdGEsIHJvb3RVcmwsIG51bGwpO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2FkIGludG8gYW4gYXNzZXQgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHNjZW5lIFRoZSBzY2VuZSB0byBsb2FkIGludG9cclxuICAgICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIGltcG9ydFxyXG4gICAgICogQHBhcmFtIHJvb3RVcmwgVGhlIHJvb3QgdXJsIGZvciBzY2VuZSBhbmQgcmVzb3VyY2VzXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgbG9hZGVkIGFzc2V0IGNvbnRhaW5lclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG9hZEFzc2V0Q29udGFpbmVyKHNjZW5lOiBTY2VuZSwgZGF0YTogc3RyaW5nLCByb290VXJsOiBzdHJpbmcpOiBBc3NldENvbnRhaW5lciB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gbmV3IEFzc2V0Q29udGFpbmVyKHNjZW5lKTtcclxuICAgICAgICBzY2VuZS5fYmxvY2tFbnRpdHlDb2xsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmltcG9ydE1lc2gobnVsbCwgc2NlbmUsIGRhdGEsIHJvb3RVcmwsIGNvbnRhaW5lci5tZXNoZXMpO1xyXG4gICAgICAgIHNjZW5lLl9ibG9ja0VudGl0eUNvbGxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gY29udGFpbmVyO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2lzQmluYXJ5KGRhdGE6IGFueSkge1xyXG4gICAgICAgIC8vIGNoZWNrIGlmIGZpbGUgc2l6ZSBpcyBjb3JyZWN0IGZvciBiaW5hcnkgc3RsXHJcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IERhdGFWaWV3KGRhdGEpO1xyXG5cclxuICAgICAgICAvLyBBIEJpbmFyeSBTVEwgaGVhZGVyIGlzIDgwIGJ5dGVzLCBpZiB0aGUgZGF0YSBzaXplIGlzIG5vdCBncmVhdCB0aGFuXHJcbiAgICAgICAgLy8gdGhhdCB0aGVuIGl0J3Mgbm90IGEgYmluYXJ5IFNUTC5cclxuICAgICAgICBpZiAocmVhZGVyLmJ5dGVMZW5ndGggPD0gODApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmFjZVNpemUgPSAoMzIgLyA4KSAqIDMgKyAoMzIgLyA4KSAqIDMgKiAzICsgMTYgLyA4O1xyXG4gICAgICAgIGNvbnN0IG5GYWNlcyA9IHJlYWRlci5nZXRVaW50MzIoODAsIHRydWUpO1xyXG5cclxuICAgICAgICBpZiAoODAgKyAzMiAvIDggKyBuRmFjZXMgKiBmYWNlU2l6ZSA9PT0gcmVhZGVyLmJ5dGVMZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVUy1BU0NJSSBiZWdpbiB3aXRoICdzJywgJ28nLCAnbCcsICdpJywgJ2QnXHJcbiAgICAgICAgY29uc3QgYXNjaWkgPSBbMTE1LCAxMTEsIDEwOCwgMTA1LCAxMDBdO1xyXG4gICAgICAgIGZvciAobGV0IG9mZiA9IDA7IG9mZiA8IDU7IG9mZisrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZWFkZXIuZ2V0VWludDgob2ZmKSAhPT0gYXNjaWlbb2ZmXSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wYXJzZUJpbmFyeShtZXNoOiBNZXNoLCBkYXRhOiBBcnJheUJ1ZmZlcikge1xyXG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBEYXRhVmlldyhkYXRhKTtcclxuICAgICAgICBjb25zdCBmYWNlcyA9IHJlYWRlci5nZXRVaW50MzIoODAsIHRydWUpO1xyXG5cclxuICAgICAgICBjb25zdCBkYXRhT2Zmc2V0ID0gODQ7XHJcbiAgICAgICAgY29uc3QgZmFjZUxlbmd0aCA9IDEyICogNCArIDI7XHJcblxyXG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xyXG5cclxuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KGZhY2VzICogMyAqIDMpO1xyXG4gICAgICAgIGNvbnN0IG5vcm1hbHMgPSBuZXcgRmxvYXQzMkFycmF5KGZhY2VzICogMyAqIDMpO1xyXG4gICAgICAgIGNvbnN0IGluZGljZXMgPSBuZXcgVWludDMyQXJyYXkoZmFjZXMgKiAzKTtcclxuICAgICAgICBsZXQgaW5kaWNlc0NvdW50ID0gMDtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgZmFjZSA9IDA7IGZhY2UgPCBmYWNlczsgZmFjZSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gZGF0YU9mZnNldCArIGZhY2UgKiBmYWNlTGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxYID0gcmVhZGVyLmdldEZsb2F0MzIoc3RhcnQsIHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxZID0gcmVhZGVyLmdldEZsb2F0MzIoc3RhcnQgKyA0LCB0cnVlKTtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsWiA9IHJlYWRlci5nZXRGbG9hdDMyKHN0YXJ0ICsgOCwgdHJ1ZSk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAzOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZlcnRleHN0YXJ0ID0gc3RhcnQgKyBpICogMTI7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gb3JkZXJpbmcgaXMgaW50ZW50aW9uYWwgdG8gbWF0Y2ggYXNjaWkgaW1wb3J0XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnNbb2Zmc2V0XSA9IHJlYWRlci5nZXRGbG9hdDMyKHZlcnRleHN0YXJ0LCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIG5vcm1hbHNbb2Zmc2V0XSA9IG5vcm1hbFg7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFTVExGaWxlTG9hZGVyLkRPX05PVF9BTFRFUl9GSUxFX0NPT1JESU5BVEVTKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zW29mZnNldCArIDJdID0gcmVhZGVyLmdldEZsb2F0MzIodmVydGV4c3RhcnQgKyA0LCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnNbb2Zmc2V0ICsgMV0gPSByZWFkZXIuZ2V0RmxvYXQzMih2ZXJ0ZXhzdGFydCArIDgsIHRydWUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBub3JtYWxzW29mZnNldCArIDJdID0gbm9ybWFsWTtcclxuICAgICAgICAgICAgICAgICAgICBub3JtYWxzW29mZnNldCArIDFdID0gbm9ybWFsWjtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zW29mZnNldCArIDFdID0gcmVhZGVyLmdldEZsb2F0MzIodmVydGV4c3RhcnQgKyA0LCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnNbb2Zmc2V0ICsgMl0gPSByZWFkZXIuZ2V0RmxvYXQzMih2ZXJ0ZXhzdGFydCArIDgsIHRydWUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBub3JtYWxzW29mZnNldCArIDFdID0gbm9ybWFsWTtcclxuICAgICAgICAgICAgICAgICAgICBub3JtYWxzW29mZnNldCArIDJdID0gbm9ybWFsWjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKFNUTEZpbGVMb2FkZXIuRE9fTk9UX0FMVEVSX0ZJTEVfQ09PUkRJTkFURVMpIHtcclxuICAgICAgICAgICAgICAgIGluZGljZXNbaW5kaWNlc0NvdW50XSA9IGluZGljZXNDb3VudDtcclxuICAgICAgICAgICAgICAgIGluZGljZXNbaW5kaWNlc0NvdW50ICsgMV0gPSBpbmRpY2VzQ291bnQgKyAyO1xyXG4gICAgICAgICAgICAgICAgaW5kaWNlc1tpbmRpY2VzQ291bnQgKyAyXSA9IGluZGljZXNDb3VudCArIDE7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2VzQ291bnQgKz0gMztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGluZGljZXNbaW5kaWNlc0NvdW50XSA9IGluZGljZXNDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgaW5kaWNlc1tpbmRpY2VzQ291bnRdID0gaW5kaWNlc0NvdW50Kys7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2VzW2luZGljZXNDb3VudF0gPSBpbmRpY2VzQ291bnQrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbWVzaC5zZXRWZXJ0aWNlc0RhdGEoVmVydGV4QnVmZmVyLlBvc2l0aW9uS2luZCwgcG9zaXRpb25zKTtcclxuICAgICAgICBtZXNoLnNldFZlcnRpY2VzRGF0YShWZXJ0ZXhCdWZmZXIuTm9ybWFsS2luZCwgbm9ybWFscyk7XHJcbiAgICAgICAgbWVzaC5zZXRJbmRpY2VzKGluZGljZXMpO1xyXG4gICAgICAgIG1lc2guY29tcHV0ZVdvcmxkTWF0cml4KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3BhcnNlQVNDSUkobWVzaDogTWVzaCwgc29saWREYXRhOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBbXTtcclxuICAgICAgICBjb25zdCBub3JtYWxzID0gW107XHJcbiAgICAgICAgY29uc3QgaW5kaWNlcyA9IFtdO1xyXG4gICAgICAgIGxldCBpbmRpY2VzQ291bnQgPSAwO1xyXG5cclxuICAgICAgICAvL2xvYWQgZmFjZXRzLCBpZ25vcmluZyBsb29wIGFzIHRoZSBzdGFuZGFyZCBkb2Vzbid0IGRlZmluZSBpdCBjYW4gY29udGFpbiBtb3JlIHRoYW4gdmVydGljZXNcclxuICAgICAgICBsZXQgbWF0Y2hlcztcclxuICAgICAgICB3aGlsZSAoKG1hdGNoZXMgPSB0aGlzLmZhY2V0c1BhdHRlcm4uZXhlYyhzb2xpZERhdGEpKSkge1xyXG4gICAgICAgICAgICBjb25zdCBmYWNldCA9IG1hdGNoZXNbMV07XHJcbiAgICAgICAgICAgIC8vb25lIG5vcm1hbCBwZXIgZmFjZVxyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxNYXRjaGVzID0gdGhpcy5ub3JtYWxQYXR0ZXJuLmV4ZWMoZmFjZXQpO1xyXG4gICAgICAgICAgICB0aGlzLm5vcm1hbFBhdHRlcm4ubGFzdEluZGV4ID0gMDtcclxuICAgICAgICAgICAgaWYgKCFub3JtYWxNYXRjaGVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBub3JtYWwgPSBbTnVtYmVyKG5vcm1hbE1hdGNoZXNbMV0pLCBOdW1iZXIobm9ybWFsTWF0Y2hlc1s1XSksIE51bWJlcihub3JtYWxNYXRjaGVzWzNdKV07XHJcblxyXG4gICAgICAgICAgICBsZXQgdmVydGV4TWF0Y2g7XHJcbiAgICAgICAgICAgIHdoaWxlICgodmVydGV4TWF0Y2ggPSB0aGlzLnZlcnRleFBhdHRlcm4uZXhlYyhmYWNldCkpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIVNUTEZpbGVMb2FkZXIuRE9fTk9UX0FMVEVSX0ZJTEVfQ09PUkRJTkFURVMpIHtcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnMucHVzaChOdW1iZXIodmVydGV4TWF0Y2hbMV0pLCBOdW1iZXIodmVydGV4TWF0Y2hbNV0pLCBOdW1iZXIodmVydGV4TWF0Y2hbM10pKTtcclxuICAgICAgICAgICAgICAgICAgICBub3JtYWxzLnB1c2gobm9ybWFsWzBdLCBub3JtYWxbMV0sIG5vcm1hbFsyXSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9ucy5wdXNoKE51bWJlcih2ZXJ0ZXhNYXRjaFsxXSksIE51bWJlcih2ZXJ0ZXhNYXRjaFszXSksIE51bWJlcih2ZXJ0ZXhNYXRjaFs1XSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBGbGlwcGluZyB0aGUgc2Vjb25kIGFuZCB0aGlyZCBjb21wb25lbnQgYmVjYXVzZSBpbnZlcnRlZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gbm9ybWFsIHdhcyBkZWNsYXJlZC5cclxuICAgICAgICAgICAgICAgICAgICBub3JtYWxzLnB1c2gobm9ybWFsWzBdLCBub3JtYWxbMl0sIG5vcm1hbFsxXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKFNUTEZpbGVMb2FkZXIuRE9fTk9UX0FMVEVSX0ZJTEVfQ09PUkRJTkFURVMpIHtcclxuICAgICAgICAgICAgICAgIGluZGljZXMucHVzaChpbmRpY2VzQ291bnQsIGluZGljZXNDb3VudCArIDIsIGluZGljZXNDb3VudCArIDEpO1xyXG4gICAgICAgICAgICAgICAgaW5kaWNlc0NvdW50ICs9IDM7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2VzLnB1c2goaW5kaWNlc0NvdW50KyssIGluZGljZXNDb3VudCsrLCBpbmRpY2VzQ291bnQrKyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy52ZXJ0ZXhQYXR0ZXJuLmxhc3RJbmRleCA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZhY2V0c1BhdHRlcm4ubGFzdEluZGV4ID0gMDtcclxuICAgICAgICBtZXNoLnNldFZlcnRpY2VzRGF0YShWZXJ0ZXhCdWZmZXIuUG9zaXRpb25LaW5kLCBwb3NpdGlvbnMpO1xyXG4gICAgICAgIG1lc2guc2V0VmVydGljZXNEYXRhKFZlcnRleEJ1ZmZlci5Ob3JtYWxLaW5kLCBub3JtYWxzKTtcclxuICAgICAgICBtZXNoLnNldEluZGljZXMoaW5kaWNlcyk7XHJcbiAgICAgICAgbWVzaC5jb21wdXRlV29ybGRNYXRyaXgodHJ1ZSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmlmIChTY2VuZUxvYWRlcikge1xyXG4gICAgU2NlbmVMb2FkZXIuUmVnaXN0ZXJQbHVnaW4obmV3IFNUTEZpbGVMb2FkZXIoKSk7XHJcbn1cclxuIiwiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWludGVybmFsLW1vZHVsZXMgKi9cclxuaW1wb3J0ICogYXMgTG9hZGVycyBmcm9tIFwibG9hZGVycy9TVEwvaW5kZXhcIjtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIFVNRCBtb2R1bGUuXHJcbiAqIFRoZSBlbnRyeSBwb2ludCBmb3IgYSBmdXR1cmUgRVNNIHBhY2thZ2Ugc2hvdWxkIGJlIGluZGV4LnRzXHJcbiAqL1xyXG5jb25zdCBnbG9iYWxPYmplY3QgPSB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHVuZGVmaW5lZDtcclxuaWYgKHR5cGVvZiBnbG9iYWxPYmplY3QgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIExvYWRlcnMpIHtcclxuICAgICAgICBpZiAoISg8YW55Pmdsb2JhbE9iamVjdCkuQkFCWUxPTltrZXldKSB7XHJcbiAgICAgICAgICAgICg8YW55Pmdsb2JhbE9iamVjdCkuQkFCWUxPTltrZXldID0gKDxhbnk+TG9hZGVycylba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCAqIGZyb20gXCJsb2FkZXJzL1NUTC9pbmRleFwiO1xyXG4iLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfYmFieWxvbmpzX01pc2Nfb2JzZXJ2YWJsZV9fOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsImltcG9ydCAqIGFzIGxvYWRlcnMgZnJvbSBcIkBsdHMvbG9hZGVycy9sZWdhY3kvbGVnYWN5LXN0bEZpbGVMb2FkZXJcIjtcclxuZXhwb3J0IHsgbG9hZGVycyB9O1xyXG5leHBvcnQgZGVmYXVsdCBsb2FkZXJzO1xyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
|
|
431
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi5zdGxGaWxlTG9hZGVyLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQ1ZBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0VBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFHQTs7O0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBNk9BO0FBcE9BOzs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExT0E7Ozs7QUFJQTtBQUNBO0FBc09BO0FBQUE7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2UkE7QUFDQTtBQUVBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7QUNoQkE7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNQQTs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL0xPQURFUlMvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL0xPQURFUlMvLi4vLi4vLi4vZGV2L2xvYWRlcnMvc3JjL1NUTC9pbmRleC50cyIsIndlYnBhY2s6Ly9MT0FERVJTLy4uLy4uLy4uL2Rldi9sb2FkZXJzL3NyYy9TVEwvc3RsRmlsZUxvYWRlci50cyIsIndlYnBhY2s6Ly9MT0FERVJTLy4uLy4uLy4uL2x0cy9sb2FkZXJzL3NyYy9sZWdhY3kvbGVnYWN5LXN0bEZpbGVMb2FkZXIudHMiLCJ3ZWJwYWNrOi8vTE9BREVSUy9leHRlcm5hbCB1bWQge1wicm9vdFwiOlwiQkFCWUxPTlwiLFwiY29tbW9uanNcIjpcImJhYnlsb25qc1wiLFwiY29tbW9uanMyXCI6XCJiYWJ5bG9uanNcIixcImFtZFwiOlwiYmFieWxvbmpzXCJ9Iiwid2VicGFjazovL0xPQURFUlMvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vTE9BREVSUy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9MT0FERVJTL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9MT0FERVJTL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vTE9BREVSUy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL0xPQURFUlMvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9MT0FERVJTLy4vc3JjL3N0bEZpbGVMb2FkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiYmFieWxvbmpzXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwiYmFieWxvbmpzLWxvYWRlcnNcIiwgW1wiYmFieWxvbmpzXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImJhYnlsb25qcy1sb2FkZXJzXCJdID0gZmFjdG9yeShyZXF1aXJlKFwiYmFieWxvbmpzXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJMT0FERVJTXCJdID0gZmFjdG9yeShyb290W1wiQkFCWUxPTlwiXSk7XG59KSgodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHRoaXMpLCAoX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9iYWJ5bG9uanNfTWlzY190b29sc19fKSA9PiB7XG5yZXR1cm4gIiwiZXhwb3J0ICogZnJvbSBcIi4vc3RsRmlsZUxvYWRlclwiO1xyXG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cclxuaW1wb3J0IHR5cGUgeyBOdWxsYWJsZSB9IGZyb20gXCJjb3JlL3R5cGVzXCI7XHJcbmltcG9ydCB7IFRvb2xzIH0gZnJvbSBcImNvcmUvTWlzYy90b29sc1wiO1xyXG5pbXBvcnQgeyBWZXJ0ZXhCdWZmZXIgfSBmcm9tIFwiY29yZS9CdWZmZXJzL2J1ZmZlclwiO1xyXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0TWVzaCB9IGZyb20gXCJjb3JlL01lc2hlcy9hYnN0cmFjdE1lc2hcIjtcclxuaW1wb3J0IHsgTWVzaCB9IGZyb20gXCJjb3JlL01lc2hlcy9tZXNoXCI7XHJcbmltcG9ydCB0eXBlIHsgSVNjZW5lTG9hZGVyUGx1Z2luLCBJU2NlbmVMb2FkZXJQbHVnaW5FeHRlbnNpb25zIH0gZnJvbSBcImNvcmUvTG9hZGluZy9zY2VuZUxvYWRlclwiO1xyXG5pbXBvcnQgeyBTY2VuZUxvYWRlciB9IGZyb20gXCJjb3JlL0xvYWRpbmcvc2NlbmVMb2FkZXJcIjtcclxuaW1wb3J0IHsgQXNzZXRDb250YWluZXIgfSBmcm9tIFwiY29yZS9hc3NldENvbnRhaW5lclwiO1xyXG5pbXBvcnQgdHlwZSB7IFNjZW5lIH0gZnJvbSBcImNvcmUvc2NlbmVcIjtcclxuXHJcbi8qKlxyXG4gKiBTVEwgZmlsZSB0eXBlIGxvYWRlci5cclxuICogVGhpcyBpcyBhIGJhYnlsb24gc2NlbmUgbG9hZGVyIHBsdWdpbi5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBTVExGaWxlTG9hZGVyIGltcGxlbWVudHMgSVNjZW5lTG9hZGVyUGx1Z2luIHtcclxuICAgIC8qKiBAaW50ZXJuYWwgKi9cclxuICAgIHB1YmxpYyBzb2xpZFBhdHRlcm4gPSAvc29saWQgKFxcUyopKFtcXFNcXHNdKj8pZW5kc29saWRbIF0qKFxcUyopL2c7XHJcblxyXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gICAgcHVibGljIGZhY2V0c1BhdHRlcm4gPSAvZmFjZXQoW1xcc1xcU10qPyllbmRmYWNldC9nO1xyXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gICAgcHVibGljIG5vcm1hbFBhdHRlcm4gPSAvbm9ybWFsW1xcc10rKFstK10/WzAtOV0rXFwuP1swLTldKihbZUVdWy0rXT9bMC05XSspPykrW1xcc10rKFstK10/WzAtOV0qXFwuP1swLTldKyhbZUVdWy0rXT9bMC05XSspPykrW1xcc10rKFstK10/WzAtOV0qXFwuP1swLTldKyhbZUVdWy0rXT9bMC05XSspPykrL2c7XHJcbiAgICAvKiogQGludGVybmFsICovXHJcbiAgICBwdWJsaWMgdmVydGV4UGF0dGVybiA9IC92ZXJ0ZXhbXFxzXSsoWy0rXT9bMC05XStcXC4/WzAtOV0qKFtlRV1bLStdP1swLTldKyk/KStbXFxzXSsoWy0rXT9bMC05XSpcXC4/WzAtOV0rKFtlRV1bLStdP1swLTldKyk/KStbXFxzXSsoWy0rXT9bMC05XSpcXC4/WzAtOV0rKFtlRV1bLStdP1swLTldKyk/KSsvZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgdGhlIG5hbWUgb2YgdGhlIHBsdWdpbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG5hbWUgPSBcInN0bFwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB0aGUgZXh0ZW5zaW9ucyB0aGUgc3RsIGxvYWRlciBpcyBhYmxlIHRvIGxvYWQuXHJcbiAgICAgKiBmb3JjZSBkYXRhIHRvIGNvbWUgaW4gYXMgYW4gQXJyYXlCdWZmZXJcclxuICAgICAqIHdlJ2xsIGNvbnZlcnQgdG8gc3RyaW5nIGlmIGl0IGxvb2tzIGxpa2UgaXQncyBhbiBBU0NJSSAuc3RsXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBleHRlbnNpb25zOiBJU2NlbmVMb2FkZXJQbHVnaW5FeHRlbnNpb25zID0ge1xyXG4gICAgICAgIFwiLnN0bFwiOiB7IGlzQmluYXJ5OiB0cnVlIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyBpZiBZIGFuZCBaIGF4ZXMgYXJlIHN3YXBwZWQgb3Igbm90IHdoZW4gbG9hZGluZyBhbiBTVEwgZmlsZS5cclxuICAgICAqIFRoZSBkZWZhdWx0IGlzIGZhbHNlIHRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFdoZW4gc2V0IHRvXHJcbiAgICAgKiB0cnVlLCBjb29yZGluYXRlcyBmcm9tIHRoZSBTVEwgZmlsZSBhcmUgdXNlZCB3aXRob3V0IGNoYW5nZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBET19OT1RfQUxURVJfRklMRV9DT09SRElOQVRFUyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3J0IG1lc2hlcyBpbnRvIGEgc2NlbmUuXHJcbiAgICAgKiBAcGFyYW0gbWVzaGVzTmFtZXMgQW4gYXJyYXkgb2YgbWVzaCBuYW1lcywgYSBzaW5nbGUgbWVzaCBuYW1lLCBvciBlbXB0eSBzdHJpbmcgZm9yIGFsbCBtZXNoZXMgdGhhdCBmaWx0ZXIgd2hhdCBtZXNoZXMgYXJlIGltcG9ydGVkXHJcbiAgICAgKiBAcGFyYW0gc2NlbmUgVGhlIHNjZW5lIHRvIGltcG9ydCBpbnRvXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBpbXBvcnRcclxuICAgICAqIEBwYXJhbSByb290VXJsIFRoZSByb290IHVybCBmb3Igc2NlbmUgYW5kIHJlc291cmNlc1xyXG4gICAgICogQHBhcmFtIG1lc2hlcyBUaGUgbWVzaGVzIGFycmF5IHRvIGltcG9ydCBpbnRvXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIGlmIHN1Y2Nlc3NmdWwgb3IgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbXBvcnRNZXNoKG1lc2hlc05hbWVzOiBhbnksIHNjZW5lOiBTY2VuZSwgZGF0YTogYW55LCByb290VXJsOiBzdHJpbmcsIG1lc2hlczogTnVsbGFibGU8QWJzdHJhY3RNZXNoW10+KTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IG1hdGNoZXM7XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faXNCaW5hcnkoZGF0YSkpIHtcclxuICAgICAgICAgICAgICAgIC8vIGJpbmFyeSAuc3RsXHJcbiAgICAgICAgICAgICAgICBjb25zdCBiYWJ5bG9uTWVzaCA9IG5ldyBNZXNoKFwic3RsbWVzaFwiLCBzY2VuZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZUJpbmFyeShiYWJ5bG9uTWVzaCwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobWVzaGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzaGVzLnB1c2goYmFieWxvbk1lc2gpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEFTQ0lJIC5zdGxcclxuXHJcbiAgICAgICAgICAgIC8vIGNvbnZlcnQgdG8gc3RyaW5nXHJcbiAgICAgICAgICAgIGRhdGEgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoZGF0YSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9pZiBhcnJpdmVkIGhlcmUsIGRhdGEgaXMgYSBzdHJpbmcsIGNvbnRhaW5pbmcgdGhlIFNUTEEgZGF0YS5cclxuXHJcbiAgICAgICAgd2hpbGUgKChtYXRjaGVzID0gdGhpcy5zb2xpZFBhdHRlcm4uZXhlYyhkYXRhKSkpIHtcclxuICAgICAgICAgICAgbGV0IG1lc2hOYW1lID0gbWF0Y2hlc1sxXTtcclxuICAgICAgICAgICAgY29uc3QgbWVzaE5hbWVGcm9tRW5kID0gbWF0Y2hlc1szXTtcclxuICAgICAgICAgICAgaWYgKG1lc2hOYW1lRnJvbUVuZCAmJiBtZXNoTmFtZSAhPSBtZXNoTmFtZUZyb21FbmQpIHtcclxuICAgICAgICAgICAgICAgIFRvb2xzLkVycm9yKFwiRXJyb3IgaW4gU1RMLCBzb2xpZCBuYW1lICE9IGVuZHNvbGlkIG5hbWVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGNoZWNrIG1lc2hlc05hbWVzXHJcbiAgICAgICAgICAgIGlmIChtZXNoZXNOYW1lcyAmJiBtZXNoTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG1lc2hlc05hbWVzIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW1lc2hlc05hbWVzLmluZGV4T2YobWVzaE5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lc2hOYW1lICE9PSBtZXNoZXNOYW1lcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIHN0bCBtZXNoIG5hbWUgY2FuIGJlIGVtcHR5IGFzIHdlbGxcclxuICAgICAgICAgICAgbWVzaE5hbWUgPSBtZXNoTmFtZSB8fCBcInN0bG1lc2hcIjtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGJhYnlsb25NZXNoID0gbmV3IE1lc2gobWVzaE5hbWUsIHNjZW5lKTtcclxuICAgICAgICAgICAgdGhpcy5fcGFyc2VBU0NJSShiYWJ5bG9uTWVzaCwgbWF0Y2hlc1syXSk7XHJcbiAgICAgICAgICAgIGlmIChtZXNoZXMpIHtcclxuICAgICAgICAgICAgICAgIG1lc2hlcy5wdXNoKGJhYnlsb25NZXNoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2FkIGludG8gYSBzY2VuZS5cclxuICAgICAqIEBwYXJhbSBzY2VuZSBUaGUgc2NlbmUgdG8gbG9hZCBpbnRvXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBpbXBvcnRcclxuICAgICAqIEBwYXJhbSByb290VXJsIFRoZSByb290IHVybCBmb3Igc2NlbmUgYW5kIHJlc291cmNlc1xyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsIG9yIGZhbHNlIG90aGVyd2lzZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG9hZChzY2VuZTogU2NlbmUsIGRhdGE6IGFueSwgcm9vdFVybDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5pbXBvcnRNZXNoKG51bGwsIHNjZW5lLCBkYXRhLCByb290VXJsLCBudWxsKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9hZCBpbnRvIGFuIGFzc2V0IGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBzY2VuZSBUaGUgc2NlbmUgdG8gbG9hZCBpbnRvXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBpbXBvcnRcclxuICAgICAqIEBwYXJhbSByb290VXJsIFRoZSByb290IHVybCBmb3Igc2NlbmUgYW5kIHJlc291cmNlc1xyXG4gICAgICogQHJldHVybnMgVGhlIGxvYWRlZCBhc3NldCBjb250YWluZXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIGxvYWRBc3NldENvbnRhaW5lcihzY2VuZTogU2NlbmUsIGRhdGE6IHN0cmluZywgcm9vdFVybDogc3RyaW5nKTogQXNzZXRDb250YWluZXIge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG5ldyBBc3NldENvbnRhaW5lcihzY2VuZSk7XHJcbiAgICAgICAgc2NlbmUuX2Jsb2NrRW50aXR5Q29sbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbXBvcnRNZXNoKG51bGwsIHNjZW5lLCBkYXRhLCByb290VXJsLCBjb250YWluZXIubWVzaGVzKTtcclxuICAgICAgICBzY2VuZS5fYmxvY2tFbnRpdHlDb2xsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lcjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9pc0JpbmFyeShkYXRhOiBhbnkpIHtcclxuICAgICAgICAvLyBjaGVjayBpZiBmaWxlIHNpemUgaXMgY29ycmVjdCBmb3IgYmluYXJ5IHN0bFxyXG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBEYXRhVmlldyhkYXRhKTtcclxuXHJcbiAgICAgICAgLy8gQSBCaW5hcnkgU1RMIGhlYWRlciBpcyA4MCBieXRlcywgaWYgdGhlIGRhdGEgc2l6ZSBpcyBub3QgZ3JlYXQgdGhhblxyXG4gICAgICAgIC8vIHRoYXQgdGhlbiBpdCdzIG5vdCBhIGJpbmFyeSBTVEwuXHJcbiAgICAgICAgaWYgKHJlYWRlci5ieXRlTGVuZ3RoIDw9IDgwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGZhY2VTaXplID0gKDMyIC8gOCkgKiAzICsgKDMyIC8gOCkgKiAzICogMyArIDE2IC8gODtcclxuICAgICAgICBjb25zdCBuRmFjZXMgPSByZWFkZXIuZ2V0VWludDMyKDgwLCB0cnVlKTtcclxuXHJcbiAgICAgICAgaWYgKDgwICsgMzIgLyA4ICsgbkZhY2VzICogZmFjZVNpemUgPT09IHJlYWRlci5ieXRlTGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVVMtQVNDSUkgYmVnaW4gd2l0aCAncycsICdvJywgJ2wnLCAnaScsICdkJ1xyXG4gICAgICAgIGNvbnN0IGFzY2lpID0gWzExNSwgMTExLCAxMDgsIDEwNSwgMTAwXTtcclxuICAgICAgICBmb3IgKGxldCBvZmYgPSAwOyBvZmYgPCA1OyBvZmYrKykge1xyXG4gICAgICAgICAgICBpZiAocmVhZGVyLmdldFVpbnQ4KG9mZikgIT09IGFzY2lpW29mZl0pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfcGFyc2VCaW5hcnkobWVzaDogTWVzaCwgZGF0YTogQXJyYXlCdWZmZXIpIHtcclxuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRGF0YVZpZXcoZGF0YSk7XHJcbiAgICAgICAgY29uc3QgZmFjZXMgPSByZWFkZXIuZ2V0VWludDMyKDgwLCB0cnVlKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGF0YU9mZnNldCA9IDg0O1xyXG4gICAgICAgIGNvbnN0IGZhY2VMZW5ndGggPSAxMiAqIDQgKyAyO1xyXG5cclxuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcclxuXHJcbiAgICAgICAgY29uc3QgcG9zaXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShmYWNlcyAqIDMgKiAzKTtcclxuICAgICAgICBjb25zdCBub3JtYWxzID0gbmV3IEZsb2F0MzJBcnJheShmYWNlcyAqIDMgKiAzKTtcclxuICAgICAgICBjb25zdCBpbmRpY2VzID0gbmV3IFVpbnQzMkFycmF5KGZhY2VzICogMyk7XHJcbiAgICAgICAgbGV0IGluZGljZXNDb3VudCA9IDA7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGZhY2UgPSAwOyBmYWNlIDwgZmFjZXM7IGZhY2UrKykge1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IGRhdGFPZmZzZXQgKyBmYWNlICogZmFjZUxlbmd0aDtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsWCA9IHJlYWRlci5nZXRGbG9hdDMyKHN0YXJ0LCB0cnVlKTtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsWSA9IHJlYWRlci5nZXRGbG9hdDMyKHN0YXJ0ICsgNCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbFogPSByZWFkZXIuZ2V0RmxvYXQzMihzdGFydCArIDgsIHRydWUpO1xyXG5cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMzsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2ZXJ0ZXhzdGFydCA9IHN0YXJ0ICsgaSAqIDEyO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIG9yZGVyaW5nIGlzIGludGVudGlvbmFsIHRvIG1hdGNoIGFzY2lpIGltcG9ydFxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25zW29mZnNldF0gPSByZWFkZXIuZ2V0RmxvYXQzMih2ZXJ0ZXhzdGFydCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBub3JtYWxzW29mZnNldF0gPSBub3JtYWxYO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghU1RMRmlsZUxvYWRlci5ET19OT1RfQUxURVJfRklMRV9DT09SRElOQVRFUykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc1tvZmZzZXQgKyAyXSA9IHJlYWRlci5nZXRGbG9hdDMyKHZlcnRleHN0YXJ0ICsgNCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zW29mZnNldCArIDFdID0gcmVhZGVyLmdldEZsb2F0MzIodmVydGV4c3RhcnQgKyA4LCB0cnVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsc1tvZmZzZXQgKyAyXSA9IG5vcm1hbFk7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsc1tvZmZzZXQgKyAxXSA9IG5vcm1hbFo7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc1tvZmZzZXQgKyAxXSA9IHJlYWRlci5nZXRGbG9hdDMyKHZlcnRleHN0YXJ0ICsgNCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zW29mZnNldCArIDJdID0gcmVhZGVyLmdldEZsb2F0MzIodmVydGV4c3RhcnQgKyA4LCB0cnVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsc1tvZmZzZXQgKyAxXSA9IG5vcm1hbFk7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsc1tvZmZzZXQgKyAyXSA9IG5vcm1hbFo7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChTVExGaWxlTG9hZGVyLkRPX05PVF9BTFRFUl9GSUxFX0NPT1JESU5BVEVTKSB7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2VzW2luZGljZXNDb3VudF0gPSBpbmRpY2VzQ291bnQ7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2VzW2luZGljZXNDb3VudCArIDFdID0gaW5kaWNlc0NvdW50ICsgMjtcclxuICAgICAgICAgICAgICAgIGluZGljZXNbaW5kaWNlc0NvdW50ICsgMl0gPSBpbmRpY2VzQ291bnQgKyAxO1xyXG4gICAgICAgICAgICAgICAgaW5kaWNlc0NvdW50ICs9IDM7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2VzW2luZGljZXNDb3VudF0gPSBpbmRpY2VzQ291bnQrKztcclxuICAgICAgICAgICAgICAgIGluZGljZXNbaW5kaWNlc0NvdW50XSA9IGluZGljZXNDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgaW5kaWNlc1tpbmRpY2VzQ291bnRdID0gaW5kaWNlc0NvdW50Kys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG1lc2guc2V0VmVydGljZXNEYXRhKFZlcnRleEJ1ZmZlci5Qb3NpdGlvbktpbmQsIHBvc2l0aW9ucyk7XHJcbiAgICAgICAgbWVzaC5zZXRWZXJ0aWNlc0RhdGEoVmVydGV4QnVmZmVyLk5vcm1hbEtpbmQsIG5vcm1hbHMpO1xyXG4gICAgICAgIG1lc2guc2V0SW5kaWNlcyhpbmRpY2VzKTtcclxuICAgICAgICBtZXNoLmNvbXB1dGVXb3JsZE1hdHJpeCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wYXJzZUFTQ0lJKG1lc2g6IE1lc2gsIHNvbGlkRGF0YTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb25zID0gW107XHJcbiAgICAgICAgY29uc3Qgbm9ybWFscyA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGluZGljZXMgPSBbXTtcclxuICAgICAgICBsZXQgaW5kaWNlc0NvdW50ID0gMDtcclxuXHJcbiAgICAgICAgLy9sb2FkIGZhY2V0cywgaWdub3JpbmcgbG9vcCBhcyB0aGUgc3RhbmRhcmQgZG9lc24ndCBkZWZpbmUgaXQgY2FuIGNvbnRhaW4gbW9yZSB0aGFuIHZlcnRpY2VzXHJcbiAgICAgICAgbGV0IG1hdGNoZXM7XHJcbiAgICAgICAgd2hpbGUgKChtYXRjaGVzID0gdGhpcy5mYWNldHNQYXR0ZXJuLmV4ZWMoc29saWREYXRhKSkpIHtcclxuICAgICAgICAgICAgY29uc3QgZmFjZXQgPSBtYXRjaGVzWzFdO1xyXG4gICAgICAgICAgICAvL29uZSBub3JtYWwgcGVyIGZhY2VcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsTWF0Y2hlcyA9IHRoaXMubm9ybWFsUGF0dGVybi5leGVjKGZhY2V0KTtcclxuICAgICAgICAgICAgdGhpcy5ub3JtYWxQYXR0ZXJuLmxhc3RJbmRleCA9IDA7XHJcbiAgICAgICAgICAgIGlmICghbm9ybWFsTWF0Y2hlcykge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsID0gW051bWJlcihub3JtYWxNYXRjaGVzWzFdKSwgTnVtYmVyKG5vcm1hbE1hdGNoZXNbNV0pLCBOdW1iZXIobm9ybWFsTWF0Y2hlc1szXSldO1xyXG5cclxuICAgICAgICAgICAgbGV0IHZlcnRleE1hdGNoO1xyXG4gICAgICAgICAgICB3aGlsZSAoKHZlcnRleE1hdGNoID0gdGhpcy52ZXJ0ZXhQYXR0ZXJuLmV4ZWMoZmFjZXQpKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFTVExGaWxlTG9hZGVyLkRPX05PVF9BTFRFUl9GSUxFX0NPT1JESU5BVEVTKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zLnB1c2goTnVtYmVyKHZlcnRleE1hdGNoWzFdKSwgTnVtYmVyKHZlcnRleE1hdGNoWzVdKSwgTnVtYmVyKHZlcnRleE1hdGNoWzNdKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFscy5wdXNoKG5vcm1hbFswXSwgbm9ybWFsWzFdLCBub3JtYWxbMl0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnMucHVzaChOdW1iZXIodmVydGV4TWF0Y2hbMV0pLCBOdW1iZXIodmVydGV4TWF0Y2hbM10pLCBOdW1iZXIodmVydGV4TWF0Y2hbNV0pKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gRmxpcHBpbmcgdGhlIHNlY29uZCBhbmQgdGhpcmQgY29tcG9uZW50IGJlY2F1c2UgaW52ZXJ0ZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG5vcm1hbCB3YXMgZGVjbGFyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFscy5wdXNoKG5vcm1hbFswXSwgbm9ybWFsWzJdLCBub3JtYWxbMV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChTVExGaWxlTG9hZGVyLkRPX05PVF9BTFRFUl9GSUxFX0NPT1JESU5BVEVTKSB7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2VzLnB1c2goaW5kaWNlc0NvdW50LCBpbmRpY2VzQ291bnQgKyAyLCBpbmRpY2VzQ291bnQgKyAxKTtcclxuICAgICAgICAgICAgICAgIGluZGljZXNDb3VudCArPSAzO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaW5kaWNlcy5wdXNoKGluZGljZXNDb3VudCsrLCBpbmRpY2VzQ291bnQrKywgaW5kaWNlc0NvdW50KyspO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudmVydGV4UGF0dGVybi5sYXN0SW5kZXggPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5mYWNldHNQYXR0ZXJuLmxhc3RJbmRleCA9IDA7XHJcbiAgICAgICAgbWVzaC5zZXRWZXJ0aWNlc0RhdGEoVmVydGV4QnVmZmVyLlBvc2l0aW9uS2luZCwgcG9zaXRpb25zKTtcclxuICAgICAgICBtZXNoLnNldFZlcnRpY2VzRGF0YShWZXJ0ZXhCdWZmZXIuTm9ybWFsS2luZCwgbm9ybWFscyk7XHJcbiAgICAgICAgbWVzaC5zZXRJbmRpY2VzKGluZGljZXMpO1xyXG4gICAgICAgIG1lc2guY29tcHV0ZVdvcmxkTWF0cml4KHRydWUpO1xyXG4gICAgfVxyXG59XHJcblxyXG5pZiAoU2NlbmVMb2FkZXIpIHtcclxuICAgIFNjZW5lTG9hZGVyLlJlZ2lzdGVyUGx1Z2luKG5ldyBTVExGaWxlTG9hZGVyKCkpO1xyXG59XHJcbiIsIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1pbnRlcm5hbC1tb2R1bGVzICovXHJcbmltcG9ydCAqIGFzIExvYWRlcnMgZnJvbSBcImxvYWRlcnMvU1RML2luZGV4XCI7XHJcblxyXG4vKipcclxuICogVGhpcyBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBVTUQgbW9kdWxlLlxyXG4gKiBUaGUgZW50cnkgcG9pbnQgZm9yIGEgZnV0dXJlIEVTTSBwYWNrYWdlIHNob3VsZCBiZSBpbmRleC50c1xyXG4gKi9cclxuY29uc3QgZ2xvYmFsT2JqZWN0ID0gdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB1bmRlZmluZWQ7XHJcbmlmICh0eXBlb2YgZ2xvYmFsT2JqZWN0ICE9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBMb2FkZXJzKSB7XHJcbiAgICAgICAgaWYgKCEoPGFueT5nbG9iYWxPYmplY3QpLkJBQllMT05ba2V5XSkge1xyXG4gICAgICAgICAgICAoPGFueT5nbG9iYWxPYmplY3QpLkJBQllMT05ba2V5XSA9ICg8YW55PkxvYWRlcnMpW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgKiBmcm9tIFwibG9hZGVycy9TVEwvaW5kZXhcIjtcclxuIiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX2JhYnlsb25qc19NaXNjX3Rvb2xzX187IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0ICogYXMgbG9hZGVycyBmcm9tIFwiQGx0cy9sb2FkZXJzL2xlZ2FjeS9sZWdhY3ktc3RsRmlsZUxvYWRlclwiO1xyXG5leHBvcnQgeyBsb2FkZXJzIH07XHJcbmV4cG9ydCBkZWZhdWx0IGxvYWRlcnM7XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
|
package/babylonjs.loaders.d.ts
CHANGED
|
@@ -839,39 +839,40 @@ declare module BABYLON.GLTF2.Loader.Extensions {
|
|
|
839
839
|
|
|
840
840
|
|
|
841
841
|
|
|
842
|
-
}
|
|
843
|
-
declare module BABYLON {
|
|
844
|
-
|
|
845
|
-
}
|
|
846
|
-
declare module BABYLON.GLTF2.Loader.Extensions {
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
842
|
}
|
|
851
843
|
declare module BABYLON {
|
|
852
844
|
|
|
853
845
|
}
|
|
854
846
|
declare module BABYLON.GLTF2.Loader.Extensions {
|
|
855
847
|
/**
|
|
856
|
-
*
|
|
857
|
-
*
|
|
858
|
-
*
|
|
859
|
-
*
|
|
848
|
+
* A converter that takes a glTF Object Model JSON Pointer
|
|
849
|
+
* and transforms it into an ObjectAccessorContainer, allowing
|
|
850
|
+
* objects referenced in the glTF to be associated with their
|
|
851
|
+
* respective Babylon.js objects.
|
|
860
852
|
*/
|
|
861
|
-
export
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
853
|
+
export class GLTFPathToObjectConverter<T> implements IPathToObjectConverter<T> {
|
|
854
|
+
private _gltf;
|
|
855
|
+
private _infoTree;
|
|
856
|
+
constructor(_gltf: BABYLON.GLTF2.Loader.IGLTF, _infoTree: any);
|
|
857
|
+
/**
|
|
858
|
+
* The pointer string is represented by a [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901).
|
|
859
|
+
* <animationPointer> := /<rootNode>/<assetIndex>/<propertyPath>
|
|
860
|
+
* <rootNode> := "nodes" | "materials" | "meshes" | "cameras" | "extensions"
|
|
861
|
+
* <assetIndex> := <digit> | <name>
|
|
862
|
+
* <propertyPath> := <extensionPath> | <standardPath>
|
|
863
|
+
* <extensionPath> := "extensions"/<name>/<standardPath>
|
|
864
|
+
* <standardPath> := <name> | <name>/<standardPath>
|
|
865
|
+
* <name> := W+
|
|
866
|
+
* <digit> := D+
|
|
867
|
+
*
|
|
868
|
+
* Examples:
|
|
869
|
+
* - "/nodes/0/rotation"
|
|
870
|
+
* - "/materials/2/emissiveFactor"
|
|
871
|
+
* - "/materials/2/pbrMetallicRoughness/baseColorFactor"
|
|
872
|
+
* - "/materials/2/extensions/KHR_materials_emissive_strength/emissiveStrength"
|
|
873
|
+
*/
|
|
874
|
+
convert(path: string): IObjectInfo<T>;
|
|
875
|
+
}
|
|
875
876
|
|
|
876
877
|
|
|
877
878
|
|
|
@@ -880,8 +881,7 @@ declare module BABYLON {
|
|
|
880
881
|
|
|
881
882
|
}
|
|
882
883
|
declare module BABYLON.GLTF2.Loader.Extensions {
|
|
883
|
-
|
|
884
|
-
|
|
884
|
+
|
|
885
885
|
|
|
886
886
|
|
|
887
887
|
}
|
|
@@ -889,11 +889,13 @@ declare module BABYLON {
|
|
|
889
889
|
|
|
890
890
|
}
|
|
891
891
|
declare module BABYLON.GLTF2.Loader.Extensions {
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
892
|
+
/**
|
|
893
|
+
* @internal
|
|
894
|
+
* Converts a glTF Interactivity Extension to a serialized flow graph.
|
|
895
|
+
* @param gltf the interactivity data
|
|
896
|
+
* @returns a serialized flow graph
|
|
897
|
+
*/
|
|
898
|
+
export function convertGLTFToSerializedFlowGraph(gltf: BABYLON.GLTF2.IKHRInteractivity): ISerializedFlowGraph;
|
|
897
899
|
|
|
898
900
|
|
|
899
901
|
|
|
@@ -902,7 +904,12 @@ declare module BABYLON {
|
|
|
902
904
|
|
|
903
905
|
}
|
|
904
906
|
declare module BABYLON.GLTF2.Loader.Extensions {
|
|
905
|
-
|
|
907
|
+
/**
|
|
908
|
+
* Class to convert an interactivity pointer path to a smart object
|
|
909
|
+
*/
|
|
910
|
+
export class InteractivityPathToObjectConverter extends BABYLON.GLTF2.Loader.Extensions.GLTFPathToObjectConverter<IObjectAccessor> {
|
|
911
|
+
constructor(gltf: BABYLON.GLTF2.Loader.IGLTF);
|
|
912
|
+
}
|
|
906
913
|
|
|
907
914
|
|
|
908
915
|
|
|
@@ -933,6 +940,7 @@ declare module BABYLON.GLTF2.Loader.Extensions {
|
|
|
933
940
|
*/
|
|
934
941
|
readonly name = "KHR_animation_pointer";
|
|
935
942
|
private _loader;
|
|
943
|
+
private _pathToObjectConverter?;
|
|
936
944
|
/**
|
|
937
945
|
* @internal
|
|
938
946
|
*/
|
|
@@ -953,24 +961,6 @@ declare module BABYLON.GLTF2.Loader.Extensions {
|
|
|
953
961
|
* @returns A void promise that resolves when the load is complete or null if not handled
|
|
954
962
|
*/
|
|
955
963
|
_loadAnimationChannelAsync(context: string, animationContext: string, animation: BABYLON.GLTF2.Loader.IAnimation, channel: BABYLON.GLTF2.Loader.IAnimationChannel, onLoad: (babylonAnimatable: IAnimatable, babylonAnimation: Animation) => void): Nullable<Promise<void>>;
|
|
956
|
-
/**
|
|
957
|
-
* The pointer string is represented by a [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901).
|
|
958
|
-
* <animationPointer> := /<rootNode>/<assetIndex>/<propertyPath>
|
|
959
|
-
* <rootNode> := "nodes" | "materials" | "meshes" | "cameras" | "extensions"
|
|
960
|
-
* <assetIndex> := <digit> | <name>
|
|
961
|
-
* <propertyPath> := <extensionPath> | <standardPath>
|
|
962
|
-
* <extensionPath> := "extensions"/<name>/<standardPath>
|
|
963
|
-
* <standardPath> := <name> | <name>/<standardPath>
|
|
964
|
-
* <name> := W+
|
|
965
|
-
* <digit> := D+
|
|
966
|
-
*
|
|
967
|
-
* Examples:
|
|
968
|
-
* - "/nodes/0/rotation"
|
|
969
|
-
* - "/materials/2/emissiveFactor"
|
|
970
|
-
* - "/materials/2/pbrMetallicRoughness/baseColorFactor"
|
|
971
|
-
* - "/materials/2/extensions/KHR_materials_emissive_strength/emissiveStrength"
|
|
972
|
-
*/
|
|
973
|
-
private _parseAnimationPointer;
|
|
974
964
|
}
|
|
975
965
|
|
|
976
966
|
|
|
@@ -1180,6 +1170,7 @@ declare module BABYLON.GLTF2.Loader.Extensions {
|
|
|
1180
1170
|
* Defines whether this extension is enabled.
|
|
1181
1171
|
*/
|
|
1182
1172
|
enabled: boolean;
|
|
1173
|
+
private _pathConverter?;
|
|
1183
1174
|
/**
|
|
1184
1175
|
* @internal
|
|
1185
1176
|
* @param _loader
|
|
@@ -2314,7 +2305,7 @@ declare module BABYLON.GLTF2 {
|
|
|
2314
2305
|
* @param onLoad Called for each animation loaded
|
|
2315
2306
|
* @returns A void promise that resolves when the load is complete
|
|
2316
2307
|
*/
|
|
2317
|
-
_loadAnimationChannelFromTargetInfoAsync(context: string, animationContext: string, animation: BABYLON.GLTF2.Loader.IAnimation, channel: BABYLON.GLTF2.Loader.IAnimationChannel, targetInfo:
|
|
2308
|
+
_loadAnimationChannelFromTargetInfoAsync(context: string, animationContext: string, animation: BABYLON.GLTF2.Loader.IAnimation, channel: BABYLON.GLTF2.Loader.IAnimationChannel, targetInfo: IObjectInfo<BABYLON.GLTF2.AnimationPropertyInfo[]>, onLoad: (babylonAnimatable: IAnimatable, babylonAnimation: Animation) => void): Promise<void>;
|
|
2318
2309
|
private _loadAnimationSamplerAsync;
|
|
2319
2310
|
/**
|
|
2320
2311
|
* Loads a glTF buffer.
|