LoadResUtil.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/mk/utils/LoadResUtil.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
  12. cc._RF.push(module, '027abfHullEcrlQpxOvHVc5', 'LoadResUtil');
  13. // script/mk/utils/LoadResUtil.ts
  14. "use strict";
  15. Object.defineProperty(exports, "__esModule", { value: true });
  16. /**
  17. * 加载资源工具类
  18. * @description
  19. * @author 冯聪
  20. */
  21. var LoadResUtil = /** @class */ (function () {
  22. function LoadResUtil() {
  23. }
  24. /**
  25. * 预加载本地资源
  26. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  27. * @param paths 加载路径
  28. * @param type 资源类型(cc.Asset)
  29. * @returns Promise
  30. */
  31. LoadResUtil.prototype.preload = function (paths, type) {
  32. return new Promise(function (resolve, reject) {
  33. cc.resources.preload(paths, type,
  34. //onProgress
  35. function (finish, total, item) {
  36. },
  37. //onComplete
  38. function (err, data) {
  39. if (err === void 0) { err = null; }
  40. if (!err) {
  41. resolve(data);
  42. }
  43. else {
  44. reject(err);
  45. }
  46. });
  47. });
  48. };
  49. /**
  50. * 加载本地资源
  51. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  52. * @param paths 加载路径
  53. * @param type 资源类型(cc.Asset)
  54. * @returns Promise
  55. */
  56. LoadResUtil.prototype.load = function (paths, type) {
  57. return new Promise(function (resolve, reject) {
  58. cc.resources.load(paths, type,
  59. //onProgress
  60. function (finish, total, item) {
  61. },
  62. //onComplete
  63. function (err, data) {
  64. if (err === void 0) { err = null; }
  65. if (!err) {
  66. resolve(data);
  67. }
  68. else {
  69. reject(err);
  70. }
  71. });
  72. });
  73. };
  74. /**
  75. * 预加载文件夹资源
  76. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  77. * @param dir 文件夹路径
  78. * @param type 资源类型(cc.Asset)
  79. * @returns Promise
  80. */
  81. LoadResUtil.prototype.preloadDir = function (dir, type) {
  82. return new Promise(function (resolve, reject) {
  83. cc.resources.preloadDir(dir, type, //onProgress
  84. function (finish, total, item) {
  85. }, function (err, data) {
  86. if (err === void 0) { err = null; }
  87. if (!err) {
  88. resolve(data);
  89. }
  90. else {
  91. reject(err);
  92. }
  93. });
  94. });
  95. };
  96. /**
  97. * 加载文件夹资源
  98. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  99. * @param dir 文件夹路径
  100. * @param type 资源类型(cc.Asset)
  101. * @returns Promise
  102. */
  103. LoadResUtil.prototype.loadDir = function (dir, type) {
  104. return new Promise(function (resolve, reject) {
  105. cc.resources.loadDir(dir, type,
  106. //onProgress
  107. function (finish, total, item) {
  108. },
  109. //onComplete
  110. function (err, data) {
  111. if (err === void 0) { err = null; }
  112. if (!err) {
  113. resolve(data);
  114. }
  115. else {
  116. reject(err);
  117. }
  118. });
  119. });
  120. };
  121. /**
  122. * 加载远程资源
  123. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  124. * @param url 加载路径
  125. * @param options
  126. * @returns Promise
  127. */
  128. LoadResUtil.prototype.loadRemote = function (url, options) {
  129. return new Promise(function (resolve, reject) {
  130. cc.assetManager.loadRemote(url, options,
  131. //onComplete
  132. function (err, data) {
  133. if (err === void 0) { err = null; }
  134. if (!err) {
  135. resolve(data);
  136. }
  137. else {
  138. reject(err);
  139. }
  140. });
  141. });
  142. };
  143. /**
  144. * 预加载场景
  145. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  146. * @param url 加载路径
  147. * @param options
  148. * @returns Promise
  149. */
  150. LoadResUtil.prototype.preloadScene = function (sceneName, options) {
  151. return new Promise(function (resolve, reject) {
  152. cc.resources.preloadScene(sceneName, options,
  153. //onProgress
  154. function (finish, total, item) {
  155. },
  156. //onComplete
  157. function (err) {
  158. if (err === void 0) { err = null; }
  159. if (!err) {
  160. resolve();
  161. }
  162. else {
  163. reject(err);
  164. }
  165. });
  166. });
  167. };
  168. /**
  169. * 加载场景
  170. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  171. * @param url 加载路径
  172. * @param options
  173. * @returns Promise
  174. */
  175. LoadResUtil.prototype.loadScene = function (sceneName, options) {
  176. return new Promise(function (resolve, reject) {
  177. cc.resources.loadScene(sceneName, options,
  178. //onProgress
  179. function (finish, total, item) {
  180. },
  181. //onComplete
  182. function (err, data) {
  183. if (err === void 0) { err = null; }
  184. if (!err) {
  185. resolve(data);
  186. }
  187. else {
  188. reject(err);
  189. }
  190. });
  191. });
  192. };
  193. /**
  194. * 日志标签
  195. * @description
  196. */
  197. LoadResUtil._logTag = "[LoadResUtil]";
  198. return LoadResUtil;
  199. }());
  200. exports.default = LoadResUtil;
  201. cc._RF.pop();
  202. }
  203. if (nodeEnv) {
  204. __define(__module.exports, __require, __module);
  205. }
  206. else {
  207. __quick_compile_project__.registerModuleFunc(__filename, function () {
  208. __define(__module.exports, __require, __module);
  209. });
  210. }
  211. })();
  212. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0XFxta1xcdXRpbHNcXExvYWRSZXNVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7Ozs7R0FJRztBQUNIO0lBQUE7SUF1TEEsQ0FBQztJQS9LRzs7Ozs7O09BTUc7SUFDSSw2QkFBTyxHQUFkLFVBQWUsS0FBbUIsRUFBRSxJQUFxQjtRQUNyRCxPQUFPLElBQUksT0FBTyxDQUFnQyxVQUFDLE9BQXNELEVBQUUsTUFBTTtZQUM3RyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSTtZQUM1QixZQUFZO1lBQ1osVUFBQyxNQUFjLEVBQUUsS0FBYSxFQUFFLElBQWlDO1lBRWpFLENBQUM7WUFDRCxZQUFZO1lBQ1osVUFBQyxHQUFpQixFQUFFLElBQW1DO2dCQUF0RCxvQkFBQSxFQUFBLFVBQWlCO2dCQUNkLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNqQjtxQkFDSTtvQkFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ2Y7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLDBCQUFJLEdBQVgsVUFBZ0MsS0FBbUIsRUFBRSxJQUFxQjtRQUN0RSxPQUFPLElBQUksT0FBTyxDQUFJLFVBQUMsT0FBMEIsRUFBRSxNQUFNO1lBQ3JELEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJO1lBQ3pCLFlBQVk7WUFDWixVQUFDLE1BQWMsRUFBRSxLQUFhLEVBQUUsSUFBaUM7WUFFakUsQ0FBQztZQUNELFlBQVk7WUFDWixVQUFDLEdBQWlCLEVBQUUsSUFBTztnQkFBMUIsb0JBQUEsRUFBQSxVQUFpQjtnQkFDZCxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztp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TSxVQUFDLE9BQTRCLEVBQUUsTUFBTTtZQUN6RCxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsT0FBTztZQUNyQyxZQUFZO1lBQ1osVUFBQyxNQUFjLEVBQUUsS0FBYSxFQUFFLElBQWlDO1lBRWpFLENBQUM7WUFDRCxZQUFZO1lBQ1osVUFBQyxHQUFpQixFQUFFLElBQW1CO2dCQUF0QyxvQkFBQSxFQUFBLFVBQWlCO2dCQUNkLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNqQjtxQkFDSTtvQkFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ2Y7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQXBMRDs7O09BR0c7SUFDWSxtQkFBTyxHQUFHLGVBQWUsQ0FBQztJQWlMN0Msa0JBQUM7Q0F2TEQsQUF1TEMsSUFBQTtrQkF2TG9CLFdBQVciLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLyoqXHJcbiAqIOWKoOi9vei1hOa6kOW3peWFt+exu1xyXG4gKiBAZGVzY3JpcHRpb24gXHJcbiAqIEBhdXRob3Ig5Yav6IGqXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2FkUmVzVXRpbCB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDml6Xlv5fmoIfnrb5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2xvZ1RhZyA9IFwiW0xvYWRSZXNVdGlsXVwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICog6aKE5Yqg6L295pys5Zyw6LWE5rqQIFxyXG4gICAgICogQGRlc2NyaXB0aW9uICAgaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC96aC9yZWxlYXNlLW5vdGVzL3N1YnBhY2thZ2UtdXBncmFkZS1ndWlkZS5odG1sXHJcbiAgICAgKiBAcGFyYW0gIHBhdGhzICDliqDovb3ot6/lvoRcclxuICAgICAqIEBwYXJhbSAgdHlwZSAgIOi1hOa6kOexu+WeiyhjYy5Bc3NldClcclxuICAgICAqIEByZXR1cm5zIFByb21pc2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIHByZWxvYWQocGF0aHM6IHN0cmluZyB8IGFueSwgdHlwZTogdHlwZW9mIGNjLkFzc2V0KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8Y2MuQXNzZXRNYW5hZ2VyLlJlcXVlc3RJdGVtW10+KChyZXNvbHZlOiAoZGF0YTogY2MuQXNzZXRNYW5hZ2VyLlJlcXVlc3RJdGVtW10pID0+IHZvaWQsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5yZXNvdXJjZXMucHJlbG9hZChwYXRocywgdHlwZSxcclxuICAgICAgICAgICAgICAgIC8vb25Qcm9ncmVzc1xyXG4gICAgICAgICAgICAgICAgKGZpbmlzaDogbnVtYmVyLCB0b3RhbDogbnVtYmVyLCBpdGVtOiBjYy5Bc3NldE1hbmFnZXIuUmVxdWVzdEl0ZW0pID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgLy9vbkNvbXBsZXRlXHJcbiAgICAgICAgICAgICAgICAoZXJyOiBFcnJvciA9IG51bGwsIGRhdGE6IGNjLkFzc2V0TWFuYWdlci5SZXF1ZXN0SXRlbVtdKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5Yqg6L295pys5Zyw6LWE5rqQIFxyXG4gICAgICogQGRlc2NyaXB0aW9uICAgaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC96aC9yZWxlYXNlLW5vdGVzL3N1YnBhY2thZ2UtdXBncmFkZS1ndWlkZS5odG1sXHJcbiAgICAgKiBAcGFyYW0gIHBhdGhzICDliqDovb3ot6/lvoRcclxuICAgICAqIEBwYXJhbSAgdHlwZSAgIOi1hOa6kOexu+WeiyhjYy5Bc3NldClcclxuICAgICAqIEByZXR1cm5zIFByb21pc2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIGxvYWQ8VCBleHRlbmRzIGNjLkFzc2V0PihwYXRoczogc3RyaW5nIHwgYW55LCB0eXBlOiB0eXBlb2YgY2MuQXNzZXQpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxUPigocmVzb2x2ZTogKGRhdGE6IFQpID0+IHZvaWQsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5yZXNvdXJjZXMubG9hZChwYXRocywgdHlwZSxcclxuICAgICAgICAgICAgICAgIC8vb25Qcm9ncmVzc1xyXG4gICAgICAgICAgICAgICAgKGZpbmlzaDogbnVtYmVyLCB0b3RhbDogbnVtYmVyLCBpdGVtOiBjYy5Bc3NldE1hbmFnZXIuUmVxdWVzdEl0ZW0pID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgLy9vbkNvbXBsZXRlXHJcbiAgICAgICAgICAgICAgICAoZXJyOiBFcnJvciA9IG51bGwsIGRhdGE6IFQpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDpooTliqDovb3mlofku7blpLnotYTmupAgXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gICBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL3poL3JlbGVhc2Utbm90ZXMvc3VicGFja2FnZS11cGdyYWRlLWd1aWRlLmh0bWxcclxuICAgICAqIEBwYXJhbSAgIGRpciAgIOaWh+S7tuWkuei3r+W+hFxyXG4gICAgICogQHBhcmFtICAgdHlwZSAg6LWE5rqQ57G75Z6LKGNjLkFzc2V0KVxyXG4gICAgICogQHJldHVybnMgUHJvbWlzZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcHJlbG9hZERpcihkaXI6IHN0cmluZywgdHlwZTogdHlwZW9mIGNjLkFzc2V0KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8Y2MuQXNzZXRNYW5hZ2VyLlJlcXVlc3RJdGVtW10+KChyZXNvbHZlOiAoZGF0YTogY2MuQXNzZXRNYW5hZ2VyLlJlcXVlc3RJdGVtW10pID0+IHZvaWQsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5yZXNvdXJjZXMucHJlbG9hZERpcihkaXIsIHR5cGUsICAvL29uUHJvZ3Jlc3NcclxuICAgICAgICAgICAgICAgIChmaW5pc2g6IG51bWJlciwgdG90YWw6IG51bWJlciwgaXRlbTogY2MuQXNzZXRNYW5hZ2VyLlJlcXVlc3RJdGVtKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIChlcnI6IEVycm9yID0gbnVsbCwgZGF0YTogY2MuQXNzZXRNYW5hZ2VyLlJlcXVlc3RJdGVtW10pOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliqDovb3mlofku7blpLnotYTmupAgXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gICBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL3poL3JlbGVhc2Utbm90ZXMvc3VicGFja2FnZS11cGdyYWRlLWd1aWRlLmh0bWxcclxuICAgICAqIEBwYXJhbSAgIGRpciAgIOaWh+S7tuWkuei3r+W+hFxyXG4gICAgICogQHBhcmFtICAgdHlwZSAg6LWE5rqQ57G75Z6LKGNjLkFzc2V0KVxyXG4gICAgICogQHJldHVybnMgUHJvbWlzZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG9hZERpcjxUIGV4dGVuZHMgY2MuQXNzZXQ+KGRpcjogc3RyaW5nLCB0eXBlOiB0eXBlb2YgY2MuQXNzZXQpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxUPigocmVzb2x2ZTogKGRhdGE6IFQpID0+IHZvaWQsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5yZXNvdXJjZXMubG9hZERpcihkaXIsIHR5cGUsXHJcbiAgICAgICAgICAgICAgICAvL29uUHJvZ3Jlc3NcclxuICAgICAgICAgICAgICAgIChmaW5pc2g6IG51bWJlciwgdG90YWw6IG51bWJlciwgaXRlbTogY2MuQXNzZXRNYW5hZ2VyLlJlcXVlc3RJdGVtKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIC8vb25Db21wbGV0ZVxyXG4gICAgICAgICAgICAgICAgKGVycjogRXJyb3IgPSBudWxsLCBkYXRhOiBUIHwgYW55KTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5Yqg6L296L+c56iL6LWE5rqQIFxyXG4gICAgICogQGRlc2NyaXB0aW9uICAgICAgaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC96aC9yZWxlYXNlLW5vdGVzL3N1YnBhY2thZ2UtdXBncmFkZS1ndWlkZS5odG1sXHJcbiAgICAgKiBAcGFyYW0gICB1cmwgICAgICDliqDovb3ot6/lvoRcclxuICAgICAqIEBwYXJhbSAgIG9wdGlvbnMgIFxyXG4gICAgICogQHJldHVybnMgUHJvbWlzZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG9hZFJlbW90ZTxUIGV4dGVuZHMgY2MuQXNzZXQ+KHVybDogc3RyaW5nLCBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmU6IChkYXRhOiBUKSA9PiB2b2lkLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY2MuYXNzZXRNYW5hZ2VyLmxvYWRSZW1vdGUodXJsLCBvcHRpb25zLFxyXG4gICAgICAgICAgICAgICAgLy9vbkNvbXBsZXRlXHJcbiAgICAgICAgICAgICAgICAoZXJyOiBFcnJvciA9IG51bGwsIGRhdGE6IFQpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDpooTliqDovb3lnLrmma8gXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gICAgIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvemgvcmVsZWFzZS1ub3Rlcy9zdWJwYWNrYWdlLXVwZ3JhZGUtZ3VpZGUuaHRtbFxyXG4gICAgICogQHBhcmFtICAgdXJsICAgICDliqDovb3ot6/lvoRcclxuICAgICAqIEBwYXJhbSAgIG9wdGlvbnMgIFxyXG4gICAgICogQHJldHVybnMgUHJvbWlzZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcHJlbG9hZFNjZW5lKHNjZW5lTmFtZTogc3RyaW5nLCBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlOiAoKSA9PiB2b2lkLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY2MucmVzb3VyY2VzLnByZWxvYWRTY2VuZShzY2VuZU5hbWUsIG9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAvL29uUHJvZ3Jlc3NcclxuICAgICAgICAgICAgICAgIChmaW5pc2g6IG51bWJlciwgdG90YWw6IG51bWJlciwgaXRlbTogY2MuQXNzZXRNYW5hZ2VyLlJlcXVlc3RJdGVtKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIC8vb25Db21wbGV0ZVxyXG4gICAgICAgICAgICAgICAgKGVycjogRXJyb3IgPSBudWxsKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliqDovb3lnLrmma8gXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gICAgIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvemgvcmVsZWFzZS1ub3Rlcy9zdWJwYWNrYWdlLXVwZ3JhZGUtZ3VpZGUuaHRtbFxyXG4gICAgICogQHBhcmFtICAgdXJsICAgICDliqDovb3ot6/lvoRcclxuICAgICAqIEBwYXJhbSAgIG9wdGlvbnMgXHJcbiAgICAgKiBAcmV0dXJucyBQcm9taXNlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsb2FkU2NlbmUoc2NlbmVOYW1lOiBzdHJpbmcsIG9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlOiAoZGF0YTogYW55KSA9PiB2b2lkLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY2MucmVzb3VyY2VzLmxvYWRTY2VuZShzY2VuZU5hbWUsIG9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAvL29uUHJvZ3Jlc3NcclxuICAgICAgICAgICAgICAgIChmaW5pc2g6IG51bWJlciwgdG90YWw6IG51bWJlciwgaXRlbTogY2MuQXNzZXRNYW5hZ2VyLlJlcXVlc3RJdGVtKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIC8vb25Db21wbGV0ZVxyXG4gICAgICAgICAgICAgICAgKGVycjogRXJyb3IgPSBudWxsLCBkYXRhOiBjYy5TY2VuZUFzc2V0KTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==